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 implement exponentiation by squaring algorithm.
|
||||||
//
|
//
|
||||||
|
// Exp return a new variable; base and exponent must
|
||||||
|
// not be changed under any circumstance.
|
||||||
|
//
|
||||||
// Courtesy @karalabe and @chfast
|
// Courtesy @karalabe and @chfast
|
||||||
func Exp(base, exponent *big.Int) *big.Int {
|
func Exp(base, exponent *big.Int) *big.Int {
|
||||||
result := big.NewInt(1)
|
result := big.NewInt(1)
|
||||||
|
@ -18,8 +18,8 @@ func SafeAdd(x, y uint64) (uint64, bool) {
|
|||||||
|
|
||||||
// SafeMul returns multiplication result and whether overflow occurred.
|
// SafeMul returns multiplication result and whether overflow occurred.
|
||||||
func SafeMul(x, y uint64) (uint64, bool) {
|
func SafeMul(x, y uint64) (uint64, bool) {
|
||||||
if x == 0 {
|
if x == 0 || y == 0 {
|
||||||
return 0, false
|
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