使用mathematica,我可以计算一个函数的数学表示,然后我想用C++ 编写该函数。
说我得到类似的东西:
f=Log[2*x+3*y]+Sin[4*x+6*y]
在这种情况下进行计算显然是有意义的:
temp=2*x+3*y
f=Log[temp]+Sin[2*temp]
有没有办法获得可以减少执行时间/操作次数/表达式大小的表达式或给定更复杂的数学表达式的任何好的度量?
使用mathematica,我可以计算一个函数的数学表示,然后我想用C++ 编写该函数。
说我得到类似的东西:
f=Log[2*x+3*y]+Sin[4*x+6*y]
在这种情况下进行计算显然是有意义的:
temp=2*x+3*y
f=Log[temp]+Sin[2*temp]
有没有办法获得可以减少执行时间/操作次数/表达式大小的表达式或给定更复杂的数学表达式的任何好的度量?
虽然它不适用于您的简单示例,但您可以尝试Mathematica中的以下内容
Experimental`OptimizeExpression[{Log[(2*x^3 + 3*y)^2] + Sin[2 (2*x^3 + 6*y)^2]}]
结果你得到
Experimental`OptimizedExpression[
Block[{Compile`$3, Compile`$4}, Compile`$3 = x^3;
Compile`$4 = 2 Compile`$3;
{Log[(Compile`$4 + 3 y)^2] + Sin[2 (Compile`$4 + 6 y)^2]}]]