module Dydx::Algebra::Set
Public Instance Methods
cos(x)
click to toggle source
# File lib/dydx/algebra/set.rb, line 291 def cos(x) return Cos.new(x) unless x.multiple_of?(pi) && (x / pi).num? radn = (x / pi) loop do break if radn < 2 radn -= 2 end case radn when 0 then 1 when _(1) / 2 then 0 when 1 then -1 when _(3) / 2 then 0 else Cos.new(x) end end
differentiate(_sym = :x)
click to toggle source
# File lib/dydx/algebra/set.rb, line 157 def differentiate(_sym = :x) e0 end
e()
click to toggle source
# File lib/dydx/algebra/set.rb, line 209 def e $e ||= E.new end
e0()
click to toggle source
# File lib/dydx/algebra/set.rb, line 197 def e0 eval('$e0 ||= _(0)') end
e1()
click to toggle source
# File lib/dydx/algebra/set.rb, line 201 def e1 eval('$e1 ||= _(1)') end
log(formula)
click to toggle source
TODO: Method has too many lines. [13/10]
# File lib/dydx/algebra/set.rb, line 218 def log(formula) if formula.formula?(:*) f, g = formula.f, formula.g log(f) + log(g) elsif formula.formula?(:**) f, g = formula.f, formula.g g * log(f) elsif formula.one? e0 elsif formula.is_a?(E) e1 else Log.new(formula) end end
log10(formula)
click to toggle source
# File lib/dydx/algebra/set.rb, line 253 def log10(formula) # TODO: refactor with log function. if formula.formula?(:*) f, g = formula.f, formula.g log10(f) + log10(g) elsif formula.formula?(:**) f, g = formula.f, formula.g g * log10(f) elsif formula.one? e0 elsif formula.is_a?(Num) (formula.n == 10) ? e1 : log10(formula.n) elsif formula == 10 e1 else Log10.new(formula) end end
log2(formula)
click to toggle source
# File lib/dydx/algebra/set.rb, line 234 def log2(formula) # TODO: refactor with log function. if formula.formula?(:*) f, g = formula.f, formula.g log2(f) + log2(g) elsif formula.formula?(:**) f, g = formula.f, formula.g g * log2(f) elsif formula.one? e0 elsif formula.is_a?(Num) (formula.n == 2) ? e1 : log2(formula.n) elsif formula == 2 e1 else Log2.new(formula) end end
oo()
click to toggle source
# File lib/dydx/algebra/set.rb, line 213 def oo Float::INFINITY end
pi()
click to toggle source
# File lib/dydx/algebra/set.rb, line 205 def pi $pi ||= Pi.new end
sin(x)
click to toggle source
TODO: We should negative num
# File lib/dydx/algebra/set.rb, line 273 def sin(x) return Sin.new(x) unless x.multiple_of?(pi) && (x / pi).num? radn = (x / pi) loop do break if radn < 2 radn -= 2 end case radn when 0 then 0 when _(1) / 2 then 1 when 1 then 0 when _(3) / 2 then -1 else Sin.new(x) end end
subst(_hash = {})
click to toggle source
# File lib/dydx/algebra/set.rb, line 153 def subst(_hash = {}) self end
tan(x)
click to toggle source
# File lib/dydx/algebra/set.rb, line 309 def tan(x) if x == 0 0 else Tan.new(x) end end
to_s()
click to toggle source
# File lib/dydx/algebra/set.rb, line 187 def to_s "( #{numerator} / #{denominator} )" end