Skip to content

Commit

Permalink
Use Rat::gcd to make infix:<+>(Rat, Rat) and infix:<->(Rat, Rat) yiel…
Browse files Browse the repository at this point in the history
…d Rats in more cases.
  • Loading branch information
colomon committed Dec 3, 2009
1 parent 7ce13d8 commit 7914ca3
Showing 1 changed file with 6 additions and 4 deletions.
10 changes: 6 additions & 4 deletions src/setting/Rat.pm
Expand Up @@ -55,8 +55,9 @@ class Rat {
}

multi sub infix:<+>(Rat $a, Rat $b) {
($a.numerator * $b.denominator + $b.numerator * $a.denominator)
/ ($a.denominator * $b.denominator);
my $gcd = Rat::gcd($a.denominator, $b.denominator);
($a.numerator * ($b.denominator div $gcd) + $b.numerator * ($a.denominator div $gcd))
/ (($a.denominator div $gcd) * $b.denominator);
}

multi sub infix:<+>(Rat $a, Int $b) {
Expand All @@ -68,8 +69,9 @@ multi sub infix:<+>(Int $a, Rat $b) {
}

multi sub infix:<->(Rat $a, Rat $b) {
($a.numerator * $b.denominator - $b.numerator * $a.denominator)
/ ($a.denominator * $b.denominator);
my $gcd = Rat::gcd($a.denominator, $b.denominator);
($a.numerator * ($b.denominator div $gcd) - $b.numerator * ($a.denominator div $gcd))
/ (($a.denominator div $gcd) * $b.denominator);
}

multi sub infix:<->(Rat $a, Int $b) {
Expand Down

0 comments on commit 7914ca3

Please sign in to comment.