如何找出 exp() 内置函数的 C 数字库<cmath>的内容



我最近决定构建一个简单的计算器程序,但是当涉及到指数时,我迷失了。好吧,你可以使用,但我更想知道他们是如何解决这个函数的问题的,而不是一堆不可能的if语句。如果(y = = 2) {x = x ;}否则if (y==3){x = x x *;}等等......那么,exp()是怎么做的,我怎么知道呢?

From计算exp(x)或e^x的算法:

计算exp(x)或e^x的算法

该算法可以计算exp(x)或e^x只使用加法,减法,乘法和部门。基本思想是用多项式近似第三步计算e^x。但是因为这个近似只有对于小的参数x是精确的,我们必须采取步骤1和2来减小x到一个较小的值。

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

  2. 计算e^n:将数字e乘以n次。到14位,e= 2.7182818284590。乘法运算很有效。例如,e8只需要3次乘法就可以求出写成((e) 2) 2。进一步提高各种效率e的整数次幂可以计算一次并存储在查找中表。

  3. 评估e ^ r使用多项式: EXP (r) = e ^ r = 1 + r + (r ^ 2)/2 + (r ^ 3)/24 + 6 + (r ^ 4)/(r ^ 5)/120

    对于r在- 1/2和+ 1/2之间,该多项式精确到内±0。0.00003。

编辑:

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

相关内容

最新更新