Fabcoin Core  0.16.2
P2P Digital Currency
num.h
Go to the documentation of this file.
1 /**********************************************************************
2  * Copyright (c) 2013, 2014 Pieter Wuille *
3  * Distributed under the MIT software license, see the accompanying *
4  * file COPYING or http://www.opensource.org/licenses/mit-license.php.*
5  **********************************************************************/
6 
7 #ifndef SECP256K1_NUM_H
8 #define SECP256K1_NUM_H
9 
10 #ifndef USE_NUM_NONE
11 
12 #if defined HAVE_CONFIG_H
13 #include "libsecp256k1-config.h"
14 #endif
15 
16 #if defined(USE_NUM_GMP)
17 #include "num_gmp.h"
18 #else
19 #error "Please select num implementation"
20 #endif
21 
23 static void secp256k1_num_copy(secp256k1_num *r, const secp256k1_num *a);
24 
27 static void secp256k1_num_get_bin(unsigned char *r, unsigned int rlen, const secp256k1_num *a);
28 
30 static void secp256k1_num_set_bin(secp256k1_num *r, const unsigned char *a, unsigned int alen);
31 
33 static void secp256k1_num_mod_inverse(secp256k1_num *r, const secp256k1_num *a, const secp256k1_num *m);
34 
36 static int secp256k1_num_jacobi(const secp256k1_num *a, const secp256k1_num *b);
37 
39 static int secp256k1_num_cmp(const secp256k1_num *a, const secp256k1_num *b);
40 
42 static int secp256k1_num_eq(const secp256k1_num *a, const secp256k1_num *b);
43 
45 static void secp256k1_num_add(secp256k1_num *r, const secp256k1_num *a, const secp256k1_num *b);
46 
48 static void secp256k1_num_sub(secp256k1_num *r, const secp256k1_num *a, const secp256k1_num *b);
49 
51 static void secp256k1_num_mul(secp256k1_num *r, const secp256k1_num *a, const secp256k1_num *b);
52 
55 static void secp256k1_num_mod(secp256k1_num *r, const secp256k1_num *m);
56 
58 static void secp256k1_num_shift(secp256k1_num *r, int bits);
59 
61 static int secp256k1_num_is_zero(const secp256k1_num *a);
62 
64 static int secp256k1_num_is_one(const secp256k1_num *a);
65 
67 static int secp256k1_num_is_neg(const secp256k1_num *a);
68 
70 static void secp256k1_num_negate(secp256k1_num *r);
71 
72 #endif
73 
74 #endif /* SECP256K1_NUM_H */
#define a(i)
#define b(i, j)