KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > net > sf > jga > fn > arithmetic > BigIntMath


1 // ============================================================================
2
// $Id: BigIntMath.java,v 1.7 2005/08/02 23:45:05 davidahall Exp $
3
// Copyright (c) 2003-2005 David A. Hall
4
// ============================================================================
5
// The contents of this file are subject to the Common Development and
6
// Distribution License (CDDL), Version 1.0 (the License); you may not use this
7
// file except in compliance with the License. You should have received a copy
8
// of the the License along with this file: if not, a copy of the License is
9
// available from Sun Microsystems, Inc.
10
//
11
// http://www.sun.com/cddl/cddl.html
12
//
13
// From time to time, the license steward (initially Sun Microsystems, Inc.) may
14
// publish revised and/or new versions of the License. You may not use,
15
// distribute, or otherwise make this file available under subsequent versions
16
// of the License.
17
//
18
// Alternatively, the contents of this file may be used under the terms of the
19
// GNU Lesser General Public License Version 2.1 or later (the "LGPL"), in which
20
// case the provisions of the LGPL are applicable instead of those above. If you
21
// wish to allow use of your version of this file only under the terms of the
22
// LGPL, and not to allow others to use your version of this file under the
23
// terms of the CDDL, indicate your decision by deleting the provisions above
24
// and replace them with the notice and other provisions required by the LGPL.
25
// If you do not delete the provisions above, a recipient may use your version
26
// of this file under the terms of either the CDDL or the LGPL.
27
//
28
// This library is distributed in the hope that it will be useful,
29
// but WITHOUT ANY WARRANTY; without even the implied warranty of
30
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
31
// ============================================================================
32

33 package net.sf.jga.fn.arithmetic;
34
35 import java.math.BigInteger JavaDoc;
36
37 /**
38  * Provides Arithmetic implementation for BigIntegers
39  * <p>
40  * Copyright &copy; 2003-2005 David A. Hall
41  *
42  * @author <a HREF="mailto:davidahall@users.sourceforge.net">David A. Hall</a>
43  */

44
45 class BigIntMath implements IntegerArithmetic<BigInteger JavaDoc> {
46     
47     static final long serialVersionUID = 8004298803104674966L;
48     
49     /**
50      * Returns the given value in the appropriate type
51      * @throws IllegalArgumentException if the value cannot be converted
52      */

53
54     public BigInteger JavaDoc valueOf(Number JavaDoc value) throws IllegalArgumentException JavaDoc {
55         return BigInteger.valueOf(value.longValue());
56     }
57
58     /**
59      * Returns the value 0 of the appropriate type
60      */

61
62     public BigInteger JavaDoc zero() {
63         return BigInteger.ZERO;
64     }
65
66     /**
67      * Returns the value 1 of the appropriate type
68      */

69
70     public BigInteger JavaDoc one() {
71         return BigInteger.ONE;
72     }
73
74    /**
75     * For numeric arguments x and y, returns x + y
76     * @return the sum of the two arguments
77     */

78
79     public BigInteger JavaDoc plus (BigInteger JavaDoc x, BigInteger JavaDoc y) {
80         return x.add(y);
81     }
82
83    /**
84     * For numeric arguments x and y, returns x - y
85     * @return the difference of the two arguments
86     */

87      
88     public BigInteger JavaDoc minus (BigInteger JavaDoc x, BigInteger JavaDoc y) {
89         return x.subtract(y);
90     }
91      
92    /**
93     * For numeric arguments x and y, returns x * y
94     * @return the product of the two arguments
95     */

96
97     public BigInteger JavaDoc multiplies (BigInteger JavaDoc x, BigInteger JavaDoc y){
98         return x.multiply(y);
99     }
100          
101     /**
102      * For numeric arguments x and y, returns x / y
103      * @return the quotient of the two arguments
104      */

105
106     public BigInteger JavaDoc divides (BigInteger JavaDoc x, BigInteger JavaDoc y) {
107         return x.divide(y);
108     }
109      
110     /**
111      * for numeric argument x, returns -x
112      * @return the negative of its argument
113      */

114
115     public BigInteger JavaDoc negate (BigInteger JavaDoc x) {
116         return x.negate();
117     }
118     
119    /**
120     * For numeric arguments x and y, returns x % y
121     * @return the modulus of the two arguments
122     */

123      
124     public BigInteger JavaDoc modulus (BigInteger JavaDoc x, BigInteger JavaDoc y) {
125         return x.mod(y);
126     }
127
128     /**
129      * For numeric arguments x and y, returns x &amp; y
130      * @return x amp; y
131      */

132
133     public BigInteger JavaDoc and (BigInteger JavaDoc x, BigInteger JavaDoc y) {
134         return x.and(y);
135     }
136
137     /**
138      * For numeric arguments x and y, returns x | y
139      * @return x | y
140      */

141
142     public BigInteger JavaDoc or (BigInteger JavaDoc x, BigInteger JavaDoc y) {
143         return x.or(y);
144     }
145
146     /**
147      * For numeric arguments x and y, returns x ^ y
148      * @return x ^ y
149      */

150
151     public BigInteger JavaDoc xor (BigInteger JavaDoc x, BigInteger JavaDoc y) {
152         return x.xor(y);
153     }
154
155     /**
156      * For numeric argument x, returns ~x
157      * @return the one's complement of the argument
158      */

159
160     public BigInteger JavaDoc not (BigInteger JavaDoc x) {
161         return x.not();
162     }
163     
164     /**
165      * @return x << y
166      */

167
168     public BigInteger JavaDoc shiftLeft(BigInteger JavaDoc x, Integer JavaDoc y) {
169         return x.shiftLeft(y.intValue());
170     }
171
172     /**
173      * @return x >> y
174      */

175
176     public BigInteger JavaDoc signedShiftRight(BigInteger JavaDoc x, Integer JavaDoc y) {
177         return x.shiftRight(y.intValue());
178     }
179
180     /**
181      * Optional.
182      * @return x >>> y
183      */

184
185     public BigInteger JavaDoc unsignedShiftRight(BigInteger JavaDoc x, Integer JavaDoc y) {
186         String JavaDoc msg = "BigInteger cannot support unsigned shift";
187         throw new UnsupportedOperationException JavaDoc(msg);
188     }
189 }
190
Popular Tags