class Maxima::Rational

Constants

REGEX

Attributes

denominator[RW]
numerator[RW]

Public Class Methods

new(numerator, denominator, **options) click to toggle source
Calls superclass method
# File lib/maxima/rational.rb, line 6
def initialize(numerator, denominator, **options)
  super(**options)
  @numerator = numerator
  @denominator = denominator
end
parse(maxima_output) click to toggle source
# File lib/maxima/rational.rb, line 13
def self.parse(maxima_output)
  _, numerator, denominator = REGEX.match(maxima_output).to_a

  return if numerator.nil? || denominator.nil?

  if numerator == 0
    Float.new(0, maxima_output: maxima_output)
  else
    Rational.new(numerator.to_f, denominator.to_f, maxima_output: maxima_output)
  end
rescue StandardError
  nil
end

Public Instance Methods

<=>(other) click to toggle source
# File lib/maxima/rational.rb, line 39
def <=>(other)
  case other
  when ::Float, ::Rational, Float, Rational
    self.to_f <=> other.to_f
  else
    -1
  end
end
imaginary?() click to toggle source
# File lib/maxima/rational.rb, line 31
def imaginary?
  false
end
real?() click to toggle source
# File lib/maxima/rational.rb, line 27
def real?
  true
end
to_f() click to toggle source
# File lib/maxima/rational.rb, line 35
def to_f
  @to_f ||= numerator.fdiv(denominator)
end