在Javascript中实现平方根方法

Implementation of square root method in Javascript

本文关键字:平方根 方法 实现 Javascript      更新时间:2023-09-26

我和我的合作伙伴正在开发一个确定性物理引擎,该引擎将在各种平台上完全相同地运行。为了制作这样的东西,我们使用了不动点或截断浮点数学(我们稍后会计算出来)。然而,为了将引擎移植到Javascript,我们必须确保我们将使用的Javascript中的双精度浮点操作与我们将在桌面端口中使用的任何操作一致。

考虑到这一点,我的问题是:Math.sqrt()是如何在Javascript中实现的?如果浏览器之间存在不同的实现,那么这些实现是什么?或者,如果前面的问题没有确定的答案,那么Math.sqrt()可以产生的最大错误量是多少?

我们不喜欢编写自己的平方根函数,因为本机实现的Math.sqrt()总是优于我们用Javascript编写的函数。

ECMA-262(ECMAScript 5.1规范)不需要Math.sqrt的特定实现,只需要异常数值(NaN-0等)的特定结果:

15.8.2.17平方英尺(x)

返回x的平方根的实现相关近似值。

  • 如果x是NaN,则结果为NaN
  • 如果x小于0,则结果为NaN
  • 如果x是+0,则结果是+0
  • 如果x为-0,则结果为-0
  • 如果x是+Infinity,则结果为+Infinity