negsi2_test.zig (9775B) - Raw
1 const std = @import("std"); 2 const neg = @import("negXi2.zig"); 3 const testing = std.testing; 4 5 const print = std.debug.print; 6 7 fn test__negsi2(a: i32, expected: i32) !void { 8 const result = neg.__negsi2(a); 9 try testing.expectEqual(expected, result); 10 } 11 12 test "negsi2" { 13 // TODO ensuring that math.minInt(i32); returns error 14 15 try test__negsi2(-3, 3); 16 try test__negsi2(-2, 2); 17 try test__negsi2(-1, 1); 18 try test__negsi2(0, 0); // special case for 2s complement 19 try test__negsi2(1, -1); 20 try test__negsi2(2, -2); 21 try test__negsi2(3, -3); 22 23 // max_usable == MAX(i32) == -MIN(i32) == 2147483647 == 7fffffff 24 // divTrunc: max_usable / i, i=1,2,3,5,100 25 // 7fffffff / i 26 try test__negsi2(-715827882, 715827882); 27 try test__negsi2(715827882, -715827882); 28 try test__negsi2(-429496729, 429496729); 29 try test__negsi2(429496729, -429496729); 30 try test__negsi2(-214748364, 214748364); 31 try test__negsi2(214748364, -214748364); 32 // shifting: max_usable >> i, i=0..bitsize-4 33 // 7fffffff >> i 34 // 7fffffff >> i + 1 35 // 7fffffff >> i + 3 36 // 7fffffff >> i + 7 37 try test__negsi2(-2147483647, 2147483647); 38 try test__negsi2(2147483647, -2147483647); 39 try test__negsi2(-2147483646, 2147483646); 40 try test__negsi2(2147483646, -2147483646); 41 try test__negsi2(-2147483644, 2147483644); 42 try test__negsi2(2147483644, -2147483644); 43 try test__negsi2(-2147483640, 2147483640); 44 try test__negsi2(2147483640, -2147483640); 45 try test__negsi2(-1073741823, 1073741823); 46 try test__negsi2(1073741823, -1073741823); 47 try test__negsi2(-1073741822, 1073741822); 48 try test__negsi2(1073741822, -1073741822); 49 try test__negsi2(-1073741820, 1073741820); 50 try test__negsi2(1073741820, -1073741820); 51 try test__negsi2(-1073741816, 1073741816); 52 try test__negsi2(1073741816, -1073741816); 53 try test__negsi2(-536870911, 536870911); 54 try test__negsi2(536870911, -536870911); 55 try test__negsi2(-536870910, 536870910); 56 try test__negsi2(536870910, -536870910); 57 try test__negsi2(-536870908, 536870908); 58 try test__negsi2(536870908, -536870908); 59 try test__negsi2(-536870904, 536870904); 60 try test__negsi2(536870904, -536870904); 61 try test__negsi2(-268435455, 268435455); 62 try test__negsi2(268435455, -268435455); 63 try test__negsi2(-268435454, 268435454); 64 try test__negsi2(268435454, -268435454); 65 try test__negsi2(-268435452, 268435452); 66 try test__negsi2(268435452, -268435452); 67 try test__negsi2(-268435448, 268435448); 68 try test__negsi2(268435448, -268435448); 69 try test__negsi2(-134217727, 134217727); 70 try test__negsi2(134217727, -134217727); 71 try test__negsi2(-134217726, 134217726); 72 try test__negsi2(134217726, -134217726); 73 try test__negsi2(-134217724, 134217724); 74 try test__negsi2(134217724, -134217724); 75 try test__negsi2(-134217720, 134217720); 76 try test__negsi2(134217720, -134217720); 77 try test__negsi2(-67108863, 67108863); 78 try test__negsi2(67108863, -67108863); 79 try test__negsi2(-67108862, 67108862); 80 try test__negsi2(67108862, -67108862); 81 try test__negsi2(-67108860, 67108860); 82 try test__negsi2(67108860, -67108860); 83 try test__negsi2(-67108856, 67108856); 84 try test__negsi2(67108856, -67108856); 85 try test__negsi2(-33554431, 33554431); 86 try test__negsi2(33554431, -33554431); 87 try test__negsi2(-33554430, 33554430); 88 try test__negsi2(33554430, -33554430); 89 try test__negsi2(-33554428, 33554428); 90 try test__negsi2(33554428, -33554428); 91 try test__negsi2(-33554424, 33554424); 92 try test__negsi2(33554424, -33554424); 93 try test__negsi2(-16777215, 16777215); 94 try test__negsi2(16777215, -16777215); 95 try test__negsi2(-16777214, 16777214); 96 try test__negsi2(16777214, -16777214); 97 try test__negsi2(-16777212, 16777212); 98 try test__negsi2(16777212, -16777212); 99 try test__negsi2(-16777208, 16777208); 100 try test__negsi2(16777208, -16777208); 101 try test__negsi2(-8388607, 8388607); 102 try test__negsi2(8388607, -8388607); 103 try test__negsi2(-8388606, 8388606); 104 try test__negsi2(8388606, -8388606); 105 try test__negsi2(-8388604, 8388604); 106 try test__negsi2(8388604, -8388604); 107 try test__negsi2(-8388600, 8388600); 108 try test__negsi2(8388600, -8388600); 109 try test__negsi2(-4194303, 4194303); 110 try test__negsi2(4194303, -4194303); 111 try test__negsi2(-4194302, 4194302); 112 try test__negsi2(4194302, -4194302); 113 try test__negsi2(-4194300, 4194300); 114 try test__negsi2(4194300, -4194300); 115 try test__negsi2(-4194296, 4194296); 116 try test__negsi2(4194296, -4194296); 117 try test__negsi2(-2097151, 2097151); 118 try test__negsi2(2097151, -2097151); 119 try test__negsi2(-2097150, 2097150); 120 try test__negsi2(2097150, -2097150); 121 try test__negsi2(-2097148, 2097148); 122 try test__negsi2(2097148, -2097148); 123 try test__negsi2(-2097144, 2097144); 124 try test__negsi2(2097144, -2097144); 125 try test__negsi2(-1048575, 1048575); 126 try test__negsi2(1048575, -1048575); 127 try test__negsi2(-1048574, 1048574); 128 try test__negsi2(1048574, -1048574); 129 try test__negsi2(-1048572, 1048572); 130 try test__negsi2(1048572, -1048572); 131 try test__negsi2(-1048568, 1048568); 132 try test__negsi2(1048568, -1048568); 133 try test__negsi2(-524287, 524287); 134 try test__negsi2(524287, -524287); 135 try test__negsi2(-524286, 524286); 136 try test__negsi2(524286, -524286); 137 try test__negsi2(-524284, 524284); 138 try test__negsi2(524284, -524284); 139 try test__negsi2(-524280, 524280); 140 try test__negsi2(524280, -524280); 141 try test__negsi2(-262143, 262143); 142 try test__negsi2(262143, -262143); 143 try test__negsi2(-262142, 262142); 144 try test__negsi2(262142, -262142); 145 try test__negsi2(-262140, 262140); 146 try test__negsi2(262140, -262140); 147 try test__negsi2(-262136, 262136); 148 try test__negsi2(262136, -262136); 149 try test__negsi2(-131071, 131071); 150 try test__negsi2(131071, -131071); 151 try test__negsi2(-131070, 131070); 152 try test__negsi2(131070, -131070); 153 try test__negsi2(-131068, 131068); 154 try test__negsi2(131068, -131068); 155 try test__negsi2(-131064, 131064); 156 try test__negsi2(131064, -131064); 157 try test__negsi2(-65535, 65535); 158 try test__negsi2(65535, -65535); 159 try test__negsi2(-65534, 65534); 160 try test__negsi2(65534, -65534); 161 try test__negsi2(-65532, 65532); 162 try test__negsi2(65532, -65532); 163 try test__negsi2(-65528, 65528); 164 try test__negsi2(65528, -65528); 165 try test__negsi2(-32767, 32767); 166 try test__negsi2(32767, -32767); 167 try test__negsi2(-32766, 32766); 168 try test__negsi2(32766, -32766); 169 try test__negsi2(-32764, 32764); 170 try test__negsi2(32764, -32764); 171 try test__negsi2(-32760, 32760); 172 try test__negsi2(32760, -32760); 173 try test__negsi2(-16383, 16383); 174 try test__negsi2(16383, -16383); 175 try test__negsi2(-16382, 16382); 176 try test__negsi2(16382, -16382); 177 try test__negsi2(-16380, 16380); 178 try test__negsi2(16380, -16380); 179 try test__negsi2(-16376, 16376); 180 try test__negsi2(16376, -16376); 181 try test__negsi2(-8191, 8191); 182 try test__negsi2(8191, -8191); 183 try test__negsi2(-8190, 8190); 184 try test__negsi2(8190, -8190); 185 try test__negsi2(-8188, 8188); 186 try test__negsi2(8188, -8188); 187 try test__negsi2(-8184, 8184); 188 try test__negsi2(8184, -8184); 189 try test__negsi2(-4095, 4095); 190 try test__negsi2(4095, -4095); 191 try test__negsi2(-4094, 4094); 192 try test__negsi2(4094, -4094); 193 try test__negsi2(-4092, 4092); 194 try test__negsi2(4092, -4092); 195 try test__negsi2(-4088, 4088); 196 try test__negsi2(4088, -4088); 197 try test__negsi2(-2047, 2047); 198 try test__negsi2(2047, -2047); 199 try test__negsi2(-2046, 2046); 200 try test__negsi2(2046, -2046); 201 try test__negsi2(-2044, 2044); 202 try test__negsi2(2044, -2044); 203 try test__negsi2(-2040, 2040); 204 try test__negsi2(2040, -2040); 205 try test__negsi2(-1023, 1023); 206 try test__negsi2(1023, -1023); 207 try test__negsi2(-1022, 1022); 208 try test__negsi2(1022, -1022); 209 try test__negsi2(-1020, 1020); 210 try test__negsi2(1020, -1020); 211 try test__negsi2(-1016, 1016); 212 try test__negsi2(1016, -1016); 213 try test__negsi2(-511, 511); 214 try test__negsi2(511, -511); 215 try test__negsi2(-510, 510); 216 try test__negsi2(510, -510); 217 try test__negsi2(-508, 508); 218 try test__negsi2(508, -508); 219 try test__negsi2(-504, 504); 220 try test__negsi2(504, -504); 221 try test__negsi2(-255, 255); 222 try test__negsi2(255, -255); 223 try test__negsi2(-254, 254); 224 try test__negsi2(254, -254); 225 try test__negsi2(-252, 252); 226 try test__negsi2(252, -252); 227 try test__negsi2(-248, 248); 228 try test__negsi2(248, -248); 229 try test__negsi2(-127, 127); 230 try test__negsi2(127, -127); 231 try test__negsi2(-126, 126); 232 try test__negsi2(126, -126); 233 try test__negsi2(-124, 124); 234 try test__negsi2(124, -124); 235 try test__negsi2(-120, 120); 236 try test__negsi2(120, -120); 237 try test__negsi2(-63, 63); 238 try test__negsi2(63, -63); 239 try test__negsi2(-62, 62); 240 try test__negsi2(62, -62); 241 try test__negsi2(-60, 60); 242 try test__negsi2(60, -60); 243 try test__negsi2(-56, 56); 244 try test__negsi2(56, -56); 245 try test__negsi2(-31, 31); 246 try test__negsi2(31, -31); 247 try test__negsi2(-30, 30); 248 try test__negsi2(30, -30); 249 try test__negsi2(-28, 28); 250 try test__negsi2(28, -28); 251 try test__negsi2(-24, 24); 252 try test__negsi2(24, -24); 253 try test__negsi2(-15, 15); 254 try test__negsi2(15, -15); 255 try test__negsi2(-14, 14); 256 try test__negsi2(14, -14); 257 try test__negsi2(-12, 12); 258 try test__negsi2(12, -12); 259 try test__negsi2(-8, 8); 260 try test__negsi2(8, -8); 261 }