@@ -30,15 +30,17 @@ struct Fraction {
30
30
Fraction () = default ;
31
31
32
32
// / Construct a Fraction from a numerator and denominator.
33
- Fraction (const MPInt &oNum, const MPInt &oDen = MPInt(1 )) : num(oNum), den(oDen) {
33
+ Fraction (const MPInt &oNum, const MPInt &oDen = MPInt(1 ))
34
+ : num(oNum), den(oDen) {
34
35
if (den < 0 ) {
35
36
num = -num;
36
37
den = -den;
37
38
}
38
39
}
39
40
// / Overloads for passing literals.
40
41
Fraction (const MPInt &num, int64_t den = 1 ) : Fraction(num, MPInt(den)) {}
41
- Fraction (int64_t num, const MPInt &den = MPInt(1 )) : Fraction(MPInt(num), den) {}
42
+ Fraction (int64_t num, const MPInt &den = MPInt(1 ))
43
+ : Fraction(MPInt(num), den) {}
42
44
Fraction (int64_t num, int64_t den) : Fraction(MPInt(num), MPInt(den)) {}
43
45
44
46
// Return the value of the fraction as an integer. This should only be called
@@ -102,7 +104,7 @@ inline bool operator>=(const Fraction &x, const Fraction &y) {
102
104
inline Fraction reduce (const Fraction &f) {
103
105
if (f == Fraction (0 ))
104
106
return Fraction (0 , 1 );
105
- MPInt g = gcd (f.num , f.den );
107
+ MPInt g = gcd (abs ( f.num ), abs ( f.den ) );
106
108
return Fraction (f.num / g, f.den / g);
107
109
}
108
110
@@ -122,22 +124,22 @@ inline Fraction operator-(const Fraction &x, const Fraction &y) {
122
124
return reduce (Fraction (x.num * y.den - x.den * y.num , x.den * y.den ));
123
125
}
124
126
125
- inline Fraction& operator +=(Fraction &x, const Fraction &y) {
127
+ inline Fraction & operator +=(Fraction &x, const Fraction &y) {
126
128
x = x + y;
127
129
return x;
128
130
}
129
131
130
- inline Fraction& operator -=(Fraction &x, const Fraction &y) {
132
+ inline Fraction & operator -=(Fraction &x, const Fraction &y) {
131
133
x = x - y;
132
134
return x;
133
135
}
134
136
135
- inline Fraction& operator /=(Fraction &x, const Fraction &y) {
137
+ inline Fraction & operator /=(Fraction &x, const Fraction &y) {
136
138
x = x / y;
137
139
return x;
138
140
}
139
141
140
- inline Fraction& operator *=(Fraction &x, const Fraction &y) {
142
+ inline Fraction & operator *=(Fraction &x, const Fraction &y) {
141
143
x = x * y;
142
144
return x;
143
145
}
0 commit comments