VectorBase<scalar,index,SizeAtCompileTime>::VectorBase( const VectorBase& vec ) : Array(), AbstractVector() { if (vec.isReferred()) { // the vector is a referred vector this->setReferredArray(vec.size(),const_cast<scalar*>(vec.dataPtr()),vec.interval()); } else{ // copy the vector data this->setArray(vec.size(),vec.dataPtr(),vec.interval()); } }
typename VectorBase<scalar,index,SizeAtCompileTime>::scalar VectorBase<scalar,index,SizeAtCompileTime>::dot(const VectorBase<scalar,index,S> &vec) const { if(this->size()!=vec.size()) { std::cerr<<"one size is "<<this->size()<<" and another size is "<<vec.size()<<std::endl; throw COException("VectorBase dot operation error: the length of two VectorBases do not equal to each other"); } else{ scalar sum = blas::copt_blas_dot(this->size(),this->dataPtr(),this->interval(),vec.dataPtr(),vec.interval()); return sum; } }