无心人 发表于 2008-4-15 10:25:12

超越函数的高精度计算

非常有价值的讨论先贴些CORDIC的论文作为开头
基本的算法就在里面
不再复述。
===========================
是否适合高精度函数库的计算请大家判断
照例要点利息 :lol



**** Hidden Message *****

mathe 发表于 2008-4-15 10:42:49

印象中应该不适合任意高精度计算。

无心人 发表于 2008-4-15 11:16:58

那什么方法比较合适?
牛顿二次迭代?

liangbch 发表于 2008-4-15 11:44:11

这些函数不适用于高精度,当精度较高时,其复杂度很高。

   RICHARD P.BRENT 在1976年发表了一篇著名的论文,该文名为
**** Hidden Message *****在该文中,他给出精确到n位数的初等函数的复杂度。他证明,若M(n)表示 2个长为n的大数进行乘法运算的复杂度,则初等函数(exp,log,artan,sin,cosh等)精确到n位数的复杂度为O(M(n)log(n))。下面是该文的一个摘要。

Let f(x) be one of the usual elementary functions (exp, log, artan, sin, cosh, etc.), and
let M(n) be the number of single-precision operations reqmred to multiply n-bit integers. It is shown
that f(x) can be evaluated, with relative error 0(2^{-n}), m O(M(n)log (n)) operations as n ->infty,for
any floating-point number x (with an n-bit fraction) in a suitable finite interval. From the Sehonbage-
Strassen bound on M(n), it follows that an n-bit approximation to f(x) may be evaluated
in O(n log_2(n) log log(n)) operations. Special cases include the evaluation of constants such as
\pi, e, and e^\pi. The algorithms depend on the theory of elhptic integrals, using the arithmetic-geometric mean iteration and ascending Landen transformations.

liangbch 发表于 2008-4-15 11:53:45

关于这些函数的具体算法,可参考一些大数运算库的源代码,比如apfloat,GMP.下面简要的介绍一下apfloat中,这些算法的基本算法。
   定义:
    我们定义任意精度浮点数为f,   我们定义任意精度复数为c。则
   sin(f),cos(f) 可通过 exp(c)求出。
   exp(c), 可由 log(c)和牛顿迭代法求得。
   log(c), 可由 rawlog(c)求得。
   rawlog(c) 可有复数的AGM 算法求得。
可以看到,在apfloat中,AGM算法是这些函数的核心算法,使用AGM算法和牛顿迭代法可解决所有的任意精度浮点数的初等函数。

无心人 发表于 2008-4-15 11:58:12

可惜啊
GMP是没超越函数库的

liangbch 发表于 2008-4-15 12:11:35

你所说的超越函数是不是指初等函数?三角和对数函数应该属于初等函数。

你是对的。刚才我查了一下,确实没有在GMP的源码和文档 中 找到 提供初等接口的信息。

无心人 发表于 2008-4-15 13:47:14

超越函数就是超越函数
在数学里的初等超越函数

无心人 发表于 2008-10-7 20:55:50

另外一个高精度浮点库就是MPFR库了

无心人 发表于 2008-10-7 21:03:30

MPFR站点带的高精度浮点算法的介绍论文
页: [1] 2 3 4 5 6
查看完整版本: 超越函数的高精度计算