>假设我们有一组浮点数,其中"m"位尾数和"e"位表示指数。假设我们想要近似一个函数"f"。
从理论上我们知道通常使用"范围约简函数",然后从该函数中我们推导出全局函数值。
例如,设 x = (sx,ex,mx) (符号 exp 和尾数),然后...log2(x) = ex + log2(1.mx),所以基本上范围缩小函数是"log2(1.mx)"。
我目前已经实现了倒数、平方根、log2 和 exp2,最近我开始使用三角函数。但是,如果给定全局误差界限(尤其是ulp误差),则可以为范围缩小函数推导出误差界限,我正在徘徊,有没有关于此类问题的研究?说到log2(x)(例如),我很乐意说...
"好的,我想要带有 k ulp 误差的 log2(x),为了实现这一目标,鉴于我们的浮点系统,我们需要用 p ulp 误差近似 log2(1.mx)"
请记住,正如我所说,我们知道我们正在处理浮点数,但格式是通用的,所以它可能是经典的 F32,但即使例如 e=10,m = 8 结束等等。
我实际上找不到任何显示此类研究的参考资料。我有的参考资料(即穆勒书)没有以这种方式处理这个话题,所以我正在寻找某种论文或类似的东西。你知道任何参考资料吗?
我也试图自己推导出这样的束缚,但这并不容易......
https://hal.inria.fr/ensl-00086904/document 有对当前实践的描述,以及建议的改进和错误分析。对当前实践的描述似乎与 https://docs.oracle.com/cd/E37069_01/html/E39019/z4000ac119729.html 的概述一致,这与我对三角函数的mod pi范围减小最受关注的问题的记忆一致。
我认为IEEE浮点是向前迈出的一大步,因为它在存在各种计算机体系结构的时代标准化了事物,从而降低了在它们之间移植代码的风险,但这所隐含的准确性要求可能是矫枉过正的:对于许多问题,对输出精度的约束是输入数据的精度, 不是计算中间值的准确性。