只是一个例子,你如何可以计算EXP(X):
如果x是相当大的,那么结果为+ INF。如果x很小,那么结果为0.
设k = round(x/ln 2)。那么exp(x)= 2^k * exp(x-k ln 2)。 2^k很容易计算。一个小问题是计算x - k ln 2而没有任何舍入误差。这很容易:让L1 = ln 2舍入为35比特,并且L2 = ln 2 -L1。 k是小整数,所以k * L1没有舍入误差,也没有x - k * L1;那么我们减去小的k * L2,因此几乎没有舍入误差。我们计算k = round(x *(1/ln 2))。为了更快地做到这一点(没有除法),我们计算k = round(x *(1/ln 2))。并且我们检查x是否接近于零,因此不需要整个计算。无论如何,我们现在计算exp(x),其结果在sqrt(1/2)和sqrt(2)之间。
您可以使用泰勒多项式计算exp(x)。相反,你可能会用一个Chebychev多项式来最小化截止误差的程度。小心一点,你可以找到一个截止误差大大低于结果最低位的多项式。