Mercurial > projects > dwt2
annotate base/src/java/math/BigInteger.d @ 98:48d4ee626868
rm databinding.observable seems to be duplicate, databinding.beans now building
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Wed, 22 Apr 2009 07:30:21 +0200 |
parents | b2d6122fa189 |
children | 5d5bd660917f |
rev | line source |
---|---|
82 | 1 module java.math.BigInteger; |
2 | |
3 import java.lang.all; | |
4 import java.util.Random; | |
98
48d4ee626868
rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents:
82
diff
changeset
|
5 version(Tango){ |
48d4ee626868
rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents:
82
diff
changeset
|
6 import tango.math.BigInt; |
48d4ee626868
rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents:
82
diff
changeset
|
7 } else { // Phobos |
48d4ee626868
rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents:
82
diff
changeset
|
8 } |
82 | 9 |
10 class BigInteger : Number { | |
11 | |
98
48d4ee626868
rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents:
82
diff
changeset
|
12 static const BigInteger ZERO; |
48d4ee626868
rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents:
82
diff
changeset
|
13 static const BigInteger ONE; |
82 | 14 |
98
48d4ee626868
rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents:
82
diff
changeset
|
15 private BigInt bi; |
48d4ee626868
rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents:
82
diff
changeset
|
16 |
48d4ee626868
rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents:
82
diff
changeset
|
17 static this(){ |
48d4ee626868
rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents:
82
diff
changeset
|
18 ZERO = BigInteger.valueOf(0); |
48d4ee626868
rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents:
82
diff
changeset
|
19 ONE = BigInteger.valueOf(1); |
48d4ee626868
rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents:
82
diff
changeset
|
20 } |
48d4ee626868
rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents:
82
diff
changeset
|
21 |
82 | 22 this(byte[] val){ |
23 implMissing(__FILE__, __LINE__ ); | |
24 } | |
25 this(int signum, byte[] magnitude){ | |
26 implMissing(__FILE__, __LINE__ ); | |
27 } | |
28 this(int bitLength, int certainty, Random rnd){ | |
29 implMissing(__FILE__, __LINE__ ); | |
30 } | |
31 this(int numBits, Random rnd){ | |
32 implMissing(__FILE__, __LINE__ ); | |
33 } | |
34 this(String val){ | |
98
48d4ee626868
rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents:
82
diff
changeset
|
35 bi = BigInt( val ); |
82 | 36 } |
37 this(String val, int radix){ | |
98
48d4ee626868
rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents:
82
diff
changeset
|
38 if( radix is 10 ){ |
48d4ee626868
rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents:
82
diff
changeset
|
39 bi = BigInt( val ); |
48d4ee626868
rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents:
82
diff
changeset
|
40 } |
48d4ee626868
rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents:
82
diff
changeset
|
41 else if( radix is 16 ){ |
48d4ee626868
rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents:
82
diff
changeset
|
42 bi = BigInt( "0x" ~ val ); |
48d4ee626868
rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents:
82
diff
changeset
|
43 } |
48d4ee626868
rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents:
82
diff
changeset
|
44 else { |
48d4ee626868
rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents:
82
diff
changeset
|
45 implMissing(__FILE__, __LINE__ ); |
48d4ee626868
rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents:
82
diff
changeset
|
46 } |
48d4ee626868
rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents:
82
diff
changeset
|
47 } |
48d4ee626868
rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents:
82
diff
changeset
|
48 private this( BigInt v ){ |
48d4ee626868
rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents:
82
diff
changeset
|
49 bi = v; |
48d4ee626868
rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents:
82
diff
changeset
|
50 } |
48d4ee626868
rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents:
82
diff
changeset
|
51 private this( BigInteger v ){ |
48d4ee626868
rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents:
82
diff
changeset
|
52 bi = v.bi; |
48d4ee626868
rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents:
82
diff
changeset
|
53 } |
48d4ee626868
rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents:
82
diff
changeset
|
54 private this( long v ){ |
48d4ee626868
rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents:
82
diff
changeset
|
55 bi = BigInt(v); |
82 | 56 } |
57 BigInteger abs(){ | |
58 implMissing(__FILE__, __LINE__ ); | |
59 return null; | |
60 } | |
61 BigInteger add(BigInteger val){ | |
62 implMissing(__FILE__, __LINE__ ); | |
63 return null; | |
64 } | |
65 BigInteger and(BigInteger val){ | |
66 implMissing(__FILE__, __LINE__ ); | |
67 return null; | |
68 } | |
69 BigInteger andNot(BigInteger val){ | |
70 implMissing(__FILE__, __LINE__ ); | |
71 return null; | |
72 } | |
73 int bitCount(){ | |
74 implMissing(__FILE__, __LINE__ ); | |
75 return 0; | |
76 } | |
77 int bitLength(){ | |
98
48d4ee626868
rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents:
82
diff
changeset
|
78 //implMissing(__FILE__, __LINE__ ); |
82 | 79 return 0; |
80 } | |
81 BigInteger clearBit(int n){ | |
82 implMissing(__FILE__, __LINE__ ); | |
83 return null; | |
84 } | |
85 int compareTo(BigInteger val){ | |
86 implMissing(__FILE__, __LINE__ ); | |
87 return 0; | |
88 } | |
89 int compareTo(Object o){ | |
90 implMissing(__FILE__, __LINE__ ); | |
91 return 0; | |
92 } | |
93 BigInteger divide(BigInteger val){ | |
94 implMissing(__FILE__, __LINE__ ); | |
95 return null; | |
96 } | |
97 BigInteger[] divideAndRemainder(BigInteger val){ | |
98 implMissing(__FILE__, __LINE__ ); | |
99 return null; | |
100 } | |
101 double doubleValue(){ | |
102 implMissing(__FILE__, __LINE__ ); | |
103 return 0; | |
104 } | |
105 bool equals(Object x){ | |
106 implMissing(__FILE__, __LINE__ ); | |
107 return 0; | |
108 } | |
109 BigInteger flipBit(int n){ | |
110 implMissing(__FILE__, __LINE__ ); | |
111 return null; | |
112 } | |
113 float floatValue(){ | |
114 implMissing(__FILE__, __LINE__ ); | |
115 return 0; | |
116 } | |
117 BigInteger gcd(BigInteger val){ | |
118 implMissing(__FILE__, __LINE__ ); | |
119 return null; | |
120 } | |
121 int getLowestSetBit(){ | |
122 implMissing(__FILE__, __LINE__ ); | |
123 return 0; | |
124 } | |
125 int hashCode(){ | |
126 implMissing(__FILE__, __LINE__ ); | |
127 return 0; | |
128 } | |
129 int intValue(){ | |
130 implMissing(__FILE__, __LINE__ ); | |
131 return 0; | |
132 } | |
133 bool isProbablePrime(int certainty){ | |
134 implMissing(__FILE__, __LINE__ ); | |
135 return 0; | |
136 } | |
137 long longValue(){ | |
138 implMissing(__FILE__, __LINE__ ); | |
139 return 0; | |
140 } | |
141 BigInteger max(BigInteger val){ | |
142 implMissing(__FILE__, __LINE__ ); | |
143 return null; | |
144 } | |
145 BigInteger min(BigInteger val){ | |
146 implMissing(__FILE__, __LINE__ ); | |
147 return null; | |
148 } | |
149 BigInteger mod(BigInteger m){ | |
150 implMissing(__FILE__, __LINE__ ); | |
151 return null; | |
152 } | |
153 BigInteger modInverse(BigInteger m){ | |
154 implMissing(__FILE__, __LINE__ ); | |
155 return null; | |
156 } | |
157 BigInteger modPow(BigInteger exponent, BigInteger m){ | |
158 implMissing(__FILE__, __LINE__ ); | |
159 return null; | |
160 } | |
161 BigInteger multiply(BigInteger val){ | |
98
48d4ee626868
rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents:
82
diff
changeset
|
162 auto res = new BigInteger(this); |
48d4ee626868
rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents:
82
diff
changeset
|
163 res.bi *= val.bi; |
48d4ee626868
rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents:
82
diff
changeset
|
164 return res; |
82 | 165 } |
166 BigInteger negate(){ | |
167 implMissing(__FILE__, __LINE__ ); | |
168 return null; | |
169 } | |
170 BigInteger not(){ | |
171 implMissing(__FILE__, __LINE__ ); | |
172 return null; | |
173 } | |
174 BigInteger or(BigInteger val){ | |
175 implMissing(__FILE__, __LINE__ ); | |
176 return null; | |
177 } | |
178 BigInteger pow(int exponent){ | |
98
48d4ee626868
rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents:
82
diff
changeset
|
179 if( exponent < 0 ){ |
48d4ee626868
rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents:
82
diff
changeset
|
180 throw new ArithmeticException("Negative exponent"); |
48d4ee626868
rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents:
82
diff
changeset
|
181 } |
48d4ee626868
rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents:
82
diff
changeset
|
182 if( bi.isZero() ){ |
48d4ee626868
rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents:
82
diff
changeset
|
183 return exponent is 0 ? ONE : this; |
48d4ee626868
rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents:
82
diff
changeset
|
184 } |
48d4ee626868
rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents:
82
diff
changeset
|
185 auto a = bi; |
48d4ee626868
rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents:
82
diff
changeset
|
186 while(exponent>0){ |
48d4ee626868
rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents:
82
diff
changeset
|
187 a *= bi; |
48d4ee626868
rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents:
82
diff
changeset
|
188 exponent--; |
48d4ee626868
rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents:
82
diff
changeset
|
189 } |
48d4ee626868
rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents:
82
diff
changeset
|
190 return new BigInteger(a); |
82 | 191 } |
192 static BigInteger probablePrime(int bitLength, Random rnd){ | |
193 implMissing(__FILE__, __LINE__ ); | |
194 return null; | |
195 } | |
196 BigInteger remainder(BigInteger val){ | |
197 implMissing(__FILE__, __LINE__ ); | |
198 return null; | |
199 } | |
200 BigInteger setBit(int n){ | |
201 implMissing(__FILE__, __LINE__ ); | |
202 return null; | |
203 } | |
204 BigInteger shiftLeft(int n){ | |
205 implMissing(__FILE__, __LINE__ ); | |
206 return null; | |
207 } | |
208 BigInteger shiftRight(int n){ | |
209 implMissing(__FILE__, __LINE__ ); | |
210 return null; | |
211 } | |
212 int signum(){ | |
98
48d4ee626868
rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents:
82
diff
changeset
|
213 if( bi.isZero() ) return 0; |
48d4ee626868
rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents:
82
diff
changeset
|
214 if( bi.isNegative() ) return -1; |
48d4ee626868
rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents:
82
diff
changeset
|
215 return 1; |
82 | 216 } |
217 BigInteger subtract(BigInteger val){ | |
218 implMissing(__FILE__, __LINE__ ); | |
219 return null; | |
220 } | |
221 bool testBit(int n){ | |
222 implMissing(__FILE__, __LINE__ ); | |
223 return 0; | |
224 } | |
225 byte[] toByteArray(){ | |
226 implMissing(__FILE__, __LINE__ ); | |
227 return null; | |
228 } | |
229 String toString(){ | |
230 implMissing(__FILE__, __LINE__ ); | |
231 return null; | |
232 } | |
233 String toString(int radix){ | |
234 implMissing(__FILE__, __LINE__ ); | |
235 return null; | |
236 } | |
237 static BigInteger valueOf(long val){ | |
98
48d4ee626868
rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents:
82
diff
changeset
|
238 auto res = new BigInteger(val); |
48d4ee626868
rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents:
82
diff
changeset
|
239 return res; |
82 | 240 } |
241 BigInteger xor(BigInteger val){ | |
242 implMissing(__FILE__, __LINE__ ); | |
243 return null; | |
244 } | |
245 | |
246 } |