| div1 (signed char x) |
| { |
| return x / -1; |
| } |
| |
| div2 (signed short x) |
| { |
| return x / -1; |
| } |
| |
| div3 (signed char x, signed char y) |
| { |
| return x / y; |
| } |
| |
| div4 (signed short x, signed short y) |
| { |
| return x / y; |
| } |
| |
| mod1 (signed char x) |
| { |
| return x % -1; |
| } |
| |
| mod2 (signed short x) |
| { |
| return x % -1; |
| } |
| |
| mod3 (signed char x, signed char y) |
| { |
| return x % y; |
| } |
| |
| mod4 (signed short x, signed short y) |
| { |
| return x % y; |
| } |
| |
| signed long |
| mod5 (signed long x, signed long y) |
| { |
| return x % y; |
| } |
| |
| unsigned long |
| mod6 (unsigned long x, unsigned long y) |
| { |
| return x % y; |
| } |
| |
| main () |
| { |
| if (div1 (-(1 << 7)) != 1 << 7) |
| abort (); |
| if (div2 (-(1 << 15)) != 1 << 15) |
| abort (); |
| if (div3 (-(1 << 7), -1) != 1 << 7) |
| abort (); |
| if (div4 (-(1 << 15), -1) != 1 << 15) |
| abort (); |
| if (mod1 (-(1 << 7)) != 0) |
| abort (); |
| if (mod2 (-(1 << 15)) != 0) |
| abort (); |
| if (mod3 (-(1 << 7), -1) != 0) |
| abort (); |
| if (mod4 (-(1 << 15), -1) != 0) |
| abort (); |
| if (mod5 (0x50000000, 2) != 0) |
| abort (); |
| if (mod6 (0x50000000, 2) != 0) |
| abort (); |
| |
| exit (0); |
| } |