27 #ifndef ADP_XOR_FI_COUNT_ODIFF_H
28 #define ADP_XOR_FI_COUNT_ODIFF_H
30 #define ADP_XOR_FI_COUNT_MSIZE 16
31 #define ADP_XOR_FI_COUNT_NMATRIX_3D 8
32 #define ADP_XOR_FI_COUNT_NMATRIX_2D 4
33 #define ADP_XOR_FI_COUNT_ISTATE 4 // s = 4: 0 0 1 0
35 void adp_xor_fi_count_odiff_alloc_matrices_3d(gsl_matrix* P[2][2][2]);
36 void adp_xor_fi_count_odiff_free_matrices_3d(gsl_matrix* P[2][2][2]);
37 void adp_xor_fi_count_odiff_alloc_matrices_2d(gsl_matrix* P[2][2]);
38 void adp_xor_fi_count_odiff_free_matrices_2d(gsl_matrix* P[2][2]);
39 void adp_xor_fi_count_odiff_matrices_3d_to_2d(gsl_matrix* P[2][2][2], gsl_matrix* PP[2][2]);
40 void adp_xor_fi_count_odiff_sf(gsl_matrix* P[2][2][2], gsl_matrix* A[2][2][2]);
41 double adp_xor_fi_count_odiff_3d(gsl_matrix* A[2][2][2], uint32_t a, uint32_t db);
42 double adp_xor_fi_count_odiff_2d(gsl_matrix* A[2][2], uint32_t a, uint32_t db);
43 double adp_xor_fi_count_odiff_exper(
const uint32_t a,
const uint32_t db);
44 void adp_xor_fi_matrix_to_arrey_2d(gsl_matrix* A[2][2],
45 uint32_t M[2][2][ADP_XOR_FI_COUNT_MSIZE][ADP_XOR_FI_COUNT_MSIZE]);
46 void adp_xor_fi_matrix_to_arrey_3d(gsl_matrix* A[2][2][2],
47 uint32_t M[2][2][2][ADP_XOR_FI_COUNT_MSIZE][ADP_XOR_FI_COUNT_MSIZE]);
48 uint32_t adp_xor_fi_minimize_matrix_2d(gsl_matrix* A[2][2],
49 uint32_t C[2][2][ADP_XOR_FI_COUNT_MSIZE][ADP_XOR_FI_COUNT_MSIZE]);
50 uint32_t adp_xor_fi_minimize_matrix_3d(gsl_matrix* A[2][2][2],
51 uint32_t C[2][2][2][ADP_XOR_FI_COUNT_MSIZE][ADP_XOR_FI_COUNT_MSIZE]);
52 void adp_xor_fi_count_odiff_print_matrices_sage_2d(gsl_matrix* A[2][2]);
53 void adp_xor_fi_count_odiff_min_set_size_spos(gsl_matrix* P[2][2]);
54 void adp_xor_fi_count_odiff_min_set_size_i(uint32_t k, uint32_t n, uint32_t max_cnt, gsl_matrix* P[2][2],
55 gsl_vector* C_in, uint32_t S_in[
WORD_SIZE]);
58 #endif // #ifndef ADP_XOR_FI_COUNT_ODIFF_H
#define WORD_SIZE
Definition: common.hh:119