42 #ifndef LIN_ALG_OP_PACK_DECL_H
43 #define LIN_ALG_OP_PACK_DECL_H
45 #include "DenseLinAlgPack_DVectorOp.hpp"
46 #include "DenseLinAlgPack_DMatrixOp.hpp"
48 namespace LinAlgOpPack {
50 typedef DenseLinAlgPack::value_type value_type;
57 using DenseLinAlgPack::Vt_S;
58 using DenseLinAlgPack::Vp_StV;
59 using DenseLinAlgPack::Vp_StMtV;
60 using DenseLinAlgPack::V_InvMtV;
61 using DenseLinAlgPack::Mp_StM;
62 using DenseLinAlgPack::Mp_StMtM;
63 using DenseLinAlgPack::M_StInvMtM;
112 void Vp_V(DVectorSlice* vs_lhs,
const V& V_rhs);
128 void assign(DVector* v_lhs,
const V& V_rhs);
136 void V_StV(DVector* v_lhs, value_type alpha,
const V& V_rhs);
144 void V_mV(DVector* v_lhs,
const V& V_rhs);
151 template <
class V1,
class V2>
152 void V_VpV(DVector* v_lhs,
const V1& V1_rhs1,
const V2& V2_rhs2);
159 template <
class V1,
class V2>
160 void V_VmV(DVector* v_lhs,
const V1& V1_rhs1,
const V2& V2_rhs2);
167 void V_StVpV(DVector* v_lhs, value_type alpha,
const V& V_rhs1
168 ,
const DVectorSlice& vs_rhs2);
184 void assign(DVectorSlice* vs_lhs,
const V& V_rhs);
192 void V_StV(DVectorSlice* vs_lhs, value_type alpha,
const V& V_rhs);
200 void V_mV(DVectorSlice* vs_lhs,
const V& V_rhs);
207 template <
class V1,
class V2>
208 void V_VpV(DVectorSlice* vs_lhs,
const V1& V1_rhs1,
const V2& V2_rhs2);
215 template <
class V1,
class V2>
216 void V_VmV(DVectorSlice* vs_lhs,
const V1& V1_rhs1,
const V2& V2_rhs2);
224 void V_StVpV(DVectorSlice* vs_lhs, value_type alpha,
const V& V_rhs1
225 ,
const DVectorSlice& vs_rhs2);
258 void Mp_M(DMatrixSlice* gms_lhs,
const M& M_rhs,
BLAS_Cpp::Transp trans_rhs);
282 void M_StM(DMatrix* v_lhs, value_type alpha,
const M& M_rhs
298 template <
class M1,
class M2>
307 template <
class M1,
class M2>
317 void M_StMpM(DMatrix* gm_lhs, value_type alpha,
const M& M_rhs1,
BLAS_Cpp::Transp trans_rhs1
334 void assign(DMatrixSlice* gms_lhs,
const M& M_rhs,
BLAS_Cpp::Transp trans_rhs);
342 void M_StM(DMatrixSlice* gms_lhs, value_type alpha,
const M& M_rhs
351 void M_mM(DMatrixSlice* gms_lhs,
const M& M_rhs,
BLAS_Cpp::Transp trans_rhs) ;
358 template <
class M1,
class M2>
359 void M_MpM(DMatrixSlice* gms_lhs,
const M1& M1_rhs1,
BLAS_Cpp::Transp trans_rhs1
367 template <
class M1,
class M2>
368 void M_MmM(DMatrixSlice* gms_lhs,
const M1& M1_rhs1,
BLAS_Cpp::Transp trans_rhs1
377 void M_StMpM(DMatrixSlice* gms_lhs, value_type alpha,
const M& M_rhs1,
BLAS_Cpp::Transp trans_rhs1
406 template <
class M,
class V>
407 void Vp_MtV(DVectorSlice* vs_lhs,
const M& M_rhs1,
BLAS_Cpp::Transp trans_rhs1
415 template <
class M,
class V>
416 void Vp_MtV(DVectorSlice* vs_lhs,
const M& M_rhs1,
BLAS_Cpp::Transp trans_rhs1
417 ,
const V& V_rhs2, value_type beta);
432 template <
class M,
class V>
433 void V_StMtV(DVector* v_lhs, value_type alpha,
const M& M_rhs1
441 template <
class M,
class V>
458 template <
class M,
class V>
459 void V_StMtV(DVectorSlice* vs_lhs, value_type alpha,
const M& M_rhs1
467 template <
class M,
class V>
468 void V_MtV(DVectorSlice* vs_lhs,
const M& M_rhs1,
BLAS_Cpp::Transp trans_rhs1
497 template <
class M1,
class M2>
498 void Mp_MtM(DMatrixSlice* gms_lhs,
const M1& M1_rhs1,
BLAS_Cpp::Transp trans_rhs1
506 template <
class M1,
class M2>
507 void Mp_MtM(DMatrixSlice* gms_lhs,
const M1& M1_rhs1,
BLAS_Cpp::Transp trans_rhs1
523 template <
class M1,
class M2>
524 void M_StMtM(DMatrix* gm_lhs, value_type alpha,
const M1& M1_rhs1
532 template <
class M1,
class M2>
533 void M_MtM(DMatrix* gm_lhs,
const M1& M1_rhs1
549 template <
class M1,
class M2>
550 void M_StMtM(DMatrixSlice* gms_lhs, value_type alpha,
const M1& M1_rhs1
558 template <
class M1,
class M2>
559 void M_MtM(DMatrixSlice* gms_lhs,
const M1& M1_rhs1
580 void Vp_V(DVectorSlice* vs_lhs,
const V& V_rhs) {
581 Vp_StV(vs_lhs,1.0,V_rhs);
587 void V_mV(DVector* v_lhs,
const V& V_rhs) {
588 V_StV(v_lhs,-1.0,V_rhs);
594 void V_mV(DVectorSlice* vs_lhs,
const V& V_rhs) {
595 V_StV(vs_lhs,-1.0,V_rhs);
604 void Mp_M(DMatrixSlice* gms_lhs,
const M& M_rhs,
BLAS_Cpp::Transp trans_rhs) {
605 Mp_StM(gms_lhs,1.0,M_rhs,trans_rhs);
612 M_StM(gm_lhs,-1.0,M_rhs,trans_rhs);
618 void M_mM(DMatrixSlice* gms_lhs,
const M& M_rhs,
BLAS_Cpp::Transp trans_rhs) {
619 M_StM(gms_lhs,-1.0,M_rhs,trans_rhs);
626 template <
class M,
class V>
628 void Vp_MtV(DVectorSlice* vs_lhs,
const M& M_rhs1,
BLAS_Cpp::Transp trans_rhs1
631 Vp_StMtV(vs_lhs,1.0,M_rhs1,trans_rhs1,V_rhs2);
635 template <
class M,
class V>
637 void Vp_MtV(DVectorSlice* vs_lhs,
const M& M_rhs1,
BLAS_Cpp::Transp trans_rhs1
638 ,
const V& V_rhs2, value_type beta)
640 Vp_StMtV(vs_lhs,1.0,M_rhs1,trans_rhs1,V_rhs2,beta);
647 template <
class M1,
class M2>
649 void Mp_MtM(DMatrixSlice* gms_lhs,
const M1& M1_rhs1,
BLAS_Cpp::Transp trans_rhs1
652 Mp_StMtM(gms_lhs,1.0,M1_rhs1,trans_rhs1,M2_rhs2,trans_rhs2);
656 template <
class M1,
class M2>
658 void Mp_MtM(DMatrixSlice* gms_lhs,
const M1& M1_rhs1,
BLAS_Cpp::Transp trans_rhs1
661 Mp_StMtM(gms_lhs,1.0,M1_rhs1,trans_rhs1,M2_rhs2,trans_rhs2,beta);
668 #endif // LIN_ALG_OP_PACK_DECL_H