zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

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 }