Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
bigint: fix: relational operators behaviors
  • Loading branch information
WildfootW committed Dec 22, 2019
commit d6157a8996aaf4bfb90e4964a24a7ba444d3bce2
9 changes: 5 additions & 4 deletions src/bigint_library.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ class Bigint {
return size;
}

//Logical Operations
// Relational Operations
bool equals(char *X, int lenX, char *Y, int lenY) {
int maxLen = max(lenX, lenY);
align(X, maxLen); align(Y, maxLen);
Expand All @@ -115,8 +115,9 @@ class Bigint {
bool greater(char *X, int lenX, char *Y, int lenY) {
int maxLen = max(lenX, lenY);
align(X, maxLen); align(Y, maxLen);
for (int i = maxLen; i >= 0; i--) {
for (int i = maxLen - 1; i >= 0; i--) {
if (X[i] > Y[i]) return true;
if (X[i] < Y[i]) return false;
}

//Put everything back to original state
Expand Down Expand Up @@ -181,13 +182,13 @@ class Bigint {
return modulo;
}

//Logical Operators
// Relational Operators
bool operator ==(Bigint &b) {
return equals(this->x, this->length, b.x, b.length);
}

bool operator >(Bigint &b) {
return !greater(b.x, b.length, this->x, this->length);
return greater(this->x, this->length, b.x, b.length);
}

bool operator >=(Bigint &b) {
Expand Down