inline DenseLinAlgPack::DVectorSlice AbstractLinAlgPack::dense_view( SpVectorSlice& sv_rhs ) { return sv_rhs.nz() ? DVectorSlice( &sv_rhs.begin()->value(), sv_rhs.nz(), 2 ) : DVectorSlice( NULL, 0, 0 ); }
inline const DenseLinAlgPack::DVectorSlice AbstractLinAlgPack::dense_view( const SpVectorSlice& sv_rhs ) { return sv_rhs.nz() ? DVectorSlice( &const_cast<SpVectorSlice&>(sv_rhs).begin()->value(), sv_rhs.nz(), 2 ) : DVectorSlice( NULL, 0, 0 ); }
inline const DVectorSlice DMatrixSlice::col(size_type j) const { validate_col_subscript(j); return DVectorSlice( const_cast<value_type*>(ptr_) + (j-1)*max_rows(), rows(), 1 ); }
inline DVectorSlice DMatrixSlice::col(size_type j) { validate_col_subscript(j); return DVectorSlice( ptr_ + (j-1)*max_rows(), rows(), 1 ); }
inline const DVectorSlice DMatrixSlice::row(size_type i) const { validate_row_subscript(i); return DVectorSlice( const_cast<value_type*>(ptr_) + (i-1), cols(), max_rows() ); }
inline DVectorSlice DMatrixSlice::row(size_type i) { validate_row_subscript(i); return DVectorSlice( ptr_ + (i-1), cols(), max_rows() ); }
inline DVectorSlice DMatrix::col(size_type j) { validate_col_subscript(j); return DVectorSlice( col_ptr(1) + (j-1) * rows(), rows(), 1 ); }
inline DVectorSlice DMatrix::row(size_type i) { validate_row_subscript(i); return DVectorSlice( col_ptr(1) + (i-1), cols(), rows() ); }