Class: Division

Inherits:
Equation show all
Defined in:
lib/symcalc.rb

Overview

Implements the division operation in SymCalc

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from Equation

#*, #**, #+, #-, #/, #coerce, #derivative, #eval, #inspect, #simplify, #to_s

Constructor Details

#initialize(lside, rside) ⇒ Division

Returns a new instance of Division.



492
493
494
495
# File 'lib/symcalc.rb', line 492

def initialize lside, rside
	@lside = lside
	@rside = rside
end

Instance Attribute Details

#lsideObject

Returns the value of attribute lside.



490
491
492
# File 'lib/symcalc.rb', line 490

def lside
  @lside
end

#rsideObject

Returns the value of attribute rside.



490
491
492
# File 'lib/symcalc.rb', line 490

def rside
  @rside
end

Instance Method Details

#==(eq) ⇒ Object



520
521
522
523
524
525
526
# File 'lib/symcalc.rb', line 520

def == eq
	if eq.is_a? Division
		return (eq.lside == @rside) && (eq.lside == @lside)
	else
		return false
	end
end

#__derivative__(variable: nil) ⇒ Object



505
506
507
508
# File 'lib/symcalc.rb', line 505

def __derivative__ variable: nil
	return (@lside * @rside ** (-1)).derivative(variable: variable)
	# return (@lside.derivative * @rside - @lside * @rside.derivative) / (@rside ** 2)
end

#__eval__(var_hash) ⇒ Object



501
502
503
# File 'lib/symcalc.rb', line 501

def __eval__ var_hash
	return @lside.eval(var_hash) / @rside.eval(var_hash)
end

#__get_m_elements__(el_hash) ⇒ Object



528
529
530
531
532
533
534
535
536
537
538
539
# File 'lib/symcalc.rb', line 528

def __get_m_elements__ el_hash
	mult = @lside.__get_m_elements__(el_hash)
	div = @rside.__get_m_elements__({})
	div.each do |k, v|
		if mult.keys.include? k
			mult[k] -= v
		else
			mult[k] = -v
		end
	end
	return mult
end

#__simplify__Object



510
511
512
513
514
515
516
517
518
# File 'lib/symcalc.rb', line 510

def __simplify__
	@lside = @lside.__simplify__
	@rside = @rside.__simplify__
	if @lside == EquationValue.new(0)
		return EquationValue.new(0)
	else
		return self
	end
end

#all_variablesObject



542
543
544
# File 'lib/symcalc.rb', line 542

def all_variables
	return (@lside.all_variables + @rside.all_variables).uniq
end

#displayObject



497
498
499
# File 'lib/symcalc.rb', line 497

def display
	return "(#{@lside.display}) / (#{@rside.display})"
end