Arithmetic/Rational: Difference between revisions

m
(minor fix)
Line 3,000:
}
class:
Module Rational (.numerator, .denominator) {
if .denominator<=0 then Error "Positive onlyZero denominator"
gcd1=lambda (a as decimal, b as decimalsgn=Sgn(.numerator)*Sgn(.denominator) -> {
if a.denominator<b then swap a,b=abs(.denominator)
g.numerator<=a mod babs(.numerator)*sgn
whilegcd1=lambda g(a as decimal, b as decimal) -> {
if a=<b:b=g: g=athen modswap a,b
} g=a mod b
=a/gcd(a,b)*b while g {
a=b:b=g: g=a mod b
}
=abs(b)
.gcd<=gcd1 }
gdcval=gcd1(abs(.numerator), .denominator)
if gdcval<.denominator and gdcval<>0 then
.denominator/=gdcval
.numerator/=gdcval
end if
.gcd<=gcd1
.lcm<=lambda gcd=gcd1 (a as decimal, b as decimal) -> {
=a/gcd(a,b)*b
}
}
.gcd<=gcd1
.lcm<=lambda gcd=gcd1 (a as decimal, b as decimal) -> {
=a/gcd(a,b)*b
}
}
}
sum=rational(1, 1)
404

edits