给定一个像二元分裂这样的加速结构,像 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 实现。