module Symbolic

Public Instance Methods

%(var) click to toggle source
# File lib/symbolic_ext/symbolic.rb, line 7
def %(var)
  return 0 if self.object_id == var.object_id
  return self % var if self.is_a?(Numeric) && var.is_a?(Numeric)
  new_ast :%, var
end
-@(var) click to toggle source
# File lib/symbolic_ext/symbolic.rb, line 13
def -@(var)
  return -var unless var.is_a?(Node)
  return -var.type if var.type.is_a?(Numeric)
  reversed = var.type.reverse
  reversed ? new_ast(reversed, *var.children.dup) : new_ast(:-@, [var])
end
not(var) click to toggle source
# File lib/symbolic_ext/symbolic.rb, line 20
def not(var)
  return nil if var.is_a?(Symbolic::Variable)
  return !var unless var.is_a?(Node)
  inverted = var.type.inverse
  inverted ? new_ast(inverted, *var.children.dup) : new_ast(:!, [var])
end