我有以下使用Eigen
矩阵的代码:
template<class T>
T lfactorial(T x)
{
return static_cast<T>(std::lgamma(x + 1));
};
void eigen1(const MatrixXd& m, const MatrixXd& a)
{
MatrixXd W = a.unaryExpr(ptr_fun(lfactorial<double>));
const auto sum = m.unaryExpr(ptr_fun(lfactorial<double>)).sum();
}
是否有更快的方法来计算矩阵W
以及sum
?
在我的程序中,我必须通过将一元表达式应用于相同的输入矩阵来计算大量矩阵。最好的方法是什么?
答案 0 :(得分:1)
lgamma函数最近已经added to the Eigen API,因此将在下一版本的Eigen中本地支持。
下一个版本即将发布,同时您可以在http://bitbucket.org/eigen/eigen/get/3.3-beta1.tar.bz2下载测试版