Module: ABBA::Math

Defined in:
lib/abba/math.rb

Class Method Summary collapse

Class Method Details

.beta(x, y) ⇒ Object



23
24
25
# File 'lib/abba/math.rb', line 23

def beta(x,y)
  (gamma(x)*gamma(y))/(gamma(x+y))
end

.exp(x) ⇒ Object



7
8
9
# File 'lib/abba/math.rb', line 7

def exp(x)
  ::Math.exp(x)
end

.gamma(x) ⇒ Object



15
16
17
# File 'lib/abba/math.rb', line 15

def gamma(x)
  ::Math.gamma(x)
end

.lbeta(x, y) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
# File 'lib/abba/math.rb', line 27

def lbeta(x,y)
  lgamma_x, sign_gamma_x = lgamma(x)
  lgamma_y, sign_gamma_y = lgamma(y)
  lgamma_xy, sign_gamma_xy = lgamma(x+y)

  if (sign_gamma_x * sign_gamma_y * sign_gamma_xy) == 1
    lgamma_x + lgamma_y - lgamma_xy
  else
    raise ::Math::DomainError, 'Numerical argument is out of domain - "lbeta"'
  end
end

.lgamma(x) ⇒ Object



19
20
21
# File 'lib/abba/math.rb', line 19

def lgamma(x)
  ::Math.lgamma(x)
end

.log(x) ⇒ Object



11
12
13
# File 'lib/abba/math.rb', line 11

def log(x)
  ::Math.log(x)
end