给定一个加速结构,比如二进制分裂,当与之并行使用时,像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
^{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实现(可选)。在
目前没有回答
相关问题 更多 >
编程相关推荐