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