mte/unikernel/duniverse/Zarith/tests/zq.output32

1453 lines
36 KiB
Text
Raw Normal View History

2025-11-11 02:07:51 +01:00
0
= 0
1
= 1
-1
= -1
42
= 42
1+1
= 2
1-1
= 0
- 1
= -1
0-1
= -1
max_int
= 1073741823
min_int
= -1073741824
-max_int
= -1073741823
-min_int
= 1073741824
2^300
= 2037035976334486086268445688409378161051468393665936250636140449354381299763336706183397376
2^120
= 1329227995784915872903807060280344576
2^300+2^120
= 2037035976334486086268445688409378161051468393665936251965368445139297172667143766463741952
2^300-2^120
= 2037035976334486086268445688409378161051468393665936249306912453569465426859529645903052800
2^300+(-(2^120))
= 2037035976334486086268445688409378161051468393665936249306912453569465426859529645903052800
2^120-2^300
= -2037035976334486086268445688409378161051468393665936249306912453569465426859529645903052800
2^120+(-(2^300))
= -2037035976334486086268445688409378161051468393665936249306912453569465426859529645903052800
-(2^120)+(-(2^300))
= -2037035976334486086268445688409378161051468393665936251965368445139297172667143766463741952
-(2^120)-2^300
= -2037035976334486086268445688409378161051468393665936251965368445139297172667143766463741952
2^300-2^300
= 0
2^121
= 2658455991569831745807614120560689152
2^121+2^120
= 3987683987354747618711421180841033728
2^121-2^120
= 1329227995784915872903807060280344576
2^121+(-(2^120))
= 1329227995784915872903807060280344576
2^120-2^121
= -1329227995784915872903807060280344576
2^120+(-(2^121))
= -1329227995784915872903807060280344576
-(2^120)+(-(2^121))
= -3987683987354747618711421180841033728
-(2^120)-2^121
= -3987683987354747618711421180841033728
2^121+0
= 2658455991569831745807614120560689152
2^121-0
= 2658455991569831745807614120560689152
0+2^121
= 2658455991569831745807614120560689152
0-2^121
= -2658455991569831745807614120560689152
2^300+1
= 2037035976334486086268445688409378161051468393665936250636140449354381299763336706183397377
2^300-1
= 2037035976334486086268445688409378161051468393665936250636140449354381299763336706183397375
1+2^300
= 2037035976334486086268445688409378161051468393665936250636140449354381299763336706183397377
1-2^300
= -2037035976334486086268445688409378161051468393665936250636140449354381299763336706183397375
2^300+(-1)
= 2037035976334486086268445688409378161051468393665936250636140449354381299763336706183397375
2^300-(-1)
= 2037035976334486086268445688409378161051468393665936250636140449354381299763336706183397377
(-1)+2^300
= 2037035976334486086268445688409378161051468393665936250636140449354381299763336706183397375
(-1)-2^300
= -2037035976334486086268445688409378161051468393665936250636140449354381299763336706183397377
-(2^300)+1
= -2037035976334486086268445688409378161051468393665936250636140449354381299763336706183397375
-(2^300)-1
= -2037035976334486086268445688409378161051468393665936250636140449354381299763336706183397377
1+(-(2^300))
= -2037035976334486086268445688409378161051468393665936250636140449354381299763336706183397375
1-(-(2^300))
= 2037035976334486086268445688409378161051468393665936250636140449354381299763336706183397377
-(2^300)+(-1)
= -2037035976334486086268445688409378161051468393665936250636140449354381299763336706183397377
-(2^300)-(-1)
= -2037035976334486086268445688409378161051468393665936250636140449354381299763336706183397375
(-1)+(-(2^300))
= -2037035976334486086268445688409378161051468393665936250636140449354381299763336706183397377
(-1)-(-(2^300))
= 2037035976334486086268445688409378161051468393665936250636140449354381299763336706183397375
max_int+1
= 1073741824
min_int-1
= -1073741825
-max_int-1
= -1073741824
-min_int-1
= 1073741823
5! = 120
12! = 479001600
15! = 1307674368000
20! = 2432902008176640000
25! = 15511210043330985984000000
50! = 30414093201713378043612608166064768844377641568960512000000000000
2^300*2^120
= 2707685248164858261307045101702230179137145581421695874189921465443966120903931272499975005961073806735733604454495675614232576
2^120*2^300
= 2707685248164858261307045101702230179137145581421695874189921465443966120903931272499975005961073806735733604454495675614232576
2^300*(-(2^120))
= -2707685248164858261307045101702230179137145581421695874189921465443966120903931272499975005961073806735733604454495675614232576
2^120*(-(2^300))
= -2707685248164858261307045101702230179137145581421695874189921465443966120903931272499975005961073806735733604454495675614232576
-(2^120)*(-(2^300))
= 2707685248164858261307045101702230179137145581421695874189921465443966120903931272499975005961073806735733604454495675614232576
2^121*2^120
= 3533694129556768659166595001485837031654967793751237916243212402585239552
2^120*2^121
= 3533694129556768659166595001485837031654967793751237916243212402585239552
2^121*0
= 0
0*2^121
= 0
2^300*1
= 2037035976334486086268445688409378161051468393665936250636140449354381299763336706183397376
1*2^300
= 2037035976334486086268445688409378161051468393665936250636140449354381299763336706183397376
2^300*(-1)
= -2037035976334486086268445688409378161051468393665936250636140449354381299763336706183397376
(-1)*2^300
= -2037035976334486086268445688409378161051468393665936250636140449354381299763336706183397376
-(2^300)*1
= -2037035976334486086268445688409378161051468393665936250636140449354381299763336706183397376
1*(-(2^300))
= -2037035976334486086268445688409378161051468393665936250636140449354381299763336706183397376
-(2^300)*(-1)
= 2037035976334486086268445688409378161051468393665936250636140449354381299763336706183397376
(-1)*(-(2^300))
= 2037035976334486086268445688409378161051468393665936250636140449354381299763336706183397376
1*(2^30)
= 1073741824
1*(2^62)
= 4611686018427387904
(2^30)*(2^30)
= 1152921504606846976
(2^62)*(2^62)
= 21267647932558653966460912964485513216
0+1
= 1
1+1
= 2
-1+1
= 0
2+1
= 3
-2+1
= -1
(2^300)+1
= 2037035976334486086268445688409378161051468393665936250636140449354381299763336706183397377
-(2^300)+1
= -2037035976334486086268445688409378161051468393665936250636140449354381299763336706183397375
0-1
= -1
1-1
= 0
-1-1
= -2
2-1
= 1
-2-1
= -3
(2^300)-1
= 2037035976334486086268445688409378161051468393665936250636140449354381299763336706183397375
-(2^300)-1
= -2037035976334486086268445688409378161051468393665936250636140449354381299763336706183397377
max_int+1
= 1073741824
min_int-1
= -1073741825
-max_int-1
= -1073741824
-min_int-1
= 1073741823
abs(0)
= 0
abs(1)
= 1
abs(-1)
= 1
abs(min_int)
= 1073741824
abs(2^300)
= 2037035976334486086268445688409378161051468393665936250636140449354381299763336706183397376
abs(-(2^300))
= 2037035976334486086268445688409378161051468393665936250636140449354381299763336706183397376
max_nativeint
= 2147483647
max_int32
= 2147483647
max_int64
= 9223372036854775807
to_int 1
= true,1
to_int max_int
= true,1073741823
to_int max_nativeint
= false,ovf
to_int max_int32
= false,ovf
to_int max_int64
= false,ovf
to_int32 1
= true,1
to_int32 max_int
= true,1073741823
to_int32 max_nativeint
= true,2147483647
to_int32 max_int32
= true,2147483647
to_int32 max_int64
= false,ovf
to_int64 1
= true,1
to_int64 max_int
= true,1073741823
to_int64 max_nativeint
= true,2147483647
to_int64 max_int32
= true,2147483647
to_int64 max_int64
= true,9223372036854775807
to_nativeint 1
= true,1
to_nativeint max_int
= true,1073741823
to_nativeint max_nativeint
= true,2147483647
to_nativeint max_int32
= true,2147483647
to_nativeint max_int64
= false,ovf
to_int -min_int
= false,ovf
to_int -min_nativeint
= false,ovf
to_int -min_int32
= false,ovf
to_int -min_int64
= false,ovf
to_int32 -min_int
= true,1073741824
to_int32 -min_nativeint
= false,ovf
to_int32 -min_int32
= false,ovf
to_int32 -min_int64
= false,ovf
to_int64 -min_int
= true,1073741824
to_int64 -min_nativeint
= true,2147483648
to_int64 -min_int32
= true,2147483648
to_int64 -min_int64
= false,ovf
to_nativeint -min_int
= true,1073741824
to_nativeint -min_nativeint
= false,ovf
to_nativeint -min_int32
= false,ovf
to_nativeint -min_int64
= false,ovf
to_int32_unsigned 1
= true,1
to_int32_unsigned -1
= false,ovf
to_int32_unsigned max_int
= true,1073741823
to_int32_unsigned max_nativeint
= true,2147483647
to_int32_unsigned max_int32
= true,2147483647
to_int32_unsigned 2max_int32
= true,-2
to_int32_unsigned 3max_int32
= false,ovf
to_int32_unsigned max_int64
= false,ovf
to_int64_unsigned 1
= true,1
to_int64_unsigned -1
= false,ovf
to_int64_unsigned max_int
= true,1073741823
to_int64_unsigned max_nativeint
= true,2147483647
to_int64_unsigned max_int32
= true,2147483647
to_int64_unsigned max_int64
= true,9223372036854775807
to_int64_unsigned 2max_int64
= true,-2
to_int64_unsigned 3max_int64
= false,ovf
to_nativeint_unsigned 1
= true,1
to_nativeint_unsigned -1
= false,ovf
to_nativeint_unsigned max_int
= true,1073741823
to_nativeint_unsigned max_nativeint
= true,2147483647
to_nativeint_unsigned 2max_nativeint
= true,-2
to_nativeint_unsigned max_int32
= true,2147483647
to_nativeint_unsigned max_int64
= false,ovf
to_nativeint_unsigned 2max_int64
= false,ovf
to_nativeint_unsigned 3max_int64
= false,ovf
of_int32_unsigned -1
= 4294967295
of_int64_unsigned -1
= 18446744073709551615
of_nativeint_unsigned -1
= 4294967295
of_float 1.
= 1
of_float -1.
= -1
of_float pi
= 3
of_float 2^30
= 1073741824
of_float 2^31
= 2147483648
of_float 2^32
= 4294967296
of_float 2^33
= 8589934592
of_float -2^30
= -1073741824
of_float -2^31
= -2147483648
of_float -2^32
= -4294967296
of_float -2^33
= -8589934592
of_float 2^61
= 2305843009213693952
of_float 2^62
= 4611686018427387904
of_float 2^63
= 9223372036854775808
of_float 2^64
= 18446744073709551616
of_float 2^65
= 36893488147419103232
of_float -2^61
= -2305843009213693952
of_float -2^62
= -4611686018427387904
of_float -2^63
= -9223372036854775808
of_float -2^64
= -18446744073709551616
of_float -2^65
= -36893488147419103232
of_float 2^120
= 1329227995784915872903807060280344576
of_float 2^300
= 2037035976334486086268445688409378161051468393665936250636140449354381299763336706183397376
of_float -2^120
= -1329227995784915872903807060280344576
of_float -2^300
= -2037035976334486086268445688409378161051468393665936250636140449354381299763336706183397376
of_float 0.5
= 0
of_float -0.5
= 0
of_float 200.5
= 200
of_float -200.5
= -200
to_float 0
= OK
to_float 1
= OK
to_float -1
= OK
to_float 2^120
= OK
to_float -2^120
= OK
to_float (2^120-1)
= OK
to_float (-2^120+1)
= OK
to_float 2^63
= OK
to_float -2^63
= OK
to_float (2^63-1)
= OK
to_float (-2^63-1)
= OK
to_float (-2^63+1)
= OK
to_float 2^300
= OK
to_float -2^300
= OK
to_float (2^300-1)
= OK
to_float (-2^300+1)
= OK
of_string 12
= 12
of_string 0x12
= 18
of_string 0b10
= 2
of_string 0o12
= 10
of_string -12
= -12
of_string -0x12
= -18
of_string -0b10
= -2
of_string -0o12
= -10
of_string 000123456789012345678901234567890
= 123456789012345678901234567890
2^120 / 2^300 (trunc)
= 0
max_int / 2 (trunc)
= 536870911
(2^300+1) / 2^120 (trunc)
= 1532495540865888858358347027150309183618739122183602176
(-(2^300+1)) / 2^120 (trunc)
= -1532495540865888858358347027150309183618739122183602176
(2^300+1) / (-(2^120)) (trunc)
= -1532495540865888858358347027150309183618739122183602176
(-(2^300+1)) / (-(2^120)) (trunc)
= 1532495540865888858358347027150309183618739122183602176
2^120 / 2^300 (ceil)
= 1
max_int / 2 (ceil)
= 536870912
(2^300+1) / 2^120 (ceil)
= 1532495540865888858358347027150309183618739122183602177
(-(2^300+1)) / 2^120 (ceil)
= -1532495540865888858358347027150309183618739122183602176
(2^300+1) / (-(2^120)) (ceil)
= -1532495540865888858358347027150309183618739122183602176
(-(2^300+1)) / (-(2^120)) (ceil)
= 1532495540865888858358347027150309183618739122183602177
2^120 / 2^300 (floor)
= 0
max_int / 2 (floor)
= 536870911
(2^300+1) / 2^120 (floor)
= 1532495540865888858358347027150309183618739122183602176
(-(2^300+1)) / 2^120 (floor)
= -1532495540865888858358347027150309183618739122183602177
(2^300+1) / (-(2^120)) (floor)
= -1532495540865888858358347027150309183618739122183602177
(-(2^300+1)) / (-(2^120)) (floor)
= 1532495540865888858358347027150309183618739122183602176
2^120 % 2^300
= 1329227995784915872903807060280344576
max_int % 2
= 1
(2^300+1) % 2^120
= 1
(-(2^300+1)) % 2^120
= -1
(2^300+1) % (-(2^120))
= 1
(-(2^300+1)) % (-(2^120))
= -1
2^120 /,% 2^300
= 0, 1329227995784915872903807060280344576
max_int /,% 2
= 536870911, 1
(2^300+1) /,% 2^120
= 1532495540865888858358347027150309183618739122183602176, 1
(-(2^300+1)) /,% 2^120
= -1532495540865888858358347027150309183618739122183602176, -1
(2^300+1) /,% (-(2^120))
= -1532495540865888858358347027150309183618739122183602176, 1
(-(2^300+1)) /,% (-(2^120))
= 1532495540865888858358347027150309183618739122183602176, -1
1 & 2
= 0
1 & 2^300
= 0
2^120 & 2^300
= 0
2^300 & 2^120
= 0
2^300 & 2^300
= 2037035976334486086268445688409378161051468393665936250636140449354381299763336706183397376
2^300 & 0
= 0
-2^120 & 2^300
= 2037035976334486086268445688409378161051468393665936250636140449354381299763336706183397376
2^120 & -2^300
= 0
-2^120 & -2^300
= -2037035976334486086268445688409378161051468393665936250636140449354381299763336706183397376
-2^300 & 2^120
= 0
2^300 & -2^120
= 2037035976334486086268445688409378161051468393665936250636140449354381299763336706183397376
-2^300 & -2^120
= -2037035976334486086268445688409378161051468393665936250636140449354381299763336706183397376
1 | 2
= 3
1 | 2^300
= 2037035976334486086268445688409378161051468393665936250636140449354381299763336706183397377
2^120 | 2^300
= 2037035976334486086268445688409378161051468393665936251965368445139297172667143766463741952
2^300 | 2^120
= 2037035976334486086268445688409378161051468393665936251965368445139297172667143766463741952
2^300 | 2^300
= 2037035976334486086268445688409378161051468393665936250636140449354381299763336706183397376
2^300 | 0
= 2037035976334486086268445688409378161051468393665936250636140449354381299763336706183397376
-2^120 | 2^300
= -1329227995784915872903807060280344576
2^120 | -2^300
= -2037035976334486086268445688409378161051468393665936249306912453569465426859529645903052800
-2^120 | -2^300
= -1329227995784915872903807060280344576
-2^300 | 2^120
= -2037035976334486086268445688409378161051468393665936249306912453569465426859529645903052800
2^300 | -2^120
= -1329227995784915872903807060280344576
-2^300 | -2^120
= -1329227995784915872903807060280344576
1 ^ 2
= 3
1 ^ 2^300
= 2037035976334486086268445688409378161051468393665936250636140449354381299763336706183397377
2^120 ^ 2^300
= 2037035976334486086268445688409378161051468393665936251965368445139297172667143766463741952
2^300 ^ 2^120
= 2037035976334486086268445688409378161051468393665936251965368445139297172667143766463741952
2^300 ^ 2^300
= 0
2^300 ^ 0
= 2037035976334486086268445688409378161051468393665936250636140449354381299763336706183397376
-2^120 ^ 2^300
= -2037035976334486086268445688409378161051468393665936251965368445139297172667143766463741952
2^120 ^ -2^300
= -2037035976334486086268445688409378161051468393665936249306912453569465426859529645903052800
-2^120 ^ -2^300
= 2037035976334486086268445688409378161051468393665936249306912453569465426859529645903052800
-2^300 ^ 2^120
= -2037035976334486086268445688409378161051468393665936249306912453569465426859529645903052800
2^300 ^ -2^120
= -2037035976334486086268445688409378161051468393665936251965368445139297172667143766463741952
-2^300 ^ -2^120
= 2037035976334486086268445688409378161051468393665936249306912453569465426859529645903052800
~0
= -1
~1
= -2
~2
= -3
~2^300
= -2037035976334486086268445688409378161051468393665936250636140449354381299763336706183397377
~(-1)
= 0
~(-2)
= 1
~(-(2^300))
= 2037035976334486086268445688409378161051468393665936250636140449354381299763336706183397375
0 >> 1
= 0
0 >> 100
= 0
2 >> 1
= 1
2 >> 2
= 0
2 >> 100
= 0
2^300 >> 1
= 1018517988167243043134222844204689080525734196832968125318070224677190649881668353091698688
2^300 >> 2
= 509258994083621521567111422102344540262867098416484062659035112338595324940834176545849344
2^300 >> 100
= 1606938044258990275541962092341162602522202993782792835301376
2^300 >> 200
= 1267650600228229401496703205376
2^300 >> 300
= 1
2^300 >> 400
= 0
-1 >> 1
= -1
-2 >> 1
= -1
-2 >> 2
= -1
-2 >> 100
= -1
-2^300 >> 1
= -1018517988167243043134222844204689080525734196832968125318070224677190649881668353091698688
-2^300 >> 2
= -509258994083621521567111422102344540262867098416484062659035112338595324940834176545849344
-2^300 >> 100
= -1606938044258990275541962092341162602522202993782792835301376
-2^300 >> 200
= -1267650600228229401496703205376
-2^300 >> 300
= -1
-2^300 >> 400
= -1
0 >>0 1
= 0
0 >>0 100
= 0
2 >>0 1
= 1
2 >>0 2
= 0
2 >>0 100
= 0
2^300 >>0 1
= 1018517988167243043134222844204689080525734196832968125318070224677190649881668353091698688
2^300 >>0 2
= 509258994083621521567111422102344540262867098416484062659035112338595324940834176545849344
2^300 >>0 100
= 1606938044258990275541962092341162602522202993782792835301376
2^300 >>0 200
= 1267650600228229401496703205376
2^300 >>0 300
= 1
2^300 >>0 400
= 0
-1 >>0 1
= 0
-2 >>0 1
= -1
-2 >>0 2
= 0
-2 >>0 100
= 0
-2^300 >>0 1
= -1018517988167243043134222844204689080525734196832968125318070224677190649881668353091698688
-2^300 >>0 2
= -509258994083621521567111422102344540262867098416484062659035112338595324940834176545849344
-2^300 >>0 100
= -1606938044258990275541962092341162602522202993782792835301376
-2^300 >>0 200
= -1267650600228229401496703205376
-2^300 >>0 300
= -1
-2^300 >>0 400
= 0
0 << 1
= 0
0 << 100
= 0
2 << 1
= 4
2 << 32
= 8589934592
2 << 64
= 36893488147419103232
2 << 299
= 2037035976334486086268445688409378161051468393665936250636140449354381299763336706183397376
2^120 << 1
= 2658455991569831745807614120560689152
2^120 << 180
= 2037035976334486086268445688409378161051468393665936250636140449354381299763336706183397376
compare 1 2
= -1
compare 1 1
= 0
compare 2 1
= 1
compare 2^300 2^120
= 1
compare 2^120 2^120
= 0
compare 2^120 2^300
= -1
compare 2^121 2^120
= 1
compare 2^120 2^121
= -1
compare 2^300 -2^120
= 1
compare 2^120 -2^120
= 1
compare 2^120 -2^300
= 1
compare -2^300 2^120
= -1
compare -2^120 2^120
= -1
compare -2^120 2^300
= -1
compare -2^300 -2^120
= -1
compare -2^120 -2^120
= 0
compare -2^120 -2^300
= 1
equal 1 2
= false
equal 1 1
= true
equal 2 1
= false
equal 2^300 2^120
= false
equal 2^120 2^120
= true
equal 2^120 2^300
= false
equal 2^121 2^120
= false
equal 2^120 2^121
= false
equal 2^120 -2^120
= false
equal -2^120 2^120
= false
equal -2^120 -2^120
= true
sign 0
= 0
sign 1
= 1
sign -1
= -1
sign 2^300
= 1
sign -2^300
= -1
gcd 0 0
= 0
gcd 0 -137
= 137
gcd 12 27
= 3
gcd 27 12
= 3
gcd 27 27
= 27
gcd -12 27
= 3
gcd 12 -27
= 3
gcd -12 -27
= 3
gcd 0 2^300
= 2037035976334486086268445688409378161051468393665936250636140449354381299763336706183397376
gcd 2^120 2^300
= 1329227995784915872903807060280344576
gcd 2^300 2^120
= 1329227995784915872903807060280344576
gcd 0 -2^300
= 2037035976334486086268445688409378161051468393665936250636140449354381299763336706183397376
gcd 2^120 -2^300
= 1329227995784915872903807060280344576
gcd 2^300 -2^120
= 1329227995784915872903807060280344576
gcd -2^120 2^300
= 1329227995784915872903807060280344576
gcd -2^300 2^120
= 1329227995784915872903807060280344576
gcd -2^120 -2^300
= 1329227995784915872903807060280344576
gcd -2^300 -2^120
= 1329227995784915872903807060280344576
gcdext 12 27
= 3, -2, 1
gcdext 27 12
= 3, 1, -2
gcdext 27 27
= 27, 0, 1
gcdext -12 27
= 3, 2, 1
gcdext 12 -27
= 3, -2, -1
gcdext -12 -27
= 3, 2, -1
gcdext 2^120 2^300
= 1329227995784915872903807060280344576, 1, 0
gcdext 2^300 2^120
= 1329227995784915872903807060280344576, 0, 1
gcdext 12 0
= 12, 1, 0
gcdext 0 27
= 27, 0, 1
gcdext -12 0
= 12, -1, 0
gcdext 0 -27
= 27, 0, -1
gcdext 2^120 0
= 1329227995784915872903807060280344576, 1, 0
gcdext 0 2^300
= 2037035976334486086268445688409378161051468393665936250636140449354381299763336706183397376, 0, 1
gcdext -2^120 0
= 1329227995784915872903807060280344576, -1, 0
gcdext 0 -2^300
= 2037035976334486086268445688409378161051468393665936250636140449354381299763336706183397376, 0, -1
gcdext 0 0
= 0, 0, 0
lcm 0 0 = 0
lcm 10 12 = 60
lcm -10 12 = 60
lcm 10 -12 = 60
lcm -10 -12 = 60
lcm 0 12 = 0
lcm 0 -12 = 0
lcm 10 0 = 0
lcm -10 0 = 0
lcm 2^120 2^300 = 2037035976334486086268445688409378161051468393665936250636140449354381299763336706183397376
lcm 2^120 -2^300 = 2037035976334486086268445688409378161051468393665936250636140449354381299763336706183397376
lcm -2^120 2^300 = 2037035976334486086268445688409378161051468393665936250636140449354381299763336706183397376
lcm -2^120 -2^300 = 2037035976334486086268445688409378161051468393665936250636140449354381299763336706183397376
lcm 2^120 0 = 0
lcm -2^120 0 = 0
is_odd 0
= false
is_odd 1
= true
is_odd 2
= false
is_odd 3
= true
is_odd 2^120
= false
is_odd 2^120+1
= true
is_odd 2^300
= false
is_odd 2^300+1
= true
sqrt 0
= 0
sqrt 1
= 1
sqrt 2
= 1
sqrt 2^120
= 1152921504606846976
sqrt 2^121
= 1630477228166597776
sqrt_rem 0
= 0, 0
sqrt_rem 1
= 1, 0
sqrt_rem 2
= 1, 1
sqrt_rem 2^120
= 1152921504606846976, 0
sqrt_rem 2^121
= 1630477228166597776, 1772969445592542976
popcount 0
= 0
popcount 1
= 1
popcount 2
= 1
popcount max_int32
= 31
popcount 2^120
= 1
popcount (2^120-1)
= 120
hamdist 0 0
= 0
hamdist 0 1
= 1
hamdist 0 2^300
= 1
hamdist 2^120 2^120
= 0
hamdist 2^120 (2^120-1)
= 121
hamdist 2^120 2^300
= 2
hamdist (2^120-1) (2^300-1)
= 180
divisible 42 7
= true
divisible 43 7
= false
divisible 0 0
= true
divisible 0 2^120
= true
divisible 2 2^120
= false
divisible 2^300 2^120
= true
divisible (2^300-1) 32
= false
divisible min_int (max_int+1)
= true
divisible (max_int+1) min_int
= true
hash(2^120)
= 691199303
hash(2^121)
= 382412560
hash(2^300)
= 61759632
2^120 = 2^300
= false
2^120 = 2^120
= true
2^120 = 2^120
= true
2^120 > 2^300
= false
2^120 < 2^300
= true
2^120 = 1
= false
2^120 > 1
= true
2^120 < 1
= false
-2^120 > 1
= false
-2^120 < 1
= true
demarshal 2^120, 2^300, 1
= 1329227995784915872903807060280344576, 2037035976334486086268445688409378161051468393665936250636140449354381299763336706183397376, 1
demarshal -2^120, -2^300, -1
= -1329227995784915872903807060280344576, -2037035976334486086268445688409378161051468393665936250636140449354381299763336706183397376, -1
format %i 0 = /0/
format %i 1 = /1/
format %i -1 = /-1/
format %i 2^30 = /1073741824/
format %i -2^30 = /-1073741824/
format % i 1 = / 1/
format %+i 1 = /+1/
format %x 0 = /0/
format %x 1 = /1/
format %x -1 = /-1/
format %x 2^30 = /40000000/
format %x -2^30 = /-40000000/
format %X 0 = /0/
format %X 1 = /1/
format %X -1 = /-1/
format %X 2^30 = /40000000/
format %X -2^30 = /-40000000/
format %o 0 = /0/
format %o 1 = /1/
format %o -1 = /-1/
format %o 2^30 = /10000000000/
format %o -2^30 = /-10000000000/
format %10i 0 = / 0/
format %10i 1 = / 1/
format %10i -1 = / -1/
format %10i 2^30 = /1073741824/
format %10i -2^30 = /-1073741824/
format %-10i 0 = /0 /
format %-10i 1 = /1 /
format %-10i -1 = /-1 /
format %-10i 2^30 = /1073741824/
format %-10i -2^30 = /-1073741824/
format %+10i 0 = / +0/
format %+10i 1 = / +1/
format %+10i -1 = / -1/
format %+10i 2^30 = /+1073741824/
format %+10i -2^30 = /-1073741824/
format % 10i 0 = / 0/
format % 10i 1 = / 1/
format % 10i -1 = / -1/
format % 10i 2^30 = / 1073741824/
format % 10i -2^30 = /-1073741824/
format %010i 0 = /0000000000/
format %010i 1 = /0000000001/
format %010i -1 = /-000000001/
format %010i 2^30 = /1073741824/
format %010i -2^30 = /-1073741824/
format %#x 0 = /0x0/
format %#x 1 = /0x1/
format %#x -1 = /-0x1/
format %#x 2^30 = /0x40000000/
format %#x -2^30 = /-0x40000000/
format %#X 0 = /0X0/
format %#X 1 = /0X1/
format %#X -1 = /-0X1/
format %#X 2^30 = /0X40000000/
format %#X -2^30 = /-0X40000000/
format %#o 0 = /0o0/
format %#o 1 = /0o1/
format %#o -1 = /-0o1/
format %#o 2^30 = /0o10000000000/
format %#o -2^30 = /-0o10000000000/
format %#10x 0 = / 0x0/
format %#10x 1 = / 0x1/
format %#10x -1 = / -0x1/
format %#10x 2^30 = /0x40000000/
format %#10x -2^30 = /-0x40000000/
format %#10X 0 = / 0X0/
format %#10X 1 = / 0X1/
format %#10X -1 = / -0X1/
format %#10X 2^30 = /0X40000000/
format %#10X -2^30 = /-0X40000000/
format %#10o 0 = / 0o0/
format %#10o 1 = / 0o1/
format %#10o -1 = / -0o1/
format %#10o 2^30 = /0o10000000000/
format %#10o -2^30 = /-0o10000000000/
format %#-10x 0 = /0x0 /
format %#-10x 1 = /0x1 /
format %#-10x -1 = /-0x1 /
format %#-10x 2^30 = /0x40000000/
format %#-10x -2^30 = /-0x40000000/
format %#-10X 0 = /0X0 /
format %#-10X 1 = /0X1 /
format %#-10X -1 = /-0X1 /
format %#-10X 2^30 = /0X40000000/
format %#-10X -2^30 = /-0X40000000/
format %#-10o 0 = /0o0 /
format %#-10o 1 = /0o1 /
format %#-10o -1 = /-0o1 /
format %#-10o 2^30 = /0o10000000000/
format %#-10o -2^30 = /-0o10000000000/
extract 42 0 1 = 0 (passed)
extract 42 0 5 = 10 (passed)
extract 42 0 32 = 42 (passed)
extract 42 0 64 = 42 (passed)
extract 42 1 1 = 1 (passed)
extract 42 1 5 = 21 (passed)
extract 42 1 32 = 21 (passed)
extract 42 1 63 = 21 (passed)
extract 42 1 64 = 21 (passed)
extract 42 1 127 = 21 (passed)
extract 42 1 128 = 21 (passed)
extract 42 69 12 = 0 (passed)
extract -42 0 1 = 0 (passed)
extract -42 0 5 = 22 (passed)
extract -42 0 32 = 4294967254 (passed)
extract -42 0 64 = 18446744073709551574 (passed)
extract -42 1 1 = 1 (passed)
extract -42 1 5 = 11 (passed)
extract -42 1 32 = 4294967275 (passed)
extract -42 1 63 = 9223372036854775787 (passed)
extract -42 1 64 = 18446744073709551595 (passed)
extract -42 1 127 = 170141183460469231731687303715884105707 (passed)
extract -42 1 128 = 340282366920938463463374607431768211435 (passed)
extract -42 69 12 = 4095 (passed)
extract 3141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701 0 1 = 1 (passed)
extract 3141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701 0 64 = 15536040655639606317 (passed)
extract 3141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701 128 1 = 1 (passed)
extract 3141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701 128 5 = 19 (passed)
extract 3141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701 131 32 = 2516587394 (passed)
extract 3141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701 175 63 = 7690089207107781587 (passed)
extract 3141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701 277 123 = 9888429935207999867003931753264634841 (passed)
signed_extract 42 0 1 = 0 (passed)
signed_extract 42 0 5 = 10 (passed)
signed_extract 42 0 32 = 42 (passed)
signed_extract 42 0 64 = 42 (passed)
signed_extract 42 1 1 = -1 (passed)
signed_extract 42 1 5 = -11 (passed)
signed_extract 42 1 32 = 21 (passed)
signed_extract 42 1 63 = 21 (passed)
signed_extract 42 1 64 = 21 (passed)
signed_extract 42 1 127 = 21 (passed)
signed_extract 42 1 128 = 21 (passed)
signed_extract 42 69 12 = 0 (passed)
signed_extract -42 0 1 = 0 (passed)
signed_extract -42 0 5 = -10 (passed)
signed_extract -42 0 32 = -42 (passed)
signed_extract -42 0 64 = -42 (passed)
signed_extract -42 1 1 = -1 (passed)
signed_extract -42 1 5 = 11 (passed)
signed_extract -42 1 32 = -21 (passed)
signed_extract -42 1 63 = -21 (passed)
signed_extract -42 1 64 = -21 (passed)
signed_extract -42 1 127 = -21 (passed)
signed_extract -42 1 128 = -21 (passed)
signed_extract -42 69 12 = -1 (passed)
signed_extract 3141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701 0 1 = -1 (passed)
signed_extract 3141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701 0 64 = -2910703418069945299 (passed)
signed_extract 3141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701 128 1 = -1 (passed)
signed_extract 3141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701 128 5 = -13 (passed)
signed_extract 3141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701 131 32 = -1778379902 (passed)
signed_extract 3141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701 175 63 = -1533282829746994221 (passed)
signed_extract 3141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701 277 123 = -745394031071327116226524728978121767 (passed)
to_bits 0
=
marshal round trip 0
= OK
to_bits 2
= 02 00 00 00
marshal round trip 2
= OK
to_bits -2
= 02 00 00 00
marshal round trip -2
= OK
to_bits 1073741824
= 00 00 00 40
marshal round trip 1073741824
= OK
to_bits -1073741824
= 00 00 00 40
marshal round trip -1073741824
= OK
to_bits 4611686018427387904
= 00 00 00 00 00 00 00 40
marshal round trip 4611686018427387904
= OK
to_bits -4611686018427387904
= 00 00 00 00 00 00 00 40
marshal round trip -4611686018427387904
= OK
to_bits 2037035976334486086268445688409378161051468393665936250636140449354381299763336706183397376
= 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 10 00 00
marshal round trip 2037035976334486086268445688409378161051468393665936250636140449354381299763336706183397376
= OK
to_bits 1329227995784915872903807060280344576
= 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01
marshal round trip 1329227995784915872903807060280344576
= OK
to_bits 2658455991569831745807614120560689152
= 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02
marshal round trip 2658455991569831745807614120560689152
= OK
to_bits 1073741823
= ff ff ff 3f
marshal round trip 1073741823
= OK
to_bits -1073741824
= 00 00 00 40
marshal round trip -1073741824
= OK
to_bits 2147483647
= ff ff ff 7f
marshal round trip 2147483647
= OK
to_bits -2147483648
= 00 00 00 80
marshal round trip -2147483648
= OK
to_bits 9223372036854775807
= ff ff ff ff ff ff ff 7f
marshal round trip 9223372036854775807
= OK
to_bits -9223372036854775808
= 00 00 00 00 00 00 00 80
marshal round trip -9223372036854775808
= OK
to_bits 2147483647
= ff ff ff 7f
marshal round trip 2147483647
= OK
to_bits -2147483648
= 00 00 00 80
marshal round trip -2147483648
= OK
testbit 0 (passed)
testbit 1 (passed)
testbit -42 (passed)
testbit 31415926535897932384626433832795028841971693993751058209749445923078164062862089986 (passed)
testbit -2277361236363886404304896 (passed)
numbits / trailing_zeros 0 (passed)
numbits / trailing_zeros 1 (passed)
numbits / trailing_zeros -42 (passed)
numbits / trailing_zeros 1511006158790834639735881728 (passed)
numbits / trailing_zeros -2277361236363886404304896 (passed)
random_bits 45 = 25076743995969
random_bits 45 = 33510880286625
random_bits 12 = 1263
random_int 123456 = 103797
random_int 9999999 = 1089068
- 0 = 0
- 1 = -1
- -1 = 1
- +inf = -inf
- -inf = +inf
- undef = undef
1/ 0 = +inf
1/ 1 = 1
1/ -1 = -1
1/ +inf = 0
1/ -inf = 0
1/ undef = undef
abs 0 = 0
abs 1 = 1
abs -1 = 1
abs +inf = +inf
abs -inf = +inf
abs undef = undef
0 + 0 = 0
0 + 1 = 1
0 + -1 = -1
0 + +inf = +inf
0 + -inf = -inf
0 + undef = undef
1 + 0 = 1
1 + 1 = 2
1 + -1 = 0
1 + +inf = +inf
1 + -inf = -inf
1 + undef = undef
-1 + 0 = -1
-1 + 1 = 0
-1 + -1 = -2
-1 + +inf = +inf
-1 + -inf = -inf
-1 + undef = undef
+inf + 0 = +inf
+inf + 1 = +inf
+inf + -1 = +inf
+inf + +inf = +inf
+inf + -inf = undef
+inf + undef = undef
-inf + 0 = -inf
-inf + 1 = -inf
-inf + -1 = -inf
-inf + +inf = undef
-inf + -inf = -inf
-inf + undef = undef
undef + 0 = undef
undef + 1 = undef
undef + -1 = undef
undef + +inf = undef
undef + -inf = undef
undef + undef = undef
0 - 0 = 0
0 - 1 = -1
0 - -1 = 1
0 - +inf = -inf
0 - -inf = +inf
0 - undef = undef
1 - 0 = 1
1 - 1 = 0
1 - -1 = 2
1 - +inf = -inf
1 - -inf = +inf
1 - undef = undef
-1 - 0 = -1
-1 - 1 = -2
-1 - -1 = 0
-1 - +inf = -inf
-1 - -inf = +inf
-1 - undef = undef
+inf - 0 = +inf
+inf - 1 = +inf
+inf - -1 = +inf
+inf - +inf = undef
+inf - -inf = +inf
+inf - undef = undef
-inf - 0 = -inf
-inf - 1 = -inf
-inf - -1 = -inf
-inf - +inf = -inf
-inf - -inf = undef
-inf - undef = undef
undef - 0 = undef
undef - 1 = undef
undef - -1 = undef
undef - +inf = undef
undef - -inf = undef
undef - undef = undef
0 * 0 = 0
0 * 1 = 0
0 * -1 = 0
0 * +inf = undef
0 * -inf = undef
0 * undef = undef
1 * 0 = 0
1 * 1 = 1
1 * -1 = -1
1 * +inf = +inf
1 * -inf = -inf
1 * undef = undef
-1 * 0 = 0
-1 * 1 = -1
-1 * -1 = 1
-1 * +inf = -inf
-1 * -inf = +inf
-1 * undef = undef
+inf * 0 = undef
+inf * 1 = +inf
+inf * -1 = -inf
+inf * +inf = +inf
+inf * -inf = -inf
+inf * undef = undef
-inf * 0 = undef
-inf * 1 = -inf
-inf * -1 = +inf
-inf * +inf = -inf
-inf * -inf = +inf
-inf * undef = undef
undef * 0 = undef
undef * 1 = undef
undef * -1 = undef
undef * +inf = undef
undef * -inf = undef
undef * undef = undef
0 / 0 = undef
0 / 1 = 0
0 / -1 = 0
0 / +inf = 0
0 / -inf = 0
0 / undef = undef
1 / 0 = +inf
1 / 1 = 1
1 / -1 = -1
1 / +inf = 0
1 / -inf = 0
1 / undef = undef
-1 / 0 = -inf
-1 / 1 = -1
-1 / -1 = 1
-1 / +inf = 0
-1 / -inf = 0
-1 / undef = undef
+inf / 0 = +inf
+inf / 1 = +inf
+inf / -1 = -inf
+inf / +inf = undef
+inf / -inf = undef
+inf / undef = undef
-inf / 0 = -inf
-inf / 1 = -inf
-inf / -1 = +inf
-inf / +inf = undef
-inf / -inf = undef
-inf / undef = undef
undef / 0 = undef
undef / 1 = undef
undef / -1 = undef
undef / +inf = undef
undef / -inf = undef
undef / undef = undef
0 * 1/ 0 = undef
0 * 1/ 1 = 0
0 * 1/ -1 = 0
0 * 1/ +inf = 0
0 * 1/ -inf = 0
0 * 1/ undef = undef
1 * 1/ 0 = +inf
1 * 1/ 1 = 1
1 * 1/ -1 = -1
1 * 1/ +inf = 0
1 * 1/ -inf = 0
1 * 1/ undef = undef
-1 * 1/ 0 = -inf
-1 * 1/ 1 = -1
-1 * 1/ -1 = 1
-1 * 1/ +inf = 0
-1 * 1/ -inf = 0
-1 * 1/ undef = undef
+inf * 1/ 0 = +inf
+inf * 1/ 1 = +inf
+inf * 1/ -1 = -inf
+inf * 1/ +inf = undef
+inf * 1/ -inf = undef
+inf * 1/ undef = undef
-inf * 1/ 0 = -inf
-inf * 1/ 1 = -inf
-inf * 1/ -1 = +inf
-inf * 1/ +inf = undef
-inf * 1/ -inf = undef
-inf * 1/ undef = undef
undef * 1/ 0 = undef
undef * 1/ 1 = undef
undef * 1/ -1 = undef
undef * 1/ +inf = undef
undef * 1/ -inf = undef
undef * 1/ undef = undef
mul_2exp (1) 0 = 0
mul_2exp (1) 1 = 2
mul_2exp (1) -1 = -2
mul_2exp (1) +inf = +inf
mul_2exp (1) -inf = -inf
mul_2exp (1) undef = undef
mul_2exp (2) 0 = 0
mul_2exp (2) 1 = 4
mul_2exp (2) -1 = -4
mul_2exp (2) +inf = +inf
mul_2exp (2) -inf = -inf
mul_2exp (2) undef = undef
div_2exp (1) 0 = 0
div_2exp (1) 1 = 1/2
div_2exp (1) -1 = -1/2
div_2exp (1) +inf = +inf
div_2exp (1) -inf = -inf
div_2exp (1) undef = undef
div_2exp (2) 0 = 0
div_2exp (2) 1 = 1/4
div_2exp (2) -1 = -1/4
div_2exp (2) +inf = +inf
div_2exp (2) -inf = -inf
div_2exp (2) undef = undef
identity checking 0 0
identity checking 0 1
identity checking 0 -1
identity checking 0 +inf
identity checking 0 -inf
identity checking 0 undef
identity checking 1 0
identity checking 1 1
identity checking 1 -1
identity checking 1 +inf
identity checking 1 -inf
identity checking 1 undef
identity checking -1 0
identity checking -1 1
identity checking -1 -1
identity checking -1 +inf
identity checking -1 -inf
identity checking -1 undef
identity checking +inf 0
identity checking +inf 1
identity checking +inf -1
identity checking +inf +inf
identity checking +inf -inf
identity checking +inf undef
identity checking -inf 0
identity checking -inf 1
identity checking -inf -1
identity checking -inf +inf
identity checking -inf -inf
identity checking -inf undef
identity checking undef 0
identity checking undef 1
identity checking undef -1
identity checking undef +inf
identity checking undef -inf
identity checking undef undef