i128_13_signed_div_mod.c (756B)
1 typedef __int128 i128; 2 3 int test_main(void) { 4 i128 a = -(((i128)1 << 90) + 123456789); 5 i128 b = ((i128)1 << 30) + 7; 6 i128 q = a / b; 7 i128 r = a % b; 8 9 if (q != -(((i128)1 << 60) - (((i128)7 << 30) - 49))) return 11; 10 if (r != -123456446) return 12; 11 if (q * b + r != a) return 13; 12 if (r >= 0) return 14; 13 14 b = -(((i128)1 << 33) + 5); 15 q = a / b; 16 r = a % b; 17 if (q != (((i128)1 << 57) - ((i128)80 << 20))) return 15; 18 if (r != -542887189) return 16; 19 if (q * b + r != a) return 17; 20 if (r >= 0) return 18; 21 22 a = ((i128)1 << 90) + 123456789; 23 q = a / b; 24 r = a % b; 25 if (q != -(((i128)1 << 57) - ((i128)80 << 20))) return 19; 26 if (r != 542887189) return 20; 27 if (q * b + r != a) return 21; 28 if (r <= 0) return 22; 29 30 return 61; 31 }