1 #ifndef BBLAS_LEVEL3A1_HPP_ 2 #define BBLAS_LEVEL3A1_HPP_ 3 4 // IWYU pragma: private, include "bblas.hpp" 5 // IWYU pragma: friend ".*/bblas.*" 6 7 #include "bblas_mat64.hpp" 8 9 /**********************************************************************/ 10 /* level 3a (extension, matpoly_polmat): conversions. 11 * binary_polmat_to_matpoly (several variants, one obvious winner) 12 * binary_matpoly_to_polmat (several variants, one obvious winner) 13 * TODO: better naming. 14 */ 15 16 /* implemented here: 17 * - binary_matpoly_to_polmat ; takes an m*n matrix of polynomials of 18 * length len (all multiples of 64), and returns a length len 19 * polynomial of (m/64)*(n/64) block matrices, each block being a 20 * 64*64 matrix 21 * - binary_polmat_to_matpoly ; converse 22 */ 23 24 /* implementation details, variants */ 25 void binary_matpoly_to_polmat_simple_and_stupid(mat64 * dst, unsigned long const * src, unsigned int m, unsigned int n, unsigned int len); 26 void binary_polmat_to_matpoly_simple_and_stupid(unsigned long * dst, mat64 const * src, unsigned int m, unsigned int n, unsigned int len); 27 void binary_matpoly_to_polmat_nested_transpositions(mat64 * dst, unsigned long const * src, unsigned int m, unsigned int n, unsigned int len); 28 void binary_polmat_to_matpoly_nested_transpositions(unsigned long * dst, mat64 const * src, unsigned int m, unsigned int n, unsigned int len); 29 void binary_matpoly_transpose_to_polmat_nested_transpositions(mat64 * dst, unsigned long const * src, unsigned int m, unsigned int n, unsigned int len); 30 void binary_polmat_to_matpoly_transpose_nested_transpositions(unsigned long * dst, mat64 const * src, unsigned int m, unsigned int n, unsigned int len); 31 32 /* final exported choices */ 33 void binary_polmat_to_matpoly(unsigned long * dst, mat64 const * src, unsigned int m, unsigned int n, unsigned int len); 34 void binary_matpoly_to_polmat(mat64 * dst, unsigned long const * src, unsigned int m, unsigned int n, unsigned int len); 35 void binary_polmat_to_matpoly_transpose(unsigned long * dst, mat64 const * src, unsigned int m, unsigned int n, unsigned int len); 36 void binary_matpoly_transpose_to_polmat(mat64 * dst, unsigned long const * src, unsigned int m, unsigned int n, unsigned int len); 37 38 #endif /* BBLAS_LEVEL3A1_HPP_ */ 39