Go to the documentation of this file. 32 #ifndef SHARK_LINALG_BASE_H 33 #define SHARK_LINALG_BASE_H 51 #include <boost/serialization/deque.hpp> 56 #define SHARK_VECTOR_MATRIX_TYPEDEFS(basetype, prefix) \ 57 typedef blas::vector< basetype > prefix##Vector; \ 58 typedef blas::vector< const basetype > Const##prefix##Vector; \ 59 typedef blas::matrix< basetype, blas::row_major > prefix##Matrix; \ 60 typedef blas::identity_matrix< basetype > prefix##Identity; \ 61 typedef blas::identity_matrix< basetype > prefix##IdentityMatrix; \ 62 typedef blas::scalar_matrix< basetype > prefix##ScalarMatrix; \ 63 typedef blas::vector_range< prefix##Vector > prefix##VectorRange; \ 64 typedef blas::vector_range< const prefix##Vector > Const##prefix##VectorRange; \ 65 typedef blas::matrix_row< prefix##Matrix > prefix##MatrixRow; \ 66 typedef blas::matrix_row< const prefix##Matrix > Const##prefix##MatrixRow; \ 67 typedef blas::matrix_column< prefix##Matrix > prefix##MatrixColumn; \ 68 typedef blas::matrix_column< const prefix##Matrix > Const##prefix##MatrixColumn; \ 69 typedef blas::matrix_range< prefix##Matrix > prefix##SubMatrix; \ 70 typedef blas::matrix_range< const prefix##Matrix > Const##prefix##SubMatrix; \ 71 typedef blas::compressed_vector< basetype > Compressed##prefix##Vector; \ 72 typedef blas::vector_range< Compressed##prefix##Vector > Compressed##prefix##VectorRange; \ 73 typedef blas::vector_range< const Compressed##prefix##Vector > ConstCompressed##prefix##VectorRange; \ 74 typedef blas::compressed_matrix< basetype > Compressed##prefix##Matrix; \ 75 typedef blas::matrix_row< Compressed##prefix##Matrix > Compressed##prefix##MatrixRow; \ 76 typedef blas::matrix_row< const Compressed##prefix##Matrix > ConstCompressed##prefix##MatrixRow; \ 77 typedef blas::matrix_column< Compressed##prefix##Matrix > Compressed##prefix##MatrixColumn; \ 78 typedef blas::matrix_column< const Compressed##prefix##Matrix > ConstCompressed##prefix##MatrixColumn; \ 79 typedef blas::matrix_range< Compressed##prefix##Matrix > Compressed##prefix##SubMatrix; \ 80 typedef blas::matrix_range< const Compressed##prefix##Matrix > ConstCompressed##prefix##SubMatrix;\ 81 typedef blas::diagonal_matrix<blas::vector< basetype > > prefix##DiagonalMatrix; 83 #define SHARK_VECTOR_MATRIX_ASSIGNMENT(prefix) \ 84 template<> struct VectorMatrixTraits< prefix##Vector >{ \ 85 typedef prefix##Matrix MatrixType;\ 86 typedef prefix##Matrix DenseMatrixType;\ 87 typedef prefix##Vector VectorType;\ 88 typedef prefix##Vector DenseVectorType;\ 89 typedef prefix##VectorRange SubType;\ 90 typedef prefix##VectorRange DenseSubType;\ 91 typedef Const##prefix##VectorRange ConstSubType;\ 92 typedef Const##prefix##VectorRange ConstDenseSubType;\ 94 template<> struct VectorMatrixTraits< Compressed##prefix##Vector >{ \ 95 typedef Compressed##prefix##Matrix MatrixType;\ 96 typedef prefix##Matrix DenseMatrixType;\ 97 typedef Compressed##prefix##Vector VectorType;\ 98 typedef prefix##Vector DenseVectorType;\ 99 typedef Compressed##prefix##VectorRange SubType;\ 100 typedef prefix##VectorRange DenseSubType;\ 101 typedef ConstCompressed##prefix##VectorRange ConstSubType;\ 102 typedef Const##prefix##VectorRange ConstDenseSubType;\ 104 template<> struct VectorMatrixTraits< prefix##VectorRange > { \ 105 typedef prefix##Matrix MatrixType;\ 106 typedef prefix##Matrix DenseMatrixType;\ 107 typedef prefix##Vector VectorType;\ 108 typedef prefix##Vector DenseVectorType;\ 109 typedef prefix##VectorRange SubType;\ 110 typedef prefix##VectorRange DenseSubType;\ 111 typedef Const##prefix##VectorRange ConstSubType;\ 112 typedef Const##prefix##VectorRange ConstDenseSubType;\ 114 template<> struct VectorMatrixTraits< Compressed##prefix##VectorRange > { \ 115 typedef Compressed##prefix##Matrix MatrixType;\ 116 typedef prefix##Matrix DenseMatrixType;\ 117 typedef Compressed##prefix##Vector VectorType;\ 118 typedef prefix##Vector DenseVectorType;\ 119 typedef Compressed##prefix##VectorRange SubType;\ 120 typedef prefix##VectorRange DenseSubType;\ 121 typedef ConstCompressed##prefix##VectorRange ConstSubType;\ 122 typedef Const##prefix##VectorRange ConstDenseSubType;\ 132 #undef SHARK_VECTOR_MATRIX_TYPEDEFS 137 template<
class VectorType>