zeta_2n_fast.pl 446 B

1234567891011121314151617181920212223
  1. #!/usr/bin/perl
  2. # Calculate zeta(2n) using a closed-form formula.
  3. # See also:
  4. # https://en.wikipedia.org/wiki/Riemann_zeta_function
  5. use 5.010;
  6. use strict;
  7. use warnings;
  8. use lib qw(../lib);
  9. use experimental qw(signatures);
  10. use Math::AnyNum qw(tau bernoulli factorial);
  11. sub zeta_2n($n) {
  12. (-1)**($n + 1) * bernoulli(2 * $n) / factorial(2 * $n) * tau**(2 * $n) / 2;
  13. }
  14. for my $i (1 .. 30) {
  15. say "zeta(", 2 * $i, ") = ", zeta_2n($i);
  16. }