很难说出这里问的是什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或言辞激烈,无法以目前的形式合理回答。为了帮助澄清这个问题,以便它可以重新打开, visit the help center 。
9年前关闭。
它们是使用与线性搜索相同的机制找到的,还是以某种方式缩小了范围,类似于二分搜索。
最佳答案
在任何体面的数学库中实现诸如自然对数之类的函数都会将误差保持在 ulp(最小精度单位)以下。数学库函数的实现者的目标是找到一些最佳近似值,即以尽可能少的计算达到所需精度的近似值。泰勒级数通常是一个糟糕的选择,因为需要太多项才能达到所需的精度。
选择的典型武器是将所有可表示实数的范围缩小到一些非常小的区域,然后使用一些最佳近似值,在这个狭窄的范围内产生所需函数的精确近似值。这种最优逼近选择的典型武器是多项式或有理多项式(两个多项式的比值)。实现只包含多项式系数。这些系数是通过一些优化技术构建的,例如 Remes Exchange 算法。
在自然对数的情况下,有一个简单的方法来缩小范围。实数几乎普遍用尾数和指数表示:x=m*2p,其中 p 是整数,m 介于 1 和 2 之间。因此 log(x) = log(m)+p*log(2) )。后一项 p*log(2) 只是乘以已知常数。因此,问题简化为求 1 到 2 之间(或 1/2 到 1 之间)的数的对数。通过使用√2 在对数上位于[1,2) 的中间这一事实,可以进一步缩小范围。因此,所需要的只是一种计算 1 到 √2 之间数字的对数的方法。这通常通过有理多项式完成。二阶多项式多项式与三阶多项式的比率对此非常有效。
关于algorithm - 对数是如何编程的?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10732034/