class SparseMatrix::Fraction

Attributes

den_[RW]
num_[RW]

Public Class Methods

new(*args) click to toggle source
# File lib/sparse_matrix.rb, line 282
def  initialize (*args)
    if args.size == 2
        c = gcd(args[0],args[1])
        @num_ = (args[0]/c)
        @den_ = (args[1]/c)
        else
        @num_ = args[0]
        @den_ = 1
    end
end

Public Instance Methods

*(b) click to toggle source
# File lib/sparse_matrix.rb, line 347
def *(b)  #multiplicacion de numeros fraccionarios
r =Fraction.new
r.num_=@num_ * b.num_
r.den_=@den_ * b.den_
r.num_,r.den_ = minimiza(r.num_,r.den_)
return r
end
+(b) click to toggle source
# File lib/sparse_matrix.rb, line 321
def +(b) #suma de numeros fraccionarios
r=Fraction.new
if (@den_==b.den_)
r.num_ = @num_ + b.num_
r.den_ = @den_
else
r.num_ = @num_ * b.den_ + b.num_ * @den_
r.den_ = @den_ * b.den_
end
r.num_,r.den_ = minimiza(r.num_,r.den_)
return r
end
-(b) click to toggle source
# File lib/sparse_matrix.rb, line 334
def -(b) #resta de numeros fraccionarios
r =Fraction.new
if (@den_ == b.den_)
r.num_=@num_- b.num_
r.den_=@den_
else
r.num_=@num_ * b.den_ - b.num_ * @den_
r.den_ = @den_ * b.den_
end
r.num_,r.den_ = minimiza(r.num_,r.den_)
r
end
-@() click to toggle source
# File lib/sparse_matrix.rb, line 317
def -@  #opuesto
    Fraction.new(-@num_,@den_)
end
/(b) click to toggle source
# File lib/sparse_matrix.rb, line 355
def /(b)  #division de numeros fraccionarios
r =Fraction.new
r.num_=@num_ / b.num_
r.den_=@den_ * b.den_
r.num_,r.den_ = minimiza(r.num_,r.den_)
r
end
<=>(b) click to toggle source
# File lib/sparse_matrix.rb, line 363
def <=>(b)  #comparar
    self.to_f <=> b.to_f
end
==(b) click to toggle source
# File lib/sparse_matrix.rb, line 301
def ==(b) #comparar
    return @num_.eql?(b.num_) && @den_.eql?(b.den_)
end
abs() click to toggle source
# File lib/sparse_matrix.rb, line 305
def abs  #valor absoluto
    c = @num_.to_f/@den_.to_f
    return c.abs
end
coerce(other) click to toggle source
# File lib/sparse_matrix.rb, line 374
def coerce(other)
    [self,other]
end
minimiza(x,y) click to toggle source
# File lib/sparse_matrix.rb, line 367
def minimiza(x,y) #minimizar fraccion
    d = gcd(x,y)
    x = x/d
    y = y/d
    return x,y
end
reciprocal() click to toggle source
# File lib/sparse_matrix.rb, line 310
def reciprocal #devuelve fraccion dada la vuelta
    f=Fraction.new
    f.num_=@den_
    f.den_ = @num_
    f
end
to_f() click to toggle source
# File lib/sparse_matrix.rb, line 297
def to_f #devuelve float
    @num_.to_f/@den_.to_f
end
to_s() click to toggle source
# File lib/sparse_matrix.rb, line 294
def to_s #devuelve string
    "#{@num_}/#{@den_}"
end