mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Fixed implementation of EXP opcode (wrong results when exponent >= 2^32)
This commit is contained in:
parent
b3e2070903
commit
17cb91aa35
@ -230,7 +230,7 @@ Assembly& Assembly::optimise(bool _enable)
|
||||
{ Instruction::SDIV, [](u256 a, u256 b)->u256{return s2u(u2s(a) / u2s(b));} },
|
||||
{ Instruction::MOD, [](u256 a, u256 b)->u256{return a % b;} },
|
||||
{ Instruction::SMOD, [](u256 a, u256 b)->u256{return s2u(u2s(a) % u2s(b));} },
|
||||
{ Instruction::EXP, [](u256 a, u256 b)->u256{return boost::multiprecision::pow(a, (unsigned)b);} },
|
||||
{ Instruction::EXP, [](u256 a, u256 b)->u256{return (u256)boost::multiprecision::powm((bigint)a, (bigint)b, bigint(2) << 256);} },
|
||||
{ Instruction::LT, [](u256 a, u256 b)->u256{return a < b ? 1 : 0;} },
|
||||
{ Instruction::GT, [](u256 a, u256 b)->u256{return a > b ? 1 : 0;} },
|
||||
{ Instruction::SLT, [](u256 a, u256 b)->u256{return u2s(a) < u2s(b) ? 1 : 0;} },
|
||||
|
Loading…
Reference in New Issue
Block a user