typedef unsigned int I; I mul (I ier, I icand){ I q = 1, ac = 0; while(q <= ier) q <<= 1; // ier might be too big for this. while(q >>= 1) {ac <<= 1; if (q & ier) ac += icand;} return ac;} #include int main(){ {int j = 55; while(j--) {int k=42; while(k--) if(j*k != mul(j, k)) printf("i = %d, j = %d, mul(i, j) = %d\n", j, k, mul(j, k));}} return 0;}