43 #ifndef SPARSE_VECTOR_SLICE_OP_H
44 #define SPARSE_VECTOR_SLICE_OP_H
50 namespace AbstractLinAlgPack {
102 template<
class T_Ele>
110 template<
class T_Ele>
118 template<
class T_Ele>
126 template<
class T_Ele>
134 template<
class T_Ele>
138 Vp_StSV(vs_lhs, alpha, sv_rhs);
142 template<
class T_Ele>
147 Vp_StMtSV(vs_lhs, alpha, gms_rhs1, trans_rhs1, sv_rhs2);
151 template<
class T_Ele>
156 Vp_StMtSV(vs_lhs, alpha, tri_gms_rhs1, trans_rhs1, sv_rhs2);
160 template<
class T_Ele>
165 Vp_StMtSV(vs_lhs, alpha, sym_gms_rhs1, trans_rhs1, sv_rhs2);
178 template<
class M,
class T_Ele>
191 Vp_StMtV(vs_lhs,alpha,M_rhs1,trans_rhs1,sv_rhs2);
195 template<
class T_Ele>
200 {
Vp_StMtSVS(vs_lhs, alpha, gms_rhs1, trans_rhs1, sv_rhs2, beta); }
203 template<
class T_Ele>
208 {
Vp_StMtSVS(vs_lhs, alpha, tri_gms_rhs1, trans_rhs1, sv_rhs2, beta); }
211 template<
class T_Ele>
216 {
Vp_StMtSVS(vs_lhs, alpha, sym_gms_rhs1, trans_rhs1, sv_rhs2, beta); }
222 #endif // SPARSE_VECTOR_SLICE_OP_H
void Vp_StSV(DVectorSlice *vs_lhs, value_type alpha, const T_SpVec &sv_rhs)
vs_lhs += alpha * sv_rhs (BLAS xAXPY)
size_type dim() const
Returns the number of elements of the VectorSliceTmpl.
size_type dim() const
Return the number of elements in the full vector.
void Vt_S(VectorMutable *v_lhs, const value_type &alpha)
v_lhs *= alpha
RTOp_value_type value_type
Sparse Vector Slice class template.
void Vp_StV(VectorMutable *v_lhs, const value_type &alpha, const Vector &v_rhs)
v_lhs = alpha * v_rhs + v_lhs
value_type min_SV(const T_SpVec &sv_rhs)
result = min(sv_rhs)
void Vp_StMtSV(DVectorSlice *vs_lhs, value_type alpha, const DMatrixSlice &gms_rhs1, BLAS_Cpp::Transp trans_rhs1, const T_SpVec &sv_rhs2)
vs_lhs += alpha * op(gms_rhs1) * sv_rhs2 (BLAS xGEMV)
value_type norm_1_SV(const T_SpVec &sv_rhs)
result = ||sv_rhs||1 (BLAS xASUM)
value_type norm_inf_SV(const T_SpVec &sv_rhs)
result = ||sv_rhs||inf (BLAS IxAMAX)
value_type norm_2_SV(const T_SpVec &sv_rhs)
result = ||sv_rhs||2 (BLAS xNRM2)
const LAPACK_C_Decl::f_int & M
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)
value_type norm_inf(const SparseVectorSlice< T_Ele > &sv_rhs)
result = ||sv_rhs||inf (BLAS IxAMAX)
value_type dot(const Vector &v_rhs1, const Vector &v_rhs2)
result = v_rhs1' * v_rhs2
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)
value_type max_SV(const T_SpVec &sv_rhs)
result = max(sv_rhs)
value_type norm_2(const SparseVectorSlice< T_Ele > &sv_rhs)
result = ||sv_rhs||2 (BLAS xNRM2)
void Vp_MtV_assert_sizes(size_type v_lhs_size, size_type m_rhs1_rows, size_type m_rhs1_cols, BLAS_Cpp::Transp trans_rhs1, size_type v_rhs2_size)
v_lhs += op(m_rhs1) * v_rhs2
value_type min(const SparseVectorSlice< T_Ele > &sv_rhs)
result = min(sv_rhs)
value_type max(const SparseVectorSlice< T_Ele > &sv_rhs)
result = max(sv_rhs)
value_type norm_1(const SparseVectorSlice< T_Ele > &sv_rhs)
result = ||sv_rhs||1 (BLAS xASUM)
value_type dot_SV_V(const T_SpVec &sv_rhs1, const DVectorSlice &vs_rhs2)
result = dot(sv_rhs1,vs_rhs2) (BLAS xDOT)
value_type dot_V_SV(const DVectorSlice &vs_rhs1, const T_SpVec &sv_rhs2)
result = dot(vs_rhs1,sv_rhs2) (BLAS xDOT)
void Vp_StMtSVS(DVectorSlice *vs_lhs, value_type alpha, const M &M_rhs1, BLAS_Cpp::Transp trans_rhs1, const SparseVectorSlice< T_Ele > &sv_rhs2, value_type beta)
vs_lhs = alpha * op(M_rhs1) * sv_rhs2 + beta * vs_lhs