Compute the   nth   term of a series,   i.e. the sum of the   n   first terms of the corresponding sequence.

Informally this value, or its limit when   n   tends to infinity, is also called the sum of the series, thus the title of this task.

For this task, use:

 




S

n


=

∑

k
=
1


n




1

k

2






{\displaystyle S_{n}=\sum _{k=1}^{n}{\frac {1}{k^{2}}}}




 and compute   




S

1000




{\displaystyle S_{1000}}




This approximates the   zeta function   for   S=2,   whose exact value

 



ζ
(
2
)
=



π

2


6




{\displaystyle \zeta (2)={\pi ^{2} \over 6}}


is the solution of the Basel problem.




MODULE SeriesSum;
FROM InOut IMPORT WriteLn;
FROM RealInOut IMPORT WriteReal;
 
TYPE RealFunc = PROCEDURE (REAL): REAL;
 
PROCEDURE seriesSum(k, n: CARDINAL; f: RealFunc): REAL;
    VAR total: REAL;
        i: CARDINAL;
BEGIN
    total := 0.0;
    FOR i := k TO n DO
        total := total + f(FLOAT(i));
    END;
    RETURN total;
END seriesSum;
 
PROCEDURE oneOverKSquared(k: REAL): REAL;
BEGIN
    RETURN 1.0 / (k * k);
END oneOverKSquared;
 
BEGIN
    WriteReal(seriesSum(1, 1000, oneOverKSquared), 10);
    WriteLn;
END SeriesSum.