common/math: "optimised" SafeMul and added comment on Exp (#3675)

pull/3633/merge
Jeffrey Wilcke 8 years ago committed by GitHub
parent 6f74fb962e
commit bf21549faa
  1. 3
      common/math/exp.go
  2. 4
      common/math/integer.go

@ -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…
Cancel
Save