00001
00002
00003 inline _drovector operator*(const drovector& vec, const dgematrix& mat)
00004 {
00005 #ifdef CPPSL_DEBUG
00006 if( vec.L!=mat.M ){
00007 std::cerr << "[ERROR] operator*(const drovector&, const dgematrix&)"
00008 << std::endl
00009 << "These vector and matrix can not make a product." << std::endl
00010 << "Your input was (" << vec.L << ") * ("
00011 << mat.M << "x" << mat.N << ")." << std::endl;
00012 exit(1);
00013 }
00014 #endif//CPPSL_DEBUG
00015
00016 _drovector newvec(mat.N);
00017 pdgemv_( 'T', mat.M, mat.N, 1.0, mat.Array, 1, 1, mat.Desc,
00018 vec.Array, 1, 1, vec.Desc, 1, 0.0,
00019 newvec.Array, 1, 1, newvec.Desc, 1 );
00020
00021 return newvec;
00022 }