FK20 CUDA
fk20test.cuh
Go to the documentation of this file.
1 // bls12_381: Arithmetic for BLS12-381
2 // Copyright 2022-2023 Dag Arne Osvik
3 // Copyright 2022-2023 Luan Cardoso dos Santos
4 
5 #ifndef FK20_TEST_CUH
6 #define FK20_TEST_CUH
7 
8 #include <stdio.h>
9 #include <unistd.h>
10 #include "test.h"
11 
12 
13 // Complete tests
14 void FK20TestFFT();
15 void FK20TestPoly();
16 void FK20TestFFTRand(FILE *inputStream);
17 
18 // Single tests
20 void fk20_poly2hext_fft_test(fr_t polynomial_l[4096], g1p_t xext_fft_l[16][512], g1p_t hext_fft_l[512]);
21 void fk20_poly2h_fft_test(fr_t polynomial_l[4096], g1p_t xext_fft_l[16][512], g1p_t h_fft_l[512]);
22 void fk20_msmloop(g1p_t hext_fft_l[512], fr_t toeplitz_coefficients_fft_l[16][512], g1p_t xext_fft_l[16][512]);
23 
24 void toeplitz_coefficients2toeplitz_coefficients_fft(fr_t toeplitz_coefficients_l[16][512],
25  fr_t toeplitz_coefficients_fft_l[16][512]);
26 void h2h_fft(g1p_t h_l[512], g1p_t h_fft_l[512]);
27 void h_fft2h(g1p_t h_fft_l[512], g1p_t h_l[512]);
28 void hext_fft2h(g1p_t hext_fft_l[512], g1p_t h_l[512]);
29 void hext_fft2h_fft(g1p_t hext_fft_l[512], g1p_t h_fft_l[512]);
30 
31 void fullTest();
33 
34 //Useful for the Falsifiability tests
35 void varMangle(fr_t *target, size_t size, unsigned step);
36 void varMangle(g1p_t *target, size_t size, unsigned step);
37 
38 
39 //void fk20_setup2xext_fft_test(g1p_t setup_l[4097], g1p_t xext_fft_l[16][512]); //deprecated
40 // void fk20_poly2toeplitz_coefficients_fft_test(fr_t polynomial_l[4096], fr_t toeplitz_coefficients__fftl[16][512]); //deprecated
41 #endif // FK20_TEST_CUH
42 
43 // vim: ts=4 et sw=4 si
__managed__ fr_t toeplitz_coefficients[512 *16][512]
__managed__ fr_t polynomial[512 *4096]
void h_fft2h(g1p_t h_fft_l[512], g1p_t h_l[512])
Test for g1p_ift: h_fft -> h.
void fk20_poly2toeplitz_coefficients_test(fr_t polynomial[4096], fr_t toeplitz_coefficients[16][512])
Test for fk20_poly2toeplitz_coefficients: polynomial -> toeplitz_coefficients.
void fk20_msmloop(g1p_t hext_fft_l[512], fr_t toeplitz_coefficients_fft_l[16][512], g1p_t xext_fft_l[16][512])
Test for fk20_msm: Toeplitz_coefficients+xext_fft -> hext_fft.
void fullTest()
void FK20TestFFT()
Definition: fk20test_fft.cu:24
void FK20TestPoly()
void h2h_fft(g1p_t h_l[512], g1p_t h_fft_l[512])
Test for g1p_fft: h -> h_fft.
Definition: fk20test_fft.cu:79
void fk20_poly2hext_fft_test(fr_t polynomial_l[4096], g1p_t xext_fft_l[16][512], g1p_t hext_fft_l[512])
Test for fk20_poly2hext_fft: polynomial -> hext_fft.
void hext_fft2h_fft(g1p_t hext_fft_l[512], g1p_t h_fft_l[512])
Test for fk20_hext_fft2h_fft: hext_fft -> h_fft.
void fk20_poly2h_fft_test(fr_t polynomial_l[4096], g1p_t xext_fft_l[16][512], g1p_t h_fft_l[512])
Test for fk20_poly2h_fft: polynomial -> h_fft.
void FK20TestFFTRand(FILE *inputStream)
void fullTestFalsifiability()
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
void toeplitz_coefficients2toeplitz_coefficients_fft(fr_t toeplitz_coefficients_l[16][512], fr_t toeplitz_coefficients_fft_l[16][512])
Test for fr_fft: toeplitz_coefficients -> toeplitz_coefficients_fft.
Definition: fk20test_fft.cu:44
void hext_fft2h(g1p_t hext_fft_l[512], g1p_t h_l[512])
Test for g1p_ift: hext_fft -> h.
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