]> gitweb.factorcode.org Git - factor.git/blob - core/test/math/integer.factor
more sql changes
[factor.git] / core / test / math / integer.factor
1 IN: temporary
2 USING: kernel math namespaces prettyprint test math-internals
3 errors ;
4
5 [ "-8" ] [ -8 unparse ] unit-test
6
7 [ t ] [ 0 fixnum? ] unit-test
8 [ t ] [ 31415 number? ] unit-test
9 [ t ] [ 31415 >bignum number? ] unit-test
10 [ t ] [ 2345621 fixnum? ] unit-test
11
12 [ t ] [ 2345621 dup >bignum >fixnum = ] unit-test
13
14 [ t ] [ 0 >fixnum 0 >bignum = ] unit-test
15 [ f ] [ 0 >fixnum 1 >bignum = ] unit-test
16 [ f ] [ 1 >bignum 0 >bignum = ] unit-test
17 [ t ] [ 0 >bignum 0 >fixnum = ] unit-test
18
19 [ t ] [ 0 >bignum bignum? ] unit-test
20 [ f ] [ 0 >fixnum bignum? ] unit-test
21 [ f ] [ 0 >fixnum bignum? ] unit-test
22 [ t ] [ 0 >fixnum fixnum? ] unit-test
23
24 [ -1 ] [ 1 neg ] unit-test
25 [ -1 ] [ 1 >bignum neg ] unit-test
26 [ 268435456 ] [ -268435456 >fixnum -1 * ] unit-test
27 [ 268435456 ] [ -268435456 >fixnum neg ] unit-test
28
29 [ 9 3 ] [ 93 10 /mod ] unit-test
30 [ 9 3 ] [ 93 >bignum 10 /mod ] unit-test
31
32 [ 5 ] [ 2 >bignum 3 >bignum + ] unit-test
33
34 [ 100 ] [ 100 100 gcd nip ] unit-test
35 [ 100 ] [ 1000 100 gcd nip ] unit-test
36 [ 100 ] [ 100 1000 gcd nip ] unit-test
37 [ 4 ] [ 132 64 gcd nip ] unit-test
38 [ 4 ] [ -132 64 gcd nip ] unit-test
39 [ 4 ] [ -132 -64 gcd nip ] unit-test
40 [ 4 ] [ 132 -64 gcd nip ] unit-test
41 [ 4 ] [ -132 -64 gcd nip ] unit-test
42
43 [ 100 ] [ 100 >bignum 100 >bignum gcd nip ] unit-test
44 [ 100 ] [ 1000 >bignum 100 >bignum gcd nip ] unit-test
45 [ 100 ] [ 100 >bignum 1000 >bignum gcd nip ] unit-test
46 [ 4 ] [ 132 >bignum 64 >bignum gcd nip ] unit-test
47 [ 4 ] [ -132 >bignum 64 >bignum gcd nip ] unit-test
48 [ 4 ] [ -132 >bignum -64 >bignum gcd nip ] unit-test
49 [ 4 ] [ 132 >bignum -64 >bignum gcd nip ] unit-test
50 [ 4 ] [ -132 >bignum -64 >bignum gcd nip ] unit-test
51
52 [ 6 ] [
53     1326264299060955293181542400000006
54     1591517158873146351817850880000000
55     gcd nip
56 ] unit-test
57
58 : verify-gcd
59     2dup swap gcd
60     >r rot * swap rem r> = ; 
61
62 [ t ] [ 123 124 verify-gcd ] unit-test
63 [ t ] [ 50 120 verify-gcd ] unit-test
64
65 [ -1 ] [ -1 >bignum >fixnum ] unit-test
66
67 [ "8589934592" ]
68 [ 134217728 dup + dup + dup + dup + dup + dup + unparse ]
69 unit-test
70
71 [ t ] [ 0 0 ^ fp-nan? ] unit-test
72 [ 1 ] [ 10 0 ^ ] unit-test
73 [ 1/8 ] [ 1/2 3 ^ ] unit-test
74 [ 1/8 ] [ 2 -3 ^ ] unit-test
75 [ t ] [ 1 100 shift 2 100 ^ = ] unit-test
76
77 [ t ] [ 256 power-of-2? ] unit-test
78 [ f ] [ 123 power-of-2? ] unit-test
79 [ 8 ] [ 256 log2 ] unit-test
80 [ 0 ] [ 1 log2 ] unit-test
81
82 [ 1 ] [ 7/8 ceiling ] unit-test
83 [ 2 ] [ 3/2 ceiling ] unit-test
84 [ 0 ] [ -7/8 ceiling ] unit-test
85 [ -1 ] [ -3/2 ceiling ] unit-test
86
87 [ 2 ] [ 0 next-power-of-2 ] unit-test
88 [ 2 ] [ 1 next-power-of-2 ] unit-test
89 [ 2 ] [ 2 next-power-of-2 ] unit-test
90 [ 4 ] [ 3 next-power-of-2 ] unit-test
91 [ 16 ] [ 13 next-power-of-2 ] unit-test
92 [ 16 ] [ 16 next-power-of-2 ] unit-test
93
94 [ 268435456 ] [ -268435456 >fixnum -1 / ] unit-test
95 [ 268435456 ] [ -268435456 >fixnum -1 /i ] unit-test
96 [ 268435456 0 ] [ -268435456 >fixnum -1 /mod ] unit-test
97 [ 1/268435456 ] [ -1 -268435456 >fixnum / ] unit-test
98 [ 0 ] [ -1 -268435456 >fixnum /i ] unit-test
99 [ 0 -1 ] [ -1 -268435456 >fixnum /mod ] unit-test
100 [ 14355 ] [ 1591517158873146351817850880000000 32769 mod ] unit-test
101
102 [ -351382792 ] [ -43922849 3 shift ] unit-test
103
104 [ t ] [ 0 zero? ] unit-test
105 [ f ] [ 30 zero? ] unit-test
106 [ t ] [ 0 >bignum zero? ] unit-test
107
108 [ 4294967280 ] [ 268435455 >fixnum 16 fixnum* ] unit-test
109
110 [ 23603949310011464311086123800853779733506160743636399259558684142844552151041 ]
111 [
112     1957739506503920732625800353008742584087090810400921800808997218266517557963281171906190947801528098188887586755474449585677502695226712388326288208691204
113     79562815144503850065234921197651376510595262628033069372760833939060637564931
114     bignum-mod
115 ] unit-test
116
117 ! We don't care if this fails or returns 0 (its CPU-specific)
118 ! as long as it doesn't crash
119 [ ] [ [ 0 0 /i ] catch clear ] unit-test
120 [ ] [ [ 100000000000000000 0 /i ] catch clear ] unit-test