annotate base/src/java/math/BigInteger.d @ 112:9f4c18c268b2

Update to compile and execute with dmd 2.052.
author kntroh
date Wed, 16 Mar 2011 21:53:53 +0900
parents 5d5bd660917f
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
82
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1 module java.math.BigInteger;
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3 import java.lang.all;
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
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
112
9f4c18c268b2 Update to compile and execute with dmd 2.052.
kntroh
parents: 99
diff changeset
8 import std.bigint;
98
48d4ee626868 rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents: 82
diff changeset
9 }
82
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
10
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
11 class BigInteger : Number {
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
12
98
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 ZERO;
48d4ee626868 rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents: 82
diff changeset
14 static const BigInteger ONE;
82
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
15
98
48d4ee626868 rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents: 82
diff changeset
16 private BigInt bi;
48d4ee626868 rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents: 82
diff changeset
17
48d4ee626868 rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents: 82
diff changeset
18 static this(){
112
9f4c18c268b2 Update to compile and execute with dmd 2.052.
kntroh
parents: 99
diff changeset
19 ZERO = new BigInteger("0");
9f4c18c268b2 Update to compile and execute with dmd 2.052.
kntroh
parents: 99
diff changeset
20 ONE = new BigInteger("1");
98
48d4ee626868 rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents: 82
diff changeset
21 }
48d4ee626868 rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents: 82
diff changeset
22
82
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
23 this(byte[] val){
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
24 implMissing(__FILE__, __LINE__ );
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
25 }
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
26 this(int signum, byte[] magnitude){
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
27 implMissing(__FILE__, __LINE__ );
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
28 }
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
29 this(int bitLength, int certainty, Random rnd){
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
30 implMissing(__FILE__, __LINE__ );
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
31 }
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
32 this(int numBits, Random rnd){
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
33 implMissing(__FILE__, __LINE__ );
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
34 }
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
35 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
36 bi = BigInt( val );
82
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
37 }
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
38 this(String val, int radix){
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 98
diff changeset
39 getDwtLogger.error( __FILE__, __LINE__, "this({}, {})", val, radix );
98
48d4ee626868 rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents: 82
diff changeset
40 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
41 bi = BigInt( val );
48d4ee626868 rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents: 82
diff changeset
42 }
48d4ee626868 rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents: 82
diff changeset
43 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
44 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
45 }
48d4ee626868 rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents: 82
diff changeset
46 else {
48d4ee626868 rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents: 82
diff changeset
47 implMissing(__FILE__, __LINE__ );
48d4ee626868 rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents: 82
diff changeset
48 }
48d4ee626868 rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents: 82
diff changeset
49 }
48d4ee626868 rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents: 82
diff changeset
50 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
51 bi = v;
48d4ee626868 rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents: 82
diff changeset
52 }
48d4ee626868 rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents: 82
diff changeset
53 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
54 bi = v.bi;
48d4ee626868 rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents: 82
diff changeset
55 }
48d4ee626868 rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents: 82
diff changeset
56 private this( long v ){
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 98
diff changeset
57 getDwtLogger.error( __FILE__, __LINE__, "this({})", v );
98
48d4ee626868 rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents: 82
diff changeset
58 bi = BigInt(v);
82
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
59 }
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
60 BigInteger abs(){
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
61 implMissing(__FILE__, __LINE__ );
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
62 return null;
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
63 }
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
64 BigInteger add(BigInteger val){
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
65 implMissing(__FILE__, __LINE__ );
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
66 return null;
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
67 }
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
68 BigInteger and(BigInteger val){
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
69 implMissing(__FILE__, __LINE__ );
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
70 return null;
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
71 }
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
72 BigInteger andNot(BigInteger val){
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
73 implMissing(__FILE__, __LINE__ );
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
74 return null;
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
75 }
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
76 int bitCount(){
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
77 implMissing(__FILE__, __LINE__ );
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
78 return 0;
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
79 }
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
80 int bitLength(){
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 98
diff changeset
81 getDwtLogger.error( __FILE__, __LINE__, "bitLength()" );
98
48d4ee626868 rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents: 82
diff changeset
82 //implMissing(__FILE__, __LINE__ );
82
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
83 return 0;
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
84 }
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
85 BigInteger clearBit(int n){
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
86 implMissing(__FILE__, __LINE__ );
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
87 return null;
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
88 }
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
89 int compareTo(BigInteger val){
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
90 implMissing(__FILE__, __LINE__ );
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
91 return 0;
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
92 }
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
93 int compareTo(Object o){
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
94 implMissing(__FILE__, __LINE__ );
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
95 return 0;
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
96 }
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
97 BigInteger divide(BigInteger val){
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
98 implMissing(__FILE__, __LINE__ );
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
99 return null;
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
100 }
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
101 BigInteger[] divideAndRemainder(BigInteger val){
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
102 implMissing(__FILE__, __LINE__ );
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
103 return null;
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
104 }
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
105 double doubleValue(){
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
106 implMissing(__FILE__, __LINE__ );
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
107 return 0;
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
108 }
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
109 bool equals(Object x){
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
110 implMissing(__FILE__, __LINE__ );
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
111 return 0;
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
112 }
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
113 BigInteger flipBit(int n){
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
114 implMissing(__FILE__, __LINE__ );
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
115 return null;
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
116 }
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
117 float floatValue(){
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
118 implMissing(__FILE__, __LINE__ );
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
119 return 0;
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
120 }
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
121 BigInteger gcd(BigInteger val){
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
122 implMissing(__FILE__, __LINE__ );
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
123 return null;
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
124 }
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
125 int getLowestSetBit(){
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
126 implMissing(__FILE__, __LINE__ );
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
127 return 0;
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
128 }
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
129 int hashCode(){
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
130 implMissing(__FILE__, __LINE__ );
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
131 return 0;
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
132 }
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
133 int intValue(){
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
134 implMissing(__FILE__, __LINE__ );
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
135 return 0;
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
136 }
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
137 bool isProbablePrime(int certainty){
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
138 implMissing(__FILE__, __LINE__ );
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
139 return 0;
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
140 }
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
141 long longValue(){
112
9f4c18c268b2 Update to compile and execute with dmd 2.052.
kntroh
parents: 99
diff changeset
142 version(Tango){
9f4c18c268b2 Update to compile and execute with dmd 2.052.
kntroh
parents: 99
diff changeset
143 getDwtLogger.error( __FILE__, __LINE__, "{}", bi.toHex );
9f4c18c268b2 Update to compile and execute with dmd 2.052.
kntroh
parents: 99
diff changeset
144 long res = 0;
9f4c18c268b2 Update to compile and execute with dmd 2.052.
kntroh
parents: 99
diff changeset
145 auto txt = bi.toHex;
9f4c18c268b2 Update to compile and execute with dmd 2.052.
kntroh
parents: 99
diff changeset
146 bool sign = false;
9f4c18c268b2 Update to compile and execute with dmd 2.052.
kntroh
parents: 99
diff changeset
147 if( txt[0] is '-' ){
9f4c18c268b2 Update to compile and execute with dmd 2.052.
kntroh
parents: 99
diff changeset
148 sign = true;
9f4c18c268b2 Update to compile and execute with dmd 2.052.
kntroh
parents: 99
diff changeset
149 txt = txt[1 .. $];
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 98
diff changeset
150 }
112
9f4c18c268b2 Update to compile and execute with dmd 2.052.
kntroh
parents: 99
diff changeset
151 int nibbles = 0;
9f4c18c268b2 Update to compile and execute with dmd 2.052.
kntroh
parents: 99
diff changeset
152 foreach( uint idx, char c; txt ){
9f4c18c268b2 Update to compile and execute with dmd 2.052.
kntroh
parents: 99
diff changeset
153 if( c is '_' ) continue;
9f4c18c268b2 Update to compile and execute with dmd 2.052.
kntroh
parents: 99
diff changeset
154 void addNibble( int v ){
9f4c18c268b2 Update to compile and execute with dmd 2.052.
kntroh
parents: 99
diff changeset
155 res <<= 4;
9f4c18c268b2 Update to compile and execute with dmd 2.052.
kntroh
parents: 99
diff changeset
156 res |= v;
9f4c18c268b2 Update to compile and execute with dmd 2.052.
kntroh
parents: 99
diff changeset
157 nibbles++;
9f4c18c268b2 Update to compile and execute with dmd 2.052.
kntroh
parents: 99
diff changeset
158 }
9f4c18c268b2 Update to compile and execute with dmd 2.052.
kntroh
parents: 99
diff changeset
159 if( c >= '0' && c <= '9' ) {
9f4c18c268b2 Update to compile and execute with dmd 2.052.
kntroh
parents: 99
diff changeset
160 addNibble( c - '0' );
9f4c18c268b2 Update to compile and execute with dmd 2.052.
kntroh
parents: 99
diff changeset
161 }
9f4c18c268b2 Update to compile and execute with dmd 2.052.
kntroh
parents: 99
diff changeset
162 else if( c >= 'a' && c <= 'f' ) {
9f4c18c268b2 Update to compile and execute with dmd 2.052.
kntroh
parents: 99
diff changeset
163 addNibble( c - 'a' + 10 );
9f4c18c268b2 Update to compile and execute with dmd 2.052.
kntroh
parents: 99
diff changeset
164 }
9f4c18c268b2 Update to compile and execute with dmd 2.052.
kntroh
parents: 99
diff changeset
165 else if( c >= 'A' && c <= 'F' ) {
9f4c18c268b2 Update to compile and execute with dmd 2.052.
kntroh
parents: 99
diff changeset
166 addNibble( c - 'A' + 10 );
9f4c18c268b2 Update to compile and execute with dmd 2.052.
kntroh
parents: 99
diff changeset
167 }
9f4c18c268b2 Update to compile and execute with dmd 2.052.
kntroh
parents: 99
diff changeset
168 else{
9f4c18c268b2 Update to compile and execute with dmd 2.052.
kntroh
parents: 99
diff changeset
169 getDwtLogger.error( __FILE__, __LINE__, "unknown char {} @{}", c, idx );
9f4c18c268b2 Update to compile and execute with dmd 2.052.
kntroh
parents: 99
diff changeset
170 }
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 98
diff changeset
171 }
112
9f4c18c268b2 Update to compile and execute with dmd 2.052.
kntroh
parents: 99
diff changeset
172 if( nibbles > 16 ){
9f4c18c268b2 Update to compile and execute with dmd 2.052.
kntroh
parents: 99
diff changeset
173 getDwtLogger.error( __FILE__, __LINE__, "too much nibbles {}", nibbles );
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 98
diff changeset
174 }
112
9f4c18c268b2 Update to compile and execute with dmd 2.052.
kntroh
parents: 99
diff changeset
175 return res;
9f4c18c268b2 Update to compile and execute with dmd 2.052.
kntroh
parents: 99
diff changeset
176 } else { // Phobos
9f4c18c268b2 Update to compile and execute with dmd 2.052.
kntroh
parents: 99
diff changeset
177 return bi.toLong();
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 98
diff changeset
178 }
82
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
179 }
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
180 BigInteger max(BigInteger val){
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
181 implMissing(__FILE__, __LINE__ );
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
182 return null;
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
183 }
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
184 BigInteger min(BigInteger val){
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
185 implMissing(__FILE__, __LINE__ );
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
186 return null;
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
187 }
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
188 BigInteger mod(BigInteger m){
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
189 implMissing(__FILE__, __LINE__ );
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
190 return null;
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
191 }
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
192 BigInteger modInverse(BigInteger m){
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
193 implMissing(__FILE__, __LINE__ );
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
194 return null;
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
195 }
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
196 BigInteger modPow(BigInteger exponent, BigInteger m){
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
197 implMissing(__FILE__, __LINE__ );
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
198 return null;
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
199 }
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
200 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
201 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
202 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
203 return res;
82
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
204 }
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
205 BigInteger negate(){
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
206 implMissing(__FILE__, __LINE__ );
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
207 return null;
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
208 }
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
209 BigInteger not(){
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
210 implMissing(__FILE__, __LINE__ );
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
211 return null;
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
212 }
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
213 BigInteger or(BigInteger val){
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
214 implMissing(__FILE__, __LINE__ );
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
215 return null;
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
216 }
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
217 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
218 if( exponent < 0 ){
48d4ee626868 rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents: 82
diff changeset
219 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
220 }
112
9f4c18c268b2 Update to compile and execute with dmd 2.052.
kntroh
parents: 99
diff changeset
221 version(Tango){
9f4c18c268b2 Update to compile and execute with dmd 2.052.
kntroh
parents: 99
diff changeset
222 if( bi.isZero() ){
9f4c18c268b2 Update to compile and execute with dmd 2.052.
kntroh
parents: 99
diff changeset
223 return exponent is 0 ? ONE : this;
9f4c18c268b2 Update to compile and execute with dmd 2.052.
kntroh
parents: 99
diff changeset
224 }
9f4c18c268b2 Update to compile and execute with dmd 2.052.
kntroh
parents: 99
diff changeset
225 } else { // Phobos
9f4c18c268b2 Update to compile and execute with dmd 2.052.
kntroh
parents: 99
diff changeset
226 if( bi == 0 ){
9f4c18c268b2 Update to compile and execute with dmd 2.052.
kntroh
parents: 99
diff changeset
227 return exponent is 0 ? cast(BigInteger)ONE : this;
9f4c18c268b2 Update to compile and execute with dmd 2.052.
kntroh
parents: 99
diff changeset
228 }
98
48d4ee626868 rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents: 82
diff changeset
229 }
48d4ee626868 rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents: 82
diff changeset
230 auto a = bi;
48d4ee626868 rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents: 82
diff changeset
231 while(exponent>0){
48d4ee626868 rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents: 82
diff changeset
232 a *= bi;
48d4ee626868 rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents: 82
diff changeset
233 exponent--;
48d4ee626868 rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents: 82
diff changeset
234 }
48d4ee626868 rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents: 82
diff changeset
235 return new BigInteger(a);
82
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
236 }
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
237 static BigInteger probablePrime(int bitLength, Random rnd){
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
238 implMissing(__FILE__, __LINE__ );
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
239 return null;
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
240 }
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
241 BigInteger remainder(BigInteger val){
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
242 implMissing(__FILE__, __LINE__ );
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
243 return null;
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
244 }
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
245 BigInteger setBit(int n){
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
246 implMissing(__FILE__, __LINE__ );
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
247 return null;
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
248 }
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
249 BigInteger shiftLeft(int n){
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
250 implMissing(__FILE__, __LINE__ );
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
251 return null;
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
252 }
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
253 BigInteger shiftRight(int n){
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
254 implMissing(__FILE__, __LINE__ );
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
255 return null;
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
256 }
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
257 int signum(){
112
9f4c18c268b2 Update to compile and execute with dmd 2.052.
kntroh
parents: 99
diff changeset
258 version(Tango) {
9f4c18c268b2 Update to compile and execute with dmd 2.052.
kntroh
parents: 99
diff changeset
259 if( bi.isZero() ) return 0;
9f4c18c268b2 Update to compile and execute with dmd 2.052.
kntroh
parents: 99
diff changeset
260 if( bi.isNegative() ) return -1;
9f4c18c268b2 Update to compile and execute with dmd 2.052.
kntroh
parents: 99
diff changeset
261 } else { // Phobos
9f4c18c268b2 Update to compile and execute with dmd 2.052.
kntroh
parents: 99
diff changeset
262 if( bi == 0 ) return 0;
9f4c18c268b2 Update to compile and execute with dmd 2.052.
kntroh
parents: 99
diff changeset
263 if( bi < 0 ) return -1;
9f4c18c268b2 Update to compile and execute with dmd 2.052.
kntroh
parents: 99
diff changeset
264 }
98
48d4ee626868 rm databinding.observable seems to be duplicate, databinding.beans now building
Frank Benoit <benoit@tionex.de>
parents: 82
diff changeset
265 return 1;
82
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
266 }
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
267 BigInteger subtract(BigInteger val){
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
268 implMissing(__FILE__, __LINE__ );
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
269 return null;
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
270 }
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
271 bool testBit(int n){
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
272 implMissing(__FILE__, __LINE__ );
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
273 return 0;
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
274 }
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
275 byte[] toByteArray(){
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
276 implMissing(__FILE__, __LINE__ );
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
277 return null;
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
278 }
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
279 String toString(){
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
280 implMissing(__FILE__, __LINE__ );
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
281 return null;
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
282 }
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
283 String toString(int radix){
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
284 implMissing(__FILE__, __LINE__ );
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
285 return null;
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
286 }
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
287 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
288 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
289 return res;
82
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
290 }
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
291 BigInteger xor(BigInteger val){
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
292 implMissing(__FILE__, __LINE__ );
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
293 return null;
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
294 }
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
295
b2d6122fa189 Added base classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
296 }