我最近决定建立一个简单的计算器程序,但当涉及到指数时,我迷失了。好的,你可以使用,但我宁愿知道他们如何解决该功能的问题,除了不可能的if语句之外,例如 如果(Y == 2){ X = X X; } 否则if(y == 3){ X = X X * X; } 等等......那么,exp()是如何做到的,我怎么能找到它?
答案 0 :(得分:1)
来自An algorithm for calculating exp(x) or e^x:
计算exp(x)或e ^ x
的算法该算法可以计算exp(x)或e ^ x 仅使用加,减,乘的运算 师。基本思想是使用多项式近似 步骤3计算e ^ x。但因为这种近似只是 准确的小参数x我们必须采取步骤1和2来减少x 更小的价值。
分割x:写x = n + r,其中n是 与x最接近的整数,r是介于-½和+ 1/2之间的实数。那么e ^ x = e ^ n·e ^ r。
评估e ^ n:将数字e乘以n次。至14位数,e = 2.7182818284590。乘法可以非常有效地完成。例如,如果是,则可以仅用3次乘法来评估e 8 写作(((e)2)2)2。进一步提高各种效率 e的整数幂可以计算一次并存储在查找中 表
- 醇>
使用多项式计算e ^ r: EXP(r)= e ^ r = 1 + r +(r ^ 2)/ 2 +(r ^ 3)/ 6 + (r ^ 4)/ 24 +(r ^ 5)/ 120
对于介于-½和+ 1/2之间的r,此多项式精确到内部 ±0.00003
修改强>:
如果您对GNU libc库中的原始实现感兴趣,那么您可以从here下载源代码。