wadExp function comments mistake
0x-stan opened this issue · 3 comments
0x-stan commented
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
transmissions11 commented
ah hm nice find!
recmo commented
Yeah, that should be x <= floor(log(0.5e-18) * 1e18) ~ -42e18
0x-stan commented
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