|
1 | 1 | import test from 'ava'; |
2 | 2 | import { _add , _sub , _mul , _div , _pow , _cmp , _cmp_no_bounds , _simplify } from '../../src'; |
3 | 3 |
|
4 | | -import int from 'int' ; |
5 | | -import BN from 'bn.js' ; |
6 | | -import { ZZ } from '@aureooms/js-integer' ; |
7 | | - |
8 | 4 | const GOOGOL = '10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' ; |
9 | 5 |
|
| 6 | +import { ALU } from './_fixtures' ; |
| 7 | + |
10 | 8 | function binary ( t , alu , [ [ _x , _y , factory ] , a , b , c , d , e ] ) { |
11 | 9 |
|
12 | 10 | const apply = factory( alu ); |
@@ -68,65 +66,6 @@ unary.title = ( _ , alu , [ [ name , impl ] , a , b , e ] ) => { |
68 | 66 | return `${name}<${impl.name}, ${alu.name}> ${name}(${a}/${b}) = ${e}` ; |
69 | 67 | } ; |
70 | 68 |
|
71 | | -const ALU = [ |
72 | | - { |
73 | | - name : 'int', |
74 | | - add : (a, b) => a.add(b), |
75 | | - sub : (a, b) => a.sub(b), |
76 | | - mul : (a, b) => a.mul(b), |
77 | | - div : (a, b) => a.div(b), |
78 | | - reg : x => int(x), |
79 | | - str : x => x.toString(), |
80 | | - jz : x => x.eq(0), |
81 | | - lt0 : x => x.lt(0), |
82 | | - cmp : (a,b) => a.cmp(b), |
83 | | - neg : x => x.neg(), |
84 | | - sgn : x => x.cmp(0), |
85 | | - divmod : (a,b) => [a.div(b), a.mod(b)], |
86 | | - pown : (x,n) => x.pow(n), |
87 | | - }, |
88 | | - { |
89 | | - name : 'bn.js', |
90 | | - add : (a, b) => a.add(b), |
91 | | - sub : (a, b) => a.sub(b), |
92 | | - mul : (a, b) => a.mul(b), |
93 | | - div : (a, b) => a.div(b), |
94 | | - reg : x => new BN(x), |
95 | | - str : x => x.toString(), |
96 | | - jz : x => x.eqn(0), |
97 | | - lt0 : x => x.ltn(0), |
98 | | - cmp : (a,b) => a.cmp(b), |
99 | | - sgn : x => x.cmpn(0), |
100 | | - neg : x => x.neg(), |
101 | | - divmod : (a,b) => { |
102 | | - const { div , mod } = a.divmod(b) ; |
103 | | - return [div, mod] ; |
104 | | - } , |
105 | | - egcd : (a,b) => { |
106 | | - const gcd = a.gcd(b) ; |
107 | | - return { u: b.div(gcd), v: a.div(gcd) } ; |
108 | | - } , |
109 | | - pown : (x,n) => x.pow(new BN(n)), |
110 | | - }, |
111 | | - { |
112 | | - name : '@aureooms/js-integer', |
113 | | - add : (a, b) => a.add(b), |
114 | | - sub : (a, b) => a.sub(b), |
115 | | - mul : (a, b) => a.mul(b), |
116 | | - div : (a, b) => a.div(b), |
117 | | - reg : x => ZZ.from(x), |
118 | | - str : x => x.toString(), |
119 | | - jz : x => x.iszero(), |
120 | | - lt0 : x => x.sign() < 0, |
121 | | - cmp : (a,b) => a.cmp(b), |
122 | | - sgn : x => x.sign(), |
123 | | - neg : x => x.opposite(), |
124 | | - divmod : (a,b) => a.divmod(b), |
125 | | - egcd : (a,b) => a.egcd(b), |
126 | | - pown : (x,n) => x.pown(n), |
127 | | - } |
128 | | -]; |
129 | | - |
130 | 69 | const add = [ 'add' , '+' , [ _add ] , binary ] ; |
131 | 70 | const sub = [ 'sub' , '-' , [ _sub ] , binary ] ; |
132 | 71 | const mul = [ 'mul' , '*' , [ _mul ] , binary ] ; |
|
0 commit comments