Let us walk on the 3-isogeny graph
Loading...
Searching...
No Matches
fp-karatsuba.h File Reference
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <immintrin.h>
#include <assert.h>
#include <inttypes.h>
#include <stddef.h>
#include "../../rng.h"
#include "../../namespace.h"
#include "../fp-counters.h"
#include "../../primes.h"
Include dependency graph for fp-karatsuba.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  uintbig

Macros

#define uintbig_1   COMMON(uintbig_1)
#define fp_1   COMMON(fp_1)
#define inv_min_p_mod_r   COMMON(inv_min_p_mod_r)
#define p_minus_2   COMMON(p_minus_2)
#define p   COMMON(p)
#define r_squared_mod_p   COMMON(r_squared_mod_p)
#define p_minus_2   COMMON(p_minus_2)
#define inv_min_p_mod_r   COMMON(inv_min_p_mod_r)
#define uintbig_bit   COMMON(uintbig_bit)
#define uintbig_add   COMMON(uintbig_add)
#define uintbig_sub   COMMON(uintbig_sub)
#define p   COMMON(p)
#define fp_1   COMMON(fp_1)
#define fp_0   COMMON(fp_0)
#define redc_alpha   COMMON(redc_alpha)
#define fp_enc   COMMON(fp_enc)
#define fp_dec   COMMON(fp_dec)
#define fp_pow   COMMON(fp_pow)
#define fp_add_s   COMMON(fp_add_s)
#define fp_add   COMMON(fp_add)
#define fp_sub_s   COMMON(fp_sub_s)
#define fp_sub   COMMON(fp_sub)
#define fp_mul   COMMON(fp_mul)
#define fp_sqr   COMMON(fp_sqr)
#define fp_squaring   COMMON(fp_squaring)
#define fp_issquare   COMMON(fp_issquare)
#define fp_copy   COMMON(fp_copy)
#define fp_cswap   COMMON(fp_cswap)
#define fp_mont_redc_a   COMMON(fp_mont_redc_a)
#define fp_random   COMMON(fp_random)
#define fp_inv   COMMON(fp_inv)
#define UBITS   2048
#define UINTBIG_LIMBS   ((UBITS+63)/64)
#define uintbig_p   COMMON(uintbig_p)
#define uintbig_four_sqrt_p   COMMON(uintbig_four_sqrt_p)
#define uintbig_set   COMMON(uintbig_set)
#define uintbig_mul3_64   COMMON(uintbig_mul3_64)
#define fp_2   COMMON(fp_2)
#define uintbig_1_ctidh   COMMON(uintbig_1_ctidh)
#define fp_cmov   COMMON(fp_cmov)

Typedefs

typedef struct uintbig uintbig

Functions

bool uintbig_add (fp x, fp const y, fp const z)
bool uintbig_sub (fp x, fp const y, fp const z)
void fp_enc (fp a, fp const b)
void fp_dec (fp a, fp const b)
void fp_pow (fp b, const fp e, const fp a)
void fp_add_s (fp c, const fp a, const fp b)
void fp_add (fp c, const fp a, const fp b)
void fp_sub_s (fp c, const fp a, const fp b)
void fp_sub (fp c, const fp a, const fp b)
void fp_mul (fp c, const fp a, const fp b)
void fp_sqr (fp b, const fp a)
void fp_squaring (uint64_t *c, const uint64_t *a, const uint64_t *b)
bool fp_issquare (fp a)
void fp_copy (fp b, const fp a)
void fp_cswap (fp x, fp y, uint8_t c)
void fp_mont_redc_a (fp a, const uint64_t b[2 *NUMBER_OF_WORDS])
void fp_random (fp a)
void fp_inv (fp a)
long long uintbig_bit (uintbig const *x, uint64_t k)
void uintbig_set (uintbig *x, uint64_t y)
void uintbig_mul3_64 (fp *x, fp const *y, uint64_t z)
void fp_cmov (fp *a, const fp *b, uint8_t c)

Variables

const fp uintbig_1
const fp fp_1
const fp inv_min_p_mod_r
const fp p_minus_2
const fp p
const fp r_squared_mod_p
const fp fp_0
const fp redc_alpha
const uintbig uintbig_p
const fp uintbig_four_sqrt_p
const fp fp_2
const uintbig uintbig_1_ctidh

Macro Definition Documentation

◆ fp_0

#define fp_0   COMMON(fp_0)

Definition at line 59 of file fp-karatsuba.h.

◆ fp_1 [1/2]

#define fp_1   COMMON(fp_1)

Definition at line 29 of file fp-karatsuba.h.

◆ fp_1 [2/2]

#define fp_1   COMMON(fp_1)

Definition at line 29 of file fp-karatsuba.h.

◆ fp_2

#define fp_2   COMMON(fp_2)

Definition at line 407 of file fp-karatsuba.h.

◆ fp_add

#define fp_add   COMMON(fp_add)

Definition at line 77 of file fp-karatsuba.h.

◆ fp_add_s

#define fp_add_s   COMMON(fp_add_s)

Definition at line 74 of file fp-karatsuba.h.

Referenced by fp_add().

◆ fp_cmov

#define fp_cmov   COMMON(fp_cmov)

Definition at line 413 of file fp-karatsuba.h.

◆ fp_copy

#define fp_copy   COMMON(fp_copy)

Definition at line 98 of file fp-karatsuba.h.

◆ fp_cswap

#define fp_cswap   COMMON(fp_cswap)

Definition at line 101 of file fp-karatsuba.h.

◆ fp_dec

#define fp_dec   COMMON(fp_dec)

Definition at line 68 of file fp-karatsuba.h.

◆ fp_enc

#define fp_enc   COMMON(fp_enc)

Definition at line 65 of file fp-karatsuba.h.

◆ fp_inv

#define fp_inv   COMMON(fp_inv)

Definition at line 110 of file fp-karatsuba.h.

◆ fp_issquare

#define fp_issquare   COMMON(fp_issquare)

Definition at line 95 of file fp-karatsuba.h.

◆ fp_mont_redc_a

#define fp_mont_redc_a   COMMON(fp_mont_redc_a)

Definition at line 104 of file fp-karatsuba.h.

◆ fp_mul

#define fp_mul   COMMON(fp_mul)

Definition at line 86 of file fp-karatsuba.h.

◆ fp_pow

#define fp_pow   COMMON(fp_pow)

Definition at line 71 of file fp-karatsuba.h.

◆ fp_random

#define fp_random   COMMON(fp_random)

Definition at line 107 of file fp-karatsuba.h.

◆ fp_sqr

#define fp_sqr   COMMON(fp_sqr)

Definition at line 89 of file fp-karatsuba.h.

◆ fp_squaring

#define fp_squaring   COMMON(fp_squaring)

Definition at line 92 of file fp-karatsuba.h.

Referenced by fp_sqr().

◆ fp_sub

#define fp_sub   COMMON(fp_sub)

Definition at line 83 of file fp-karatsuba.h.

◆ fp_sub_s

#define fp_sub_s   COMMON(fp_sub_s)

Definition at line 80 of file fp-karatsuba.h.

Referenced by fp_sub().

◆ inv_min_p_mod_r [1/2]

#define inv_min_p_mod_r   COMMON(inv_min_p_mod_r)

Definition at line 32 of file fp-karatsuba.h.

◆ inv_min_p_mod_r [2/2]

#define inv_min_p_mod_r   COMMON(inv_min_p_mod_r)

Definition at line 32 of file fp-karatsuba.h.

◆ p [1/2]

#define p   COMMON(p)

Definition at line 36 of file fp-karatsuba.h.

◆ p [2/2]

#define p   COMMON(p)

Definition at line 36 of file fp-karatsuba.h.

◆ p_minus_2 [1/2]

#define p_minus_2   COMMON(p_minus_2)

Definition at line 34 of file fp-karatsuba.h.

◆ p_minus_2 [2/2]

#define p_minus_2   COMMON(p_minus_2)

Definition at line 34 of file fp-karatsuba.h.

◆ r_squared_mod_p

#define r_squared_mod_p   COMMON(r_squared_mod_p)

Definition at line 38 of file fp-karatsuba.h.

◆ redc_alpha

#define redc_alpha   COMMON(redc_alpha)

Definition at line 62 of file fp-karatsuba.h.

◆ UBITS

#define UBITS   2048

Definition at line 337 of file fp-karatsuba.h.

◆ uintbig_1

#define uintbig_1   COMMON(uintbig_1)

Definition at line 26 of file fp-karatsuba.h.

◆ uintbig_1_ctidh

#define uintbig_1_ctidh   COMMON(uintbig_1_ctidh)

Definition at line 410 of file fp-karatsuba.h.

◆ uintbig_add

#define uintbig_add   COMMON(uintbig_add)

Definition at line 47 of file fp-karatsuba.h.

◆ uintbig_bit

#define uintbig_bit   COMMON(uintbig_bit)

Definition at line 45 of file fp-karatsuba.h.

◆ uintbig_four_sqrt_p

#define uintbig_four_sqrt_p   COMMON(uintbig_four_sqrt_p)

Definition at line 368 of file fp-karatsuba.h.

◆ UINTBIG_LIMBS

#define UINTBIG_LIMBS   ((UBITS+63)/64)

Definition at line 353 of file fp-karatsuba.h.

◆ uintbig_mul3_64

#define uintbig_mul3_64   COMMON(uintbig_mul3_64)

Definition at line 375 of file fp-karatsuba.h.

◆ uintbig_p

#define uintbig_p   COMMON(uintbig_p)

