Let us walk on the 3-isogeny graph
Loading...
Searching...
No Matches
fp2.h File Reference
#include "../namespace.h"
#include "mulx/fp.h"
Include dependency graph for fp2.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  fp2
 

Macros

#define fp2_copy   COMMON(fp2_copy)
 
#define fp2_add   COMMON(fp2_add)
 
#define fp2_sub   COMMON(fp2_sub)
 
#define fp2_neg   COMMON(fp2_neg)
 
#define fp2_mul   COMMON(fp2_mul)
 
#define fp2_sqr   COMMON(fp2_sqr)
 
#define fp2_inv   COMMON(fp2_inv)
 
#define fp2_test   COMMON(fp2_test)
 

Typedefs

typedef struct fp2 fp2
 

Functions

void fp2_copy (fp2 *x, const fp2 *y)
 
void fp2_add (fp2 *x, const fp2 *y, const fp2 *z)
 
void fp2_sub (fp2 *x, const fp2 *y, const fp2 *z)
 
void fp2_neg (fp2 *x, const fp2 *y)
 
void fp2_mul (fp2 *x, const fp2 *y, const fp2 *z)
 
void fp2_sqr (fp2 *x, const fp2 *y)
 
void fp2_inv (fp2 *x)
 

Macro Definition Documentation

◆ fp2_add

#define fp2_add   COMMON(fp2_add)

Definition at line 24 of file fp2.h.

◆ fp2_copy

#define fp2_copy   COMMON(fp2_copy)

Definition at line 21 of file fp2.h.

◆ fp2_inv

#define fp2_inv   COMMON(fp2_inv)

Definition at line 39 of file fp2.h.

◆ fp2_mul

#define fp2_mul   COMMON(fp2_mul)

Definition at line 33 of file fp2.h.

◆ fp2_neg

#define fp2_neg   COMMON(fp2_neg)

Definition at line 30 of file fp2.h.

◆ fp2_sqr

#define fp2_sqr   COMMON(fp2_sqr)

Definition at line 36 of file fp2.h.

◆ fp2_sub

#define fp2_sub   COMMON(fp2_sub)

Definition at line 27 of file fp2.h.

◆ fp2_test

void fp2_test   COMMON(fp2_test)

Definition at line 42 of file fp2.h.

Referenced by main().

Typedef Documentation

◆ fp2

typedef struct fp2 fp2

Function Documentation

◆ fp2_add()

void fp2_add ( fp2 x,
const fp2 y,
const fp2 z 
)

Definition at line 16 of file fp2.c.

17{
18 fp_add3(&(x->re), &(y->re), &(z->re));
19 fp_add3(&(x->im), &(y->im), &(z->im));
20}
fp re
Definition fp2.h:18
fp im
Definition fp2.h:18

References fp2::im, and fp2::re.

◆ fp2_copy()

void fp2_copy ( fp2 x,
const fp2 y 
)

Definition at line 10 of file fp2.c.

11{
12 fp_copy(x->re, y->re);
13 fp_copy(x->im, y->im);
14}
#define fp_copy
Definition fp-gmp.h:79

References fp_copy, fp2::im, and fp2::re.

◆ fp2_inv()

void fp2_inv ( fp2 x)

Definition at line 59 of file fp2.c.

60{
61 fp t0, t1;
62
63 fp_sqr(t0, x->re);
64 fp_sqr(t1, x->im);
65 fp_add3(&t0, (const fp *)t0, (const fp *)t1);
66 fp_inv(t0);
67 fp_mul3(&(x->re), (const fp *)x->re, (const fp *)t0);
68 fp_mul3(&(x->im), (const fp *)x->im, (const fp *)t0);
69 fp_neg1(&(x->im));
70}
#define fp_sqr
Definition fp-gmp.h:73
uint64_t fp[NUMBER_OF_WORDS]
Definition fp-gmp.h:22
#define fp_inv
Definition fp-gmp.h:88
for i

References fp_inv, and fp_sqr.

◆ fp2_mul()

void fp2_mul ( fp2 x,
const fp2 y,
const fp2 z 
)

Definition at line 34 of file fp2.c.

35{
36 fp t0, t1;
37
38 fp_add3(&t0, &(y->re), &(y->im));
39 fp_add3(&t1, &(z->re), &(z->im));
40 fp_mul3(&t0, (const fp *)t0, (const fp *)t1);
41 fp_mul3(&t1, &(y->im), &(z->im));
42 fp_mul3(&(x->re), &(y->re), &(z->re));
43 fp_sub3(&(x->im), (const fp *)t0, (const fp *)t1);
44 fp_sub3(&(x->im), (const fp *)(x->im), (const fp *)(x->re));
45 fp_sub3(&(x->re), (const fp *)(x->re), (const fp *)t1);
46}

References fp2::im, and fp2::re.

◆ fp2_neg()

void fp2_neg ( fp2 x,
const fp2 y 
)

Definition at line 28 of file fp2.c.

29{
30 fp_neg2(&(x->re), &(y->re));
31 fp_neg2(&(x->im), &(y->im));
32}

References fp2::im, and fp2::re.

◆ fp2_sqr()

void fp2_sqr ( fp2 x,
const fp2 y 
)

Definition at line 48 of file fp2.c.

49{
50 fp sum, diff;
51
52 fp_add3(&sum, &(y->re), &(y->im));
53 fp_sub3(&diff, &(y->re), &(y->im));
54 fp_mul3(&(x->im), &(y->re), &(y->im));
55 fp_add3(&(x->im), (const fp *)(x->im), (const fp *)(x->im));
56 fp_mul3(&(x->re), (const fp *)sum, (const fp *)diff);
57}

References fp2::im, and fp2::re.

◆ fp2_sub()

void fp2_sub ( fp2 x,
const fp2 y,
const fp2 z 
)

Definition at line 22 of file fp2.c.

23{
24 fp_sub3(&(x->re), &(y->re), &(z->re));
25 fp_sub3(&(x->im), &(y->im), &(z->im));
26}

References fp2::im, and fp2::re.