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