2005-01-31 Zoltan Varga <vargaz@freemail.hu>
[mono.git] / mcs / class / corlib / Test / Mono.Math / ArithmeticBigTest.cs
1 //
2 // MonoTests.Mono.Math.ArithmeticBig.cs
3 //
4 // Authors:
5 //      Ben Maurer
6 //
7 // Copyright (c) 2003 Ben Maurer. All rights reserved
8 //
9
10 using System;
11 using Mono.Math;
12 using NUnit.Framework;
13
14 namespace MonoTests.Mono.Math.Arithmetic.Big {
15
16         public abstract class ArithmeticBig_Base : BigIntegerTestSet {
17                 
18                 BigInteger A, B;
19                 
20                 public ArithmeticBig_Base () 
21                 {
22                         A = new BigInteger (a);
23                         B = new BigInteger (b);
24                 }
25
26                 public abstract uint[] a {
27                         get;
28                 }
29
30                 public abstract uint[] b {
31                         get;
32                 }
33
34                 public abstract uint[] ExpectedAplusB {
35                         get;
36                 }
37
38                 public abstract uint[] ExpectedAminusB {
39                         get;
40                 }
41
42                 public abstract uint[] ExpectedAtimesB {
43                         get;
44                 }
45
46                 public abstract uint[] ExpectedAdivB {
47                         get;
48                 }
49
50                 public abstract uint[] ExpectedAmodB {
51                         get;
52                 }
53
54                 public abstract uint[] ExpectedASquared {
55                         get;
56                 }
57
58                 public abstract uint[] ExpectedBSquared {
59                         get;
60                 }
61
62                 #region Addition
63                 
64                 [Test]
65                 public void AplusB () 
66                 {
67                         BigInteger Expected = new BigInteger (ExpectedAplusB);
68                         Expect (A + B, Expected);
69                 }
70
71                 [Test]
72                 public void BplusA  () 
73                 {
74                         BigInteger Expected = new BigInteger (ExpectedAplusB);
75                         Expect (B + A, Expected);
76                 }
77
78                 #endregion
79
80                 #region Subtraction
81                 
82                 [Test]
83                 public void AminusB () 
84                 {
85                         BigInteger Expected = new BigInteger (ExpectedAminusB);
86                         Expect (A - B, Expected);
87                 }
88                         
89                 #endregion
90
91                 #region Multiplication
92                 
93                 [Test]
94                 public void AtimesB () 
95                 {
96                         BigInteger Expected = new BigInteger (ExpectedAtimesB);
97                         Expect (A * B, Expected);
98                 }
99
100                 [Test]
101                 public void BtimesA () 
102                 {
103                         BigInteger Expected = new BigInteger (ExpectedAtimesB);
104                         Expect (B * A, Expected);
105                 }
106
107                 [Test]
108                 public void Asquared () 
109                 {
110                         BigInteger Expected = new BigInteger (ExpectedASquared);
111                         Expect (A * A, Expected);
112                 }
113
114                 [Test]
115                 public void Bsquared () 
116                 {
117                         BigInteger Expected = new BigInteger (ExpectedBSquared);
118                         Expect (B * B, Expected);
119                 }
120
121                 #endregion
122
123                 #region Division
124                 
125                 [Test]
126                 public void ABdivB () 
127                 {
128                         BigInteger AB = new BigInteger (ExpectedAtimesB);
129                         Expect (AB / B, A);
130                 }
131
132                 [Test]
133                 public void ABdivA () 
134                 {
135                         BigInteger AB = new BigInteger (ExpectedAtimesB);
136                         Expect (AB / A, B);
137                 }
138
139                 [Test]
140                 public void AdivB () 
141                 {
142                         BigInteger Expected = new BigInteger (ExpectedAdivB);
143                         Expect (A / B, Expected);
144                 }
145                 #endregion
146
147                 #region Mod
148                 [Test]
149                 public void AmodB () 
150                 {
151                         BigInteger Expected = new BigInteger (ExpectedAmodB);
152                         Expect (A % B, Expected);
153                 }
154
155                 [Test]
156                 public void BmodA () 
157                 {
158                         Expect (B % A, B);
159                 }
160
161                 [Test]
162                 public void ABmodB () 
163                 {
164                         BigInteger AB = new BigInteger (ExpectedAtimesB);
165                         Expect (AB % B, 0);
166                 }
167
168                 [Test]
169                 public void ABmodA () 
170                 {
171                         BigInteger AB = new BigInteger (ExpectedAtimesB);
172                         Expect (AB % A, 0);
173                 }
174                 
175                 #endregion
176                 
177                 #region Compare
178                 
179                 [Test]
180                 public void AgtB () 
181                 {
182                         Assertion.Assert(A > B);
183                 }
184                 
185                 [Test]
186                 public void ANotLtB () 
187                 {
188                         Assertion.Assert(!(A < B));
189                 }
190                 
191                 [Test]
192                 public void BNotGtA () 
193                 {
194                         Assertion.Assert(!(B > A));
195                 }
196                 
197                 [Test]
198                 public void AltB () 
199                 {
200                         Assertion.Assert(B < A);
201                 }
202                 
203                 [Test]
204                 public void AeqA () 
205                 {
206                         Assertion.Assert(A == A);
207                 }
208                 [Test]
209                 public void BeqB () 
210                 {
211                         Assertion.Assert(B == B);
212                 }
213                 
214                 [Test]
215                 public void AneqB () 
216                 {
217                         Assertion.Assert(A != B);
218                 }
219                 
220                 [Test]
221                 public void BneqA () 
222                 {
223                         Assertion.Assert(B != A);
224                 }
225
226                 #endregion
227         }
228
229         public class Random2048a1024b: ArithmeticBig_Base {
230
231                 public override uint[] a {
232                         get {
233                                 return new uint[] {
234                                         0xdbbda64c, 0x1a4e4dbd, 0x26847ccc, 0xc9897ecc, 0x215759b7, 0x37055866,
235                                         0x8eb4e2ed, 0xa6c9c7a9, 0x36a087c7, 0x2b1d0192, 0xba08ef99, 0x77f570a1,
236                                         0x0ab67993, 0xe4064de4, 0xaa860c0d, 0xdbace82b, 0x696df85a, 0x1d22f1ed,
237                                         0x80d60685, 0xc360f73e, 0x4b8ca13d, 0x1ee5ca6f, 0x42490a0c, 0x00b5e783,
238                                         0x1b803e1e, 0x3cffe9b9, 0xe17b071e, 0x6ce95cd5, 0x429fdb88, 0xe524a3c7,
239                                         0x051e452a, 0x834bbf27, 0xe25211f0, 0xc4171b01, 0x4ef237ab, 0xdc8f9efd,
240                                         0x46efffe7, 0xe162931d, 0x8576eb30, 0x9ac33969, 0x026d2252, 0x41758665,
241                                         0x9aa43456, 0xa8e4a6f8, 0xe9785649, 0x76c8b136, 0x38a40d78, 0xfa3bacdc,
242                                         0xcf446c35, 0x8c22cfee, 0x76a47fb3, 0x5cc25cde, 0xade755f5, 0xa31e6711,
243                                         0xe53ef4c8, 0xe6312f00, 0x215f3377, 0xe66d0dcd, 0xf0563395, 0x130d5918,
244                                         0x97e5c4bc, 0x3cfc3053, 0xcdbc19ad, 0x87e4011a
245                                 };
246                         }
247                 }
248
249                 public override uint[] b {
250                         get {
251                                 return new uint[] {
252                                         0x92d3b581, 0x2710dd85, 0x59864d28, 0x7952c636, 0x4dbf0478, 0x360ed50e,
253                                         0xd84ce175, 0xd321f743, 0x0b2434c7, 0xbe833d3a, 0xeec1b441, 0x08c98e67,
254                                         0xd611fc13, 0x0803415d, 0x415d0cfc, 0xdf006733, 0x54379f5c, 0x8fab3be7,
255                                         0x3aa840af, 0xb11453f2, 0x8bafb87b, 0x584bdcaf, 0x80a18f6e, 0x1c7bac68,
256                                         0xe1ac8b8c, 0x4ac52f82, 0x6b510c1d, 0x198fbb6a, 0x5f2ab9d4, 0x40f86f80,
257                                         0x4114f868, 0xf1c2448e
258                                 };
259                         }
260                 }
261
262                 public override uint[] ExpectedAplusB {
263                         get {
264                                 return new uint[] {
265                                         0xdbbda64c, 0x1a4e4dbd, 0x26847ccc, 0xc9897ecc, 0x215759b7, 0x37055866,
266                                         0x8eb4e2ed, 0xa6c9c7a9, 0x36a087c7, 0x2b1d0192, 0xba08ef99, 0x77f570a1,
267                                         0x0ab67993, 0xe4064de4, 0xaa860c0d, 0xdbace82b, 0x696df85a, 0x1d22f1ed,
268                                         0x80d60685, 0xc360f73e, 0x4b8ca13d, 0x1ee5ca6f, 0x42490a0c, 0x00b5e783,
269                                         0x1b803e1e, 0x3cffe9b9, 0xe17b071e, 0x6ce95cd5, 0x429fdb88, 0xe524a3c7,
270                                         0x051e452a, 0x834bbf28, 0x7525c771, 0xeb27f886, 0xa87884d4, 0x55e26533,
271                                         0x94af0460, 0x1771682c, 0x5dc3cca6, 0x6de530ac, 0x0d915719, 0xfff8c3a0,
272                                         0x8965e897, 0xb1ae3560, 0xbf8a525c, 0x7ecbf293, 0x7a011a75, 0xd93c1410,
273                                         0x237c0b92, 0x1bce0bd5, 0xb14cc063, 0x0dd6b0d1, 0x39970e70, 0xfb6a43c1,
274                                         0x65e08437, 0x02acdb69, 0x030bbf04, 0x31323d50, 0x5ba73fb2, 0x2c9d1482,
275                                         0xf7107e90, 0x7df49fd4, 0x0ed11216, 0x79a645a8
276                                 };
277                         }
278                 }
279                 public override uint[] ExpectedAminusB {
280                         get {
281                                 return new uint[] {
282                                         0xdbbda64c, 0x1a4e4dbd, 0x26847ccc, 0xc9897ecc, 0x215759b7, 0x37055866,
283                                         0x8eb4e2ed, 0xa6c9c7a9, 0x36a087c7, 0x2b1d0192, 0xba08ef99, 0x77f570a1,
284                                         0x0ab67993, 0xe4064de4, 0xaa860c0d, 0xdbace82b, 0x696df85a, 0x1d22f1ed,
285                                         0x80d60685, 0xc360f73e, 0x4b8ca13d, 0x1ee5ca6f, 0x42490a0c, 0x00b5e783,
286                                         0x1b803e1e, 0x3cffe9b9, 0xe17b071e, 0x6ce95cd5, 0x429fdb88, 0xe524a3c7,
287                                         0x051e452a, 0x834bbf27, 0x4f7e5c6f, 0x9d063d7b, 0xf56bea83, 0x633cd8c6,
288                                         0xf930fb6f, 0xab53be0e, 0xad2a09ba, 0xc7a14225, 0xf748ed8a, 0x82f2492a,
289                                         0xabe28015, 0xa01b1891, 0x13665a36, 0x6ec56fd8, 0xf747007c, 0x1b3b45a9,
290                                         0x7b0cccd8, 0xfc779407, 0x3bfc3f03, 0xabae08ec, 0x22379d7a, 0x4ad28a62,
291                                         0x649d655a, 0xc9b58297, 0x3fb2a7eb, 0x9ba7de4b, 0x85052777, 0xf97d9dae,
292                                         0x38bb0ae7, 0xfc03c0d3, 0x8ca72144, 0x9621bc8c
293                                 };
294                         }
295                 }
296                 public override uint[] ExpectedAtimesB {
297                         get {
298                                 return new uint[] {
299                                         0x7e07e1f3, 0x6a675027, 0xbcfd1837, 0xf6fb0771, 0xb9745456, 0x5617bb02,
300                                         0xc8e784fa, 0xcb769578, 0xb74c305f, 0x98833dec, 0x3c1160a9, 0x38e53c88,
301                                         0x0a6aaeda, 0x30dd3e16, 0x1c42b026, 0x94170e75, 0x3ad09fa6, 0x71fcd114,
302                                         0xe9bd23a6, 0x31254d38, 0xec9a6527, 0x3b035cbf, 0xb7513d4e, 0xb0cbbb90,
303                                         0x94af7307, 0x4acccec8, 0x973f936e, 0x5c5400e4, 0x022d2092, 0x84910b57,
304                                         0xdca61ea7, 0xde181481, 0xd8cde3cc, 0x033496d3, 0x1b0ddd43, 0x221d6f93,
305                                         0xd745729d, 0xc6da4bbe, 0x9372df96, 0xc3997aa8, 0xbe4738d5, 0x95f5b824,
306                                         0x8b077974, 0x91ff2acd, 0x3e3c8970, 0xb0cccc25, 0xdf4a41b5, 0x1aaa83cc,
307                                         0xab802b5b, 0x9346786a, 0xda7c9172, 0x11c0e5ef, 0x4febcd66, 0x45f31d90,
308                                         0xbaf46606, 0x21a4ebf4, 0x10d5662e, 0x1b5a9f0e, 0xb4563323, 0x85f627b8,
309                                         0x67baea50, 0x8c2db69a, 0x3177443d, 0xda1f8cce, 0xeaf7d034, 0x047b8892,
310                                         0xec507176, 0x594663f0, 0x9d95d110, 0x3813268f, 0x2cadcad2, 0x09515190,
311                                         0x6a5094ec, 0x6e516b15, 0x08ea1439, 0x90a19c00, 0x7a226467, 0xd1c7c67b,
312                                         0x883f53db, 0xc6e5d69e, 0x0cc1705a, 0x00d7e17d, 0x8649e8ae, 0x9db9953d,
313                                         0x2bb6f9d0, 0x3e1050c0, 0xdbb25609, 0xc70d5253, 0xf2a44b0b, 0x88da6d3a,
314                                         0xb04099bb, 0xbd744c14, 0x89f6d528, 0x92eded15, 0xad5098bc, 0x4077846c
315                                 };
316                         }
317                 }
318
319                 public override uint[] ExpectedAdivB {
320                         get {
321                                 return new uint[] {
322                                         0x1, 0x7f20f9d3, 0x70c59f6f, 0x09a99f2b, 0xc29c063c, 0xd314e8f3, 0xa24af40b,
323                                         0x3192b797, 0xbad33e25, 0x84cdd287, 0x0a9c0809, 0xed99dcd0, 0xde1ddca0,
324                                         0x7e456f97, 0x90795f58, 0x8ff42f88, 0x46c6ebda, 0x210b4381, 0x1584beab,
325                                         0xea01b7ef, 0x855b3e95, 0x575654df, 0x297bbafb, 0x77d1b139, 0x479506ae,
326                                         0x71dff636, 0xab09c773, 0xb28a10b0, 0xdf69dfa9, 0x6aba0e65, 0x8bae9086,
327                                         0xb54f14bd, 0xdc75f322
328                                 };
329                         }
330                 }
331
332                 public override uint[] ExpectedAmodB {
333                         get {
334                                 return new uint[] {
335                                         0x1152b33a, 0x34a63caa, 0x14bd4558, 0xd1b57542, 0xc32e9a1b, 0x6c78bbdc,
336                                         0x65292b48, 0x33307699, 0x9e49510f, 0x6465df13, 0x534d249a, 0x3b3ae2cd,
337                                         0x5274a150, 0xfeef03ba, 0xe1df6e14, 0xd5ed3135, 0x152dadd4, 0x25086007,
338                                         0xc94664c4, 0xf3183ada, 0x90e4eb88, 0xafbc13b4, 0xeb316da5, 0x8f822eba,
339                                         0x868727c9, 0x691d7fea, 0xc0ff07f7, 0x967ae15b, 0x4d667f6c, 0x8ca28f57,
340                                         0x51d458b8, 0xa81e1c3e
341                                 };
342                         }
343                 }
344
345                 public override uint[] ExpectedASquared {
346                         get {
347                                 return new uint[] {
348                                         0xbc9e0705, 0x2d67995d, 0x97350327, 0x3a6839ef, 0xb2c281b1, 0xc73306b1,
349                                         0xa4385776, 0x55919b94, 0x790356a6, 0xc3c8cf2f, 0xf42563d3, 0xd03ae4ab,
350                                         0x3adc5543, 0xdf1c3a93, 0xa89e1577, 0x6b58c8d7, 0x58ad7974, 0x21e33d28,
351                                         0x5bd00a59, 0x0bf9d5ce, 0xff7cf725, 0xe818fb34, 0xdd2f3d2f, 0x22d5cfc5,
352                                         0xd68bd585, 0x314fce82, 0x91a0c880, 0x29fc0c7b, 0x3b24edcc, 0x36e7657d,
353                                         0x7f4ec9f3, 0xb5090067, 0x2d85195f, 0xfd217a73, 0x0ed43997, 0xef24805b,
354                                         0xf8f01d79, 0x5015e762, 0xaa5dfa5b, 0x30714d09, 0xbd94a537, 0x8d53d6d4,
355                                         0x7e0ee0ed, 0xeb5e8afe, 0xefaff6a9, 0xfb9e8b68, 0xc9dac138, 0xcd107bcd,
356                                         0x29511770, 0xc72dc999, 0xcce3cf3e, 0x4aa1a315, 0xcd358309, 0x3eaa51ca,
357                                         0xce23c07b, 0x4bc7b741, 0xa072f3d1, 0xbc847af0, 0x128391b7, 0x43a1a1ab,
358                                         0x099c1a8f, 0x03b6fd1a, 0x35346a49, 0xfbf3f4b0, 0xc94e120f, 0xca2c3130,
359                                         0x8eddcea5, 0x92a27f50, 0xd0dabd5d, 0x72cbfbbb, 0xe244dc44, 0x71b36732,
360                                         0x512d949a, 0x9b07ff27, 0x9ae278b3, 0x5c67f5eb, 0x9bac1c9b, 0xba315d10,
361                                         0x9e9e2f78, 0xedd50319, 0xc72aba34, 0x4591a520, 0x47c8e2b8, 0xd2581e44,
362                                         0x915c8265, 0xa0f3298b, 0x16e3f98d, 0x1d3255eb, 0x67ad4451, 0xb8c6848d,
363                                         0x5e363aa9, 0xb6d6b34c, 0x0f3d3c57, 0x3186c476, 0x2e3303ef, 0xa1f0b7e2,
364                                         0xade9a761, 0x9c51030d, 0x1d6a8ab6, 0x1ee7c80e, 0x12d283ff, 0xec6621d7,
365                                         0x342101aa, 0x175c3957, 0x68de3812, 0x4ccd898d, 0x64e48788, 0xdf95cd4b,
366                                         0xb474ee50, 0x67c643dc, 0x70e61f88, 0x78870803, 0x1e08a43b, 0x2ad45c61,
367                                         0x5309867a, 0x7b300960, 0x7393fb7a, 0xf2cf6514, 0x3b92e17b, 0x35dcc866,
368                                         0x92925ee1, 0x43d5c8b5, 0x5dcd38a1, 0x4d108dfc, 0xd95c5c67, 0x9e8891ac,
369                                         0xbcb2d55f, 0x625136a4
370                                 };
371                         }
372                 }
373
374                 public override uint[] ExpectedBSquared {
375                         get {
376                                 return new uint[] {
377                                         0x54362a1c, 0x042584df, 0x8222b8fc, 0x8f310535, 0xffffaf04, 0x415816d0,
378                                         0x909d9ab0, 0x11f120a4, 0x81467638, 0xad441f5f, 0x31e3bb49, 0x8c9b4fa7,
379                                         0xca48b1b9, 0x438e460d, 0x8863c56a, 0xbd84cf0b, 0xdfc6627b, 0x12446a15,
380                                         0xb2770965, 0x923a5ce7, 0x24e67a2b, 0x277ad7f5, 0xe324d6e5, 0x15bfdb9a,
381                                         0x58f48720, 0x3006c299, 0xef162f92, 0xa7bf36ec, 0x98cc398a, 0x014cf447,
382                                         0xa9c069d2, 0xec9c5268, 0x99293259, 0x5e98903f, 0x21418228, 0x095b2128,
383                                         0xcdcc1254, 0x27aa19eb, 0x72794988, 0x35f28cc5, 0xe6402a7b, 0x0f630eb5,
384                                         0xed484279, 0x311df827, 0x81288145, 0xee5b4502, 0x1cdd44bc, 0xf68dacff,
385                                         0x2e389561, 0x9da07b0c, 0x0a19f8ec, 0xdfb82fe9, 0x1c05e30d, 0xc4ee5182,
386                                         0xb7aed093, 0xe3bb2e26, 0x1de63a71, 0x82f3f24c, 0x228a0746, 0x30e5e4fa,
387                                         0x2c936451, 0x190d9e98, 0x892a2bdf, 0x5593bec4
388                                 };
389                         }
390                 }
391         }
392
393         public class Random1024a1024b: ArithmeticBig_Base {
394
395                 public override uint[] a {
396                         get {
397                                 return new uint[] {
398                                         0xe8c8bd9b, 0x0f2d1975, 0x8eaf4c7f, 0xa513ca34, 0x0539c22d, 0xbc167aec,
399                                         0x92a2cf7d, 0xaf10cb82, 0xc27b9bdd, 0x93c1e4cd, 0x686bd61c, 0xe23f8486,
400                                         0x99245663, 0xfb924c03, 0x99801568, 0x6fccc5e1, 0x57d4d4ec, 0x93a8267f,
401                                         0x846ba741, 0x445b28b1, 0x5e898372, 0x670a590d, 0x2897594e, 0xcd480b48,
402                                         0xa6b8711c, 0xc5046cb6, 0xcc79b3b2, 0x445cd544, 0xefcfbe5d, 0x6b63c7f6,
403                                         0x51117990, 0x7c80efbe
404                                 };
405                         }
406                 }
407
408                 public override uint[] b {
409                         get {
410                                 return new uint[] {
411                                         0xbee17847, 0xe569d2e5, 0xac236b39, 0x0c489f84, 0xb6696bb6, 0x15f7fe55,
412                                         0xfb77131c, 0x873fffe9, 0xb257e171, 0x2c828f55, 0xfc928959, 0x47a85c04,
413                                         0xebf46c67, 0x5abb6902, 0x5be13139, 0x5a511864, 0xf57c0143, 0x13dcc6de,
414                                         0xcc136221, 0x15f4f853, 0x58f52105, 0x4548a1d8, 0x9c0800ea, 0x3dba87e8,
415                                         0x9cfa44f3, 0x59122da2, 0x17fe648c, 0x0a5e6c8d, 0x9706505e, 0x21d8d4ad,
416                                         0xe8d92591, 0xf5e91c22
417                                 };
418                         }
419                 }
420
421                 public override uint[] ExpectedAplusB {
422                         get {
423                                 return new uint[] {
424                                         0x1, 0xa7aa35e2, 0xf496ec5b, 0x3ad2b7b8, 0xb15c69b8, 0xbba32de3, 0xd20e7942,
425                                         0x8e19e29a, 0x3650cb6c, 0x74d37d4e, 0xc0447423, 0x64fe5f76, 0x29e7e08b,
426                                         0x8518c2cb, 0x564db505, 0xf56146a1, 0xca1dde46, 0x4d50d62f, 0xa784ed5e,
427                                         0x507f0962, 0x5a502104, 0xb77ea477, 0xac52fae5, 0xc49f5a39, 0x0b029331,
428                                         0x43b2b610, 0x1e169a58, 0xe478183e, 0x4ebb41d2, 0x86d60ebb, 0x8d3c9ca4,
429                                         0x39ea9f22, 0x726a0be0
430                                 };
431                         }
432                 }
433
434                 public override uint[] ExpectedAminusB {
435                         get {
436                                 return new uint[] {
437                                         0x29e74553, 0x29c3468f, 0xe28be146, 0x98cb2aaf, 0x4ed05677, 0xa61e7c96,
438                                         0x972bbc61, 0x27d0cb99, 0x1023ba6c, 0x673f5577, 0x6bd94cc3, 0x9a972881,
439                                         0xad2fe9fc, 0xa0d6e301, 0x3d9ee42f, 0x157bad7c, 0x6258d3a9, 0x7fcb5fa0,
440                                         0xb8584520, 0x2e66305e, 0x0594626d, 0x21c1b734, 0x8c8f5864, 0x8f8d8360,
441                                         0x09be2c29, 0x6bf23f14, 0xb47b4f26, 0x39fe68b7, 0x58c96dff, 0x498af348,
442                                         0x683853fe, 0x8697d39c
443                                 };
444                         }
445                 }
446
447                 public override uint[] ExpectedAtimesB {
448                         get {
449                                 return new uint[] {
450                                         0xad920287, 0x33b4e05d, 0xf6782118, 0xc4c63752, 0x068997db, 0xbfee40d7,
451                                         0x2d4f2993, 0x7eebbea1, 0x1457805b, 0xff8fff22, 0x91057d22, 0x591de9d5,
452                                         0x0891bc5a, 0xa972a76b, 0xf28a29dc, 0xc391c2a0, 0x54973886, 0x624b2e32,
453                                         0x7b606c23, 0x2d55978e, 0x5b88b68d, 0xbdddbad5, 0x8d86ac43, 0xef99c973,
454                                         0x4442b4fd, 0xd56672d2, 0xefbbb6ac, 0x9103ca5f, 0xca7bd8f9, 0x407c45fd,
455                                         0x6bb9557d, 0x7dfac4b7, 0x0054bc14, 0x218c222e, 0x3483ef14, 0x8e737763,
456                                         0x1b831e5d, 0x17d28c9f, 0x3a0b544e, 0x49aa11a2, 0x7a244f22, 0xa0397691,
457                                         0xa7df289f, 0x75c8db6e, 0x2b66ebd9, 0xe5f81ef6, 0x3d1482e4, 0x088605c4,
458                                         0xf93723e2, 0x414aca69, 0x4902937e, 0x645bc986, 0xd9a76e10, 0x21c21a0d,
459                                         0x349c40ba, 0xc63fe272, 0x2d3b29c6, 0xadd913bd, 0x1095cfb6, 0x980d74ed,
460                                         0x5c0c07c2, 0x05a67c9e, 0x2902ea37, 0xad469f3c
461                                 };
462                         }
463                 }
464
465                 public override uint[] ExpectedAdivB {
466                         get {
467                                 return new uint[] {
468                                         0x1
469                                 };
470                         }
471                 }
472
473                 public override uint[] ExpectedAmodB {
474                         get {
475                                 return new uint[] {
476                                         0x29e74553, 0x29c3468f, 0xe28be146, 0x98cb2aaf, 0x4ed05677, 0xa61e7c96,
477                                         0x972bbc61, 0x27d0cb99, 0x1023ba6c, 0x673f5577, 0x6bd94cc3, 0x9a972881,
478                                         0xad2fe9fc, 0xa0d6e301, 0x3d9ee42f, 0x157bad7c, 0x6258d3a9, 0x7fcb5fa0,
479                                         0xb8584520, 0x2e66305e, 0x0594626d, 0x21c1b734, 0x8c8f5864, 0x8f8d8360,
480                                         0x09be2c29, 0x6bf23f14, 0xb47b4f26, 0x39fe68b7, 0x58c96dff, 0x498af348,
481                                         0x683853fe, 0x8697d39c
482                                 };
483                         }
484                 }
485
486                 public override uint[] ExpectedASquared {
487                         get {
488                                 return new uint[] {
489                                         0xd3ac7511, 0xda37c6f0, 0xd3676686, 0x3e75ca2d, 0x2c34ab61, 0x220493b2,
490                                         0x9c0ccf97, 0x9e154a16, 0xd059f25d, 0x88c203f7, 0xb4e8b3b2, 0x1e087384,
491                                         0x14d55512, 0x44a30dcc, 0x17d7153a, 0xd7f52e45, 0x02274060, 0x76e0336d,
492                                         0xa8608fbd, 0xf42fca56, 0xe7b95e9d, 0x787c27aa, 0xafc11f13, 0x1b66a178,
493                                         0x97710f23, 0xa4bdcf90, 0xcf4cafd9, 0x288554ea, 0x294b0a79, 0xc8d02fd9,
494                                         0x48810d2d, 0x2ea649eb, 0x00fd8df6, 0x6c2c0e3b, 0x09e97167, 0xf78c7c9b,
495                                         0x8287c66b, 0xaf26b8c1, 0x1b0a7c69, 0x715a86c8, 0x416d1c3f, 0xa74de987,
496                                         0x119bc8c0, 0x1d5cf66a, 0xbd9e98d4, 0x5c1f72f0, 0x461f0311, 0x3fe6c57b,
497                                         0xbd827dfe, 0x464e17b0, 0x6746a287, 0xfedf1131, 0x2e4a9384, 0x68b74835,
498                                         0x7f1890bf, 0x3c8f861b, 0x2ef49f89, 0x9be1f04b, 0xc7d14cc9, 0x57c09b0e,
499                                         0x32e49f8c, 0xcb2e2d3c, 0x43787af0, 0xae845104
500                                 };
501                         }
502                 }
503
504                 public override uint[] ExpectedBSquared {
505                         get {
506                                 return new uint[] {
507                                         0x8e53751f, 0x5f6dd455, 0xe73df53f, 0x6cca88f3, 0xd7af11fa, 0x32003a1f,
508                                         0xf0140015, 0xbbaf870f, 0x202242ed, 0xf0515cc7, 0x2cd9d3cc, 0x55c27930,
509                                         0x58517126, 0x90ac5a65, 0xdf1c572f, 0xa734dfea, 0x1178b713, 0x1463153d,
510                                         0x04e3f702, 0x25194cf2, 0xf9dcb3db, 0xe213b47b, 0x4666029a, 0x51374275,
511                                         0xe9b85f80, 0x8d4aaa6e, 0x8ddd7735, 0xa6dda66c, 0x9594a530, 0x5a7f352c,
512                                         0x3b48c122, 0x50efb29a, 0xc79bd6b4, 0x2440b7ce, 0xe4715871, 0x690421da,
513                                         0xb3d24cd4, 0x20bc0fd3, 0x22200cd2, 0x0b06278e, 0x4ec52207, 0xace37b7a,
514                                         0xe512d8bf, 0x9320fae5, 0xe1221b0d, 0x29ee05b6, 0xda382119, 0xe0458dbb,
515                                         0xc79fc5ad, 0x073db465, 0x9ebc66f3, 0x3a00f27f, 0xb5f59316, 0xd84c2156,
516                                         0xd4797e82, 0xb280e61b, 0xff54c2ea, 0xce29dfb1, 0x3f304113, 0xf9926e5e,
517                                         0xed93ce71, 0xf5b54271, 0x320fb6a1, 0x4cfb7484
518                                 };
519                         }
520                 }
521         }
522
523         public class Random648a592b: ArithmeticBig_Base {
524
525                 public override uint[] a {
526                         get {
527                                 return new uint[] {
528                                         0x80, 0xe25d5da8, 0x21955bf0, 0x03a657c4, 0xfc958503, 0x439d9b34,
529                                         0x751c1ca6, 0xc0efa543, 0x6908a832, 0x5db264fa, 0xb089fca4, 0x629b76a5,
530                                         0xf156b58e, 0xc18706ad, 0x61bfc9b7, 0x5be1f7ce, 0xdee2ef8f, 0xb0f949d9,
531                                         0x5a118b6b, 0x5266ffdd, 0x090019ff
532                                 };
533                         }
534                 }
535
536                 public override uint[] b {
537                         get {
538                                 return new uint[] {
539                                         0xf433, 0xdad65473, 0x1679f349, 0x7c8fbada, 0x2fa98df4, 0x3a4f47c9,
540                                         0x39b128eb, 0xa7ff55ab, 0x8ea2596b, 0x283f32a8, 0xcb1e7271, 0x9b3b77ae,
541                                         0x371adf91, 0xbc6814b5, 0xd75016f2, 0x22624a3e, 0x2281cda3, 0xd80e824d,
542                                         0x8ab69459
543                                 };
544                         }
545                 }
546
547                 public override uint[] ExpectedAplusB {
548                         get {
549                                 return new uint[] {
550                                         0x80, 0xe25d5da8, 0x21965023, 0xde7cac38, 0x130f784c, 0xc02d560e,
551                                         0xa4c5aa9a, 0xfb3eed0c, 0xa2b9d11e, 0x05b1baa6, 0x3f2c560f, 0x8adaa94e,
552                                         0xbc752800, 0x5cc27e5b, 0x98daa949, 0x184a0c84, 0xb6330681, 0xd35b9417,
553                                         0x7c93590f, 0x2a75822a, 0x93b6ae58
554                                 };
555                         }
556                 }
557                 public override uint[] ExpectedAminusB {
558                         get {
559                                 return new uint[] {
560                                         0x80, 0xe25d5da8, 0x219467bc, 0x28d00351, 0xe61b91b9, 0xc70de05a,
561                                         0x45728eb2, 0x86a05d7a, 0x2f577f46, 0xb5b30f4f, 0x21e7a339, 0x3a5c43fd,
562                                         0x2638431d, 0x264b8eff, 0x2aa4ea25, 0x9f79e319, 0x0792d89d, 0x8e96ff9b,
563                                         0x378fbdc7, 0x7a587d8f, 0x7e4985a6
564                                 };
565                         }
566                 }
567                 public override uint[] ExpectedAtimesB {
568                         get {
569                                 return new uint[] {
570                                         0x7af1dc, 0x42892886, 0x270d1508, 0x35afbef2, 0xf32044cc, 0x7ec39e7c,
571                                         0xd5be5d85, 0xe3e4d670, 0x8f00e646, 0x610c85b9, 0xf49d42aa, 0xd58c679d,
572                                         0xc518cbd4, 0x810d256b, 0xcf4bf1e6, 0x3d950962, 0xa45fed9c, 0x9961651f,
573                                         0xf7ee8ff4, 0x69726f4e, 0x66c4e1bc, 0xd254aaa1, 0xc8fb80db, 0xb7186aa6,
574                                         0xd0a3485b, 0x1d56955c, 0x711f41b6, 0xd8235f7a, 0xf4bc1659, 0xbfd046f3,
575                                         0xa83904d6, 0x85d2437d, 0xa29ef4be, 0x54bf7242, 0x72e297e5, 0xc11d231c,
576                                         0xc9642775, 0x95e680d5, 0x215a75a7
577                                 };
578                         }
579                 }
580
581                 public override uint[] ExpectedAdivB {
582                         get {
583                                 return new uint[] {
584                                         0x871c53, 0x1f53c91f
585                                 };
586                         }
587                 }
588                 public override uint[] ExpectedAmodB {
589                         get {
590                                 return new uint[] {
591                                         0x5909, 0xfe7418f1, 0x18cafdb8, 0x78b332d4, 0x8734f3ec, 0x248f2ac6,
592                                         0xf31487c2, 0xd6b17b47, 0x4e035271, 0x7d8eddd3, 0xa1ec3476, 0xaa2ed8c9,
593                                         0x15fd7425, 0x6bd31fe4, 0x1abfee03, 0xee7a13d7, 0x64c250dc, 0xf50b6c8c,
594                                         0x028f4238
595                                 };
596                         }
597                 }
598                 public override uint[] ExpectedASquared {
599                         get {
600                                 return new uint[] {
601                                         0x40e3, 0x2586a38b, 0x9f13a3ae, 0xd6690553, 0xd60e7eb2, 0x3b040fd1,
602                                         0xe23ecfa7, 0x46ab3047, 0x16419030, 0xb81c68be, 0x033a0147, 0xf62d84a7,
603                                         0xbb0dc6a0, 0x9d817e08, 0x04604d2a, 0x87a4bc14, 0xdfd159bc, 0x2d00e161,
604                                         0x0d089cc2, 0x7b1f4599, 0xa3b67334, 0xa3ac3a3b, 0x26d08e66, 0xfe40ac1b,
605                                         0x0b51cd6d, 0xe0cdb969, 0x15053d95, 0x09105000, 0x13848bc3, 0x43ac0edf,
606                                         0x5de02efc, 0xff030324, 0x0153a0ad, 0x21348f68, 0x9e351771, 0xc4485dbf,
607                                         0xc7e7bcbd, 0xbf36d47e, 0xdfcff8ac, 0xd17be619, 0xf0a3cc01
608                                 };
609                         }
610                 }
611                 public override uint[] ExpectedBSquared {
612                         get {
613                                 return new uint[] {
614                                         0xe8f2e3a9, 0x7d72c3f8, 0xbae80572, 0xbfa765fe, 0xf1f2ae8f, 0x014d09f4,
615                                         0xbb00e418, 0x84108f06, 0xb17d9cab, 0x1e7fbb68, 0x96495444, 0x71e3b073,
616                                         0x11b725ec, 0xb2412093, 0x99e3013d, 0x6146b623, 0x50a06090, 0xefaa710b,
617                                         0x73a273bc, 0x10cb33ce, 0x0788144b, 0xc2db435c, 0x23446289, 0x313b9d18,
618                                         0x596e6c25, 0xab12758e, 0xc00bf8bd, 0x18800070, 0x29117981, 0xc413df55,
619                                         0xdb4d943f, 0x54331203, 0xa895d355, 0xf6d83621, 0x90ab9202, 0x9564fbb1,
620                                         0x388306f1
621                                 };
622                         }
623                 }
624         }
625
626         public class Carry10_1589a612b: ArithmeticBig_Base {
627
628                 public override uint[] a {
629                         get {
630                                 return new uint[] {
631                                         0x192483, 0xedfc2a5a, 0xaf6aa3ad, 0xb3c27ee0, 0x1dbb97c0, 0x5a89358e,
632                                         0x0bc99cc9, 0xee284efd, 0x17d9ca4e, 0x5cb4db86, 0x7f0ddc13, 0xc7711ad4,
633                                         0x06f375e9, 0x71ec7ca6, 0xbb2eb849, 0x6914bec9, 0x7196db80, 0x5e38d3a6,
634                                         0xb33d1976, 0x26e7681b, 0x5a189160, 0xa0c2a1c3, 0xdbe797bb, 0xbe2b21ad,
635                                         0x1014dd56, 0x5a438a13, 0xc48ca63c, 0x022002e1, 0x4a0989d1, 0xbd3f2d76,
636                                         0x38f7059a, 0xe428965c, 0x02a3f023, 0x2cf84c51, 0xee3c2278, 0x1406d5a1,
637                                         0xe2e48a81, 0x4f66b880, 0x25b58362, 0x0733403c, 0x9ae2115c, 0x6c9e6310,
638                                         0xf6e2b83b, 0x88b1229e, 0xf2e7acc6, 0x0e16ec9a, 0xf2cacba4, 0xf5466060,
639                                         0x8a80d714, 0x6a2e6004
640                                 };
641                         }
642                 }
643
644                 public override uint[] b {
645                         get {
646                                 return new uint[] {
647                                         0x10, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
648                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
649                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
650                                         0x00000000, 0x00000000
651                                 };
652                         }
653                 }
654
655                 public override uint[] ExpectedAplusB {
656                         get {
657                                 return new uint[] {
658                                         0x192483, 0xedfc2a5a, 0xaf6aa3ad, 0xb3c27ee0, 0x1dbb97c0, 0x5a89358e,
659                                         0x0bc99cc9, 0xee284efd, 0x17d9ca4e, 0x5cb4db86, 0x7f0ddc13, 0xc7711ad4,
660                                         0x06f375e9, 0x71ec7ca6, 0xbb2eb849, 0x6914bec9, 0x7196db80, 0x5e38d3a6,
661                                         0xb33d1976, 0x26e7681b, 0x5a189160, 0xa0c2a1c3, 0xdbe797bb, 0xbe2b21ad,
662                                         0x1014dd56, 0x5a438a13, 0xc48ca63c, 0x022002e1, 0x4a0989d1, 0xbd3f2d76,
663                                         0x38f705aa, 0xe428965c, 0x02a3f023, 0x2cf84c51, 0xee3c2278, 0x1406d5a1,
664                                         0xe2e48a81, 0x4f66b880, 0x25b58362, 0x0733403c, 0x9ae2115c, 0x6c9e6310,
665                                         0xf6e2b83b, 0x88b1229e, 0xf2e7acc6, 0x0e16ec9a, 0xf2cacba4, 0xf5466060,
666                                         0x8a80d714, 0x6a2e6004
667                                 };
668                         }
669                 }
670
671                 public override uint[] ExpectedAminusB {
672                         get {
673                                 return new uint[] {
674                                         0x192483, 0xedfc2a5a, 0xaf6aa3ad, 0xb3c27ee0, 0x1dbb97c0, 0x5a89358e,
675                                         0x0bc99cc9, 0xee284efd, 0x17d9ca4e, 0x5cb4db86, 0x7f0ddc13, 0xc7711ad4,
676                                         0x06f375e9, 0x71ec7ca6, 0xbb2eb849, 0x6914bec9, 0x7196db80, 0x5e38d3a6,
677                                         0xb33d1976, 0x26e7681b, 0x5a189160, 0xa0c2a1c3, 0xdbe797bb, 0xbe2b21ad,
678                                         0x1014dd56, 0x5a438a13, 0xc48ca63c, 0x022002e1, 0x4a0989d1, 0xbd3f2d76,
679                                         0x38f7058a, 0xe428965c, 0x02a3f023, 0x2cf84c51, 0xee3c2278, 0x1406d5a1,
680                                         0xe2e48a81, 0x4f66b880, 0x25b58362, 0x0733403c, 0x9ae2115c, 0x6c9e6310,
681                                         0xf6e2b83b, 0x88b1229e, 0xf2e7acc6, 0x0e16ec9a, 0xf2cacba4, 0xf5466060,
682                                         0x8a80d714, 0x6a2e6004
683                                 };
684                         }
685                 }
686
687                 public override uint[] ExpectedAtimesB {
688                         get {
689                                 return new uint[] {
690                                         0x192483e, 0xdfc2a5aa, 0xf6aa3adb, 0x3c27ee01, 0xdbb97c05, 0xa89358e0,
691                                         0xbc99cc9e, 0xe284efd1, 0x7d9ca4e5, 0xcb4db867, 0xf0ddc13c, 0x7711ad40,
692                                         0x6f375e97, 0x1ec7ca6b, 0xb2eb8496, 0x914bec97, 0x196db805, 0xe38d3a6b,
693                                         0x33d19762, 0x6e7681b5, 0xa189160a, 0x0c2a1c3d, 0xbe797bbb, 0xe2b21ad1,
694                                         0x014dd565, 0xa438a13c, 0x48ca63c0, 0x22002e14, 0xa0989d1b, 0xd3f2d763,
695                                         0x8f7059ae, 0x428965c0, 0x2a3f0232, 0xcf84c51e, 0xe3c22781, 0x406d5a1e,
696                                         0x2e48a814, 0xf66b8802, 0x5b583620, 0x733403c9, 0xae2115c6, 0xc9e6310f,
697                                         0x6e2b83b8, 0x8b1229ef, 0x2e7acc60, 0xe16ec9af, 0x2cacba4f, 0x54660608,
698                                         0xa80d7146, 0xa2e60040, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
699                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
700                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
701                                         0x00000000, 0x00000000, 0x00000000
702                                 };
703                         }
704                 }
705
706                 public override uint[] ExpectedAdivB {
707                         get {
708                                 return new uint[] {
709                                         0x19248, 0x3edfc2a5, 0xaaf6aa3a, 0xdb3c27ee, 0x01dbb97c, 0x05a89358,
710                                         0xe0bc99cc, 0x9ee284ef, 0xd17d9ca4, 0xe5cb4db8, 0x67f0ddc1, 0x3c7711ad,
711                                         0x406f375e, 0x971ec7ca, 0x6bb2eb84, 0x96914bec, 0x97196db8, 0x05e38d3a,
712                                         0x6b33d197, 0x626e7681, 0xb5a18916, 0x0a0c2a1c, 0x3dbe797b, 0xbbe2b21a,
713                                         0xd1014dd5, 0x65a438a1, 0x3c48ca63, 0xc022002e, 0x14a0989d, 0x1bd3f2d7,
714                                         0x638f7059
715                                 };
716                         }
717                 }
718
719                 public override uint[] ExpectedAmodB {
720                         get {
721                                 return new uint[] {
722                                         0xa, 0xe428965c, 0x02a3f023, 0x2cf84c51, 0xee3c2278, 0x1406d5a1, 0xe2e48a81,
723                                         0x4f66b880, 0x25b58362, 0x0733403c, 0x9ae2115c, 0x6c9e6310, 0xf6e2b83b,
724                                         0x88b1229e, 0xf2e7acc6, 0x0e16ec9a, 0xf2cacba4, 0xf5466060, 0x8a80d714,
725                                         0x6a2e6004
726                                 };
727                         }
728                 }
729
730                 public override uint[] ExpectedASquared {
731                         get {
732                                 return new uint[] {
733                                         0x278, 0x26f9da2c, 0x9eeffbc8, 0xcf702902, 0x1e35c385, 0x3b2b2610,
734                                         0xb02ab71a, 0x3165f09c, 0xdb4768c2, 0x84de913e, 0x37474521, 0x95ea5714,
735                                         0x722b78fd, 0x703600e4, 0x1e883c87, 0x286772c1, 0xa94e590f, 0xb93d67fd,
736                                         0xd0194699, 0x4ceb1741, 0x5e4f3d86, 0x30365af8, 0xb22b3d2a, 0x4ea8ffaf,
737                                         0xe046488c, 0x5e8b4c26, 0xfbc177e6, 0x9c00d7b1, 0x1c597e95, 0xe3c08605,
738                                         0xe652147c, 0x5ed54f4e, 0x643d3b19, 0xec7e7f4f, 0xc6e1ef37, 0x32ead8f3,
739                                         0xdcc21123, 0x6b61703f, 0x8e9f8ada, 0x83537069, 0xb7d3bf76, 0x245e39db,
740                                         0x25d07352, 0xf844cd2a, 0x46dd334c, 0xd71fc2f1, 0x0709a11f, 0x553907da,
741                                         0x748d17f2, 0x065a05de, 0x07363794, 0xc4790752, 0x6c30b993, 0x0e0d67ff,
742                                         0xefbd1f94, 0xa07463dd, 0x5ba54f91, 0xe7e21018, 0x4f37e81b, 0x89f6434f,
743                                         0x3cc714be, 0x95c8588c, 0x73b72300, 0x552f80dc, 0xfa6b1ec6, 0x383f4843,
744                                         0xcebe7df7, 0x09a867a1, 0xbe736fb7, 0x4570ab4e, 0xd024b70b, 0x95f97b71,
745                                         0x00db547e, 0x9b6430c8, 0xf3981995, 0xfa8bf51b, 0x49ff9a93, 0xa9d1ee7b,
746                                         0xd22e4ed7, 0xaccd79e9, 0x4ecbe913, 0x60d98c62, 0xb2963be9, 0xbd288c77,
747                                         0xb048ce48, 0x13af506a, 0xfab605c1, 0xd2c0b9c8, 0x2b47137e, 0xf0933545,
748                                         0x67fb359a, 0x4d6f8c23, 0x81086afc, 0x6456062a, 0x32e42a1f, 0xa2d6fc80,
749                                         0x2d47f9f0, 0x60927cde, 0xfc902889, 0xf5730010
750                                 };
751                         }
752                 }
753
754                 public override uint[] ExpectedBSquared {
755                         get {
756                                 return new uint[] {
757                                         0x100, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
758                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
759                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
760                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
761                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
762                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
763                                         0x00000000, 0x00000000, 0x00000000
764                                 };
765                         }
766                 }
767         }
768
769         public class Carry10_2048a512b: ArithmeticBig_Base {
770
771                 public override uint[] a {
772                         get {
773                                 return new uint[] {
774                                         0x1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
775                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
776                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
777                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
778                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
779                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
780                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
781                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
782                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
783                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
784                                         0x00000000, 0x00000000, 0x00000000, 0x00000000
785                                 };
786                         }
787                 }
788
789                 public override uint[] b {
790                         get {
791                                 return new uint[] {
792                                         0xa4e3d73d, 0x75eac131, 0x302dc7c5, 0xa47bcd7e, 0x716087de, 0xc58e1aff,
793                                         0xb2a66ae9, 0x6c00067b, 0x5d8a1d8b, 0x0a424a97, 0xf02a5516, 0x5ce13f11,
794                                         0x9734eddc, 0xb26f0a2d, 0xdc2eea99, 0xac218b97
795                                 };
796                         }
797                 }
798
799                 public override uint[] ExpectedAplusB {
800                         get {
801                                 return new uint[] {
802                                         0x1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
803                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
804                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
805                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
806                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
807                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
808                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
809                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
810                                         0xa4e3d73d, 0x75eac131, 0x302dc7c5, 0xa47bcd7e, 0x716087de, 0xc58e1aff,
811                                         0xb2a66ae9, 0x6c00067b, 0x5d8a1d8b, 0x0a424a97, 0xf02a5516, 0x5ce13f11,
812                                         0x9734eddc, 0xb26f0a2d, 0xdc2eea99, 0xac218b97
813                                 };
814                         }
815                 }
816
817                 public override uint[] ExpectedAminusB {
818                         get {
819                                 return new uint[] {
820                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
821                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
822                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
823                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
824                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
825                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
826                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
827                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
828                                         0x5b1c28c2, 0x8a153ece, 0xcfd2383a, 0x5b843281, 0x8e9f7821, 0x3a71e500,
829                                         0x4d599516, 0x93fff984, 0xa275e274, 0xf5bdb568, 0x0fd5aae9, 0xa31ec0ee,
830                                         0x68cb1223, 0x4d90f5d2, 0x23d11566, 0x53de7469
831                                 };
832                         }
833                 }
834
835                 public override uint[] ExpectedAtimesB {
836                         get {
837                                 return new uint[] {
838                                         0xa4e3d73d, 0x75eac131, 0x302dc7c5, 0xa47bcd7e, 0x716087de, 0xc58e1aff,
839                                         0xb2a66ae9, 0x6c00067b, 0x5d8a1d8b, 0x0a424a97, 0xf02a5516, 0x5ce13f11,
840                                         0x9734eddc, 0xb26f0a2d, 0xdc2eea99, 0xac218b97, 0x00000000, 0x00000000,
841                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
842                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
843                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
844                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
845                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
846                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
847                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
848                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
849                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
850                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
851                                         0x00000000, 0x00000000
852                                 };
853                         }
854                 }
855
856                 public override uint[] ExpectedAdivB {
857                         get {
858                                 return new uint[] {
859                                         0x1, 0x8d73ed52, 0x63ccf8dd, 0xbdf7d56b, 0x5745e24e, 0x33c99f37, 0x50504831,
860                                         0xbbc7006e, 0xff3c56a3, 0xc6588019, 0x455441a7, 0x2e587257, 0x74865b5d,
861                                         0x72d47e06, 0xf0087241, 0xa83b2419, 0x6822bd94, 0x8414d0e8, 0xf829760f,
862                                         0x3f26b3f7, 0x2e593e61, 0xed63d275, 0x47733c04, 0x5cb283d8, 0xa390d3e9,
863                                         0xae81f5ef, 0xeeaee18c, 0xf4f7204c, 0xdafdfe69, 0xc5589266, 0xca6cf579,
864                                         0x51bf0855, 0x06c615c0, 0x98b8c458, 0xd35a666f, 0x5b703ba2, 0xecfc2df3,
865                                         0x125547e8, 0x548104fc, 0xd0d9417e, 0x763bdbc0, 0x5de3e15b, 0x531c9668,
866                                         0x2724724e, 0x425710f6, 0x484386f9, 0x416a7d95, 0x27ee2792, 0x5dc52c9e
867                                 };
868                         }
869                 }
870
871                 public override uint[] ExpectedAmodB {
872                         get {
873                                 return new uint[] {
874                                         0x9b7fd926, 0x0a7e23f3, 0x81fd3d29, 0x515de74b, 0xead6979c, 0x0a528677,
875                                         0xe3fed5f9, 0xea231c08, 0x7af3b842, 0x2552eb1d, 0xccfa1564, 0xd60e4d46,
876                                         0x0754ca39, 0x5aa50851, 0xa02788ed, 0xb91ae4ce
877                                 };
878                         }
879                 }
880
881                 public override uint[] ExpectedASquared {
882                         get {
883                                 return new uint[] {
884                                         0x1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
885                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
886                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
887                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
888                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
889                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
890                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
891                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
892                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
893                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
894                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
895                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
896                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
897                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
898                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
899                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
900                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
901                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
902                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
903                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
904                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
905                                         0x00000000, 0x00000000
906                                 };
907                         }
908                 }
909
910                 public override uint[] ExpectedBSquared {
911                         get {
912                                 return new uint[] {
913                                         0x6a34b68e, 0x2b0c30ab, 0x5ba73560, 0x1460a1b5, 0x25249ae7, 0x657f4d83,
914                                         0xffc12095, 0x4effc129, 0xf17a97ee, 0x5e353b56, 0x7031fd7f, 0x362f9cc2,
915                                         0xc710f9b6, 0xf0cf83a1, 0xdcd3d217, 0x4a753e4c, 0x8302911c, 0x7c70914e,
916                                         0xaf2372d5, 0x8f133c24, 0x8ee893ea, 0x95c92a17, 0x0161ecf9, 0xc884260e,
917                                         0x87da5987, 0x64f242e6, 0xf5ff8d04, 0xc775e988, 0xc24a9407, 0x71b5adfc,
918                                         0x3949fe76, 0x310b5311
919                                 };
920                         }
921                 }
922         }
923
924         public class Carry10_612a612b: ArithmeticBig_Base {
925
926                 public override uint[] a {
927                         get {
928                                 return new uint[] {
929                                         0x10, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
930                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
931                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
932                                         0x00000000, 0x00000000
933                                 };
934                         }
935                 }
936
937                 public override uint[] b {
938                         get {
939                                 return new uint[] {
940                                         0x8, 0x73ca4b23, 0x1b754264, 0x22aaac98, 0x0abfe205, 0xf2fd1c98, 0x76a78fb8,
941                                         0x7398b632, 0x306eacc9, 0xee3a8700, 0xab1bd9e4, 0xf5f53e01, 0x0b6ebccf,
942                                         0x000e5f13, 0xdd29a13f, 0x49ed6d71, 0x497d8e79, 0x3f8d15b9, 0x3ab921b3,
943                                         0xd32f5a18
944                                 };
945                         }
946                 }
947
948                 public override uint[] ExpectedAplusB {
949                         get {
950                                 return new uint[] {
951                                         0x18, 0x73ca4b23, 0x1b754264, 0x22aaac98, 0x0abfe205, 0xf2fd1c98,
952                                         0x76a78fb8, 0x7398b632, 0x306eacc9, 0xee3a8700, 0xab1bd9e4, 0xf5f53e01,
953                                         0x0b6ebccf, 0x000e5f13, 0xdd29a13f, 0x49ed6d71, 0x497d8e79, 0x3f8d15b9,
954                                         0x3ab921b3, 0xd32f5a18
955                                 };
956                         }
957                 }
958
959                 public override uint[] ExpectedAminusB {
960                         get {
961                                 return new uint[] {
962                                         0x7, 0x8c35b4dc, 0xe48abd9b, 0xdd555367, 0xf5401dfa, 0x0d02e367, 0x89587047,
963                                         0x8c6749cd, 0xcf915336, 0x11c578ff, 0x54e4261b, 0x0a0ac1fe, 0xf4914330,
964                                         0xfff1a0ec, 0x22d65ec0, 0xb612928e, 0xb6827186, 0xc072ea46, 0xc546de4c,
965                                         0x2cd0a5e8
966                                 };
967                         }
968                 }
969
970                 public override uint[] ExpectedAtimesB {
971                         get {
972                                 return new uint[] {
973                                         0x87, 0x3ca4b231, 0xb7542642, 0x2aaac980, 0xabfe205f, 0x2fd1c987,
974                                         0x6a78fb87, 0x398b6323, 0x06eacc9e, 0xe3a8700a, 0xb1bd9e4f, 0x5f53e010,
975                                         0xb6ebccf0, 0x00e5f13d, 0xd29a13f4, 0x9ed6d714, 0x97d8e793, 0xf8d15b93,
976                                         0xab921b3d, 0x32f5a180, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
977                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
978                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
979                                         0x00000000, 0x00000000, 0x00000000
980                                 };
981                         }
982                 }
983
984                 public override uint[] ExpectedAdivB {
985                         get {
986                                 return new uint[] {
987                                         0x1
988                                 };
989                         }
990                 }
991
992                 public override uint[] ExpectedAmodB {
993                         get {
994                                 return new uint[] {
995                                         0x7, 0x8c35b4dc, 0xe48abd9b, 0xdd555367, 0xf5401dfa, 0x0d02e367, 0x89587047,
996                                         0x8c6749cd, 0xcf915336, 0x11c578ff, 0x54e4261b, 0x0a0ac1fe, 0xf4914330,
997                                         0xfff1a0ec, 0x22d65ec0, 0xb612928e, 0xb6827186, 0xc072ea46, 0xc546de4c,
998                                         0x2cd0a5e8
999                                 };
1000                         }
1001                 }
1002
1003                 public override uint[] ExpectedASquared {
1004                         get {
1005                                 return new uint[] {
1006                                         0x100, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1007                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1008                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1009                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1010                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1011                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1012                                         0x00000000, 0x00000000, 0x00000000
1013                                 };
1014                         }
1015                 }
1016
1017                 public override uint[] ExpectedBSquared {
1018                         get {
1019                                 return new uint[] {
1020                                         0x47, 0x7104118d, 0xeb746bdc, 0x21bf9b52, 0x01733d95, 0x88b143b1,
1021                                         0x87f0fb41, 0x65df0c96, 0xc490f2a6, 0x12c8f6ea, 0x252973b1, 0xc0ea701c,
1022                                         0x71f6701c, 0x69eb7698, 0x2cde7627, 0x137fdad2, 0xc59510bb, 0x64483a25,
1023                                         0xa16d5cb5, 0xea6d7512, 0x84c280bf, 0xa3b9bf2a, 0x1e289f48, 0x20d752ac,
1024                                         0x8981bc2d, 0xbf6d17e3, 0xdb46db1e, 0x55564d03, 0xbdba86b5, 0x5f4efcf0,
1025                                         0x4adf8db1, 0xb32ea58d, 0x15b3d80c, 0xc1792429, 0xba324943, 0xc4c05ae5,
1026                                         0x43b0b0b6, 0x4e5944d5, 0xc484e240
1027                                 };
1028                         }
1029                 }
1030         }
1031
1032         public class Carry10_924a592b: ArithmeticBig_Base {
1033
1034                 public override uint[] a {
1035                         get {
1036                                 return new uint[] {
1037                                         0x10000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1038                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1039                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1040                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1041                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
1042                                 };
1043                         }
1044                 }
1045
1046                 public override uint[] b {
1047                         get {
1048                                 return new uint[] {
1049                                         0xeec8, 0xa90762a8, 0xdc8618f1, 0x4f8d783d, 0x0748ca77, 0x44fdeff4,
1050                                         0xb34f7ca0, 0x81b11736, 0x3ad01b51, 0xba49b2d5, 0x12d298be, 0x730bb558,
1051                                         0xb7abee99, 0xcb510110, 0x089d9c00, 0xbbade215, 0x7906beaa, 0xe96adc81,
1052                                         0xb888d515
1053                                 };
1054                         }
1055                 }
1056
1057                 public override uint[] ExpectedAplusB {
1058                         get {
1059                                 return new uint[] {
1060                                         0x10000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1061                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000eec8, 0xa90762a8,
1062                                         0xdc8618f1, 0x4f8d783d, 0x0748ca77, 0x44fdeff4, 0xb34f7ca0, 0x81b11736,
1063                                         0x3ad01b51, 0xba49b2d5, 0x12d298be, 0x730bb558, 0xb7abee99, 0xcb510110,
1064                                         0x089d9c00, 0xbbade215, 0x7906beaa, 0xe96adc81, 0xb888d515
1065                                 };
1066                         }
1067                 }
1068
1069                 public override uint[] ExpectedAminusB {
1070                         get {
1071                                 return new uint[] {
1072                                         0xfffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1073                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff1137, 0x56f89d57,
1074                                         0x2379e70e, 0xb07287c2, 0xf8b73588, 0xbb02100b, 0x4cb0835f, 0x7e4ee8c9,
1075                                         0xc52fe4ae, 0x45b64d2a, 0xed2d6741, 0x8cf44aa7, 0x48541166, 0x34aefeef,
1076                                         0xf76263ff, 0x44521dea, 0x86f94155, 0x1695237e, 0x47772aeb
1077                                 };
1078                         }
1079                 }
1080
1081                 public override uint[] ExpectedAtimesB {
1082                         get {
1083                                 return new uint[] {
1084                                         0xeec, 0x8a90762a, 0x8dc8618f, 0x14f8d783, 0xd0748ca7, 0x744fdeff,
1085                                         0x4b34f7ca, 0x081b1173, 0x63ad01b5, 0x1ba49b2d, 0x512d298b, 0xe730bb55,
1086                                         0x8b7abee9, 0x9cb51011, 0x0089d9c0, 0x0bbade21, 0x57906bea, 0xae96adc8,
1087                                         0x1b888d51, 0x50000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1088                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1089                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1090                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1091                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
1092                                 };
1093                         }
1094                 }
1095
1096                 public override uint[] ExpectedAdivB {
1097                         get {
1098                                 return new uint[] {
1099                                         0x1127, 0x51b35432, 0xce7b7c2d, 0x97083ec4, 0x26a0fd6f, 0x49534242,
1100                                         0x190ffd84, 0x0a3cf05b, 0x3d4666fa, 0xa8a72cf5, 0x74b047c8
1101                                 };
1102                         }
1103                 }
1104
1105                 public override uint[] ExpectedAmodB {
1106                         get {
1107                                 return new uint[] {
1108                                         0x5a34, 0xc1bc59cf, 0x14981300, 0xa6aa3b5b, 0x2d60df09, 0x0d02e128,
1109                                         0x0340c427, 0xc6069082, 0x8ec3ccdf, 0xe93e223f, 0x5e346e10, 0xec7f1b4c,
1110                                         0x19777e61, 0x6d9d1012, 0x56c0dc81, 0x17f763a9, 0x526bc8e2, 0xb84858c0,
1111                                         0xdf90b498
1112                                 };
1113                         }
1114                 }
1115
1116                 public override uint[] ExpectedASquared {
1117                         get {
1118                                 return new uint[] {
1119                                         0x1000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1120                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1121                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1122                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1123                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1124                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1125                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1126                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1127                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1128                                         0x00000000, 0x00000000, 0x00000000, 0x00000000
1129                                 };
1130                         }
1131                 }
1132
1133                 public override uint[] ExpectedBSquared {
1134                         get {
1135                                 return new uint[] {
1136                                         0xdeb9b792, 0x4696e25b, 0x66527d74, 0x29e8ba21, 0x7aabbac1, 0xf92534aa,
1137                                         0xcbb6af91, 0x81c29141, 0xb3eefb25, 0x902b08c1, 0xe5e48df5, 0x539a9458,
1138                                         0x586e65a8, 0x61cf19a4, 0xb7087d2e, 0xa86df134, 0xf7c037e2, 0x358db628,
1139                                         0xb91e6f64, 0x1603d551, 0x8ccbb468, 0x9510d3b9, 0x0b3b4413, 0x3e4d261a,
1140                                         0x4bf7be1a, 0xf71c88ac, 0xbf509806, 0x0b25bb31, 0x022b093f, 0x47c200aa,
1141                                         0x73bcbbc5, 0x786bcfd7, 0x01e83960, 0xf7a5257d, 0x844747fb, 0x5c8bd29b,
1142                                         0x47abf3b9
1143                                 };
1144                         }
1145                 }
1146         }
1147         
1148         public class CarryFF_2048a512b: ArithmeticBig_Base {
1149
1150                 public override uint[] a {
1151                         get {
1152                                 return new uint[] {
1153                                         0x1, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1154                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1155                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1156                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1157                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1158                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1159                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1160                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1161                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1162                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1163                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff
1164                                 };
1165                         }
1166                 }
1167
1168                 public override uint[] b {
1169                         get {
1170                                 return new uint[] {
1171                                         0xd3d9d10e, 0xb2f0b0d3, 0x1f13609b, 0x39b039c5, 0x35de9114, 0x8f4e7bc6,
1172                                         0xf22166c4, 0x385ef08f, 0xcee7b659, 0xef7b9e0d, 0xa8db00d2, 0x2b078e0d,
1173                                         0x11591b10, 0xd6b0c621, 0x6ff27375, 0xf5e4aa7a
1174                                 };
1175                         }
1176                 }
1177
1178                 public override uint[] ExpectedAplusB {
1179                         get {
1180                                 return new uint[] {
1181                                         0x2, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1182                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1183                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1184                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1185                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1186                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1187                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1188                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1189                                         0xd3d9d10e, 0xb2f0b0d3, 0x1f13609b, 0x39b039c5, 0x35de9114, 0x8f4e7bc6,
1190                                         0xf22166c4, 0x385ef08f, 0xcee7b659, 0xef7b9e0d, 0xa8db00d2, 0x2b078e0d,
1191                                         0x11591b10, 0xd6b0c621, 0x6ff27375, 0xf5e4aa79
1192                                 };
1193                         }
1194                 }
1195
1196                 public override uint[] ExpectedAminusB {
1197                         get {
1198                                 return new uint[] {
1199                                         0x1, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1200                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1201                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1202                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1203                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1204                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1205                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1206                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1207                                         0x2c262ef1, 0x4d0f4f2c, 0xe0ec9f64, 0xc64fc63a, 0xca216eeb, 0x70b18439,
1208                                         0x0dde993b, 0xc7a10f70, 0x311849a6, 0x108461f2, 0x5724ff2d, 0xd4f871f2,
1209                                         0xeea6e4ef, 0x294f39de, 0x900d8c8a, 0x0a1b5585
1210                                 };
1211                         }
1212                 }
1213
1214                 public override uint[] ExpectedAtimesB {
1215                         get {
1216                                 return new uint[] {
1217                                         0x1, 0xa7b3a21d, 0x65e161a6, 0x3e26c136, 0x7360738a, 0x6bbd2229, 0x1e9cf78d,
1218                                         0xe442cd88, 0x70bde11f, 0x9dcf6cb3, 0xdef73c1b, 0x51b601a4, 0x560f1c1a,
1219                                         0x22b23621, 0xad618c42, 0xdfe4e6eb, 0xebc954f3, 0xffffffff, 0xffffffff,
1220                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1221                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1222                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1223                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1224                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1225                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1226                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1227                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x2c262ef1, 0x4d0f4f2c,
1228                                         0xe0ec9f64, 0xc64fc63a, 0xca216eeb, 0x70b18439, 0x0dde993b, 0xc7a10f70,
1229                                         0x311849a6, 0x108461f2, 0x5724ff2d, 0xd4f871f2, 0xeea6e4ef, 0x294f39de,
1230                                         0x900d8c8a, 0x0a1b5586
1231                                 };
1232                         }
1233                 }
1234
1235                 public override uint[] ExpectedAdivB {
1236                         get {
1237                                 return new uint[] {
1238                                         0x2, 0x6ab30e86, 0xa5eab10c, 0xf0b110fb, 0x4bbdab3e, 0x7077f470, 0xd425b304,
1239                                         0xd27d54c9, 0xf9dad24b, 0xf3b6936d, 0x829f2349, 0x5a49aac1, 0x10c451c4,
1240                                         0x2e2ce79d, 0xbb2876b1, 0xfd6c2716, 0xa03d330e, 0x95e99dc8, 0x66bba462,
1241                                         0x9f896b2b, 0x75282af8, 0xb3d317ff, 0x978d1249, 0x34b9dd27, 0x47e9d339,
1242                                         0x52900cd0, 0xc916641c, 0xcdddd3b5, 0xf8cf823f, 0xd9a48128, 0x9104dab4,
1243                                         0x1113dc0d, 0x537298d1, 0x5295c52d, 0xf1583e39, 0x38697c80, 0xaed83a88,
1244                                         0x50b49c28, 0xd7639120, 0x7ce405c9, 0xd1ff44c7, 0xf3ec6b98, 0x660fe843,
1245                                         0xc1dead4a, 0x7ff025af, 0x6055a2e6, 0x9070248a, 0xd3d0e8bd, 0x510b3167
1246                                 };
1247                         }
1248                 }
1249
1250                 public override uint[] ExpectedAmodB {
1251                         get {
1252                                 return new uint[] {
1253                                         0x128ca249, 0x61b38561, 0x5865396f, 0xda82264b, 0xf7650aca, 0xc618f1d1,
1254                                         0x58a82223, 0x31f0e3d2, 0x5ca39e46, 0xb9e5e9d4, 0xc980b4bb, 0x6e6c387a,
1255                                         0xf220f6d7, 0x5e55e72c, 0x6f0aa0a3, 0x5f200ee9
1256                                 };
1257                         }
1258                 }
1259
1260                 public override uint[] ExpectedASquared {
1261                         get {
1262                                 return new uint[] {
1263                                         0x3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1264                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1265                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1266                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1267                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1268                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1269                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1270                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1271                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1272                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1273                                         0xffffffff, 0xffffffff, 0xffffffff, 0xfffffffc, 0x00000000, 0x00000000,
1274                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1275                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1276                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1277                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1278                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1279                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1280                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1281                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1282                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1283                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1284                                         0x00000000, 0x00000001
1285                                 };
1286                         }
1287                 }
1288
1289                 public override uint[] ExpectedBSquared {
1290                         get {
1291                                 return new uint[] {
1292                                         0xaf50c7f2, 0x509d208c, 0xdb444820, 0x4f5080ac, 0xf68e26d4, 0x3266b318,
1293                                         0x795ae7c9, 0x909bb5f9, 0x595442ea, 0xa7c63be2, 0x0860a3cc, 0x18bfe855,
1294                                         0x1343dd40, 0x49fb6aca, 0x09698366, 0xa5a58482, 0x4ce53840, 0x85332cd5,
1295                                         0x24eb28fc, 0x4027d419, 0xb81f6430, 0xac6e4e0b, 0x6e67b5d7, 0xfbe3c71f,
1296                                         0xd0a4e850, 0xed7e4428, 0x87b66bb8, 0xf8d65494, 0xc6bbd534, 0x46bd0ce2,
1297                                         0x3b04ea11, 0x9ed64224
1298                                 };
1299                         }
1300                 }
1301         }
1302
1303         public class CarryFF_2048a2048b: ArithmeticBig_Base {
1304
1305                 public override uint[] a {
1306                         get {
1307                                 return new uint[] {
1308                                         0x1, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1309                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1310                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1311                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1312                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1313                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1314                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1315                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1316                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1317                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1318                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff
1319                                 };
1320                         }
1321                 }
1322
1323                 public override uint[] b {
1324                         get {
1325                                 return new uint[] {
1326                                         0xb731d57c, 0x8e2f779e, 0x7d1fab2a, 0x364776a2, 0x2cc5c154, 0xa74a02e3,
1327                                         0x4743c390, 0xc08a2586, 0x5456059e, 0xd343063f, 0x091b1db7, 0x6d58e725,
1328                                         0xdb66c9ce, 0x6af4c80f, 0x274553cd, 0xde2fa475, 0xb0b1f796, 0x02c09afc,
1329                                         0xea7a64be, 0x2c95dc03, 0x989777c9, 0xea40893e, 0x9a9c1d65, 0xf096fa51,
1330                                         0xc4f33acf, 0x5350c4e7, 0x1815cc9b, 0x9821cb7b, 0x63122665, 0x09294d5f,
1331                                         0xb00c1de2, 0x87b5a827, 0xcb57546b, 0x49edabfb, 0x20e281e0, 0x00de2802,
1332                                         0xc2e1d451, 0xbdef52d1, 0xac71dc7a, 0x67f8a302, 0x73f2ddad, 0x7a216bd0,
1333                                         0xbd3016da, 0xdc80da93, 0x5b24f481, 0xb2f6e9e9, 0x58878f22, 0x808910a3,
1334                                         0xcb67c1e9, 0x6ff38125, 0xe244f915, 0xa5752720, 0xf1e4c7e3, 0x81c30d54,
1335                                         0x0a1e215a, 0xac58c2bf, 0xba5bf3cf, 0x5cad50d3, 0xaeb62831, 0xcda95ef5,
1336                                         0x787a1755, 0x484f87c0, 0xf284a112, 0xfba4cc92
1337                                 };
1338                         }
1339                 }
1340
1341                 public override uint[] ExpectedAplusB {
1342                         get {
1343                                 return new uint[] {
1344                                         0x2, 0xb731d57c, 0x8e2f779e, 0x7d1fab2a, 0x364776a2, 0x2cc5c154, 0xa74a02e3,
1345                                         0x4743c390, 0xc08a2586, 0x5456059e, 0xd343063f, 0x091b1db7, 0x6d58e725,
1346                                         0xdb66c9ce, 0x6af4c80f, 0x274553cd, 0xde2fa475, 0xb0b1f796, 0x02c09afc,
1347                                         0xea7a64be, 0x2c95dc03, 0x989777c9, 0xea40893e, 0x9a9c1d65, 0xf096fa51,
1348                                         0xc4f33acf, 0x5350c4e7, 0x1815cc9b, 0x9821cb7b, 0x63122665, 0x09294d5f,
1349                                         0xb00c1de2, 0x87b5a827, 0xcb57546b, 0x49edabfb, 0x20e281e0, 0x00de2802,
1350                                         0xc2e1d451, 0xbdef52d1, 0xac71dc7a, 0x67f8a302, 0x73f2ddad, 0x7a216bd0,
1351                                         0xbd3016da, 0xdc80da93, 0x5b24f481, 0xb2f6e9e9, 0x58878f22, 0x808910a3,
1352                                         0xcb67c1e9, 0x6ff38125, 0xe244f915, 0xa5752720, 0xf1e4c7e3, 0x81c30d54,
1353                                         0x0a1e215a, 0xac58c2bf, 0xba5bf3cf, 0x5cad50d3, 0xaeb62831, 0xcda95ef5,
1354                                         0x787a1755, 0x484f87c0, 0xf284a112, 0xfba4cc91
1355                                 };
1356                         }
1357                 }
1358
1359                 public override uint[] ExpectedAminusB {
1360                         get {
1361                                 return new uint[] {
1362                                         0x1, 0x48ce2a83, 0x71d08861, 0x82e054d5, 0xc9b8895d, 0xd33a3eab, 0x58b5fd1c,
1363                                         0xb8bc3c6f, 0x3f75da79, 0xaba9fa61, 0x2cbcf9c0, 0xf6e4e248, 0x92a718da,
1364                                         0x24993631, 0x950b37f0, 0xd8baac32, 0x21d05b8a, 0x4f4e0869, 0xfd3f6503,
1365                                         0x15859b41, 0xd36a23fc, 0x67688836, 0x15bf76c1, 0x6563e29a, 0x0f6905ae,
1366                                         0x3b0cc530, 0xacaf3b18, 0xe7ea3364, 0x67de3484, 0x9cedd99a, 0xf6d6b2a0,
1367                                         0x4ff3e21d, 0x784a57d8, 0x34a8ab94, 0xb6125404, 0xdf1d7e1f, 0xff21d7fd,
1368                                         0x3d1e2bae, 0x4210ad2e, 0x538e2385, 0x98075cfd, 0x8c0d2252, 0x85de942f,
1369                                         0x42cfe925, 0x237f256c, 0xa4db0b7e, 0x4d091616, 0xa77870dd, 0x7f76ef5c,
1370                                         0x34983e16, 0x900c7eda, 0x1dbb06ea, 0x5a8ad8df, 0x0e1b381c, 0x7e3cf2ab,
1371                                         0xf5e1dea5, 0x53a73d40, 0x45a40c30, 0xa352af2c, 0x5149d7ce, 0x3256a10a,
1372                                         0x8785e8aa, 0xb7b0783f, 0x0d7b5eed, 0x045b336d
1373                                 };
1374                         }
1375                 }
1376
1377                 public override uint[] ExpectedAtimesB {
1378                         get {
1379                                 return new uint[] {
1380                                         0x1, 0x6e63aaf9, 0x1c5eef3c, 0xfa3f5654, 0x6c8eed44, 0x598b82a9, 0x4e9405c6,
1381                                         0x8e878721, 0x81144b0c, 0xa8ac0b3d, 0xa6860c7e, 0x12363b6e, 0xdab1ce4b,
1382                                         0xb6cd939c, 0xd5e9901e, 0x4e8aa79b, 0xbc5f48eb, 0x6163ef2c, 0x058135f9,
1383                                         0xd4f4c97c, 0x592bb807, 0x312eef93, 0xd481127d, 0x35383acb, 0xe12df4a3,
1384                                         0x89e6759e, 0xa6a189ce, 0x302b9937, 0x304396f6, 0xc6244cca, 0x12529abf,
1385                                         0x60183bc5, 0x0f6b504f, 0x96aea8d6, 0x93db57f6, 0x41c503c0, 0x01bc5005,
1386                                         0x85c3a8a3, 0x7bdea5a3, 0x58e3b8f4, 0xcff14604, 0xe7e5bb5a, 0xf442d7a1,
1387                                         0x7a602db5, 0xb901b526, 0xb649e903, 0x65edd3d2, 0xb10f1e45, 0x01122147,
1388                                         0x96cf83d2, 0xdfe7024b, 0xc489f22b, 0x4aea4e41, 0xe3c98fc7, 0x03861aa8,
1389                                         0x143c42b5, 0x58b1857f, 0x74b7e79e, 0xb95aa1a7, 0x5d6c5063, 0x9b52bdea,
1390                                         0xf0f42eaa, 0x909f0f81, 0xe5094225, 0xf7499923, 0x48ce2a83, 0x71d08861,
1391                                         0x82e054d5, 0xc9b8895d, 0xd33a3eab, 0x58b5fd1c, 0xb8bc3c6f, 0x3f75da79,
1392                                         0xaba9fa61, 0x2cbcf9c0, 0xf6e4e248, 0x92a718da, 0x24993631, 0x950b37f0,
1393                                         0xd8baac32, 0x21d05b8a, 0x4f4e0869, 0xfd3f6503, 0x15859b41, 0xd36a23fc,
1394                                         0x67688836, 0x15bf76c1, 0x6563e29a, 0x0f6905ae, 0x3b0cc530, 0xacaf3b18,
1395                                         0xe7ea3364, 0x67de3484, 0x9cedd99a, 0xf6d6b2a0, 0x4ff3e21d, 0x784a57d8,
1396                                         0x34a8ab94, 0xb6125404, 0xdf1d7e1f, 0xff21d7fd, 0x3d1e2bae, 0x4210ad2e,
1397                                         0x538e2385, 0x98075cfd, 0x8c0d2252, 0x85de942f, 0x42cfe925, 0x237f256c,
1398                                         0xa4db0b7e, 0x4d091616, 0xa77870dd, 0x7f76ef5c, 0x34983e16, 0x900c7eda,
1399                                         0x1dbb06ea, 0x5a8ad8df, 0x0e1b381c, 0x7e3cf2ab, 0xf5e1dea5, 0x53a73d40,
1400                                         0x45a40c30, 0xa352af2c, 0x5149d7ce, 0x3256a10a, 0x8785e8aa, 0xb7b0783f,
1401                                         0x0d7b5eed, 0x045b336e
1402                                 };
1403                         }
1404                 }
1405
1406                 public override uint[] ExpectedAdivB {
1407                         get {
1408                                 return new uint[] {
1409                                         0x2
1410                                 };
1411                         }
1412                 }
1413                 public override uint[] ExpectedAmodB {
1414                         get {
1415                                 return new uint[] {
1416                                         0x919c5506, 0xe3a110c3, 0x05c0a9ab, 0x937112bb, 0xa6747d56, 0xb16bfa39,
1417                                         0x717878de, 0x7eebb4f3, 0x5753f4c2, 0x5979f381, 0xedc9c491, 0x254e31b4,
1418                                         0x49326c63, 0x2a166fe1, 0xb1755864, 0x43a0b714, 0x9e9c10d3, 0xfa7eca06,
1419                                         0x2b0b3683, 0xa6d447f8, 0xced1106c, 0x2b7eed82, 0xcac7c534, 0x1ed20b5c,
1420                                         0x76198a61, 0x595e7631, 0xcfd466c8, 0xcfbc6909, 0x39dbb335, 0xedad6540,
1421                                         0x9fe7c43a, 0xf094afb0, 0x69515729, 0x6c24a809, 0xbe3afc3f, 0xfe43affa,
1422                                         0x7a3c575c, 0x84215a5c, 0xa71c470b, 0x300eb9fb, 0x181a44a5, 0x0bbd285e,
1423                                         0x859fd24a, 0x46fe4ad9, 0x49b616fc, 0x9a122c2d, 0x4ef0e1ba, 0xfeeddeb8,
1424                                         0x69307c2d, 0x2018fdb4, 0x3b760dd4, 0xb515b1be, 0x1c367038, 0xfc79e557,
1425                                         0xebc3bd4a, 0xa74e7a80, 0x8b481861, 0x46a55e58, 0xa293af9c, 0x64ad4215,
1426                                         0x0f0bd155, 0x6f60f07e, 0x1af6bdda, 0x08b666db
1427                                 };
1428                         }
1429                 }
1430
1431                 public override uint[] ExpectedASquared {
1432                         get {
1433                                 return new uint[] {
1434                                         0x3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1435                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1436                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1437                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1438                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1439                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1440                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1441                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1442                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1443                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1444                                         0xffffffff, 0xffffffff, 0xffffffff, 0xfffffffc, 0x00000000, 0x00000000,
1445                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1446                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1447                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1448                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1449                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1450                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1451                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1452                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1453                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1454                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1455                                         0x00000000, 0x00000001
1456                                 };
1457                         }
1458                 }
1459
1460                 public override uint[] ExpectedBSquared {
1461                         get {
1462                                 return new uint[] {
1463                                         0x831848eb, 0x7efecc65, 0x6b917c16, 0xc02ad024, 0x95d45734, 0x86436661,
1464                                         0xb659d06b, 0xed2d3d12, 0x8d22697f, 0x42aa156f, 0xa1072a98, 0x56d021ec,
1465                                         0x71659f68, 0x53afda42, 0xce0c8d36, 0x218e78c9, 0xdac9ff16, 0xd691c60c,
1466                                         0xf35dcca8, 0xedd6ce19, 0x61c6778e, 0x95b3dbd5, 0x7ac4b8e9, 0xf7219bea,
1467                                         0xb1ffc29b, 0x3f29f023, 0x9abc7824, 0x8854e481, 0x03ecd704, 0x6545fd15,
1468                                         0x1e789d7e, 0x64f0d0f2, 0xed7f5f3d, 0xd38a98d1, 0x9f143e4a, 0x74405b96,
1469                                         0xdd7299a0, 0xe6a03999, 0x962736af, 0x475c8990, 0x6b222718, 0xb2000344,
1470                                         0x198a8807, 0x59447387, 0x8198a9b0, 0x0e34d28b, 0x2acf7959, 0x4791c51a,
1471                                         0x545fb0b5, 0x2b95bebb, 0x52c4cfd6, 0x5fa6a819, 0xd87c20a5, 0xe9cd81b4,
1472                                         0xdc620add, 0x9f236459, 0x1c8058f6, 0xea57d9a4, 0xee9a5f32, 0xe2e6d0d9,
1473                                         0xd3bb1614, 0x5992c7d9, 0xe62d876e, 0x7d18ab9c, 0x31160464, 0x1d4b15ab,
1474                                         0xef2178d0, 0x5aebb512, 0x307345ca, 0x6be7e04b, 0xe554a3c3, 0xa271b8e8,
1475                                         0xb316ef66, 0x84e2cc4c, 0xd3a37fe4, 0x27867429, 0xe0297925, 0xf66c846c,
1476                                         0xc571306f, 0xa5983076, 0x9694454c, 0xb04f6438, 0x81288598, 0x40dfafca,
1477                                         0x4f645897, 0xed3a7565, 0x02c41610, 0x321d723d, 0xde46dea7, 0x6aa6de00,
1478                                         0x294e52eb, 0x49d22518, 0x4b119084, 0xbc07be46, 0xf520d1cc, 0xf8822758,
1479                                         0x240fd2ba, 0x1b2f9ad9, 0x39bbe880, 0xfe9df2c8, 0x2ee4c826, 0x1f92d91e,
1480                                         0xf5473b5a, 0x77351fd6, 0x73b2508a, 0xb2aef47d, 0x91945bfc, 0x7340f38d,
1481                                         0x0a295bda, 0xe59bb199, 0x83b1e7cb, 0x3bd75db1, 0x33c8e678, 0x4b9febfd,
1482                                         0x27b5953e, 0xe3b53c78, 0x623fc46d, 0x52407458, 0x7b99b946, 0x48ad38aa,
1483                                         0x25522881, 0xa14df5f5, 0x81bd8270, 0x68f2d9cd, 0x3930bedc, 0x0dc0cda4,
1484                                         0xa268fbc5, 0x0a890344
1485                                 };
1486                         }
1487                 }
1488         }
1489
1490         public class CarryFF_569a489b: ArithmeticBig_Base {
1491
1492                 public override uint[] a {
1493                         get {
1494                                 return new uint[] {
1495                                         0x3ffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1496                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1497                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff
1498                                 };
1499                         }
1500                 }
1501
1502                 public override uint[] b {
1503                         get {
1504                                 return new uint[] {
1505                                         0x143, 0xb6570190, 0xc15616df, 0x770d129f, 0x12ad442c, 0x61dd4434,
1506                                         0x26741e85, 0xe754aaff, 0x05f32773, 0x662eee13, 0x033e9626, 0xf996291a,
1507                                         0x2d47a501, 0xe84fbb77, 0xbb164332, 0x9b5cc677
1508                                 };
1509                         }
1510                 }
1511
1512                 public override uint[] ExpectedAplusB {
1513                         get {
1514                                 return new uint[] {
1515                                         0x4000000, 0x00000000, 0x00000143, 0xb6570190, 0xc15616df, 0x770d129f,
1516                                         0x12ad442c, 0x61dd4434, 0x26741e85, 0xe754aaff, 0x05f32773, 0x662eee13,
1517                                         0x033e9626, 0xf996291a, 0x2d47a501, 0xe84fbb77, 0xbb164332, 0x9b5cc676
1518                                 };
1519                         }
1520                 }
1521                 public override uint[] ExpectedAminusB {
1522                         get {
1523                                 return new uint[] {
1524                                         0x3ffffff, 0xffffffff, 0xfffffebc, 0x49a8fe6f, 0x3ea9e920, 0x88f2ed60,
1525                                         0xed52bbd3, 0x9e22bbcb, 0xd98be17a, 0x18ab5500, 0xfa0cd88c, 0x99d111ec,
1526                                         0xfcc169d9, 0x0669d6e5, 0xd2b85afe, 0x17b04488, 0x44e9bccd, 0x64a33988
1527                                 };
1528                         }
1529                 }
1530                 public override uint[] ExpectedAtimesB {
1531                         get {
1532                                 return new uint[] {
1533                                         0x5, 0x0ed95c06, 0x4305585b, 0x7ddc344a, 0x7c4ab510, 0xb1877510, 0xd099d07a,
1534                                         0x179d52ab, 0xfc17cc9d, 0xcd98bbb8, 0x4c0cfa58, 0x9be658a4, 0x68b51e94,
1535                                         0x07a13eed, 0xdeec590c, 0xca6d7319, 0xdbffffff, 0xffffffff, 0xfffffebc,
1536                                         0x49a8fe6f, 0x3ea9e920, 0x88f2ed60, 0xed52bbd3, 0x9e22bbcb, 0xd98be17a,
1537                                         0x18ab5500, 0xfa0cd88c, 0x99d111ec, 0xfcc169d9, 0x0669d6e5, 0xd2b85afe,
1538                                         0x17b04488, 0x44e9bccd, 0x64a33989
1539                                 };
1540                         }
1541                 }
1542
1543                 public override uint[] ExpectedAdivB {
1544                         get {
1545                                 return new uint[] {
1546                                         0x329ce, 0x3ac64866, 0x804dd21c
1547                                 };
1548                         }
1549                 }
1550                 public override uint[] ExpectedAmodB {
1551                         get {
1552                                 return new uint[] {
1553                                         0x135, 0x2915345d, 0x7d81de96, 0x2cd111cc, 0x708e7519, 0x8f9ab2e8,
1554                                         0x3290ee90, 0x5a4a3bdb, 0x9246ef64, 0xfba67306, 0x6978a7a4, 0xebb25821,
1555                                         0xaf52890c, 0x7cfeeccd, 0x4db77977, 0xb541acfb
1556                                 };
1557                         }
1558                 }
1559                 public override uint[] ExpectedASquared {
1560                         get {
1561                                 return new uint[] {
1562                                         0xfffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1563                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1564                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1565                                         0xf8000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1566                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1567                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001
1568                                 };
1569                         }
1570                 }
1571                 public override uint[] ExpectedBSquared {
1572                         get {
1573                                 return new uint[] {
1574                                         0x19955, 0xa16dc713, 0xc289fc4c, 0x7330e48a, 0x5272262f, 0xff810531,
1575                                         0x326eeb48, 0xcc5c9bcd, 0xa9ade1f6, 0xde046e24, 0x15c751fb, 0xffa8341c,
1576                                         0x78e84ab6, 0xfd3eddc3, 0x1b8de164, 0xc3afd26c, 0x679660ca, 0x0042fe9c,
1577                                         0xfe4e8f34, 0x618b171e, 0x4bd287d5, 0xf262890a, 0x2602a8e4, 0x2f493eec,
1578                                         0x06a6bd02, 0x969ecadc, 0xd1a0f0ed, 0xeafcee09, 0xb4f421d9, 0x94dd4a6f,
1579                                         0x59644b51
1580                                 };
1581                         }
1582                 }
1583         }
1584         
1585         public class CarryFF_569a489b2: ArithmeticBig_Base {
1586
1587                 public override uint[] a {
1588                         get {
1589                                 return new uint[] {
1590                                         0x3ffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1591                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1592                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff
1593                                 };
1594                         }
1595                 }
1596
1597                 public override uint[] b {
1598                         get {
1599                                 return new uint[] {
1600                                         0x1f9, 0x505733ec, 0x18619439, 0xf8faa678, 0x08f98e39, 0x74a6aa2a,
1601                                         0xff120277, 0xdcbc33c5, 0xd99a52c2, 0x0469e5ed, 0x565db652, 0x265e7f3a,
1602                                         0x287dcd49, 0x27bca834, 0x4a3d43bd, 0xea286963
1603                                 };
1604                         }
1605                 }
1606
1607                 public override uint[] ExpectedAplusB {
1608                         get {
1609                                 return new uint[] {
1610                                                                           0x4000000, 0x00000000, 0x000001f9, 0x505733ec, 0x18619439, 0xf8faa678,
1611                                                                           0x08f98e39, 0x74a6aa2a, 0xff120277, 0xdcbc33c5, 0xd99a52c2, 0x0469e5ed,
1612                                                                           0x565db652, 0x265e7f3a, 0x287dcd49, 0x27bca834, 0x4a3d43bd, 0xea286962
1613                                                                   };
1614                         }
1615                 }
1616                 public override uint[] ExpectedAminusB {
1617                         get {
1618                                 return new uint[] {
1619                                         0x3ffffff, 0xffffffff, 0xfffffe06, 0xafa8cc13, 0xe79e6bc6, 0x07055987,
1620                                         0xf70671c6, 0x8b5955d5, 0x00edfd88, 0x2343cc3a, 0x2665ad3d, 0xfb961a12,
1621                                         0xa9a249ad, 0xd9a180c5, 0xd78232b6, 0xd84357cb, 0xb5c2bc42, 0x15d7969c
1622                                 };
1623                         }
1624                 }
1625
1626                 public override uint[] ExpectedAtimesB {
1627                         get {
1628                                 return new uint[] {
1629                                         0x7, 0xe5415ccf, 0xb0618650, 0xe7e3ea99, 0xe023e638, 0xe5d29aa8, 0xabfc4809,
1630                                         0xdf72f0cf, 0x1766694b, 0x0811a797, 0xb55976d9, 0x489979fc, 0xe8a1f735,
1631                                         0x249ef2a0, 0xd128f50e, 0xf7a8a1a5, 0x8bffffff, 0xffffffff, 0xfffffe06,
1632                                         0xafa8cc13, 0xe79e6bc6, 0x07055987, 0xf70671c6, 0x8b5955d5, 0x00edfd88,
1633                                         0x2343cc3a, 0x2665ad3d, 0xfb961a12, 0xa9a249ad, 0xd9a180c5, 0xd78232b6,
1634                                         0xd84357cb, 0xb5c2bc42, 0x15d7969d
1635                                 };
1636                         }
1637                 }
1638
1639                 public override uint[] ExpectedAdivB {
1640                         get {
1641                                 return new uint[] {
1642                                         0x206c6, 0x4ebbf625, 0x27bb6f89
1643                                 };
1644                         }
1645                 }
1646
1647                 public override uint[] ExpectedAmodB {
1648                         get {
1649                                 return new uint[] {
1650                                         0x182, 0x533228c6, 0x9dd3397e, 0x3b27eb8c, 0x3562366d, 0x6ba6b9d8,
1651                                         0x3484a126, 0x4e1d156a, 0x89ce0d65, 0xfb247cdc, 0x9386673f, 0x3e5a93ac,
1652                                         0x78008635, 0x46144618, 0x7803d5f4, 0x1a5cad04
1653                                 };
1654                         }
1655                 }
1656
1657                 public override uint[] ExpectedASquared {
1658                         get {
1659                                 return new uint[] {
1660                                         0xfffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1661                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1662                                         0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1663                                         0xf8000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1664                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1665                                         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001
1666                                 };
1667                         }
1668                 }
1669
1670                 public override uint[] ExpectedBSquared {
1671                         get {
1672                                 return new uint[] {
1673                                         0x3e56e, 0x114177a0, 0x15384723, 0x1f337d0f, 0x08acb440, 0x132f0b3d,
1674                                         0x91db9725, 0xc0778882, 0xd13ce6b5, 0x27f1a641, 0x8984133e, 0xa72a0330,
1675                                         0xed9590e6, 0xa57b346f, 0x68b348ed, 0x8b78ef0f, 0x80196826, 0xc48d6c46,
1676                                         0x8432300c, 0x91430fc6, 0x6b082e12, 0x42603ed9, 0x6f0d01ac, 0xb21d3f2a,
1677                                         0x1abfc5e1, 0x8b09b4c4, 0x5b967354, 0x221f263c, 0x43f2a9dc, 0x32315538,
1678                                         0x16525c49
1679                                 };
1680                         }
1681                 }
1682         }
1683 }