如何找出在<cmath>的C数字库函数中构建的exp()的内容

时间:2015-08-22 17:43:33

标签: c++ function cmath

我最近决定建立一个简单的计算器程序,但当涉及到指数时,我迷失了。好的,你可以使用,但我宁愿知道他们如何解决该功能的问题,除了不可能的if语句之外,例如     如果(Y == 2){     X = X X;     }     否则if(y == 3){     X = X X * X;     } 等等......那么,exp()是如何做到的,我怎么能找到它?

1 个答案:

答案 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   更小的价值。

     
      
  1. 分割x:写x = n + r,其中n是   与x最接近的整数,r是介于-½和+ 1/2之间的实数。那么e ^ x = e ^ n·e ^ r。

  2.   
  3. 评估e ^ n:将数字e乘以n次。至14位数,e   = 2.7182818284590。乘法可以非常有效地完成。例如,如果是,则可以仅用3次乘法来评估e 8   写作(((e)2)2)2。进一步提高各种效率   e的整数幂可以计算一次并存储在查找中   表

  4.   
  5. 使用多项式计算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

  6.   

修改

如果您对GNU libc库中的原始实现感兴趣,那么您可以从here下载源代码。