Method: Quant::Mixins::FisherTransform#fisher_transform
- Defined in:
- lib/quant/mixins/fisher_transform.rb
#fisher_transform(value) ⇒ Object Also known as: fisher, ft
The absolute value passed must be < 1.0
35 36 37 38 39 40 41 42 |
# File 'lib/quant/mixins/fisher_transform.rb', line 35 def fisher_transform(value) raise ArgumentError, "value (#{value}) must be between -1.0 and 1.0" unless value.abs <= 1.0 result = 0.5 * Math.log((1.0 + value) / (1.0 - value)) result.nan? ? 0.0 : result rescue Math::DomainError => e raise Math::DomainError, "#{e.}: cannot take the Log of #{value}: #{(1 + value) / (1 - value)}" end |