common/math: fix go vet issues on exp calculation

This commit is contained in:
Péter Szilágyi 2016-11-02 11:13:31 +02:00 committed by GitHub
parent b9923b46f6
commit 2c39462828

View file

@ -6,14 +6,8 @@ import (
"github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common"
) )
const ( // wordSize is the size number of bytes in a big.Int Word.
// Perverted constants straight out of big.Int const wordSize = 32 << (uint64(^big.Word(0))>>63)
// https://golang.org/src/math/big/arith.go
_m = ^big.Word(0)
_logS = _m>>8&1 + _m>>16&1 + _m>>32&1
_S = 1 << _logS
_W = _S << 3 // word size in bits
)
// Exp implement exponentiation by squaring algorithm. // Exp implement exponentiation by squaring algorithm.
// //
@ -22,7 +16,7 @@ func Exp(base, exponent *big.Int) *big.Int {
result := big.NewInt(1) result := big.NewInt(1)
for _, word := range exponent.Bits() { for _, word := range exponent.Bits() {
for i := 0; i < _W; i++ { for i := 0; i < wordSize; i++ {
if word&1 == 1 { if word&1 == 1 {
common.U256(result.Mul(result, base)) common.U256(result.Mul(result, base))
} }