来自数学公式的 C++ 数学表达式
C++ math expression from math formula
我尝试用 C++ 表达式转换这个数学公式
但我做错了什么
(log(1.0+a*(getpixel(j,k)))/log10( y ))/(log(2.0)/log10( y ))
首先,log
函数已经计算了底数 e
的对数。您不需要执行任何基础更改。
其次,将您的表达式拆分成多个部分,以便于编写和理解:
const double F = getpixel(j, k);
const double numerator = log(1.0 + a * F);
const double denominator = log(2.0);
const double result = numerator / denominator;
您可以选择进一步拆分(例如,也将 a*F
和 1 + a*F
分开存储)。
一旦你明白了,如果你真的想把它放在一行中,组合起来就很容易了(但没有必要;编译器通常会为你把常量表达式合并在一起):
const double result = log(1.0 + a * getpixel(j, k) / log(2.0);
我尝试用 C++ 表达式转换这个数学公式
但我做错了什么
(log(1.0+a*(getpixel(j,k)))/log10( y ))/(log(2.0)/log10( y ))
首先,log
函数已经计算了底数 e
的对数。您不需要执行任何基础更改。
其次,将您的表达式拆分成多个部分,以便于编写和理解:
const double F = getpixel(j, k);
const double numerator = log(1.0 + a * F);
const double denominator = log(2.0);
const double result = numerator / denominator;
您可以选择进一步拆分(例如,也将 a*F
和 1 + a*F
分开存储)。
一旦你明白了,如果你真的想把它放在一行中,组合起来就很容易了(但没有必要;编译器通常会为你把常量表达式合并在一起):
const double result = log(1.0 + a * getpixel(j, k) / log(2.0);