00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef ALAP_VECTOR_MUTABLE_HPP
00030 #define ALAP_VECTOR_MUTABLE_HPP
00031
00032 #include "AbstractLinAlgPack_Vector.hpp"
00033
00034 namespace AbstractLinAlgPack {
00035
00059 class VectorMutable : virtual public Vector
00060 {
00061 public:
00062
00064 using Vector::get_sub_vector;
00066 using Vector::free_sub_vector;
00067
00070
00076 virtual VectorMutable& operator=(value_type alpha);
00077
00083 virtual VectorMutable& operator=(const Vector& v);
00084
00087 virtual VectorMutable& operator=(const VectorMutable& v);
00088
00105 virtual void set_ele( index_type i, value_type val );
00106
00138 virtual vec_mut_ptr_t sub_view( const Range1D& rng );
00139
00142 vec_mut_ptr_t sub_view( const index_type& l, const index_type& u );
00143
00148 virtual void zero();
00149
00155 virtual void axpy( value_type alpha, const Vector& x );
00156
00202 virtual void get_sub_vector( const Range1D& rng, RTOpPack::MutableSubVector* sub_vec );
00203
00218 virtual void commit_sub_vector( RTOpPack::MutableSubVector* sub_vec );
00219
00237 virtual void set_sub_vector( const RTOpPack::SparseSubVector& sub_vec );
00238
00249 virtual void Vp_StMtV(
00250 value_type alpha
00251 ,const GenPermMatrixSlice &P
00252 ,BLAS_Cpp::Transp P_trans
00253 ,const Vector &x
00254 ,value_type beta
00255 );
00256
00258
00261
00269 vec_ptr_t sub_view( const Range1D& rng ) const;
00270
00272
00273 };
00274
00275 inline
00277 void Vp_StMtV(
00278 VectorMutable *y
00279 ,value_type alpha
00280 ,const GenPermMatrixSlice &P
00281 ,BLAS_Cpp::Transp P_trans
00282 ,const Vector &x
00283 ,value_type beta = 1.0
00284 )
00285 {
00286 y->Vp_StMtV(alpha,P,P_trans,x,beta);
00287 }
00288
00289
00290
00291
00292 inline
00293 VectorMutable::vec_mut_ptr_t
00294 VectorMutable::sub_view( const index_type& l, const index_type& u )
00295 {
00296 return this->sub_view(Range1D(l,u));
00297 }
00298
00299 }
00300
00301 #endif // ALAP_VECTOR_MUTABLE_HPP