]> Cypherpunks repositories - gostls13.git/commitdiff
big: fix (*Rat) SetFrac64(a, b) when b < 0.
authorEoghan Sherry <ejsherry@gmail.com>
Tue, 30 Nov 2010 18:23:27 +0000 (10:23 -0800)
committerRobert Griesemer <gri@golang.org>
Tue, 30 Nov 2010 18:23:27 +0000 (10:23 -0800)
R=gri
CC=golang-dev
https://golang.org/cl/3352041

src/pkg/big/rat.go
src/pkg/big/rat_test.go

index 40c6ef5bd6af76e58f87929bb98dfcd8308ea033..e70673a1cbacd10381f247b6419adcbd28f7bf39 100644 (file)
@@ -35,9 +35,8 @@ func (z *Rat) SetFrac(a, b *Int) *Rat {
 func (z *Rat) SetFrac64(a, b int64) *Rat {
        z.a.SetInt64(a)
        if b < 0 {
-               z.b.setUint64(uint64(-b))
+               b = -b
                z.a.neg = !z.a.neg
-               return z.norm()
        }
        z.b = z.b.setUint64(uint64(b))
        return z.norm()
index 460ed409e02ff3e8db93c36969ccc5000ad18179..8f42949b087e3ebd6b5dc61886500cd60f0ead06 100644 (file)
@@ -257,3 +257,26 @@ func TestIssue820(t *testing.T) {
                t.Errorf("got %s want %s", z, q)
        }
 }
+
+
+var setFrac64Tests = []struct {
+       a, b int64
+       out  string
+}{
+       {0, 1, "0"},
+       {0, -1, "0"},
+       {1, 1, "1"},
+       {-1, 1, "-1"},
+       {1, -1, "-1"},
+       {-1, -1, "1"},
+       {-9223372036854775808, -9223372036854775808, "1"},
+}
+
+func TestRatSetFrac64Rat(t *testing.T) {
+       for i, test := range setFrac64Tests {
+               x := new(Rat).SetFrac64(test.a, test.b)
+               if x.RatString() != test.out {
+                       t.Errorf("#%d got %s want %s", i, x.RatString(), test.out)
+               }
+       }
+}