Lines Matching defs:felem
126 * A field element with 64-bit limbs is an 'felem'. One with 128-bit limbs is a
133 typedef limb felem[NLIMBS];
140 * bin66_to_felem takes a little-endian byte array and converts it into felem
143 static void bin66_to_felem(felem out, const u8 in[66])
157 * felem_to_bin66 takes an felem and serializes into a little endian, 66 byte
160 static void felem_to_bin66(u8 out[66], const felem in)
174 /* BN_to_felem converts an OpenSSL BIGNUM into an felem */
175 static int BN_to_felem(felem out, const BIGNUM *bn)
193 /* felem_to_BN converts an felem into an OpenSSL BIGNUM */
194 static BIGNUM *felem_to_BN(BIGNUM *out, const felem in)
206 static void felem_one(felem out)
219 static void felem_assign(felem out, const felem in)
233 static void felem_sum64(felem out, const felem in)
247 static void felem_scalar(felem out, const felem in, limb scalar)
261 static void felem_scalar64(felem out, limb scalar)
295 static void felem_neg(felem out, const felem in)
319 static void felem_diff64(felem out, const felem in)
345 static void felem_diff_128_64(largefelem out, const felem in)
404 static void felem_square_ref(largefelem out, const felem in)
406 felem inx2, inx4;
488 static void felem_mul_ref(largefelem out, const felem in1, const felem in2)
490 felem in2x2;
597 * felem_reduce converts a largefelem to an felem.
603 static void felem_reduce(felem out, const largefelem in)
679 void felem_square_wrapper(largefelem out, const felem in);
680 void felem_mul_wrapper(largefelem out, const felem in1, const felem in2);
682 static void (*felem_square_p)(largefelem out, const felem in) =
684 static void (*felem_mul_p)(largefelem out, const felem in1, const felem in2) =
687 void p521_felem_square(largefelem out, const felem in);
688 void p521_felem_mul(largefelem out, const felem in1, const felem in2);
710 void felem_square_wrapper(largefelem out, const felem in)
716 void felem_mul_wrapper(largefelem out, const felem in1, const felem in2)
729 static void felem_square_reduce(felem out, const felem in)
736 static void felem_mul_reduce(felem out, const felem in1, const felem in2)
751 static void felem_inv(felem out, const felem in)
753 felem ftmp, ftmp2, ftmp3, ftmp4;
851 /* This is 2^521-1, expressed as an felem */
852 static const felem kPrime = {
864 static limb felem_is_zero(const felem in)
866 felem ftmp;
942 static void felem_contract(felem out, const felem in)
1088 point_double(felem x_out, felem y_out, felem z_out,
1089 const felem x_in, const felem y_in, const felem z_in)
1092 felem delta, gamma, beta, alpha, ftmp, ftmp2;
1186 static void copy_conditional(felem out, const felem in, limb mask)
1206 static void point_add(felem x3, felem y3, felem z3,
1207 const felem x1, const felem y1, const felem z1,
1208 const int mixed, const felem x2, const felem y2,
1209 const felem z2)
1211 felem ftmp, ftmp2, ftmp3, ftmp4, ftmp5, ftmp6, x_out, y_out, z_out;
1430 static const felem gmul[16][3] = {
1547 const felem pre_comp[][3], felem out[3])
1582 static void batch_mul(felem x_out, felem y_out, felem z_out,
1585 const int mixed, const felem pre_comp[][17][3],
1586 const felem g_pre_comp[16][3])
1590 felem nq[3], tmp[4];
1624 memcpy(nq, tmp, 3 * sizeof(felem));
1654 memcpy(nq, tmp, 3 * sizeof(felem));
1667 felem g_pre_comp[16][3];
1846 felem z1, z2, x_in, y_in, x_out, y_out;
1883 static void make_points_affine(size_t num, felem points[][3],
1884 felem tmp_felems[])
1892 sizeof(felem),
1927 felem (*pre_comp)[17][3] = NULL;
1928 felem *tmp_felems = NULL;
1933 felem x_in, y_in, z_in, x_out, y_out, z_out;
1935 felem(*g_pre_comp)[3] = NULL;
1955 g_pre_comp = (felem(*)[3]) gmul;
2044 memcpy(pre_comp[i][1][0], x_out, sizeof(felem));
2045 memcpy(pre_comp[i][1][1], y_out, sizeof(felem));
2046 memcpy(pre_comp[i][1][2], z_out, sizeof(felem));
2089 mixed, (const felem(*)[17][3])pre_comp,
2090 (const felem(*)[3])g_pre_comp);
2095 NULL, mixed, (const felem(*)[17][3])pre_comp, NULL);
2125 felem tmp_felems[16];