Definition at line 362 of file fp-karatsuba.h.

◆ uintbig_set

#define uintbig_set   COMMON(uintbig_set)

Definition at line 371 of file fp-karatsuba.h.

◆ uintbig_sub

#define uintbig_sub   COMMON(uintbig_sub)

Definition at line 49 of file fp-karatsuba.h.

Typedef Documentation

◆ uintbig

typedef struct uintbig uintbig

Function Documentation

◆ fp_add()

void fp_add ( fp c,
const fp a,
const fp b )

Definition at line 864 of file fp-gmp.c.

865{
866 // (void)mpn_add_n(c, a, b, NUMBER_OF_WORDS);
867 // CNT_FP_ADD_INC();
868 // reduce_once(c);
869 (void)mpn_add_n(c, a, b, NUMBER_OF_WORDS);
870 mpn_cnd_sub_n(mpn_cmp(c, p, NUMBER_OF_WORDS) > 0, c, c, p, NUMBER_OF_WORDS);
872}
#define CNT_FP_ADD_INC()
Definition fp-counters.h:29
#define p
Definition fp-gmp.h:44
f a
Definition to_model.m:12

References a, CNT_FP_ADD_INC, fp_add_s, and p.

◆ fp_add_s()

void fp_add_s ( fp c,
const fp a,
const fp b )

References a.

◆ fp_cmov()

void fp_cmov ( fp * a,
const fp * b,
uint8_t c )

References a.

◆ fp_copy()

void fp_copy ( fp b,
const fp a )

Definition at line 856 of file fp-gmp.c.

857{
858 for (uint8_t i = 0; i < NUMBER_OF_WORDS; i++)
859 {
860 b[i] = a[i];
861 }
862}
for i

References a, and i.

◆ fp_cswap()

void fp_cswap ( fp x,
fp y,
uint8_t c )

Definition at line 840 of file fp-gmp.c.

841{
842
843 // uint64_t tmp, c64;
844
845 // c64 = (uint64_t)-c;
846 // for (int i = 0; i < NUMBER_OF_WORDS; i++)
847 // {
848 // tmp = (y[i] ^ x[i]) & c64;
849 // x[i] ^= tmp;
850 // y[i] ^= tmp;
851 // }
852
853 mpn_cnd_swap(c, x, y, NUMBER_OF_WORDS);
854}

◆ fp_dec()

void fp_dec ( fp a,
fp const b )

Definition at line 800 of file fp-gmp.c.

801{
802#ifdef MONTGOMERY
803 fp_mul(a, b, uintbig_1);
805#else
806 //(void) a;
807 //(void) b;
808 fp_copy(a, b);
809#endif
810}
#define CNT_FP_MUL_DEC()
Definition fp-counters.h:31
#define fp_mul
Definition fp-gmp.h:70
#define fp_copy
Definition fp-gmp.h:79
#define uintbig_1
Definition fp-gmp.h:26

References a, CNT_FP_MUL_DEC, fp_copy, fp_mul, and uintbig_1.

◆ fp_enc()

void fp_enc ( fp a,
fp const b )

Definition at line 789 of file fp-gmp.c.

790{
791#ifdef MONTGOMERY
794#else
795 //(void) a;
796 //(void) b;
797 fp_copy(a, b);
798#endif
799}
#define r_squared_mod_p
Definition fp-gmp.h:29

References a, CNT_FP_MUL_DEC, fp_copy, fp_mul, and r_squared_mod_p.

◆ fp_inv()

void fp_inv ( fp a)

Definition at line 12 of file fp_inv2047m1l226.c.

