gpt4 book ai didi

javascript 使用 Math.exp 获取 Math.sinh 结果

转载 作者:行者123 更新时间:2023-11-29 15:31:09 25 4
gpt4 key购买 nike

我只是想为 Math.sinh 编写 polyfil here

这是在 javascript 中编写 jvm 所必需的 doppio

但问题是 Math.sinh(Double.MIN_VALUE) = 4.9E-324 的 java 结果而在 javascript 中它是 0,因为我使用的是 polyfil,它需要 Math.exp(4.9E-324)。

(Math.exp(x) - Math.exp(-x)) / 2;

首先 javascript 将 4.9E-324 转换为 5E-324,其次 Math.exp(4.9E-324) 或 Math.pow(Math.E, 4.9E-324) 结果为 1,然后结果为 (1-1)/2 那就是 0 :)另外,JS 中的 Number.MIN_VALUE 是 5E-324,相当于 Double.MIN_VALUE 中的 4.9E-324。

有什么方法可以避免使用 math.exp 或 Math.pow 或处理精度。我看过 bigdecimal 库,它也不起作用有没有其他方法来处理信号图注意我必须通过所有边界测试用例!!!

最佳答案

sinh(x) 的泰勒展开式是 x+x^3/3!+x^5/5!+x^7/7!+。 . . .这对 x 的所有值都收敛,但对于接近 0 的 x 收敛最快(并给出最好的结果)。

function mySinh(x) {
var returning = x,
xToN = x,
factorial = 1,
index = 1,
nextTerm = 1;
while ( nextTerm != 0 ) {
index++;
factorial *= index;
index++;
factorial *= index;
xToN *= x*x;
nextTerm = xToN/factorial;
returning += nextTerm;
}
return returning;
}

对于 x 小于 1E-108 的情况,nextTerm 会立即下溢到 0,而你只会得到 x

您从使用泰勒展开式切换到使用根据 Math.exp 的定义可能最终取决于您的测试用例正在查看的内容。

关于javascript 使用 Math.exp 获取 Math.sinh 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34743733/

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