无论是被称为
假设b是有理数:b=c/d。现在我们看一下c和d的奇偶性:
- d为偶数:没有实数x-> NaN或错误 - d是奇数,c是偶数:正x - d是奇数,c是奇数:负x
浮点数存储在特定格式中,这意味着如果它被字面解释,它将始终是偶数d(实际上是2的幂)。由于这些信息在计算中丢失,无法知道c和d的实际奇偶性。只能猜测。
因此,我的猜测是-它试图找到一个接近于b的有理数c/d,其中d是奇数,且c和d都小于某个阈值t。更小的t意味着它可以更确定它是正确的,但它将在较少的数字上工作。如果成功,则使用c的奇偶性。否则,假装d是偶数。毕竟,浮点数可以是任何东西,数学库不想通过假设它可能不是有理数而给出可能错误的结果。
这只是我的猜测。如果有人真正看到了这些幂函数中的代码(或规范,也一样好),并能提供见解,那就太好了。
Math.pow()
还是pow()
,许多语言(以及计算器)都有一些内置函数来计算浮点数(或双精度数)的x=a^b。特殊情况是a为负数且b不是整数。有些会返回NaN
,有些会给出复杂结果(咳咳 Python)。但有些实际上能够给出实际结果,所以我想知道的是如何做到这一点。为了解释我的困惑:假设b是有理数:b=c/d。现在我们看一下c和d的奇偶性:
- d为偶数:没有实数x-> NaN或错误 - d是奇数,c是偶数:正x - d是奇数,c是奇数:负x
浮点数存储在特定格式中,这意味着如果它被字面解释,它将始终是偶数d(实际上是2的幂)。由于这些信息在计算中丢失,无法知道c和d的实际奇偶性。只能猜测。
因此,我的猜测是-它试图找到一个接近于b的有理数c/d,其中d是奇数,且c和d都小于某个阈值t。更小的t意味着它可以更确定它是正确的,但它将在较少的数字上工作。如果成功,则使用c的奇偶性。否则,假装d是偶数。毕竟,浮点数可以是任何东西,数学库不想通过假设它可能不是有理数而给出可能错误的结果。
这只是我的猜测。如果有人真正看到了这些幂函数中的代码(或规范,也一样好),并能提供见解,那就太好了。
Math.pow
的限制-请参见欧拉公式和De Moivre定理。 - meowgoesthedog