math/big.Int Cmp method does not have a fast path for the case if x and y are the same.
Fixes #30856
Change-Id: Ia9a5b5f72db9d73af1b13ed6ac39ecff87d10393
Reviewed-on: https://go-review.googlesource.com/c/go/+/178957
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Robert Griesemer <gri@golang.org>
// (-x) cmp y == y
// (-x) cmp (-y) == -(x cmp y)
switch {
+ case x == y:
+ // nothing to do
case x.neg == y.neg:
r = x.abs.cmp(y.abs)
if x.neg {
}
}
+func TestIntCmpSelf(t *testing.T) {
+ for _, s := range cmpAbsTests {
+ x, ok := new(Int).SetString(s, 0)
+ if !ok {
+ t.Fatalf("SetString(%s, 0) failed", s)
+ }
+ got := x.Cmp(x)
+ want := 0
+ if got != want {
+ t.Errorf("x = %s: x.Cmp(x): got %d; want %d", x, got, want)
+ }
+ }
+}
+
var int64Tests = []string{
// int64
"0",