#!/usr/bin/ruby # Author: Daniel "Trizen" Șuteu # License: GPLv3 # Date: 25 June 2016 # Website: https://github.com/trizen # Cached method for the computation of the zeta function. # Based on the following recursive function: # # f(n) = n^p * f(n-1) + ((n-1)!)^p # f(1) = 1 # # zeta(n, p) = f(n) / (n!)^p # #=============================== # Also notice that: # _n_ # (n!)^p = | | k^p # k=1 var iter = 100 # iterate this many times var p = Complex(1/2, 21.022) # raise each n to this power func f(n) is cached { n.is_one ? 1 : (pow(n, p) * f(n-1) + pow((n-1)!, p)) } say f(iter)/pow(iter!, p)