答案 0 :(得分:6)
由于大量数字的乘积可能会变得过大,因此通常最好将几何平均值计算为数字对数的普通算术平均值的指数。
C ++标准库提供log
表示自然对数,exp
表示使用base e 表示。因此:
#include <math.h>
auto geometric_mean( double const* const first, double const* const past_end )
-> double
{
double sum = 0;
for( double const* p = first; p != past_end; ++p )
{
sum += log( *p );
}
const int n = past_end - first;
return exp( sum/n );
}
您可以使用std::accumulate
。
免责声明:代码未触及编码器的手。
答案 1 :(得分:3)
您可以执行此操作pow(x, 1.0/m)
。与m相同。根
答案 2 :(得分:2)
使用以下内容:
#include <cmath>
...
double nth_root = std::pow(number, 1.0 / n);
答案 3 :(得分:0)
https://en.wikipedia.org/wiki/Nth_root
m
是根的程度,其下的产品是radicand。