forked from cerc-io/plugeth
common/math: "optimised" SafeMul and added comment on Exp (#3675)
This commit is contained in:
parent
6f74fb962e
commit
bf21549faa
@ -27,6 +27,9 @@ const wordSize = 32 << (uint64(^big.Word(0)) >> 63)
|
||||
|
||||
// Exp implement exponentiation by squaring algorithm.
|
||||
//
|
||||
// Exp return a new variable; base and exponent must
|
||||
// not be changed under any circumstance.
|
||||
//
|
||||
// Courtesy @karalabe and @chfast
|
||||
func Exp(base, exponent *big.Int) *big.Int {
|
||||
result := big.NewInt(1)
|
||||
|
@ -18,8 +18,8 @@ func SafeAdd(x, y uint64) (uint64, bool) {
|
||||
|
||||
// SafeMul returns multiplication result and whether overflow occurred.
|
||||
func SafeMul(x, y uint64) (uint64, bool) {
|
||||
if x == 0 {
|
||||
if x == 0 || y == 0 {
|
||||
return 0, false
|
||||
}
|
||||
return x * y, x != 0 && y != 0 && y > gmath.MaxUint64/x
|
||||
return x * y, y > gmath.MaxUint64/x
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user