13{
14 fp r0;
15 fp_copy(r0, x);
16 fp r1;
17 fp_sqr(r1,r0);
18 fp r2;
19 fp_mul(r2,r0,r1);
20 fp r3;
21 fp_mul(r3,r1,r2);
22 fp r4;
23 fp_mul(r4,r1,r3);
24 fp r5;
25 fp_mul(r5,r1,r4);
26 fp r6;
27 fp_mul(r6,r1,r5);
28 fp r7;
29 fp_mul(r7,r1,r6);
30 fp r8;
31 fp_mul(r8,r1,r7);
32 fp r9;
33 fp_mul(r9,r1,r8);
34 fp r10;
35 fp_mul(r10,r1,r9);
36 fp r11;
37 fp_mul(r11,r1,r10);
38 fp r12;
39 fp_mul(r12,r1,r11);
40 fp r13;
41 fp_mul(r13,r1,r12);
42 fp r14;
43 fp_mul(r14,r1,r13);
44 fp r15;
45 fp_mul(r15,r1,r14);
46 fp r16;
47 fp_mul(r16,r1,r15);
48 fp r17;
49 fp_mul(r17,r1,r16);
50 fp r18;
51 fp_mul(r18,r1,r17);
52 fp r19;
53 fp_mul(r19,r1,r18);
54 fp r20;
55 fp_mul(r20,r1,r19);
56 fp r21;
57 fp_mul(r21,r1,r20);
58 fp r22;
59 fp_mul(r22,r1,r21);
60 fp r23;
61 fp_mul(r23,r1,r22);
62 fp r24;
63 fp_mul(r24,r1,r23);
64 fp r25;
65 fp_mul(r25,r1,r24);
66 fp r26;
67 fp_mul(r26,r1,r25);
68 fp r27;
69 fp_mul(r27,r1,r26);
70 fp r28;
71 fp_mul(r28,r1,r27);
72 fp r29;
73 fp_mul(r29,r1,r28);
74 fp r30;
75 fp_mul(r30,r1,r29);
76 fp r31;
77 fp_mul(r31,r1,r30);
78 fp r32;
79 fp_mul(r32,r1,r31);
80 fp r33;
81 fp_mul(r33,r1,r32);
82 fp r34;
83 fp_mul(r34,r1,r33);
84 fp r35;
85 fp_mul(r35,r1,r34);
86 fp r36;
87 fp_mul(r36,r1,r35);
88 fp r37;
89 fp_mul(r37,r1,r36);
90 fp r38;
91 fp_mul(r38,r1,r37);
92 fp r39;
93 fp_mul(r39,r1,r38);
94 fp r40;
95 fp_mul(r40,r1,r39);
96 fp r41;
97 fp_mul(r41,r1,r40);
98 fp r42;
99 fp_mul(r42,r1,r41);
100 fp r43;
101 fp_mul(r43,r1,r42);
102 fp r44;
103 fp_mul(r44,r1,r43);
104 fp r45;
105 fp_mul(r45,r1,r44);
106 fp r46;
107 fp_mul(r46,r1,r45);
108 fp_mul(r46,r46,r1);
109 fp r47;
110 fp_mul(r47,r1,r46);
111 fp r48;
112 fp_mul(r48,r1,r47);
113 fp r49;
114 fp_mul(r49,r1,r48);
115 fp r50;
116 fp_mul(r50,r1,r49);
117 fp r51;
118 fp_mul(r51,r1,r50);
119 fp r52;
120 fp_mul(r52,r1,r51);
121 fp r53;
122 fp_mul(r53,r1,r52);
123 fp r54;
124 fp_mul(r54,r1,r53);
125 fp r55;
126 fp_mul(r55,r1,r54);
127 fp r56;
128 fp_mul(r56,r1,r55);
129 fp r57;
130 fp_mul(r57,r1,r56);
131 fp r58;
132 fp_mul(r58,r1,r57);
133 fp r59;
134 fp_mul(r59,r1,r58);
135 fp_mul(r1,r1,r59);
136 fp r60;
137 fp_mul(r60,r12,r1);
138 fp_sq1_rep(r60,4);
139 fp_mul(r60,r60,r53);
140 fp_sq1_rep(r60,10);
141 fp_mul(r60,r60,r33);
142 fp_sq1_rep(r60,8);
143 fp_mul(r60,r60,r58);
144 fp_sq1_rep(r60,7);
145 fp_mul(r60,r60,r13);
146 fp_sq1_rep(r60,9);
147 fp_mul(r60,r60,r58);
148 fp_sq1_rep(r60,8);
149 fp_mul(r60,r60,r22);
150 fp_sq1_rep(r60,7);
151 fp_mul(r60,r60,r1);
152 fp_sq1_rep(r60,7);
153 fp_mul(r60,r60,r50);
154 fp_sq1_rep(r60,7);
155 fp_mul(r60,r60,r46);
156 fp_sq1_rep(r60,7);
157 fp_mul(r60,r60,r7);
158 fp_sq1_rep(r60,7);
159 fp_mul(r60,r60,r32);
160 fp_sq1_rep(r60,10);
161 fp_mul(r60,r60,r2);
162 fp_sq1_rep(r60,7);
163 fp_mul(r60,r60,r20);
164 fp_sq1_rep(r60,8);
165 fp_mul(r60,r60,r31);
166 fp_sq1_rep(r60,10);
167 fp_mul(r60,r60,r55);
168 fp_sq1_rep(r60,14);
169 fp_mul(r60,r60,r35);
170 fp_sq1_rep(r60,7);
171 fp_mul(r60,r60,r21);
172 fp_sq1_rep(r60,7);
173 fp_mul(r60,r60,r55);
174 fp_sq1_rep(r60,7);
175 fp_mul(r60,r60,r39);
176 fp_sq1_rep(r60,7);
177 fp_mul(r60,r60,r51);
178 fp_sq1_rep(r60,7);
179 fp_mul(r60,r60,r12);
180 fp_sq1_rep(r60,9);
181 fp_mul(r60,r60,r50);
182 fp_sq1_rep(r60,8);
183 fp_mul(r60,r60,r21);
184 fp_sq1_rep(r60,8);
185 fp_mul(r60,r60,r4);
186 fp_sq1_rep(r60,7);
187 fp_mul(r60,r60,r1);
188 fp_sq1_rep(r60,8);
189 fp_mul(r60,r60,r22);
190 fp_sq1_rep(r60,7);
191 fp_mul(r60,r60,r43);
192 fp_sq1_rep(r60,12);
193 fp_mul(r60,r60,r52);
194 fp_sq1_rep(r60,8);
195 fp_mul(r60,r60,r56);
196 fp_sq1_rep(r60,7);
197 fp_mul(r60,r60,r57);
198 fp_sq1_rep(r60,7);
199 fp_mul(r60,r60,r13);
200 fp_sq1_rep(r60,9);
201 fp_mul(r60,r60,r26);
202 fp_sq1_rep(r60,7);
203 fp_mul(r60,r60,r14);
204 fp_sq1_rep(r60,7);
205 fp_mul(r60,r60,r26);
206 fp_sq1_rep(r60,8);
207 fp_mul(r60,r60,r32);
208 fp_sq1_rep(r60,8);
209 fp_mul(r60,r60,r10);
210 fp_sq1_rep(r60,7);
211 fp_mul(r60,r60,r30);
212 fp_sq1_rep(r60,13);
213 fp_mul(r60,r60,r33);
214 fp_sq1_rep(r60,8);
215 fp_mul(r60,r60,r3);
216 fp_sq1_rep(r60,7);
217 fp_mul(r60,r60,r29);
218 fp_sq1_rep(r60,7);
219 fp_mul(r60,r60,r10);
220 fp_sq1_rep(r60,8);
221 fp_mul(r60,r60,r47);
222 fp_sq1_rep(r60,7);
223 fp_mul(r60,r60,r35);
224 fp_sq1_rep(r60,7);
225 fp_mul(r60,r60,r38);
226 fp_sq1_rep(r60,8);
227 fp_mul(r60,r60,r5);
228 fp_sq1_rep(r60,8);
229 fp_mul(r60,r60,r36);
230 fp_sq1_rep(r60,7);
231 fp_mul(r60,r60,r4);
232 fp_sq1_rep(r60,9);
233 fp_mul(r60,r60,r44);
234 fp_sq1_rep(r60,7);
235 fp_mul(r60,r60,r25);
236 fp_sq1_rep(r60,7);
237 fp_mul(r60,r60,r14);
238 fp_sq1_rep(r60,8);
239 fp_mul(r60,r60,r41);
240 fp_sq1_rep(r60,8);
241 fp_mul(r60,r60,r10);
242 fp_sq1_rep(r60,7);
243 fp_mul(r60,r60,r25);
244 fp_sq1_rep(r60,8);
245 fp_mul(r60,r60,r59);
246 fp_sq1_rep(r60,9);
247 fp_mul(r60,r60,r58);
248 fp_sq1_rep(r60,7);
249 fp_mul(r60,r60,r11);
250 fp_sq1_rep(r60,7);
251 fp_mul(r60,r60,r22);
252 fp_sq1_rep(r60,7);
253 fp_mul(r60,r60,r14);
254 fp_sq1_rep(r60,7);
255 fp_mul(r60,r60,r47);
256 fp_sq1_rep(r60,8);
257 fp_mul(r60,r60,r19);
258 fp_sq1_rep(r60,7);
259 fp_mul(r60,r60,r19);
260 fp_sq1_rep(r60,7);
261 fp_mul(r60,r60,r4);
262 fp_sq1_rep(r60,7);
263 fp_mul(r15,r15,r60);
264 fp_sq1_rep(r15,6);
265 fp_mul(r15,r15,r32);
266 fp_sq1_rep(r15,7);
267 fp_mul(r15,r15,r36);
268 fp_sq1_rep(r15,11);
269 fp_mul(r15,r15,r28);
270 fp_sq1_rep(r15,7);
271 fp_mul(r15,r15,r6);
272 fp_sq1_rep(r15,10);
273 fp_mul(r15,r15,r22);
274 fp_sq1_rep(r15,10);
275 fp_mul(r15,r15,r36);
276 fp_sq1_rep(r15,7);
277 fp_mul(r15,r15,r40);
278 fp_sq1_rep(r15,7);
279 fp_mul(r15,r15,r56);
280 fp_sq1_rep(r15,7);
281 fp_mul(r15,r15,r31);
282 fp_sq1_rep(r15,8);
283 fp_mul(r15,r15,r59);
284 fp_sq1_rep(r15,7);
285 fp_mul(r15,r15,r48);
286 fp_sq1_rep(r15,8);
287 fp_mul(r15,r15,r31);
288 fp_sq1_rep(r15,7);
289 fp_mul(r15,r15,r21);
290 fp_sq1_rep(r15,14);
291 fp_mul(r15,r15,r57);
292 fp_sq1_rep(r15,8);
293 fp_mul(r15,r15,r4);
294 fp_sq1_rep(r15,12);
295 fp_mul(r15,r15,r39);
296 fp_sq1_rep(r15,11);
297 fp_mul(r15,r15,r17);
298 fp_sq1_rep(r15,7);
299 fp_mul(r15,r15,r23);
300 fp_sq1_rep(r15,7);
301 fp_mul(r15,r15,r40);
302 fp_sq1_rep(r15,9);
303 fp_mul(r15,r15,r42);
304 fp_sq1_rep(r15,8);
305 fp_mul(r15,r15,r2);
306 fp_sq1_rep(r15,7);
307 fp_mul(r15,r15,r45);
308 fp_sq1_rep(r15,7);
309 fp_mul(r15,r15,r19);
310 fp_sq1_rep(r15,7);
311 fp_mul(r15,r15,r21);
312 fp_sq1_rep(r15,8);
313 fp_mul(r15,r15,r43);
314 fp_sq1_rep(r15,8);
315 fp_mul(r15,r15,r1);
316 fp_sq1_rep(r15,7);
317 fp_mul(r15,r15,r25);
318 fp_sq1_rep(r15,6);
319 fp_mul(r15,r15,r32);
320 fp_sq1_rep(r15,10);
321 fp_mul(r15,r15,r41);
322 fp_sq1_rep(r15,7);
323 fp_mul(r15,r15,r30);
324 fp_sq1_rep(r15,7);
325 fp_mul(r15,r15,r50);
326 fp_sq1_rep(r15,9);
327 fp_mul(r15,r15,r4);
328 fp_sq1_rep(r15,16);
329 fp_mul(r15,r15,r54);
330 fp_sq1_rep(r15,9);
331 fp_mul(r15,r15,r37);
332 fp_sq1_rep(r15,6);
333 fp_mul(r15,r15,r31);
334 fp_sq1_rep(r15,7);
335 fp_mul(r15,r15,r12);
336 fp_sq1_rep(r15,8);
337 fp_mul(r15,r15,r41);
338 fp_sq1_rep(r15,10);
339 fp_mul(r15,r15,r3);
340 fp_sq1_rep(r15,7);
341 fp_mul(r15,r15,r51);
342 fp_sq1_rep(r15,8);
343 fp_mul(r15,r15,r58);
344 fp_sq1_rep(r15,11);
345 fp_mul(r15,r15,r46);
346 fp_sq1_rep(r15,7);
347 fp_mul(r15,r15,r53);
348 fp_sq1_rep(r15,7);
349 fp_mul(r15,r15,r4);
350 fp_sq1_rep(r15,11);
351 fp_mul(r15,r15,r42);
352 fp_sq1_rep(r15,7);
353 fp_mul(r15,r15,r1);
354 fp_sq1_rep(r15,7);
355 fp_mul(r15,r15,r58);
356 fp_sq1_rep(r15,8);
357 fp_mul(r15,r15,r16);
358 fp_sq1_rep(r15,7);
359 fp_mul(r15,r15,r52);
360 fp_sq1_rep(r15,7);
361 fp_mul(r15,r15,r40);
362 fp_sq1_rep(r15,7);
363 fp_mul(r15,r15,r45);
364 fp_sq1_rep(r15,7);
365 fp_mul(r4,r4,r15);
366 fp_sq1_rep(r4,7);
367 fp_mul(r4,r4,r48);
368 fp_sq1_rep(r4,9);
369 fp_mul(r4,r4,r33);
370 fp_sq1_rep(r4,12);
371 fp_mul(r4,r4,r1);
372 fp_sq1_rep(r4,7);
373 fp_mul(r4,r4,r46);
374 fp_sq1_rep(r4,10);
375 fp_mul(r3,r3,r4);
376 fp_sq1_rep(r3,7);
377 fp_mul(r3,r3,r51);
378 fp_sq1_rep(r3,6);
379 fp_mul(r3,r3,r31);
380 fp_sq1_rep(r3,9);
381 fp_mul(r3,r3,r24);
382 fp_sq1_rep(r3,8);
383 fp_mul(r3,r3,r59);
384 fp_sq1_rep(r3,7);
385 fp_mul(r3,r3,r11);
386 fp_sq1_rep(r3,7);
387 fp_mul(r3,r3,r24);
388 fp_sq1_rep(r3,7);
389 fp_mul(r3,r3,r29);
390 fp_sq1_rep(r3,10);
391 fp_mul(r3,r3,r21);
392 fp_sq1_rep(r3,7);
393 fp_mul(r3,r3,r24);
394 fp_sq1_rep(r3,9);
395 fp_mul(r3,r3,r14);
396 fp_sq1_rep(r3,8);
397 fp_mul(r3,r3,r18);
398 fp_sq1_rep(r3,8);
399 fp_mul(r3,r3,r37);
400 fp_sq1_rep(r3,9);
401 fp_mul(r3,r3,r53);
402 fp_sq1_rep(r3,8);
403 fp_mul(r3,r3,r36);
404 fp_sq1_rep(r3,7);
405 fp_mul(r3,r3,r1);
406 fp_sq1_rep(r3,6);
407 fp_mul(r3,r3,r30);
408 fp_sq1_rep(r3,9);
409 fp_mul(r3,r3,r43);
410 fp_sq1_rep(r3,8);
411 fp_mul(r3,r3,r54);
412 fp_sq1_rep(r3,7);
413 fp_mul(r3,r3,r33);
414 fp_sq1_rep(r3,7);
415 fp_mul(r3,r3,r28);
416 fp_sq1_rep(r3,6);
417 fp_mul(r3,r3,r30);
418 fp_sq1_rep(r3,9);
419 fp_mul(r3,r3,r38);
420 fp_sq1_rep(r3,7);
421 fp_mul(r3,r3,r17);
422 fp_sq1_rep(r3,7);
423 fp_mul(r3,r3,r40);
424 fp_sq1_rep(r3,12);
425 fp_mul(r3,r3,r5);
426 fp_sq1_rep(r3,7);
427 fp_mul(r3,r3,r7);
428 fp_sq1_rep(r3,7);
429 fp_mul(r3,r3,r32);
430 fp_sq1_rep(r3,6);
431 fp_mul(r3,r3,r32);
432 fp_sq1_rep(r3,7);
433 fp_mul(r3,r3,r51);
434 fp_sq1_rep(r3,8);
435 fp_mul(r3,r3,r7);
436 fp_sq1_rep(r3,9);
437 fp_mul(r3,r3,r38);
438 fp_sq1_rep(r3,8);
439 fp_mul(r3,r3,r29);
440 fp_sq1_rep(r3,7);
441 fp_mul(r3,r3,r2);
442 fp_sq1_rep(r3,7);
443 fp_mul(r3,r3,r32);
444 fp_sq1_rep(r3,7);
445 fp_mul(r3,r3,r49);
446 fp_sq1_rep(r3,13);
447 fp_mul(r3,r3,r35);
448 fp_sq1_rep(r3,9);
449 fp_mul(r3,r3,r28);
450 fp_sq1_rep(r3,7);
451 fp_mul(r0,r0,r3);
452 fp_sq1_rep(r0,8);
453 fp_mul(r0,r0,r17);
454 fp_sq1_rep(r0,8);
455 fp_mul(r0,r0,r38);
456 fp_sq1_rep(r0,7);
457 fp_mul(r0,r0,r50);
458 fp_sq1_rep(r0,7);
459 fp_mul(r0,r0,r43);
460 fp_sq1_rep(r0,11);
461 fp_mul(r0,r0,r25);
462 fp_sq1_rep(r0,7);
463 fp_mul(r0,r0,r58);
464 fp_sq1_rep(r0,9);
465 fp_mul(r0,r0,r29);
466 fp_sq1_rep(r0,8);
467 fp_mul(r0,r0,r36);
468 fp_sq1_rep(r0,10);
469 fp_mul(r0,r0,r48);
470 fp_sq1_rep(r0,7);
471 fp_mul(r0,r0,r36);
472 fp_sq1_rep(r0,7);
473 fp_mul(r0,r0,r37);
474 fp_sq1_rep(r0,8);
475 fp_mul(r0,r0,r37);
476 fp_sq1_rep(r0,7);
477 fp_mul(r0,r0,r34);
478 fp_sq1_rep(r0,8);
479 fp_mul(r0,r0,r56);
480 fp_sq1_rep(r0,9);
481 fp_mul(r0,r0,r6);
482 fp_sq1_rep(r0,7);
483 fp_mul(r0,r0,r10);
484 fp_sq1_rep(r0,8);
485 fp_mul(r0,r0,r27);
486 fp_sq1_rep(r0,7);
487 fp_mul(r0,r0,r5);
488 fp_sq1_rep(r0,8);
489 fp_mul(r0,r0,r11);
490 fp_sq1_rep(r0,7);
491 fp_mul(r0,r0,r34);
492 fp_sq1_rep(r0,7);
493 fp_mul(r0,r0,r38);
494 fp_sq1_rep(r0,6);
495 fp_mul(r0,r0,r31);
496 fp_sq1_rep(r0,9);
497 fp_mul(r0,r0,r50);
498 fp_sq1_rep(r0,8);
499 fp_mul(r0,r0,r19);
500 fp_sq1_rep(r0,7);
501 fp_mul(r0,r0,r40);
502 fp_sq1_rep(r0,7);
503 fp_mul(r0,r0,r14);
504 fp_sq1_rep(r0,7);
505 fp_mul(r0,r0,r37);
506 fp_sq1_rep(r0,7);
507 fp_mul(r0,r0,r20);
508 fp_sq1_rep(r0,7);
509 fp_mul(r0,r0,r53);
510 fp_sq1_rep(r0,9);
511 fp_mul(r0,r0,r54);
512 fp_sq1_rep(r0,7);
513 fp_mul(r0,r0,r53);
514 fp_sq1_rep(r0,7);
515 fp_mul(r0,r0,r1);
516 fp_sq1_rep(r0,8);
517 fp_mul(r0,r0,r20);
518 fp_sq1_rep(r0,8);
519 fp_mul(r0,r0,r45);
520 fp_sq1_rep(r0,7);
521 fp_mul(r0,r0,r13);
522 fp_sq1_rep(r0,8);
523 fp_mul(r0,r0,r31);
524 fp_sq1_rep(r0,8);
525 fp_mul(r0,r0,r14);
526 fp_sq1_rep(r0,13);
527 fp_mul(r0,r0,r10);
528 fp_sq1_rep(r0,17);
529 fp_mul(r0,r0,r2);
530 fp_sq1_rep(r0,12);
531 fp_mul(r0,r0,r51);
532 fp_sq1_rep(r0,7);
533 fp_mul(r0,r0,r8);
534 fp_sq1_rep(r0,8);
535 fp_mul(r0,r0,r9);
536 fp_sq1_rep(r0,7);
537 fp_mul(r0,r0,r25);
538 fp_sq1_rep(r0,10);
539 fp_mul(r0,r0,r26);
540 fp_sq1_rep(r0,8);
541 fp_mul(r0,r0,r49);
542 fp_sq1_rep(r0,7);
543 fp_mul(r0,r0,r36);
544 fp_sq1_rep(r0,7);
545 fp_mul(r0,r0,r1);
546 fp_sq1_rep(r0,7);
547 fp_mul(r0,r0,r42);
548 fp_sq1_rep(r0,7);
549 fp_mul(r0,r0,r58);
550 fp_sq1_rep(r0,9);
551 fp_mul(r0,r0,r49);
552 fp_sq1_rep(r0,7);
553 fp_mul(r0,r0,r42);
554 fp_sq1_rep(r0,7);
555 fp_mul(r0,r0,r45);
556 fp_sq1_rep(r0,7);
557 fp_mul(r0,r0,r57);
558 fp_sq1_rep(r0,8);
559 fp_mul(r0,r0,r1);
560 fp_sq1_rep(r0,7);
561 fp_mul(r0,r0,r5);
562 fp_sq1_rep(r0,7);
563 fp_mul(r0,r0,r21);
564 fp_sq1_rep(r0,7);
565 fp_mul(r0,r0,r40);
566 fp_sq1_rep(r0,7);
567 fp_mul(r0,r0,r24);
568 fp_sq1_rep(r0,7);
569 fp_mul(r0,r0,r25);
570 fp_sq1_rep(r0,11);
571 fp_mul(r0,r0,r6);
572 fp_sq1_rep(r0,10);
573 fp_mul(r0,r0,r58);
574 fp_sq1_rep(r0,7);
575 fp_mul(r0,r0,r56);
576 fp_sq1_rep(r0,7);
577 fp_mul(r0,r0,r11);
578 fp_sq1_rep(r0,7);
579 fp_mul(r0,r0,r55);
580 fp_sq1_rep(r0,8);
581 fp_mul(r0,r0,r43);
582 fp_sq1_rep(r0,7);
583 fp_mul(r0,r0,r1);
584 fp_sq1_rep(r0,7);
585 fp_mul(r0,r0,r33);
586 fp_sq1_rep(r0,8);
587 fp_mul(r0,r0,r32);
588 fp_sq1_rep(r0,12);
589 fp_mul(r0,r0,r38);
590 fp_sq1_rep(r0,7);
591 fp_mul(r0,r0,r44);
592 fp_sq1_rep(r0,7);
593 fp_mul(r0,r0,r47);
594 fp_sq1_rep(r0,7);
595 fp_mul(r0,r0,r21);
596 fp_sq1_rep(r0,11);
597 fp_mul(r0,r0,r41);
598 fp_sq1_rep(r0,7);
599 fp_mul(r0,r0,r58);
600 fp_sq1_rep(r0,8);
601 fp_mul(r0,r0,r34);
602 fp_sq1_rep(r0,9);
603 fp_mul(r0,r0,r30);
604 fp_sq1_rep(r0,8);
605 fp_mul(r0,r0,r42);
606 fp_sq1_rep(r0,9);
607 fp_mul(r0,r0,r33);
608 fp_sq1_rep(r0,13);
609 fp_mul(r0,r0,r30);
610 fp_sq1_rep(r0,8);
611 fp_mul(r0,r0,r57);
612 fp_sq1_rep(r0,7);
613 fp_mul(r0,r0,r21);
614 fp_sq1_rep(r0,7);
615 fp_mul(r0,r0,r48);
616 fp_sq1_rep(r0,7);
617 fp_mul(r0,r0,r38);
618 fp_sq1_rep(r0,8);
619 fp_mul(r0,r0,r26);
620 fp_sq1_rep(r0,7);
621 fp_mul(r0,r0,r28);
622 fp_sq1_rep(r0,7);
623 fp_mul(r0,r0,r13);
624 fp_sq1_rep(r0,8);
625 fp_mul(r0,r0,r59);
626 fp_sq1_rep(r0,7);
627 fp_mul(r0,r0,r26);
628 fp_sq1_rep(r0,8);
629 fp_mul(r0,r0,r44);
630 fp_sq1_rep(r0,7);
631 fp_mul(r0,r0,r12);
632 fp_sq1_rep(r0,8);
633 fp_mul(r0,r0,r24);
634 fp_sq1_rep(r0,6);
635 fp_mul(r0,r0,r32);
636 fp_sq1_rep(r0,6);
637 fp_mul(r0,r0,r32);
638 fp_sq1_rep(r0,6);
639 fp_mul(r0,r0,r32);
640 fp_sq1_rep(r0,6);
641 fp_mul(r0,r0,r32);
642 fp_sq1_rep(r0,6);
643 fp_mul(r0,r0,r32);
644 fp_sq1_rep(r0,6);
645 fp_mul(r0,r0,r32);
646 fp_sq1_rep(r0,6);
647 fp_mul(r0,r0,r32);
648 fp_sq1_rep(r0,6);
649 fp_mul(r0,r0,r32);
650 fp_sq1_rep(r0,6);
651 fp_mul(r0,r0,r32);
652 fp_sq1_rep(r0,6);
653 fp_mul(r0,r0,r31);
654 fp_copy(x, r0);
655}
#define fp_sqr
Definition fp-gmp.h:73
uint64_t fp[NUMBER_OF_WORDS]
Definition fp-gmp.h:22

