zeta_2n.sf 540 B

12345678910111213141516171819202122232425
  1. #!/usr/bin/ruby
  2. include('../lib/bacovia.sf')
  3. const τ = (Log(-1) * -2i)
  4. func zeta_2n(n) {
  5. (-1)**(n+1) * bernoulli(2*n) * τ**(2*n) / ((2*n)! * 2)
  6. }
  7. var output = <<'EOT'.lines
  8. zeta(2) = ((1/24) * (-4 * log(-1)^2))
  9. zeta(4) = ((1/1440) * (16 * log(-1)^4))
  10. zeta(6) = ((1/60480) * (-64 * log(-1)^6))
  11. zeta(8) = ((1/2419200) * (256 * log(-1)^8))
  12. zeta(10) = ((1/95800320) * (-1024 * log(-1)^10))
  13. EOT
  14. assert_eq(gather {
  15. for n in (1..5) {
  16. var z = zeta_2n(n).simple.pretty
  17. say take("zeta(#{2*n}) = #{z}")
  18. }
  19. }, output)