gpt4 book ai didi

c - Texas Instrument CLA float 反转技巧 - 它的目的是什么

转载 作者:行者123 更新时间:2023-12-04 02:33:06 24 4
gpt4 key购买 nike

我有这段由其他人编写的代码,它在 TI TMS320 命令律加速器上运行。因此它在大小和速度上都进行了优化。

为了得到 1/x,代码总是做这样的事情。

float32 y = __meinvf32(x); 
y = y * (2.0f - y*x);
y = y * (2.0f - y*x);

我找到了 this thread提出了类似的建议,但就我而言,最后没有夹紧。

谁能帮我理解这背后的意图是什么?

最佳答案

艾萨克·牛顿发现了这一点。

__meinvf32(x) 给出 1/x 的近似值,比如 1/x • (1+e),其中 e 是一些小的相对误差。

y = 1/x • (1+e)。然后,当我们计算 y • (2 − yx) 时,我们有:

  • y • (2 − yx) =
  • (1/x • (1+e)) • (2 − (1/x • (1+ e))•x) =
  • 1/x • (1+e) • (2 − (1+e)) =
  • 1/x • (2 + 2e − (1+e) − e(1 +e)) =
  • 1/x • (2 + 2e − 1 − ee e2) =
  • 1/x • (1 − e2).

由于 e 很小,e2 甚至更小。因此,通过计算 y • (2 − yx) 我们得到 1/x 的估计值比以前更近;相对误差只有 -e2 而不是 e。重复此操作再次改进估计(达到浮点精度的限制)。

通过对初始 e 边界的一些了解,我们可以计算需要重复多少次才能使估计尽可能接近正确的结果。

关于c - Texas Instrument CLA float 反转技巧 - 它的目的是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63062015/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com