class Keisan::AST::UnaryMinus

Public Class Methods

symbol() click to toggle source
# File lib/keisan/ast/unary_minus.rb, line 12
def self.symbol
  :"-"
end

Public Instance Methods

differentiate(variable, context = nil) click to toggle source
# File lib/keisan/ast/unary_minus.rb, line 30
def differentiate(variable, context = nil)
  context ||= Context.new
  Times.new([
    -1.to_node,
    child.differentiate(variable, context)
  ]).simplify(context)
end
evaluate(context = nil) click to toggle source
# File lib/keisan/ast/unary_minus.rb, line 8
def evaluate(context = nil)
  -child.evaluate(context)
end
simplify(context = nil) click to toggle source
# File lib/keisan/ast/unary_minus.rb, line 16
def simplify(context = nil)
  context ||= Context.new

  case child
  when Number
    Number.new(-child.value(context)).simplify(context)
  else
    Times.new([
      Number.new(-1),
      child
    ]).simplify(context)
  end
end
value(context = nil) click to toggle source
# File lib/keisan/ast/unary_minus.rb, line 4
def value(context = nil)
  return -1 * child.value(context)
end