✅7. Rational
rational-math ZERO representation
Codebase walkthrough
Bug description
Rational constant ZERO = Rational.wrap(0);function sub(Rational x, Rational y) pure returns (Rational) {
(uint256 xNumerator, uint256 xDenominator) = fromRational(x);
(uint256 yNumerator, uint256 yDenominator) = fromRational(y);
if (yNumerator != 0) require(xNumerator != 0, "Underflow");
// (a / b) - (c / d) = (ad - cb) / bd
uint256 numerator = xNumerator * yDenominator - yNumerator * xDenominator;
uint256 denominator = xDenominator * yDenominator;
return toRational(numerator, denominator);
}PoC
Last updated