c语言浮点数截断式输出,exp()函数的浮点实现是否等价于截断泰勒级数展开式?...

只是一个例子,你如何可以计算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多项式来最小化截止误差的程度。小心一点,你可以找到一个截止误差大大低于结果最低位的多项式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值