References fp_copy, fp_dec, fp_enc, fp_mul, fp_sqr, i, itch_size, and p.

◆ fp_issquare()

bool fp_issquare ( fp a)

Definition at line 12 of file fp_sqrt2047m1l226.c.

13{
14 fp origx;
15 fp_copy(origx,x);
16 fp r0;
17 fp_copy(r0, x);
18 fp r1;
19 fp_sqr(r1,r0);
20 fp r2;
21 fp_mul(r2,r0,r1);
22 fp r3;
23 fp_mul(r3,r1,r2);
24 fp r4;
25 fp_mul(r4,r1,r3);
26 fp r5;
27 fp_mul(r5,r1,r4);
28 fp r6;
29 fp_mul(r6,r1,r5);
30 fp r7;
31 fp_mul(r7,r1,r6);
32 fp r8;
33 fp_mul(r8,r1,r7);
34 fp r9;
35 fp_mul(r9,r1,r8);
36 fp r10;
37 fp_mul(r10,r1,r9);
38 fp r11;
39 fp_mul(r11,r1,r10);
40 fp r12;
41 fp_mul(r12,r1,r11);
42 fp r13;
43 fp_mul(r13,r1,r12);
44 fp r14;
45 fp_mul(r14,r1,r13);
46 fp r15;
47 fp_mul(r15,r1,r14);
48 fp r16;
49 fp_mul(r16,r1,r15);
50 fp r17;
51 fp_mul(r17,r1,r16);
52 fp r18;
53 fp_mul(r18,r1,r17);
54 fp r19;
55 fp_mul(r19,r1,r18);
56 fp r20;
57 fp_mul(r20,r1,r19);
58 fp r21;
59 fp_mul(r21,r1,r20);
60 fp r22;
61 fp_mul(r22,r1,r21);
62 fp r23;
63 fp_mul(r23,r1,r22);
64 fp r24;
65 fp_mul(r24,r1,r23);
66 fp r25;
67 fp_mul(r25,r1,r24);
68 fp r26;
69 fp_mul(r26,r1,r25);
70 fp r27;
71 fp_mul(r27,r1,r26);
72 fp r28;
73 fp_mul(r28,r1,r27);
74 fp r29;
75 fp_mul(r29,r1,r28);
76 fp r30;
77 fp_mul(r30,r1,r29);
78 fp r31;
79 fp_mul(r31,r1,r30);
80 fp r32;
81 fp_mul(r32,r1,r31);
82 fp r33;
83 fp_mul(r33,r1,r32);
84 fp r34;
85 fp_mul(r34,r1,r33);
86 fp r35;
87 fp_mul(r35,r1,r34);
88 fp r36;
89 fp_mul(r36,r1,r35);
90 fp r37;
91 fp_mul(r37,r1,r36);
92 fp r38;
93 fp_mul(r38,r1,r37);
94 fp r39;
95 fp_mul(r39,r1,r38);
96 fp r40;
97 fp_mul(r40,r1,r39);
98 fp r41;
99 fp_mul(r41,r1,r40);
100 fp_mul(r1,r1,r41);
101 fp r42;
102 fp_mul(r42,r23,r1);
103 fp_sqr(r42,r42);
104 fp_mul(r42,r42,r23);
105 fp_sq1_rep(r42,7);
106 fp_mul(r42,r42,r25);
107 fp_sq1_rep(r42,10);
108 fp_mul(r42,r42,r12);
109 fp_sq1_rep(r42,8);
110 fp_mul(r42,r42,r1);
111 fp_sq1_rep(r42,8);
112 fp_mul(r42,r42,r20);
113 fp_sq1_rep(r42,7);
114 fp_mul(r42,r42,r21);
115 fp_sq1_rep(r42,7);
116 fp_mul(r42,r42,r24);
117 fp_sq1_rep(r42,6);
118 fp_mul(r42,r42,r26);
119 fp_sq1_rep(r42,7);
120 fp_mul(r42,r42,r38);
121 fp_sq1_rep(r42,6);
122 fp_mul(r42,r42,r15);
123 fp_sq1_rep(r42,7);
124 fp_mul(r42,r42,r7);
125 fp_sq1_rep(r42,7);
126 fp_mul(r42,r42,r32);
127 fp_sq1_rep(r42,9);
128 fp_mul(r42,r42,r0);
129 fp_sq1_rep(r42,7);
130 fp_mul(r42,r42,r1);
131 fp_sq1_rep(r42,6);
132 fp_mul(r42,r42,r20);
133 fp_sq1_rep(r42,7);
134 fp_mul(r42,r42,r41);
135 fp_sq1_rep(r42,6);
136 fp_mul(r42,r42,r24);
137 fp_sq1_rep(r42,8);
138 fp_mul(r42,r42,r0);
139 fp_sq1_rep(r42,8);
140 fp_mul(r42,r42,r11);
141 fp_sq1_rep(r42,7);
142 fp_mul(r42,r42,r20);
143 fp_sq1_rep(r42,6);
144 fp_mul(r42,r42,r16);
145 fp_sq1_rep(r42,8);
146 fp_mul(r42,r42,r28);
147 fp_sq1_rep(r42,8);
148 fp_mul(r42,r42,r29);
149 fp_sq1_rep(r42,7);
150 fp_mul(r42,r42,r29);
151 fp_sq1_rep(r42,6);
152 fp_mul(r42,r42,r19);
153 fp_sq1_rep(r42,8);
154 fp_mul(r42,r42,r21);
155 fp_sq1_rep(r42,11);
156 fp_mul(r42,r42,r32);
157 fp_sq1_rep(r42,7);
158 fp_mul(r42,r42,r37);
159 fp_sq1_rep(r42,6);
160 fp_mul(r42,r42,r12);
161 fp_sq1_rep(r42,6);
162 fp_mul(r42,r42,r11);
163 fp_sq1_rep(r42,7);
164 fp_mul(r42,r42,r2);
165 fp_sq1_rep(r42,8);
166 fp_mul(r42,r42,r38);
167 fp_sq1_rep(r42,6);
168 fp_mul(r42,r42,r18);
169 fp_sq1_rep(r42,6);
170 fp_mul(r42,r42,r26);
171 fp_sq1_rep(r42,7);
172 fp_mul(r42,r42,r13);
173 fp_sq1_rep(r42,9);
174 fp_mul(r42,r42,r26);
175 fp_sq1_rep(r42,7);
176 fp_mul(r42,r42,r14);
177 fp_sq1_rep(r42,7);
178 fp_mul(r42,r42,r26);
179 fp_sq1_rep(r42,8);
180 fp_mul(r42,r42,r32);
181 fp_sq1_rep(r42,8);
182 fp_mul(r42,r42,r10);
183 fp_sq1_rep(r42,7);
184 fp_mul(r42,r42,r30);
185 fp_sq1_rep(r42,13);
186 fp_mul(r42,r42,r33);
187 fp_sq1_rep(r42,8);
188 fp_mul(r42,r42,r3);
189 fp_sq1_rep(r42,7);
190 fp_mul(r42,r42,r29);
191 fp_sq1_rep(r42,9);
192 fp_mul(r42,r42,r39);
193 fp_sq1_rep(r42,6);
194 fp_mul(r42,r42,r16);
195 fp_sq1_rep(r42,7);
196 fp_mul(r42,r42,r35);
197 fp_sq1_rep(r42,7);
198 fp_mul(r42,r42,r38);
199 fp_sq1_rep(r42,8);
200 fp_mul(r42,r42,r5);
201 fp_sq1_rep(r42,7);
202 fp_mul(r42,r42,r18);
203 fp_sq1_rep(r42,7);
204 fp_mul(r42,r42,r34);
205 fp_sq1_rep(r42,6);
206 fp_mul(r42,r42,r19);
207 fp_sq1_rep(r42,7);
208 fp_mul(r42,r42,r30);
209 fp_sq1_rep(r42,8);
210 fp_mul(r42,r42,r10);
211 fp_sq1_rep(r42,7);
212 fp_mul(r42,r42,r27);
213 fp_sq1_rep(r42,8);
214 fp_mul(r42,r42,r9);
215 fp_sq1_rep(r42,7);
216 fp_mul(r42,r42,r14);
217 fp_sq1_rep(r42,8);
218 fp_mul(r42,r42,r12);
219 fp_sq1_rep(r42,7);
220 fp_mul(r42,r42,r29);
221 fp_sq1_rep(r42,6);
222 fp_mul(r42,r42,r27);
223 fp_sq1_rep(r42,7);
224 fp_mul(r42,r42,r11);
225 fp_sq1_rep(r42,7);
226 fp_mul(r42,r42,r22);
227 fp_sq1_rep(r42,8);
228 fp_mul(r42,r42,r28);
229 fp_sq1_rep(r42,6);
230 fp_mul(r42,r42,r16);
231 fp_sq1_rep(r42,8);
232 fp_mul(r42,r42,r19);
233 fp_sq1_rep(r42,7);
234 fp_mul(r42,r42,r19);
235 fp_sq1_rep(r42,7);
236 fp_mul(r42,r42,r4);
237 fp_sq1_rep(r42,7);
238 fp_mul(r42,r42,r15);
239 fp_sq1_rep(r42,6);
240 fp_mul(r42,r42,r32);
241 fp_sq1_rep(r42,7);
242 fp_mul(r42,r42,r36);
243 fp_sq1_rep(r42,11);
244 fp_mul(r42,r42,r28);
245 fp_sq1_rep(r42,7);
246 fp_mul(r42,r42,r6);
247 fp_sq1_rep(r42,10);
248 fp_mul(r42,r42,r22);
249 fp_sq1_rep(r42,8);
250 fp_mul(r9,r9,r42);
251 fp_sq1_rep(r9,6);
252 fp_mul(r9,r9,r29);
253 fp_sq1_rep(r9,6);
254 fp_mul(r9,r9,r32);
255 fp_sq1_rep(r9,8);
256 fp_mul(r9,r9,r12);
257 fp_sq1_rep(r9,6);
258 fp_mul(r9,r9,r22);
259 fp_sq1_rep(r9,6);
260 fp_mul(r9,r9,r24);
261 fp_sq1_rep(r9,6);
262 fp_mul(r9,r9,r17);
263 fp_sq1_rep(r9,8);
264 fp_mul(r9,r9,r31);
265 fp_sq1_rep(r9,7);
266 fp_mul(r9,r9,r21);
267 fp_sq1_rep(r9,8);
268 fp_mul(r9,r9,r0);
269 fp_sq1_rep(r9,6);
270 fp_mul(r9,r9,r26);
271 fp_sq1_rep(r9,8);
272 fp_mul(r9,r9,r4);
273 fp_sq1_rep(r9,12);
274 fp_mul(r9,r9,r39);
275 fp_sq1_rep(r9,11);
276 fp_mul(r9,r9,r17);
277 fp_sq1_rep(r9,7);
278 fp_mul(r9,r9,r23);
279 fp_sq1_rep(r9,7);
280 fp_mul(r9,r9,r40);
281 fp_sq1_rep(r9,9);
282 fp_mul(r9,r9,r1);
283 fp_sq1_rep(r9,9);
284 fp_mul(r9,r9,r4);
285 fp_sq1_rep(r9,6);
286 fp_mul(r9,r9,r13);
287 fp_sq1_rep(r9,7);
288 fp_mul(r9,r9,r19);
289 fp_sq1_rep(r9,7);
290 fp_mul(r9,r9,r21);
291 fp_sq1_rep(r9,6);
292 fp_mul(r9,r9,r11);
293 fp_sq1_rep(r9,6);
294 fp_mul(r9,r9,r12);
295 fp_sq1_rep(r9,7);
296 fp_mul(r9,r9,r38);
297 fp_sq1_rep(r9,8);
298 fp_mul(r9,r9,r16);
299 fp_sq1_rep(r9,6);
300 fp_mul(r9,r9,r25);
301 fp_sq1_rep(r9,8);
302 fp_mul(r9,r9,r35);
303 fp_sq1_rep(r9,6);
304 fp_mul(r9,r9,r28);
305 fp_sq1_rep(r9,6);
306 fp_mul(r9,r9,r19);
307 fp_sq1_rep(r9,9);
308 fp_mul(r9,r9,r4);
309 fp_sq1_rep(r9,10);
310 fp_mul(r0,r0,r9);
311 fp_sq1_rep(r0,6);
312 fp_mul(r0,r0,r23);
313 fp_sq1_rep(r0,9);
314 fp_mul(r0,r0,r37);
315 fp_sq1_rep(r0,6);
316 fp_mul(r0,r0,r31);
317 fp_sq1_rep(r0,7);
318 fp_mul(r0,r0,r12);
319 fp_sq1_rep(r0,8);
320 fp_mul(r0,r0,r41);
321 fp_sq1_rep(r0,11);
322 fp_mul(r0,r0,r6);
323 fp_sq1_rep(r0,6);
324 fp_mul(r0,r0,r20);
325 fp_sq1_rep(r0,6);
326 fp_mul(r0,r0,r15);
327 fp_sq1_rep(r0,7);
328 fp_mul(r0,r0,r17);
329 fp_sq1_rep(r0,6);
330 fp_mul(r0,r0,r15);
331 fp_sq1_rep(r0,6);
332 fp_mul(r0,r0,r27);
333 fp_sq1_rep(r0,7);
334 fp_mul(r0,r0,r34);
335 fp_sq1_rep(r0,6);
336 fp_mul(r0,r0,r17);
337 fp_sq1_rep(r0,8);
338 fp_mul(r0,r0,r40);
339 fp_sq1_rep(r0,6);
340 fp_mul(r0,r0,r26);
341 fp_sq1_rep(r0,6);
342 fp_mul(r0,r0,r27);
343 fp_sq1_rep(r0,9);
344 fp_mul(r0,r0,r32);
345 fp_sq1_rep(r0,7);
346 fp_mul(r0,r0,r1);
347 fp_sq1_rep(r0,7);
348 fp_mul(r0,r0,r16);
349 fp_sq1_rep(r0,6);
350 fp_mul(r0,r0,r13);
351 fp_sq1_rep(r0,8);
352 fp_mul(r0,r0,r8);
353 fp_sq1_rep(r0,6);
354 fp_mul(r0,r0,r17);
355 fp_sq1_rep(r0,9);
356 fp_mul(r0,r0,r33);
357 fp_sq1_rep(r0,7);
358 fp_mul(r0,r0,r2);
359 fp_sq1_rep(r0,6);
360 fp_mul(r0,r0,r26);
361 fp_sq1_rep(r0,6);
362 fp_mul(r0,r0,r15);
363 fp_sq1_rep(r0,12);
364 fp_mul(r0,r0,r12);
365 fp_sq1_rep(r0,8);
366 fp_mul(r0,r0,r32);
367 fp_sq1_rep(r0,7);
368 fp_mul(r0,r0,r41);
369 fp_sq1_rep(r0,7);
370 fp_mul(r0,r0,r31);
371 fp_sq1_rep(r0,6);
372 fp_mul(r0,r0,r28);
373 fp_sq1_rep(r0,7);
374 fp_mul(r0,r0,r11);
375 fp_sq1_rep(r0,7);
376 fp_mul(r0,r0,r24);
377 fp_sq1_rep(r0,7);
378 fp_mul(r0,r0,r29);
379 fp_sq1_rep(r0,10);
380 fp_mul(r0,r0,r21);
381 fp_sq1_rep(r0,7);
382 fp_mul(r0,r0,r24);
383 fp_sq1_rep(r0,9);
384 fp_mul(r0,r0,r14);
385 fp_sq1_rep(r0,8);
386 fp_mul(r0,r0,r18);
387 fp_sq1_rep(r0,8);
388 fp_mul(r0,r0,r37);
389 fp_sq1_rep(r0,8);
390 fp_mul(r0,r0,r27);
391 fp_sq1_rep(r0,7);
392 fp_mul(r0,r0,r41);
393 fp_sq1_rep(r0,6);
394 fp_mul(r0,r0,r32);
395 fp_sq1_rep(r0,8);
396 fp_mul(r0,r0,r31);
397 fp_sq1_rep(r0,6);
398 fp_mul(r0,r0,r19);
399 fp_sq1_rep(r0,6);
400 fp_mul(r0,r0,r11);
401 fp_sq1_rep(r0,6);
402 fp_mul(r0,r0,r23);
403 fp_sq1_rep(r0,7);
404 fp_mul(r0,r0,r33);
405 fp_sq1_rep(r0,7);
406 fp_mul(r0,r0,r28);
407 fp_sq1_rep(r0,6);
408 fp_mul(r0,r0,r30);
409 fp_sq1_rep(r0,9);
410 fp_mul(r0,r0,r38);
411 fp_sq1_rep(r0,7);
412 fp_mul(r0,r0,r17);
413 fp_sq1_rep(r0,7);
414 fp_mul(r0,r0,r40);
415 fp_sq1_rep(r0,12);
416 fp_mul(r0,r0,r5);
417 fp_sq1_rep(r0,9);
418 fp_mul(r0,r0,r27);
419 fp_sq1_rep(r0,6);
420 fp_mul(r0,r0,r32);
421 fp_sq1_rep(r0,6);
422 fp_mul(r0,r0,r32);
423 fp_sq1_rep(r0,6);
424 fp_mul(r0,r0,r20);
425 fp_sq1_rep(r0,8);
426 fp_mul(r0,r0,r7);
427 fp_sq1_rep(r0,9);
428 fp_mul(r0,r0,r38);
429 fp_sq1_rep(r0,8);
430 fp_mul(r0,r0,r29);
431 fp_sq1_rep(r0,9);
432 fp_mul(r0,r0,r7);
433 fp_sq1_rep(r0,6);
434 fp_mul(r0,r0,r32);
435 fp_sq1_rep(r0,6);
436 fp_mul(r0,r0,r18);
437 fp_sq1_rep(r0,13);
438 fp_mul(r0,r0,r35);
439 fp_sq1_rep(r0,9);
440 fp_mul(r0,r0,r28);
441 fp_sq1_rep(r0,10);
442 fp_mul(r0,r0,r5);
443 fp_sq1_rep(r0,7);
444 fp_mul(r0,r0,r3);
445 fp_sq1_rep(r0,7);
446 fp_mul(r0,r0,r12);
447 fp_sq1_rep(r0,7);
448 fp_mul(r0,r0,r38);
449 fp_sq1_rep(r0,6);
450 fp_mul(r0,r0,r11);
451 fp_sq1_rep(r0,7);
452 fp_mul(r0,r0,r2);
453 fp_sq1_rep(r0,9);
454 fp_mul(r0,r0,r31);
455 fp_sq1_rep(r0,8);
456 fp_mul(r0,r0,r36);
457 fp_sq1_rep(r0,9);
458 fp_mul(r0,r0,r41);
459 fp_sq1_rep(r0,6);
460 fp_mul(r0,r0,r25);
461 fp_sq1_rep(r0,7);
462 fp_mul(r0,r0,r34);
463 fp_sq1_rep(r0,7);
464 fp_mul(r0,r0,r8);
465 fp_sq1_rep(r0,8);
466 fp_mul(r0,r0,r19);
467 fp_sq1_rep(r0,7);
468 fp_mul(r0,r0,r10);
469 fp_sq1_rep(r0,8);
470 fp_mul(r0,r0,r7);
471 fp_sq1_rep(r0,6);
472 fp_mul(r0,r0,r25);
473 fp_sq1_rep(r0,9);
474 fp_mul(r0,r0,r6);
475 fp_sq1_rep(r0,7);
476 fp_mul(r0,r0,r10);
477 fp_sq1_rep(r0,8);
478 fp_mul(r0,r0,r27);
479 fp_sq1_rep(r0,7);
480 fp_mul(r0,r0,r5);
481 fp_sq1_rep(r0,9);
482 fp_mul(r0,r0,r22);
483 fp_sq1_rep(r0,10);
484 fp_mul(r0,r0,r29);
485 fp_sq1_rep(r0,6);
486 fp_mul(r0,r0,r16);
487 fp_sq1_rep(r0,6);
488 fp_mul(r0,r0,r21);
489 fp_sq1_rep(r0,6);
490 fp_mul(r0,r0,r19);
491 fp_sq1_rep(r0,8);
492 fp_mul(r0,r0,r19);
493 fp_sq1_rep(r0,7);
494 fp_mul(r0,r0,r40);
495 fp_sq1_rep(r0,7);
496 fp_mul(r0,r0,r14);
497 fp_sq1_rep(r0,7);
498 fp_mul(r0,r0,r37);
499 fp_sq1_rep(r0,8);
500 fp_mul(r0,r0,r40);
501 fp_sq1_rep(r0,6);
502 fp_mul(r0,r0,r22);
503 fp_sq1_rep(r0,7);
504 fp_mul(r0,r0,r14);
505 fp_sq1_rep(r0,6);
506 fp_mul(r0,r0,r15);
507 fp_sq1_rep(r0,6);
508 fp_mul(r0,r0,r16);
509 fp_sq1_rep(r0,7);
510 fp_mul(r0,r0,r37);
511 fp_sq1_rep(r0,7);
512 fp_mul(r0,r0,r15);
513 fp_sq1_rep(r0,6);
514 fp_mul(r0,r0,r13);
515 fp_sq1_rep(r0,7);
516 fp_mul(r0,r0,r13);
517 fp_sq1_rep(r0,8);
518 fp_mul(r0,r0,r31);
519 fp_sq1_rep(r0,8);
520 fp_mul(r0,r0,r14);
521 fp_sq1_rep(r0,13);
522 fp_mul(r0,r0,r10);
523 fp_sq1_rep(r0,17);
524 fp_mul(r0,r0,r2);
525 fp_sq1_rep(r0,11);
526 fp_mul(r0,r0,r26);
527 fp_sq1_rep(r0,6);
528 fp_mul(r0,r0,r18);
529 fp_sq1_rep(r0,6);
530 fp_mul(r0,r0,r25);
531 fp_sq1_rep(r0,7);
532 fp_mul(r0,r0,r6);
533 fp_sq1_rep(r0,9);
534 fp_mul(r0,r0,r17);
535 fp_sq1_rep(r0,7);
536 fp_mul(r0,r0,r39);
537 fp_sq1_rep(r0,7);
538 fp_mul(r0,r0,r36);
539 fp_sq1_rep(r0,9);
540 fp_mul(r0,r0,r32);
541 fp_sq1_rep(r0,7);
542 fp_mul(r0,r0,r39);
543 fp_sq1_rep(r0,7);
544 fp_mul(r0,r0,r16);
545 fp_sq1_rep(r0,8);
546 fp_mul(r0,r0,r1);
547 fp_sq1_rep(r0,8);
548 fp_mul(r0,r0,r15);
549 fp_sq1_rep(r0,7);
550 fp_mul(r0,r0,r15);
551 fp_sq1_rep(r0,6);
552 fp_mul(r0,r0,r20);
553 fp_sq1_rep(r0,7);
554 fp_mul(r0,r0,r39);
555 fp_sq1_rep(r0,6);
556 fp_mul(r0,r0,r29);
557 fp_sq1_rep(r0,7);
558 fp_mul(r0,r0,r5);
559 fp_sq1_rep(r0,7);
560 fp_mul(r0,r0,r21);
561 fp_sq1_rep(r0,7);
562 fp_mul(r0,r0,r40);
563 fp_sq1_rep(r0,7);
564 fp_mul(r0,r0,r24);
565 fp_sq1_rep(r0,7);
566 fp_mul(r0,r0,r25);
567 fp_sq1_rep(r0,10);
568 fp_mul(r0,r0,r3);
569 fp_sq1_rep(r0,7);
570 fp_mul(r0,r0,r36);
571 fp_sq1_rep(r0,7);
572 fp_mul(r0,r0,r24);
573 fp_sq1_rep(r0,7);
574 fp_mul(r0,r0,r5);
575 fp_sq1_rep(r0,6);
576 fp_mul(r0,r0,r12);
577 fp_sq1_rep(r0,7);
578 fp_mul(r0,r0,r31);
579 fp_sq1_rep(r0,7);
580 fp_mul(r0,r0,r22);
581 fp_sq1_rep(r0,6);
582 fp_mul(r0,r0,r29);
583 fp_sq1_rep(r0,7);
584 fp_mul(r0,r0,r33);
585 fp_sq1_rep(r0,8);
586 fp_mul(r0,r0,r32);
587 fp_sq1_rep(r0,12);
588 fp_mul(r0,r0,r38);
589 fp_sq1_rep(r0,6);
590 fp_mul(r0,r0,r22);
591 fp_sq1_rep(r0,6);
592 fp_mul(r0,r0,r28);
593 fp_sq1_rep(r0,6);
594 fp_mul(r0,r0,r27);
595 fp_sq1_rep(r0,8);
596 fp_mul(r0,r0,r17);
597 fp_sq1_rep(r0,7);
598 fp_mul(r0,r0,r18);
599 fp_sq1_rep(r0,6);
600 fp_mul(r0,r0,r27);
601 fp_sq1_rep(r0,8);
602 fp_mul(r0,r0,r34);
603 fp_sq1_rep(r0,9);
604 fp_mul(r0,r0,r30);
605 fp_sq1_rep(r0,8);
606 fp_mul(r0,r0,r1);
607 fp_sq1_rep(r0,9);
608 fp_mul(r0,r0,r33);
609 fp_sq1_rep(r0,10);
610 fp_mul(r0,r0,r4);
611 fp_sq1_rep(r0,6);
612 fp_mul(r0,r0,r14);
613 fp_sq1_rep(r0,7);
614 fp_mul(r0,r0,r39);
615 fp_sq1_rep(r0,7);
616 fp_mul(r0,r0,r20);
617 fp_sq1_rep(r0,9);
618 fp_mul(r0,r0,r13);
619 fp_sq1_rep(r0,7);
620 fp_mul(r0,r0,r26);
621 fp_sq1_rep(r0,7);
622 fp_mul(r0,r0,r14);
623 fp_sq1_rep(r0,7);
624 fp_mul(r0,r0,r29);
625 fp_sq1_rep(r0,6);
626 fp_mul(r0,r0,r19);
627 fp_sq1_rep(r0,6);
628 fp_mul(r0,r0,r28);
629 fp_sq1_rep(r0,7);
630 fp_mul(r0,r0,r26);
631 fp_sq1_rep(r0,7);
632 fp_mul(r0,r0,r22);
633 fp_sq1_rep(r0,6);
634 fp_mul(r0,r0,r19);
635 fp_sq1_rep(r0,6);
636 fp_mul(r0,r0,r26);
637 fp_sq1_rep(r0,62);
638 fp_copy(x, r0);
639 fp check; fp_sqr(check,x);
640 return fp_isequal(check,origx);
641}

