class SparseMatrix::Fraction

Attributes

den_[RW]
num_[RW]

Public Class Methods

new(*args) click to toggle source
# File lib/sparse_matrix.rb, line 272
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 345
def *(b)  #multiplicacion de numeros fraccionarios
    r =Fraction.new
    if b.instance_of? Fraction
        r.num_=@num_ * b.num_
        r.den_=@den_ * b.den_
        r.num_,r.den_ = minimiza(r.num_,r.den_)
        r
    else
        r=self*Fraction.new(b,1)
    end
end
+(b) click to toggle source
# File lib/sparse_matrix.rb, line 311
def +(b) #suma de numeros fraccionarios
    r=Fraction.new
    if b.instance_of? Fraction
        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
    else
        r=self+Fraction.new(b,1)
    end
    r.num_,r.den_ = minimiza(r.num_,r.den_)
    r
end
-(b) click to toggle source
# File lib/sparse_matrix.rb, line 328
def -(b) #resta de numeros fraccionarios
    r =Fraction.new
    if b.instance_of? Fraction
        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
    else
        r=self-Fraction.new(b,1)
    end
    r.num_,r.den_ = minimiza(r.num_,r.den_)
    r
end
-@() click to toggle source
# File lib/sparse_matrix.rb, line 307
def -@  #opuesto
    Fraction.new(-@num_,@den_)
end
/(b) click to toggle source
# File lib/sparse_matrix.rb, line 357
def /(b)  #division de numeros fraccionarios
    r =Fraction.new
    if b.instance_of? Fraction
        r.num_=@num_ / b.num_
        r.den_=@den_ * b.den_
        r.num_,r.den_ = minimiza(r.num_,r.den_)
        r
    else
        r=self/Fraction.new(b,1)
    end
end
<=>(b) click to toggle source
# File lib/sparse_matrix.rb, line 369
def <=>(b)  #comparar
    self.to_f <=> b.to_f
end
==(b) click to toggle source
# File lib/sparse_matrix.rb, line 291
def ==(b) #comparar
    return @num_.eql?(b.num_) && @den_.eql?(b.den_)
end
abs() click to toggle source
# File lib/sparse_matrix.rb, line 295
def abs  #valor absoluto
    c = @num_.to_f/@den_.to_f
    return c.abs
end
coerce(b) click to toggle source
# File lib/sparse_matrix.rb, line 380
def coerce(b)
    [self,Fraction.new(b,1)]
end
minimiza(x,y) click to toggle source
# File lib/sparse_matrix.rb, line 373
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 300
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 287
def to_f #devuelve float
    @num_.to_f/@den_.to_f
end
to_s() click to toggle source
# File lib/sparse_matrix.rb, line 284
def to_s #devuelve string
    "#{@num_}/#{@den_}"
end