#includecmathusing namespace std; templateclassTTzeta(ts,double prec ) if(S0(int ) s==s(int )-s%2==0) return T(0)0); TSC=static _ castt (1- static _ castt ) s ); T sum=0,mult=0.5,更改; T powers[100000]={0,}; //cache的大小为unsigned n=0; o{tBinom=-static_castt(n; T ns=1; if(nsizeof(powers )/sizeof ) powers[0] ) ) powers ) n )=pow ) static_castt(n1 )、-s ); for(unsignedk=1; k=n; k () tp; ksizeof (powers )/sizeof (powers [0] ) ) { p=powers[k]; }elsep=pow(static_castt(k1 ),-s ); ns =ttdqc p; TDQC=(k-static_castt(n ) )/) k1; } change=mult * ns; sum =change; mult /=2; n; }while(Fabs(change/sum ) prec; returnsum*1//-(pow(t(2),sc )-1 ); }缩短版
#includecmathusing namespace std; templateclassTTzeta(ts,double prec ) if(S0(int ) s==s(int )-s%2==0) return T(0)0); TSC=static _ castt (1- static _ castt ) s ); T sum=0,mult=0.5,更改; T powers[100000]={0,}; unsigned n=0; o{tBinom=-static_castt(n; T ns=1; if(nsizeof(powers )/sizeof ) powers[0] ) ) powers ) n )=pow ) static_castt(n1 )、-s ); for(unsignedk=1; k=n; k () tp; ksizeof (powers )/sizeof (powers [0] ) ) {p=powers[k]; }elsep=pow(static_castt(k1 ),-s ); ns =ttdqc p; TDQC=(k-static_castt(n ) )/) k1; }change=mult * ns; sum =change; mult /=2; n; }while(Fabs(change/sum ) prec; returnsum*1//-(pow(t(2),sc )-1 ); }