@@ -22,18 +22,12 @@ VAL MKBIGI(int val) {
22
22
return MKINT ((i_int )val );
23
23
}
24
24
25
- static mpz_t * big (BigInt * v ) {
26
- return (mpz_t * )(v -> big );
27
- }
28
-
29
- #define BIG (x ) big((BigInt*)(x))
30
-
31
25
static BigInt * allocBig (VM * vm ) {
32
26
idris_requireAlloc (vm , IDRIS_MAXGMP );
33
27
BigInt * cl = iallocate (vm , sizeof (* cl ) + sizeof (mpz_t ), 0 );
34
28
idris_doneAlloc (vm );
35
29
SETTY (cl , CT_BIGINT );
36
- mpz_init (* big (cl ));
30
+ mpz_init (* getmpz (cl ));
37
31
return cl ;
38
32
}
39
33
@@ -43,39 +37,39 @@ VAL MKBIGC(VM* vm, char* val) {
43
37
}
44
38
else {
45
39
BigInt * cl = allocBig (vm );
46
- mpz_set_str (* big (cl ), val , 10 );
40
+ mpz_set_str (* getmpz (cl ), val , 10 );
47
41
return (VAL )cl ;
48
42
}
49
43
}
50
44
51
45
VAL MKBIGM (VM * vm , void * ibig ) {
52
46
BigInt * cl = allocBig (vm );
53
- mpz_set (* big (cl ), * ((mpz_t * )ibig ));
47
+ mpz_set (* getmpz (cl ), * ((mpz_t * )ibig ));
54
48
return (VAL )cl ;
55
49
}
56
50
57
51
VAL MKBIGMc (VM * vm , void * ibig ) {
58
52
BigInt * cl = allocBig (vm );
59
- mpz_init_set (* big (cl ), * ((mpz_t * )ibig ));
53
+ mpz_init_set (* getmpz (cl ), * ((mpz_t * )ibig ));
60
54
return (VAL )cl ;
61
55
}
62
56
63
57
VAL MKBIGUI (VM * vm , unsigned long val ) {
64
58
BigInt * cl = allocBig (vm );
65
- mpz_init_set_ui (* big (cl ), val );
59
+ mpz_init_set_ui (* getmpz (cl ), val );
66
60
return (VAL )cl ;
67
61
}
68
62
69
63
VAL MKBIGSI (VM * vm , signed long val ) {
70
64
BigInt * cl = allocBig (vm );
71
- mpz_init_set_si (* big (cl ), val );
65
+ mpz_init_set_si (* getmpz (cl ), val );
72
66
return (VAL )cl ;
73
67
}
74
68
75
69
static BigInt * getbig (VM * vm , VAL x ) {
76
70
if (ISINT (x )) {
77
71
BigInt * cl = allocBig (vm );
78
- mpz_set_si (* big (cl ), GETINT (x ));
72
+ mpz_set_si (* getmpz (cl ), GETINT (x ));
79
73
return cl ;
80
74
} else {
81
75
switch (GETTY (x )) {
@@ -91,62 +85,62 @@ static BigInt * getbig(VM * vm, VAL x) {
91
85
92
86
VAL bigAdd (VM * vm , VAL x , VAL y ) {
93
87
BigInt * cl = allocBig (vm );
94
- mpz_add (* big (cl ), * big (getbig (vm ,x )), * big (getbig (vm ,y )));
88
+ mpz_add (* getmpz (cl ), * getmpz (getbig (vm ,x )), * getmpz (getbig (vm ,y )));
95
89
return (VAL )cl ;
96
90
}
97
91
98
92
VAL bigSub (VM * vm , VAL x , VAL y ) {
99
93
BigInt * cl = allocBig (vm );
100
- mpz_sub (* big (cl ), * big (getbig (vm ,x )), * big (getbig (vm ,y )));
94
+ mpz_sub (* getmpz (cl ), * getmpz (getbig (vm ,x )), * getmpz (getbig (vm ,y )));
101
95
return (VAL )cl ;
102
96
}
103
97
104
98
VAL bigMul (VM * vm , VAL x , VAL y ) {
105
99
BigInt * cl = allocBig (vm );
106
- mpz_mul (* big (cl ), * big (getbig (vm ,x )), * big (getbig (vm ,y )));
100
+ mpz_mul (* getmpz (cl ), * getmpz (getbig (vm ,x )), * getmpz (getbig (vm ,y )));
107
101
return (VAL )cl ;
108
102
}
109
103
110
104
VAL bigDiv (VM * vm , VAL x , VAL y ) {
111
105
BigInt * cl = allocBig (vm );
112
- mpz_tdiv_q (* big (cl ), * big (getbig (vm ,x )), * big (getbig (vm ,y )));
106
+ mpz_tdiv_q (* getmpz (cl ), * getmpz (getbig (vm ,x )), * getmpz (getbig (vm ,y )));
113
107
return (VAL )cl ;
114
108
}
115
109
116
110
VAL bigMod (VM * vm , VAL x , VAL y ) {
117
111
BigInt * cl = allocBig (vm );
118
- mpz_tdiv_r (* big (cl ), * big (getbig (vm ,x )), * big (getbig (vm ,y )));
112
+ mpz_tdiv_r (* getmpz (cl ), * getmpz (getbig (vm ,x )), * getmpz (getbig (vm ,y )));
119
113
return (VAL )cl ;
120
114
}
121
115
122
116
VAL bigAnd (VM * vm , VAL x , VAL y ) {
123
117
BigInt * cl = allocBig (vm );
124
- mpz_and (* big (cl ), * big (getbig (vm ,x )), * big (getbig (vm ,y )));
118
+ mpz_and (* getmpz (cl ), * getmpz (getbig (vm ,x )), * getmpz (getbig (vm ,y )));
125
119
return (VAL )cl ;
126
120
}
127
121
128
122
VAL bigOr (VM * vm , VAL x , VAL y ) {
129
123
BigInt * cl = allocBig (vm );
130
- mpz_ior (* big (cl ), * big (getbig (vm ,x )), * big (getbig (vm ,y )));
124
+ mpz_ior (* getmpz (cl ), * getmpz (getbig (vm ,x )), * getmpz (getbig (vm ,y )));
131
125
return (VAL )cl ;
132
126
}
133
127
134
128
VAL bigShiftLeft (VM * vm , VAL x , VAL y ) {
135
129
BigInt * cl = allocBig (vm );
136
- mpz_mul_2exp (* big (cl ), * big (getbig (vm ,x )), GETINT (y ));
130
+ mpz_mul_2exp (* getmpz (cl ), * getmpz (getbig (vm ,x )), GETINT (y ));
137
131
return (VAL )cl ;
138
132
}
139
133
140
134
141
135
VAL bigLShiftRight (VM * vm , VAL x , VAL y ) {
142
136
BigInt * cl = allocBig (vm );
143
- mpz_fdiv_q_2exp (* big (cl ), * big (getbig (vm ,x )), GETINT (y ));
137
+ mpz_fdiv_q_2exp (* getmpz (cl ), * getmpz (getbig (vm ,x )), GETINT (y ));
144
138
return (VAL )cl ;
145
139
}
146
140
147
141
VAL bigAShiftRight (VM * vm , VAL x , VAL y ) {
148
142
BigInt * cl = allocBig (vm );
149
- mpz_fdiv_q_2exp (* big (cl ), * big (getbig (vm ,x )), GETINT (y ));
143
+ mpz_fdiv_q_2exp (* getmpz (cl ), * getmpz (getbig (vm ,x )), GETINT (y ));
150
144
return (VAL )cl ;
151
145
}
152
146
@@ -266,29 +260,29 @@ VAL idris_bigMod(VM* vm, VAL x, VAL y) {
266
260
int bigEqConst (VAL x , int c ) {
267
261
if (ISINT (x )) { return (GETINT (x ) == c ); }
268
262
else {
269
- int rv = mpz_cmp_si (* BIG (x ), c );
263
+ int rv = mpz_cmp_si (GETMPZ (x ), c );
270
264
return (rv == 0 );
271
265
}
272
266
}
273
267
274
268
VAL bigEq (VM * vm , VAL x , VAL y ) {
275
- return MKINT ((i_int )(mpz_cmp (* BIG (x ), * BIG (y )) == 0 ));
269
+ return MKINT ((i_int )(mpz_cmp (GETMPZ (x ), GETMPZ (y )) == 0 ));
276
270
}
277
271
278
272
VAL bigLt (VM * vm , VAL x , VAL y ) {
279
- return MKINT ((i_int )(mpz_cmp (* BIG (x ), * BIG (y )) < 0 ));
273
+ return MKINT ((i_int )(mpz_cmp (GETMPZ (x ), GETMPZ (y )) < 0 ));
280
274
}
281
275
282
276
VAL bigGt (VM * vm , VAL x , VAL y ) {
283
- return MKINT ((i_int )(mpz_cmp (* BIG (x ), * BIG (y )) > 0 ));
277
+ return MKINT ((i_int )(mpz_cmp (GETMPZ (x ), GETMPZ (y )) > 0 ));
284
278
}
285
279
286
280
VAL bigLe (VM * vm , VAL x , VAL y ) {
287
- return MKINT ((i_int )(mpz_cmp (* BIG (x ), * BIG (y )) <= 0 ));
281
+ return MKINT ((i_int )(mpz_cmp (GETMPZ (x ), GETMPZ (y )) <= 0 ));
288
282
}
289
283
290
284
VAL bigGe (VM * vm , VAL x , VAL y ) {
291
- return MKINT ((i_int )(mpz_cmp (* BIG (x ), * BIG (y )) >= 0 ));
285
+ return MKINT ((i_int )(mpz_cmp (GETMPZ (x ), GETMPZ (y )) >= 0 ));
292
286
}
293
287
294
288
VAL idris_bigEq (VM * vm , VAL x , VAL y ) {
@@ -340,22 +334,22 @@ VAL idris_castBigInt(VM* vm, VAL i) {
340
334
if (ISINT (i )) {
341
335
return i ;
342
336
} else {
343
- return MKINT ((i_int )(mpz_get_ui (* BIG (i ))));
337
+ return MKINT ((i_int )(mpz_get_ui (GETMPZ (i ))));
344
338
}
345
339
}
346
340
347
341
VAL idris_castBigFloat (VM * vm , VAL i ) {
348
342
if (ISINT (i )) {
349
343
return MKFLOAT (vm , GETINT (i ));
350
344
} else {
351
- return MKFLOAT (vm , mpz_get_d (* BIG (i )));
345
+ return MKFLOAT (vm , mpz_get_d (GETMPZ (i )));
352
346
}
353
347
}
354
348
355
349
VAL idris_castFloatBig (VM * vm , VAL f ) {
356
350
double val = GETFLOAT (f );
357
351
BigInt * cl = allocBig (vm );
358
- mpz_init_set_d (* big (cl ), val );
352
+ mpz_init_set_d (* getmpz (cl ), val );
359
353
return (VAL )cl ;
360
354
}
361
355
@@ -364,7 +358,7 @@ VAL idris_castStrBig(VM* vm, VAL i) {
364
358
}
365
359
366
360
VAL idris_castBigStr (VM * vm , VAL i ) {
367
- char * str = mpz_get_str (NULL , 10 , * big (getbig (vm , i )));
361
+ char * str = mpz_get_str (NULL , 10 , * getmpz (getbig (vm , i )));
368
362
return MKSTR (vm , str );
369
363
}
370
364
0 commit comments