0096-div.c (1436B)
1 #include <assert.h> 2 #include <inttypes.h> 3 #include <stdio.h> 4 #include <stdlib.h> 5 6 /* 7 output: 8 testing 9 test1 10 test2 11 test3 12 test4 13 done 14 end: 15 */ 16 17 static void 18 test1(void) 19 { 20 div_t d; 21 22 puts("test1"); 23 24 d = div(8, 4); 25 assert(d.quot == 2 && d.rem == 0); 26 27 d = div(-10, 3); 28 assert(d.quot == -3 && d.rem == -1); 29 30 d = div(10, -3); 31 assert(d.quot == -3 && d.rem == 1); 32 33 d = div(-11, -3); 34 assert(d.quot == 3 && d.rem == -2); 35 } 36 37 static void 38 test2(void) 39 { 40 ldiv_t ld; 41 42 puts("test2"); 43 44 ld = ldiv(8, 4); 45 assert(ld.quot == 2 && ld.rem == 0); 46 47 48 ld = ldiv(-10, 3); 49 assert(ld.quot == -3 && ld.rem == -1); 50 51 ld = ldiv(10, -3); 52 assert(ld.quot == -3 && ld.rem == 1); 53 54 ld = ldiv(-11, -3); 55 assert(ld.quot == 3 && ld.rem == -2); 56 } 57 58 static void 59 test3(void) 60 { 61 lldiv_t lld; 62 63 puts("test3"); 64 65 lld = lldiv(8, 4); 66 assert(lld.quot == 2 && lld.rem == 0); 67 68 69 lld = lldiv(-10, 3); 70 assert(lld.quot == -3 && lld.rem == -1); 71 72 lld = lldiv(10, -3); 73 assert(lld.quot == -3 && lld.rem == 1); 74 75 lld = lldiv(-11, -3); 76 assert(lld.quot == 3 && lld.rem == -2); 77 } 78 79 static void 80 test4(void) 81 { 82 imaxdiv_t md; 83 84 puts("test4"); 85 86 md = imaxdiv(8, 4); 87 assert(md.quot == 2 && md.rem == 0); 88 89 md = imaxdiv(-10, 3); 90 assert(md.quot == -3 && md.rem == -1); 91 92 md = imaxdiv(10, -3); 93 assert(md.quot == -3 && md.rem == 1); 94 95 md = imaxdiv(-11, -3); 96 assert(md.quot == 3 && md.rem == -2); 97 } 98 99 int 100 main(void) 101 { 102 puts("testing"); 103 test1(); 104 test2(); 105 test3(); 106 test4(); 107 puts("done"); 108 }