23 printf(
"=== RUN %s\n", __func__);
28 for (
int i=3; i<770; i++) {
33 for (
int j=3; j<770; 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: fp_eq claims inequality between these values:\n", i, j);
53 printf(
"\t%016lX%016lX%016lX%016lX%016lX%016lX/\n",
56 printf(
"\t%016lX%016lX%016lX%016lX%016lX%016lX\n",
57 x[5], x[4], x[3], x[2], x[1], x[0]);
59 printf(
"\t%016lX%016lX%016lX%016lX%016lX%016lX/\n",
62 printf(
"\t%016lX%016lX%016lX%016lX%016lX%016lX\n",
63 y[5], y[4], y[3], y[2], y[1], y[0]);
65 printf(
"eq = %lx, neq = %lx\n", eq, neq);
71 printf(
"%d,%d: FAIL B: fp_eq claims equality between these values:\n", i, j);
73 printf(
"\t%016lX%016lX%016lX%016lX%016lX%016lX/\n",
76 printf(
"\t%016lX%016lX%016lX%016lX%016lX%016lX\n",
77 x[5], x[4], x[3], x[2], x[1], x[0]);
79 printf(
"\t%016lX%016lX%016lX%016lX%016lX%016lX/\n",
82 printf(
"\t%016lX%016lX%016lX%016lX%016lX%016lX\n",
83 y[5], y[4], 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: fp_neq claims inequality between these values:\n", i, j);
93 printf(
"\t%016lX%016lX%016lX%016lX%016lX%016lX/\n",
96 printf(
"\t%016lX%016lX%016lX%016lX%016lX%016lX\n",
97 x[5], x[4], x[3], x[2], x[1], x[0]);
99 printf(
"\t%016lX%016lX%016lX%016lX%016lX%016lX/\n",
102 printf(
"\t%016lX%016lX%016lX%016lX%016lX%016lX\n",
103 y[5], y[4], 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: fp_neq claims equality between these values:\n", i, j);
113 printf(
"\t%016lX%016lX%016lX%016lX%016lX%016lX/\n",
116 printf(
"\t%016lX%016lX%016lX%016lX%016lX%016lX\n",
117 x[5], x[4], x[3], x[2], x[1], x[0]);
119 printf(
"\t%016lX%016lX%016lX%016lX%016lX%016lX/\n",
122 printf(
"\t%016lX%016lX%016lX%016lX%016lX%016lX\n",
123 y[5], y[4], y[3], y[2], y[1], y[0]);
125 printf(
"eq = %lx, neq = %lx\n", eq, neq);
130 printf(
"%ld tests\n", count);
__device__ bool fp_neq(const fp_t &x, const fp_t &y)
Compares two fp_t residues.
__device__ __host__ void fp_cpy(fp_t &z, const fp_t &x)
Copy from x into z.
__device__ bool fp_eq(const fp_t &x, const fp_t &y)
Compares two residues modulo p.
__managed__ testval_t testval[TESTVALS]
__global__ void FpTestCmp(testval_t *testval)
Test for the comparison function in Fp; checks for inconsistencies in the following properties: