Let us walk on the 3-isogeny graph
Loading...
Searching...
No Matches
fp.h
Go to the documentation of this file.
1//
2// Prime field arithmetic GF(p)
3//
4
5#ifndef SSEC_PRIME_FIELD_H
6#define SSEC_PRIME_FIELD_H
7
8#include <stdint.h>
9#include "rng.h"
10#include "parameters.h"
11
12typedef uint64_t fp_t[FIELD_64BITS_WORDS];
13
14
15// Assembly coded functions
16extern void fp_add(uint64_t* output, const uint64_t* input_a, const uint64_t* input_b);
17extern void fp_sub(uint64_t* output, const uint64_t* input_a, const uint64_t* input_b);
18extern void fp_mul(uint64_t* output, const uint64_t* input_a, const uint64_t* input_b);
19extern void fp_sqr(uint64_t* output, const uint64_t* input_a);
20
21
22// C coded functions
23void fp_neg(fp_t output, const fp_t input);
24
25void fp_set_to_one(fp_t output);
26void fp_set_to_zero(fp_t output);
27void fp_copy(fp_t output, const fp_t input);
28void fp_cset(fp_t output, const fp_t input, uint64_t input_mask);
29void fp_cswap(fp_t input_a, fp_t input_b, uint64_t input);
30
31void fp_sample(fp_t output);
32
33void fp_inv(fp_t output, const fp_t input);
34void fp_half(fp_t output, const fp_t input);
35
36void fp_to_mont(fp_t output, const fp_t input);
37void fp_from_mont(fp_t output, const fp_t input);
38
39int64_t fp_is_zero(const fp_t input);
40uint8_t fp_is_equal(const fp_t input_a, const fp_t input_b);
41uint8_t fp_is_smaller(const fp_t input1, const fp_t input2);
42uint8_t fp_is_square(const fp_t input);
43
44void fp_sqrt(fp_t output, const fp_t input);
45void fp_curt(fp_t output, const fp_t input);
46
47#endif // SSEC_PRIME_FIELD_H
#define fp_sqr
Definition fp-gmp.h:73
#define fp_sub
Definition fp-gmp.h:67
#define fp_mul
Definition fp-gmp.h:70
#define fp_inv
Definition fp-gmp.h:88
#define fp_add
Definition fp-gmp.h:64
#define fp_copy
Definition fp-gmp.h:79
#define fp_cswap
Definition fp-gmp.h:82
int64_t fp_is_zero(const fp_t input)
Definition fp.c:112
uint64_t fp_t[FIELD_64BITS_WORDS]
Definition fp.h:12
void fp_sample(fp_t output)
Definition fp.c:51
void fp_curt(fp_t output, const fp_t input)
Definition fp.c:189
void fp_to_mont(fp_t output, const fp_t input)
Definition fp.c:99
void fp_neg(fp_t output, const fp_t input)
Definition fp.c:9
uint8_t fp_is_equal(const fp_t input_a, const fp_t input_b)
Definition fp.c:122
void fp_set_to_zero(fp_t output)
Definition fp.c:19
void fp_cset(fp_t output, const fp_t input, uint64_t input_mask)
Definition fp.c:28
void fp_half(fp_t output, const fp_t input)
Definition fp.c:84
void fp_from_mont(fp_t output, const fp_t input)
Definition fp.c:104
void fp_sqrt(fp_t output, const fp_t input)
Definition fp.c:168
uint8_t fp_is_smaller(const fp_t input1, const fp_t input2)
Definition fp.c:143
uint8_t fp_is_square(const fp_t input)
Definition fp.c:148
void fp_set_to_one(fp_t output)
Definition fp.c:14
#define FIELD_64BITS_WORDS
Definition p254.h:9