Sha256: 93e824233f36428633fcaa8abae5a6915dcef000637cddd6c215f185d02b0830
Contents?: true
Size: 1.94 KB
Versions: 2
Compression:
Stored size: 1.94 KB
Contents
module Dydx module Algebra module Operator module Parts module General %w(+ * ^).map(&:to_sym).each do |operator| define_method(operator) do |x| if x.is_0? case operator when :+ then self when :* then x when :^ then e1 end elsif x.is_1? case operator when :+ then super(x) when :* then self when :^ then self end elsif self == x case operator when :+ then _(2) * self when :* then self ^ _(2) when :^ then super(x) end elsif operator == :+ && inverse?(:+, x) e0 elsif operator == :* && inverse?(:*, x) e1 elsif [:+, :*].include?(operator) && x.send("#{to_str(operator)}?") if combinable?(x.f, operator) send(operator, x.f).send(operator, x.g) elsif combinable?(x.g, operator) send(operator, x.g).send(operator, x.f) else super(x) end elsif x.is_a?(Inverse) && x.operator == operator && x.x.send("#{to_str(operator)}?") if combinable?(x.x.f, operator) send(operator, inverse(x.x.f, operator)).send(operator, inverse(x.x.g, operator)) elsif combinable?(x.x.g, operator) send(operator, inverse(x.x.g, operator)).send(operator, inverse(x.x.f, operator)) else super(x) end elsif [:*].include?(operator) && x.inverse?(:+) inverse(::Algebra::Formula.new(self, x.x, operator.to_sym), :+) else super(x) end end end end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
dydx-0.0.9 | lib/dydx/algebra/operator/parts/general.rb |
dydx-0.0.8 | lib/dydx/algebra/operator/parts/general.rb |