binPis' = let next ( x@( n, p, q , p', q' ) ) = let p'' = ( 2*n-1 ) * p' + ( n-1 ) ^2 * p q'' = ( 2*n-1 ) * q' + ( n-1 ) ^2 * q in if f == f' then ( f,x ) : next ( n + 1, 2*(np'- f * nq') , nq', 2*(np'' - f * nq''), nq'' ) else next ( n + 1, p',q', p'', q'' ) ( concat $ repeat [ 0, 1 ] ) main = do print $ take 100 binPis'' print $ sum $ take 100 $ zipWith ( * ) [ 4*(-0.5)^n | n<-[0..] ] $ map ( fromInteger ) $ binPis''
Standard input is empty
[1,1,1,0,1,1,0,0,1,0,0,0,1,0,0,0,0,0,0,1,0,1,1,1,1,1,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,1,0,1,1,1,0,0,1,1,1,0,0,0,1,1,0,0,1,1,1,0,1,0,1,1,1,0,0,0,1,0,1,1,1,0,1,1,0,1,1,1,0,1,0,0,1,1,1,1,0,0,1,1,1,0,0,1,0,0] 3.141592653589793