Here are the bitwise operators. Note that combinations of signed and unsigned types lead to promotion to larger types. I don't think that is right, especially as the high bits will be zeroed anyway when the unsigned number is sign extended. Note also the object type used to promote the 'Q' (unsigned long long) type. On my machine i and l are the same precision, but different c-types, so it would also make me feel better if the rows/cols for l,L used the same types, making the functions symmetric in the arguments.
bitwise_and
not symmetric
in1 ? , b , B , h , H , i , I , l , L , q , Q , f , d , g , F , D , G ,
--------------------------------------------------------------------------------------
in2 ? | ? , b , B , h , H , i , I , i , I , q , Q , err, err, err, err, err, err,
in2 b | b , b , h , h , i , i , q , i , q , q , O , err, err, err, err, err, err,
in2 B | B , h , B , h , H , i , I , i , I , q , Q , err, err, err, err, err, err,
in2 h | h , h , h , h , i , i , q , i , q , q , O , err, err, err, err, err, err,
in2 H | H , i , H , i , H , i , I , i , I , q , Q , err, err, err, err, err, err,
in2 i | i , i , i , i , i , i , q , i , q , q , O , err, err, err, err, err, err,
in2 I | I , q , I , q , I , q , I , q , I , q , Q , err, err, err, err, err, err,
in2 l | l , l , l , l , l , l , q , l , q , q , O , err, err, err, err, err, err,
in2 L | L , q , L , q , L , q , L , q , L , q , Q , err, err, err, err, err, err,
in2 q | q , q , q , q , q , q , q , q , q , q , O , err, err, err, err, err, err,
in2 Q | Q , O , Q , O , Q , O , Q , O , Q , O , Q , err, err, err, err, err, err,
in2 f | err, err, err, err, err, err, err, err, err, err, err, err, err, err, err, err, err,
in2 d | err, err, err, err, err, err, err, err, err, err, err, err, err, err, err, err, err,
in2 g | err, err, err, err, err, err, err, err, err, err, err, err, err, err, err, err, err,
in2 F | err, err, err, err, err, err, err, err, err, err, err, err, err, err, err, err, err,
in2 D | err, err, err, err, err, err, err, err, err, err, err, err, err, err, err, err, err,
in2 G | err, err, err, err, err, err, err, err, err, err, err, err, err, err, err, err, err,
bitwise_or
not symmetric
in1 ? , b , B , h , H , i , I , l , L , q , Q , f , d , g , F , D , G ,
--------------------------------------------------------------------------------------
in2 ? | ? , b , B , h , H , i , I , i , I , q , Q , err, err, err, err, err, err,
in2 b | b , b , h , h , i , i , q , i , q , q , O , err, err, err, err, err, err,
in2 B | B , h , B , h , H , i , I , i , I , q , Q , err, err, err, err, err, err,
in2 h | h , h , h , h , i , i , q , i , q , q , O , err, err, err, err, err, err,
in2 H | H , i , H , i , H , i , I , i , I , q , Q , err, err, err, err, err, err,
in2 i | i , i , i , i , i , i , q , i , q , q , O , err, err, err, err, err, err,
in2 I | I , q , I , q , I , q , I , q , I , q , Q , err, err, err, err, err, err,
in2 l | l , l , l , l , l , l , q , l , q , q , O , err, err, err, err, err, err,
in2 L | L , q , L , q , L , q , L , q , L , q , Q , err, err, err, err, err, err,
in2 q | q , q , q , q , q , q , q , q , q , q , O , err, err, err, err, err, err,
in2 Q | Q , O , Q , O , Q , O , Q , O , Q , O , Q , err, err, err, err, err, err,
in2 f | err, err, err, err, err, err, err, err, err, err, err, err, err, err, err, err, err,
in2 d | err, err, err, err, err, err, err, err, err, err, err, err, err, err, err, err, err,
in2 g | err, err, err, err, err, err, err, err, err, err, err, err, err, err, err, err, err,
in2 F | err, err, err, err, err, err, err, err, err, err, err, err, err, err, err, err, err,
in2 D | err, err, err, err, err, err, err, err, err, err, err, err, err, err, err, err, err,
in2 G | err, err, err, err, err, err, err, err, err, err, err, err, err, err, err, err, err,
bitwise_xor
not symmetric
in1 ? , b , B , h , H , i , I , l , L , q , Q , f , d , g , F , D , G ,
--------------------------------------------------------------------------------------
in2 ? | ? , b , B , h , H , i , I , i , I , q , Q , err, err, err, err, err, err,
in2 b | b , b , h , h , i , i , q , i , q , q , O , err, err, err, err, err, err,
in2 B | B , h , B , h , H , i , I , i , I , q , Q , err, err, err, err, err, err,
in2 h | h , h , h , h , i , i , q , i , q , q , O , err, err, err, err, err, err,
in2 H | H , i , H , i , H , i , I , i , I , q , Q , err, err, err, err, err, err,
in2 i | i , i , i , i , i , i , q , i , q , q , O , err, err, err, err, err, err,
in2 I | I , q , I , q , I , q , I , q , I , q , Q , err, err, err, err, err, err,
in2 l | l , l , l , l , l , l , q , l , q , q , O , err, err, err, err, err, err,
in2 L | L , q , L , q , L , q , L , q , L , q , Q , err, err, err, err, err, err,
in2 q | q , q , q , q , q , q , q , q , q , q , O , err, err, err, err, err, err,
in2 Q | Q , O , Q , O , Q , O , Q , O , Q , O , Q , err, err, err, err, err, err,
in2 f | err, err, err, err, err, err, err, err, err, err, err, err, err, err, err, err, err,
in2 d | err, err, err, err, err, err, err, err, err, err, err, err, err, err, err, err, err,
in2 g | err, err, err, err, err, err, err, err, err, err, err, err, err, err, err, err, err,
in2 F | err, err, err, err, err, err, err, err, err, err, err, err, err, err, err, err, err,
in2 D | err, err, err, err, err, err, err, err, err, err, err, err, err, err, err, err, err,
in2 G | err, err, err, err, err, err, err, err, err, err, err, err, err, err, err, err, err,
Chuck