import Math.Statistics.Fusion import Data.Array.Vector import Text.Printf import Data.List -- main = printf "%f\n" (mean (replicateU 1000000000 (pi :: Double))) main = printf "%f\n" (mean (replicate 1000000000 (pi :: Double))) where mean x = fst $ foldl' (\(!m, !n) x -> (m+(x-m)/(n+1),n+1)) (0,0) x {- Main_zdwfold_info: .Lc122: movq %rdi,%rax cmpq $10000000,%rax jne .Lc126 movq %rsi,%rbx jmp *(%rbp) .Lc126: incq %rax leaq 1(%rsi),%rcx cvtsi2sdq %rsi,%xmm0 movsd .Ln128(%rip),%xmm7 subsd %xmm5,%xmm7 divsd %xmm0,%xmm7 addsd %xmm7,%xmm5 movq %rcx,%rsi movq %rax,%rdi jmp Main_zdwfold_info -}