I would send your routine bit patterns that might be likely to trigger errors, ie: 1000000000000000000000 0100000000000000000000 0010000000000000000000 0001000000000000000000 : 1100000000000000000000 0110000000000000000000 : 1110000000000000000000 0111000000000000000000 : You should test operands/results that start with a 0 and a 1 in every (possible) bit position, preferrably also checking all possible permutations for a single bit (0/0 --> 0, 0/0 -> 1, 0/1 -> 0, 0/1 -> 1, etc (depending on the nearby bits and carries, etc, of course.) In addition to 12345679* (9*d) -> ddddddddd, there is also 37037037037... * (3*d) -> dddddddd... (ie more digits.) You can also run some series approximation involving multiplication and division, and see if it comes out pretty close. (ie calculate PI*2^63) BillW