diff options
| author | Robert Griesemer <gri@golang.org> | 2015-03-04 14:53:41 -0800 |
|---|---|---|
| committer | Robert Griesemer <gri@golang.org> | 2015-03-12 18:31:21 +0000 |
| commit | 63269404a8d588fb0af679adc1f940294cedc2c0 (patch) | |
| tree | dd50e2d6074a0443dd17294ab560439efe12228e /src/math/big/float_test.go | |
| parent | cf6b60c2f1e058bb82f3143e9e1d368f12a7a84d (diff) | |
| download | go-63269404a8d588fb0af679adc1f940294cedc2c0.tar.xz | |
math/big: introduce Bits abstraction instead of using "untyped" []int bit lists
Change-Id: I6caa6bdcf6643ce3015244397a752bd133f3d00c
Reviewed-on: https://go-review.googlesource.com/6840
Reviewed-by: Alan Donovan <adonovan@google.com>
Diffstat (limited to 'src/math/big/float_test.go')
| -rw-r--r-- | src/math/big/float_test.go | 32 |
1 files changed, 16 insertions, 16 deletions
diff --git a/src/math/big/float_test.go b/src/math/big/float_test.go index 97a54f62b3..281e099bd6 100644 --- a/src/math/big/float_test.go +++ b/src/math/big/float_test.go @@ -1006,7 +1006,7 @@ var precList = [...]uint{1, 2, 5, 8, 10, 16, 23, 24, 32, 50, 53, 64, 100, 128, 5 // Selected bits with which to run various tests. // Each entry is a list of bits representing a floating-point number (see fromBits). -var bitsList = [...][]int{ +var bitsList = [...]Bits{ {}, // = 0 {0}, // = 1 {1}, // = 2 @@ -1026,23 +1026,23 @@ func TestFloatAdd(t *testing.T) { for _, xbits := range bitsList { for _, ybits := range bitsList { // exact values - x := fromBits(xbits) - y := fromBits(ybits) - zbits := addBits(xbits, ybits) - z := fromBits(zbits) + x := xbits.Float() + y := ybits.Float() + zbits := xbits.add(ybits) + z := zbits.Float() for i, mode := range [...]RoundingMode{ToZero, ToNearestEven, AwayFromZero} { for _, prec := range precList { got := new(Float).SetPrec(prec).SetMode(mode) got.Add(x, y) - want := roundBits(zbits, prec, mode) + want := zbits.round(prec, mode) if got.Cmp(want) != 0 { t.Errorf("i = %d, prec = %d, %s:\n\t %s %v\n\t+ %s %v\n\t= %s\n\twant %s", i, prec, mode, x, xbits, y, ybits, got, want) } got.Sub(z, x) - want = roundBits(ybits, prec, mode) + want = ybits.round(prec, mode) if got.Cmp(want) != 0 { t.Errorf("i = %d, prec = %d, %s:\n\t %s %v\n\t- %s %v\n\t= %s\n\twant %s", i, prec, mode, z, zbits, x, xbits, got, want) @@ -1127,16 +1127,16 @@ func TestFloatMul(t *testing.T) { for _, xbits := range bitsList { for _, ybits := range bitsList { // exact values - x := fromBits(xbits) - y := fromBits(ybits) - zbits := mulBits(xbits, ybits) // x * y - z := fromBits(zbits) + x := xbits.Float() + y := ybits.Float() + zbits := xbits.mul(ybits) + z := zbits.Float() for i, mode := range [...]RoundingMode{ToZero, ToNearestEven, AwayFromZero} { for _, prec := range precList { got := new(Float).SetPrec(prec).SetMode(mode) got.Mul(x, y) - want := roundBits(zbits, prec, mode) + want := zbits.round(prec, mode) if got.Cmp(want) != 0 { t.Errorf("i = %d, prec = %d, %s:\n\t %s %v\n\t* %s %v\n\t= %s\n\twant %s", i, prec, mode, x, xbits, y, ybits, got, want) @@ -1146,7 +1146,7 @@ func TestFloatMul(t *testing.T) { continue // ignore div-0 case (not invertable) } got.Quo(z, x) - want = roundBits(ybits, prec, mode) + want = ybits.round(prec, mode) if got.Cmp(want) != 0 { t.Errorf("i = %d, prec = %d, %s:\n\t %s %v\n\t/ %s %v\n\t= %s\n\twant %s", i, prec, mode, z, zbits, x, xbits, got, want) @@ -1249,7 +1249,7 @@ func TestFloatQuo(t *testing.T) { for i := 0; i < 8; i++ { // compute accurate (not rounded) result z - bits := []int{preci - 1} + bits := Bits{preci - 1} if i&3 != 0 { bits = append(bits, 0) } @@ -1259,7 +1259,7 @@ func TestFloatQuo(t *testing.T) { if i&1 != 0 { bits = append(bits, -precf) } - z := fromBits(bits) + z := bits.Float() // compute accurate x as z*y y := new(Float).SetFloat64(3.14159265358979323e123) @@ -1280,7 +1280,7 @@ func TestFloatQuo(t *testing.T) { for d := -5; d < 5; d++ { prec := uint(preci + d) got := new(Float).SetPrec(prec).SetMode(mode).Quo(x, y) - want := roundBits(bits, prec, mode) + want := bits.round(prec, mode) if got.Cmp(want) != 0 { t.Errorf("i = %d, prec = %d, %s:\n\t %s\n\t/ %s\n\t= %s\n\twant %s", i, prec, mode, x, y, got, want) |
