0

给定一个像二元分裂这样的加速结构,像 Euler-Wijngaarden 或 sumalt 这样的加速变换在与它并排使用时表现如何?

https://en.wikipedia.org/wiki/Van_Wijngaarden_transformation

据说 sumalt 估计比 Euler 方法快得多:

http://projecteuclid.org/DPubS?service=UI&version=1.0&verb=Display&handle=euclid.em/1046889587
http://cestmal.in/Books/people.zoy.org/~sam/private/jnat/Programming/Algorithms %20For%20Programmers-%20Ideas%20And%20Source%20Code.pdf(第 19.2 节)

特别是,我们希望尽可能快地计算角度的余弦。

我有这个与 GMPY 和 mpmath 库配合良好的余弦二进制拆分结构:

def fcosine_bs(terms,u,v):
    u=-mpz(u)**2
    v=mpz(v)**2

    def bs(a, b):
        if b - a == 1:
            if a == 0:
                Pab = Qab = mpz(1)
            else:
                Pab = u
                Qab = (4*a-2)*a*v
            Tab = Pab
        else:
            m = (a + b) // 2
            Pam, Qam, Tam = bs(a, m)
            Pmb, Qmb, Tmb = bs(m, b)
            Pab = Pam * Pmb
            Qab = Qam * Qmb
            Tab = Qmb * Tam + Pam * Tmb
        return Pab, Qab, Tab
    P, Q, T = bs(0, terms)
    return mpf(T)/Q

我只想知道如果与 Euler 的/Van Wijngaarden 的/sumalt 转换一起使用,性能会得到什么提升,如果真的有收益的话。

我害怕编写不理想的代码,所以我还要求对某些方法进行有效的 python 实现。

4

0 回答 0