27 lines
561 B
Plaintext
27 lines
561 B
Plaintext
|
#ifndef GFP_HEADER_CUH
|
||
|
#define GFP_HEADER_CUH
|
||
|
|
||
|
#include "../header.cuh"
|
||
|
|
||
|
using gfp_t = uint32_t;
|
||
|
#define gfp_bits 32
|
||
|
|
||
|
static_assert(sizeof(gfp_t) * 8 == gfp_bits);
|
||
|
|
||
|
static const gfp_t gfp = 65521;
|
||
|
|
||
|
static const gfp_t gfp_zero = (gfp_t)0;
|
||
|
static const gfp_t gfp_one = (gfp_t)1;
|
||
|
static const gfp_t gfp_fullmask = (gfp_t)0xFF'FF;
|
||
|
|
||
|
__managed__ gfp_t gfp_inv_table[gfp];
|
||
|
|
||
|
void init_inv_table()
|
||
|
{
|
||
|
gfp_inv_table[0] = 0;
|
||
|
gfp_inv_table[1] = 1;
|
||
|
for (int i = 2; i < gfp; ++i)
|
||
|
gfp_inv_table[i] = (gfp - gfp / i) * gfp_inv_table[gfp % i] % gfp;
|
||
|
}
|
||
|
|
||
|
#endif
|