aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRobert Griesemer <gri@golang.org>2008-11-12 11:00:11 -0800
committerRobert Griesemer <gri@golang.org>2008-11-12 11:00:11 -0800
commit2727abe4fc0e169c5414e5cb0c1cc7d5d33bf69d (patch)
tree2e28033a8d8080b33d9fa6ef6b729bf976c1a83d /src
parent9c9cc2c9d8bd2303e1f0c3619c1451ac469fc086 (diff)
downloadgo-2727abe4fc0e169c5414e5cb0c1cc7d5d33bf69d.tar.xz
- lowercased package name (Bignum -> bignum)
- implemented some missing functionality (and, or, xor of positive ints) R=r OCL=19087 CL=19087
Diffstat (limited to 'src')
-rwxr-xr-xsrc/lib/bignum.go31
1 files changed, 23 insertions, 8 deletions
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;
}