transmissions11/solmate

wadExp function comments mistake

0x-stan opened this issue · 3 comments

https://github.com/transmissions11/solmate/blob/main/src/utils/SignedWadMath.sol#L93

// When the result is < 0.5 we return zero. This happens when
// x <= floor(log(0.5e18) * 1e18) ~ -42e18
if (x <= -42139678854452767551) return 0;

log(0.5e18) -> log(0.5e-18)

log(0.5e18) = 40.753384493332874
log(0.5e-18) = -42.13967885445277

image

ah hm nice find!

recmo commented

Yeah, that should be x <= floor(log(0.5e-18) * 1e18) ~ -42e18

Another comments mistake found by @paco0x

// x is now in the range (-42, 136) * 1e18. Convert to (-42, 136) * 2**96
// for more intermediate precision and a binary basis. This base conversion
// is a multiplication by 1e18 / 2**96 = 5**18 / 2**78.
x = (x << 78) / 5**18;

should be 2**96 / 1e18 = 2**78 / 5**18

https://github.com/transmissions11/solmate/blob/main/src/utils/SignedWadMath.sol#L102