如何获取阵列的基本10日志?

时间:2014-07-01 01:19:42

标签: c++ eigen

我想获得Eigen::Array的每个元素的基数为10的日志。

要获取自然日志,我只需根据文档执行array.log()http://eigen.tuxfamily.org/dox/classEigen_1_1Array.html

但我没有提到基数为10的日志。当然有一种方法可以在不写自己的情况下做到这一点吗?

目前我正在做类似array.unaryExpr(std::ptr_fun(std::log10))的工作似乎工作得很好,但我希望能在不影响性能的情况下更好地整理

1 个答案:

答案 0 :(得分:4)

使用math - 按自然日志(10)划分自然日志(数组)。这就是为什么许多计算器等不需要打扰实现每个基础。因为log_b(a) = ln(a)/ln(b).

我天真的计算科学猜测,无论如何,这将是计算它的最快方法,例如:因为e^x的泰勒展开仅仅sum(x^n/n!)超过n,而对于其他基数,将会有另一个指数因子来计算(可能首先乘以x)。 e在实际分析中是一个优雅的数字,就像计算机科学中的优雅数字一样。