23 printf(
"=== RUN %s\n", __func__);
28 for (
int i=2; i<514; i++) {
33 for (
int j=2; j<514; j++) {
45 printf(
"%d,%d: FAILED: inconsistent result, eq = %lx, neq = %lx\n", i, j, eq, neq);
48 if ((i == j) && !eq) {
51 printf(
"%d,%d: FAIL A: fr_eq claims inequality between these values:\n", i, j);
53 printf(
"\t%016lX%016lX%016lX%016lX/\n",
56 printf(
"\t%016lX%016lX%016lX%016lX\n",
57 x[3], x[2], x[1], x[0]);
59 printf(
"\t%016lX%016lX%016lX%016lX/\n",
62 printf(
"\t%016lX%016lX%016lX%016lX\n",
63 y[3], y[2], y[1], y[0]);
65 printf(
"eq = %lx, neq = %lx\n", eq, neq);
71 printf(
"%d,%d: FAIL B: fr_eq claims equality between these values:\n", i, j);
73 printf(
"\t%016lX%016lX%016lX%016lX/\n",
76 printf(
"\t%016lX%016lX%016lX%016lX\n",
77 x[3], x[2], x[1], x[0]);
79 printf(
"\t%016lX%016lX%016lX%016lX/\n",
82 printf(
"\t%016lX%016lX%016lX%016lX\n",
83 y[3], y[2], y[1], y[0]);
85 printf(
"eq = %lx, neq = %lx\n", eq, neq);
88 if ((i == j) && neq) {
91 printf(
"%d,%d: FAIL C: fr_neq claims inequality between these values:\n", i, j);
93 printf(
"\t%016lX%016lX%016lX%016lX/\n",
96 printf(
"\t%016lX%016lX%016lX%016lX\n",
97 x[3], x[2], x[1], x[0]);
99 printf(
"\t%016lX%016lX%016lX%016lX/\n",
102 printf(
"\t%016lX%016lX%016lX%016lX\n",
103 y[3], y[2], y[1], y[0]);
105 printf(
"eq = %lx, neq = %lx\n", eq, neq);
108 if ((i != j) && !neq) {
111 printf(
"%d,%d: FAIL D: fr_neq claims equality between these values:\n", i, j);
113 printf(
"\t%016lX%016lX%016lX%016lX/\n",
116 printf(
"\t%016lX%016lX%016lX%016lX\n",
117 x[3], x[2], x[1], x[0]);
119 printf(
"\t%016lX%016lX%016lX%016lX/\n",
122 printf(
"\t%016lX%016lX%016lX%016lX\n",
123 y[3], y[2], y[1], y[0]);
125 printf(
"eq = %lx, neq = %lx\n", eq, neq);
130 printf(
"%ld tests\n", count);
__managed__ testval_t testval[TESTVALS]
__device__ bool fr_eq(const fr_t &x, const fr_t &y)
Compares two residues modulo r.
__device__ bool fr_neq(const fr_t &x, const fr_t &y)
Compares two fr_t residues.
uint64_t fr_t[4]
Subgroup element stored as a 256-bit array (a 4-element little-endian array of uint64_t)....
__device__ __host__ void fr_cpy(fr_t &z, const fr_t &x)
Copy from x into z.
__global__ void FrTestCmp(testval_t *testval)
Test for the comparison function; checks for inconsistencies in the following properties: