aboutsummaryrefslogtreecommitdiffstats
path: root/common
diff options
context:
space:
mode:
authorJeffrey Wilcke <jeffrey@ethereum.org>2017-02-18 01:39:43 +0800
committerGitHub <noreply@github.com>2017-02-18 01:39:43 +0800
commitbf21549faa7de6e2b920855468b14856c6f503c4 (patch)
treed32e4de3a3d00927744aa43e6ba2aaf526b40b36 /common
parent6f74fb962e68ad975289a604a89239c6376fa5e3 (diff)
downloaddexon-bf21549faa7de6e2b920855468b14856c6f503c4.tar.gz
dexon-bf21549faa7de6e2b920855468b14856c6f503c4.tar.zst
dexon-bf21549faa7de6e2b920855468b14856c6f503c4.zip
common/math: "optimised" SafeMul and added comment on Exp (#3675)
Diffstat (limited to 'common')
-rw-r--r--common/math/exp.go3
-rw-r--r--common/math/integer.go4
2 files changed, 5 insertions, 2 deletions
diff --git a/common/math/exp.go b/common/math/exp.go
index 6f6c040e0..113b76b39 100644
--- a/common/math/exp.go
+++ b/common/math/exp.go
@@ -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)
diff --git a/common/math/integer.go b/common/math/integer.go
index 8162b1985..1689b6586 100644
--- a/common/math/integer.go
+++ b/common/math/integer.go
@@ -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
}