12345678910111213141516171819202122232425262728 |
- #!/usr/bin/ruby
- # Daniel "Trizen" Șuteu
- # Date: 14 December 2016
- # https://github.com/trizen
- # Simple implementation of the digamma(n) function.
- # See also:
- # https://en.wikipedia.org/wiki/Digamma_function
- define γ = Num.EulerGamma
- func digamma(n) {
- -γ - ::sum(1 ..^ n, { |k|
- ((-1)**k / k) * binomial(n-1, k)
- })
- }
- func digamma_from_harmonic(n) {
- -γ + ::sum(1 ..^ n, { |k|
- 1/k
- })
- }
- say digamma(100) #=> 4.60016185273808740019860558557585072686681279076853
- say digamma_from_harmonic(100) #=> 4.60016185273808740019860558557585072686681279076853
|