References a, fp_copy, fp_mul, fp_sqr, and p.

◆ fp_mont_redc_a()

void fp_mont_redc_a ( fp a,
const uint64_t b[2 *NUMBER_OF_WORDS] )

References a.

◆ fp_mul()

void fp_mul ( fp c,
const fp a,
const fp b )

Definition at line 891 of file fp-gmp.c.

892{
893#ifdef MONTGOMERY
894 static __thread uint64_t tp[itch_size];
895
896 // mp_size_t size = mpn_sec_mul_itch(NUMBER_OF_WORDS, 1) ;
897 uint64_t A[NUMBER_OF_WORDS + 1] = {0x0};
898 uint64_t tmp_1[NUMBER_OF_WORDS + 1] = {0x0};
899 uint64_t tmp_2[NUMBER_OF_WORDS + 2] = {0x0};
900 uint64_t a_i[1] = {0x0};
901 for (int i = 0; i < NUMBER_OF_WORDS; i++)
902 {
903 // tmp_1 = x_i * y
904 a_i[0] = a[i];
905 mpn_sec_mul(tmp_1, b, NUMBER_OF_WORDS, a_i, 1, tp);
906
907 // tmp_2 = A + x_i * y
908 mpn_add(tmp_2, A, NUMBER_OF_WORDS + 1, tmp_1, NUMBER_OF_WORDS + 1);
909
910 // tmp_1 = u_i * m
911 mpn_sec_mul(tmp_1, p, NUMBER_OF_WORDS, tmp_2, 1, tp);
912
913 // tmp_1 = A + x_i * y + u_i * m
914 mpn_add(tmp_1, tmp_1, NUMBER_OF_WORDS + 1, tmp_2, NUMBER_OF_WORDS + 2);
915
916 // A = (A + x_i * y + u_i * m) / r
917 mpn_copyd(A, tmp_1 + 1, NUMBER_OF_WORDS);
918
919 A[NUMBER_OF_WORDS] = 0;
920 }
921
922 mpn_cnd_sub_n(mpn_cmp(A, p, NUMBER_OF_WORDS) > 0, c, A, p, NUMBER_OF_WORDS);
923
924#else
925#ifndef USE_GMP_SEC_FUNCTIONS
926 uint64_t tmp[NUMBER_OF_WORDS * 2];
927 uint64_t thrash[NUMBER_OF_WORDS + 1];
928 mpn_mul_n(tmp, a, b, NUMBER_OF_WORDS);
929 mpn_tdiv_qr(thrash, c, 0, tmp, 2 * NUMBER_OF_WORDS, p, NUMBER_OF_WORDS);
930#else
931 static __thread uint64_t tp[itch_size];
932 uint64_t tmp[NUMBER_OF_WORDS * 2];
933 mpn_sec_mul(tmp, a, NUMBER_OF_WORDS, b, NUMBER_OF_WORDS, tp);
934 mpn_sec_div_r(tmp, 2 * NUMBER_OF_WORDS, p, NUMBER_OF_WORDS, tp);
935 fp_copy(c, tmp);
936#endif
937#endif
938
940}
#define CNT_FP_MUL_INC()
Definition fp-counters.h:30
#define itch_size
A
Definition tests.py:29

