我正在使用TeX编写一个(几乎)符合IEEE 854标准的浮点数实现(该语言仅支持32位整数)。该标准仅规定了+
、-
、*
、/
、比较、余数和sqrt
的结果:对于这些操作,结果应与将精确结果舍入为可表示数字(根据舍入模式)相同。
我记得IEEE指定超越函数(sin
、exp
等)应产生准确结果(在默认的四舍五入模式下,它们应输出围绕精确结果的两个可表示数字之一)。计算小数的正弦值相当简单:通过多次2*pi的移位获得[0,2*pi]范围内的数字,然后进行更多的工作将范围缩小到[0,pi/4],并使用泰勒级数。
现在假设我想计算sin(1e300)。为此,我需要找到1e300对2*pi的模数。这需要知道pi的300(316?)个小数位,因为只有16个小数位的结果没有任何意义(特别是它不应准确)。
是否有标准规定sin(1e300)
和类似的非常大的数字的结果应该是什么?
其他浮点数实现如何处理?