/*----- Basic setup -------------------------------------------------------*/
+typedef f25519_piece piece;
+
#if F25519_IMPL == 26
/* Elements x of GF(2^255 - 19) are represented by ten signed integers x_i: x
* = SUM_{0<=i<10} x_i 2^ceil(51i/2), mostly following Bernstein's original
* paper.
*/
-typedef int32 piece; typedef int64 dblpiece;
+ typedef int64 dblpiece;
typedef uint32 upiece; typedef uint64 udblpiece;
#define P p26
#define PIECEWD(i) ((i)%2 ? 25 : 26)
* except for pieces 5, 10, 15, 20, and 25 which have 9 bits.
*/
-typedef int16 piece; typedef int32 dblpiece;
+ typedef int32 dblpiece;
typedef uint16 upiece; typedef uint32 udblpiece;
#define P p10
#define PIECEWD(i) \
# define F25519_IMPL 10
#endif
+#if F25519_IMPL == 26
+ typedef int32 f25519_piece;
+#endif
+#if F25519_IMPL == 10
+ typedef int16 f25519_piece;
+#endif
+
/*----- Functions provided ------------------------------------------------*/
/* --- @f25519_set@ --- *
* (hence the name).
*/
+typedef fgoldi_piece piece;
+
#if FGOLDI_IMPL == 28
/* We represent an element of GF(p) as 16 28-bit signed integer pieces x_i:
* x = SUM_{0<=i<16} x_i 2^(28i).
*/
-typedef int32 piece; typedef int64 dblpiece;
+ typedef int64 dblpiece;
typedef uint32 upiece; typedef uint64 udblpiece;
#define PIECEWD(i) 28
#define NPIECE 16
* bits.
*/
-typedef int16 piece; typedef int32 dblpiece;
+ typedef int32 dblpiece;
typedef uint16 upiece; typedef uint32 udblpiece;
#define PIECEWD(i) ((i)%5 ? 11 : 12)
#define NPIECE 40
# define FGOLDI_IMPL 12
#endif
+#if FGOLDI_IMPL == 28
+ typedef int32 fgoldi_piece;
+#endif
+#if FGOLDI_IMPL == 12
+ typedef int16 fgoldi_piece;
+#endif
+
/*----- Functions provided ------------------------------------------------*/
/* --- @fgoldi_load@ --- *