References a, CNT_FP_MUL_INC, fp_copy, i, itch_size, and p.

◆ fp_pow()

void fp_pow ( fp b,
const fp e,
const fp a )

Definition at line 812 of file fp-gmp.c.

813{
814 // It is required that e > 0.
815 if (fp_iszero(e))
816 {
817 fp_set1(b);
818 }
819 else
820 {
821 fp tmp;
822 fp_copy(tmp, a);
823 fp_dec(tmp, tmp);
824 mp_size_t pow_size = mpn_sec_powm_itch(NUMBER_OF_WORDS, NUMBER_OF_WORDS, NUMBER_OF_WORDS);
825 uint64_t tp_pow[pow_size];
826 mpn_sec_powm(b, tmp, NUMBER_OF_WORDS, e, NUMBER_OF_WORDS, p, NUMBER_OF_WORDS, tp_pow);
827 fp_enc(b, b);
828 }
829}
#define fp_enc
Definition fp-gmp.h:55
#define fp_dec
Definition fp-gmp.h:58

References a, fp_copy, fp_dec, fp_enc, and p.

◆ fp_random()

void fp_random ( fp a)

Definition at line 1047 of file fp-gmp.c.

1048{
1049 while (1)
1050 {
1051 randombytes(x, sizeof(fp));
1052 uint64_t m = ((uint64_t)1 << pbits % 64) - 1;
1053 x[NUMBER_OF_WORDS - 1] &= m;
1054
1055 for (size_t i = NUMBER_OF_WORDS - 1; i < NUMBER_OF_WORDS; --i)
1056 if (x[i] < p[i])
1057 return;
1058 else if (x[i] > p[i])
1059 break;
1060 }
1061}
void randombytes(void *x, size_t l)
Definition rng.c:8
#define pbits

