来自数学公式的 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*F1 + a*F 分开存储)。

一旦你明白了,如果你真的想把它放在一行中,组合起来就很容易了(但没有必要;编译器通常会为你把常量表达式合并在一起):

const double result = log(1.0 + a * getpixel(j, k) / log(2.0);