From: Robert Griesemer Date: Wed, 12 Nov 2008 19:00:11 +0000 (-0800) Subject: - lowercased package name (Bignum -> bignum) X-Git-Tag: weekly.2009-11-06~2743 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=2727abe4fc0e169c5414e5cb0c1cc7d5d33bf69d;p=gostls13.git - lowercased package name (Bignum -> bignum) - implemented some missing functionality (and, or, xor of positive ints) R=r OCL=19087 CL=19087 --- diff --git a/src/lib/bignum.go b/src/lib/bignum.go index 6c3da2638b..9499a433f9 100755 --- a/src/lib/bignum.go +++ b/src/lib/bignum.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -package Bignum +package bignum // A package for arbitrary precision arithmethic. // It implements the following numeric types: @@ -1076,27 +1076,42 @@ func (x *Integer) Shl(s uint) *Integer { func (x *Integer) Shr(s uint) *Integer { z := MakeInt(x.sign, x.mant.Shr(s)); if x.IsNeg() { - panic("UNIMPLEMENTED"); + panic("UNIMPLEMENTED Integer.Shr() of negative values"); } return z; } func (x *Integer) And(y *Integer) *Integer { - panic("UNIMPLEMENTED"); - return nil; + var z *Integer; + if !x.sign && !y.sign { + z = MakeInt(false, x.mant.And(y.mant)); + } else { + panic("UNIMPLEMENTED Integer.And() of negative values"); + } + return z; } func (x *Integer) Or(y *Integer) *Integer { - panic("UNIMPLEMENTED"); - return nil; + var z *Integer; + if !x.sign && !y.sign { + z = MakeInt(false, x.mant.Or(y.mant)); + } else { + panic("UNIMPLEMENTED Integer.Or() of negative values"); + } + return z; } func (x *Integer) Xor(y *Integer) *Integer { - panic("UNIMPLEMENTED"); - return nil; + var z *Integer; + if !x.sign && !y.sign { + z = MakeInt(false, x.mant.Xor(y.mant)); + } else { + panic("UNIMPLEMENTED Integer.Xor() of negative values"); + } + return z; }