/* bc program bernoulli */ /* This constructs the Bernoulli number B[n] for n >= 0. See slides by Richard Brent at http://maths.anu.edu.au/~brent/talks.html B[0]=1, B[1]=-1/2, B[2m+1]=0 if m >= 1, B[2m]=(-1)^(m-1)*2m*T[m]/2^m*(2^m-1) if m >= 1. Also see http://www.bernoulli.org/ */ define bernoulli(n){ auto k,s,t,g,numerator, denominator if(n==0){ print "B[",n,"]=1\n" return } if(n==1){ print "B[",n,"]=-1/2\n" return } if(n%2){ print "B[",n,"]=0\n" return } t=n/2 s=(-1)^(t-1) numerator=s*n*tangent(t) k=2^n denominator=k*(k-1) g=gcd(numerator,denominator) numerator=numerator/g denominator=denominator/g print "B[",n,"]=",numerator,"/",denominator,"\n" return }