1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
|
#ifndef BH_BIGINT_H
#define BH_BIGINT_H
#include "bh.h"
typedef struct bh_bigint_s bh_bigint_t;
bh_bigint_t *bh_bigint_new(void);
void bh_bigint_free(bh_bigint_t *bigint);
int bh_bigint_block(void);
int bh_bigint_clear(bh_bigint_t *bigint);
int bh_bigint_set(bh_bigint_t *to,
bh_bigint_t *from);
int bh_bigint_set_int(bh_bigint_t *to,
int from);
int bh_bigint_set_uint(bh_bigint_t *to,
unsigned int from);
int bh_bigint_get_int(bh_bigint_t *bigint);
unsigned int bh_bigint_get_uint(bh_bigint_t *bigint);
int bh_bigint_set_int8(bh_bigint_t *to,
bh_int8_t from);
int bh_bigint_set_uint8(bh_bigint_t *to,
bh_uint8_t from);
bh_int8_t bh_bigint_get_int8(bh_bigint_t *bigint);
bh_uint8_t bh_bigint_get_uint8(bh_bigint_t *bigint);
int bh_bigint_set_int16(bh_bigint_t *to,
bh_int16_t from);
int bh_bigint_set_uint16(bh_bigint_t *to,
bh_uint16_t from);
bh_int16_t bh_bigint_get_int16(bh_bigint_t *bigint);
bh_uint16_t bh_bigint_get_uint16(bh_bigint_t *bigint);
int bh_bigint_set_int32(bh_bigint_t *to,
bh_int32_t from);
int bh_bigint_set_uint32(bh_bigint_t *to,
bh_uint32_t from);
bh_int32_t bh_bigint_get_int32(bh_bigint_t *bigint);
bh_uint32_t bh_bigint_get_uint32(bh_bigint_t *bigint);
int bh_bigint_set_int64(bh_bigint_t *to,
bh_int64_t from);
int bh_bigint_set_uint64(bh_bigint_t *to,
bh_uint64_t from);
bh_int64_t bh_bigint_get_int64(bh_bigint_t *bigint);
bh_uint64_t bh_bigint_get_uint64(bh_bigint_t *bigint);
size_t bh_bigint_capacity(bh_bigint_t *bigint);
size_t bh_bigint_length(bh_bigint_t *bigint);
int bh_bigint_reserve(bh_bigint_t *bigint,
size_t size);
int bh_bigint_add(bh_bigint_t *to,
bh_bigint_t *left,
bh_bigint_t *right);
int bh_bigint_sub(bh_bigint_t *to,
bh_bigint_t *left,
bh_bigint_t *right);
int bh_bigint_mul(bh_bigint_t *to,
bh_bigint_t *left,
bh_bigint_t *right);
int bh_bigint_mul_digit(bh_bigint_t *to,
bh_bigint_t *left,
bh_int16_t right);
int bh_bigint_pow(bh_bigint_t *to,
bh_bigint_t *from,
bh_uint32_t power);
int bh_bigint_powm(bh_bigint_t *to,
bh_bigint_t *left,
bh_bigint_t *right,
bh_bigint_t *mod);
int bh_bigint_divmod(bh_bigint_t *quotient,
bh_bigint_t *remainder,
bh_bigint_t *left,
bh_bigint_t *right);
int bh_bigint_div(bh_bigint_t *to,
bh_bigint_t *left,
bh_bigint_t *right);
int bh_bigint_mod(bh_bigint_t *to,
bh_bigint_t *left,
bh_bigint_t *right);
int bh_bigint_lsh(bh_bigint_t *to,
bh_bigint_t *from,
bh_uint32_t shift);
int bh_bigint_rsh(bh_bigint_t *to,
bh_bigint_t *from,
bh_uint32_t shift);
int bh_bigint_or(bh_bigint_t *to,
bh_bigint_t *left,
bh_bigint_t *right);
int bh_bigint_and(bh_bigint_t *to,
bh_bigint_t *left,
bh_bigint_t *right);
int bh_bigint_xor(bh_bigint_t *to,
bh_bigint_t *left,
bh_bigint_t *right);
int bh_bigint_negate(bh_bigint_t *to,
bh_bigint_t *from);
int bh_bigint_equal(bh_bigint_t *left,
bh_bigint_t *right);
int bh_bigint_equal_mod(bh_bigint_t *left,
bh_bigint_t *right);
int bh_bigint_is_negative(bh_bigint_t *bigint);
int bh_bigint_is_zero(bh_bigint_t *bigint);
int bh_bigint_is_error(bh_bigint_t *bigint);
size_t bh_bigint_log2(bh_bigint_t *bigint);
#endif /* BH_BIGINT_H */
|