FK20 CUDA
fk20test.cu
Go to the documentation of this file.
1 // bls12_381: Arithmetic for BLS12-381
2 // Copyright 2022 Dag Arne Osvik
3 
4 #include "g1.cuh"
5 #include "fk20.cuh"
6 #include "fk20test.cuh"
7 #include "fk20_testvector.cuh"
8 
9 int main() {
10 
11  testinit();
12 
13  FK20TestFFT();
14  FK20TestPoly();
15  // FK20TestFFTRand(NULL);
16  // Luan's note: This function here hasn't been updated in a while.
17  // The scope of it is now covered by the 512 row tests, but can be useful
18  // for debugging future optimizations.
19 
20  return 0;
21 }
22 
24 // Useful functions for the falsifiability tests //
26 
35 void varMangle(fr_t *target, size_t size, unsigned step){
36  fr_t tmp;
37  if (target == NULL || size <= 0 || step <= 0)
38  return;
39 
40  for (int i = 0; i < size; i += step) {
41  if (i + step < size){
42  memcpy(tmp, target+i, sizeof(fr_t));
43  memcpy(target+i, target+i+1, sizeof(fr_t));
44  memcpy(target+i+1, tmp, sizeof(fr_t));
45  }
46  }
47 }
48 
57 void varMangle(g1p_t *target, size_t size, unsigned step){
58  g1p_t tmp;
59  if (target == NULL || size <= 0 || step <= 0)
60  return;
61 
62  for (int i = 0; i < size; i += step) {
63  if (i + step < size){
64  memcpy(&tmp, target+i, sizeof(g1p_t));
65  memcpy(target+i, target+i+1, sizeof(g1p_t));
66  memcpy(target+i+1, &tmp, sizeof(g1p_t));
67  }
68  }
69 }
70 
71 // vim: ts=4 et sw=4 si
void varMangle(fr_t *target, size_t size, unsigned step)
swap elements at positions multiple of step. Nondestructive, call a second time to undo the changes
Definition: fk20test.cu:35
int main()
Definition: fk20test.cu:9
void FK20TestFFT()
Definition: fk20test_fft.cu:24
void FK20TestPoly()
uint64_t fr_t[4]
Subgroup element stored as a 256-bit array (a 4-element little-endian array of uint64_t)....
Definition: fr.cuh:24
G1 point in projective coordinates.
Definition: g1.cuh:27
void testinit()
Sets a global variable to true if the STDOUT is a terminal. Needs to be done like so because while a ...
Definition: test.cu:18