diff --git a/contracts/exchange-libs/src/reference_functions.ts b/contracts/exchange-libs/src/reference_functions.ts index ccbaace911..efb8fc7f35 100644 --- a/contracts/exchange-libs/src/reference_functions.ts +++ b/contracts/exchange-libs/src/reference_functions.ts @@ -129,7 +129,7 @@ export const LibFractions = { normalize: ( numerator: BigNumber, denominator: BigNumber, - maxValue: BigNumber = new BigNumber(2 ** 127), + maxValue: BigNumber = new BigNumber(2).exponentiatedBy(127), ): [BigNumber, BigNumber] => { if (numerator.isGreaterThan(maxValue) || denominator.isGreaterThan(maxValue)) { let rescaleBase = numerator.isGreaterThanOrEqualTo(denominator) ? numerator : denominator; diff --git a/contracts/integrations/test/framework/assertions/finalizePool.ts b/contracts/integrations/test/framework/assertions/finalizePool.ts index 6d4e62405c..463d38c200 100644 --- a/contracts/integrations/test/framework/assertions/finalizePool.ts +++ b/contracts/integrations/test/framework/assertions/finalizePool.ts @@ -179,13 +179,7 @@ export function validFinalizePoolAssertion( beforeInfo.poolStats.membersStake, ); [numerator, denominator] = ReferenceFunctions.LibFractions.normalize(numerator, denominator); - // There's a bug in our reference functions, probably due to the fact that safeDiv in - // Solidity truncates in bits, whereas the safeDiv reference function truncates in base 10. - assertRoughlyEquals( - mostRecentCumulativeRewards.numerator.dividedBy(mostRecentCumulativeRewards.denominator), - numerator.dividedBy(denominator), - PRECISION, - ); + expect(mostRecentCumulativeRewards).to.deep.equal({ numerator, denominator }); // Check that aggregated stats have been updated const aggregatedStats = AggregatedStats.fromArray(