References i, p, pbits, and randombytes().

Here is the call graph for this function:

◆ fp_sqr()

void fp_sqr ( fp b,
const fp a )

Definition at line 942 of file fp-gmp.c.

943{
944#ifdef MONTGOMERY
945 // fp_mul(b, a, a);
946 // CNT_FP_MUL_DEC();
947
948 uint64_t tmp[NUMBER_OF_WORDS * 2];
949 mpn_sqr(tmp, a, NUMBER_OF_WORDS);
950 fp_mont_redc(b, tmp);
951
952#else
953#ifndef USE_GMP_SEC_FUNCTIONS
954 uint64_t tmp[NUMBER_OF_WORDS * 2];
955 uint64_t thrash[NUMBER_OF_WORDS + 1];
956 mpn_sqr(tmp, a, NUMBER_OF_WORDS);
957 mpn_tdiv_qr(thrash, b, 0, tmp, 2 * NUMBER_OF_WORDS, p, NUMBER_OF_WORDS);
958#else
959 fp_mul(b, a, a);
961// mpn_sec_sqr(tmp, a, NUMBER_OF_WORDS, tp);
962// mpn_sec_div_r(tmp, 2 * NUMBER_OF_WORDS, p, NUMBER_OF_WORDS, tp);
963#endif
964#endif
966}
#define CNT_FP_SQR_INC()
Definition fp-counters.h:32
void fp_mont_redc(fp a, const uint64_t b[2 *NUMBER_OF_WORDS])

