Module: Measurand::Math

Defined in:
lib/Measurand/Math.rb

Class Method Summary collapse

Class Method Details

.cos(measurand) ⇒ Object



39
40
41
42
# File 'lib/Measurand/Math.rb', line 39

def cos(measurand)
  measurand = wrap(measurand)
  measurand.apply(::Math.cos(measurand.value), -::Math.sin(measurand.value))
end

.exp(measurand) ⇒ Object



19
20
21
22
# File 'lib/Measurand/Math.rb', line 19

def exp(measurand)
  measurand = wrap(measurand)
  measurand.apply(::Math.exp(measurand.value), ::Math.exp(measurand.value))
end

.log(measurand) ⇒ Object



24
25
26
27
# File 'lib/Measurand/Math.rb', line 24

def log(measurand)
  measurand = wrap(measurand)
  measurand.apply(::Math.log(measurand.value), 1.0 / measurand.value)
end

.log10(measurand) ⇒ Object



29
30
31
32
# File 'lib/Measurand/Math.rb', line 29

def log10(measurand)
  measurand = wrap(measurand)
  measurand.apply(::Math.log10(measurand.value), 1.0 / (measurand.value * ::Math.log(10)))
end

.sin(measurand) ⇒ Object



34
35
36
37
# File 'lib/Measurand/Math.rb', line 34

def sin(measurand)
  measurand = wrap(measurand)
  measurand.apply(::Math.sin(measurand.value), ::Math.cos(measurand.value))
end

.sqrt(measurand) ⇒ Object



14
15
16
17
# File 'lib/Measurand/Math.rb', line 14

def sqrt(measurand)
  measurand = wrap(measurand)
  measurand.apply(::Math.sqrt(measurand.value), 1.0 / (2 * ::Math.sqrt(measurand.value)))
end

.tan(measurand) ⇒ Object



44
45
46
47
# File 'lib/Measurand/Math.rb', line 44

def tan(measurand)
  measurand = wrap(measurand)
  measurand.apply(::Math.tan(measurand.value), 1.0 / (::Math.cos(measurand.value) ** 2))
end

.wrap(measurand) ⇒ Object



49
50
51
# File 'lib/Measurand/Math.rb', line 49

def wrap(measurand)
  measurand.is_a?(Measurand) ? measurand : Measurand.new(measurand)
end