本征::矩阵模量无法编译

时间:2019-11-20 19:44:03

标签: eigen3

我按如下方式实现矩阵的模数,但是编译失败:

const double dPI = std::acos( double(-1.) );
using baseSpaceVd = Matrix<double, 4, 1>;
baseSpaceVd  M(0,1,2,3);

M = M.unaryExpr( []( const baseSpaceVd::Scalar x ) { return x%(2*dPI); } );

编译错误消息为:

../src/COpdCtrl.cpp: In lambda function:
../src/COpdCtrl.cpp:187:85: error: invalid operands of types ‘const Scalar {aka const double}’ and ‘double’ to binary ‘operator%’
   curGDerr = curGDerr.unaryExpr( []( const baseSpaceVd::Scalar x ) { return x%(2*dPI); } );

此修复程序有效,但恐怕会降低性能:

M = M.unaryExpr( []( const baseSpaceVd::Scalar x ) { return fmod( x, (2*dPI); } );

0 个答案:

没有答案