Class: Unitwise::Functional
- Inherits:
-
Scale
- Object
- Scale
- Unitwise::Functional
show all
- Extended by:
- Math
- Defined in:
- lib/unitwise/functional.rb
Overview
Functional is an alterative function-based scale for atoms with a non-linear (or non-zero y-intercept) scale. This is most commonly used for temperatures. Known functions for converting to and from special atoms are setup as class methods here.
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Methods inherited from Scale
#atoms, #depth, #eql?, #expression, #hash, #inspect, #root_terms, #simplified_value, #special?, #terms, #to_s, #unit=, #value=
Methods included from Compatible
#<=>, #compatible_with?, #composition, #composition_string, #dim, included
Constructor Details
#initialize(value, unit, function_name) ⇒ Functional
Setup a new functional. used for conversion
96
97
98
99
|
# File 'lib/unitwise/functional.rb', line 96
def initialize(value, unit, function_name)
@function_name = function_name
super(value, unit)
end
|
Instance Attribute Details
#function_name ⇒ Object
Returns the value of attribute function_name.
89
90
91
|
# File 'lib/unitwise/functional.rb', line 89
def function_name
@function_name
end
|
Class Method Details
.from_2lg(x) ⇒ Object
85
86
87
|
# File 'lib/unitwise/functional.rb', line 85
def self.from_2lg(x)
10.0 ** (x / 2.0)
end
|
.from_cel(x) ⇒ Object
13
14
15
|
# File 'lib/unitwise/functional.rb', line 13
def self.from_cel(x)
x + 273.15
end
|
.from_degf(x) ⇒ Object
21
22
23
|
# File 'lib/unitwise/functional.rb', line 21
def self.from_degf(x)
5.0 / 9.0 * (x + 459.67)
end
|
.from_hpC(x) ⇒ Object
37
38
39
|
# File 'lib/unitwise/functional.rb', line 37
def self.from_hpC(x)
100.0 ** -x
end
|
.from_hpX(x) ⇒ Object
29
30
31
|
# File 'lib/unitwise/functional.rb', line 29
def self.from_hpX(x)
10.0 ** -x
end
|
.from_ld(x) ⇒ Object
61
62
63
|
# File 'lib/unitwise/functional.rb', line 61
def self.from_ld(x)
2.0 ** x
end
|
.from_lg(x) ⇒ Object
77
78
79
|
# File 'lib/unitwise/functional.rb', line 77
def self.from_lg(x)
10.0 ** x
end
|
.from_ln(x) ⇒ Object
69
70
71
|
# File 'lib/unitwise/functional.rb', line 69
def self.from_ln(x)
Math::E ** x
end
|
.from_ph(x) ⇒ Object
53
54
55
|
# File 'lib/unitwise/functional.rb', line 53
def self.from_ph(x)
from_hpX(x)
end
|
.from_tan100(x) ⇒ Object
45
46
47
|
# File 'lib/unitwise/functional.rb', line 45
def self.from_tan100(x)
atan(x / 100.0)
end
|
.to_2lg(x) ⇒ Object
81
82
83
|
# File 'lib/unitwise/functional.rb', line 81
def self.to_2lg(x)
2.0 * log10(x)
end
|
.to_cel(x) ⇒ Object
9
10
11
|
# File 'lib/unitwise/functional.rb', line 9
def self.to_cel(x)
x - 273.15
end
|
.to_degf(x) ⇒ Object
17
18
19
|
# File 'lib/unitwise/functional.rb', line 17
def self.to_degf(x)
9.0 * x / 5.0 - 459.67
end
|
.to_hpC(x) ⇒ Object
33
34
35
|
# File 'lib/unitwise/functional.rb', line 33
def self.to_hpC(x)
-log(x) / log(100.0)
end
|
.to_hpX(x) ⇒ Object
25
26
27
|
# File 'lib/unitwise/functional.rb', line 25
def self.to_hpX(x)
-log10(x)
end
|
.to_ld(x) ⇒ Object
57
58
59
|
# File 'lib/unitwise/functional.rb', line 57
def self.to_ld(x)
Math.log(x) / Math.log(2.0)
end
|
.to_lg(x) ⇒ Object
73
74
75
|
# File 'lib/unitwise/functional.rb', line 73
def self.to_lg(x)
log10(x)
end
|
.to_ln(x) ⇒ Object
65
66
67
|
# File 'lib/unitwise/functional.rb', line 65
def self.to_ln(x)
log(x)
end
|
.to_ph(x) ⇒ Object
49
50
51
|
# File 'lib/unitwise/functional.rb', line 49
def self.to_ph(x)
to_hpX(x)
end
|
.to_tan100(x) ⇒ Object
41
42
43
|
# File 'lib/unitwise/functional.rb', line 41
def self.to_tan100(x)
100.0 * tan(x)
end
|
Instance Method Details
#magnitude(scalar = scalar()) ⇒ Numeric
Get the equivalent magnitude on this scale for a scalar value
113
114
115
|
# File 'lib/unitwise/functional.rb', line 113
def magnitude(scalar = scalar())
self.class.send(:"to_#{function_name}", scalar)
end
|
#scalar(magnitude = value) ⇒ Numeric
Get the equivalent scalar value of a magnitude on this scale
105
106
107
|
# File 'lib/unitwise/functional.rb', line 105
def scalar(magnitude = value)
self.class.send(:"from_#{function_name}", magnitude)
end
|