42 #ifndef COOM_PARTITION_OP_H
43 #define COOM_PARTITION_OP_H
47 namespace AbstractLinAlgPack {
64 template <
class T_Indice,
class T_Value>
69 Mp_StCOOM(gms_lhs, alpha, coom_rhs, trans_rhs);
84 template <
class T_Indice,
class T_Value>
89 Vp_StCOOMtV(vs_lhs, alpha, coom_rhs1, trans_rhs1, vs_rhs2);
93 template <
class T_Indice,
class T_Value>
105 Vp_StCOOMtV(vs_lhs, alpha, coom_rhs1, trans_rhs1, vs_rhs2);
116 template <
class T_Indice,
class T_Value>
121 Mp_StCOOMtM(gms_lhs, alpha, coom_rhs1, trans_rhs1, gms_rhs2, trans_rhs2);
125 template <
class T_Indice,
class T_Value>
131 Mp_StMtCOOM(gms_lhs, alpha, gms_rhs1, trans_rhs1, coom_rhs2, trans_rhs2);
138 template <
class T_Indice,
class T_Value,
class M2>
146 , coom_rhs1.
rows(), coom_rhs1.
cols(), trans_rhs1
147 , M2_rhs2.rows(), M2_rhs2.cols(), trans_rhs2 );
155 Mp_StMtM(gms_lhs,alpha,coom_rhs1,trans_rhs1,M2_rhs2,trans_rhs2);
162 template <
class M1,
class T_Indice,
class T_Value>
170 , M1_rhs1.rows(), M1_rhs1.cols(), trans_rhs1
171 , coom_rhs2.
rows(), coom_rhs2.
cols(), trans_rhs2 );
179 Mp_StMtM(gms_lhs,alpha,M1_rhs1,trans_rhs1,coom_rhs2,trans_rhs2);
201 template <
class T_Indice,
class T_Value>
206 Mp_StCOOM(gms_lhs, alpha, coom_rhs, trans_rhs);
221 template <
class T_Indice,
class T_Value>
226 Vp_StCOOMtV(vs_lhs, alpha, coom_rhs1, trans_rhs1, vs_rhs2);
230 template <
class T_Indice,
class T_Value>
242 Vp_StCOOMtV(vs_lhs, alpha, coom_rhs1, trans_rhs1, vs_rhs2);
253 template <
class T_Indice,
class T_Value>
258 Mp_StCOOMtM(gms_lhs, alpha, coom_rhs1, trans_rhs1, gms_rhs2, trans_rhs2);
262 template <
class T_Indice,
class T_Value>
268 Mp_StMtCOOM(gms_lhs, alpha, gms_rhs1, trans_rhs1, coom_rhs2, trans_rhs2);
275 template <
class T_Indice,
class T_Value,
class M2>
283 , coom_rhs1.
rows(), coom_rhs1.
cols(), trans_rhs1
284 , M2_rhs2.rows(), M2_rhs2.cols(), trans_rhs2 );
292 Mp_StMtM(gms_lhs,alpha,coom_rhs1,trans_rhs1,M2_rhs2,trans_rhs2);
299 template <
class M1,
class T_Indice,
class T_Value>
307 , M1_rhs1.rows(), M1_rhs1.cols(), trans_rhs1
308 , coom_rhs2.
rows(), coom_rhs2.
cols(), trans_rhs2 );
316 Mp_StMtM(gms_lhs,alpha,M1_rhs1,trans_rhs1,coom_rhs2,trans_rhs2);
325 #endif // COOM_PARTITION_OP_H
void Mp_StMtM(MatrixOp *mwo_lhs, value_type alpha, const MatrixOp &mwo_rhs1, BLAS_Cpp::Transp trans_rhs1, const MatrixOp &mwo_rhs2, BLAS_Cpp::Transp trans_rhs2, value_type beta=1.0)
mwo_lhs = alpha * op(mwo_rhs1) * op(mwo_rhs2) + beta * mwo_lhs (right) (xGEMM).
size_type cols() const
Return the number of columns.
RTOp_value_type value_type
void Mp_StMtCOOM(DMatrixSlice *gms_lhs, value_type alpha, const DMatrixSlice &gms_rhs1, BLAS_Cpp::Transp trans_rhs1, const T_COOM &coom_rhs2, BLAS_Cpp::Transp trans_rhs2)
gms_lhs += alpha * op(gms_rhs1) * op(coom_rhs2) (left) (BLAS xGEMM)
void Mp_MtM_assert_sizes(size_type m_lhs_rows, size_type m_lhs_cols, BLAS_Cpp::Transp trans_lhs, size_type m_rhs1_rows, size_type m_rhs1_cols, BLAS_Cpp::Transp trans_rhs1, size_type m_rhs2_rows, size_type m_rhs2_cols, BLAS_Cpp::Transp trans_rhs2)
op(m_lhs) += op(m_rhs1) * op(m_rhs2)
void Mp_StCOOMtM(DMatrixSlice *gms_lhs, value_type alpha, const T_COOM &coom_rhs1, BLAS_Cpp::Transp trans_rhs1, const DMatrixSlice &gms_rhs2, BLAS_Cpp::Transp trans_rhs2)
gms_lhs += alpha * op(coom_rhs1) * op(gms_rhs2) (right) (BLAS xGEMM)
void Mt_S(DMatrixSlice *gms_lhs, value_type alpha)
gms_lhs *= alpha (BLAS xSCAL)
void Mp_StM(MatrixOp *mwo_lhs, value_type alpha, const MatrixOp &M_rhs, BLAS_Cpp::Transp trans_rhs)
void Vp_StMtV(VectorMutable *v_lhs, value_type alpha, const MatrixOp &M_rhs1, BLAS_Cpp::Transp trans_rhs1, const Vector &v_rhs2, value_type beta=1.0)
v_lhs = alpha * op(M_rhs1) * v_rhs2 + beta * v_lhs (BLAS xGEMV)
Class for the transpose of a Partition.
void Mp_StCOOM(DMatrixSlice *gms_lhs, value_type alpha, const T_COOM &coom_rhs, BLAS_Cpp::Transp trans_rhs)
gms_lhs += alpha * op(coom_rhs) (time = O(coom_rhs.nz(), space = O(1))
void Vp_StCOOMtV(DVectorSlice *vs_lhs, value_type alpha, const T_COOM &coom_rhs1, BLAS_Cpp::Transp trans_rhs1, const DVectorSlice &vs_rhs2)
vs_lhs += alpha * op(coom_rhs1) * vs_rhs2 (BLAS xGEMV) (time = O(coom_rhs.nz(), space = O(1)) ...
size_type rows() const
Return the number of rows.
void Vt_S(DVectorSlice *vs_lhs, value_type alpha)
vs_lhs *= alpha (BLAS xSCAL) (*** Note that alpha == 0.0 is handeled as vs_lhs = 0.0)
Class for a partition or a set of continous partitions in a partitioned COO matrix.