@@ -98,7 +98,7 @@ class Bigint {
98
98
return size;
99
99
}
100
100
101
- // Logical Operations
101
+ // Relational Operations
102
102
bool equals (char *X, int lenX, char *Y, int lenY) {
103
103
int maxLen = max (lenX, lenY);
104
104
align (X, maxLen); align (Y, maxLen);
@@ -115,8 +115,9 @@ class Bigint {
115
115
bool greater (char *X, int lenX, char *Y, int lenY) {
116
116
int maxLen = max (lenX, lenY);
117
117
align (X, maxLen); align (Y, maxLen);
118
- for (int i = maxLen; i >= 0 ; i--) {
118
+ for (int i = maxLen - 1 ; i >= 0 ; i--) {
119
119
if (X[i] > Y[i]) return true ;
120
+ if (X[i] < Y[i]) return false ;
120
121
}
121
122
122
123
// Put everything back to original state
@@ -181,13 +182,13 @@ class Bigint {
181
182
return modulo;
182
183
}
183
184
184
- // Logical Operators
185
+ // Relational Operators
185
186
bool operator ==(Bigint &b) {
186
187
return equals (this ->x , this ->length , b.x , b.length );
187
188
}
188
189
189
190
bool operator >(Bigint &b) {
190
- return ! greater (b. x , b. length , this ->x , this ->length );
191
+ return greater (this ->x , this ->length , b. x , b. length );
191
192
}
192
193
193
194
bool operator >=(Bigint &b) {
0 commit comments