ruby-changes:19499
From: drbrain <ko1@a...>
Date: Fri, 13 May 2011 07:32:13 +0900 (JST)
Subject: [ruby-changes:19499] drbrain:r31539 (trunk): * lib/mathn.rb: Fix indentation. Patch by Jason Dew.
drbrain 2011-05-13 07:04:59 +0900 (Fri, 13 May 2011) New Revision: 31539 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=31539 Log: * lib/mathn.rb: Fix indentation. Patch by Jason Dew. [Ruby 1.9 - Feature #4682] Modified files: trunk/ChangeLog trunk/lib/mathn.rb Index: ChangeLog =================================================================== --- ChangeLog (revision 31538) +++ ChangeLog (revision 31539) @@ -1,3 +1,8 @@ +Fri May 13 07:04:33 2011 Eric Hodel <drbrain@s...> + + * lib/mathn.rb: Fix indentation. Patch by Jason Dew. + [Ruby 1.9 - Feature #4682] + Fri May 13 06:50:43 2011 Eric Hodel <drbrain@s...> * lib/mathn.rb: Add documentation. Patch by Jason Dew. [Ruby 1.9 - Index: lib/mathn.rb =================================================================== --- lib/mathn.rb (revision 31538) +++ lib/mathn.rb (revision 31539) @@ -73,40 +73,43 @@ class Rational remove_method :** + + ## + # exponentiate by +other+ def ** (other) if other.kind_of?(Rational) other2 = other if self < 0 - return Complex(self, 0.0) ** other + return Complex(self, 0.0) ** other elsif other == 0 - return Rational(1,1) + return Rational(1,1) elsif self == 0 - return Rational(0,1) + return Rational(0,1) elsif self == 1 - return Rational(1,1) + return Rational(1,1) end npd = numerator.prime_division dpd = denominator.prime_division if other < 0 - other = -other - npd, dpd = dpd, npd + other = -other + npd, dpd = dpd, npd end for elm in npd - elm[1] = elm[1] * other - if !elm[1].kind_of?(Integer) and elm[1].denominator != 1 - return Float(self) ** other2 - end - elm[1] = elm[1].to_i + elm[1] = elm[1] * other + if !elm[1].kind_of?(Integer) and elm[1].denominator != 1 + return Float(self) ** other2 + end + elm[1] = elm[1].to_i end for elm in dpd - elm[1] = elm[1] * other - if !elm[1].kind_of?(Integer) and elm[1].denominator != 1 - return Float(self) ** other2 - end - elm[1] = elm[1].to_i + elm[1] = elm[1] * other + if !elm[1].kind_of?(Integer) and elm[1].denominator != 1 + return Float(self) ** other2 + end + elm[1] = elm[1].to_i end num = Integer.from_prime_division(npd) @@ -116,14 +119,14 @@ elsif other.kind_of?(Integer) if other > 0 - num = numerator ** other - den = denominator ** other + num = numerator ** other + den = denominator ** other elsif other < 0 - num = denominator ** -other - den = numerator ** -other + num = denominator ** -other + den = numerator ** -other elsif other == 0 - num = 1 - den = 1 + num = 1 + den = 1 end Rational(num, den) elsif other.kind_of?(Float) @@ -144,17 +147,17 @@ if a.kind_of?(Complex) abs = sqrt(a.real*a.real + a.imag*a.imag) # if not abs.kind_of?(Rational) -# return a**Rational(1,2) +# return a**Rational(1,2) # end x = sqrt((a.real + abs)/Rational(2)) y = sqrt((-a.real + abs)/Rational(2)) # if !(x.kind_of?(Rational) and y.kind_of?(Rational)) -# return a**Rational(1,2) +# return a**Rational(1,2) # end if a.imag >= 0 - Complex(x, y) + Complex(x, y) else - Complex(x, -y) + Complex(x, -y) end elsif a.respond_to?(:nan?) and a.nan? a @@ -176,36 +179,36 @@ byte_a = [src & 0xffffffff] # ruby's bug while (src >= max) and (src >>= 32) - byte_a.unshift src & 0xffffffff + byte_a.unshift src & 0xffffffff end answer = 0 main = 0 side = 0 for elm in byte_a - main = (main << 32) + elm - side <<= 16 - if answer != 0 - if main * 4 < side * side - applo = main.div(side) - else - applo = ((sqrt!(side * side + 4 * main) - side)/2.0).to_i + 1 - end - else - applo = sqrt!(main).to_i + 1 - end + main = (main << 32) + elm + side <<= 16 + if answer != 0 + if main * 4 < side * side + applo = main.div(side) + else + applo = ((sqrt!(side * side + 4 * main) - side)/2.0).to_i + 1 + end + else + applo = sqrt!(main).to_i + 1 + end - while (x = (side + applo) * applo) > main - applo -= 1 - end - main -= x - answer = (answer << 16) + applo - side += applo * 2 + while (x = (side + applo) * applo) > main + applo -= 1 + end + main -= x + answer = (answer << 16) + applo + side += applo * 2 end if main == 0 - answer + answer else - sqrt!(a) + sqrt!(a) end end end -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/