partialsums.pp 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. (* The Computer Language Shootout
  2. http://shootout.alioth.debian.org/
  3. contributed by Josh Goldfoot *)
  4. program partialSums;
  5. uses SysUtils, Math;
  6. const
  7. twoThirds = 2.0 / 3.0;
  8. var
  9. n, code, k: longint;
  10. sum1, sum2, sum3, sum4, sum5, sum6, sum7, sum8, sum9, k3, sink, cosk, a: double;
  11. begin
  12. if paramCount() = 1
  13. then Val (ParamStr (1),n,Code)
  14. else n := 25000;
  15. a := -1.0;
  16. for k := 1 to n do
  17. begin
  18. k3 := intpower(k, 3);
  19. sink := sin(k);
  20. cosk := cos(k);
  21. a := -a;
  22. sum1 := sum1 + intpower(twoThirds,k - 1);
  23. sum2 := sum2 + 1.0 /sqrt(k);
  24. sum3 := sum3 + 1.0/(k*(k+1.0));
  25. sum4 := sum4 + 1.0/(k3*(sink*sink));
  26. sum5 := sum5 + 1.0/(k3*(cosk*cosk));
  27. sum6 := sum6 + 1.0/k;
  28. sum7 := sum7 + 1.0/intpower(k, 2);
  29. sum8 := sum8 + a/k;
  30. sum9 := sum9 + a/(k + k - 1.0 );
  31. end;
  32. writeLn(sum1:10:9, #9, '(2/3)^k');
  33. writeLn(sum2:10:9, #9,'k^-0.5');
  34. writeLn(sum3:10:9, #9,'1/k(k+1)');
  35. writeLn(sum4:10:9, #9,'Flint Hills');
  36. writeLn(sum5:10:9, #9,'Cookson Hills');
  37. writeLn(sum6:10:9, #9,'Harmonic');
  38. writeLn(sum7:10:9, #9,'Riemann Zeta');
  39. writeLn(sum8:10:9, #9,'Alternating Harmonic');
  40. writeLn(sum9:10:9, #9,'Gregory');
  41. end.