// regression tests for bigint.k if(Load("examples/bigint.k"); Error("cannot open file")); /* uncomment when called stand-alone and not from regtest.k ::nerr = 0, ::ntest= 0, PTEST() = (Print(Sprintf("Test %i", ++ntest))); DOTEST(ok) = (if(ok==1; PrintLn(" ok"); (PrintLn(" nok !!!!!!"), ++nerr)), ok); */ i64_test() = ( setINTSIZE(4), PTEST(), DOTEST(u64(2)=={2}), PTEST(), DOTEST(u64(-2)==u64(0xffff,0xffff,0xffff,0xfffe)), PTEST(), DOTEST(u64(65538)=={1,2}), PTEST(), DOTEST(u64(-65538)==u64(0xffffffff,0xfffefffe)), PTEST(), DOTEST(u2f({1,2})==65538), PTEST(), DOTEST(i2f({0xffff,0xffff,0xfffe,0xfffe})==-65538), PTEST(), DOTEST(string2BI("4294967297",10)==u64(0x1,0x1)), PTEST(), DOTEST(hidword64({0xfbcd,0x1234,0xfefe,0x5678})==0xfbcd1234), PTEST(), DOTEST(lodword64({0xfbcd,0x1234,0xfefe,0x5678})==0xfefe5678), PTEST(), DOTEST(hidword64({0x1234,0xfefe,0x5678})==0x1234), PTEST(), DOTEST(add(u64(0xfff0fff0,0xfff0fff0),u64(1,2,3,4))==u64(0xfff1fff2,0xfff3fff4)), PTEST(), DOTEST(add(u64(0xfff0fff0,0xfff0fff0),u64(15,15,15,17))=={1}), PTEST(), DOTEST(sub(u64(0xfff1fff2,0xfff3fff4),u64(1,2,3,4))==u64(0xfff0fff0,0xfff0fff0)), PTEST(), DOTEST(sub({1},u64(15,15,15,17))==u64(0xfff0fff0,0xfff0fff0)), PTEST(), DOTEST(sub(u64(0,2),u64(0,5))==u64(-3)), PTEST(), DOTEST(mul(u64(-2),u64(8))==u64(-16)), PTEST(), DOTEST(div(u64(-1),{0xffff})=={1,1,1,1}), PTEST(), DOTEST(not(u64(1))==neg(u64(2))), PTEST(), DOTEST((a=u64(0xa5a5a5a5,0xf0f0f0f0),or(a,xor(a,u64(-1)))==u64(-1))), PTEST(), DOTEST((a=u64(0xa5a5a5a5,0xf0f0f0f0),and(a,xor(a,u64(-1)))==u64(0))), PTEST(), DOTEST(shl(u64(0x12345678,0x90abcdef),8)==u64(0x34567890,0xabcdef00)), PTEST(), DOTEST(shl(u64(0x12345678,0x90abcdef),40)==u64(0xabcdef00,0)), PTEST(), DOTEST(shr(u64(0x12345678,0x90abcdef),8)==u64(0x00123456,0x7890abcd)), PTEST(), DOTEST(shr(u64(0x12345678,0x90abcdef),40)==u64(0,0x123456)), PTEST(), DOTEST(signBI(u64(-1))==-1), PTEST(), DOTEST(signBI(u64(100)==1)), PTEST(), DOTEST(absBI(u64(1000))==u64(1000)), PTEST(), DOTEST(absBI(u64(-1000))==u64(1000)), PTEST(), DOTEST(absBI(u64(-1))=={1}), PTEST(), DOTEST(compareBI_u(u64(5), u64(5))==0), PTEST(), DOTEST(compareBI_s(u64(5), u64(5))==0), PTEST(), DOTEST(compareBI_u(u64(-5), u64(5))==1), PTEST(), DOTEST(compareBI_s(u64(-5), u64(5))==-1), PTEST(), DOTEST(compareBI_u(u64(5), u64(-5))==-1), PTEST(), DOTEST(compareBI_s(u64(5), u64(-5))==1), PTEST(), DOTEST(compareBI_u(u64(-5), u64(-4))==-1), PTEST(), DOTEST(compareBI_s(u64(-5), u64(-4))==-1), PTEST(), DOTEST(compareBI_u(u64(-4), u64(-5))==1), PTEST(), DOTEST(compareBI_s(u64(-4), u64(-5))==1), ::nerr );