mirror of
https://github.com/mii443/Weil-Pairing.git
synced 2025-08-22 16:35:30 +00:00
Update elliptic.h
This commit is contained in:
44
elliptic.h
44
elliptic.h
@ -1,10 +1,13 @@
|
||||
#include<stdio.h>
|
||||
#include<malloc.h>
|
||||
#include<math.h>
|
||||
#include<time.h>
|
||||
|
||||
#define lint long long
|
||||
|
||||
//define structure of element in finite fields
|
||||
typedef struct fpoint{
|
||||
int x,y;
|
||||
lint x,y;
|
||||
}FPOINT;
|
||||
|
||||
|
||||
@ -22,55 +25,56 @@ typedef struct point{
|
||||
FPOINT * ZERO, * ONE;//zero element in field
|
||||
POINT * O;//infinte point
|
||||
|
||||
FPOINT * newfpoint(int x, int y);
|
||||
FPOINT * newfpoint(lint x, lint y);
|
||||
|
||||
POINT * newpoint(int a, int b, int c, int d);
|
||||
POINT * newpoint(lint a, lint b, lint c, lint d);
|
||||
|
||||
CURVE * newcurve(FPOINT * A, FPOINT * B);
|
||||
|
||||
void freepoint(POINT * a);
|
||||
|
||||
int ABS(int a, int p);
|
||||
lint ABS(lint a, lint p);
|
||||
|
||||
int gcdEx(int a, int b, int *x, int *y);
|
||||
lint gcdEx(lint a, lint b, lint *x, lint *y);
|
||||
|
||||
int inver(int a, int p);
|
||||
lint inver(lint a, lint p);
|
||||
|
||||
bool equl(FPOINT * a, FPOINT * b);
|
||||
|
||||
bool equln(FPOINT * a, FPOINT * b, int p);
|
||||
bool equln(FPOINT * a, FPOINT * b, lint p);
|
||||
|
||||
bool pequl(POINT * a, POINT * b);
|
||||
|
||||
FPOINT * fneg(FPOINT * a, int p, FPOINT * result);
|
||||
FPOINT * fneg(FPOINT * a, lint p, FPOINT * result);
|
||||
|
||||
FPOINT * fadd(FPOINT * a, FPOINT * b, int p, FPOINT * result);
|
||||
FPOINT * fadd(FPOINT * a, FPOINT * b, lint p, FPOINT * result);
|
||||
|
||||
FPOINT * fminus(FPOINT * a, FPOINT * b, int p, FPOINT * result);
|
||||
FPOINT * fminus(FPOINT * a, FPOINT * b, lint p, FPOINT * result);
|
||||
|
||||
FPOINT * fmulti(FPOINT * a, FPOINT * b, int p, FPOINT * result);
|
||||
FPOINT * fmulti(FPOINT * a, FPOINT * b, lint p, FPOINT * result);
|
||||
|
||||
FPOINT * assign(FPOINT * a, FPOINT * b);
|
||||
|
||||
FPOINT * fpower(FPOINT * a, int n, int p, FPOINT * result);
|
||||
FPOINT * fpower(FPOINT * a, lint n, lint p, FPOINT * result);
|
||||
|
||||
FPOINT * inverse(FPOINT * a, int p, FPOINT * result);
|
||||
FPOINT * inverse(FPOINT * a, lint p, FPOINT * result);
|
||||
|
||||
FPOINT * fnmulti(FPOINT * a, int b, int p, FPOINT * result);
|
||||
FPOINT * fnmulti(FPOINT * a, lint b, lint p, FPOINT * result);
|
||||
|
||||
POINT * passign(POINT * a, POINT * b);
|
||||
|
||||
bool testpoint(POINT * p, CURVE * c, int p1);
|
||||
bool testpoint(POINT * p, CURVE * c, lint p1);
|
||||
|
||||
void showpoint(POINT * p);
|
||||
|
||||
POINT * pneg(POINT * a, int p, POINT * result);
|
||||
POINT * pneg(POINT * a, lint p, POINT * result);
|
||||
|
||||
POINT * add(POINT * p1, POINT * p2, CURVE * c, int p, POINT * result);
|
||||
POINT * add(POINT * p1, POINT * p2, CURVE * c, lint p, POINT * result);
|
||||
|
||||
POINT * minus(POINT * p1, POINT * p2, CURVE * c, int p, POINT * result);
|
||||
|
||||
POINT * ppower(POINT * a, int n, CURVE * c, int p, POINT * result);
|
||||
POINT * minus(POINT * p1, POINT * p2, CURVE * c, lint p, POINT * result);
|
||||
|
||||
POINT * ppower(POINT * a, lint n, CURVE * c, lint p, POINT * result);
|
||||
|
||||
bool millerrabin(lint n, lint r);
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user