QtBigInt
Loading...
Searching...
No Matches
mini-gmp.h
Go to the documentation of this file.
1/* mini-gmp, a minimalistic implementation of a GNU GMP subset.
2
3Copyright 2011-2015 Free Software Foundation, Inc.
4
5This file is part of the GNU MP Library.
6
7The GNU MP Library is free software; you can redistribute it and/or modify
8it under the terms of either:
9
10 * the GNU Lesser General Public License as published by the Free
11 Software Foundation; either version 3 of the License, or (at your
12 option) any later version.
13
14or
15
16 * the GNU General Public License as published by the Free Software
17 Foundation; either version 2 of the License, or (at your option) any
18 later version.
19
20or both in parallel, as here.
21
22The GNU MP Library is distributed in the hope that it will be useful, but
23WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
24or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
25for more details.
26
27You should have received copies of the GNU General Public License and the
28GNU Lesser General Public License along with the GNU MP Library. If not,
29see https://www.gnu.org/licenses/. */
30
31/* About mini-gmp: This is a minimal implementation of a subset of the
32 GMP interface. It is intended for inclusion into applications which
33 have modest bignums needs, as a fallback when the real GMP library
34 is not installed.
35
36 This file defines the public interface. */
37
38#ifndef MINI_GMP
39#define MINI_GMP
40
41/* For size_t */
42#include <stddef.h>
43
44#if defined (__cplusplus)
45extern "C" {
46#endif
47
48#define UN_USED(X) (void)X
49
50void mp_set_memory_functions (void *(*) (size_t),
51 void *(*) (void *, size_t, size_t),
52 void (*) (void *, size_t));
53
54void mp_get_memory_functions (void *(**) (size_t),
55 void *(**) (void *, size_t, size_t),
56 void (**) (void *, size_t));
57
58typedef unsigned long long uIntMpz;
59typedef long long intMpz;
60
64
66typedef const mp_limb_t *mp_srcptr;
67
68typedef struct
69{
70 int _mp_alloc; /* Number of *limbs* allocated and pointed
71 to by the _mp_d field. */
72 int _mp_size; /* abs(_mp_size) is the number of limbs the
73 last field points to. If _mp_size is
74 negative this is a negative number. */
75 mp_limb_t *_mp_d; /* Pointer to the limbs. */
77
79
81typedef const __mpz_struct *mpz_srcptr;
82
83extern const int mp_bits_per_limb;
84
88
91
95
99
103
109
112
115
118
120
122#define mpn_invert_limb(x) mpn_invert_3by2 ((x), 0)
123
124size_t mpn_get_str (unsigned char *, int, mp_ptr, mp_size_t);
125mp_size_t mpn_set_str (mp_ptr, const unsigned char *, size_t, int);
126
127void mpz_init (mpz_t);
129void mpz_clear (mpz_t);
130
131#define mpz_odd_p(z) (((z)->_mp_size != 0) & (int) (z)->_mp_d[0])
132#define mpz_even_p(z) (! mpz_odd_p (z))
133
134int mpz_sgn (const mpz_t);
135int mpz_cmp_si (const mpz_t, intMpz);
136int mpz_cmp_ui (const mpz_t, uIntMpz);
137int mpz_cmp (const mpz_t, const mpz_t);
138int mpz_cmpabs_ui (const mpz_t, uIntMpz);
139int mpz_cmpabs (const mpz_t, const mpz_t);
140int mpz_cmp_d (const mpz_t, double);
141int mpz_cmpabs_d (const mpz_t, double);
142
143void mpz_abs (mpz_t, const mpz_t);
144void mpz_neg (mpz_t, const mpz_t);
145void mpz_swap (mpz_t, mpz_t);
146
147void mpz_add_ui (mpz_t, const mpz_t, uIntMpz);
148void mpz_add (mpz_t, const mpz_t, const mpz_t);
149void mpz_sub_ui (mpz_t, const mpz_t, uIntMpz);
150void mpz_ui_sub (mpz_t, uIntMpz, const mpz_t);
151void mpz_sub (mpz_t, const mpz_t, const mpz_t);
152
153void mpz_mul_si (mpz_t, const mpz_t, intMpz);
154void mpz_mul_ui (mpz_t, const mpz_t, uIntMpz);
155void mpz_mul (mpz_t, const mpz_t, const mpz_t);
156void mpz_mul_2exp (mpz_t, const mpz_t, mp_bitcnt_t);
157void mpz_addmul_ui (mpz_t, const mpz_t, uIntMpz);
158void mpz_addmul (mpz_t, const mpz_t, const mpz_t);
159void mpz_submul_ui (mpz_t, const mpz_t, uIntMpz);
160void mpz_submul (mpz_t, const mpz_t, const mpz_t);
161
162void mpz_cdiv_qr (mpz_t, mpz_t, const mpz_t, const mpz_t);
163void mpz_fdiv_qr (mpz_t, mpz_t, const mpz_t, const mpz_t);
164void mpz_tdiv_qr (mpz_t, mpz_t, const mpz_t, const mpz_t);
165void mpz_cdiv_q (mpz_t, const mpz_t, const mpz_t);
166void mpz_fdiv_q (mpz_t, const mpz_t, const mpz_t);
167void mpz_tdiv_q (mpz_t, const mpz_t, const mpz_t);
168void mpz_cdiv_r (mpz_t, const mpz_t, const mpz_t);
169void mpz_fdiv_r (mpz_t, const mpz_t, const mpz_t);
170void mpz_tdiv_r (mpz_t, const mpz_t, const mpz_t);
171
178
179void mpz_mod (mpz_t, const mpz_t, const mpz_t);
180
181void mpz_divexact (mpz_t, const mpz_t, const mpz_t);
182
183int mpz_divisible_p (const mpz_t, const mpz_t);
184int mpz_congruent_p (const mpz_t, const mpz_t, const mpz_t);
185
198
200
201void mpz_divexact_ui (mpz_t, const mpz_t, uIntMpz);
202
203int mpz_divisible_ui_p (const mpz_t, uIntMpz);
204
206void mpz_gcd (mpz_t, const mpz_t, const mpz_t);
207void mpz_gcdext (mpz_t, mpz_t, mpz_t, const mpz_t, const mpz_t);
208void mpz_lcm_ui (mpz_t, const mpz_t, uIntMpz);
209void mpz_lcm (mpz_t, const mpz_t, const mpz_t);
210int mpz_invert (mpz_t, const mpz_t, const mpz_t);
211
212void mpz_sqrtrem (mpz_t, mpz_t, const mpz_t);
213void mpz_sqrt (mpz_t, const mpz_t);
214int mpz_perfect_square_p (const mpz_t);
215
216void mpz_pow_ui (mpz_t, const mpz_t, uIntMpz);
218void mpz_powm (mpz_t, const mpz_t, const mpz_t, const mpz_t);
219void mpz_powm_ui (mpz_t, const mpz_t, uIntMpz, const mpz_t);
220
221void mpz_rootrem (mpz_t, mpz_t, const mpz_t, uIntMpz);
222int mpz_root (mpz_t, const mpz_t, uIntMpz);
223
224void mpz_fac_ui (mpz_t, uIntMpz);
226
227int mpz_probab_prime_p (const mpz_t, int);
228
229int mpz_tstbit (const mpz_t, mp_bitcnt_t);
233
234void mpz_com (mpz_t, const mpz_t);
235void mpz_and (mpz_t, const mpz_t, const mpz_t);
236void mpz_ior (mpz_t, const mpz_t, const mpz_t);
237void mpz_xor (mpz_t, const mpz_t, const mpz_t);
238
240mp_bitcnt_t mpz_hamdist (const mpz_t, const mpz_t);
243
244int mpz_fits_slong_p (const mpz_t);
245int mpz_fits_ulong_p (const mpz_t);
246intMpz mpz_get_si (const mpz_t);
247uIntMpz mpz_get_ui (const mpz_t);
248double mpz_get_d (const mpz_t);
249size_t mpz_size (const mpz_t);
251
258
259#define MPZ_ROINIT_N(xp, xs) {{0, (xs),(xp) }}
260
261void mpz_set_si (mpz_t, intMpz);
262void mpz_set_ui (mpz_t, uIntMpz);
263void mpz_set (mpz_t, const mpz_t);
264void mpz_set_d (mpz_t, double);
265
268void mpz_init_set (mpz_t, const mpz_t);
269void mpz_init_set_d (mpz_t, double);
270
271size_t mpz_sizeinbase (const mpz_t, int);
272char *mpz_get_str (char *, int, const mpz_t);
273int mpz_set_str (mpz_t, const char *, int);
274int mpz_init_set_str (mpz_t, const char *, int);
275
276/* This long list taken from gmp.h. */
277/* For reference, "defined(EOF)" cannot be used here. In g++ 2.95.4,
278 <iostream> defines EOF but not FILE. */
279#if defined (FILE) \
280 || defined (H_STDIO) \
281 || defined (_H_STDIO) /* AIX */ \
282 || defined (_STDIO_H) /* glibc, Sun, SCO */ \
283 || defined (_STDIO_H_) /* BSD, OSF */ \
284 || defined (__STDIO_H) /* Borland */ \
285 || defined (__STDIO_H__) /* IRIX */ \
286 || defined (_STDIO_INCLUDED) /* HPUX */ \
287 || defined (__dj_include_stdio_h_) /* DJGPP */ \
288 || defined (_FILE_DEFINED) /* Microsoft */ \
289 || defined (__STDIO__) /* Apple MPW MrC */ \
290 || defined (_MSL_STDIO_H) /* Metrowerks */ \
291 || defined (_STDIO_H_INCLUDED) /* QNX4 */ \
292 || defined (_ISO_STDIO_ISO_H) /* Sun C++ */ \
293 || defined (__STDIO_LOADED) /* VMS */
294size_t mpz_out_str (FILE *, int, const mpz_t);
295#endif
296
297void mpz_import (mpz_t, size_t, int, size_t, int, size_t, const void *);
298void *mpz_export (void *, size_t *, int, size_t, int, size_t, const mpz_t);
299
300#if defined (__cplusplus)
301}
302#endif
303#endif /* MINI_GMP */
size_t mpz_out_str(FILE *stream, int base, const mpz_t x)
Definition mini-gmp.c:4238
size_t mpz_size(const mpz_t)
Definition mini-gmp.c:1579
mp_bitcnt_t mpn_popcount(mp_srcptr, mp_size_t)
Definition mini-gmp.c:3865
void mpn_copyi(mp_ptr, mp_srcptr, mp_size_t)
Definition mini-gmp.c:344
void mpz_cdiv_q(mpz_t, const mpz_t, const mpz_t)
Definition mini-gmp.c:2305
void mpz_ui_sub(mpz_t, uIntMpz, const mpz_t)
Definition mini-gmp.c:1937
int mpz_cmp_si(const mpz_t, intMpz)
Definition mini-gmp.c:1786
void mpz_divexact(mpz_t, const mpz_t, const mpz_t)
Definition mini-gmp.c:2507
int mpz_cmpabs(const mpz_t, const mpz_t)
Definition mini-gmp.c:1837
int mpz_init_set_str(mpz_t, const char *, int)
Definition mini-gmp.c:4231
uIntMpz mp_limb_t
Definition mini-gmp.h:61
mp_limb_t * mp_ptr
Definition mini-gmp.h:65
uIntMpz mpz_cdiv_ui(const mpz_t, uIntMpz)
Definition mini-gmp.c:2645
const __mpz_struct * mpz_srcptr
Definition mini-gmp.h:81
void mpz_sqrt(mpz_t, const mpz_t)
Definition mini-gmp.c:3300
void mpz_divexact_ui(mpz_t, const mpz_t, uIntMpz)
Definition mini-gmp.c:2669
void mpz_rootrem(mpz_t, mpz_t, const mpz_t, uIntMpz)
Definition mini-gmp.c:3219
mp_bitcnt_t mpz_popcount(const mpz_t)
Definition mini-gmp.c:3877
void mpz_init_set_d(mpz_t, double)
Definition mini-gmp.c:1689
int mpz_divisible_ui_p(const mpz_t, uIntMpz)
Definition mini-gmp.c:2675
uIntMpz mpz_cdiv_r_ui(mpz_t, const mpz_t, uIntMpz)
Definition mini-gmp.c:2629
mp_bitcnt_t mpz_hamdist(const mpz_t, const mpz_t)
Definition mini-gmp.c:3890
mp_limb_t mpn_add(mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t)
Definition mini-gmp.c:438
void mpz_abs(mpz_t, const mpz_t)
Definition mini-gmp.c:1844
void mpz_fdiv_q_2exp(mpz_t, const mpz_t, mp_bitcnt_t)
Definition mini-gmp.c:2477
unsigned long long uIntMpz
Definition mini-gmp.h:58
uIntMpz mpz_tdiv_ui(const mpz_t, uIntMpz)
Definition mini-gmp.c:2657
int mpz_tstbit(const mpz_t, mp_bitcnt_t)
Definition mini-gmp.c:3499
void mpz_gcdext(mpz_t, mpz_t, mpz_t, const mpz_t, const mpz_t)
Definition mini-gmp.c:2825
void mpz_add(mpz_t, const mpz_t, const mpz_t)
Definition mini-gmp.c:1993
void * mpz_export(void *, size_t *, int, size_t, int, size_t, const mpz_t)
Definition mini-gmp.c:4329
void mpz_cdiv_q_2exp(mpz_t, const mpz_t, mp_bitcnt_t)
Definition mini-gmp.c:2471
void mpz_set_d(mpz_t, double)
Definition mini-gmp.c:1638
intMpz mp_size_t
Definition mini-gmp.h:62
uIntMpz mpz_fdiv_q_ui(mpz_t, const mpz_t, uIntMpz)
Definition mini-gmp.c:2617
uIntMpz mpz_cdiv_q_ui(mpz_t, const mpz_t, uIntMpz)
Definition mini-gmp.c:2611
int mpn_zero_p(mp_srcptr, mp_size_t)
Definition mini-gmp.c:387
void mpz_addmul_ui(mpz_t, const mpz_t, uIntMpz)
Definition mini-gmp.c:2130
int mpn_cmp(mp_srcptr, mp_srcptr, mp_size_t)
Definition mini-gmp.c:359
void mpz_setbit(mpz_t, mp_bitcnt_t)
Definition mini-gmp.c:3594
void mpz_init(mpz_t)
Definition mini-gmp.c:1425
mp_bitcnt_t mpz_scan0(const mpz_t, mp_bitcnt_t)
Definition mini-gmp.c:3977
uIntMpz mpz_tdiv_qr_ui(mpz_t, mpz_t, const mpz_t, uIntMpz)
Definition mini-gmp.c:2605
mp_bitcnt_t mpn_scan0(mp_srcptr, mp_bitcnt_t)
Definition mini-gmp.c:700
double mpz_get_d(const mpz_t)
Definition mini-gmp.c:1696
mp_bitcnt_t mpn_scan1(mp_srcptr, mp_bitcnt_t)
Definition mini-gmp.c:690
void mpz_tdiv_q_2exp(mpz_t, const mpz_t, mp_bitcnt_t)
Definition mini-gmp.c:2483
int mpz_fits_ulong_p(const mpz_t)
Definition mini-gmp.c:1555
mp_limb_t mpn_lshift(mp_ptr, mp_srcptr, mp_size_t, unsigned int)
Definition mini-gmp.c:613
mp_limb_t mpz_getlimbn(const mpz_t, mp_size_t)
Definition mini-gmp.c:1585
void mpz_submul_ui(mpz_t, const mpz_t, uIntMpz)
Definition mini-gmp.c:2140
void mpz_clear(mpz_t)
Definition mini-gmp.c:1450
int mpz_cmpabs_ui(const mpz_t, uIntMpz)
Definition mini-gmp.c:1828
mp_limb_t mpn_rshift(mp_ptr, mp_srcptr, mp_size_t, unsigned int)
Definition mini-gmp.c:643
mp_ptr mpz_limbs_write(mpz_t, mp_size_t)
Definition mini-gmp.c:1613
mp_size_t mpn_set_str(mp_ptr, const unsigned char *, size_t, int)
Definition mini-gmp.c:1403
mp_limb_t mpn_invert_3by2(mp_limb_t, mp_limb_t)
Definition mini-gmp.c:739
void mp_set_memory_functions(void *(*)(size_t), void *(*)(void *, size_t, size_t), void(*)(void *, size_t))
void mpz_addmul(mpz_t, const mpz_t, const mpz_t)
Definition mini-gmp.c:2150
mp_limb_t mpn_neg(mp_ptr, mp_srcptr, mp_size_t)
Definition mini-gmp.c:717
void mpz_fdiv_r(mpz_t, const mpz_t, const mpz_t)
Definition mini-gmp.c:2329
void mpz_add_ui(mpz_t, const mpz_t, uIntMpz)
Definition mini-gmp.c:1919
void mpz_tdiv_r_2exp(mpz_t, const mpz_t, mp_bitcnt_t)
Definition mini-gmp.c:2501
void mpz_cdiv_r_2exp(mpz_t, const mpz_t, mp_bitcnt_t)
Definition mini-gmp.c:2489
void mpz_tdiv_qr(mpz_t, mpz_t, const mpz_t, const mpz_t)
Definition mini-gmp.c:2299
void mpz_and(mpz_t, const mpz_t, const mpz_t)
Definition mini-gmp.c:3634
uIntMpz mpz_tdiv_q_ui(mpz_t, const mpz_t, uIntMpz)
Definition mini-gmp.c:2623
void mpz_lcm(mpz_t, const mpz_t, const mpz_t)
Definition mini-gmp.c:3007
mp_srcptr mpz_limbs_read(mpz_srcptr)
Definition mini-gmp.c:1600
void mpz_tdiv_r(mpz_t, const mpz_t, const mpz_t)
Definition mini-gmp.c:2335
intMpz mpz_get_si(const mpz_t)
Definition mini-gmp.c:1563
void mpz_realloc2(mpz_t, mp_bitcnt_t)
Definition mini-gmp.c:1594
uIntMpz mpz_fdiv_ui(const mpz_t, uIntMpz)
Definition mini-gmp.c:2651
void mpz_limbs_finish(mpz_t, mp_size_t)
Definition mini-gmp.c:1619
__mpz_struct mpz_t[1]
Definition mini-gmp.h:78
int mpz_cmp_ui(const mpz_t, uIntMpz)
Definition mini-gmp.c:1801
void mpz_fdiv_qr(mpz_t, mpz_t, const mpz_t, const mpz_t)
Definition mini-gmp.c:2293
void mpz_fdiv_q(mpz_t, const mpz_t, const mpz_t)
Definition mini-gmp.c:2311
void mpz_mul_ui(mpz_t, const mpz_t, uIntMpz)
Definition mini-gmp.c:2033
void mpz_ui_pow_ui(mpz_t, uIntMpz, uIntMpz)
Definition mini-gmp.c:3099
uIntMpz mpz_gcd_ui(mpz_t, const mpz_t, uIntMpz)
Definition mini-gmp.c:2726
void mpz_fac_ui(mpz_t, uIntMpz)
Definition mini-gmp.c:3350
const mp_limb_t * mp_srcptr
Definition mini-gmp.h:66
mp_ptr mpz_limbs_modify(mpz_t, mp_size_t)
Definition mini-gmp.c:1606
int mpz_cmpabs_d(const mpz_t, double)
Definition mini-gmp.c:1718
uIntMpz mpz_mod_ui(mpz_t, const mpz_t, uIntMpz)
Definition mini-gmp.c:2663
void mpz_lcm_ui(mpz_t, const mpz_t, uIntMpz)
Definition mini-gmp.c:3028
mp_limb_t mpn_sub_1(mp_ptr, mp_srcptr, mp_size_t, mp_limb_t)
Definition mini-gmp.c:451
void mpz_cdiv_qr(mpz_t, mpz_t, const mpz_t, const mpz_t)
Definition mini-gmp.c:2287
mp_size_t mpn_sqrtrem(mp_ptr, mp_ptr, mp_srcptr, mp_size_t)
Definition mini-gmp.c:3325
void mpz_gcd(mpz_t, const mpz_t, const mpz_t)
Definition mini-gmp.c:2762
void mpz_sub(mpz_t, const mpz_t, const mpz_t)
Definition mini-gmp.c:2006
mp_limb_t mpn_sub(mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t)
Definition mini-gmp.c:490
void mpz_swap(mpz_t, mpz_t)
Definition mini-gmp.c:1858
void mpz_init_set_ui(mpz_t, uIntMpz)
Definition mini-gmp.c:1528
uIntMpz mpz_cdiv_qr_ui(mpz_t, mpz_t, const mpz_t, uIntMpz)
Definition mini-gmp.c:2593
void mpz_cdiv_r(mpz_t, const mpz_t, const mpz_t)
Definition mini-gmp.c:2323
long long intMpz
Definition mini-gmp.h:59
uIntMpz mpz_fdiv_qr_ui(mpz_t, mpz_t, const mpz_t, uIntMpz)
Definition mini-gmp.c:2599
void mpz_submul(mpz_t, const mpz_t, const mpz_t)
Definition mini-gmp.c:2160
int mpn_perfect_square_p(mp_srcptr, mp_size_t)
Definition mini-gmp.c:3315
void mpz_fdiv_r_2exp(mpz_t, const mpz_t, mp_bitcnt_t)
Definition mini-gmp.c:2495
__mpz_struct * mpz_ptr
Definition mini-gmp.h:80
void mpn_mul_n(mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)
Definition mini-gmp.c:601
void mp_get_memory_functions(void *(**)(size_t), void *(**)(void *, size_t, size_t), void(**)(void *, size_t))
mp_limb_t mpn_add_n(mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)
Definition mini-gmp.c:419
int mpz_cmp(const mpz_t, const mpz_t)
Definition mini-gmp.c:1814
void mpz_init_set_si(mpz_t, intMpz)
Definition mini-gmp.c:1521
void mpz_powm(mpz_t, const mpz_t, const mpz_t, const mpz_t)
Definition mini-gmp.c:3106
size_t mpn_get_str(unsigned char *, int, mp_ptr, mp_size_t)
Definition mini-gmp.c:1312
void mpz_init2(mpz_t, mp_bitcnt_t)
Definition mini-gmp.c:1437
int mpz_sgn(const mpz_t)
Definition mini-gmp.c:1780
void mpz_mul(mpz_t, const mpz_t, const mpz_t)
Definition mini-gmp.c:2058
mp_limb_t mpn_mul_1(mp_ptr, mp_srcptr, mp_size_t, mp_limb_t)
Definition mini-gmp.c:503
void mpz_ior(mpz_t, const mpz_t, const mpz_t)
Definition mini-gmp.c:3706
int mpz_perfect_square_p(const mpz_t)
Definition mini-gmp.c:3306
void mpz_mul_2exp(mpz_t, const mpz_t, mp_bitcnt_t)
Definition mini-gmp.c:2096
void mpz_sqrtrem(mpz_t, mpz_t, const mpz_t)
Definition mini-gmp.c:3294
char * mpz_get_str(char *, int, const mpz_t)
Definition mini-gmp.c:4062
mp_limb_t mpn_add_1(mp_ptr, mp_srcptr, mp_size_t, mp_limb_t)
Definition mini-gmp.c:400
int mpz_divisible_p(const mpz_t, const mpz_t)
Definition mini-gmp.c:2513
void mpz_com(mpz_t, const mpz_t)
Definition mini-gmp.c:3627
uIntMpz mpz_fdiv_r_ui(mpz_t, const mpz_t, uIntMpz)
Definition mini-gmp.c:2634
void mpn_zero(mp_ptr, mp_size_t)
Definition mini-gmp.c:393
int mpz_cmp_d(const mpz_t, double)
Definition mini-gmp.c:1759
void mpz_clrbit(mpz_t, mp_bitcnt_t)
Definition mini-gmp.c:3606
int mpz_fits_slong_p(const mpz_t)
Definition mini-gmp.c:1542
void mpz_mul_si(mpz_t, const mpz_t, intMpz)
Definition mini-gmp.c:2021
uIntMpz mp_bitcnt_t
Definition mini-gmp.h:63
int mpz_probab_prime_p(const mpz_t, int)
Definition mini-gmp.c:3413
int mpz_invert(mpz_t, const mpz_t, const mpz_t)
Definition mini-gmp.c:3043
void mpz_neg(mpz_t, const mpz_t)
Definition mini-gmp.c:1851
uIntMpz mpz_get_ui(const mpz_t)
Definition mini-gmp.c:1573
void mpz_set_si(mpz_t, intMpz)
Definition mini-gmp.c:1480
const int mp_bits_per_limb
Definition mini-gmp.c:241
size_t mpz_sizeinbase(const mpz_t, int)
Definition mini-gmp.c:4009
void mpz_tdiv_q(mpz_t, const mpz_t, const mpz_t)
Definition mini-gmp.c:2317
void mpz_mod(mpz_t, const mpz_t, const mpz_t)
Definition mini-gmp.c:2341
void mpz_import(mpz_t, size_t, int, size_t, int, size_t, const void *)
Definition mini-gmp.c:4261
int mpz_set_str(mpz_t, const char *, int)
Definition mini-gmp.c:4127
mp_limb_t mpn_mul(mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t)
Definition mini-gmp.c:578
void mpn_com(mp_ptr, mp_srcptr, mp_size_t)
Definition mini-gmp.c:710
void mpz_xor(mpz_t, const mpz_t, const mpz_t)
Definition mini-gmp.c:3779
mp_limb_t mpn_submul_1(mp_ptr, mp_srcptr, mp_size_t, mp_limb_t)
Definition mini-gmp.c:552
void mpz_powm_ui(mpz_t, const mpz_t, uIntMpz, const mpz_t)
Definition mini-gmp.c:3211
mp_limb_t mpn_sub_n(mp_ptr, mp_srcptr, mp_srcptr, mp_size_t)
Definition mini-gmp.c:472
void mpz_combit(mpz_t, mp_bitcnt_t)
Definition mini-gmp.c:3618
void mpz_init_set(mpz_t, const mpz_t)
Definition mini-gmp.c:1535
uIntMpz mpz_tdiv_r_ui(mpz_t, const mpz_t, uIntMpz)
Definition mini-gmp.c:2639
mp_bitcnt_t mpz_scan1(const mpz_t, mp_bitcnt_t)
Definition mini-gmp.c:3941
void mpz_pow_ui(mpz_t, const mpz_t, uIntMpz)
Definition mini-gmp.c:3078
void mpz_set_ui(mpz_t, uIntMpz)
Definition mini-gmp.c:1492
void mpz_bin_uiui(mpz_t, uIntMpz, uIntMpz)
Definition mini-gmp.c:3358
mpz_srcptr mpz_roinit_n(mpz_t, mp_srcptr, mp_size_t)
Definition mini-gmp.c:1627
void mpz_set(mpz_t, const mpz_t)
Definition mini-gmp.c:1504
mp_limb_t mpn_addmul_1(mp_ptr, mp_srcptr, mp_size_t, mp_limb_t)
Definition mini-gmp.c:526
void mpn_copyd(mp_ptr, mp_srcptr, mp_size_t)
Definition mini-gmp.c:352
int mpz_root(mpz_t, const mpz_t, uIntMpz)
Definition mini-gmp.c:3279
void mpn_sqr(mp_ptr, mp_srcptr, mp_size_t)
Definition mini-gmp.c:607
void mpz_sub_ui(mpz_t, const mpz_t, uIntMpz)
Definition mini-gmp.c:1928
int mpz_congruent_p(const mpz_t, const mpz_t, const mpz_t)
Definition mini-gmp.c:2519
int _mp_alloc
Definition mini-gmp.h:70
mp_limb_t * _mp_d
Definition mini-gmp.h:75