diff options
Diffstat (limited to 'libgo/go/big/arith.go')
-rw-r--r-- | libgo/go/big/arith.go | 25 |
1 files changed, 4 insertions, 21 deletions
diff --git a/libgo/go/big/arith.go b/libgo/go/big/arith.go index a4048d6..242bd1e 100644 --- a/libgo/go/big/arith.go +++ b/libgo/go/big/arith.go @@ -27,7 +27,6 @@ const ( _M2 = _B2 - 1 // half digit mask ) - // ---------------------------------------------------------------------------- // Elementary operations on words // @@ -43,7 +42,6 @@ func addWW_g(x, y, c Word) (z1, z0 Word) { return } - // z1<<_W + z0 = x-y-c, with c == 0 or 1 func subWW_g(x, y, c Word) (z1, z0 Word) { yc := y + c @@ -54,7 +52,6 @@ func subWW_g(x, y, c Word) (z1, z0 Word) { return } - // z1<<_W + z0 = x*y func mulWW(x, y Word) (z1, z0 Word) { return mulWW_g(x, y) } // Adapted from Warren, Hacker's Delight, p. 132. @@ -73,7 +70,6 @@ func mulWW_g(x, y Word) (z1, z0 Word) { return } - // z1<<_W + z0 = x*y + c func mulAddWWW_g(x, y, c Word) (z1, z0 Word) { z1, zz0 := mulWW(x, y) @@ -83,7 +79,6 @@ func mulAddWWW_g(x, y, c Word) (z1, z0 Word) { return } - // Length of x in bits. func bitLen(x Word) (n int) { for ; x >= 0x100; x >>= 8 { @@ -95,7 +90,6 @@ func bitLen(x Word) (n int) { return } - // log2 computes the integer binary logarithm of x. // The result is the integer n for which 2^n <= x < 2^(n+1). // If x == 0, the result is -1. @@ -103,13 +97,11 @@ func log2(x Word) int { return bitLen(x) - 1 } - // Number of leading zeros in x. func leadingZeros(x Word) uint { return uint(_W - bitLen(x)) } - // q = (u1<<_W + u0 - r)/y func divWW(x1, x0, y Word) (q, r Word) { return divWW_g(x1, x0, y) } // Adapted from Warren, Hacker's Delight, p. 152. @@ -155,7 +147,6 @@ again2: return q1*_B2 + q0, (un21*_B2 + un0 - q0*v) >> s } - func addVV(z, x, y []Word) (c Word) { return addVV_g(z, x, y) } func addVV_g(z, x, y []Word) (c Word) { for i := range z { @@ -164,7 +155,6 @@ func addVV_g(z, x, y []Word) (c Word) { return } - func subVV(z, x, y []Word) (c Word) { return subVV_g(z, x, y) } func subVV_g(z, x, y []Word) (c Word) { for i := range z { @@ -173,7 +163,6 @@ func subVV_g(z, x, y []Word) (c Word) { return } - func addVW(z, x []Word, y Word) (c Word) { return addVW_g(z, x, y) } func addVW_g(z, x []Word, y Word) (c Word) { c = y @@ -183,7 +172,6 @@ func addVW_g(z, x []Word, y Word) (c Word) { return } - func subVW(z, x []Word, y Word) (c Word) { return subVW_g(z, x, y) } func subVW_g(z, x []Word, y Word) (c Word) { c = y @@ -193,9 +181,8 @@ func subVW_g(z, x []Word, y Word) (c Word) { return } - -func shlVW(z, x []Word, s Word) (c Word) { return shlVW_g(z, x, s) } -func shlVW_g(z, x []Word, s Word) (c Word) { +func shlVU(z, x []Word, s uint) (c Word) { return shlVU_g(z, x, s) } +func shlVU_g(z, x []Word, s uint) (c Word) { if n := len(z); n > 0 { ŝ := _W - s w1 := x[n-1] @@ -210,9 +197,8 @@ func shlVW_g(z, x []Word, s Word) (c Word) { return } - -func shrVW(z, x []Word, s Word) (c Word) { return shrVW_g(z, x, s) } -func shrVW_g(z, x []Word, s Word) (c Word) { +func shrVU(z, x []Word, s uint) (c Word) { return shrVU_g(z, x, s) } +func shrVU_g(z, x []Word, s uint) (c Word) { if n := len(z); n > 0 { ŝ := _W - s w1 := x[0] @@ -227,7 +213,6 @@ func shrVW_g(z, x []Word, s Word) (c Word) { return } - func mulAddVWW(z, x []Word, y, r Word) (c Word) { return mulAddVWW_g(z, x, y, r) } func mulAddVWW_g(z, x []Word, y, r Word) (c Word) { c = r @@ -237,7 +222,6 @@ func mulAddVWW_g(z, x []Word, y, r Word) (c Word) { return } - func addMulVVW(z, x []Word, y Word) (c Word) { return addMulVVW_g(z, x, y) } func addMulVVW_g(z, x []Word, y Word) (c Word) { for i := range z { @@ -248,7 +232,6 @@ func addMulVVW_g(z, x []Word, y Word) (c Word) { return } - func divWVW(z []Word, xn Word, x []Word, y Word) (r Word) { return divWVW_g(z, xn, x, y) } func divWVW_g(z []Word, xn Word, x []Word, y Word) (r Word) { r = xn |