References a, CNT_FP_MUL_DEC, CNT_FP_SQR_INC, fp_mont_redc(), fp_mul, fp_squaring, and p.

Here is the call graph for this function:

◆ fp_squaring()

void fp_squaring ( uint64_t * c,
const uint64_t * a,
const uint64_t * b )

References a.

◆ fp_sub()

void fp_sub ( fp c,
const fp a,
const fp b )

Definition at line 874 of file fp-gmp.c.

875{
876 // mp_limb_t borrow = mpn_sub_n(c, a, b, NUMBER_OF_WORDS);
877 // CNT_FP_ADD_INC();
878 // if (borrow)
879 // {
880 // mpn_add_n(c, c, p, NUMBER_OF_WORDS);
881 // }
882
883 mpn_cnd_add_n(mpn_sub_n(c, a, b, NUMBER_OF_WORDS), c, c, p, NUMBER_OF_WORDS);
885}

References a, CNT_FP_ADD_INC, fp_sub_s, and p.

◆ fp_sub_s()

void fp_sub_s ( fp c,
const fp a,
const fp b )

References a.

◆ uintbig_add()

bool uintbig_add ( fp x,
fp const y,
fp const z )

◆ uintbig_bit()

long long uintbig_bit ( uintbig const * x,
uint64_t k )

◆ uintbig_mul3_64()

void uintbig_mul3_64 ( fp * x,
fp const * y,
uint64_t z )

◆ uintbig_set()

void uintbig_set ( uintbig * x,
uint64_t y )

◆ uintbig_sub()

bool uintbig_sub ( fp x,
fp const y,
fp const z )

Variable Documentation

◆ fp_0

const fp fp_0
extern

Definition at line 787 of file fp-gmp.c.

787{0x0};

◆ fp_1

const fp fp_1
extern

Definition at line 58 of file fp-karatsuba.h.

◆ fp_2

const fp fp_2
extern

◆ inv_min_p_mod_r

const fp inv_min_p_mod_r
extern

Definition at line 43 of file fp-karatsuba.h.

◆ p

const fp p
extern

Definition at line 54 of file fp-karatsuba.h.

◆ p_minus_2

const fp p_minus_2
extern

Definition at line 41 of file fp-karatsuba.h.

◆ r_squared_mod_p

const fp r_squared_mod_p
extern

◆ redc_alpha

const fp redc_alpha
extern

◆ uintbig_1

const fp uintbig_1
extern

◆ uintbig_1_ctidh

const uintbig uintbig_1_ctidh
extern

◆ uintbig_four_sqrt_p

const fp uintbig_four_sqrt_p
extern

◆ uintbig_p

const uintbig uintbig_p
extern