- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想知道为什么指令 FYL2XP1
在 x86 架构上精确计算数学公式 y · log2(x + 1)。
这个公式有什么特别之处?
最佳答案
y
操作数通常是编译时常量,暂时忘记 x + 1
.
自 log_b(x) = log_b(2) * log_2(x)
该指令允许计算以 x + 1
为底的对数.
请注意 log_b(2)
是一个常数,因为很少需要以自由度为底来计算对数。FYL2XP1
和 FYL2X
是计算对数的仅有的两条 x87 指令。
如果对数是代数函数,一条指令就足够了,但由于它是超越的,英特尔给出了两个版本。FYL2X
适用于对数的整个域,但在整个范围内并不完全准确,特别是对于 x
的非常小的值。 (可能更慢,我相信它必须缩小范围,使用截断的泰勒展开或 Padé 近似,而不是通过表查找来提高准确性)。FYL2XP1
而是仅适用于小范围内的输入 ±( 1 – sqrt(2) ⁄ 2 )。
这应该更快(不减少范围),更重要的是,对于给定的输入范围,所使用的近似方法的精度应等于或大于 x87 80 位浮点精度。
This instruction provides optimal accuracy for values of epsilon [the value in register ST(0)] that are close to 0. For small epsilon (ε) values, more significant digits can be retained by using the FYL2XP1 instruction than by using (ε+1) as an argument to the FYL2X instruction.
FYL2X
使用的算法在所有其他必要步骤之后,可能正在使用
log(x + 1)
的近似公式.
log(x)
的公式输入必须减一。一个
x - 1
如果
x
,操作将失去精度非常小(因为两个数字的指数差异很大,会将
x
的大部分数字向右移动)。
FYL2XP1
不会做
x - 1
并且不会失去精度。
关于assembly - 指令 FYL2XP1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52736011/
我是一名优秀的程序员,十分优秀!