Class: TestLambertW

Inherits:
Test::Unit::TestCase
  • Object
show all
Includes:
MoreMath::Functions
Defined in:
tests/lambert_test.rb

Instance Method Summary collapse

Methods included from MoreMath::Functions

#beta, beta, #beta_regularized, beta_regularized, #cantor_pairing, cantor_pairing, #cantor_pairing_inv, cantor_pairing_inv, #erf, #erfc, #gamma, gamma, #gammaP_regularized, gammaP_regularized, #gammaQ_regularized, gammaQ_regularized, #log_beta, log_beta, #log_ceil, log_ceil, #log_floor, log_floor, #log_gamma, #logb, logb, #numberify_string, numberify_string, #stringify_number, stringify_number

Methods included from MoreMath::Entropy

#collision_entropy_per_symbol, #collision_entropy_total, #entropy_ideal, #entropy_maximum, #entropy_per_symbol, #entropy_probabilities, #entropy_ratio, #entropy_total, #minimum_entropy_per_symbol, #minimum_entropy_total

Methods included from MoreMath::Lambert

#lambert_w

Instance Method Details

#setupObject



6
7
8
# File 'tests/lambert_test.rb', line 6

def setup
  @delta = 1e-10
end

#test_lambert_w_domain_errorObject



57
58
59
60
# File 'tests/lambert_test.rb', line 57

def test_lambert_w_domain_error
  result = lambert_w(-1.0 / Math::E - 0.1)
  assert(result.nan?)
end

#test_lambert_w_edge_caseObject



62
63
64
65
66
67
# File 'tests/lambert_test.rb', line 62

def test_lambert_w_edge_case
  y = 1e-10
  w = lambert_w(y)
  result = w * Math.exp(w)
  assert_in_delta(y, result, @delta)
end

#test_lambert_w_infinityObject



15
16
17
18
# File 'tests/lambert_test.rb', line 15

def test_lambert_w_infinity
  result = lambert_w(Float::INFINITY)
  assert_equal(Float::INFINITY, result)
end

#test_lambert_w_large_positive_valueObject



31
32
33
34
35
# File 'tests/lambert_test.rb', line 31

def test_lambert_w_large_positive_value
  result = lambert_w(100)
  expected = 3.3856301402900501
  assert_in_delta(expected, result, @delta)
end

#test_lambert_w_negative_one_over_eObject



20
21
22
23
# File 'tests/lambert_test.rb', line 20

def test_lambert_w_negative_one_over_e
  result = lambert_w(-1.0 / Math::E)
  assert_in_delta(-1.0, result, @delta)
end

#test_lambert_w_positive_valueObject



25
26
27
28
29
# File 'tests/lambert_test.rb', line 25

def test_lambert_w_positive_value
  result = lambert_w(1)
  expected = 0.5671432904097838
  assert_in_delta(expected, result, @delta)
end

#test_lambert_w_small_positive_valueObject



37
38
39
40
41
# File 'tests/lambert_test.rb', line 37

def test_lambert_w_small_positive_value
  result = lambert_w(0.1)
  expected = 0.091276527160862
  assert_in_delta(expected, result, @delta)
end

#test_lambert_w_verify_solution_propertyObject



43
44
45
46
47
48
# File 'tests/lambert_test.rb', line 43

def test_lambert_w_verify_solution_property
  y = 5.0
  w = lambert_w(y)
  result = w * Math.exp(w)
  assert_in_delta(y, result, @delta)
end

#test_lambert_w_verify_solution_property_largeObject



50
51
52
53
54
55
# File 'tests/lambert_test.rb', line 50

def test_lambert_w_verify_solution_property_large
  y = 1000.0
  w = lambert_w(y)
  result = w * Math.exp(w)
  assert_in_delta(y, result, @delta)
end

#test_lambert_w_zeroObject



10
11
12
13
# File 'tests/lambert_test.rb', line 10

def test_lambert_w_zero
  result = lambert_w(0)
  assert_in_delta(0.0, result, @delta)
end