对于与特殊函数实现相关的探索性工作,我需要计算,其中。的情况对整体准确性至关重要。
鉴于正弦的比率通常接近于一,我想使用该log1p
函数尽可能准确地计算对数,这意味着我需要找到一种方法来计算准确。
给定前提条件,基于 Sterbenz 引理,可以用二进制浮点算术精确计算。在角度和和半角公式的帮助下,我得到
紧随其后
给定前提条件,减法没有取消的风险,因为被减数至少是被减数的两倍,而且通常比那大得多。这种计算对性能很敏感,并且由于sincos
可以使用一次计算和的函数,我还考虑将上面的代码重写如下,以将计算所有超越数的成本降低到仅两个调用(大概是与舍入误差小幅增加)sincos
这可以进一步转化为以下内容,但我尚未检查这是否真的有利
是否有这种计算的替代安排也能保持完全的准确性并进一步最小化计算成本?可以假设融合乘加 (FMA) 的可用性。抽象运营成本如下:add
, sub
, mul
, fma
= 1; div
, sqrt
, sin
, cos
= 10; log
, log1p
, sincos
= 15; tan
= 20。