鼻窦可伸缩吗?

时间:2012-11-08 10:55:20

标签: assembly numbers fpu x87

窦我的意思是这里c stdlib sin()/ fpu assembl; y fsin。

我可以用大约16位小数给出这个正弦参数 数字presision或更多,例如sin(1.1e-14); 罪(1.2e-14)然后得到结果,

在如此小的三角洲上,窦几乎是线性的,但尽管如此 它也可以用相同的16位精度计算, 是否也可以在这么小的增量上进行计算?

(我问这个问题,因为有一段时间我似乎有点不寻常 在参数和特别是输出中计算它的精确度 价值,所以我想知道它是不是减少了什么)

2 个答案:

答案 0 :(得分:2)

泰勒系列sin(x)= x - x ^ 3/3! + x ^ 5/5! - ......

任何数字0> x > 1在基数10中表示为

x = a * 10 ^ -n,其中1 <= a <10,例如x = 0.003 = 3 * 10 ^ -3
 x ^ 3 = a ^ 3 * 10 ^ -3n

那么下一个术语的大小约为b * 10 ^ -3n(忽略阶乘)。 当 n 增长(或 x 接近零)时,下一个术语开始消失得相当快。

对于x = 0.003,少数第一项是

   0.003000000000000000 = 10^-3 * 3000000000000000  <-- x
 - 0,000000004500000000 = 10^-3 * 0000004500000000  <-- x^3/3!
 + 0,000000000000002025 = 10^-3 * 0000000000002025  <-- x^5/5!
 ----------------------   -----------------------------
 = 0.002999995500002025 = 10^-3 * 2999995500002025

有16位数字忽略前导零和第4项x ^ 7/7!不再影响结果。当x变得更小时,接下来是x ^ 5/5!术语不能添加到结果中,最后是x ^ 3/3!术语不能添加(或减去)。只有术语x可以用16位精度表示。

sin(x)= x仅适用于x = 0。究竟。其他一切都是近似的。 即使sin(pi / 2)= 1也是数学库中的近似值,因为参数pi / 2不能表示为浮点数。

答案 1 :(得分:2)

IIRC,它在大于9e18时开始失败,在正数时小于9e-18。这是CPU的限制。

详细信息可以在http://www.intel.com/design/processor/manuals/253665.pdf下的8.1.3.2条件代码标志下阅读,指定FSIN和朋友的限制。