From: Sergey Matveev Date: Tue, 14 Jan 2025 10:20:34 +0000 (+0300) Subject: Slightly shorter big.Int initialisation X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=92230893385c9e7ba5368490b816e4381cffec609a4ce188ce4b2fb9d7dd02bb;p=keks.git Slightly shorter big.Int initialisation --- diff --git a/go/atom-decode.go b/go/atom-decode.go index 443ed14..17e15f3 100644 --- a/go/atom-decode.go +++ b/go/atom-decode.go @@ -143,11 +143,10 @@ func (ctx *Decoder) DecodeAtom() (t types.Type, err error) { return } if len(s) > 8 { - bi := big.NewInt(0) - bi = bi.SetBytes([]byte(s)) + bi := new(big.Int).SetBytes([]byte(s)) if t == types.Int { - n1 := big.NewInt(-1) - bi = bi.Sub(n1, bi) + bi = bi.Add(bi, big.NewInt(1)) + bi = bi.Neg(bi) } t = types.BigInt ctx.bigints = append(ctx.bigints, bi) @@ -158,10 +157,9 @@ func (ctx *Decoder) DecodeAtom() (t types.Type, err error) { ctx.uints = append(ctx.uints, i) } else { if i >= (1 << 63) { - bi := big.NewInt(0) - bi = bi.SetBytes([]byte(s)) - n1 := big.NewInt(-1) - bi = bi.Sub(n1, bi) + bi := new(big.Int).SetBytes([]byte(s)) + bi = bi.Add(bi, big.NewInt(1)) + bi = bi.Neg(bi) ctx.bigints = append(ctx.bigints, bi) t = types.BigInt } else { diff --git a/go/cmd/test-vector-anys/main.go b/go/cmd/test-vector-anys/main.go index 650eee1..ffb653d 100644 --- a/go/cmd/test-vector-anys/main.go +++ b/go/cmd/test-vector-anys/main.go @@ -24,18 +24,13 @@ func mustHexDec(s string) []byte { } func main() { - bigint80 := big.NewInt(0) - bigint80.SetBytes(mustHexDec("0100000000000000000000")) - bigintFF := big.NewInt(0) - bigintFF.SetBytes(mustHexDec("0100000000000000000000000000000000")) - bigintN80 := big.NewInt(0) - bigintN80.SetBytes(mustHexDec("0100000000000000000000")) + bigint80 := new(big.Int).SetBytes(mustHexDec("0100000000000000000000")) + bigintFF := new(big.Int).SetBytes(mustHexDec("0100000000000000000000000000000000")) + bigintN80 := new(big.Int).SetBytes(mustHexDec("0100000000000000000000")) bigintN80 = bigintN80.Neg(bigintN80) - bigintNFF := big.NewInt(0) - bigintNFF.SetBytes(mustHexDec("0100000000000000000000000000000001")) + bigintNFF := new(big.Int).SetBytes(mustHexDec("0100000000000000000000000000000001")) bigintNFF = bigintNFF.Neg(bigintNFF) - bigintN := big.NewInt(0) - bigintN.SetBytes(mustHexDec("e5a461280341856d4ad908a69ea5f3ccc10c7882142bb7d801cc380f26b6b4d69632024ee521f8cfafb443d49a2a3d0cc73bb4757e882f5396ed302b418210d0d49d71be86ca699cf5ee3bd6d57ed658e69316229644ba650c92d7f0d4db29c3ad1dfa9979166f4c6e79561a58f8e2c63d08df4e2246ed1f64d2d613a19d8c9a6870e6188e2f3ad40c038fda30452f8ddfcd212a6a974bc25ec6a0564c66a7d28750ff9db458b74441e49ee5e82dbf4974d645678e0ad031f97aaba855451eef17a89b42821e530816dd5793a83b7a82e8ede81e7f3395691f761784f8bc627961cd40845ee908a40b9d1f01927b38eb1a7d4efd60db0944f7ec1b832b7e6eb1833f9a351576ad5de571fae8865da7514f06b0fbf38c1f2a8538f5d38b4e18001ccbb9ddcb488530f6086d14744d8b5672166e48e9ef93772575db66b6f257c6ffad6e2c291510c5ed02e1a8b24b44ec1e2a91686238e8defd18c01998634a5076a6b7f85fc81a1d61a15b2c528dfa082ce3e3e2ca649ac04817ec5c123e0b761ab103f780c014f021bbeb7ea3b86e0ca1c833e38ef5c897a6d7e1f4a2398c490b3d65e2f45c7fae402d1df1698b6fddb185481664871c2664bfd1686b2b3372783f1856f6247a3f8437a2818f68b7c4ea13a5f57b73c72870b684045f15")) + bigintN := new(big.Int).SetBytes(mustHexDec("e5a461280341856d4ad908a69ea5f3ccc10c7882142bb7d801cc380f26b6b4d69632024ee521f8cfafb443d49a2a3d0cc73bb4757e882f5396ed302b418210d0d49d71be86ca699cf5ee3bd6d57ed658e69316229644ba650c92d7f0d4db29c3ad1dfa9979166f4c6e79561a58f8e2c63d08df4e2246ed1f64d2d613a19d8c9a6870e6188e2f3ad40c038fda30452f8ddfcd212a6a974bc25ec6a0564c66a7d28750ff9db458b74441e49ee5e82dbf4974d645678e0ad031f97aaba855451eef17a89b42821e530816dd5793a83b7a82e8ede81e7f3395691f761784f8bc627961cd40845ee908a40b9d1f01927b38eb1a7d4efd60db0944f7ec1b832b7e6eb1833f9a351576ad5de571fae8865da7514f06b0fbf38c1f2a8538f5d38b4e18001ccbb9ddcb488530f6086d14744d8b5672166e48e9ef93772575db66b6f257c6ffad6e2c291510c5ed02e1a8b24b44ec1e2a91686238e8defd18c01998634a5076a6b7f85fc81a1d61a15b2c528dfa082ce3e3e2ca649ac04817ec5c123e0b761ab103f780c014f021bbeb7ea3b86e0ca1c833e38ef5c897a6d7e1f4a2398c490b3d65e2f45c7fae402d1df1698b6fddb185481664871c2664bfd1686b2b3372783f1856f6247a3f8437a2818f68b7c4ea13a5f57b73c72870b684045f15")) bigintN = bigintN.Neg(bigintN) data := map[string]any{ diff --git a/go/cmd/test-vector-manual/main.go b/go/cmd/test-vector-manual/main.go index 2d933a9..3eb3794 100644 --- a/go/cmd/test-vector-manual/main.go +++ b/go/cmd/test-vector-manual/main.go @@ -93,8 +93,7 @@ func main() { mustEncode(keks.IntEncode(&buf, -1234)) mustEncode(keks.IntEncode(&buf, -12345678)) - b := big.NewInt(0) - b.SetBytes(mustHexDec("0100000000000000000000")) + b := new(big.Int).SetBytes(mustHexDec("0100000000000000000000")) b = b.Neg(b) mustEncode(keks.BigIntEncode(&buf, b)) b.SetBytes(mustHexDec("0100000000000000000000000000000001")) @@ -115,8 +114,7 @@ func main() { mustEncode(keks.UIntEncode(&buf, 123)) mustEncode(keks.UIntEncode(&buf, 1234)) mustEncode(keks.UIntEncode(&buf, 12345678)) - b := big.NewInt(0) - b.SetBytes(mustHexDec("0100000000000000000000")) + b := new(big.Int).SetBytes(mustHexDec("0100000000000000000000")) mustEncode(keks.BigIntEncode(&buf, b)) b.SetBytes(mustHexDec("0100000000000000000000000000000000")) mustEncode(keks.BigIntEncode(&buf, b))