7#ifndef SECP256K1_ECMULT_GEN_COMPUTE_TABLE_IMPL_H 
    8#define SECP256K1_ECMULT_GEN_COMPUTE_TABLE_IMPL_H 
   18    size_t points = ((size_t)1) << (teeth - 1);
 
   19    size_t points_total = points * blocks;
 
   33    for (i = 255; i >= 0; --i) {
 
   49    for (block = 0; block < blocks; ++block) {
 
   54        for (tooth = 0; tooth < teeth; ++tooth) {
 
   63            if (block + tooth != blocks + teeth - 2) {
 
   65                for (bit_off = 1; bit_off < spacing; ++bit_off) {
 
   81        for (tooth = 0; tooth < teeth - 1; ++tooth) {
 
   82            size_t stride = ((size_t)1) << tooth;
 
   84            for (index = 0; index < stride; ++index, ++vs_pos) {
 
   94    for (block = 0; block < blocks; ++block) {
 
   96        for (index = 0; index < points; ++index) {
 
static void secp256k1_ecmult_gen_compute_table(secp256k1_ge_storage *table, const secp256k1_ge *gen, int blocks, int teeth, int spacing)
 
static void secp256k1_gej_double_var(secp256k1_gej *r, const secp256k1_gej *a, secp256k1_fe *rzr)
Set r equal to the double of a.
 
static void secp256k1_gej_set_infinity(secp256k1_gej *r)
Set a group element (jacobian) equal to the point at infinity.
 
static void secp256k1_gej_add_ge_var(secp256k1_gej *r, const secp256k1_gej *a, const secp256k1_ge *b, secp256k1_fe *rzr)
Set r equal to the sum of a and b (with b given in affine coordinates).
 
static int secp256k1_gej_eq_ge_var(const secp256k1_gej *a, const secp256k1_ge *b)
Check two group elements (jacobian and affine) for equality in variable time.
 
static void secp256k1_gej_add_var(secp256k1_gej *r, const secp256k1_gej *a, const secp256k1_gej *b, secp256k1_fe *rzr)
Set r equal to the sum of a and b.
 
static int secp256k1_ge_is_infinity(const secp256k1_ge *a)
Check whether a group element is the point at infinity.
 
static void secp256k1_ge_set_all_gej_var(secp256k1_ge *r, const secp256k1_gej *a, size_t len)
Set group elements r[0:len] (affine) equal to group elements a[0:len] (jacobian).
 
static void secp256k1_ge_to_storage(secp256k1_ge_storage *r, const secp256k1_ge *a)
Convert a group element to the storage type.
 
static void secp256k1_gej_neg(secp256k1_gej *r, const secp256k1_gej *a)
Set r equal to the inverse of a (i.e., mirrored around the X axis)
 
static void secp256k1_scalar_half(secp256k1_scalar *r, const secp256k1_scalar *a)
Multiply a scalar with the multiplicative inverse of 2.
 
static uint32_t secp256k1_scalar_get_bits_limb32(const secp256k1_scalar *a, unsigned int offset, unsigned int count)
Access bits (1 < count <= 32) from a scalar.
 
static const secp256k1_scalar secp256k1_scalar_one
 
static const secp256k1_callback default_error_callback
 
#define VERIFY_CHECK(cond)
 
static SECP256K1_INLINE void * checked_malloc(const secp256k1_callback *cb, size_t size)
 
A group element in affine coordinates on the secp256k1 curve, or occasionally on an isomorphic curve ...
 
A group element of the secp256k1 curve, in jacobian coordinates.
 
A scalar modulo the group order of the secp256k1 curve.