]> gitweb.fperrin.net Git - Dictionary.git/blob - jars/icu4j-4_4_2-src/main/tests/core/src/com/ibm/icu/dev/test/bigdec/DiagBigDecimal.java
go
[Dictionary.git] / jars / icu4j-4_4_2-src / main / tests / core / src / com / ibm / icu / dev / test / bigdec / DiagBigDecimal.java
1 /* Generated from 'DiagBigDecimal.nrx' 27 Mar 2000 22:38:44 [v1.162] */\r
2 /* Options: Binary Comments Crossref Format Java Logo Trace1 Verbose3 */\r
3 package com.ibm.icu.dev.test.bigdec;\r
4 \r
5 import java.math.BigInteger;\r
6 \r
7 import com.ibm.icu.dev.test.TestFmwk;\r
8 import com.ibm.icu.math.BigDecimal;\r
9 import com.ibm.icu.util.VersionInfo;\r
10 \r
11 /* ------------------------------------------------------------------ */\r
12 /* Decimal diagnostic tests mfc */\r
13 /* Copyright (c) IBM Corporation 1996-2010. All Rights Reserved. */\r
14 /* ------------------------------------------------------------------ */\r
15 /* DiagBigDecimal */\r
16 /*                                                                    */\r
17 /* A class that tests the BigDecimal and MathContext classes. */\r
18 /*                                                                    */\r
19 /* The tests here are derived from or cover the same paths as: */\r
20 /* -- ANSI X3-274 testcases */\r
21 /* -- Java JCK testcases */\r
22 /* -- NetRexx testcases */\r
23 /* -- VM/CMS S/370 REXX implementation testcases [1981+] */\r
24 /* -- IBM Vienna Laboratory Rexx compiler testcases [1988+] */\r
25 /* -- New testcases */\r
26 /*                                                                    */\r
27 /* The authoritative sources for how the underlying technology */\r
28 /* (arithmetic) should work are: */\r
29 /* -- for digits=0 (fixed point): java.math.BigDecimal */\r
30 /* -- for digits>0 (floating point): ANSI X3.274-1996 + errata */\r
31 /*                                                                    */\r
32 /* ------------------------------------------------------------------ */\r
33 /* Change list */\r
34 /* 1997.09.05 Initial implementation, from DiagRexx [NetRexx tests] */\r
35 /* 1998.05.02 0.07 changes (e.g., compareTo) */\r
36 /* 1998.06.06 Rounding modes and format additions */\r
37 /* 1998.06.25 Rename from DiagDecimal; make stand-alone [add */\r
38 /* DiagException as a Minor class] */\r
39 /* 1998.06.27 Start adding testcases for DIGITS=0/FORM=PLAIN cases */\r
40 /* Reorganize for faster trace compilation */\r
41 /* 1998.06.28 new: valueof, scale, movePointX, unscaledValue, etc. */\r
42 /* 1998.07.07 Scaled divide */\r
43 /* 1998.07.08 setScale */\r
44 /* 1998.07.15 new scaffolding (Minor Test class) -- see diagabs */\r
45 /* 1998.12.14 add toBigDecimal and BigDecimal(java.math.BigDecimal) */\r
46 /* 1999.02.04 number preparation rounds instead of digits+1 trunc */\r
47 /* 1999.02.09 format method now only has two signatures */\r
48 /* 1999.02.27 no longer use Rexx class or RexxIO class */\r
49 /* 1999.03.05 add MathContext tests */\r
50 /* 1999.03.05 update for 0.96 [no null settings, etc.] */\r
51 /* drop sundry constructors; no blanks; char[] gets ints */\r
52 /* drop sundry converters, add Exact converters */\r
53 /* 1999.05.27 additional tests for scaled arithmetic */\r
54 /* 1999.06.29 additional tests for exponent overflows */\r
55 /* 1999.07.03 add 'continue' option */\r
56 /* 1999.07.10 additional tests for scaled arithmetic */\r
57 /* 1999.07.18 randomly-generated tests added for base operators */\r
58 /* 1999.10.28 weird intValueExact bad cases */\r
59 /* 1999.12.21 multiplication fast path failure and edge cases */\r
60 /* 2000.01.01 copyright update */\r
61 /* 2000.03.26 cosmetic updates; add extra format() testcases */\r
62 /* 2000.03.27 1.00 move to com.ibm.icu.math package; open source release; */\r
63 /* change to javadoc comments */\r
64 /* ------------------------------------------------------------------ */\r
65 \r
66 // note BINARY for conversions checking\r
67 \r
68 /**\r
69  * The <code>DiagBigDecimal</code> class forms a standalone test suite for the\r
70  * <code>com.ibm.icu.math.BigDecimal</code> and\r
71  * <code>com.ibm.icu.math.MathContext</code> classes (or, by changing the\r
72  * <code>package</code> statement, other classes of the same names and\r
73  * definition in other packages). It may also be used as a constructed object to\r
74  * embed the tests in an external test harness.\r
75  * <p>\r
76  * The tests are collected into <i>groups</i>, each corresponding to a tested\r
77  * method or a more general grouping. By default, when run from the static\r
78  * {@link #main(java.lang.String[])} method, the run will end if any test fails\r
79  * in a group. The <code>continue</code> argument may be specified to force\r
80  * the tests to run to completion.\r
81  * <p>\r
82  * Two minor (inner) classes are used; {@link DiagBigDecimal.DiagException} is\r
83  * used to signal the failure of a test group, and {@link DiagBigDecimal.Test},\r
84  * a dependent minor class, is used to register tests so that a summary of\r
85  * failures (or success) can be presented as each group is completed.\r
86  * \r
87  * @see com.ibm.icu.math.BigDecimal\r
88  * @see com.ibm.icu.math.MathContext\r
89  * @version 1.00 2000.03.27\r
90  * @author Mike Cowlishaw\r
91  */\r
92 \r
93 public class DiagBigDecimal extends TestFmwk {\r
94     //private static final java.lang.String $0 = "DiagBigDecimal.nrx";\r
95 \r
96     /* properties shared */\r
97     java.util.Vector Tests = new java.util.Vector(100); // scaffolding\r
98 \r
99     /* properties private */\r
100     private int totalcount = 0; // counts tests run\r
101 \r
102     /* properties constant private */\r
103 \r
104     /* Count of test groups */\r
105     private static final int testcount = 38;\r
106 \r
107     private static final com.ibm.icu.math.BigDecimal zero = com.ibm.icu.math.BigDecimal.ZERO;\r
108     private static final com.ibm.icu.math.BigDecimal one = com.ibm.icu.math.BigDecimal.ONE;\r
109     private static final com.ibm.icu.math.BigDecimal two = new com.ibm.icu.math.BigDecimal(2);\r
110     private static final com.ibm.icu.math.BigDecimal ten = com.ibm.icu.math.BigDecimal.TEN;\r
111     private static final com.ibm.icu.math.BigDecimal tenlong = new com.ibm.icu.math.BigDecimal((long) 1234554321); // 10-digiter\r
112 \r
113     /* Some context objects -- [some of these are checked later] */\r
114     private static final com.ibm.icu.math.MathContext mcdef = com.ibm.icu.math.MathContext.DEFAULT;\r
115     private static final com.ibm.icu.math.MathContext mc3 = new com.ibm.icu.math.MathContext(3);\r
116     private static final com.ibm.icu.math.MathContext mc6 = new com.ibm.icu.math.MathContext(6);\r
117     private static final com.ibm.icu.math.MathContext mc9 = new com.ibm.icu.math.MathContext(9);\r
118     private static final com.ibm.icu.math.MathContext mc50 = new com.ibm.icu.math.MathContext(50);\r
119     private static final com.ibm.icu.math.MathContext mcs = new com.ibm.icu.math.MathContext(9, com.ibm.icu.math.MathContext.SCIENTIFIC);\r
120     private static final com.ibm.icu.math.MathContext mce = new com.ibm.icu.math.MathContext(9, com.ibm.icu.math.MathContext.ENGINEERING);\r
121     private static final com.ibm.icu.math.MathContext mcld = new com.ibm.icu.math.MathContext(9, com.ibm.icu.math.MathContext.SCIENTIFIC, true); // lost digits\r
122     private static final com.ibm.icu.math.MathContext mcld0 = new com.ibm.icu.math.MathContext(0, com.ibm.icu.math.MathContext.SCIENTIFIC, true); // lost digits, digits=0\r
123     private static final com.ibm.icu.math.MathContext mcfd = new com.ibm.icu.math.MathContext(0, com.ibm.icu.math.MathContext.PLAIN); // fixed decimal style\r
124 \r
125     /* boundary primitive values */\r
126     private static final byte bmin = -128;\r
127     private static final byte bmax = 127;\r
128     private static final byte bzer = 0;\r
129     private static final byte bneg = -1;\r
130     private static final byte bpos = 1;\r
131     private static final int imin = -2147483648;\r
132     private static final int imax = 2147483647;\r
133     private static final int izer = 0;\r
134     private static final int ineg = -1;\r
135     private static final int ipos = 1;\r
136     private static final long lmin = -9223372036854775808L;\r
137     private static final long lmax = 9223372036854775807L;\r
138     private static final long lzer = (long) 0;\r
139     private static final long lneg = (long) -1;\r
140     private static final long lpos = (long) 1;\r
141     private static final short smin = -32768;\r
142     private static final short smax = 32767;\r
143     private static final short szer = (short) 0;\r
144     private static final short sneg = (short) (-1);\r
145     private static final short spos = (short) 1;\r
146 \r
147     /**\r
148      * Constructs a <code>DiagBigDecimal</code> test suite.\r
149      * <p>\r
150      * Invoke its {@link #diagrun} method to run the tests.\r
151      */\r
152 \r
153     public DiagBigDecimal() {\r
154         super();\r
155     }\r
156 \r
157     static final boolean isJDK15OrLater = VersionInfo.javaVersion().compareTo(\r
158             VersionInfo.getInstance(1, 5)) >= 0;\r
159 \r
160     /**\r
161      * Run the tests in the test suite.\r
162      * \r
163      * @param isContinue\r
164      *            The <code>boolean</code> which determines whether to stop\r
165      *            running after a group fails. If 1 (true) then the tests should\r
166      *            be run to completion if possible; if 0 (false) then the run\r
167      *            will end if a group fails.\r
168      * @return an <code>int</code> which is 0 if all tests were successful, >0\r
169      *         (the count of failures) if some failures were detected, or <0 if\r
170      *         an unexpected Exception was signalled.\r
171      */\r
172 \r
173     public int diagrun(boolean isContinue) {\r
174         int fails;\r
175         int num = 0;\r
176         DiagException de = null;\r
177         java.lang.RuntimeException e = null;\r
178         java.lang.String rest = null;\r
179 \r
180         fails = 0; // count of failures\r
181         try {\r
182             num = 1;\r
183             num: for (; num <= testcount; num++) { // [testcount is constant\r
184                                                     // set above]\r
185                 try {\r
186                     dotest(num);\r
187                 } catch (DiagException $1) {\r
188                     de = $1;\r
189                     say();\r
190                     errln("**** Failed:" + " " + de.getMessage() + " " + "****");\r
191                     say();\r
192                     fails = fails + de.failcount;\r
193                     if ((!isContinue))\r
194                         break num;\r
195                 }\r
196             }\r
197         } catch (java.lang.RuntimeException $2) {\r
198             e = $2; // any other exception is total failure; just show trace and\r
199                     // quit\r
200             say();\r
201             errln("**** Failed: unexpected exception ****");\r
202             e.printStackTrace();\r
203             return -1;\r
204         }/* num */\r
205 \r
206         if (fails == 0)\r
207             say("--- All OK ---" + " "\r
208                     + right("[" + totalcount + " " + "tests]", 15));\r
209         else {\r
210             if (isContinue) {\r
211                 if (fails > 1)\r
212                     rest = "tests";\r
213                 else\r
214                     rest = "test";\r
215                 say("--- All run ---" + " "\r
216                         + right("[" + totalcount + " " + "tests,", 14) + " "\r
217                         + "failed" + " " + fails + " " + rest + "]");\r
218 \r
219             }\r
220         }\r
221 \r
222         return fails;\r
223     }\r
224 \r
225     /* Run test by number -- method for development/private switching */\r
226 \r
227     private void dotest(int num) {\r
228         {/* select */\r
229             switch (num) {\r
230             /* -------------------------------------------------------------- */\r
231             /* MathContext */\r
232             /* -------------------------------------------------------------- */\r
233             case 1:\r
234                 diagmathcontext();\r
235                 break;\r
236 \r
237             /* -------------------------------------------------------------- */\r
238             /* Constructors */\r
239             /* -------------------------------------------------------------- */\r
240             case 2:\r
241                 diagconstructors();\r
242                 break;\r
243 \r
244             /* -------------------------------------------------------------- */\r
245             /* Operator methods */\r
246             /* -------------------------------------------------------------- */\r
247             case 3:\r
248                 diagabs();\r
249                 break;\r
250             case 4:\r
251                 diagadd();\r
252                 break;\r
253             case 5:\r
254                 diagcompareto();\r
255                 break;\r
256             case 6:\r
257                 diagdivide();\r
258                 break;\r
259             case 7:\r
260                 diagdivideInteger();\r
261                 break;\r
262             case 8:\r
263                 diagmax();\r
264                 break;\r
265             case 9:\r
266                 diagmin();\r
267                 break;\r
268             case 10:\r
269                 diagmultiply();\r
270                 break;\r
271             case 11:\r
272                 diagnegate();\r
273                 break;\r
274             case 12:\r
275                 diagplus();\r
276                 break;\r
277             case 13:\r
278                 diagpow();\r
279                 break;\r
280             case 14:\r
281                 diagremainder();\r
282                 break;\r
283             case 15:\r
284                 diagsubtract();\r
285                 break;\r
286             case 16:\r
287                 diagmath();\r
288                 break; // general math\r
289 \r
290             /* -------------------------------------------------------------- */\r
291             /* Other methods */\r
292             /* -------------------------------------------------------------- */\r
293             case 17:\r
294                 diagbyteValue();\r
295                 break;\r
296             case 18:\r
297                 diagcomparetoObj();\r
298                 break;\r
299             case 19:\r
300                 diagdoublevalue();\r
301                 break;\r
302             case 20:\r
303                 diagequals();\r
304                 break;\r
305             case 21:\r
306                 diagfloatvalue();\r
307                 break;\r
308             case 22:\r
309                 diagformat();\r
310                 break;\r
311             case 23:\r
312                 diaghashcode();\r
313                 break;\r
314             case 24:\r
315                 diagintvalue();\r
316                 break;\r
317             case 25:\r
318                 diaglongvalue();\r
319                 break;\r
320             case 26:\r
321                 diagmovepointleft();\r
322                 break;\r
323             case 27:\r
324                 diagmovepointright();\r
325                 break;\r
326             case 28:\r
327                 diagscale();\r
328                 break;\r
329             case 29:\r
330                 diagsetscale();\r
331                 break;\r
332             case 30:\r
333                 diagshortvalue();\r
334                 break;\r
335             case 31:\r
336                 diagsignum();\r
337                 break;\r
338             case 32:\r
339                 diagtobigdecimal();\r
340                 break;\r
341             case 33:\r
342                 diagtobiginteger();\r
343                 break;\r
344             case 34:\r
345                 diagtochararray();\r
346                 break;\r
347             case 35:\r
348                 diagtostring();\r
349                 break;\r
350             case 36:\r
351                 diagunscaledvalue();\r
352                 break;\r
353             case 37:\r
354                 diagvalueof();\r
355                 break;\r
356 \r
357             /* -------------------------------------------------------------- */\r
358             /* Mutation test [must be the last test] */\r
359             /* -------------------------------------------------------------- */\r
360             case 38:\r
361                 diagmutation();\r
362                 break;\r
363             // if any more, increase testcount above\r
364             default: {\r
365                 say("*** dotest case not found:" + " " + num + " " + "***");\r
366             }\r
367             }\r
368         }\r
369         return;\r
370     }\r
371 \r
372     /*--------------------------------------------------------------------*/\r
373     /* Diagnostic group methods */\r
374     /*--------------------------------------------------------------------*/\r
375 \r
376     /** Test constructors (and {@link #toString()} for equalities). */\r
377 \r
378     public void diagconstructors() {\r
379         boolean flag = false;\r
380         java.lang.String num;\r
381         java.math.BigInteger bip;\r
382         java.math.BigInteger biz;\r
383         java.math.BigInteger bin;\r
384         com.ibm.icu.math.BigDecimal bda;\r
385         com.ibm.icu.math.BigDecimal bdb;\r
386         com.ibm.icu.math.BigDecimal bmc;\r
387         com.ibm.icu.math.BigDecimal bmd;\r
388         com.ibm.icu.math.BigDecimal bme;\r
389         java.lang.RuntimeException e = null;\r
390         char ca[];\r
391         double dzer;\r
392         double dpos;\r
393         double dneg;\r
394         double dpos5;\r
395         double dneg5;\r
396         double dmin;\r
397         double dmax;\r
398         double d;\r
399         java.lang.String badstrings[];\r
400         int i = 0;\r
401 \r
402         // constants [statically-called constructors]\r
403         (new Test("con001")).ok = (com.ibm.icu.math.BigDecimal.ZERO.toString()).equals("0");\r
404         (new Test("con002")).ok = (com.ibm.icu.math.BigDecimal.ONE.toString()).equals("1");\r
405         (new Test("con003")).ok = (com.ibm.icu.math.BigDecimal.TEN.toString()).equals("10");\r
406         (new Test("con004")).ok = (com.ibm.icu.math.BigDecimal.ZERO.intValueExact()) == 0;\r
407         (new Test("con005")).ok = (com.ibm.icu.math.BigDecimal.ONE.intValueExact()) == 1;\r
408         (new Test("con006")).ok = (com.ibm.icu.math.BigDecimal.TEN.intValueExact()) == 10;\r
409 \r
410         // [java.math.] BigDecimal\r
411         (new Test("cbd001")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal("0"))).toString()).equals("0");\r
412         (new Test("cbd002")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal("1"))).toString()).equals("1");\r
413         (new Test("cbd003")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal("10"))).toString()).equals("10");\r
414         (new Test("cbd004")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal("1000"))).toString()).equals("1000");\r
415         (new Test("cbd005")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal("10.0"))).toString()).equals("10.0");\r
416         (new Test("cbd006")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal("10.1"))).toString()).equals("10.1");\r
417         (new Test("cbd007")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal("-1.1"))).toString()).equals("-1.1");\r
418         (new Test("cbd008")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal("-9.0"))).toString()).equals("-9.0");\r
419         (new Test("cbd009")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal("0.9"))).toString()).equals("0.9");\r
420 \r
421         num = "123456789.123456789";\r
422         (new Test("cbd010")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal(num))).toString()).equals(num);\r
423         num = "123456789.000000000";\r
424         (new Test("cbd011")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal(num))).toString()).equals(num);\r
425         num = "123456789000000000";\r
426         (new Test("cbd012")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal(num))).toString()).equals(num);\r
427         num = "0.00000123456789";\r
428         (new Test("cbd013")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal(num))).toString()).equals(num);\r
429         num = "0.000000123456789";\r
430 \r
431         // ignore format change issues with 1.5\r
432         if (!isJDK15OrLater)\r
433             (new Test("cbd014")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal(num))).toString()).equals(num);\r
434 \r
435         try {\r
436             new com.ibm.icu.math.BigDecimal((java.math.BigDecimal) null);\r
437             flag = false;\r
438         } catch (java.lang.NullPointerException $3) {\r
439             flag = true;\r
440         }/* checknull */\r
441         (new Test("cbi015")).ok = flag;\r
442 \r
443         // BigInteger\r
444         bip = new BigInteger("987654321987654321987654321"); // biggie +ve\r
445         biz = new BigInteger("0"); // biggie 0\r
446         bin = new BigInteger("-12345678998765432112345678"); // biggie -ve\r
447         (new Test("cbi001")).ok = ((new com.ibm.icu.math.BigDecimal(bip)).toString()).equals(bip.toString());\r
448         (new Test("cbi002")).ok = ((new com.ibm.icu.math.BigDecimal(biz)).toString()).equals("0");\r
449         (new Test("cbi003")).ok = ((new com.ibm.icu.math.BigDecimal(bin)).toString()).equals(bin.toString());\r
450         try {\r
451             new com.ibm.icu.math.BigDecimal((java.math.BigInteger) null);\r
452             flag = false;\r
453         } catch (java.lang.NullPointerException $4) {\r
454             flag = true;\r
455         }/* checknull */\r
456         (new Test("cbi004")).ok = flag;\r
457 \r
458         // BigInteger with scale\r
459         bip = new BigInteger("123456789"); // bigish\r
460         bda = new com.ibm.icu.math.BigDecimal(bip);\r
461         bdb = new com.ibm.icu.math.BigDecimal(bip, 5);\r
462         bmc = new com.ibm.icu.math.BigDecimal(bip, 15);\r
463         (new Test("cbs001")).ok = (bda.toString()).equals("123456789");\r
464         (new Test("cbs002")).ok = (bdb.toString()).equals("1234.56789");\r
465         (new Test("cbs003")).ok = (bmc.toString()).equals("0.000000123456789");\r
466         bip = new BigInteger("123456789123456789123456789"); // biggie\r
467         bda = new com.ibm.icu.math.BigDecimal(bip);\r
468         bdb = new com.ibm.icu.math.BigDecimal(bip, 7);\r
469         bmc = new com.ibm.icu.math.BigDecimal(bip, 13);\r
470         bmd = new com.ibm.icu.math.BigDecimal(bip, 19);\r
471         bme = new com.ibm.icu.math.BigDecimal(bip, 29);\r
472         (new Test("cbs011")).ok = (bda.toString()).equals("123456789123456789123456789");\r
473         (new Test("cbs012")).ok = (bdb.toString()).equals("12345678912345678912.3456789");\r
474         (new Test("cbs013")).ok = (bmc.toString()).equals("12345678912345.6789123456789");\r
475         (new Test("cbs014")).ok = (bmd.toString()).equals("12345678.9123456789123456789");\r
476         (new Test("cbs015")).ok = (bme.toString()).equals("0.00123456789123456789123456789");\r
477         try {\r
478             new com.ibm.icu.math.BigDecimal((java.math.BigInteger) null, 1);\r
479             flag = false;\r
480         } catch (java.lang.NullPointerException $5) {\r
481             flag = true;\r
482         }/* checknull */\r
483         (new Test("cbs004")).ok = flag;\r
484         try {\r
485             new com.ibm.icu.math.BigDecimal(bip, -8);\r
486             flag = false;\r
487         } catch (java.lang.RuntimeException $6) {\r
488             e = $6;\r
489             flag = (e.getMessage()).equals("Negative scale: -8");\r
490         }/* checkscale */\r
491         (new Test("cbs005")).ok = flag;\r
492 \r
493         // char[]\r
494         // We just test it's there\r
495         // Functionality is tested by BigDecimal(String).\r
496         ca = ("123.45").toCharArray();\r
497         (new Test("cca001")).ok = ((new com.ibm.icu.math.BigDecimal(ca))\r
498                 .toString()).equals("123.45");\r
499         try {\r
500             new com.ibm.icu.math.BigDecimal((char[]) null);\r
501             flag = false;\r
502         } catch (java.lang.NullPointerException $7) {\r
503             flag = true;\r
504         }/* checknull */\r
505         (new Test("cca010")).ok = flag;\r
506 \r
507         // char[],int,int\r
508         // We just test it's there, and that offsets work.\r
509         // Functionality is tested by BigDecimal(String).\r
510         ca = ("123.45").toCharArray();\r
511         (new Test("cca101")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 0, 6)).toString()).equals("123.45");\r
512         (new Test("cca102")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 1, 5)).toString()).equals("23.45");\r
513         (new Test("cca103")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 2, 4)).toString()).equals("3.45");\r
514         (new Test("cca104")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 3, 3)).toString()).equals("0.45");\r
515         (new Test("cca105")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 4, 2)).toString()).equals("45");\r
516         (new Test("cca106")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 5, 1)).toString()).equals("5");\r
517 \r
518         (new Test("cca110")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 0, 1)).toString()).equals("1");\r
519         (new Test("cca111")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 1, 1)).toString()).equals("2");\r
520         (new Test("cca112")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 2, 1)).toString()).equals("3");\r
521         (new Test("cca113")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 4, 1)).toString()).equals("4");\r
522 \r
523         (new Test("cca120")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 0, 2)).toString()).equals("12");\r
524         (new Test("cca121")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 1, 2)).toString()).equals("23");\r
525         (new Test("cca122")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 2, 2)).toString()).equals("3");\r
526         (new Test("cca123")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 3, 2)).toString()).equals("0.4");\r
527 \r
528         (new Test("cca130")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 0, 3)).toString()).equals("123");\r
529         (new Test("cca131")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 1, 3)).toString()).equals("23");\r
530         (new Test("cca132")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 2, 3)).toString()).equals("3.4");\r
531 \r
532         (new Test("cca140")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 0, 4)).toString()).equals("123");\r
533         (new Test("cca141")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 1, 4)).toString()).equals("23.4");\r
534 \r
535         (new Test("cca150")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 0, 5)).toString()).equals("123.4");\r
536 \r
537         // a couple of oddies\r
538         ca = ("x23.4x").toCharArray();\r
539         (new Test("cca160")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 1, 4)).toString()).equals("23.4");\r
540         (new Test("cca161")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 1, 1)).toString()).equals("2");\r
541         (new Test("cca162")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 4, 1)).toString()).equals("4");\r
542 \r
543         ca = ("0123456789.9876543210").toCharArray();\r
544         (new Test("cca163")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 0, 21)).toString()).equals("123456789.9876543210");\r
545         (new Test("cca164")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 1, 20)).toString()).equals("123456789.9876543210");\r
546         (new Test("cca165")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 2, 19)).toString()).equals("23456789.9876543210");\r
547         (new Test("cca166")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 2, 18)).toString()).equals("23456789.987654321");\r
548         (new Test("cca167")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 2, 17)).toString()).equals("23456789.98765432");\r
549         (new Test("cca168")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 2, 16)).toString()).equals("23456789.9876543");\r
550 \r
551         try {\r
552             new com.ibm.icu.math.BigDecimal((char[]) null, 0, 1);\r
553             flag = false;\r
554         } catch (java.lang.NullPointerException $8) {\r
555             flag = true;\r
556         }/* checknull */\r
557         (new Test("cca200")).ok = flag;\r
558 \r
559         try {\r
560             new com.ibm.icu.math.BigDecimal("123".toCharArray(), 0, 0);\r
561             flag = false;\r
562         } catch (java.lang.NumberFormatException $9) {\r
563             flag = true;\r
564         }/* checklen */\r
565         (new Test("cca201")).ok = flag;\r
566 \r
567         try {\r
568             new com.ibm.icu.math.BigDecimal("123".toCharArray(), 2, 4);\r
569             flag = false;\r
570         } catch (java.lang.RuntimeException $10) { // anything OK\r
571             flag = true;\r
572         }/* checkbound */\r
573         (new Test("cca202")).ok = flag;\r
574         try {\r
575             new com.ibm.icu.math.BigDecimal("123".toCharArray(), -1, 2);\r
576             flag = false;\r
577         } catch (java.lang.RuntimeException $11) { // anything OK\r
578             flag = true;\r
579         }/* checkbound2 */\r
580         (new Test("cca203")).ok = flag;\r
581         try {\r
582             new com.ibm.icu.math.BigDecimal("123".toCharArray(), 1, -2);\r
583             flag = false;\r
584         } catch (java.lang.RuntimeException $12) { // anything OK\r
585             flag = true;\r
586         }/* checkbound3 */\r
587         (new Test("cca204")).ok = flag;\r
588 \r
589         // double [deprecated]\r
590         // Note that many of these differ from the valueOf(double) results.\r
591         dzer = (double) 0;\r
592         dpos = (double) 1;\r
593         dpos = dpos / ((double) 10);\r
594         dneg = (double) -dpos;\r
595         (new Test("cdo001")).ok = ((new com.ibm.icu.math.BigDecimal(dneg)).toString()).equals("-0.1000000000000000055511151231257827021181583404541015625");\r
596 \r
597         (new Test("cdo002")).ok = ((new com.ibm.icu.math.BigDecimal(dzer)).toString()).equals("0"); // NB, not '0.0'\r
598         (new Test("cdo003")).ok = ((new com.ibm.icu.math.BigDecimal(dpos)).toString()).equals("0.1000000000000000055511151231257827021181583404541015625");\r
599 \r
600         dpos5 = (double) 0.5D;\r
601         dneg5 = (double) -dpos5;\r
602         (new Test("cdo004")).ok = ((new com.ibm.icu.math.BigDecimal(dneg5)).toString()).equals("-0.5");\r
603         (new Test("cdo005")).ok = ((new com.ibm.icu.math.BigDecimal(dpos5)).toString()).equals("0.5");\r
604         dmin = java.lang.Double.MIN_VALUE;\r
605         dmax = java.lang.Double.MAX_VALUE;\r
606         if (!isJDK15OrLater) // for some reason we format using scientific\r
607                                 // notation on 1.5 after 30 decimals or so\r
608             (new Test("cdo006")).ok = ((new com.ibm.icu.math.BigDecimal(dmin)).toString()).equals("0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004940656458412465441765687928682213723650598026143247644255856825006755072702087518652998363616359923797965646954457177309266567103559397963987747960107818781263007131903114045278458171678489821036887186360569987307230500063874091535649843873124733972731696151400317153853980741262385655911710266585566867681870395603106249319452715914924553293054565444011274801297099995419319894090804165633245247571478690147267801593552386115501348035264934720193790268107107491703332226844753335720832431936092382893458368060106011506169809753078342277318329247904982524730776375927247874656084778203734469699533647017972677717585125660551199131504891101451037862738167250955837389733598993664809941164205702637090279242767544565229087538682506419718265533447265625");\r
609 \r
610         (new Test("cdo007")).ok = ((new com.ibm.icu.math.BigDecimal(dmax)).toString()).equals("179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368");\r
611 \r
612         // nasties\r
613         d = (double) 9;\r
614         d = d / ((double) 10);\r
615         (new Test("cdo010")).ok = ((new com.ibm.icu.math.BigDecimal(d)).toString()).equals("0.90000000000000002220446049250313080847263336181640625");\r
616 \r
617         d = d / ((double) 10);\r
618         (new Test("cdo011")).ok = ((new com.ibm.icu.math.BigDecimal(d)).toString()).equals("0.0899999999999999966693309261245303787291049957275390625");\r
619 \r
620         d = d / ((double) 10);\r
621         (new Test("cdo012")).ok = ((new com.ibm.icu.math.BigDecimal(d)).toString()).equals("0.00899999999999999931998839741709161899052560329437255859375");\r
622 \r
623         d = d / ((double) 10);\r
624         (new Test("cdo013")).ok = ((new com.ibm.icu.math.BigDecimal(d)).toString()).equals("0.00089999999999999997536692664112933925935067236423492431640625");\r
625 \r
626         d = d / ((double) 10);\r
627         (new Test("cdo014")).ok = ((new com.ibm.icu.math.BigDecimal(d)).toString()).equals("0.00008999999999999999211568180168541175589780323207378387451171875");\r
628 \r
629         d = d / ((double) 10);\r
630         (new Test("cdo015")).ok = ((new com.ibm.icu.math.BigDecimal(d)).toString()).equals("0.00000899999999999999853394182236510090433512232266366481781005859375");\r
631 \r
632         d = d / ((double) 10);\r
633         if (!isJDK15OrLater)\r
634             (new Test("cdo016")).ok = ((new com.ibm.icu.math.BigDecimal(d)).toString()).equals("0.000000899999999999999853394182236510090433512232266366481781005859375");\r
635 \r
636         d = d / ((double) 10);\r
637         if (!isJDK15OrLater)\r
638             (new Test("cdo017")).ok = ((new com.ibm.icu.math.BigDecimal(d)).toString()).equals("0.0000000899999999999999853394182236510090433512232266366481781005859375");\r
639 \r
640         d = d / ((double) 10);\r
641         if (!isJDK15OrLater)\r
642             (new Test("cdo018")).ok = ((new com.ibm.icu.math.BigDecimal(d)).toString()).equals("0.000000008999999999999997872197332322678764437995369007694534957408905029296875");\r
643 \r
644         try {\r
645             new com.ibm.icu.math.BigDecimal(\r
646                     java.lang.Double.POSITIVE_INFINITY);\r
647             flag = false;\r
648         } catch (java.lang.NumberFormatException $13) {\r
649             flag = true;\r
650         }/* checkpin */\r
651         (new Test("cdo101")).ok = flag;\r
652         try {\r
653             new com.ibm.icu.math.BigDecimal(\r
654                     java.lang.Double.NEGATIVE_INFINITY);\r
655             flag = false;\r
656         } catch (java.lang.NumberFormatException $14) {\r
657             flag = true;\r
658         }/* checknin */\r
659         (new Test("cdo102")).ok = flag;\r
660         try {\r
661             new com.ibm.icu.math.BigDecimal(java.lang.Double.NaN);\r
662             flag = false;\r
663         } catch (java.lang.NumberFormatException $15) {\r
664             flag = true;\r
665         }/* checknan */\r
666         (new Test("cdo103")).ok = flag;\r
667 \r
668         // int\r
669         (new Test("cin001")).ok = ((new com.ibm.icu.math.BigDecimal(imin)).toString()).equals("-2147483648");\r
670         (new Test("cin002")).ok = ((new com.ibm.icu.math.BigDecimal(imax)).toString()).equals("2147483647");\r
671         (new Test("cin003")).ok = ((new com.ibm.icu.math.BigDecimal(ineg)).toString()).equals("-1");\r
672         (new Test("cin004")).ok = ((new com.ibm.icu.math.BigDecimal(izer)).toString()).equals("0");\r
673         (new Test("cin005")).ok = ((new com.ibm.icu.math.BigDecimal(ipos)).toString()).equals("1");\r
674         (new Test("cin006")).ok = ((new com.ibm.icu.math.BigDecimal(10)).toString()).equals("10");\r
675         (new Test("cin007")).ok = ((new com.ibm.icu.math.BigDecimal(9)).toString()).equals("9");\r
676         (new Test("cin008")).ok = ((new com.ibm.icu.math.BigDecimal(5)).toString()).equals("5");\r
677         (new Test("cin009")).ok = ((new com.ibm.icu.math.BigDecimal(2)).toString()).equals("2");\r
678         (new Test("cin010")).ok = ((new com.ibm.icu.math.BigDecimal(-2)).toString()).equals("-2");\r
679         (new Test("cin011")).ok = ((new com.ibm.icu.math.BigDecimal(-5)).toString()).equals("-5");\r
680         (new Test("cin012")).ok = ((new com.ibm.icu.math.BigDecimal(-9)).toString()).equals("-9");\r
681         (new Test("cin013")).ok = ((new com.ibm.icu.math.BigDecimal(-10)).toString()).equals("-10");\r
682         (new Test("cin014")).ok = ((new com.ibm.icu.math.BigDecimal(-11)).toString()).equals("-11");\r
683         (new Test("cin015")).ok = ((new com.ibm.icu.math.BigDecimal(-99)).toString()).equals("-99");\r
684         (new Test("cin016")).ok = ((new com.ibm.icu.math.BigDecimal(-100)).toString()).equals("-100");\r
685         (new Test("cin017")).ok = ((new com.ibm.icu.math.BigDecimal(-999)).toString()).equals("-999");\r
686         (new Test("cin018")).ok = ((new com.ibm.icu.math.BigDecimal(-1000)).toString()).equals("-1000");\r
687 \r
688         (new Test("cin019")).ok = ((new com.ibm.icu.math.BigDecimal(11)).toString()).equals("11");\r
689         (new Test("cin020")).ok = ((new com.ibm.icu.math.BigDecimal(99)).toString()).equals("99");\r
690         (new Test("cin021")).ok = ((new com.ibm.icu.math.BigDecimal(100)).toString()).equals("100");\r
691         (new Test("cin022")).ok = ((new com.ibm.icu.math.BigDecimal(999)).toString()).equals("999");\r
692         (new Test("cin023")).ok = ((new com.ibm.icu.math.BigDecimal(1000)).toString()).equals("1000");\r
693 \r
694         // long\r
695         (new Test("clo001")).ok = ((new com.ibm.icu.math.BigDecimal(lmin)).toString()).equals("-9223372036854775808");\r
696         (new Test("clo002")).ok = ((new com.ibm.icu.math.BigDecimal(lmax)).toString()).equals("9223372036854775807");\r
697         (new Test("clo003")).ok = ((new com.ibm.icu.math.BigDecimal(lneg)).toString()).equals("-1");\r
698         (new Test("clo004")).ok = ((new com.ibm.icu.math.BigDecimal(lzer)).toString()).equals("0");\r
699         (new Test("clo005")).ok = ((new com.ibm.icu.math.BigDecimal(lpos)).toString()).equals("1");\r
700 \r
701         // String [many more examples are elsewhere]\r
702         // strings without E cannot generate E in result\r
703         (new Test("cst001")).ok = ((new com.ibm.icu.math.BigDecimal("12")).toString()).equals("12");\r
704         (new Test("cst002")).ok = ((new com.ibm.icu.math.BigDecimal("-76")).toString()).equals("-76");\r
705         (new Test("cst003")).ok = ((new com.ibm.icu.math.BigDecimal("12.76")).toString()).equals("12.76");\r
706         (new Test("cst004")).ok = ((new com.ibm.icu.math.BigDecimal("+12.76")).toString()).equals("12.76");\r
707         (new Test("cst005")).ok = ((new com.ibm.icu.math.BigDecimal("012.76")).toString()).equals("12.76");\r
708         (new Test("cst006")).ok = ((new com.ibm.icu.math.BigDecimal("+0.003")).toString()).equals("0.003");\r
709         (new Test("cst007")).ok = ((new com.ibm.icu.math.BigDecimal("17.")).toString()).equals("17");\r
710         (new Test("cst008")).ok = ((new com.ibm.icu.math.BigDecimal(".5")).toString()).equals("0.5");\r
711         (new Test("cst009")).ok = ((new com.ibm.icu.math.BigDecimal("044")).toString()).equals("44");\r
712         (new Test("cst010")).ok = ((new com.ibm.icu.math.BigDecimal("0044")).toString()).equals("44");\r
713         (new Test("cst011")).ok = ((new com.ibm.icu.math.BigDecimal("0.0005")).toString()).equals("0.0005");\r
714         (new Test("cst012")).ok = ((new com.ibm.icu.math.BigDecimal("00.00005")).toString()).equals("0.00005");\r
715         (new Test("cst013")).ok = ((new com.ibm.icu.math.BigDecimal("0.000005")).toString()).equals("0.000005");\r
716         (new Test("cst014")).ok = ((new com.ibm.icu.math.BigDecimal("0.0000005")).toString()).equals("0.0000005"); // \NR\r
717         (new Test("cst015")).ok = ((new com.ibm.icu.math.BigDecimal("0.00000005")).toString()).equals("0.00000005"); // \NR\r
718         (new Test("cst016")).ok = ((new com.ibm.icu.math.BigDecimal("12345678.876543210")).toString()).equals("12345678.876543210");\r
719         (new Test("cst017")).ok = ((new com.ibm.icu.math.BigDecimal("2345678.876543210")).toString()).equals("2345678.876543210");\r
720         (new Test("cst018")).ok = ((new com.ibm.icu.math.BigDecimal("345678.876543210")).toString()).equals("345678.876543210");\r
721         (new Test("cst019")).ok = ((new com.ibm.icu.math.BigDecimal("0345678.87654321")).toString()).equals("345678.87654321");\r
722         (new Test("cst020")).ok = ((new com.ibm.icu.math.BigDecimal("345678.8765432")).toString()).equals("345678.8765432");\r
723         (new Test("cst021")).ok = ((new com.ibm.icu.math.BigDecimal("+345678.8765432")).toString()).equals("345678.8765432");\r
724         (new Test("cst022")).ok = ((new com.ibm.icu.math.BigDecimal("+0345678.8765432")).toString()).equals("345678.8765432");\r
725         (new Test("cst023")).ok = ((new com.ibm.icu.math.BigDecimal("+00345678.8765432")).toString()).equals("345678.8765432");\r
726         (new Test("cst024")).ok = ((new com.ibm.icu.math.BigDecimal("-345678.8765432")).toString()).equals("-345678.8765432");\r
727         (new Test("cst025")).ok = ((new com.ibm.icu.math.BigDecimal("-0345678.8765432")).toString()).equals("-345678.8765432");\r
728         (new Test("cst026")).ok = ((new com.ibm.icu.math.BigDecimal("-00345678.8765432")).toString()).equals("-345678.8765432");\r
729 \r
730         // exotics --\r
731         (new Test("cst035")).ok = ((new com.ibm.icu.math.BigDecimal("\u0e57.\u0e50")).toString()).equals("7.0");\r
732         (new Test("cst036")).ok = ((new com.ibm.icu.math.BigDecimal("\u0b66.\u0b67")).toString()).equals("0.1");\r
733         (new Test("cst037")).ok = ((new com.ibm.icu.math.BigDecimal("\u0b66\u0b66")).toString()).equals("0");\r
734         (new Test("cst038")).ok = ((new com.ibm.icu.math.BigDecimal("\u0b6a\u0b66")).toString()).equals("40");\r
735 \r
736         // strings with E\r
737         (new Test("cst040")).ok = ((new com.ibm.icu.math.BigDecimal("1E+9")).toString()).equals("1E+9");\r
738         (new Test("cst041")).ok = ((new com.ibm.icu.math.BigDecimal("1e+09")).toString()).equals("1E+9");\r
739         (new Test("cst042")).ok = ((new com.ibm.icu.math.BigDecimal("1E+90")).toString()).equals("1E+90");\r
740         (new Test("cst043")).ok = ((new com.ibm.icu.math.BigDecimal("+1E+009")).toString()).equals("1E+9");\r
741         (new Test("cst044")).ok = ((new com.ibm.icu.math.BigDecimal("0E+9")).toString()).equals("0");\r
742         (new Test("cst045")).ok = ((new com.ibm.icu.math.BigDecimal("1E+9")).toString()).equals("1E+9");\r
743         (new Test("cst046")).ok = ((new com.ibm.icu.math.BigDecimal("1E+09")).toString()).equals("1E+9");\r
744         (new Test("cst047")).ok = ((new com.ibm.icu.math.BigDecimal("1e+90")).toString()).equals("1E+90");\r
745         (new Test("cst048")).ok = ((new com.ibm.icu.math.BigDecimal("1E+009")).toString()).equals("1E+9");\r
746         (new Test("cst049")).ok = ((new com.ibm.icu.math.BigDecimal("0E+9")).toString()).equals("0");\r
747         (new Test("cst050")).ok = ((new com.ibm.icu.math.BigDecimal("1E9")).toString()).equals("1E+9");\r
748         (new Test("cst051")).ok = ((new com.ibm.icu.math.BigDecimal("1e09")).toString()).equals("1E+9");\r
749         (new Test("cst052")).ok = ((new com.ibm.icu.math.BigDecimal("1E90")).toString()).equals("1E+90");\r
750         (new Test("cst053")).ok = ((new com.ibm.icu.math.BigDecimal("1E009")).toString()).equals("1E+9");\r
751         (new Test("cst054")).ok = ((new com.ibm.icu.math.BigDecimal("0E9")).toString()).equals("0");\r
752         (new Test("cst055")).ok = ((new com.ibm.icu.math.BigDecimal("0.000e+0")).toString()).equals("0");\r
753         (new Test("cst056")).ok = ((new com.ibm.icu.math.BigDecimal("0.000E-1")).toString()).equals("0");\r
754         (new Test("cst057")).ok = ((new com.ibm.icu.math.BigDecimal("4E+9")).toString()).equals("4E+9");\r
755         (new Test("cst058")).ok = ((new com.ibm.icu.math.BigDecimal("44E+9")).toString()).equals("4.4E+10");\r
756         (new Test("cst059")).ok = ((new com.ibm.icu.math.BigDecimal("0.73e-7")).toString()).equals("7.3E-8");\r
757         (new Test("cst060")).ok = ((new com.ibm.icu.math.BigDecimal("00E+9")).toString()).equals("0");\r
758         (new Test("cst061")).ok = ((new com.ibm.icu.math.BigDecimal("00E-9")).toString()).equals("0");\r
759         (new Test("cst062")).ok = ((new com.ibm.icu.math.BigDecimal("10E+9")).toString()).equals("1.0E+10");\r
760         (new Test("cst063")).ok = ((new com.ibm.icu.math.BigDecimal("10E+09")).toString()).equals("1.0E+10");\r
761         (new Test("cst064")).ok = ((new com.ibm.icu.math.BigDecimal("10e+90")).toString()).equals("1.0E+91");\r
762         (new Test("cst065")).ok = ((new com.ibm.icu.math.BigDecimal("10E+009")).toString()).equals("1.0E+10");\r
763         (new Test("cst066")).ok = ((new com.ibm.icu.math.BigDecimal("100e+9")).toString()).equals("1.00E+11");\r
764         (new Test("cst067")).ok = ((new com.ibm.icu.math.BigDecimal("100e+09")).toString()).equals("1.00E+11");\r
765         (new Test("cst068")).ok = ((new com.ibm.icu.math.BigDecimal("100E+90")).toString()).equals("1.00E+92");\r
766         (new Test("cst069")).ok = ((new com.ibm.icu.math.BigDecimal("100e+009")).toString()).equals("1.00E+11");\r
767 \r
768         (new Test("cst070")).ok = ((new com.ibm.icu.math.BigDecimal("1.265")).toString()).equals("1.265");\r
769         (new Test("cst071")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E-20")).toString()).equals("1.265E-20");\r
770         (new Test("cst072")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E-8")).toString()).equals("1.265E-8");\r
771         (new Test("cst073")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E-4")).toString()).equals("1.265E-4");\r
772         (new Test("cst074")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E-3")).toString()).equals("1.265E-3");\r
773         (new Test("cst075")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E-2")).toString()).equals("1.265E-2");\r
774         (new Test("cst076")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E-1")).toString()).equals("1.265E-1");\r
775         (new Test("cst077")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E-0")).toString()).equals("1.265");\r
776         (new Test("cst078")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E+1")).toString()).equals("1.265E+1");\r
777         (new Test("cst079")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E+2")).toString()).equals("1.265E+2");\r
778         (new Test("cst080")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E+3")).toString()).equals("1.265E+3");\r
779         (new Test("cst081")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E+4")).toString()).equals("1.265E+4");\r
780         (new Test("cst082")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E+8")).toString()).equals("1.265E+8");\r
781         (new Test("cst083")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E+20")).toString()).equals("1.265E+20");\r
782 \r
783         (new Test("cst090")).ok = ((new com.ibm.icu.math.BigDecimal("12.65")).toString()).equals("12.65");\r
784         (new Test("cst091")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E-20")).toString()).equals("1.265E-19");\r
785         (new Test("cst092")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E-8")).toString()).equals("1.265E-7");\r
786         (new Test("cst093")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E-4")).toString()).equals("1.265E-3");\r
787         (new Test("cst094")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E-3")).toString()).equals("1.265E-2");\r
788         (new Test("cst095")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E-2")).toString()).equals("1.265E-1");\r
789         (new Test("cst096")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E-1")).toString()).equals("1.265");\r
790         (new Test("cst097")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E-0")).toString()).equals("1.265E+1");\r
791         (new Test("cst098")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E+1")).toString()).equals("1.265E+2");\r
792         (new Test("cst099")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E+2")).toString()).equals("1.265E+3");\r
793         (new Test("cst100")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E+3")).toString()).equals("1.265E+4");\r
794         (new Test("cst101")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E+4")).toString()).equals("1.265E+5");\r
795         (new Test("cst102")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E+8")).toString()).equals("1.265E+9");\r
796         (new Test("cst103")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E+20")).toString()).equals("1.265E+21");\r
797 \r
798         (new Test("cst110")).ok = ((new com.ibm.icu.math.BigDecimal("126.5")).toString()).equals("126.5");\r
799         (new Test("cst111")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E-20")).toString()).equals("1.265E-18");\r
800         (new Test("cst112")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E-8")).toString()).equals("1.265E-6");\r
801         (new Test("cst113")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E-4")).toString()).equals("1.265E-2");\r
802         (new Test("cst114")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E-3")).toString()).equals("1.265E-1");\r
803         (new Test("cst115")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E-2")).toString()).equals("1.265");\r
804         (new Test("cst116")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E-1")).toString()).equals("1.265E+1");\r
805         (new Test("cst117")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E-0")).toString()).equals("1.265E+2");\r
806         (new Test("cst118")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E+1")).toString()).equals("1.265E+3");\r
807         (new Test("cst119")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E+2")).toString()).equals("1.265E+4");\r
808         (new Test("cst120")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E+3")).toString()).equals("1.265E+5");\r
809         (new Test("cst121")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E+4")).toString()).equals("1.265E+6");\r
810         (new Test("cst122")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E+8")).toString()).equals("1.265E+10");\r
811         (new Test("cst123")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E+20")).toString()).equals("1.265E+22");\r
812 \r
813         (new Test("cst130")).ok = ((new com.ibm.icu.math.BigDecimal("1265")).toString()).equals("1265");\r
814         (new Test("cst131")).ok = ((new com.ibm.icu.math.BigDecimal("1265E-20")).toString()).equals("1.265E-17");\r
815         (new Test("cst132")).ok = ((new com.ibm.icu.math.BigDecimal("1265E-8")).toString()).equals("1.265E-5");\r
816         (new Test("cst133")).ok = ((new com.ibm.icu.math.BigDecimal("1265E-4")).toString()).equals("1.265E-1");\r
817         (new Test("cst134")).ok = ((new com.ibm.icu.math.BigDecimal("1265E-3")).toString()).equals("1.265");\r
818         (new Test("cst135")).ok = ((new com.ibm.icu.math.BigDecimal("1265E-2")).toString()).equals("1.265E+1");\r
819         (new Test("cst136")).ok = ((new com.ibm.icu.math.BigDecimal("1265E-1")).toString()).equals("1.265E+2");\r
820         (new Test("cst137")).ok = ((new com.ibm.icu.math.BigDecimal("1265E-0")).toString()).equals("1.265E+3");\r
821         (new Test("cst138")).ok = ((new com.ibm.icu.math.BigDecimal("1265E+1")).toString()).equals("1.265E+4");\r
822         (new Test("cst139")).ok = ((new com.ibm.icu.math.BigDecimal("1265E+2")).toString()).equals("1.265E+5");\r
823         (new Test("cst140")).ok = ((new com.ibm.icu.math.BigDecimal("1265E+3")).toString()).equals("1.265E+6");\r
824         (new Test("cst141")).ok = ((new com.ibm.icu.math.BigDecimal("1265E+4")).toString()).equals("1.265E+7");\r
825         (new Test("cst142")).ok = ((new com.ibm.icu.math.BigDecimal("1265E+8")).toString()).equals("1.265E+11");\r
826         (new Test("cst143")).ok = ((new com.ibm.icu.math.BigDecimal("1265E+20")).toString()).equals("1.265E+23");\r
827 \r
828         (new Test("cst150")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265")).toString()).equals("0.1265");\r
829         (new Test("cst151")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E-20")).toString()).equals("1.265E-21");\r
830         (new Test("cst152")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E-8")).toString()).equals("1.265E-9");\r
831         (new Test("cst153")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E-4")).toString()).equals("1.265E-5");\r
832         (new Test("cst154")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E-3")).toString()).equals("1.265E-4");\r
833         (new Test("cst155")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E-2")).toString()).equals("1.265E-3");\r
834         (new Test("cst156")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E-1")).toString()).equals("1.265E-2");\r
835         (new Test("cst157")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E-0")).toString()).equals("1.265E-1");\r
836         (new Test("cst158")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E+1")).toString()).equals("1.265");\r
837         (new Test("cst159")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E+2")).toString()).equals("1.265E+1");\r
838         (new Test("cst160")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E+3")).toString()).equals("1.265E+2");\r
839         (new Test("cst161")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E+4")).toString()).equals("1.265E+3");\r
840         (new Test("cst162")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E+8")).toString()).equals("1.265E+7");\r
841         (new Test("cst163")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E+20")).toString()).equals("1.265E+19");\r
842 \r
843         (new Test("cst170")).ok = ((new com.ibm.icu.math.BigDecimal("0.09e999999999")).toString()).equals("9E+999999997");\r
844         (new Test("cst171")).ok = ((new com.ibm.icu.math.BigDecimal("0.9e999999999")).toString()).equals("9E+999999998");\r
845         (new Test("cst172")).ok = ((new com.ibm.icu.math.BigDecimal("9e999999999")).toString()).equals("9E+999999999");\r
846         (new Test("cst173")).ok = ((new com.ibm.icu.math.BigDecimal("9.9e999999999")).toString()).equals("9.9E+999999999");\r
847         (new Test("cst174")).ok = ((new com.ibm.icu.math.BigDecimal("9.99e999999999")).toString()).equals("9.99E+999999999");\r
848         (new Test("cst175")).ok = ((new com.ibm.icu.math.BigDecimal("9.99e-999999999")).toString()).equals("9.99E-999999999");\r
849         (new Test("cst176")).ok = ((new com.ibm.icu.math.BigDecimal("9.9e-999999999")).toString()).equals("9.9E-999999999");\r
850         (new Test("cst177")).ok = ((new com.ibm.icu.math.BigDecimal("9e-999999999")).toString()).equals("9E-999999999");\r
851         (new Test("cst179")).ok = ((new com.ibm.icu.math.BigDecimal("99e-999999999")).toString()).equals("9.9E-999999998");\r
852         (new Test("cst180")).ok = ((new com.ibm.icu.math.BigDecimal("999e-999999999")).toString()).equals("9.99E-999999997");\r
853 \r
854         // baddies --\r
855         badstrings = new java.lang.String[] { "1..2", ".", "..", "++1", "--1",\r
856                 "-+1", "+-1", "12e", "12e++", "12f4", " +1", "+ 1", "12 ",\r
857                 " + 1", " - 1 ", "x", "-1-", "12-", "3+", "", "1e-",\r
858                 "7e1000000000", "", "e100", "\u0e5a", "\u0b65", "99e999999999",\r
859                 "999e999999999", "0.9e-999999999", "0.09e-999999999",\r
860                 "0.1e1000000000", "10e-1000000000", "0.9e9999999999",\r
861                 "99e-9999999999", "111e9999999999",\r
862                 "1111e-9999999999" + " " + "111e*123", "111e123-", "111e+12+",\r
863                 "111e1-3-", "111e1*23", "111e1e+3", "1e1.0", "1e123e", "ten",\r
864                 "ONE", "1e.1", "1e1.", "1ee", "e+1" }; // 200-203\r
865         // 204-207\r
866         // 208-211\r
867         // 211-214\r
868         // 215-219\r
869         // 220-222\r
870         // 223-224\r
871         // 225-226\r
872         // 227-228\r
873         // 229-230\r
874         // 231-232\r
875         // 233-234\r
876         // 235-237\r
877         // 238-240\r
878         // 241-244\r
879         // 245-248\r
880 \r
881         // watch out for commas on continuation lines\r
882 \r
883         {\r
884             int $16 = badstrings.length;\r
885             i = 0;\r
886             for (; $16 > 0; $16--, i++) {\r
887                 try {\r
888                     new com.ibm.icu.math.BigDecimal(badstrings[i]);\r
889                     say(">>> cst"+(200+i)+":"+" "+badstrings[i]+" "+(new com.ibm.icu.math.BigDecimal(badstrings[i])).toString());\r
890                     flag = false;\r
891                 } catch (java.lang.NumberFormatException $17) {\r
892                     flag = true;\r
893                 }\r
894                 (new Test("cst" + (200 + i))).ok = flag;\r
895             }\r
896         }/* i */\r
897 \r
898         try {\r
899             new com.ibm.icu.math.BigDecimal((java.lang.String) null);\r
900             flag = false;\r
901         } catch (java.lang.NullPointerException $18) {\r
902             flag = true;\r
903         }/* checknull */\r
904         (new Test("cst301")).ok = flag;\r
905 \r
906         summary("Constructors");\r
907         return;\r
908     }\r
909 \r
910     /** Mutation tests (checks that contents of constant objects are unchanged). */\r
911 \r
912     public void diagmutation() {\r
913         /* ---------------------------------------------------------------- */\r
914         /* Final tests -- check constants haven't mutated */\r
915         /* -- also that MC objects haven't mutated */\r
916         /* ---------------------------------------------------------------- */\r
917         (new Test("cuc001")).ok = (com.ibm.icu.math.BigDecimal.ZERO.toString()).equals("0");\r
918         (new Test("cuc002")).ok = (com.ibm.icu.math.BigDecimal.ONE.toString()).equals("1");\r
919         (new Test("cuc003")).ok = (com.ibm.icu.math.BigDecimal.TEN.toString()).equals("10");\r
920 \r
921         (new Test("cuc010")).ok = com.ibm.icu.math.BigDecimal.ROUND_CEILING == com.ibm.icu.math.MathContext.ROUND_CEILING;\r
922         (new Test("cuc011")).ok = com.ibm.icu.math.BigDecimal.ROUND_DOWN == com.ibm.icu.math.MathContext.ROUND_DOWN;\r
923         (new Test("cuc012")).ok = com.ibm.icu.math.BigDecimal.ROUND_FLOOR == com.ibm.icu.math.MathContext.ROUND_FLOOR;\r
924         (new Test("cuc013")).ok = com.ibm.icu.math.BigDecimal.ROUND_HALF_DOWN == com.ibm.icu.math.MathContext.ROUND_HALF_DOWN;\r
925         (new Test("cuc014")).ok = com.ibm.icu.math.BigDecimal.ROUND_HALF_EVEN == com.ibm.icu.math.MathContext.ROUND_HALF_EVEN;\r
926         (new Test("cuc015")).ok = com.ibm.icu.math.BigDecimal.ROUND_HALF_UP == com.ibm.icu.math.MathContext.ROUND_HALF_UP;\r
927         (new Test("cuc016")).ok = com.ibm.icu.math.BigDecimal.ROUND_UNNECESSARY == com.ibm.icu.math.MathContext.ROUND_UNNECESSARY;\r
928         (new Test("cuc017")).ok = com.ibm.icu.math.BigDecimal.ROUND_UP == com.ibm.icu.math.MathContext.ROUND_UP;\r
929 \r
930         (new Test("cuc020")).ok = (com.ibm.icu.math.MathContext.DEFAULT.getDigits()) == 9;\r
931         (new Test("cuc021")).ok = (com.ibm.icu.math.MathContext.DEFAULT.getForm()) == com.ibm.icu.math.MathContext.SCIENTIFIC;\r
932         (new Test("cuc022")).ok = (com.ibm.icu.math.MathContext.DEFAULT.getLostDigits() ? 1 : 0) == 0;\r
933         (new Test("cuc023")).ok = (com.ibm.icu.math.MathContext.DEFAULT.getRoundingMode()) == com.ibm.icu.math.MathContext.ROUND_HALF_UP;\r
934 \r
935         // mc9 =MathContext(9)\r
936         // mcld =MathContext(9, SCIENTIFIC, 1)\r
937         // mcfd =MathContext(0, PLAIN)\r
938         (new Test("cuc030")).ok = (mc9.getDigits()) == 9;\r
939         (new Test("cuc031")).ok = (mc9.getForm()) == com.ibm.icu.math.MathContext.SCIENTIFIC;\r
940         (new Test("cuc032")).ok = (mc9.getLostDigits() ? 1 : 0) == 0;\r
941         (new Test("cuc033")).ok = (mc9.getRoundingMode()) == com.ibm.icu.math.MathContext.ROUND_HALF_UP;\r
942         (new Test("cuc034")).ok = (mcld.getDigits()) == 9;\r
943         (new Test("cuc035")).ok = (mcld.getForm()) == com.ibm.icu.math.MathContext.SCIENTIFIC;\r
944         (new Test("cuc036")).ok = (mcld.getLostDigits() ? 1 : 0) == 1;\r
945         (new Test("cuc037")).ok = (mcld.getRoundingMode()) == com.ibm.icu.math.MathContext.ROUND_HALF_UP;\r
946         (new Test("cuc038")).ok = (mcfd.getDigits()) == 0;\r
947         (new Test("cuc039")).ok = (mcfd.getForm()) == com.ibm.icu.math.MathContext.PLAIN;\r
948         (new Test("cuc040")).ok = (mcfd.getLostDigits() ? 1 : 0) == 0;\r
949         (new Test("cuc041")).ok = (mcfd.getRoundingMode()) == com.ibm.icu.math.MathContext.ROUND_HALF_UP;\r
950 \r
951         summary("No mutation");\r
952     }\r
953 \r
954 \r
955     /* ----------------------------------------------------------------- */\r
956     /* Operator test methods */\r
957     /* ----------------------------------------------------------------- */\r
958     // The use of context in these tests are primarily to show that they\r
959     // are correctly passed to the methods, except that we check that\r
960     // each method checks for lostDigits.\r
961 \r
962     /** Test the {@link com.ibm.icu.math.BigDecimal#abs} method. */\r
963 \r
964     public void diagabs() {\r
965         boolean flag = false;\r
966         java.lang.ArithmeticException ae = null;\r
967 \r
968         // most of the function of this is tested by add\r
969         (new Test("abs001")).ok = ((new com.ibm.icu.math.BigDecimal("2")).abs().toString()).equals("2");\r
970         (new Test("abs002")).ok = ((new com.ibm.icu.math.BigDecimal("-2")).abs().toString()).equals("2");\r
971         (new Test("abs003")).ok = ((new com.ibm.icu.math.BigDecimal("+0.000")).abs().toString()).equals("0.000");\r
972         (new Test("abs004")).ok = ((new com.ibm.icu.math.BigDecimal("00.000")).abs().toString()).equals("0.000");\r
973         (new Test("abs005")).ok = ((new com.ibm.icu.math.BigDecimal("-0.000")).abs().toString()).equals("0.000");\r
974         (new Test("abs006")).ok = ((new com.ibm.icu.math.BigDecimal("+0.000")).abs(mcdef).toString()).equals("0");\r
975         (new Test("abs007")).ok = ((new com.ibm.icu.math.BigDecimal("00.000")).abs(mcdef).toString()).equals("0");\r
976         (new Test("abs008")).ok = ((new com.ibm.icu.math.BigDecimal("-0.000")).abs(mcdef).toString()).equals("0");\r
977         (new Test("abs009")).ok = ((new com.ibm.icu.math.BigDecimal("-2000000")).abs().toString()).equals("2000000");\r
978         (new Test("abs010")).ok = ((new com.ibm.icu.math.BigDecimal("-2000000")).abs(mcdef).toString()).equals("2000000");\r
979         (new Test("abs011")).ok = ((new com.ibm.icu.math.BigDecimal("-2000000")).abs(mc6).toString()).equals("2.00000E+6");\r
980         (new Test("abs012")).ok = ((new com.ibm.icu.math.BigDecimal("2000000")).abs(mc6).toString()).equals("2.00000E+6");\r
981         (new Test("abs013")).ok = ((new com.ibm.icu.math.BigDecimal("0.2")).abs().toString()).equals("0.2");\r
982         (new Test("abs014")).ok = ((new com.ibm.icu.math.BigDecimal("-0.2")).abs().toString()).equals("0.2");\r
983         (new Test("abs015")).ok = ((new com.ibm.icu.math.BigDecimal("0.01")).abs().toString()).equals("0.01");\r
984         (new Test("abs016")).ok = ((new com.ibm.icu.math.BigDecimal("-0.01")).abs().toString()).equals("0.01");\r
985         try {\r
986             tenlong.abs(mcld);\r
987             flag = false;\r
988         } catch (java.lang.ArithmeticException $19) {\r
989             ae = $19;\r
990             flag = (ae.getMessage()).equals("Too many digits:" + " "\r
991                     + tenlong.toString());\r
992         }/* checkdigits */\r
993         (new Test("abs020")).ok = flag;\r
994         // check lostdigits not raised if digits=0 [monadic method]\r
995         try {\r
996             tenlong.abs(mcld0);\r
997             flag = true;\r
998         } catch (java.lang.ArithmeticException $20) {\r
999             ae = $20;\r
1000             flag = false;\r
1001         }/* checkdigits */\r
1002         (new Test("abs021")).ok = flag;\r
1003         try {\r
1004             com.ibm.icu.math.BigDecimal.TEN\r
1005                     .abs((com.ibm.icu.math.MathContext) null);\r
1006             flag = false;\r
1007         } catch (java.lang.NullPointerException $21) {\r
1008             flag = true;\r
1009         }/* checknull */\r
1010         (new Test("abs022")).ok = flag;\r
1011 \r
1012         summary("abs");\r
1013     }\r
1014 \r
1015     /* ----------------------------------------------------------------- */\r
1016 \r
1017     /** Test the {@link com.ibm.icu.math.BigDecimal#add} method. */\r
1018 \r
1019     public void diagadd() {\r
1020         boolean flag = false;\r
1021         com.ibm.icu.math.BigDecimal alhs;\r
1022         com.ibm.icu.math.BigDecimal arhs;\r
1023         java.lang.ArithmeticException ae = null;\r
1024 \r
1025         // [first group are 'quick confidence check']\r
1026         (new Test("add001")).ok=((new com.ibm.icu.math.BigDecimal(2)).add(new com.ibm.icu.math.BigDecimal(3),mcdef).toString()).equals("5");\r
1027         (new Test("add003")).ok=((new com.ibm.icu.math.BigDecimal("5.75")).add(new com.ibm.icu.math.BigDecimal("3.3"),mcdef).toString()).equals("9.05");\r
1028         (new Test("add004")).ok=((new com.ibm.icu.math.BigDecimal("5")).add(new com.ibm.icu.math.BigDecimal("-3"),mcdef).toString()).equals("2");\r
1029         (new Test("add005")).ok=((new com.ibm.icu.math.BigDecimal("-5")).add(new com.ibm.icu.math.BigDecimal("-3"),mcdef).toString()).equals("-8");\r
1030         (new Test("add006")).ok=((new com.ibm.icu.math.BigDecimal("-7")).add(new com.ibm.icu.math.BigDecimal("2.5"),mcdef).toString()).equals("-4.5");\r
1031         (new Test("add007")).ok=((new com.ibm.icu.math.BigDecimal("0.7")).add(new com.ibm.icu.math.BigDecimal("0.3"),mcdef).toString()).equals("1.0");\r
1032         (new Test("add008")).ok=((new com.ibm.icu.math.BigDecimal("1.25")).add(new com.ibm.icu.math.BigDecimal("1.25"),mcdef).toString()).equals("2.50");\r
1033         (new Test("add009")).ok=((new com.ibm.icu.math.BigDecimal("1.23456789")).add(new com.ibm.icu.math.BigDecimal("1.00000000"),mcdef).toString()).equals("2.23456789");\r
1034         \r
1035         (new Test("add010")).ok=((new com.ibm.icu.math.BigDecimal("1.23456789")).add(new com.ibm.icu.math.BigDecimal("1.00000011"),mcdef).toString()).equals("2.23456800");\r
1036         \r
1037         \r
1038         (new Test("add011")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444444")).add(new com.ibm.icu.math.BigDecimal("0.5555555555"),mcdef).toString()).equals("1.00000000");\r
1039         \r
1040         (new Test("add012")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444440")).add(new com.ibm.icu.math.BigDecimal("0.5555555555"),mcdef).toString()).equals("1.00000000");\r
1041         \r
1042         (new Test("add013")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444444")).add(new com.ibm.icu.math.BigDecimal("0.5555555550"),mcdef).toString()).equals("0.999999999");\r
1043         \r
1044         (new Test("add014")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444444999")).add(new com.ibm.icu.math.BigDecimal("0"),mcdef).toString()).equals("0.444444444");\r
1045         \r
1046         (new Test("add015")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444445000")).add(new com.ibm.icu.math.BigDecimal("0"),mcdef).toString()).equals("0.444444445");\r
1047         \r
1048         \r
1049         (new Test("add016")).ok=((new com.ibm.icu.math.BigDecimal("70")).add(new com.ibm.icu.math.BigDecimal("10000e+9"),mcdef).toString()).equals("1.00000000E+13");\r
1050         \r
1051         (new Test("add017")).ok=((new com.ibm.icu.math.BigDecimal("700")).add(new com.ibm.icu.math.BigDecimal("10000e+9"),mcdef).toString()).equals("1.00000000E+13");\r
1052         \r
1053         (new Test("add018")).ok=((new com.ibm.icu.math.BigDecimal("7000")).add(new com.ibm.icu.math.BigDecimal("10000e+9"),mcdef).toString()).equals("1.00000000E+13");\r
1054         \r
1055         (new Test("add019")).ok=((new com.ibm.icu.math.BigDecimal("70000")).add(new com.ibm.icu.math.BigDecimal("10000e+9"),mcdef).toString()).equals("1.00000001E+13");\r
1056         \r
1057         (new Test("add020")).ok=((new com.ibm.icu.math.BigDecimal("700000")).add(new com.ibm.icu.math.BigDecimal("10000e+9"),mcdef).toString()).equals("1.00000007E+13");\r
1058         \r
1059         \r
1060         // [Now the same group with fixed arithmetic]\r
1061         (new Test("add030")).ok=((new com.ibm.icu.math.BigDecimal(2)).add(new com.ibm.icu.math.BigDecimal(3)).toString()).equals("5");\r
1062         (new Test("add031")).ok=((new com.ibm.icu.math.BigDecimal("5.75")).add(new com.ibm.icu.math.BigDecimal("3.3")).toString()).equals("9.05");\r
1063         (new Test("add032")).ok=((new com.ibm.icu.math.BigDecimal("5")).add(new com.ibm.icu.math.BigDecimal("-3")).toString()).equals("2");\r
1064         (new Test("add033")).ok=((new com.ibm.icu.math.BigDecimal("-5")).add(new com.ibm.icu.math.BigDecimal("-3")).toString()).equals("-8");\r
1065         (new Test("add034")).ok=((new com.ibm.icu.math.BigDecimal("-7")).add(new com.ibm.icu.math.BigDecimal("2.5")).toString()).equals("-4.5");\r
1066         (new Test("add035")).ok=((new com.ibm.icu.math.BigDecimal("0.7")).add(new com.ibm.icu.math.BigDecimal("0.3")).toString()).equals("1.0");\r
1067         (new Test("add036")).ok=((new com.ibm.icu.math.BigDecimal("1.25")).add(new com.ibm.icu.math.BigDecimal("1.25")).toString()).equals("2.50");\r
1068         (new Test("add037")).ok=((new com.ibm.icu.math.BigDecimal("1.23456789")).add(new com.ibm.icu.math.BigDecimal("1.00000000")).toString()).equals("2.23456789");\r
1069         \r
1070         (new Test("add038")).ok=((new com.ibm.icu.math.BigDecimal("1.23456789")).add(new com.ibm.icu.math.BigDecimal("1.00000011")).toString()).equals("2.23456800");\r
1071         \r
1072         \r
1073         (new Test("add039")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444444")).add(new com.ibm.icu.math.BigDecimal("0.5555555555")).toString()).equals("0.9999999999");\r
1074         \r
1075         (new Test("add040")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444440")).add(new com.ibm.icu.math.BigDecimal("0.5555555555")).toString()).equals("0.9999999995");\r
1076         \r
1077         (new Test("add041")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444444")).add(new com.ibm.icu.math.BigDecimal("0.5555555550")).toString()).equals("0.9999999994");\r
1078         \r
1079         (new Test("add042")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444444999")).add(new com.ibm.icu.math.BigDecimal("0")).toString()).equals("0.4444444444999");\r
1080         \r
1081         (new Test("add043")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444445000")).add(new com.ibm.icu.math.BigDecimal("0")).toString()).equals("0.4444444445000");\r
1082         \r
1083         \r
1084         (new Test("add044")).ok=((new com.ibm.icu.math.BigDecimal("70")).add(new com.ibm.icu.math.BigDecimal("10000e+9")).toString()).equals("10000000000070");\r
1085         \r
1086         (new Test("add045")).ok=((new com.ibm.icu.math.BigDecimal("700")).add(new com.ibm.icu.math.BigDecimal("10000e+9")).toString()).equals("10000000000700");\r
1087         \r
1088         (new Test("add046")).ok=((new com.ibm.icu.math.BigDecimal("7000")).add(new com.ibm.icu.math.BigDecimal("10000e+9")).toString()).equals("10000000007000");\r
1089         \r
1090         (new Test("add047")).ok=((new com.ibm.icu.math.BigDecimal("70000")).add(new com.ibm.icu.math.BigDecimal("10000e+9")).toString()).equals("10000000070000");\r
1091         \r
1092         (new Test("add048")).ok=((new com.ibm.icu.math.BigDecimal("700000")).add(new com.ibm.icu.math.BigDecimal("10000e+9")).toString()).equals("10000000700000");\r
1093         \r
1094 \r
1095         // symmetry:\r
1096         (new Test("add049")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("70"),mcdef).toString()).equals("1.00000000E+13");\r
1097         \r
1098         (new Test("add050")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("700"),mcdef).toString()).equals("1.00000000E+13");\r
1099         \r
1100         (new Test("add051")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("7000"),mcdef).toString()).equals("1.00000000E+13");\r
1101         \r
1102         (new Test("add052")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("70000"),mcdef).toString()).equals("1.00000001E+13");\r
1103         \r
1104         (new Test("add053")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("700000"),mcdef).toString()).equals("1.00000007E+13");\r
1105         \r
1106         \r
1107         (new Test("add054")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("70")).toString()).equals("10000000000070");\r
1108         \r
1109         (new Test("add055")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("700")).toString()).equals("10000000000700");\r
1110         \r
1111         (new Test("add056")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("7000")).toString()).equals("10000000007000");\r
1112         \r
1113         (new Test("add057")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("70000")).toString()).equals("10000000070000");\r
1114         \r
1115         (new Test("add058")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("700000")).toString()).equals("10000000700000");\r
1116 \r
1117         // some rounding effects\r
1118         (new Test("add059")).ok=((new com.ibm.icu.math.BigDecimal("0.9998")).add(new com.ibm.icu.math.BigDecimal("0.0000")).toString()).equals("0.9998");\r
1119         \r
1120         (new Test("add060")).ok=((new com.ibm.icu.math.BigDecimal("0.9998")).add(new com.ibm.icu.math.BigDecimal("0.0001")).toString()).equals("0.9999");\r
1121         \r
1122         (new Test("add061")).ok=((new com.ibm.icu.math.BigDecimal("0.9998")).add(new com.ibm.icu.math.BigDecimal("0.0002")).toString()).equals("1.0000");\r
1123         \r
1124         (new Test("add062")).ok=((new com.ibm.icu.math.BigDecimal("0.9998")).add(new com.ibm.icu.math.BigDecimal("0.0003")).toString()).equals("1.0001");\r
1125 \r
1126 \r
1127         // MC\r
1128         (new Test("add070")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("70000"),mcfd).toString()).equals("10000000070000");\r
1129         \r
1130         (new Test("add071")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("70000"),mcdef).toString()).equals("1.00000001E+13");\r
1131         \r
1132         (new Test("add072")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("70000"),mc6).toString()).equals("1.00000E+13");\r
1133 \r
1134 \r
1135         // zero preservation\r
1136         (new Test("add080")).ok=(com.ibm.icu.math.BigDecimal.ONE.add(new com.ibm.icu.math.BigDecimal("0.0001"),mc6).toString()).equals("1.0001");\r
1137         \r
1138         (new Test("add081")).ok=(com.ibm.icu.math.BigDecimal.ONE.add(new com.ibm.icu.math.BigDecimal("0.00001"),mc6).toString()).equals("1.00001");\r
1139         \r
1140         (new Test("add082")).ok=(com.ibm.icu.math.BigDecimal.ONE.add(new com.ibm.icu.math.BigDecimal("0.000001"),mc6).toString()).equals("1.00000");\r
1141         \r
1142         (new Test("add083")).ok=(com.ibm.icu.math.BigDecimal.ONE.add(new com.ibm.icu.math.BigDecimal("0.0000001"),mc6).toString()).equals("1.00000");\r
1143         \r
1144         (new Test("add084")).ok=(com.ibm.icu.math.BigDecimal.ONE.add(new com.ibm.icu.math.BigDecimal("0.00000001"),mc6).toString()).equals("1.00000");\r
1145 \r
1146 \r
1147         // more fixed, LHS swaps\r
1148         (new Test("add090")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-10")).add(zero).toString()).equals("-0.0000056267");\r
1149         (new Test("add091")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-6")).add(zero).toString()).equals("-0.056267");\r
1150         (new Test("add092")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-5")).add(zero).toString()).equals("-0.56267");\r
1151         (new Test("add093")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-4")).add(zero).toString()).equals("-5.6267");\r
1152         (new Test("add094")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-3")).add(zero).toString()).equals("-56.267");\r
1153         (new Test("add095")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-2")).add(zero).toString()).equals("-562.67");\r
1154         (new Test("add096")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-1")).add(zero).toString()).equals("-5626.7");\r
1155         (new Test("add097")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-0")).add(zero).toString()).equals("-56267");\r
1156         (new Test("add098")).ok=((new com.ibm.icu.math.BigDecimal("-5E-10")).add(zero).toString()).equals("-0.0000000005");\r
1157         (new Test("add099")).ok=((new com.ibm.icu.math.BigDecimal("-5E-5")).add(zero).toString()).equals("-0.00005");\r
1158         (new Test("add100")).ok=((new com.ibm.icu.math.BigDecimal("-5E-1")).add(zero).toString()).equals("-0.5");\r
1159         (new Test("add101")).ok=((new com.ibm.icu.math.BigDecimal("-5E-10")).add(zero).toString()).equals("-0.0000000005");\r
1160         (new Test("add102")).ok=((new com.ibm.icu.math.BigDecimal("-5E-5")).add(zero).toString()).equals("-0.00005");\r
1161         (new Test("add103")).ok=((new com.ibm.icu.math.BigDecimal("-5E-1")).add(zero).toString()).equals("-0.5");\r
1162         (new Test("add104")).ok=((new com.ibm.icu.math.BigDecimal("-5E10")).add(zero).toString()).equals("-50000000000");\r
1163         (new Test("add105")).ok=((new com.ibm.icu.math.BigDecimal("-5E5")).add(zero).toString()).equals("-500000");\r
1164         (new Test("add106")).ok=((new com.ibm.icu.math.BigDecimal("-5E1")).add(zero).toString()).equals("-50");\r
1165         (new Test("add107")).ok=((new com.ibm.icu.math.BigDecimal("-5E0")).add(zero).toString()).equals("-5");\r
1166 \r
1167         // more fixed, RHS swaps\r
1168         (new Test("add108")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-56267E-10")).toString()).equals("-0.0000056267");\r
1169         (new Test("add109")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-56267E-6")).toString()).equals("-0.056267");\r
1170         (new Test("add110")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-56267E-5")).toString()).equals("-0.56267");\r
1171         (new Test("add111")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-56267E-4")).toString()).equals("-5.6267");\r
1172         (new Test("add112")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-56267E-3")).toString()).equals("-56.267");\r
1173         (new Test("add113")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-56267E-2")).toString()).equals("-562.67");\r
1174         (new Test("add114")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-56267E-1")).toString()).equals("-5626.7");\r
1175         (new Test("add115")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-56267E-0")).toString()).equals("-56267");\r
1176         (new Test("add116")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-5E-10")).toString()).equals("-0.0000000005");\r
1177         (new Test("add117")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-5E-5")).toString()).equals("-0.00005");\r
1178         (new Test("add118")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-5E-1")).toString()).equals("-0.5");\r
1179         (new Test("add129")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-5E-10")).toString()).equals("-0.0000000005");\r
1180         (new Test("add130")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-5E-5")).toString()).equals("-0.00005");\r
1181         (new Test("add131")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-5E-1")).toString()).equals("-0.5");\r
1182         (new Test("add132")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-5E10")).toString()).equals("-50000000000");\r
1183         (new Test("add133")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-5E5")).toString()).equals("-500000");\r
1184         (new Test("add134")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-5E1")).toString()).equals("-50");\r
1185         (new Test("add135")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-5E0")).toString()).equals("-5");\r
1186 \r
1187         // [some of the next group are really constructor tests]\r
1188         (new Test("add140")).ok=((new com.ibm.icu.math.BigDecimal("00.0")).add(new com.ibm.icu.math.BigDecimal("0.00"),mcdef).toString()).equals("0");\r
1189         (new Test("add141")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).add(new com.ibm.icu.math.BigDecimal("00.0"),mcdef).toString()).equals("0");\r
1190         (new Test("add142")).ok=((new com.ibm.icu.math.BigDecimal("3")).add(new com.ibm.icu.math.BigDecimal(".3"),mcdef).toString()).equals("3.3");\r
1191         (new Test("add143")).ok=((new com.ibm.icu.math.BigDecimal("3.")).add(new com.ibm.icu.math.BigDecimal(".3"),mcdef).toString()).equals("3.3");\r
1192         (new Test("add144")).ok=((new com.ibm.icu.math.BigDecimal("3.0")).add(new com.ibm.icu.math.BigDecimal(".3"),mcdef).toString()).equals("3.3");\r
1193         (new Test("add145")).ok=((new com.ibm.icu.math.BigDecimal("3.00")).add(new com.ibm.icu.math.BigDecimal(".3"),mcdef).toString()).equals("3.30");\r
1194         (new Test("add146")).ok=((new com.ibm.icu.math.BigDecimal("3")).add(new com.ibm.icu.math.BigDecimal("3"),mcdef).toString()).equals("6");\r
1195         (new Test("add147")).ok=((new com.ibm.icu.math.BigDecimal("3")).add(new com.ibm.icu.math.BigDecimal("+3"),mcdef).toString()).equals("6");\r
1196         (new Test("add148")).ok=((new com.ibm.icu.math.BigDecimal("3")).add(new com.ibm.icu.math.BigDecimal("-3"),mcdef).toString()).equals("0");\r
1197         (new Test("add149")).ok=((new com.ibm.icu.math.BigDecimal("0.03")).add(new com.ibm.icu.math.BigDecimal("-0.03"),mcdef).toString()).equals("0");\r
1198         \r
1199         (new Test("add150")).ok=((new com.ibm.icu.math.BigDecimal("00.0")).add(new com.ibm.icu.math.BigDecimal("0.00")).toString()).equals("0.00");\r
1200         (new Test("add151")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).add(new com.ibm.icu.math.BigDecimal("00.0")).toString()).equals("0.00");\r
1201         (new Test("add152")).ok=((new com.ibm.icu.math.BigDecimal("3")).add(new com.ibm.icu.math.BigDecimal(".3")).toString()).equals("3.3");\r
1202         (new Test("add153")).ok=((new com.ibm.icu.math.BigDecimal("3.")).add(new com.ibm.icu.math.BigDecimal(".3")).toString()).equals("3.3");\r
1203         (new Test("add154")).ok=((new com.ibm.icu.math.BigDecimal("3.0")).add(new com.ibm.icu.math.BigDecimal(".3")).toString()).equals("3.3");\r
1204         (new Test("add155")).ok=((new com.ibm.icu.math.BigDecimal("3.00")).add(new com.ibm.icu.math.BigDecimal(".3")).toString()).equals("3.30");\r
1205         (new Test("add156")).ok=((new com.ibm.icu.math.BigDecimal("3")).add(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("6");\r
1206         (new Test("add157")).ok=((new com.ibm.icu.math.BigDecimal("3")).add(new com.ibm.icu.math.BigDecimal("+3")).toString()).equals("6");\r
1207         (new Test("add158")).ok=((new com.ibm.icu.math.BigDecimal("3")).add(new com.ibm.icu.math.BigDecimal("-3")).toString()).equals("0");\r
1208         (new Test("add159")).ok=((new com.ibm.icu.math.BigDecimal("0.3")).add(new com.ibm.icu.math.BigDecimal("-0.3")).toString()).equals("0.0");\r
1209         (new Test("add160")).ok=((new com.ibm.icu.math.BigDecimal("0.03")).add(new com.ibm.icu.math.BigDecimal("-0.03")).toString()).equals("0.00");\r
1210         (new Test("add161")).ok=((new com.ibm.icu.math.BigDecimal("7E+12")).add(new com.ibm.icu.math.BigDecimal("-1"),mcfd).toString()).equals("6999999999999");\r
1211         \r
1212         (new Test("add162")).ok=((new com.ibm.icu.math.BigDecimal("7E+12")).add(new com.ibm.icu.math.BigDecimal("1.11"),mcfd).toString()).equals("7000000000001.11");\r
1213         \r
1214         (new Test("add163")).ok=((new com.ibm.icu.math.BigDecimal("1.11")).add(new com.ibm.icu.math.BigDecimal("7E+12"),mcfd).toString()).equals("7000000000001.11");\r
1215         \r
1216 \r
1217         // input preparation tests\r
1218         alhs=new com.ibm.icu.math.BigDecimal("12345678900000");\r
1219         arhs=new com.ibm.icu.math.BigDecimal("9999999999999");\r
1220         (new Test("add170")).ok=(alhs.add(arhs,mc3).toString()).equals("2.23E+13");\r
1221         (new Test("add171")).ok=(arhs.add(alhs,mc3).toString()).equals("2.23E+13");\r
1222         (new Test("add172")).ok=((new com.ibm.icu.math.BigDecimal("12E+3")).add(new com.ibm.icu.math.BigDecimal("3456"),mc3).toString()).equals("1.55E+4");\r
1223         // next was 1.54E+4 under old [truncate to digits+1] rules\r
1224         (new Test("add173")).ok=((new com.ibm.icu.math.BigDecimal("12E+3")).add(new com.ibm.icu.math.BigDecimal("3446"),mc3).toString()).equals("1.55E+4");\r
1225         (new Test("add174")).ok=((new com.ibm.icu.math.BigDecimal("12E+3")).add(new com.ibm.icu.math.BigDecimal("3454"),mc3).toString()).equals("1.55E+4");\r
1226         (new Test("add175")).ok=((new com.ibm.icu.math.BigDecimal("12E+3")).add(new com.ibm.icu.math.BigDecimal("3444"),mc3).toString()).equals("1.54E+4");\r
1227         \r
1228         (new Test("add176")).ok=((new com.ibm.icu.math.BigDecimal("3456")).add(new com.ibm.icu.math.BigDecimal("12E+3"),mc3).toString()).equals("1.55E+4");\r
1229         // next was 1.54E+4 under old [truncate to digits+1] rules\r
1230         (new Test("add177")).ok=((new com.ibm.icu.math.BigDecimal("3446")).add(new com.ibm.icu.math.BigDecimal("12E+3"),mc3).toString()).equals("1.55E+4");\r
1231         (new Test("add178")).ok=((new com.ibm.icu.math.BigDecimal("3454")).add(new com.ibm.icu.math.BigDecimal("12E+3"),mc3).toString()).equals("1.55E+4");\r
1232         (new Test("add179")).ok=((new com.ibm.icu.math.BigDecimal("3444")).add(new com.ibm.icu.math.BigDecimal("12E+3"),mc3).toString()).equals("1.54E+4");\r
1233 \r
1234         try {\r
1235             ten.add((com.ibm.icu.math.BigDecimal) null);\r
1236             flag = false;\r
1237         } catch (java.lang.NullPointerException $22) {\r
1238             flag = true;\r
1239         }/* checknull */\r
1240         (new Test("add200")).ok = flag;\r
1241         try {\r
1242             ten.add(ten, (com.ibm.icu.math.MathContext) null);\r
1243             flag = false;\r
1244         } catch (java.lang.NullPointerException $23) {\r
1245             flag = true;\r
1246         }/* checknull2 */\r
1247         (new Test("add201")).ok = flag;\r
1248 \r
1249         try {\r
1250             tenlong.add(com.ibm.icu.math.BigDecimal.ZERO, mcld);\r
1251             flag = false;\r
1252         } catch (java.lang.ArithmeticException $24) {\r
1253             ae = $24;\r
1254             flag = (ae.getMessage()).equals("Too many digits:" + " "\r
1255                     + tenlong.toString());\r
1256         }/* checkdigits */\r
1257         (new Test("add202")).ok = flag;\r
1258         try {\r
1259             com.ibm.icu.math.BigDecimal.ZERO.add(tenlong, mcld);\r
1260             flag = false;\r
1261         } catch (java.lang.ArithmeticException $25) {\r
1262             ae = $25;\r
1263             flag = (ae.getMessage()).equals("Too many digits:" + " "\r
1264                     + tenlong.toString());\r
1265         }/* checkdigits */\r
1266         (new Test("add203")).ok = flag;\r
1267 \r
1268         // check lostdigits not raised if digits=0 [dyadic method]\r
1269         try {\r
1270             tenlong.add(com.ibm.icu.math.BigDecimal.ZERO, mcld0);\r
1271             flag = true;\r
1272         } catch (java.lang.ArithmeticException $26) {\r
1273             ae = $26;\r
1274             flag = false;\r
1275         }/* checkdigits */\r
1276         (new Test("add204")).ok = flag;\r
1277         try {\r
1278             com.ibm.icu.math.BigDecimal.ZERO.add(tenlong, mcld0);\r
1279             flag = true;\r
1280         } catch (java.lang.ArithmeticException $27) {\r
1281             ae = $27;\r
1282             flag = false;\r
1283         }/* checkdigits */\r
1284         (new Test("add205")).ok = flag;\r
1285 \r
1286         summary("add");\r
1287     }\r
1288 \r
1289     /* ----------------------------------------------------------------- */\r
1290     /**\r
1291      * Test the {@link com.ibm.icu.math.BigDecimal#compareTo(BigDecimal)}\r
1292      * method.\r
1293      */\r
1294 \r
1295     public void diagcompareto() {\r
1296         boolean flag = false;\r
1297         java.lang.ArithmeticException ae = null;\r
1298         // we assume add/subtract test function; this just\r
1299         // tests existence, exceptions, and possible results\r
1300 \r
1301         (new Test("cpt001")).ok=((new com.ibm.icu.math.BigDecimal("5")).compareTo(new com.ibm.icu.math.BigDecimal("2")))==1;\r
1302         (new Test("cpt002")).ok=((new com.ibm.icu.math.BigDecimal("5")).compareTo(new com.ibm.icu.math.BigDecimal("5")))==0;\r
1303         (new Test("cpt003")).ok=((new com.ibm.icu.math.BigDecimal("5")).compareTo(new com.ibm.icu.math.BigDecimal("5.00")))==0;\r
1304         (new Test("cpt004")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).compareTo(new com.ibm.icu.math.BigDecimal("0.5")))==0;\r
1305         (new Test("cpt005")).ok=((new com.ibm.icu.math.BigDecimal("2")).compareTo(new com.ibm.icu.math.BigDecimal("5")))==(-1);\r
1306         (new Test("cpt006")).ok=((new com.ibm.icu.math.BigDecimal("2")).compareTo(new com.ibm.icu.math.BigDecimal("5"),mcdef))==(-1);\r
1307         (new Test("cpt007")).ok=((new com.ibm.icu.math.BigDecimal("2")).compareTo(new com.ibm.icu.math.BigDecimal("5"),mc6))==(-1);\r
1308         (new Test("cpt008")).ok=((new com.ibm.icu.math.BigDecimal("2")).compareTo(new com.ibm.icu.math.BigDecimal("5"),mcfd))==(-1);\r
1309         try {\r
1310             ten.compareTo((com.ibm.icu.math.BigDecimal) null);\r
1311             flag = false;\r
1312         } catch (java.lang.NullPointerException $28) {\r
1313             flag = true;\r
1314         }/* checknull */\r
1315         (new Test("cpt100")).ok = flag;\r
1316         try {\r
1317             ten.compareTo(ten, (com.ibm.icu.math.MathContext) null);\r
1318             flag = false;\r
1319         } catch (java.lang.NullPointerException $29) {\r
1320             flag = true;\r
1321         }/* checknull2 */\r
1322         (new Test("cpt101")).ok = flag;\r
1323 \r
1324         try {\r
1325             tenlong.compareTo(com.ibm.icu.math.BigDecimal.ONE, mcld);\r
1326             flag = false;\r
1327         } catch (java.lang.ArithmeticException $30) {\r
1328             ae = $30;\r
1329             flag = (ae.getMessage()).equals("Too many digits:" + " "\r
1330                     + tenlong.toString());\r
1331         }/* checkdigits */\r
1332         (new Test("cpt102")).ok = flag;\r
1333         try {\r
1334             com.ibm.icu.math.BigDecimal.ONE.compareTo(tenlong, mcld);\r
1335             flag = false;\r
1336         } catch (java.lang.ArithmeticException $31) {\r
1337             ae = $31;\r
1338             flag = (ae.getMessage()).equals("Too many digits:" + " "\r
1339                     + tenlong.toString());\r
1340         }/* checkdigits */\r
1341         (new Test("cpt103")).ok = flag;\r
1342 \r
1343         summary("compareTo");\r
1344     }\r
1345 \r
1346     /* ----------------------------------------------------------------- */\r
1347 \r
1348     /** Test the {@link com.ibm.icu.math.BigDecimal#divide} method. */\r
1349 \r
1350     public void diagdivide() {\r
1351         boolean flag = false;\r
1352         com.ibm.icu.math.MathContext rmcd;\r
1353         int rhu;\r
1354         int rd;\r
1355         int ru;\r
1356         java.lang.RuntimeException e = null;\r
1357         java.lang.ArithmeticException ae = null;\r
1358 \r
1359         (new Test("div301")).ok=((new com.ibm.icu.math.BigDecimal("1")).divide(new com.ibm.icu.math.BigDecimal("3"),mcdef).toString()).equals("0.333333333");\r
1360         (new Test("div302")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3"),mcdef).toString()).equals("0.666666667");\r
1361         (new Test("div303")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).divide(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("2.4");\r
1362         (new Test("div304")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).divide(new com.ibm.icu.math.BigDecimal("-1"),mcdef).toString()).equals("-2.4");\r
1363         (new Test("div305")).ok=((new com.ibm.icu.math.BigDecimal("-2.4")).divide(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("-2.4");\r
1364         (new Test("div306")).ok=((new com.ibm.icu.math.BigDecimal("-2.4")).divide(new com.ibm.icu.math.BigDecimal("-1"),mcdef).toString()).equals("2.4");\r
1365         (new Test("div307")).ok=((new com.ibm.icu.math.BigDecimal("2.40")).divide(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("2.4");\r
1366         (new Test("div308")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).divide(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("2.4");\r
1367         (new Test("div309")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).divide(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("1.2");\r
1368         (new Test("div310")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).divide(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("1.2");\r
1369         (new Test("div311")).ok=((new com.ibm.icu.math.BigDecimal("2.")).divide(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("1");\r
1370         (new Test("div312")).ok=((new com.ibm.icu.math.BigDecimal("20")).divide(new com.ibm.icu.math.BigDecimal("20"),mcdef).toString()).equals("1");\r
1371         (new Test("div313")).ok=((new com.ibm.icu.math.BigDecimal("187")).divide(new com.ibm.icu.math.BigDecimal("187"),mcdef).toString()).equals("1");\r
1372         (new Test("div314")).ok=((new com.ibm.icu.math.BigDecimal("5")).divide(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("2.5");\r
1373         (new Test("div315")).ok=((new com.ibm.icu.math.BigDecimal("5")).divide(new com.ibm.icu.math.BigDecimal("2.0"),mcdef).toString()).equals("2.5");\r
1374         (new Test("div316")).ok=((new com.ibm.icu.math.BigDecimal("5")).divide(new com.ibm.icu.math.BigDecimal("2.000"),mcdef).toString()).equals("2.5");\r
1375         (new Test("div317")).ok=((new com.ibm.icu.math.BigDecimal("5")).divide(new com.ibm.icu.math.BigDecimal("0.200"),mcdef).toString()).equals("25");\r
1376         (new Test("div318")).ok=((new com.ibm.icu.math.BigDecimal("999999999")).divide(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("999999999");\r
1377         (new Test("div319")).ok=((new com.ibm.icu.math.BigDecimal("999999999.4")).divide(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("999999999");\r
1378         (new Test("div320")).ok=((new com.ibm.icu.math.BigDecimal("999999999.5")).divide(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("1E+9");\r
1379         (new Test("div321")).ok=((new com.ibm.icu.math.BigDecimal("999999999.9")).divide(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("1E+9");\r
1380         (new Test("div322")).ok=((new com.ibm.icu.math.BigDecimal("999999999.999")).divide(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("1E+9");\r
1381         (new Test("div323")).ok=((new com.ibm.icu.math.BigDecimal("0.0000E-50")).divide(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("0");\r
1382         // MC\r
1383         (new Test("div325")).ok=((new com.ibm.icu.math.BigDecimal("999999999")).divide(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("999999999");\r
1384         (new Test("div326")).ok=((new com.ibm.icu.math.BigDecimal("999999999")).divide(new com.ibm.icu.math.BigDecimal("1"),mc6).toString()).equals("1E+9");\r
1385         (new Test("div327")).ok=((new com.ibm.icu.math.BigDecimal("9999999")).divide(new com.ibm.icu.math.BigDecimal("1"),mc6).toString()).equals("1E+7");\r
1386         (new Test("div328")).ok=((new com.ibm.icu.math.BigDecimal("999999")).divide(new com.ibm.icu.math.BigDecimal("1"),mc6).toString()).equals("999999");\r
1387 \r
1388         // check rounding explicitly [note: digits+1 truncation]\r
1389         rmcd=new com.ibm.icu.math.MathContext(2,com.ibm.icu.math.MathContext.SCIENTIFIC,false,com.ibm.icu.math.MathContext.ROUND_CEILING);\r
1390         (new Test("div330")).ok=((new com.ibm.icu.math.BigDecimal("1.50")).divide(one,rmcd).toString()).equals("1.5");\r
1391         (new Test("div331")).ok=((new com.ibm.icu.math.BigDecimal("1.51")).divide(one,rmcd).toString()).equals("1.6");\r
1392         (new Test("div332")).ok=((new com.ibm.icu.math.BigDecimal("1.55")).divide(one,rmcd).toString()).equals("1.6");\r
1393         rmcd=new com.ibm.icu.math.MathContext(2,com.ibm.icu.math.MathContext.SCIENTIFIC,false,com.ibm.icu.math.MathContext.ROUND_DOWN);\r
1394         (new Test("div333")).ok=((new com.ibm.icu.math.BigDecimal("1.55")).divide(one,rmcd).toString()).equals("1.5");\r
1395         (new Test("div334")).ok=((new com.ibm.icu.math.BigDecimal("1.59")).divide(one,rmcd).toString()).equals("1.5");\r
1396         rmcd=new com.ibm.icu.math.MathContext(2,com.ibm.icu.math.MathContext.SCIENTIFIC,false,com.ibm.icu.math.MathContext.ROUND_FLOOR);\r
1397         (new Test("div335")).ok=((new com.ibm.icu.math.BigDecimal("1.55")).divide(one,rmcd).toString()).equals("1.5");\r
1398         (new Test("div336")).ok=((new com.ibm.icu.math.BigDecimal("1.59")).divide(one,rmcd).toString()).equals("1.5");\r
1399         rmcd=new com.ibm.icu.math.MathContext(2,com.ibm.icu.math.MathContext.SCIENTIFIC,false,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN);\r
1400         (new Test("div337")).ok=((new com.ibm.icu.math.BigDecimal("1.45")).divide(one,rmcd).toString()).equals("1.4");\r
1401         (new Test("div338")).ok=((new com.ibm.icu.math.BigDecimal("1.50")).divide(one,rmcd).toString()).equals("1.5");\r
1402         (new Test("div339")).ok=((new com.ibm.icu.math.BigDecimal("1.55")).divide(one,rmcd).toString()).equals("1.5");\r
1403         rmcd=new com.ibm.icu.math.MathContext(2,com.ibm.icu.math.MathContext.SCIENTIFIC,false,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN);\r
1404         (new Test("div340")).ok=((new com.ibm.icu.math.BigDecimal("1.45")).divide(one,rmcd).toString()).equals("1.4");\r
1405         (new Test("div341")).ok=((new com.ibm.icu.math.BigDecimal("1.50")).divide(one,rmcd).toString()).equals("1.5");\r
1406         (new Test("div342")).ok=((new com.ibm.icu.math.BigDecimal("1.55")).divide(one,rmcd).toString()).equals("1.6");\r
1407         rmcd=new com.ibm.icu.math.MathContext(2,com.ibm.icu.math.MathContext.SCIENTIFIC,false,com.ibm.icu.math.MathContext.ROUND_HALF_UP);\r
1408         (new Test("div343")).ok=((new com.ibm.icu.math.BigDecimal("1.45")).divide(one,rmcd).toString()).equals("1.5");\r
1409         (new Test("div344")).ok=((new com.ibm.icu.math.BigDecimal("1.50")).divide(one,rmcd).toString()).equals("1.5");\r
1410         (new Test("div345")).ok=((new com.ibm.icu.math.BigDecimal("1.55")).divide(one,rmcd).toString()).equals("1.6");\r
1411         rmcd=new com.ibm.icu.math.MathContext(2,com.ibm.icu.math.MathContext.SCIENTIFIC,false,com.ibm.icu.math.MathContext.ROUND_UP);\r
1412         (new Test("div346")).ok=((new com.ibm.icu.math.BigDecimal("1.50")).divide(one,rmcd).toString()).equals("1.5");\r
1413         (new Test("div347")).ok=((new com.ibm.icu.math.BigDecimal("1.51")).divide(one,rmcd).toString()).equals("1.6");\r
1414         (new Test("div348")).ok=((new com.ibm.icu.math.BigDecimal("1.55")).divide(one,rmcd).toString()).equals("1.6");\r
1415 \r
1416         // fixed point...\r
1417         (new Test("div350")).ok=((new com.ibm.icu.math.BigDecimal("1")).divide(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("0");\r
1418         (new Test("div351")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("1");\r
1419         (new Test("div352")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).divide(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("2.4");\r
1420         (new Test("div353")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).divide(new com.ibm.icu.math.BigDecimal("-1")).toString()).equals("-2.4");\r
1421         (new Test("div354")).ok=((new com.ibm.icu.math.BigDecimal("-2.4")).divide(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("-2.4");\r
1422         (new Test("div355")).ok=((new com.ibm.icu.math.BigDecimal("-2.4")).divide(new com.ibm.icu.math.BigDecimal("-1")).toString()).equals("2.4");\r
1423         (new Test("div356")).ok=((new com.ibm.icu.math.BigDecimal("2.40")).divide(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("2.40");\r
1424         (new Test("div357")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).divide(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("2.400");\r
1425         (new Test("div358")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).divide(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("1.2");\r
1426         (new Test("div359")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).divide(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("1.200");\r
1427         (new Test("div360")).ok=((new com.ibm.icu.math.BigDecimal("2.")).divide(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("1");\r
1428         (new Test("div361")).ok=((new com.ibm.icu.math.BigDecimal("20")).divide(new com.ibm.icu.math.BigDecimal("20")).toString()).equals("1");\r
1429         (new Test("div362")).ok=((new com.ibm.icu.math.BigDecimal("187")).divide(new com.ibm.icu.math.BigDecimal("187")).toString()).equals("1");\r
1430         (new Test("div363")).ok=((new com.ibm.icu.math.BigDecimal("5")).divide(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("3");\r
1431         (new Test("div364")).ok=((new com.ibm.icu.math.BigDecimal("5")).divide(new com.ibm.icu.math.BigDecimal("2.0")).toString()).equals("3");\r
1432         (new Test("div365")).ok=((new com.ibm.icu.math.BigDecimal("5")).divide(new com.ibm.icu.math.BigDecimal("2.000")).toString()).equals("3");\r
1433         (new Test("div366")).ok=((new com.ibm.icu.math.BigDecimal("5")).divide(new com.ibm.icu.math.BigDecimal("0.200")).toString()).equals("25");\r
1434         (new Test("div367")).ok=((new com.ibm.icu.math.BigDecimal("5.0")).divide(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("2.5");\r
1435         (new Test("div368")).ok=((new com.ibm.icu.math.BigDecimal("5.0")).divide(new com.ibm.icu.math.BigDecimal("2.0")).toString()).equals("2.5");\r
1436         (new Test("div369")).ok=((new com.ibm.icu.math.BigDecimal("5.0")).divide(new com.ibm.icu.math.BigDecimal("2.000")).toString()).equals("2.5");\r
1437         (new Test("div370")).ok=((new com.ibm.icu.math.BigDecimal("5.0")).divide(new com.ibm.icu.math.BigDecimal("0.200")).toString()).equals("25.0");\r
1438         (new Test("div371")).ok=((new com.ibm.icu.math.BigDecimal("999999999")).divide(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("999999999");\r
1439         (new Test("div372")).ok=((new com.ibm.icu.math.BigDecimal("999999999.4")).divide(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("999999999.4");\r
1440         (new Test("div373")).ok=((new com.ibm.icu.math.BigDecimal("999999999.5")).divide(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("999999999.5");\r
1441         (new Test("div374")).ok=((new com.ibm.icu.math.BigDecimal("999999999.9")).divide(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("999999999.9");\r
1442         (new Test("div375")).ok=((new com.ibm.icu.math.BigDecimal("999999999.999")).divide(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("999999999.999");\r
1443         (new Test("div376")).ok=((new com.ibm.icu.math.BigDecimal("0.0000E-5")).divide(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("0");\r
1444         (new Test("div377")).ok=((new com.ibm.icu.math.BigDecimal("0.000000000")).divide(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("0.000000000");\r
1445 \r
1446         // - Fixed point; explicit scales & rounds [old BigDecimal divides]\r
1447         rhu = com.ibm.icu.math.MathContext.ROUND_HALF_UP;\r
1448         rd = com.ibm.icu.math.MathContext.ROUND_DOWN;\r
1449         (new Test("div001")).ok=((new com.ibm.icu.math.BigDecimal("0")).divide(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("0");\r
1450         (new Test("div002")).ok=((new com.ibm.icu.math.BigDecimal("0")).divide(new com.ibm.icu.math.BigDecimal("3"),rhu).toString()).equals("0");\r
1451         (new Test("div003")).ok=((new com.ibm.icu.math.BigDecimal("0")).divide(new com.ibm.icu.math.BigDecimal("3"),0,rhu).toString()).equals("0");\r
1452         (new Test("div004")).ok=((new com.ibm.icu.math.BigDecimal("0")).divide(new com.ibm.icu.math.BigDecimal("3"),1,rhu).toString()).equals("0.0");\r
1453         (new Test("div005")).ok=((new com.ibm.icu.math.BigDecimal("0")).divide(new com.ibm.icu.math.BigDecimal("3"),2,rhu).toString()).equals("0.00");\r
1454         (new Test("div006")).ok=((new com.ibm.icu.math.BigDecimal("0")).divide(new com.ibm.icu.math.BigDecimal("3"),3,rhu).toString()).equals("0.000");\r
1455         (new Test("div007")).ok=((new com.ibm.icu.math.BigDecimal("0")).divide(new com.ibm.icu.math.BigDecimal("3"),4,rhu).toString()).equals("0.0000");\r
1456         (new Test("div008")).ok=((new com.ibm.icu.math.BigDecimal("1")).divide(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("0");\r
1457         (new Test("div009")).ok=((new com.ibm.icu.math.BigDecimal("1")).divide(new com.ibm.icu.math.BigDecimal("3"),rhu).toString()).equals("0");\r
1458         (new Test("div010")).ok=((new com.ibm.icu.math.BigDecimal("1")).divide(new com.ibm.icu.math.BigDecimal("3"),0,rhu).toString()).equals("0");\r
1459         (new Test("div011")).ok=((new com.ibm.icu.math.BigDecimal("1")).divide(new com.ibm.icu.math.BigDecimal("3"),1,rhu).toString()).equals("0.3");\r
1460         (new Test("div012")).ok=((new com.ibm.icu.math.BigDecimal("1")).divide(new com.ibm.icu.math.BigDecimal("3"),2,rhu).toString()).equals("0.33");\r
1461         (new Test("div013")).ok=((new com.ibm.icu.math.BigDecimal("1")).divide(new com.ibm.icu.math.BigDecimal("3"),3,rhu).toString()).equals("0.333");\r
1462         (new Test("div014")).ok=((new com.ibm.icu.math.BigDecimal("1")).divide(new com.ibm.icu.math.BigDecimal("3"),4,rhu).toString()).equals("0.3333");\r
1463         (new Test("div015")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("1");\r
1464         (new Test("div016")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3"),rhu).toString()).equals("1");\r
1465         (new Test("div017")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3"),0,rhu).toString()).equals("1");\r
1466         (new Test("div018")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3"),1,rhu).toString()).equals("0.7");\r
1467         (new Test("div019")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3"),2,rhu).toString()).equals("0.67");\r
1468         (new Test("div020")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3"),3,rhu).toString()).equals("0.667");\r
1469         (new Test("div021")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3"),4,rhu).toString()).equals("0.6667");\r
1470         \r
1471         (new Test("div030")).ok=((new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("2000"),4,rhu).toString()).equals("0.5000");\r
1472         (new Test("div031")).ok=((new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("2000"),3,rhu).toString()).equals("0.500");\r
1473         (new Test("div032")).ok=((new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("2000"),2,rhu).toString()).equals("0.50");\r
1474         (new Test("div033")).ok=((new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("2000"),1,rhu).toString()).equals("0.5");\r
1475         (new Test("div034")).ok=((new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("2000"),0,rhu).toString()).equals("1");\r
1476         \r
1477         (new Test("div035")).ok=((new com.ibm.icu.math.BigDecimal("100")).divide(new com.ibm.icu.math.BigDecimal("5000"),4,rhu).toString()).equals("0.0200");\r
1478         (new Test("div036")).ok=((new com.ibm.icu.math.BigDecimal("100")).divide(new com.ibm.icu.math.BigDecimal("5000"),3,rhu).toString()).equals("0.020");\r
1479         (new Test("div037")).ok=((new com.ibm.icu.math.BigDecimal("100")).divide(new com.ibm.icu.math.BigDecimal("5000"),2,rhu).toString()).equals("0.02");\r
1480         (new Test("div038")).ok=((new com.ibm.icu.math.BigDecimal("100")).divide(new com.ibm.icu.math.BigDecimal("5000"),1,rhu).toString()).equals("0.0");\r
1481         (new Test("div039")).ok=((new com.ibm.icu.math.BigDecimal("100")).divide(new com.ibm.icu.math.BigDecimal("5000"),0,rhu).toString()).equals("0");\r
1482         \r
1483         (new Test("div040")).ok=((new com.ibm.icu.math.BigDecimal("9.99999999")).divide(new com.ibm.icu.math.BigDecimal("9.77777777"),4,rhu).toString()).equals("1.0227");\r
1484         (new Test("div041")).ok=((new com.ibm.icu.math.BigDecimal("9.9999999")).divide(new com.ibm.icu.math.BigDecimal("9.7777777"),4,rhu).toString()).equals("1.0227");\r
1485         (new Test("div042")).ok=((new com.ibm.icu.math.BigDecimal("9.999999")).divide(new com.ibm.icu.math.BigDecimal("9.777777"),4,rhu).toString()).equals("1.0227");\r
1486         (new Test("div043")).ok=((new com.ibm.icu.math.BigDecimal("9.77777777")).divide(new com.ibm.icu.math.BigDecimal("9.99999999"),4,rhu).toString()).equals("0.9778");\r
1487         (new Test("div044")).ok=((new com.ibm.icu.math.BigDecimal("9.7777777")).divide(new com.ibm.icu.math.BigDecimal("9.9999999"),4,rhu).toString()).equals("0.9778");\r
1488         (new Test("div045")).ok=((new com.ibm.icu.math.BigDecimal("9.777777")).divide(new com.ibm.icu.math.BigDecimal("9.999999"),4,rhu).toString()).equals("0.9778");\r
1489         (new Test("div046")).ok=((new com.ibm.icu.math.BigDecimal("9.77777")).divide(new com.ibm.icu.math.BigDecimal("9.99999"),4,rhu).toString()).equals("0.9778");\r
1490         (new Test("div047")).ok=((new com.ibm.icu.math.BigDecimal("9.7777")).divide(new com.ibm.icu.math.BigDecimal("9.9999"),4,rhu).toString()).equals("0.9778");\r
1491         (new Test("div048")).ok=((new com.ibm.icu.math.BigDecimal("9.777")).divide(new com.ibm.icu.math.BigDecimal("9.999"),4,rhu).toString()).equals("0.9778");\r
1492         (new Test("div049")).ok=((new com.ibm.icu.math.BigDecimal("9.77")).divide(new com.ibm.icu.math.BigDecimal("9.99"),4,rhu).toString()).equals("0.9780");\r
1493         (new Test("div050")).ok=((new com.ibm.icu.math.BigDecimal("9.7")).divide(new com.ibm.icu.math.BigDecimal("9.9"),4,rhu).toString()).equals("0.9798");\r
1494         (new Test("div051")).ok=((new com.ibm.icu.math.BigDecimal("9.")).divide(new com.ibm.icu.math.BigDecimal("9."),4,rhu).toString()).equals("1.0000");\r
1495         \r
1496         (new Test("div060")).ok=((new com.ibm.icu.math.BigDecimal("9.99999999")).divide(new com.ibm.icu.math.BigDecimal("9.77777777"),rhu).toString()).equals("1.02272727");\r
1497         (new Test("div061")).ok=((new com.ibm.icu.math.BigDecimal("9.9999999")).divide(new com.ibm.icu.math.BigDecimal("9.7777777"),rhu).toString()).equals("1.0227273");\r
1498         (new Test("div062")).ok=((new com.ibm.icu.math.BigDecimal("9.999999")).divide(new com.ibm.icu.math.BigDecimal("9.777777"),rhu).toString()).equals("1.022727");\r
1499         (new Test("div063")).ok=((new com.ibm.icu.math.BigDecimal("9.77777777")).divide(new com.ibm.icu.math.BigDecimal("9.99999999"),rhu).toString()).equals("0.97777778");\r
1500         (new Test("div064")).ok=((new com.ibm.icu.math.BigDecimal("9.7777777")).divide(new com.ibm.icu.math.BigDecimal("9.9999999"),rhu).toString()).equals("0.9777778");\r
1501         (new Test("div065")).ok=((new com.ibm.icu.math.BigDecimal("9.777777")).divide(new com.ibm.icu.math.BigDecimal("9.999999"),rhu).toString()).equals("0.977778");\r
1502         (new Test("div066")).ok=((new com.ibm.icu.math.BigDecimal("9.77777")).divide(new com.ibm.icu.math.BigDecimal("9.99999"),rhu).toString()).equals("0.97778");\r
1503         (new Test("div067")).ok=((new com.ibm.icu.math.BigDecimal("9.7777")).divide(new com.ibm.icu.math.BigDecimal("9.9999"),rhu).toString()).equals("0.9778");\r
1504         (new Test("div068")).ok=((new com.ibm.icu.math.BigDecimal("9.777")).divide(new com.ibm.icu.math.BigDecimal("9.999"),rhu).toString()).equals("0.978");\r
1505         (new Test("div069")).ok=((new com.ibm.icu.math.BigDecimal("9.77")).divide(new com.ibm.icu.math.BigDecimal("9.99"),rhu).toString()).equals("0.98");\r
1506         (new Test("div070")).ok=((new com.ibm.icu.math.BigDecimal("9.7")).divide(new com.ibm.icu.math.BigDecimal("9.9"),rhu).toString()).equals("1.0");\r
1507         (new Test("div071")).ok=((new com.ibm.icu.math.BigDecimal("9.")).divide(new com.ibm.icu.math.BigDecimal("9."),rhu).toString()).equals("1");\r
1508         \r
1509         rd=com.ibm.icu.math.MathContext.ROUND_DOWN; // test this is actually being used\r
1510         (new Test("div080")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3"),0,rd).toString()).equals("0");\r
1511         (new Test("div081")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3"),1,rd).toString()).equals("0.6");\r
1512         (new Test("div082")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3"),2,rd).toString()).equals("0.66");\r
1513         (new Test("div083")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3"),3,rd).toString()).equals("0.666");\r
1514         (new Test("div084")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3"),4,rd).toString()).equals("0.6666");\r
1515         \r
1516         ru=com.ibm.icu.math.MathContext.ROUND_UNNECESSARY; // check for some 0 residues\r
1517         (new Test("div090")).ok=((new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("5"),4,ru).toString()).equals("200.0000");\r
1518         (new Test("div091")).ok=((new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("50"),4,ru).toString()).equals("20.0000");\r
1519         (new Test("div092")).ok=((new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("500"),4,ru).toString()).equals("2.0000");\r
1520         (new Test("div093")).ok=((new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("5000"),4,ru).toString()).equals("0.2000");\r
1521         (new Test("div094")).ok=((new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("5000"),3,ru).toString()).equals("0.200");\r
1522         (new Test("div095")).ok=((new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("5000"),2,ru).toString()).equals("0.20");\r
1523         (new Test("div096")).ok=((new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("5000"),1,ru).toString()).equals("0.2");\r
1524 \r
1525         // check rounding explicitly\r
1526         (new Test("div101")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_CEILING).toString()).equals("0.06");\r
1527         (new Test("div102")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_CEILING).toString()).equals("0.1");\r
1528         (new Test("div103")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_CEILING).toString()).equals("1");\r
1529         (new Test("div104")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_DOWN).toString()).equals("0.05");\r
1530         (new Test("div105")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_DOWN).toString()).equals("0.0");\r
1531         (new Test("div106")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_DOWN).toString()).equals("0");\r
1532         (new Test("div107")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_FLOOR).toString()).equals("0.05");\r
1533         (new Test("div108")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_FLOOR).toString()).equals("0.0");\r
1534         (new Test("div109")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_FLOOR).toString()).equals("0");\r
1535         \r
1536         (new Test("div110")).ok=((new com.ibm.icu.math.BigDecimal("0.045")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("0.04");\r
1537         (new Test("div111")).ok=((new com.ibm.icu.math.BigDecimal("0.045")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("0.0");\r
1538         (new Test("div112")).ok=((new com.ibm.icu.math.BigDecimal("0.045")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("0");\r
1539         (new Test("div113")).ok=((new com.ibm.icu.math.BigDecimal("0.050")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("0.05");\r
1540         (new Test("div114")).ok=((new com.ibm.icu.math.BigDecimal("0.050")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("0.0");\r
1541         (new Test("div115")).ok=((new com.ibm.icu.math.BigDecimal("0.050")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("0");\r
1542         (new Test("div116")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("0.05");\r
1543         (new Test("div117")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("0.1");\r
1544         (new Test("div118")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("0");\r
1545         \r
1546         (new Test("div120")).ok=((new com.ibm.icu.math.BigDecimal("0.045")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0.04");\r
1547         (new Test("div121")).ok=((new com.ibm.icu.math.BigDecimal("0.045")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0.0");\r
1548         (new Test("div122")).ok=((new com.ibm.icu.math.BigDecimal("0.045")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0");\r
1549         (new Test("div123")).ok=((new com.ibm.icu.math.BigDecimal("0.050")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0.05");\r
1550         (new Test("div124")).ok=((new com.ibm.icu.math.BigDecimal("0.050")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0.0");\r
1551         (new Test("div125")).ok=((new com.ibm.icu.math.BigDecimal("0.050")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0");\r
1552         (new Test("div126")).ok=((new com.ibm.icu.math.BigDecimal("0.150")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0.15");\r
1553         (new Test("div127")).ok=((new com.ibm.icu.math.BigDecimal("0.150")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0.2");\r
1554         (new Test("div128")).ok=((new com.ibm.icu.math.BigDecimal("0.150")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0");\r
1555         (new Test("div129")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0.06");\r
1556         (new Test("div130")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0.1");\r
1557         (new Test("div131")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0");\r
1558         \r
1559         (new Test("div140")).ok=((new com.ibm.icu.math.BigDecimal("0.045")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.05");\r
1560         (new Test("div141")).ok=((new com.ibm.icu.math.BigDecimal("0.045")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.0");\r
1561         (new Test("div142")).ok=((new com.ibm.icu.math.BigDecimal("0.045")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0");\r
1562         (new Test("div143")).ok=((new com.ibm.icu.math.BigDecimal("0.050")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.05");\r
1563         (new Test("div144")).ok=((new com.ibm.icu.math.BigDecimal("0.050")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.1");\r
1564         (new Test("div145")).ok=((new com.ibm.icu.math.BigDecimal("0.050")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0");\r
1565         (new Test("div146")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.06");\r
1566         (new Test("div147")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.1");\r
1567         (new Test("div148")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0");\r
1568         \r
1569         (new Test("div150")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_UP).toString()).equals("0.06");\r
1570         (new Test("div151")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_UP).toString()).equals("0.1");\r
1571         (new Test("div52.")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_UP).toString()).equals("1");\r
1572 \r
1573         // - error conditions ---\r
1574         try {\r
1575             ten.divide((com.ibm.icu.math.BigDecimal) null);\r
1576             flag = false;\r
1577         } catch (java.lang.NullPointerException $32) {\r
1578             flag = true;\r
1579         }/* checknull */\r
1580         (new Test("div201")).ok = flag;\r
1581         try {\r
1582             ten.divide(ten, (com.ibm.icu.math.MathContext) null);\r
1583             flag = false;\r
1584         } catch (java.lang.NullPointerException $33) {\r
1585             flag = true;\r
1586         }/* checknull2 */\r
1587         (new Test("div202")).ok = flag;\r
1588 \r
1589         try {\r
1590             (new com.ibm.icu.math.BigDecimal("1")).divide(new com.ibm.icu.math.BigDecimal("3"), -8, 0);\r
1591             flag = false;\r
1592         } catch (java.lang.RuntimeException $34) {\r
1593             e = $34;\r
1594             flag = flag & (e.getMessage()).equals("Negative scale: -8");\r
1595         }/* checkscale */\r
1596         (new Test("div203")).ok = flag;\r
1597 \r
1598         try {\r
1599             (new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("5000"), 0, com.ibm.icu.math.MathContext.ROUND_UNNECESSARY);\r
1600             flag = false;\r
1601         } catch (java.lang.ArithmeticException $35) {\r
1602             ae = $35;\r
1603             flag = (ae.getMessage()).equals("Rounding necessary");\r
1604         }/* rounn */\r
1605         (new Test("div204")).ok = flag;\r
1606         try {\r
1607             (new com.ibm.icu.math.BigDecimal("1001")).divide(new com.ibm.icu.math.BigDecimal("10"), 0, com.ibm.icu.math.MathContext.ROUND_UNNECESSARY);\r
1608             flag = false;\r
1609         } catch (java.lang.ArithmeticException $36) {\r
1610             ae = $36;\r
1611             flag = (ae.getMessage()).equals("Rounding necessary");\r
1612         }/* rounn */\r
1613         (new Test("div205")).ok = flag;\r
1614         try {\r
1615             (new com.ibm.icu.math.BigDecimal("1001")).divide(new com.ibm.icu.math.BigDecimal("100"), 1, com.ibm.icu.math.MathContext.ROUND_UNNECESSARY);\r
1616             flag = false;\r
1617         } catch (java.lang.ArithmeticException $37) {\r
1618             ae = $37;\r
1619             flag = (ae.getMessage()).equals("Rounding necessary");\r
1620         }/* rounn */\r
1621         (new Test("div206")).ok = flag;\r
1622         try {\r
1623             (new com.ibm.icu.math.BigDecimal("10001")).divide(\r
1624                     new com.ibm.icu.math.BigDecimal("10000"), 1,\r
1625                     com.ibm.icu.math.MathContext.ROUND_UNNECESSARY);\r
1626             flag = false;\r
1627         } catch (java.lang.ArithmeticException $38) {\r
1628             ae = $38;\r
1629             flag = (ae.getMessage()).equals("Rounding necessary");\r
1630         }/* rounn */\r
1631         (new Test("div207")).ok = flag;\r
1632         try {\r
1633             (new com.ibm.icu.math.BigDecimal("1.0001")).divide(\r
1634                     new com.ibm.icu.math.BigDecimal("1"), 1,\r
1635                     com.ibm.icu.math.MathContext.ROUND_UNNECESSARY);\r
1636                 flag = false;\r
1637         } catch (java.lang.ArithmeticException $39) {\r
1638             ae = $39;\r
1639             flag = (ae.getMessage()).equals("Rounding necessary");\r
1640         }/* rounn */\r
1641         (new Test("div208")).ok = flag;\r
1642 \r
1643         try {\r
1644             (new com.ibm.icu.math.BigDecimal("5"))\r
1645                     .divide(new com.ibm.icu.math.BigDecimal("0.00"));\r
1646             flag = false;\r
1647         } catch (java.lang.ArithmeticException $40) {\r
1648             ae = $40;\r
1649             flag = (ae.getMessage()).equals("Divide by 0");\r
1650         }/* div0 */\r
1651         (new Test("div209")).ok = flag;\r
1652 \r
1653         try {\r
1654             tenlong.divide(com.ibm.icu.math.BigDecimal.ONE, mcld);\r
1655             flag = false;\r
1656         } catch (java.lang.ArithmeticException $41) {\r
1657             ae = $41;\r
1658             flag = (ae.getMessage()).equals("Too many digits:" + " "\r
1659                     + tenlong.toString());\r
1660         }/* checkdigits */\r
1661         (new Test("div210")).ok = flag;\r
1662         try {\r
1663             com.ibm.icu.math.BigDecimal.ONE.divide(tenlong, mcld);\r
1664             flag = false;\r
1665         } catch (java.lang.ArithmeticException $42) {\r
1666             ae = $42;\r
1667             flag = (ae.getMessage()).equals("Too many digits:" + " "\r
1668                     + tenlong.toString());\r
1669         }/* checkdigits */\r
1670         (new Test("div211")).ok = flag;\r
1671 \r
1672         summary("divide");\r
1673     }\r
1674 \r
1675     /* ----------------------------------------------------------------- */\r
1676 \r
1677     /** Test the {@link com.ibm.icu.math.BigDecimal#divideInteger} method. */\r
1678 \r
1679     public void diagdivideInteger() {\r
1680         boolean flag = false;\r
1681         java.lang.ArithmeticException ae = null;\r
1682 \r
1683         (new Test("dvI001")).ok=((new com.ibm.icu.math.BigDecimal("101.3")).divideInteger(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("101");\r
1684         (new Test("dvI002")).ok=((new com.ibm.icu.math.BigDecimal("101.0")).divideInteger(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("101");\r
1685         (new Test("dvI003")).ok=((new com.ibm.icu.math.BigDecimal("101.3")).divideInteger(new com.ibm.icu.math.BigDecimal("3"),mcdef).toString()).equals("33");\r
1686         (new Test("dvI004")).ok=((new com.ibm.icu.math.BigDecimal("101.0")).divideInteger(new com.ibm.icu.math.BigDecimal("3"),mcdef).toString()).equals("33");\r
1687         (new Test("dvI005")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).divideInteger(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("2");\r
1688         (new Test("dvI006")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).divideInteger(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("2");\r
1689         (new Test("dvI007")).ok=((new com.ibm.icu.math.BigDecimal("18")).divideInteger(new com.ibm.icu.math.BigDecimal("18"),mcdef).toString()).equals("1");\r
1690         (new Test("dvI008")).ok=((new com.ibm.icu.math.BigDecimal("1120")).divideInteger(new com.ibm.icu.math.BigDecimal("1000"),mcdef).toString()).equals("1");\r
1691         (new Test("dvI009")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).divideInteger(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("1");\r
1692         (new Test("dvI010")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).divideInteger(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("1");\r
1693         (new Test("dvI011")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).divideInteger(new com.ibm.icu.math.BigDecimal("2.000"),mcdef).toString()).equals("0");\r
1694         (new Test("dvI012")).ok=((new com.ibm.icu.math.BigDecimal("8.005")).divideInteger(new com.ibm.icu.math.BigDecimal("7"),mcdef).toString()).equals("1");\r
1695         (new Test("dvI013")).ok=((new com.ibm.icu.math.BigDecimal("5")).divideInteger(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("2");\r
1696         (new Test("dvI014")).ok=((new com.ibm.icu.math.BigDecimal("0")).divideInteger(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("0");\r
1697         (new Test("dvI015")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).divideInteger(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("0");\r
1698         // MC\r
1699         (new Test("dvI016")).ok = ((new com.ibm.icu.math.BigDecimal("5")).divideInteger(new com.ibm.icu.math.BigDecimal("2"), mce).toString()).equals("2");\r
1700         (new Test("dvI017")).ok = ((new com.ibm.icu.math.BigDecimal("5")).divideInteger(new com.ibm.icu.math.BigDecimal("2"), mc6).toString()).equals("2");\r
1701 \r
1702         // Fixed --\r
1703         (new Test("dvI021")).ok=((new com.ibm.icu.math.BigDecimal("101.3")).divideInteger(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("101");\r
1704         (new Test("dvI022")).ok=((new com.ibm.icu.math.BigDecimal("101.0")).divideInteger(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("101");\r
1705         (new Test("dvI023")).ok=((new com.ibm.icu.math.BigDecimal("101.3")).divideInteger(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("33");\r
1706         (new Test("dvI024")).ok=((new com.ibm.icu.math.BigDecimal("101.0")).divideInteger(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("33");\r
1707         (new Test("dvI025")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).divideInteger(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("2");\r
1708         (new Test("dvI026")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).divideInteger(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("2");\r
1709         (new Test("dvI027")).ok=((new com.ibm.icu.math.BigDecimal("18")).divideInteger(new com.ibm.icu.math.BigDecimal("18")).toString()).equals("1");\r
1710         (new Test("dvI028")).ok=((new com.ibm.icu.math.BigDecimal("1120")).divideInteger(new com.ibm.icu.math.BigDecimal("1000")).toString()).equals("1");\r
1711         (new Test("dvI029")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).divideInteger(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("1");\r
1712         (new Test("dvI030")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).divideInteger(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("1");\r
1713         (new Test("dvI031")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).divideInteger(new com.ibm.icu.math.BigDecimal("2.000")).toString()).equals("0");\r
1714         (new Test("dvI032")).ok=((new com.ibm.icu.math.BigDecimal("8.005")).divideInteger(new com.ibm.icu.math.BigDecimal("7")).toString()).equals("1");\r
1715         (new Test("dvI033")).ok=((new com.ibm.icu.math.BigDecimal("5")).divideInteger(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("2");\r
1716         (new Test("dvI034")).ok=((new com.ibm.icu.math.BigDecimal("0")).divideInteger(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("0");\r
1717         (new Test("dvI035")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).divideInteger(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("0");\r
1718 \r
1719         try {\r
1720             ten.divideInteger((com.ibm.icu.math.BigDecimal) null);\r
1721             flag = false;\r
1722         } catch (java.lang.NullPointerException $43) {\r
1723             flag = true;\r
1724         }/* checknull */\r
1725         (new Test("dvI101")).ok = flag;\r
1726         try {\r
1727             ten.divideInteger(ten, (com.ibm.icu.math.MathContext) null);\r
1728             flag = false;\r
1729         } catch (java.lang.NullPointerException $44) {\r
1730             flag = true;\r
1731         }/* checknull2 */\r
1732         (new Test("dvI102")).ok = flag;\r
1733 \r
1734         try {\r
1735             com.ibm.icu.math.BigDecimal.ONE.divideInteger(tenlong, mcld);\r
1736             flag = false;\r
1737         } catch (java.lang.ArithmeticException $45) {\r
1738             ae = $45;\r
1739             flag = (ae.getMessage()).equals("Too many digits:" + " "\r
1740                     + tenlong.toString());\r
1741         }/* checkdigits */\r
1742         (new Test("dvI103")).ok = flag;\r
1743 \r
1744         try {\r
1745             tenlong.divideInteger(com.ibm.icu.math.BigDecimal.ONE, mcld);\r
1746             flag = false;\r
1747         } catch (java.lang.ArithmeticException $46) {\r
1748             ae = $46;\r
1749             flag = (ae.getMessage()).equals("Too many digits:" + " "\r
1750                     + tenlong.toString());\r
1751         }/* checkdigits */\r
1752         (new Test("dvI104")).ok = flag;\r
1753 \r
1754         summary("divideInteger");\r
1755     }\r
1756 \r
1757     /* ----------------------------------------------------------------- */\r
1758 \r
1759     /** Test the {@link com.ibm.icu.math.BigDecimal#max} method. */\r
1760 \r
1761     public void diagmax() {\r
1762         boolean flag = false;\r
1763         java.lang.ArithmeticException ae = null;\r
1764 \r
1765         // we assume add/subtract test function; this and min just\r
1766         // test existence and test the truth table\r
1767         (new Test("max001")).ok=((new com.ibm.icu.math.BigDecimal("5")).max(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("5");\r
1768         (new Test("max002")).ok=((new com.ibm.icu.math.BigDecimal("5")).max(new com.ibm.icu.math.BigDecimal("5")).toString()).equals("5");\r
1769         (new Test("max003")).ok=((new com.ibm.icu.math.BigDecimal("2")).max(new com.ibm.icu.math.BigDecimal("7")).toString()).equals("7");\r
1770         (new Test("max004")).ok=((new com.ibm.icu.math.BigDecimal("2")).max(new com.ibm.icu.math.BigDecimal("7"),mcdef).toString()).equals("7");\r
1771         (new Test("max005")).ok=((new com.ibm.icu.math.BigDecimal("2")).max(new com.ibm.icu.math.BigDecimal("7"),mc6).toString()).equals("7");\r
1772         (new Test("max006")).ok=((new com.ibm.icu.math.BigDecimal("2E+3")).max(new com.ibm.icu.math.BigDecimal("7")).toString()).equals("2000");\r
1773         (new Test("max007")).ok=((new com.ibm.icu.math.BigDecimal("2E+3")).max(new com.ibm.icu.math.BigDecimal("7"),mc3).toString()).equals("2E+3");\r
1774         (new Test("max008")).ok=((new com.ibm.icu.math.BigDecimal("7")).max(new com.ibm.icu.math.BigDecimal("2E+3")).toString()).equals("2000");\r
1775         (new Test("max009")).ok=((new com.ibm.icu.math.BigDecimal("7")).max(new com.ibm.icu.math.BigDecimal("2E+3"),mc3).toString()).equals("2E+3");\r
1776         try {\r
1777             ten.max((com.ibm.icu.math.BigDecimal) null);\r
1778             flag = false;\r
1779         } catch (java.lang.NullPointerException $47) {\r
1780             flag = true;\r
1781         }/* checknull */\r
1782         (new Test("max010")).ok = flag;\r
1783         try {\r
1784             ten.max(ten, (com.ibm.icu.math.MathContext) null);\r
1785             flag = false;\r
1786         } catch (java.lang.NullPointerException $48) {\r
1787             flag = true;\r
1788         }/* checknull2 */\r
1789         (new Test("max011")).ok = flag;\r
1790         try {\r
1791             tenlong.max(com.ibm.icu.math.BigDecimal.ONE, mcld);\r
1792             flag = false;\r
1793         } catch (java.lang.ArithmeticException $49) {\r
1794             ae = $49;\r
1795             flag = (ae.getMessage()).equals("Too many digits:" + " "\r
1796                     + tenlong.toString());\r
1797         }/* checkdigits */\r
1798         (new Test("max012")).ok = flag;\r
1799         try {\r
1800             com.ibm.icu.math.BigDecimal.ONE.max(tenlong, mcld);\r
1801             flag = false;\r
1802         } catch (java.lang.ArithmeticException $50) {\r
1803             ae = $50;\r
1804             flag = (ae.getMessage()).equals("Too many digits:" + " "\r
1805                     + tenlong.toString());\r
1806         }/* checkdigits */\r
1807         (new Test("max013")).ok = flag;\r
1808         summary("max");\r
1809     }\r
1810 \r
1811     /** Test the {@link com.ibm.icu.math.BigDecimal#min} method. */\r
1812 \r
1813     public void diagmin() {\r
1814         boolean flag = false;\r
1815         com.ibm.icu.math.BigDecimal minx = null;\r
1816         java.lang.ArithmeticException ae = null;\r
1817         // we assume add/subtract test function; this and max just\r
1818         // test existence and test the truth table\r
1819 \r
1820         (new Test("min001")).ok=((new com.ibm.icu.math.BigDecimal("5")).min(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("2");\r
1821         (new Test("min002")).ok=((new com.ibm.icu.math.BigDecimal("5")).min(new com.ibm.icu.math.BigDecimal("5")).toString()).equals("5");\r
1822         (new Test("min003")).ok=((new com.ibm.icu.math.BigDecimal("2")).min(new com.ibm.icu.math.BigDecimal("7")).toString()).equals("2");\r
1823         (new Test("min004")).ok=((new com.ibm.icu.math.BigDecimal("2")).min(new com.ibm.icu.math.BigDecimal("7"),mcdef).toString()).equals("2");\r
1824         (new Test("min005")).ok=((new com.ibm.icu.math.BigDecimal("1")).min(new com.ibm.icu.math.BigDecimal("7"),mc6).toString()).equals("1");\r
1825         (new Test("min006")).ok=((new com.ibm.icu.math.BigDecimal("-2E+3")).min(new com.ibm.icu.math.BigDecimal("7")).toString()).equals("-2000");\r
1826         (new Test("min007")).ok=((new com.ibm.icu.math.BigDecimal("-2E+3")).min(new com.ibm.icu.math.BigDecimal("7"),mc3).toString()).equals("-2E+3");\r
1827         (new Test("min008")).ok=((new com.ibm.icu.math.BigDecimal("7")).min(new com.ibm.icu.math.BigDecimal("-2E+3")).toString()).equals("-2000");\r
1828         (new Test("min009")).ok=((new com.ibm.icu.math.BigDecimal("7")).min(new com.ibm.icu.math.BigDecimal("-2E+3"),mc3).toString()).equals("-2E+3");\r
1829         try {\r
1830             minx = ten;\r
1831             minx.min((com.ibm.icu.math.BigDecimal) null);\r
1832             flag = false;\r
1833         } catch (java.lang.NullPointerException $51) {\r
1834             flag = true;\r
1835         }/* checknull */\r
1836         (new Test("min010")).ok = flag;\r
1837         try {\r
1838             minx = ten;\r
1839             minx.min(ten, (com.ibm.icu.math.MathContext) null);\r
1840             flag = false;\r
1841         } catch (java.lang.NullPointerException $52) {\r
1842             flag = true;\r
1843         }/* checknull2 */\r
1844         (new Test("min011")).ok = flag;\r
1845 \r
1846         try {\r
1847             tenlong.min(com.ibm.icu.math.BigDecimal.ONE, mcld);\r
1848             flag = false;\r
1849         } catch (java.lang.ArithmeticException $53) {\r
1850             ae = $53;\r
1851             flag = (ae.getMessage()).equals("Too many digits:" + " "\r
1852                     + tenlong.toString());\r
1853         }/* checkdigits */\r
1854         (new Test("min012")).ok = flag;\r
1855         try {\r
1856             (new com.ibm.icu.math.BigDecimal(9)).min(tenlong, mcld);\r
1857             flag = false;\r
1858         } catch (java.lang.ArithmeticException $54) {\r
1859             ae = $54;\r
1860             flag = (ae.getMessage()).equals("Too many digits:" + " "\r
1861                     + tenlong.toString());\r
1862         }/* checkdigits */\r
1863         (new Test("min013")).ok = flag;\r
1864         summary("min");\r
1865     }\r
1866 \r
1867     /* ----------------------------------------------------------------- */\r
1868 \r
1869     /** Test the {@link com.ibm.icu.math.BigDecimal#multiply} method. */\r
1870 \r
1871     public void diagmultiply() {\r
1872         boolean flag = false;\r
1873         com.ibm.icu.math.BigDecimal l9;\r
1874         com.ibm.icu.math.BigDecimal l77e;\r
1875         com.ibm.icu.math.BigDecimal l12345;\r
1876         com.ibm.icu.math.BigDecimal edge;\r
1877         com.ibm.icu.math.BigDecimal tenedge;\r
1878         com.ibm.icu.math.BigDecimal hunedge;\r
1879         com.ibm.icu.math.BigDecimal opo;\r
1880         com.ibm.icu.math.BigDecimal d1 = null;\r
1881         com.ibm.icu.math.BigDecimal d2 = null;\r
1882         java.lang.ArithmeticException oe = null;\r
1883         java.lang.ArithmeticException ae = null;\r
1884 \r
1885         (new Test("mul001")).ok=((new com.ibm.icu.math.BigDecimal("2")).multiply(new com.ibm.icu.math.BigDecimal("3"),mcdef).toString()).equals("6");\r
1886         (new Test("mul002")).ok=((new com.ibm.icu.math.BigDecimal("5")).multiply(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("5");\r
1887         (new Test("mul003")).ok=((new com.ibm.icu.math.BigDecimal("5")).multiply(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("10");\r
1888         (new Test("mul004")).ok=((new com.ibm.icu.math.BigDecimal("1.20")).multiply(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("2.40");\r
1889         (new Test("mul005")).ok=((new com.ibm.icu.math.BigDecimal("1.20")).multiply(new com.ibm.icu.math.BigDecimal("0"),mcdef).toString()).equals("0");\r
1890         (new Test("mul006")).ok=((new com.ibm.icu.math.BigDecimal("1.20")).multiply(new com.ibm.icu.math.BigDecimal("-2"),mcdef).toString()).equals("-2.40");\r
1891         (new Test("mul007")).ok=((new com.ibm.icu.math.BigDecimal("-1.20")).multiply(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("-2.40");\r
1892         (new Test("mul008")).ok=((new com.ibm.icu.math.BigDecimal("-1.20")).multiply(new com.ibm.icu.math.BigDecimal("0"),mcdef).toString()).equals("0");\r
1893         (new Test("mul009")).ok=((new com.ibm.icu.math.BigDecimal("-1.20")).multiply(new com.ibm.icu.math.BigDecimal("-2"),mcdef).toString()).equals("2.40");\r
1894         (new Test("mul010")).ok=((new com.ibm.icu.math.BigDecimal("5.09")).multiply(new com.ibm.icu.math.BigDecimal("7.1"),mcdef).toString()).equals("36.139");\r
1895         (new Test("mul011")).ok=((new com.ibm.icu.math.BigDecimal("2.5")).multiply(new com.ibm.icu.math.BigDecimal("4"),mcdef).toString()).equals("10.0");\r
1896         (new Test("mul012")).ok=((new com.ibm.icu.math.BigDecimal("2.50")).multiply(new com.ibm.icu.math.BigDecimal("4"),mcdef).toString()).equals("10.00");\r
1897         (new Test("mul013")).ok=((new com.ibm.icu.math.BigDecimal("1.23456789")).multiply(new com.ibm.icu.math.BigDecimal("1.00000000"),mcdef).toString()).equals("1.23456789");\r
1898         \r
1899         (new Test("mul014")).ok=((new com.ibm.icu.math.BigDecimal("9.999999999")).multiply(new com.ibm.icu.math.BigDecimal("9.999999999"),mcdef).toString()).equals("100.000000");\r
1900         \r
1901         (new Test("mul015")).ok=((new com.ibm.icu.math.BigDecimal("2.50")).multiply(new com.ibm.icu.math.BigDecimal("4"),mcdef).toString()).equals("10.00");\r
1902         (new Test("mul016")).ok=((new com.ibm.icu.math.BigDecimal("2.50")).multiply(new com.ibm.icu.math.BigDecimal("4"),mc6).toString()).equals("10.00");\r
1903         (new Test("mul017")).ok=((new com.ibm.icu.math.BigDecimal("9.999999999")).multiply(new com.ibm.icu.math.BigDecimal("9.999999999"),mc6).toString()).equals("100.000");\r
1904         \r
1905         \r
1906         (new Test("mul020")).ok=((new com.ibm.icu.math.BigDecimal("2")).multiply(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("6");\r
1907         (new Test("mul021")).ok=((new com.ibm.icu.math.BigDecimal("5")).multiply(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("5");\r
1908         (new Test("mul022")).ok=((new com.ibm.icu.math.BigDecimal("5")).multiply(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("10");\r
1909         (new Test("mul023")).ok=((new com.ibm.icu.math.BigDecimal("1.20")).multiply(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("2.40");\r
1910         (new Test("mul024")).ok=((new com.ibm.icu.math.BigDecimal("1.20")).multiply(new com.ibm.icu.math.BigDecimal("0")).toString()).equals("0.00");\r
1911         (new Test("mul025")).ok=((new com.ibm.icu.math.BigDecimal("1.20")).multiply(new com.ibm.icu.math.BigDecimal("-2")).toString()).equals("-2.40");\r
1912         (new Test("mul026")).ok=((new com.ibm.icu.math.BigDecimal("-1.20")).multiply(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("-2.40");\r
1913         (new Test("mul027")).ok=((new com.ibm.icu.math.BigDecimal("-1.20")).multiply(new com.ibm.icu.math.BigDecimal("0")).toString()).equals("0.00");\r
1914         (new Test("mul028")).ok=((new com.ibm.icu.math.BigDecimal("-1.20")).multiply(new com.ibm.icu.math.BigDecimal("-2")).toString()).equals("2.40");\r
1915         (new Test("mul029")).ok=((new com.ibm.icu.math.BigDecimal("5.09")).multiply(new com.ibm.icu.math.BigDecimal("7.1")).toString()).equals("36.139");\r
1916         (new Test("mul030")).ok=((new com.ibm.icu.math.BigDecimal("2.5")).multiply(new com.ibm.icu.math.BigDecimal("4")).toString()).equals("10.0");\r
1917         (new Test("mul031")).ok=((new com.ibm.icu.math.BigDecimal("2.50")).multiply(new com.ibm.icu.math.BigDecimal("4")).toString()).equals("10.00");\r
1918         (new Test("mul032")).ok=((new com.ibm.icu.math.BigDecimal("1.23456789")).multiply(new com.ibm.icu.math.BigDecimal("1.00000000")).toString()).equals("1.2345678900000000");\r
1919         \r
1920         (new Test("mul033")).ok=((new com.ibm.icu.math.BigDecimal("1234.56789")).multiply(new com.ibm.icu.math.BigDecimal("-1000.00000")).toString()).equals("-1234567.8900000000");\r
1921         \r
1922         (new Test("mul034")).ok=((new com.ibm.icu.math.BigDecimal("-1234.56789")).multiply(new com.ibm.icu.math.BigDecimal("1000.00000")).toString()).equals("-1234567.8900000000");\r
1923         \r
1924         (new Test("mul035")).ok=((new com.ibm.icu.math.BigDecimal("9.999999999")).multiply(new com.ibm.icu.math.BigDecimal("9.999999999")).toString()).equals("99.999999980000000001");\r
1925         \r
1926         (new Test("mul036")).ok=((new com.ibm.icu.math.BigDecimal("5.00")).multiply(new com.ibm.icu.math.BigDecimal("1E-3")).toString()).equals("0.00500");\r
1927         (new Test("mul037")).ok=((new com.ibm.icu.math.BigDecimal("00.00")).multiply(new com.ibm.icu.math.BigDecimal("0.000")).toString()).equals("0.00000");\r
1928         (new Test("mul038")).ok=((new com.ibm.icu.math.BigDecimal("00.00")).multiply(new com.ibm.icu.math.BigDecimal("0E-3")).toString()).equals("0.00"); // rhs is '0'\r
1929         // 1999.12.21: next one is a edge case if intermediate longs are used\r
1930         (new Test("mul039")).ok = ((new com.ibm.icu.math.BigDecimal("999999999999")).multiply(new com.ibm.icu.math.BigDecimal("9765625")).toString()).equals("9765624999990234375");\r
1931 \r
1932         l9 = new com.ibm.icu.math.BigDecimal("123456789E+10");\r
1933         l77e = new com.ibm.icu.math.BigDecimal("77E-20");\r
1934         (new Test("mul040")).ok = (l9.multiply(new com.ibm.icu.math.BigDecimal("3456757")).toString()).equals("4267601195732730000000000");\r
1935         (new Test("mul041")).ok = (l9.multiply(new com.ibm.icu.math.BigDecimal("3456757"), mc3).toString()).equals("4.26E+24");\r
1936         (new Test("mul042")).ok = (l9.multiply(l77e).toString()).equals("0.95061727530000000000");\r
1937         (new Test("mul043")).ok = (l9.multiply(l77e, mc3).toString()).equals("0.947");\r
1938         (new Test("mul044")).ok = (l77e.multiply(l9, mc3).toString()).equals("0.947");\r
1939 \r
1940         l12345 = new com.ibm.icu.math.BigDecimal("123.45");\r
1941         (new Test("mul050")).ok=(l12345.multiply(new com.ibm.icu.math.BigDecimal("1e11"),mcdef).toString()).equals("1.2345E+13");\r
1942         (new Test("mul051")).ok=(l12345.multiply(new com.ibm.icu.math.BigDecimal("1e11"),mcs).toString()).equals("1.2345E+13");\r
1943         (new Test("mul052")).ok=(l12345.multiply(new com.ibm.icu.math.BigDecimal("1e+9"),mce).toString()).equals("123.45E+9");\r
1944         (new Test("mul053")).ok=(l12345.multiply(new com.ibm.icu.math.BigDecimal("1e10"),mce).toString()).equals("1.2345E+12");\r
1945         (new Test("mul054")).ok=(l12345.multiply(new com.ibm.icu.math.BigDecimal("1e11"),mce).toString()).equals("12.345E+12");\r
1946         (new Test("mul055")).ok=(l12345.multiply(new com.ibm.icu.math.BigDecimal("1e12"),mce).toString()).equals("123.45E+12");\r
1947         (new Test("mul056")).ok=(l12345.multiply(new com.ibm.icu.math.BigDecimal("1e13"),mce).toString()).equals("1.2345E+15");\r
1948 \r
1949         // test some cases that are close to exponent overflow\r
1950         (new Test("mul060")).ok=(one.multiply(new com.ibm.icu.math.BigDecimal("9e999999999"),mcs).toString()).equals("9E+999999999");\r
1951         (new Test("mul061")).ok=(one.multiply(new com.ibm.icu.math.BigDecimal("9.9e999999999"),mcs).toString()).equals("9.9E+999999999");\r
1952         (new Test("mul062")).ok=(one.multiply(new com.ibm.icu.math.BigDecimal("9.99e999999999"),mcs).toString()).equals("9.99E+999999999");\r
1953         (new Test("mul063")).ok=(ten.multiply(new com.ibm.icu.math.BigDecimal("9e999999999"),mce).toString()).equals("90E+999999999");\r
1954         (new Test("mul064")).ok=(ten.multiply(new com.ibm.icu.math.BigDecimal("9.9e999999999"),mce).toString()).equals("99.0E+999999999");\r
1955         edge = new com.ibm.icu.math.BigDecimal("9.999e999999999");\r
1956         tenedge = ten.multiply(edge, mce);\r
1957         (new Test("mul065")).ok=(tenedge.toString()).equals("99.990E+999999999");\r
1958         hunedge = ten.multiply(tenedge, mce);\r
1959         (new Test("mul066")).ok = (hunedge.toString()).equals("999.900E+999999999");\r
1960         opo = new com.ibm.icu.math.BigDecimal("0.1"); // one tenth\r
1961         (new Test("mul067")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("9e-999999998"),mcs).toString()).equals("9E-999999999");\r
1962         (new Test("mul068")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("99e-999999998"),mcs).toString()).equals("9.9E-999999998");\r
1963         (new Test("mul069")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("999e-999999998"),mcs).toString()).equals("9.99E-999999997");\r
1964 \r
1965         (new Test("mul070")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("9e-999999998"),mce).toString()).equals("9E-999999999");\r
1966         (new Test("mul071")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("99e-999999998"),mce).toString()).equals("99E-999999999");\r
1967         (new Test("mul072")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("999e-999999998"),mce).toString()).equals("999E-999999999");\r
1968         (new Test("mul073")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("999e-999999997"),mce).toString()).equals("9.99E-999999996");\r
1969         (new Test("mul074")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("9999e-999999997"),mce).toString()).equals("99.99E-999999996");\r
1970         (new Test("mul074")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("99999e-999999997"),mce).toString()).equals("999.99E-999999996");\r
1971 \r
1972         // test some intermediate lengths\r
1973         (new Test("mul080")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("123456789"),mcs).toString()).equals("12345678.9");\r
1974         (new Test("mul081")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("12345678901234"),mcs).toString()).equals("1.23456789E+12");\r
1975         (new Test("mul082")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("123456789123456789"),mcs).toString()).equals("1.23456789E+16");\r
1976         (new Test("mul083")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("123456789"),mcfd).toString()).equals("12345678.9");\r
1977         (new Test("mul084")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("12345678901234"),mcfd).toString()).equals("1234567890123.4");\r
1978         (new Test("mul085")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("123456789123456789"),mcfd).toString()).equals("12345678912345678.9");\r
1979 \r
1980         (new Test("mul090")).ok=((new com.ibm.icu.math.BigDecimal("123456789")).multiply(opo,mcs).toString()).equals("12345678.9");\r
1981         (new Test("mul091")).ok=((new com.ibm.icu.math.BigDecimal("12345678901234")).multiply(opo,mcs).toString()).equals("1.23456789E+12");\r
1982         (new Test("mul092")).ok=((new com.ibm.icu.math.BigDecimal("123456789123456789")).multiply(opo,mcs).toString()).equals("1.23456789E+16");\r
1983         (new Test("mul093")).ok=((new com.ibm.icu.math.BigDecimal("123456789")).multiply(opo,mcfd).toString()).equals("12345678.9");\r
1984         (new Test("mul094")).ok=((new com.ibm.icu.math.BigDecimal("12345678901234")).multiply(opo,mcfd).toString()).equals("1234567890123.4");\r
1985         (new Test("mul095")).ok=((new com.ibm.icu.math.BigDecimal("123456789123456789")).multiply(opo,mcfd).toString()).equals("12345678912345678.9");\r
1986 \r
1987         // test some more edge cases and carries\r
1988         (new Test("mul101")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("9")).toString()).equals("81");\r
1989         (new Test("mul102")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("90")).toString()).equals("810");\r
1990         (new Test("mul103")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("900")).toString()).equals("8100");\r
1991         (new Test("mul104")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("9000")).toString()).equals("81000");\r
1992         (new Test("mul105")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("90000")).toString()).equals("810000");\r
1993         (new Test("mul106")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("900000")).toString()).equals("8100000");\r
1994         (new Test("mul107")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("9000000")).toString()).equals("81000000");\r
1995         (new Test("mul108")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("90000000")).toString()).equals("810000000");\r
1996         (new Test("mul109")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("900000000")).toString()).equals("8100000000");\r
1997         (new Test("mul110")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("9000000000")).toString()).equals("81000000000");\r
1998         (new Test("mul111")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("90000000000")).toString()).equals("810000000000");\r
1999         (new Test("mul112")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("900000000000")).toString()).equals("8100000000000");\r
2000         (new Test("mul113")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("9000000000000")).toString()).equals("81000000000000");\r
2001         (new Test("mul114")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("90000000000000")).toString()).equals("810000000000000");\r
2002         (new Test("mul115")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("900000000000000")).toString()).equals("8100000000000000");\r
2003         (new Test("mul116")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("9000000000000000")).toString()).equals("81000000000000000");\r
2004         (new Test("mul117")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("90000000000000000")).toString()).equals("810000000000000000");\r
2005         (new Test("mul118")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("900000000000000000")).toString()).equals("8100000000000000000");\r
2006         (new Test("mul119")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("9000000000000000000")).toString()).equals("81000000000000000000");\r
2007         (new Test("mul120")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("90000000000000000000")).toString()).equals("810000000000000000000");\r
2008         (new Test("mul121")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("900000000000000000000")).toString()).equals("8100000000000000000000");\r
2009         (new Test("mul122")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("9000000000000000000000")).toString()).equals("81000000000000000000000");\r
2010         (new Test("mul123")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("90000000000000000000000")).toString()).equals("810000000000000000000000");\r
2011         // test some more edge cases without carries\r
2012         (new Test("mul131")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("9");\r
2013         (new Test("mul132")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("30")).toString()).equals("90");\r
2014         (new Test("mul133")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("300")).toString()).equals("900");\r
2015         (new Test("mul134")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("3000")).toString()).equals("9000");\r
2016         (new Test("mul135")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("30000")).toString()).equals("90000");\r
2017         (new Test("mul136")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("300000")).toString()).equals("900000");\r
2018         (new Test("mul137")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("3000000")).toString()).equals("9000000");\r
2019         (new Test("mul138")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("30000000")).toString()).equals("90000000");\r
2020         (new Test("mul139")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("300000000")).toString()).equals("900000000");\r
2021         (new Test("mul140")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("3000000000")).toString()).equals("9000000000");\r
2022         (new Test("mul141")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("30000000000")).toString()).equals("90000000000");\r
2023         (new Test("mul142")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("300000000000")).toString()).equals("900000000000");\r
2024         (new Test("mul143")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("3000000000000")).toString()).equals("9000000000000");\r
2025         (new Test("mul144")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("30000000000000")).toString()).equals("90000000000000");\r
2026         (new Test("mul145")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("300000000000000")).toString()).equals("900000000000000");\r
2027         (new Test("mul146")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("3000000000000000")).toString()).equals("9000000000000000");\r
2028         (new Test("mul147")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("30000000000000000")).toString()).equals("90000000000000000");\r
2029         (new Test("mul148")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("300000000000000000")).toString()).equals("900000000000000000");\r
2030         (new Test("mul149")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("3000000000000000000")).toString()).equals("9000000000000000000");\r
2031         (new Test("mul150")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("30000000000000000000")).toString()).equals("90000000000000000000");\r
2032         (new Test("mul151")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("300000000000000000000")).toString()).equals("900000000000000000000");\r
2033         (new Test("mul152")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("3000000000000000000000")).toString()).equals("9000000000000000000000");\r
2034         (new Test("mul153")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("30000000000000000000000")).toString()).equals("90000000000000000000000");\r
2035 \r
2036         try {\r
2037             ten.multiply((com.ibm.icu.math.BigDecimal) null);\r
2038             flag = false;\r
2039         } catch (java.lang.NullPointerException $55) {\r
2040             flag = true;\r
2041         }/* checknull */\r
2042         (new Test("mul200")).ok = flag;\r
2043         try {\r
2044             ten.multiply(ten, (com.ibm.icu.math.MathContext) null);\r
2045             flag = false;\r
2046         } catch (java.lang.NullPointerException $56) {\r
2047             flag = true;\r
2048         }/* checknull2 */\r
2049         (new Test("mul201")).ok = flag;\r
2050 \r
2051         try {\r
2052             d1 = new com.ibm.icu.math.BigDecimal("-1.23456789012345E-0");\r
2053             d2 = new com.ibm.icu.math.BigDecimal("9E+999999999");\r
2054             d1.multiply(d2, mcdef); // marginal overflow\r
2055             flag = false;\r
2056         } catch (java.lang.ArithmeticException $57) {\r
2057             oe = $57;\r
2058             flag = (oe.getMessage()).equals("Exponent Overflow: 1000000000");\r
2059         }/* checkover */\r
2060         (new Test("mul202")).ok = flag;\r
2061         try {\r
2062             d1 = new com.ibm.icu.math.BigDecimal("112");\r
2063             d2 = new com.ibm.icu.math.BigDecimal("9E+999999999");\r
2064             d1.multiply(d2, mce); // marginal overflow, engineering\r
2065             flag = false;\r
2066         } catch (java.lang.ArithmeticException $58) {\r
2067             oe = $58;\r
2068             flag = (oe.getMessage()).equals("Exponent Overflow: 1000000002");\r
2069         }/* checkover */\r
2070         (new Test("mul203")).ok = flag;\r
2071 \r
2072         try {\r
2073             d1 = new com.ibm.icu.math.BigDecimal("0.9");\r
2074             d2 = new com.ibm.icu.math.BigDecimal("1E-999999999");\r
2075             d1.multiply(d2, mcdef); // marginal negative overflow\r
2076             flag = false;\r
2077         } catch (java.lang.ArithmeticException $59) {\r
2078             oe = $59;\r
2079             flag = (oe.getMessage()).equals("Exponent Overflow: -1000000000");\r
2080         }/* checkover */\r
2081         (new Test("mul204")).ok = flag;\r
2082         try {\r
2083             d1 = new com.ibm.icu.math.BigDecimal("0.9");\r
2084             d2 = new com.ibm.icu.math.BigDecimal("1E-999999999");\r
2085             d1.multiply(d2, mce); // marginal negative overflow,\r
2086                                     // engineering\r
2087             flag = false;\r
2088         } catch (java.lang.ArithmeticException $60) {\r
2089             oe = $60;\r
2090             flag = (oe.getMessage()).equals("Exponent Overflow: -1000000002");\r
2091         }/* checkover */\r
2092         (new Test("mul205")).ok = flag;\r
2093 \r
2094         try {\r
2095             tenlong.multiply(com.ibm.icu.math.BigDecimal.ONE, mcld);\r
2096             flag = false;\r
2097         } catch (java.lang.ArithmeticException $61) {\r
2098             ae = $61;\r
2099             flag = (ae.getMessage()).equals("Too many digits:" + " "\r
2100                     + tenlong.toString());\r
2101         }/* checkdigits */\r
2102         (new Test("mul206")).ok = flag;\r
2103         try {\r
2104             com.ibm.icu.math.BigDecimal.TEN.multiply(tenlong, mcld);\r
2105             flag = false;\r
2106         } catch (java.lang.ArithmeticException $62) {\r
2107             ae = $62;\r
2108             flag = (ae.getMessage()).equals("Too many digits:" + " "\r
2109                     + tenlong.toString());\r
2110         }/* checkdigits */\r
2111         (new Test("mul207")).ok = flag;\r
2112 \r
2113         summary("multiply");\r
2114     }\r
2115 \r
2116     /* ----------------------------------------------------------------- */\r
2117 \r
2118     /** Test the {@link com.ibm.icu.math.BigDecimal#negate} method. */\r
2119 \r
2120     public void diagnegate() {\r
2121         boolean flag = false;\r
2122         java.lang.ArithmeticException ae = null;\r
2123 \r
2124         (new Test("neg001")).ok=((new com.ibm.icu.math.BigDecimal("2")).negate().toString()).equals("-2");\r
2125         (new Test("neg002")).ok=((new com.ibm.icu.math.BigDecimal("-2")).negate().toString()).equals("2");\r
2126         (new Test("neg003")).ok=((new com.ibm.icu.math.BigDecimal("2.00")).negate(mcdef).toString()).equals("-2.00");\r
2127         (new Test("neg004")).ok=((new com.ibm.icu.math.BigDecimal("-2.00")).negate(mcdef).toString()).equals("2.00");\r
2128         (new Test("neg005")).ok=((new com.ibm.icu.math.BigDecimal("0")).negate(mcdef).toString()).equals("0");\r
2129         (new Test("neg006")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).negate(mcdef).toString()).equals("0");\r
2130         (new Test("neg007")).ok=((new com.ibm.icu.math.BigDecimal("00.0")).negate(mcdef).toString()).equals("0");\r
2131         (new Test("neg008")).ok=((new com.ibm.icu.math.BigDecimal("00")).negate(mcdef).toString()).equals("0");\r
2132         \r
2133         (new Test("neg010")).ok=((new com.ibm.icu.math.BigDecimal("2.00")).negate().toString()).equals("-2.00");\r
2134         (new Test("neg011")).ok=((new com.ibm.icu.math.BigDecimal("-2.00")).negate().toString()).equals("2.00");\r
2135         (new Test("neg012")).ok=((new com.ibm.icu.math.BigDecimal("0")).negate().toString()).equals("0");\r
2136         (new Test("neg013")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).negate().toString()).equals("0.00");\r
2137         (new Test("neg014")).ok=((new com.ibm.icu.math.BigDecimal("00.0")).negate().toString()).equals("0.0");\r
2138         (new Test("neg015")).ok=((new com.ibm.icu.math.BigDecimal("00.00")).negate().toString()).equals("0.00");\r
2139         (new Test("neg016")).ok=((new com.ibm.icu.math.BigDecimal("00")).negate().toString()).equals("0");\r
2140         \r
2141         (new Test("neg020")).ok=((new com.ibm.icu.math.BigDecimal("-2000000")).negate().toString()).equals("2000000");\r
2142         (new Test("neg021")).ok=((new com.ibm.icu.math.BigDecimal("-2000000")).negate(mcdef).toString()).equals("2000000");\r
2143         (new Test("neg022")).ok=((new com.ibm.icu.math.BigDecimal("-2000000")).negate(mc6).toString()).equals("2.00000E+6");\r
2144         (new Test("neg023")).ok=((new com.ibm.icu.math.BigDecimal("2000000")).negate(mc6).toString()).equals("-2.00000E+6");\r
2145 \r
2146         try {\r
2147             ten.negate((com.ibm.icu.math.MathContext) null);\r
2148             flag = false;\r
2149         } catch (java.lang.NullPointerException $63) {\r
2150             flag = true;\r
2151         }/* checknull */\r
2152         (new Test("neg100")).ok = flag;\r
2153 \r
2154         try {\r
2155             tenlong.negate(mcld);\r
2156             flag = false;\r
2157         } catch (java.lang.ArithmeticException $64) {\r
2158             ae = $64;\r
2159             flag = (ae.getMessage()).equals("Too many digits:" + " "\r
2160                     + tenlong.toString());\r
2161         }/* checkdigits */\r
2162         (new Test("neg101")).ok = flag;\r
2163         summary("negate");\r
2164     }\r
2165 \r
2166     /* ----------------------------------------------------------------- */\r
2167 \r
2168     /** Test the {@link com.ibm.icu.math.BigDecimal#plus} method. */\r
2169 \r
2170     public void diagplus() {\r
2171         boolean flag = false;\r
2172         com.ibm.icu.math.MathContext mche1;\r
2173         java.lang.ArithmeticException ae = null;\r
2174 \r
2175         (new Test("plu001")).ok=((new com.ibm.icu.math.BigDecimal("2")).plus(mcdef).toString()).equals("2");\r
2176         (new Test("plu002")).ok=((new com.ibm.icu.math.BigDecimal("-2")).plus(mcdef).toString()).equals("-2");\r
2177         (new Test("plu003")).ok=((new com.ibm.icu.math.BigDecimal("2.00")).plus(mcdef).toString()).equals("2.00");\r
2178         (new Test("plu004")).ok=((new com.ibm.icu.math.BigDecimal("-2.00")).plus(mcdef).toString()).equals("-2.00");\r
2179         (new Test("plu005")).ok=((new com.ibm.icu.math.BigDecimal("0")).plus(mcdef).toString()).equals("0");\r
2180         (new Test("plu006")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).plus(mcdef).toString()).equals("0");\r
2181         (new Test("plu007")).ok=((new com.ibm.icu.math.BigDecimal("00.0")).plus(mcdef).toString()).equals("0");\r
2182         (new Test("plu008")).ok=((new com.ibm.icu.math.BigDecimal("00")).plus(mcdef).toString()).equals("0");\r
2183         \r
2184         (new Test("plu010")).ok=((new com.ibm.icu.math.BigDecimal("2")).plus().toString()).equals("2");\r
2185         (new Test("plu011")).ok=((new com.ibm.icu.math.BigDecimal("-2")).plus().toString()).equals("-2");\r
2186         (new Test("plu012")).ok=((new com.ibm.icu.math.BigDecimal("2.00")).plus().toString()).equals("2.00");\r
2187         (new Test("plu013")).ok=((new com.ibm.icu.math.BigDecimal("-2.00")).plus().toString()).equals("-2.00");\r
2188         (new Test("plu014")).ok=((new com.ibm.icu.math.BigDecimal("0")).plus().toString()).equals("0");\r
2189         (new Test("plu015")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).plus().toString()).equals("0.00");\r
2190         (new Test("plu016")).ok=((new com.ibm.icu.math.BigDecimal("00.0")).plus().toString()).equals("0.0");\r
2191         (new Test("plu017")).ok=((new com.ibm.icu.math.BigDecimal("00.00")).plus().toString()).equals("0.00");\r
2192         (new Test("plu018")).ok=((new com.ibm.icu.math.BigDecimal("00")).plus().toString()).equals("0");\r
2193         \r
2194         (new Test("plu020")).ok=((new com.ibm.icu.math.BigDecimal("-2000000")).plus().toString()).equals("-2000000");\r
2195         (new Test("plu021")).ok=((new com.ibm.icu.math.BigDecimal("-2000000")).plus(mcdef).toString()).equals("-2000000");\r
2196         (new Test("plu022")).ok=((new com.ibm.icu.math.BigDecimal("-2000000")).plus(mc6).toString()).equals("-2.00000E+6");\r
2197         (new Test("plu023")).ok=((new com.ibm.icu.math.BigDecimal("2000000")).plus(mc6).toString()).equals("2.00000E+6");\r
2198 \r
2199         // try some exotic but silly rounding [format checks more varieties]\r
2200         // [this mostly ensures we can set up and pass the setting]\r
2201         mche1=new com.ibm.icu.math.MathContext(1,com.ibm.icu.math.MathContext.SCIENTIFIC,false,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN);\r
2202         (new Test("plu030")).ok=((new com.ibm.icu.math.BigDecimal("0.24")).plus(mche1).toString()).equals("0.2");\r
2203         (new Test("plu031")).ok=((new com.ibm.icu.math.BigDecimal("0.25")).plus(mche1).toString()).equals("0.2");\r
2204         (new Test("plu032")).ok=((new com.ibm.icu.math.BigDecimal("0.26")).plus(mche1).toString()).equals("0.3");\r
2205         (new Test("plu033")).ok=((new com.ibm.icu.math.BigDecimal("0.14")).plus(mche1).toString()).equals("0.1");\r
2206         (new Test("plu034")).ok=((new com.ibm.icu.math.BigDecimal("0.15")).plus(mche1).toString()).equals("0.2");\r
2207         (new Test("plu035")).ok=((new com.ibm.icu.math.BigDecimal("0.16")).plus(mche1).toString()).equals("0.2");\r
2208         \r
2209         (new Test("plu040")).ok=((new com.ibm.icu.math.BigDecimal("0.251")).plus(mche1).toString()).equals("0.3");\r
2210         (new Test("plu041")).ok=((new com.ibm.icu.math.BigDecimal("0.151")).plus(mche1).toString()).equals("0.2");\r
2211         \r
2212         (new Test("plu050")).ok=((new com.ibm.icu.math.BigDecimal("-0.24")).plus(mche1).toString()).equals("-0.2");\r
2213         (new Test("plu051")).ok=((new com.ibm.icu.math.BigDecimal("-0.25")).plus(mche1).toString()).equals("-0.2");\r
2214         (new Test("plu052")).ok=((new com.ibm.icu.math.BigDecimal("-0.26")).plus(mche1).toString()).equals("-0.3");\r
2215         (new Test("plu053")).ok=((new com.ibm.icu.math.BigDecimal("-0.14")).plus(mche1).toString()).equals("-0.1");\r
2216         (new Test("plu054")).ok=((new com.ibm.icu.math.BigDecimal("-0.15")).plus(mche1).toString()).equals("-0.2");\r
2217         (new Test("plu055")).ok=((new com.ibm.icu.math.BigDecimal("-0.16")).plus(mche1).toString()).equals("-0.2");\r
2218 \r
2219         // more fixed, potential LHS swaps if done by add 0\r
2220         (new Test("plu060")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-10")).plus().toString()).equals("-0.0000056267");\r
2221         (new Test("plu061")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-5")).plus().toString()).equals("-0.56267");\r
2222         (new Test("plu062")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-2")).plus().toString()).equals("-562.67");\r
2223         (new Test("plu063")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-1")).plus().toString()).equals("-5626.7");\r
2224         (new Test("plu065")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-0")).plus().toString()).equals("-56267");\r
2225 \r
2226         try {\r
2227             ten.plus((com.ibm.icu.math.MathContext) null);\r
2228             flag = false;\r
2229         } catch (java.lang.NullPointerException $65) {\r
2230             flag = true;\r
2231         }/* checknull */\r
2232         (new Test("plu100")).ok = flag;\r
2233 \r
2234         try {\r
2235             tenlong.plus(mcld);\r
2236             flag = false;\r
2237         } catch (java.lang.ArithmeticException $66) {\r
2238             ae = $66;\r
2239             flag = (ae.getMessage()).equals("Too many digits:" + " "\r
2240                     + tenlong.toString());\r
2241         }/* checkdigits */\r
2242         (new Test("plu101")).ok = flag;\r
2243         summary("plus");\r
2244     }\r
2245 \r
2246     /* ----------------------------------------------------------------- */\r
2247 \r
2248     /** Test the {@link com.ibm.icu.math.BigDecimal#pow} method. */\r
2249 \r
2250     public void diagpow() {\r
2251         boolean flag;\r
2252         com.ibm.icu.math.BigDecimal x;\r
2253         com.ibm.icu.math.BigDecimal temp;\r
2254         int n = 0;\r
2255         com.ibm.icu.math.BigDecimal vx;\r
2256         com.ibm.icu.math.BigDecimal vn;\r
2257         java.lang.ArithmeticException ae = null;\r
2258         flag = true;\r
2259         (new Test("pow001")).ok="1".equals((new com.ibm.icu.math.BigDecimal("0.3")).pow(new com.ibm.icu.math.BigDecimal("0"),mcdef).toString());\r
2260         (new Test("pow002")).ok="0.3".equals((new com.ibm.icu.math.BigDecimal("0.3")).pow(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString());\r
2261         (new Test("pow003")).ok="0.3".equals((new com.ibm.icu.math.BigDecimal("0.3")).pow(new com.ibm.icu.math.BigDecimal("1.00"),mcdef).toString());\r
2262         (new Test("pow004")).ok="0.09".equals((new com.ibm.icu.math.BigDecimal("0.3")).pow(new com.ibm.icu.math.BigDecimal("2.00"),mcdef).toString());\r
2263         (new Test("pow005")).ok="0.09".equals((new com.ibm.icu.math.BigDecimal("0.3")).pow(new com.ibm.icu.math.BigDecimal("2.000000000"),mcdef).toString());\r
2264         (new Test("pow006")).ok=("1E-8").equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-8"),mcdef).toString());\r
2265         (new Test("pow007")).ok=("1E-7").equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-7"),mcdef).toString());\r
2266         (new Test("pow008")).ok="0.000001".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-6"),mcdef).toString());\r
2267         (new Test("pow009")).ok="0.00001".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-5"),mcdef).toString());\r
2268         (new Test("pow010")).ok="0.0001".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-4"),mcdef).toString());\r
2269         (new Test("pow011")).ok="0.001".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-3"),mcdef).toString());\r
2270         (new Test("pow012")).ok="0.01".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-2"),mcdef).toString());\r
2271         (new Test("pow013")).ok="0.1".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-1"),mcdef).toString());\r
2272         (new Test("pow014")).ok="1".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("0"),mcdef).toString());\r
2273         (new Test("pow015")).ok="10".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString());\r
2274         (new Test("pow016")).ok="100000000".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("8"),mcdef).toString());\r
2275         (new Test("pow017")).ok=("1E+9").equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("9"),mcdef).toString());\r
2276         (new Test("pow018")).ok=("1E+99").equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("99"),mcdef).toString());\r
2277         (new Test("pow019")).ok=("1E+999999999").equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("999999999"),mcdef).toString());\r
2278         (new Test("pow020")).ok=("1E+999999998").equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("999999998"),mcdef).toString());\r
2279         (new Test("pow021")).ok=("1E+999999997").equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("999999997"),mcdef).toString());\r
2280         (new Test("pow022")).ok=("1E+333333333").equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("333333333"),mcdef).toString());\r
2281         (new Test("pow023")).ok=("1E-333333333").equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-333333333"),mcdef).toString());\r
2282         (new Test("pow024")).ok=("1E-999999998").equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-999999998"),mcdef).toString());\r
2283         (new Test("pow025")).ok=("1E-999999999").equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-999999999"),mcdef).toString());\r
2284         (new Test("pow026")).ok="0.5".equals((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("-1"),mcdef).toString());\r
2285         (new Test("pow027")).ok="0.25".equals((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("-2"),mcdef).toString());\r
2286         (new Test("pow028")).ok="0.0625".equals((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("-4"),mcdef).toString());\r
2287         \r
2288         (new Test("pow050")).ok=((new com.ibm.icu.math.BigDecimal("0")).pow(new com.ibm.icu.math.BigDecimal("0"),mcdef).toString()).equals("1");\r
2289         (new Test("pow051")).ok=((new com.ibm.icu.math.BigDecimal("0")).pow(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("0");\r
2290         (new Test("pow052")).ok=((new com.ibm.icu.math.BigDecimal("0")).pow(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("0");\r
2291         (new Test("pow053")).ok=((new com.ibm.icu.math.BigDecimal("1")).pow(new com.ibm.icu.math.BigDecimal("0"),mcdef).toString()).equals("1");\r
2292         (new Test("pow054")).ok=((new com.ibm.icu.math.BigDecimal("1")).pow(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("1");\r
2293         (new Test("pow055")).ok=((new com.ibm.icu.math.BigDecimal("1")).pow(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("1");\r
2294         (new Test("pow056")).ok=((new com.ibm.icu.math.BigDecimal("0.3")).pow(new com.ibm.icu.math.BigDecimal("0"),mcdef).toString()).equals("1");\r
2295         (new Test("pow057")).ok=((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("999999999"),mcdef).toString()).equals("1E+999999999");\r
2296         (new Test("pow058")).ok=((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("999999998"),mcdef).toString()).equals("1E+999999998");\r
2297         (new Test("pow059")).ok=((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("999999997"),mcdef).toString()).equals("1E+999999997");\r
2298         (new Test("pow060")).ok=((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("333333333"),mcdef).toString()).equals("1E+333333333");\r
2299         (new Test("pow061")).ok=((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("77"),mcdef).toString()).equals("1E+77");\r
2300         (new Test("pow062")).ok=((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("22"),mcdef).toString()).equals("1E+22");\r
2301         (new Test("pow063")).ok=((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-77"),mcdef).toString()).equals("1E-77");\r
2302         (new Test("pow064")).ok=((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-22"),mcdef).toString()).equals("1E-22");\r
2303         (new Test("pow065")).ok=((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("-1"),mcdef).toString()).equals("0.5");\r
2304         (new Test("pow066")).ok=((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("-2"),mcdef).toString()).equals("0.25");\r
2305         (new Test("pow067")).ok=((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("-4"),mcdef).toString()).equals("0.0625");\r
2306         (new Test("pow068")).ok=((new com.ibm.icu.math.BigDecimal("6.0")).pow(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("36");\r
2307         (new Test("pow069")).ok=((new com.ibm.icu.math.BigDecimal("-3")).pow(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("9");/* from book */\r
2308         (new Test("pow070")).ok=((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("2"),mcdef).pow(new com.ibm.icu.math.BigDecimal("3"),mcdef).toString()).equals("64");/* from book */\r
2309 \r
2310         // 1998.12.14 Next test removed as pow() no longer rounds RHS [as per ANSI]\r
2311         // Test('pow071').ok=BigDecimal('2').pow(BigDecimal('2.000000001'),mcdef).toString == '4'/* check input rounding */\r
2312 \r
2313         /* General tests from original Rexx diagnostics */\r
2314         x = new com.ibm.icu.math.BigDecimal("0.5");\r
2315         temp = com.ibm.icu.math.BigDecimal.ONE;\r
2316         flag = true;\r
2317         {\r
2318             n = 1;\r
2319             for (; n <= 10; n++) {\r
2320                 temp = temp.multiply(x).divide(com.ibm.icu.math.BigDecimal.ONE);\r
2321                 flag = flag\r
2322                         & (x.pow(new com.ibm.icu.math.BigDecimal(n), mcdef)\r
2323                                 .toString()).equals(temp.toString());\r
2324             }\r
2325         }/* n */\r
2326         (new Test("pow080")).ok = flag;\r
2327 \r
2328         x = new com.ibm.icu.math.BigDecimal("2");\r
2329         temp = com.ibm.icu.math.BigDecimal.ONE;\r
2330         flag = true;\r
2331         {\r
2332             n = 1;\r
2333             for (; n <= 29; n++) {\r
2334                 temp = temp.multiply(x).divide(com.ibm.icu.math.BigDecimal.ONE);\r
2335                 flag=flag&(x.pow(new com.ibm.icu.math.BigDecimal(n),mcdef).toString()).equals(temp.toString());\r
2336                 flag=flag&(x.pow(new com.ibm.icu.math.BigDecimal((int)-n),mcdef).toString()).equals(com.ibm.icu.math.BigDecimal.ONE.divide(temp,mcdef).toString());\r
2337                 /* Note that rounding errors are possible for larger "n" */\r
2338                 /* due to the information content of the exponent */\r
2339             }\r
2340         }/* n */\r
2341         (new Test("pow081")).ok = flag;\r
2342 \r
2343         /* The Vienna case. Checks both setup and 1/acc working precision */\r
2344         // Modified 1998.12.14 as RHS no longer rounded before use (must fit)\r
2345         // Modified 1990.02.04 as LHS is now rounded (instead of truncated to guard)\r
2346         vx=new com.ibm.icu.math.BigDecimal("123456789E+10"); // lhs .. rounded to 1.23E+18\r
2347         vn=new com.ibm.icu.math.BigDecimal("-1.23000e+2"); // rhs .. [was: -1.23455e+2, rounds to -123]\r
2348         (new Test("pow090")).ok=(vx.pow(vn,mc3).toString()).equals("8.74E-2226");\r
2349 \r
2350         // - fixed point versions ---\r
2351         (new Test("pow101")).ok="1".equals((new com.ibm.icu.math.BigDecimal("0.3")).pow(new com.ibm.icu.math.BigDecimal("0")).toString());\r
2352         (new Test("pow102")).ok="0.3".equals((new com.ibm.icu.math.BigDecimal("0.3")).pow(new com.ibm.icu.math.BigDecimal("1")).toString());\r
2353         (new Test("pow103")).ok="0.3".equals((new com.ibm.icu.math.BigDecimal("0.3")).pow(new com.ibm.icu.math.BigDecimal("1.00")).toString());\r
2354         (new Test("pow104")).ok="0.09".equals((new com.ibm.icu.math.BigDecimal("0.3")).pow(new com.ibm.icu.math.BigDecimal("2")).toString());\r
2355         (new Test("pow105")).ok="0.09".equals((new com.ibm.icu.math.BigDecimal("0.3")).pow(new com.ibm.icu.math.BigDecimal("2.00")).toString());\r
2356         (new Test("pow106")).ok="10".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("1")).toString());\r
2357         (new Test("pow107")).ok="100000000".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("8")).toString());\r
2358         (new Test("pow108")).ok="1000000000".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("9")).toString());\r
2359         (new Test("pow109")).ok="10000000000".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("10")).toString());\r
2360         (new Test("pow110")).ok="1".equals((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("0")).toString());\r
2361         (new Test("pow111")).ok="16".equals((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("4")).toString());\r
2362         (new Test("pow112")).ok="256".equals((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("8")).toString());\r
2363         (new Test("pow113")).ok="1024".equals((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("10")).toString());\r
2364         (new Test("pow114")).ok="1.0510100501".equals((new com.ibm.icu.math.BigDecimal("1.01")).pow(new com.ibm.icu.math.BigDecimal("5")).toString());\r
2365 \r
2366         (new Test("pow120")).ok=((new com.ibm.icu.math.BigDecimal("0")).pow(new com.ibm.icu.math.BigDecimal("0")).toString()).equals("1");\r
2367         (new Test("pow121")).ok=((new com.ibm.icu.math.BigDecimal("0")).pow(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("0");\r
2368         (new Test("pow122")).ok=((new com.ibm.icu.math.BigDecimal("0")).pow(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("0");\r
2369         (new Test("pow123")).ok=((new com.ibm.icu.math.BigDecimal("1")).pow(new com.ibm.icu.math.BigDecimal("0")).toString()).equals("1");\r
2370         (new Test("pow144")).ok=((new com.ibm.icu.math.BigDecimal("1")).pow(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("1");\r
2371         (new Test("pow125")).ok=((new com.ibm.icu.math.BigDecimal("1")).pow(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("1");\r
2372         (new Test("pow126")).ok=((new com.ibm.icu.math.BigDecimal("0.3")).pow(new com.ibm.icu.math.BigDecimal("0")).toString()).equals("1");\r
2373         (new Test("pow127")).ok=((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("7")).toString()).equals("10000000");\r
2374         (new Test("pow128")).ok=((new com.ibm.icu.math.BigDecimal("6.0")).pow(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("36.00");\r
2375         (new Test("pow129")).ok=((new com.ibm.icu.math.BigDecimal("6.00")).pow(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("36.0000");\r
2376         (new Test("pow130")).ok=((new com.ibm.icu.math.BigDecimal("6.000")).pow(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("36.000000");\r
2377         (new Test("pow131")).ok=((new com.ibm.icu.math.BigDecimal("-3")).pow(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("9");\r
2378         (new Test("pow132")).ok=((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("64");\r
2379 \r
2380         /* errors */\r
2381         try {\r
2382             ten.pow((com.ibm.icu.math.BigDecimal) null);\r
2383             flag = false;\r
2384         } catch (java.lang.NullPointerException $67) {\r
2385             flag = true;\r
2386         }/* checknull */\r
2387         (new Test("pow150")).ok = flag;\r
2388         try {\r
2389             ten.pow(ten, (com.ibm.icu.math.MathContext) null);\r
2390             flag = false;\r
2391         } catch (java.lang.NullPointerException $68) {\r
2392             flag = true;\r
2393         }/* checknull2 */\r
2394         (new Test("pow151")).ok = flag;\r
2395 \r
2396         flag = true;\r
2397         try {\r
2398             tenlong.pow(com.ibm.icu.math.BigDecimal.ONE, mcld);\r
2399             flag = false;\r
2400         } catch (java.lang.ArithmeticException $69) {\r
2401             ae = $69;\r
2402             flag = (ae.getMessage()).equals("Too many digits:" + " "\r
2403                     + tenlong.toString());\r
2404         }/* checkdigits */\r
2405         (new Test("pow152")).ok = flag;\r
2406 \r
2407         try {\r
2408             com.ibm.icu.math.BigDecimal.ONE.pow(tenlong, mcld);\r
2409             flag = false;\r
2410         } catch (java.lang.ArithmeticException $70) {\r
2411             ae = $70;\r
2412             flag = (ae.getMessage()).equals("Too many digits:" + " "\r
2413                     + tenlong.toString());\r
2414         }/* checkdigits */\r
2415         (new Test("pow153")).ok = flag;\r
2416 \r
2417         try {\r
2418             com.ibm.icu.math.BigDecimal.ONE\r
2419                     .pow(new com.ibm.icu.math.BigDecimal("-71"));\r
2420             flag = false;\r
2421         } catch (java.lang.ArithmeticException $71) {\r
2422             ae = $71;\r
2423             flag = (ae.getMessage()).equals("Negative power: -71");\r
2424         }/* checkpos */\r
2425         (new Test("pow154")).ok = flag;\r
2426 \r
2427         try {\r
2428             com.ibm.icu.math.BigDecimal.ONE.pow(\r
2429                     new com.ibm.icu.math.BigDecimal("1234"), mc3);\r
2430             flag = false;\r
2431         } catch (java.lang.ArithmeticException $72) {\r
2432             ae = $72;\r
2433             flag = (ae.getMessage()).equals("Too many digits: 1234");\r
2434         }/* checkwhole */\r
2435         (new Test("pow155")).ok = flag;\r
2436 \r
2437         try {\r
2438             com.ibm.icu.math.BigDecimal.ONE.pow(\r
2439                     new com.ibm.icu.math.BigDecimal("12.34e+2"), mc3);\r
2440             flag = false;\r
2441         } catch (java.lang.ArithmeticException $73) {\r
2442             ae = $73;\r
2443             flag = (ae.getMessage()).equals("Too many digits: 1.234E+3");\r
2444         }/* checkwhole1 */\r
2445         (new Test("pow156")).ok = flag;\r
2446 \r
2447         try {\r
2448             com.ibm.icu.math.BigDecimal.ONE.pow(\r
2449                     new com.ibm.icu.math.BigDecimal("12.4"), mcdef);\r
2450             flag = false;\r
2451         } catch (java.lang.ArithmeticException $74) {\r
2452             ae = $74;\r
2453             flag = (ae.getMessage()).equals("Decimal part non-zero: 12.4");\r
2454         }/* checkwhole2 */\r
2455         (new Test("pow157")).ok = flag;\r
2456 \r
2457         try {\r
2458             com.ibm.icu.math.BigDecimal.ONE.pow(\r
2459                     new com.ibm.icu.math.BigDecimal("1.01"), mcdef);\r
2460             flag = false;\r
2461         } catch (java.lang.ArithmeticException $75) {\r
2462             ae = $75;\r
2463             flag = (ae.getMessage()).equals("Decimal part non-zero: 1.01");\r
2464         }/* checkwhole3 */\r
2465         (new Test("pow158")).ok = flag;\r
2466 \r
2467         try {\r
2468             com.ibm.icu.math.BigDecimal.ONE.pow(\r
2469                     new com.ibm.icu.math.BigDecimal("1.000000001"), mcdef);\r
2470             flag = false;\r
2471         } catch (java.lang.ArithmeticException $76) {\r
2472             ae = $76;\r
2473             flag = (ae.getMessage())\r
2474                     .equals("Decimal part non-zero: 1.000000001");\r
2475         }/* checkwhole4 */\r
2476         (new Test("pow159")).ok = flag;\r
2477 \r
2478         try {\r
2479             com.ibm.icu.math.BigDecimal.ONE.pow(\r
2480                     new com.ibm.icu.math.BigDecimal("1.000000001"), mc3);\r
2481             flag = false;\r
2482         } catch (java.lang.ArithmeticException $77) {\r
2483             ae = $77;\r
2484             flag = (ae.getMessage())\r
2485                     .equals("Decimal part non-zero: 1.000000001");\r
2486         }/* checkwhole5 */\r
2487         (new Test("pow160")).ok = flag;\r
2488 \r
2489         try {\r
2490             com.ibm.icu.math.BigDecimal.ONE\r
2491                     .pow(\r
2492                             new com.ibm.icu.math.BigDecimal(\r
2493                                     "5.67E-987654321"), mc3);\r
2494             flag = false;\r
2495         } catch (java.lang.ArithmeticException $78) {\r
2496             ae = $78;\r
2497             flag = (ae.getMessage())\r
2498                     .equals("Decimal part non-zero: 5.67E-987654321");\r
2499         }/* checkwhole6 */\r
2500         (new Test("pow161")).ok = flag;\r
2501 \r
2502         summary("pow");\r
2503     }\r
2504 \r
2505     /*--------------------------------------------------------------------*/\r
2506 \r
2507     /** Test the {@link com.ibm.icu.math.BigDecimal#remainder} method. */\r
2508 \r
2509     public void diagremainder() {\r
2510         boolean flag = false;\r
2511         java.lang.ArithmeticException ae = null;\r
2512 \r
2513         (new Test("rem001")).ok=((new com.ibm.icu.math.BigDecimal("1")).remainder(new com.ibm.icu.math.BigDecimal("3"),mcdef).toString()).equals("1");\r
2514         (new Test("rem002")).ok=((new com.ibm.icu.math.BigDecimal("5")).remainder(new com.ibm.icu.math.BigDecimal("5"),mcdef).toString()).equals("0");\r
2515         (new Test("rem003")).ok=((new com.ibm.icu.math.BigDecimal("13")).remainder(new com.ibm.icu.math.BigDecimal("10"),mcdef).toString()).equals("3");\r
2516         (new Test("rem004")).ok=((new com.ibm.icu.math.BigDecimal("13")).remainder(new com.ibm.icu.math.BigDecimal("50"),mcdef).toString()).equals("13");\r
2517         (new Test("rem005")).ok=((new com.ibm.icu.math.BigDecimal("13")).remainder(new com.ibm.icu.math.BigDecimal("100"),mcdef).toString()).equals("13");\r
2518         (new Test("rem006")).ok=((new com.ibm.icu.math.BigDecimal("13")).remainder(new com.ibm.icu.math.BigDecimal("1000"),mcdef).toString()).equals("13");\r
2519         (new Test("rem007")).ok=((new com.ibm.icu.math.BigDecimal(".13")).remainder(one).toString()).equals("0.13");\r
2520         (new Test("rem008")).ok=((new com.ibm.icu.math.BigDecimal("0.133")).remainder(one).toString()).equals("0.133");\r
2521         (new Test("rem009")).ok=((new com.ibm.icu.math.BigDecimal("0.1033")).remainder(one).toString()).equals("0.1033");\r
2522         (new Test("rem010")).ok=((new com.ibm.icu.math.BigDecimal("1.033")).remainder(one).toString()).equals("0.033");\r
2523         (new Test("rem011")).ok=((new com.ibm.icu.math.BigDecimal("10.33")).remainder(one).toString()).equals("0.33");\r
2524         (new Test("rem012")).ok=((new com.ibm.icu.math.BigDecimal("10.33")).remainder(com.ibm.icu.math.BigDecimal.TEN).toString()).equals("0.33");\r
2525         (new Test("rem013")).ok=((new com.ibm.icu.math.BigDecimal("103.3")).remainder(com.ibm.icu.math.BigDecimal.ONE).toString()).equals("0.3");\r
2526         (new Test("rem014")).ok=((new com.ibm.icu.math.BigDecimal("133")).remainder(com.ibm.icu.math.BigDecimal.TEN).toString()).equals("3");\r
2527         (new Test("rem015")).ok=((new com.ibm.icu.math.BigDecimal("1033")).remainder(com.ibm.icu.math.BigDecimal.TEN).toString()).equals("3");\r
2528         (new Test("rem016")).ok=((new com.ibm.icu.math.BigDecimal("1033")).remainder(new com.ibm.icu.math.BigDecimal(50),mcdef).toString()).equals("33");\r
2529         (new Test("rem017")).ok=((new com.ibm.icu.math.BigDecimal("101.0")).remainder(new com.ibm.icu.math.BigDecimal(3),mcdef).toString()).equals("2.0");\r
2530         (new Test("rem018")).ok=((new com.ibm.icu.math.BigDecimal("102.0")).remainder(new com.ibm.icu.math.BigDecimal(3),mcdef).toString()).equals("0");\r
2531         (new Test("rem019")).ok=((new com.ibm.icu.math.BigDecimal("103.0")).remainder(new com.ibm.icu.math.BigDecimal(3),mcdef).toString()).equals("1.0");\r
2532         (new Test("rem020")).ok=((new com.ibm.icu.math.BigDecimal("2.40")).remainder(one).toString()).equals("0.40");\r
2533         (new Test("rem021")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).remainder(one).toString()).equals("0.400");\r
2534         (new Test("rem022")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).remainder(one).toString()).equals("0.4");\r
2535         (new Test("rem023")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).remainder(new com.ibm.icu.math.BigDecimal(2),mcdef).toString()).equals("0.4");\r
2536         (new Test("rem024")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).remainder(new com.ibm.icu.math.BigDecimal(2),mcdef).toString()).equals("0.400");\r
2537         (new Test("rem025")).ok=((new com.ibm.icu.math.BigDecimal("1")).remainder(new com.ibm.icu.math.BigDecimal("0.3"),mcdef).toString()).equals("0.1");\r
2538         (new Test("rem026")).ok=((new com.ibm.icu.math.BigDecimal("1")).remainder(new com.ibm.icu.math.BigDecimal("0.30"),mcdef).toString()).equals("0.10");\r
2539         (new Test("rem027")).ok=((new com.ibm.icu.math.BigDecimal("1")).remainder(new com.ibm.icu.math.BigDecimal("0.300"),mcdef).toString()).equals("0.100");\r
2540         (new Test("rem028")).ok=((new com.ibm.icu.math.BigDecimal("1")).remainder(new com.ibm.icu.math.BigDecimal("0.3000"),mcdef).toString()).equals("0.1000");\r
2541         (new Test("rem029")).ok=((new com.ibm.icu.math.BigDecimal("1.0")).remainder(new com.ibm.icu.math.BigDecimal("0.3"),mcdef).toString()).equals("0.1");\r
2542         (new Test("rem030")).ok=((new com.ibm.icu.math.BigDecimal("1.00")).remainder(new com.ibm.icu.math.BigDecimal("0.3"),mcdef).toString()).equals("0.10");\r
2543         (new Test("rem031")).ok=((new com.ibm.icu.math.BigDecimal("1.000")).remainder(new com.ibm.icu.math.BigDecimal("0.3"),mcdef).toString()).equals("0.100");\r
2544         (new Test("rem032")).ok=((new com.ibm.icu.math.BigDecimal("1.0000")).remainder(new com.ibm.icu.math.BigDecimal("0.3"),mcdef).toString()).equals("0.1000");\r
2545         (new Test("rem033")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("2.001"),mcdef).toString()).equals("0.5");\r
2546         \r
2547         (new Test("rem040")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("0.5000001"),mcdef).toString()).equals("0.5");\r
2548         (new Test("rem041")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("0.50000001"),mcdef).toString()).equals("0.5");\r
2549         (new Test("rem042")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("0.500000001"),mcdef).toString()).equals("0.5");\r
2550         (new Test("rem043")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("0.5000000001"),mcdef).toString()).equals("0");\r
2551         (new Test("rem044")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("0.50000000001"),mcdef).toString()).equals("0");\r
2552         (new Test("rem045")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("0.4999999"),mcdef).toString()).equals("1E-7");\r
2553         (new Test("rem046")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("0.49999999"),mcdef).toString()).equals("1E-8");\r
2554         (new Test("rem047")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("0.499999999"),mcdef).toString()).equals("1E-9");\r
2555         (new Test("rem048")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("0.4999999999"),mcdef).toString()).equals("0");\r
2556         (new Test("rem049")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("0.49999999999"),mcdef).toString()).equals("0");\r
2557         \r
2558         (new Test("rem050")).ok=((new com.ibm.icu.math.BigDecimal("0.03")).remainder(new com.ibm.icu.math.BigDecimal("7"),mcdef).toString()).equals("0.03");\r
2559         (new Test("rem051")).ok=((new com.ibm.icu.math.BigDecimal("5")).remainder(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("1");\r
2560         (new Test("rem052")).ok=((new com.ibm.icu.math.BigDecimal("4.1")).remainder(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("0.1");\r
2561         (new Test("rem053")).ok=((new com.ibm.icu.math.BigDecimal("4.01")).remainder(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("0.01");\r
2562         (new Test("rem054")).ok=((new com.ibm.icu.math.BigDecimal("4.001")).remainder(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("0.001");\r
2563         (new Test("rem055")).ok=((new com.ibm.icu.math.BigDecimal("4.0001")).remainder(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("0.0001");\r
2564         (new Test("rem056")).ok=((new com.ibm.icu.math.BigDecimal("4.00001")).remainder(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("0.00001");\r
2565         (new Test("rem057")).ok=((new com.ibm.icu.math.BigDecimal("4.000001")).remainder(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("0.000001");\r
2566         (new Test("rem058")).ok=((new com.ibm.icu.math.BigDecimal("4.0000001")).remainder(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("1E-7");\r
2567         \r
2568         (new Test("rem060")).ok=((new com.ibm.icu.math.BigDecimal("1.2")).remainder(new com.ibm.icu.math.BigDecimal("0.7345"),mcdef).toString()).equals("0.4655");\r
2569         (new Test("rem061")).ok=((new com.ibm.icu.math.BigDecimal("0.8")).remainder(new com.ibm.icu.math.BigDecimal("12"),mcdef).toString()).equals("0.8");\r
2570         (new Test("rem062")).ok=((new com.ibm.icu.math.BigDecimal("0.8")).remainder(new com.ibm.icu.math.BigDecimal("0.2"),mcdef).toString()).equals("0");\r
2571         (new Test("rem063")).ok=((new com.ibm.icu.math.BigDecimal("0.8")).remainder(new com.ibm.icu.math.BigDecimal("0.3"),mcdef).toString()).equals("0.2");\r
2572         (new Test("rem064")).ok=((new com.ibm.icu.math.BigDecimal("0.800")).remainder(new com.ibm.icu.math.BigDecimal("12"),mcdef).toString()).equals("0.800");\r
2573         (new Test("rem065")).ok=((new com.ibm.icu.math.BigDecimal("0.800")).remainder(new com.ibm.icu.math.BigDecimal("1.7"),mcdef).toString()).equals("0.800");\r
2574         (new Test("rem066")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).remainder(new com.ibm.icu.math.BigDecimal(2),mcdef).toString()).equals("0.400");\r
2575 \r
2576         // MC --\r
2577         (new Test("rem071")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).remainder(new com.ibm.icu.math.BigDecimal(2),mc6).toString()).equals("0.400");\r
2578         (new Test("rem072")).ok=((new com.ibm.icu.math.BigDecimal("12345678900000")).remainder(new com.ibm.icu.math.BigDecimal("12e+12"),mc3).toString()).equals("3E+11");\r
2579 \r
2580         // Fixed --\r
2581         (new Test("rem101")).ok=((new com.ibm.icu.math.BigDecimal("1")).remainder(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("1");\r
2582         (new Test("rem102")).ok=((new com.ibm.icu.math.BigDecimal("5")).remainder(new com.ibm.icu.math.BigDecimal("5")).toString()).equals("0");\r
2583         (new Test("rem103")).ok=((new com.ibm.icu.math.BigDecimal("13")).remainder(new com.ibm.icu.math.BigDecimal("10")).toString()).equals("3");\r
2584         (new Test("rem104")).ok=((new com.ibm.icu.math.BigDecimal("13")).remainder(new com.ibm.icu.math.BigDecimal("50")).toString()).equals("13");\r
2585         (new Test("rem105")).ok=((new com.ibm.icu.math.BigDecimal("13")).remainder(new com.ibm.icu.math.BigDecimal("100")).toString()).equals("13");\r
2586         (new Test("rem106")).ok=((new com.ibm.icu.math.BigDecimal("13")).remainder(new com.ibm.icu.math.BigDecimal("1000")).toString()).equals("13");\r
2587         (new Test("rem107")).ok=((new com.ibm.icu.math.BigDecimal(".13")).remainder(one).toString()).equals("0.13");\r
2588         (new Test("rem108")).ok=((new com.ibm.icu.math.BigDecimal("0.133")).remainder(one).toString()).equals("0.133");\r
2589         (new Test("rem109")).ok=((new com.ibm.icu.math.BigDecimal("0.1033")).remainder(one).toString()).equals("0.1033");\r
2590         (new Test("rem110")).ok=((new com.ibm.icu.math.BigDecimal("1.033")).remainder(one).toString()).equals("0.033");\r
2591         (new Test("rem111")).ok=((new com.ibm.icu.math.BigDecimal("10.33")).remainder(one).toString()).equals("0.33");\r
2592         (new Test("rem112")).ok=((new com.ibm.icu.math.BigDecimal("10.33")).remainder(com.ibm.icu.math.BigDecimal.TEN).toString()).equals("0.33");\r
2593         (new Test("rem113")).ok=((new com.ibm.icu.math.BigDecimal("103.3")).remainder(com.ibm.icu.math.BigDecimal.ONE).toString()).equals("0.3");\r
2594         (new Test("rem114")).ok=((new com.ibm.icu.math.BigDecimal("133")).remainder(com.ibm.icu.math.BigDecimal.TEN).toString()).equals("3");\r
2595         (new Test("rem115")).ok=((new com.ibm.icu.math.BigDecimal("1033")).remainder(com.ibm.icu.math.BigDecimal.TEN).toString()).equals("3");\r
2596         (new Test("rem116")).ok=((new com.ibm.icu.math.BigDecimal("1033")).remainder(new com.ibm.icu.math.BigDecimal(50)).toString()).equals("33");\r
2597         (new Test("rem117")).ok=((new com.ibm.icu.math.BigDecimal("101.0")).remainder(new com.ibm.icu.math.BigDecimal(3)).toString()).equals("2.0");\r
2598         (new Test("rem118")).ok=((new com.ibm.icu.math.BigDecimal("102.0")).remainder(new com.ibm.icu.math.BigDecimal(3)).toString()).equals("0");\r
2599         (new Test("rem119")).ok=((new com.ibm.icu.math.BigDecimal("103.0")).remainder(new com.ibm.icu.math.BigDecimal(3)).toString()).equals("1.0");\r
2600         (new Test("rem120")).ok=((new com.ibm.icu.math.BigDecimal("2.40")).remainder(one).toString()).equals("0.40");\r
2601         (new Test("rem121")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).remainder(one).toString()).equals("0.400");\r
2602         (new Test("rem122")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).remainder(one).toString()).equals("0.4");\r
2603         (new Test("rem123")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).remainder(new com.ibm.icu.math.BigDecimal(2)).toString()).equals("0.4");\r
2604         (new Test("rem124")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).remainder(new com.ibm.icu.math.BigDecimal(2)).toString()).equals("0.400");\r
2605         (new Test("rem125")).ok=((new com.ibm.icu.math.BigDecimal("1")).remainder(new com.ibm.icu.math.BigDecimal("0.3")).toString()).equals("0.1");\r
2606         (new Test("rem126")).ok=((new com.ibm.icu.math.BigDecimal("1")).remainder(new com.ibm.icu.math.BigDecimal("0.30")).toString()).equals("0.10");\r
2607         (new Test("rem127")).ok=((new com.ibm.icu.math.BigDecimal("1")).remainder(new com.ibm.icu.math.BigDecimal("0.300")).toString()).equals("0.100");\r
2608         (new Test("rem128")).ok=((new com.ibm.icu.math.BigDecimal("1")).remainder(new com.ibm.icu.math.BigDecimal("0.3000")).toString()).equals("0.1000");\r
2609         (new Test("rem129")).ok=((new com.ibm.icu.math.BigDecimal("1.0")).remainder(new com.ibm.icu.math.BigDecimal("0.3")).toString()).equals("0.1");\r
2610         (new Test("rem130")).ok=((new com.ibm.icu.math.BigDecimal("1.00")).remainder(new com.ibm.icu.math.BigDecimal("0.3")).toString()).equals("0.10");\r
2611         (new Test("rem131")).ok=((new com.ibm.icu.math.BigDecimal("1.000")).remainder(new com.ibm.icu.math.BigDecimal("0.3")).toString()).equals("0.100");\r
2612         (new Test("rem132")).ok=((new com.ibm.icu.math.BigDecimal("1.0000")).remainder(new com.ibm.icu.math.BigDecimal("0.3")).toString()).equals("0.1000");\r
2613         (new Test("rem133")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("2.001")).toString()).equals("0.5");\r
2614         (new Test("rem134")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("0.500000001")).toString()).equals("0.5");\r
2615         (new Test("rem135")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("0.5000000001")).toString()).equals("0.5");\r
2616         (new Test("rem136")).ok=((new com.ibm.icu.math.BigDecimal("0.03")).remainder(new com.ibm.icu.math.BigDecimal("7")).toString()).equals("0.03");\r
2617         (new Test("rem137")).ok=((new com.ibm.icu.math.BigDecimal("5")).remainder(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("1");\r
2618         (new Test("rem138")).ok=((new com.ibm.icu.math.BigDecimal("4.1")).remainder(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("0.1");\r
2619         (new Test("rem139")).ok=((new com.ibm.icu.math.BigDecimal("4.01")).remainder(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("0.01");\r
2620         (new Test("rem140")).ok=((new com.ibm.icu.math.BigDecimal("4.001")).remainder(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("0.001");\r
2621         (new Test("rem141")).ok=((new com.ibm.icu.math.BigDecimal("4.0001")).remainder(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("0.0001");\r
2622         (new Test("rem142")).ok=((new com.ibm.icu.math.BigDecimal("4.00001")).remainder(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("0.00001");\r
2623         (new Test("rem143")).ok=((new com.ibm.icu.math.BigDecimal("4.000001")).remainder(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("0.000001");\r
2624         (new Test("rem144")).ok=((new com.ibm.icu.math.BigDecimal("4.0000001")).remainder(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("0.0000001"); // 1E-7, plain\r
2625         (new Test("rem145")).ok=((new com.ibm.icu.math.BigDecimal("1.2")).remainder(new com.ibm.icu.math.BigDecimal("0.7345")).toString()).equals("0.4655");\r
2626         (new Test("rem146")).ok=((new com.ibm.icu.math.BigDecimal("0.8")).remainder(new com.ibm.icu.math.BigDecimal("12")).toString()).equals("0.8");\r
2627         (new Test("rem147")).ok=((new com.ibm.icu.math.BigDecimal("0.8")).remainder(new com.ibm.icu.math.BigDecimal("0.2")).toString()).equals("0");\r
2628         (new Test("rem148")).ok=((new com.ibm.icu.math.BigDecimal("0.8")).remainder(new com.ibm.icu.math.BigDecimal("0.3")).toString()).equals("0.2");\r
2629         (new Test("rem149")).ok=((new com.ibm.icu.math.BigDecimal("0.800")).remainder(new com.ibm.icu.math.BigDecimal("12")).toString()).equals("0.800");\r
2630         (new Test("rem150")).ok=((new com.ibm.icu.math.BigDecimal("0.800")).remainder(new com.ibm.icu.math.BigDecimal("1.7")).toString()).equals("0.800");\r
2631         (new Test("rem151")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).remainder(new com.ibm.icu.math.BigDecimal(2),mcdef).toString()).equals("0.400");\r
2632 \r
2633 \r
2634         try {\r
2635             ten.remainder((com.ibm.icu.math.BigDecimal) null);\r
2636             flag = false;\r
2637         } catch (java.lang.NullPointerException $79) {\r
2638             flag = true;\r
2639         }/* checknull */\r
2640         (new Test("rem200")).ok = flag;\r
2641         try {\r
2642             ten.remainder(ten, (com.ibm.icu.math.MathContext) null);\r
2643             flag = false;\r
2644         } catch (java.lang.NullPointerException $80) {\r
2645             flag = true;\r
2646         }/* checknull2 */\r
2647         (new Test("rem201")).ok = flag;\r
2648 \r
2649         try {\r
2650             com.ibm.icu.math.BigDecimal.ONE.remainder(tenlong, mcld);\r
2651             flag = false;\r
2652         } catch (java.lang.ArithmeticException $81) {\r
2653             ae = $81;\r
2654             flag = (ae.getMessage()).equals("Too many digits:" + " "\r
2655                     + tenlong.toString());\r
2656         }/* checkdigits */\r
2657         (new Test("rem202")).ok = flag;\r
2658 \r
2659         try {\r
2660             tenlong.remainder(one, mcld);\r
2661             flag = false;\r
2662         } catch (java.lang.ArithmeticException $82) {\r
2663             ae = $82;\r
2664             flag = (ae.getMessage()).equals("Too many digits:" + " "\r
2665                     + tenlong.toString());\r
2666         }/* checkdigits */\r
2667         (new Test("rem203")).ok = flag;\r
2668 \r
2669         summary("remainder");\r
2670     }\r
2671 \r
2672     /*--------------------------------------------------------------------*/\r
2673 \r
2674     /** Test the {@link com.ibm.icu.math.BigDecimal#subtract} method. */\r
2675 \r
2676     public void diagsubtract() {\r
2677         boolean flag = false;\r
2678         com.ibm.icu.math.BigDecimal alhs;\r
2679         com.ibm.icu.math.BigDecimal arhs;\r
2680         java.lang.ArithmeticException ae = null;\r
2681 \r
2682         // [first group are 'quick confidence check']\r
2683         (new Test("sub301")).ok=((new com.ibm.icu.math.BigDecimal(2)).subtract(new com.ibm.icu.math.BigDecimal(3),mcdef).toString()).equals("-1");\r
2684         (new Test("sub302")).ok=((new com.ibm.icu.math.BigDecimal("5.75")).subtract(new com.ibm.icu.math.BigDecimal("3.3"),mcdef).toString()).equals("2.45");\r
2685         (new Test("sub303")).ok=((new com.ibm.icu.math.BigDecimal("5")).subtract(new com.ibm.icu.math.BigDecimal("-3"),mcdef).toString()).equals("8");\r
2686         (new Test("sub304")).ok=((new com.ibm.icu.math.BigDecimal("-5")).subtract(new com.ibm.icu.math.BigDecimal("-3"),mcdef).toString()).equals("-2");\r
2687         (new Test("sub305")).ok=((new com.ibm.icu.math.BigDecimal("-7")).subtract(new com.ibm.icu.math.BigDecimal("2.5"),mcdef).toString()).equals("-9.5");\r
2688         (new Test("sub306")).ok=((new com.ibm.icu.math.BigDecimal("0.7")).subtract(new com.ibm.icu.math.BigDecimal("0.3"),mcdef).toString()).equals("0.4");\r
2689         (new Test("sub307")).ok=((new com.ibm.icu.math.BigDecimal("1.3")).subtract(new com.ibm.icu.math.BigDecimal("0.3"),mcdef).toString()).equals("1.0");\r
2690         (new Test("sub308")).ok=((new com.ibm.icu.math.BigDecimal("1.25")).subtract(new com.ibm.icu.math.BigDecimal("1.25"),mcdef).toString()).equals("0");\r
2691         (new Test("sub309")).ok=((new com.ibm.icu.math.BigDecimal("1.23456789")).subtract(new com.ibm.icu.math.BigDecimal("1.00000000"),mcdef).toString()).equals("0.23456789");\r
2692         \r
2693         (new Test("sub310")).ok=((new com.ibm.icu.math.BigDecimal("1.23456789")).subtract(new com.ibm.icu.math.BigDecimal("1.00000089"),mcdef).toString()).equals("0.23456700");\r
2694         \r
2695         (new Test("sub311")).ok=((new com.ibm.icu.math.BigDecimal("0.5555555559")).subtract(new com.ibm.icu.math.BigDecimal("0.0000000001"),mcdef).toString()).equals("0.555555556");\r
2696         \r
2697         (new Test("sub312")).ok=((new com.ibm.icu.math.BigDecimal("0.5555555559")).subtract(new com.ibm.icu.math.BigDecimal("0.0000000005"),mcdef).toString()).equals("0.555555556");\r
2698         \r
2699         (new Test("sub313")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444444")).subtract(new com.ibm.icu.math.BigDecimal("0.1111111111"),mcdef).toString()).equals("0.333333333");\r
2700         \r
2701         (new Test("sub314")).ok=((new com.ibm.icu.math.BigDecimal("1.0000000000")).subtract(new com.ibm.icu.math.BigDecimal("0.00000001"),mcdef).toString()).equals("0.99999999");\r
2702         \r
2703         (new Test("sub315")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444444999")).subtract(new com.ibm.icu.math.BigDecimal("0"),mcdef).toString()).equals("0.444444444");\r
2704         \r
2705         (new Test("sub316")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444445000")).subtract(new com.ibm.icu.math.BigDecimal("0"),mcdef).toString()).equals("0.444444445");\r
2706         \r
2707         \r
2708         (new Test("sub317")).ok=((new com.ibm.icu.math.BigDecimal("70")).subtract(new com.ibm.icu.math.BigDecimal("10000e+9"),mcdef).toString()).equals("-1.00000000E+13");\r
2709         \r
2710         (new Test("sub318")).ok=((new com.ibm.icu.math.BigDecimal("700")).subtract(new com.ibm.icu.math.BigDecimal("10000e+9"),mcdef).toString()).equals("-1.00000000E+13");\r
2711         \r
2712         (new Test("sub319")).ok=((new com.ibm.icu.math.BigDecimal("7000")).subtract(new com.ibm.icu.math.BigDecimal("10000e+9"),mcdef).toString()).equals("-1.00000000E+13");\r
2713         \r
2714         (new Test("sub320")).ok=((new com.ibm.icu.math.BigDecimal("70000")).subtract(new com.ibm.icu.math.BigDecimal("10000e+9"),mcdef).toString()).equals("-9.9999999E+12");\r
2715         \r
2716         (new Test("sub321")).ok=((new com.ibm.icu.math.BigDecimal("700000")).subtract(new com.ibm.icu.math.BigDecimal("10000e+9"),mcdef).toString()).equals("-9.9999993E+12");\r
2717 \r
2718         // symmetry:\r
2719         (new Test("sub322")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("70"),mcdef).toString()).equals("1.00000000E+13");\r
2720         \r
2721         (new Test("sub323")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("700"),mcdef).toString()).equals("1.00000000E+13");\r
2722         \r
2723         (new Test("sub324")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("7000"),mcdef).toString()).equals("1.00000000E+13");\r
2724         \r
2725         (new Test("sub325")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("70000"),mcdef).toString()).equals("9.9999999E+12");\r
2726         \r
2727         (new Test("sub326")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("700000"),mcdef).toString()).equals("9.9999993E+12");\r
2728 \r
2729 \r
2730         // [same with fixed point arithmetic]\r
2731         (new Test("sub001")).ok=((new com.ibm.icu.math.BigDecimal(2)).subtract(new com.ibm.icu.math.BigDecimal(3)).toString()).equals("-1");\r
2732         (new Test("sub002")).ok=((new com.ibm.icu.math.BigDecimal("5.75")).subtract(new com.ibm.icu.math.BigDecimal("3.3")).toString()).equals("2.45");\r
2733         (new Test("sub003")).ok=((new com.ibm.icu.math.BigDecimal("5")).subtract(new com.ibm.icu.math.BigDecimal("-3")).toString()).equals("8");\r
2734         (new Test("sub004")).ok=((new com.ibm.icu.math.BigDecimal("-5")).subtract(new com.ibm.icu.math.BigDecimal("-3")).toString()).equals("-2");\r
2735         (new Test("sub005")).ok=((new com.ibm.icu.math.BigDecimal("-7")).subtract(new com.ibm.icu.math.BigDecimal("2.5")).toString()).equals("-9.5");\r
2736         (new Test("sub006")).ok=((new com.ibm.icu.math.BigDecimal("0.7")).subtract(new com.ibm.icu.math.BigDecimal("0.3")).toString()).equals("0.4");\r
2737         (new Test("sub007")).ok=((new com.ibm.icu.math.BigDecimal("1.3")).subtract(new com.ibm.icu.math.BigDecimal("0.3")).toString()).equals("1.0");\r
2738         (new Test("sub008")).ok=((new com.ibm.icu.math.BigDecimal("1.25")).subtract(new com.ibm.icu.math.BigDecimal("1.25")).toString()).equals("0.00");\r
2739         (new Test("sub009")).ok=((new com.ibm.icu.math.BigDecimal("0.02")).subtract(new com.ibm.icu.math.BigDecimal("0.02")).toString()).equals("0.00");\r
2740         \r
2741         (new Test("sub010")).ok=((new com.ibm.icu.math.BigDecimal("1.23456789")).subtract(new com.ibm.icu.math.BigDecimal("1.00000000")).toString()).equals("0.23456789");\r
2742         \r
2743         (new Test("sub011")).ok=((new com.ibm.icu.math.BigDecimal("1.23456789")).subtract(new com.ibm.icu.math.BigDecimal("1.00000089")).toString()).equals("0.23456700");\r
2744         \r
2745         (new Test("sub012")).ok=((new com.ibm.icu.math.BigDecimal("0.5555555559")).subtract(new com.ibm.icu.math.BigDecimal("0.0000000001")).toString()).equals("0.5555555558");\r
2746         \r
2747         (new Test("sub013")).ok=((new com.ibm.icu.math.BigDecimal("0.5555555559")).subtract(new com.ibm.icu.math.BigDecimal("0.0000000005")).toString()).equals("0.5555555554");\r
2748         \r
2749         (new Test("sub014")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444444")).subtract(new com.ibm.icu.math.BigDecimal("0.1111111111")).toString()).equals("0.3333333333");\r
2750         \r
2751         (new Test("sub015")).ok=((new com.ibm.icu.math.BigDecimal("1.0000000000")).subtract(new com.ibm.icu.math.BigDecimal("0.00000001")).toString()).equals("0.9999999900");\r
2752         \r
2753         (new Test("sub016")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444444999")).subtract(new com.ibm.icu.math.BigDecimal("0")).toString()).equals("0.4444444444999");\r
2754         \r
2755         (new Test("sub017")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444445000")).subtract(new com.ibm.icu.math.BigDecimal("0")).toString()).equals("0.4444444445000");\r
2756         \r
2757         \r
2758         (new Test("sub018")).ok=((new com.ibm.icu.math.BigDecimal("70")).subtract(new com.ibm.icu.math.BigDecimal("10000e+9")).toString()).equals("-9999999999930");\r
2759         \r
2760         (new Test("sub019")).ok=((new com.ibm.icu.math.BigDecimal("700")).subtract(new com.ibm.icu.math.BigDecimal("10000e+9")).toString()).equals("-9999999999300");\r
2761         \r
2762         (new Test("sub020")).ok=((new com.ibm.icu.math.BigDecimal("7000")).subtract(new com.ibm.icu.math.BigDecimal("10000e+9")).toString()).equals("-9999999993000");\r
2763         \r
2764         (new Test("sub021")).ok=((new com.ibm.icu.math.BigDecimal("70000")).subtract(new com.ibm.icu.math.BigDecimal("10000e+9")).toString()).equals("-9999999930000");\r
2765         \r
2766         (new Test("sub022")).ok=((new com.ibm.icu.math.BigDecimal("700000")).subtract(new com.ibm.icu.math.BigDecimal("10000e+9")).toString()).equals("-9999999300000");\r
2767 \r
2768         // symmetry:\r
2769         (new Test("sub023")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("70")).toString()).equals("9999999999930");\r
2770         \r
2771         (new Test("sub024")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("700")).toString()).equals("9999999999300");\r
2772         \r
2773         (new Test("sub025")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("7000")).toString()).equals("9999999993000");\r
2774         \r
2775         (new Test("sub026")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("70000")).toString()).equals("9999999930000");\r
2776         \r
2777         (new Test("sub027")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("700000")).toString()).equals("9999999300000");\r
2778 \r
2779         // MC\r
2780         (new Test("sub030")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("70000"),mcdef).toString()).equals("9.9999999E+12");\r
2781         \r
2782         (new Test("sub031")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("70000"),mc6).toString()).equals("1.00000E+13");\r
2783 \r
2784 \r
2785         // some of the next group are really constructor tests\r
2786         (new Test("sub040")).ok=((new com.ibm.icu.math.BigDecimal("00.0")).subtract(new com.ibm.icu.math.BigDecimal("0.0")).toString()).equals("0.0");\r
2787         (new Test("sub041")).ok=((new com.ibm.icu.math.BigDecimal("00.0")).subtract(new com.ibm.icu.math.BigDecimal("0.00")).toString()).equals("0.00");\r
2788         (new Test("sub042")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).subtract(new com.ibm.icu.math.BigDecimal("00.0")).toString()).equals("0.00");\r
2789         (new Test("sub043")).ok=((new com.ibm.icu.math.BigDecimal("00.0")).subtract(new com.ibm.icu.math.BigDecimal("0.00"),mcdef).toString()).equals("0");\r
2790         (new Test("sub044")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).subtract(new com.ibm.icu.math.BigDecimal("00.0"),mcdef).toString()).equals("0");\r
2791         (new Test("sub045")).ok=((new com.ibm.icu.math.BigDecimal("3")).subtract(new com.ibm.icu.math.BigDecimal(".3"),mcdef).toString()).equals("2.7");\r
2792         (new Test("sub046")).ok=((new com.ibm.icu.math.BigDecimal("3.")).subtract(new com.ibm.icu.math.BigDecimal(".3"),mcdef).toString()).equals("2.7");\r
2793         (new Test("sub047")).ok=((new com.ibm.icu.math.BigDecimal("3.0")).subtract(new com.ibm.icu.math.BigDecimal(".3"),mcdef).toString()).equals("2.7");\r
2794         (new Test("sub048")).ok=((new com.ibm.icu.math.BigDecimal("3.00")).subtract(new com.ibm.icu.math.BigDecimal(".3"),mcdef).toString()).equals("2.70");\r
2795         (new Test("sub049")).ok=((new com.ibm.icu.math.BigDecimal("3")).subtract(new com.ibm.icu.math.BigDecimal("3"),mcdef).toString()).equals("0");\r
2796         (new Test("sub050")).ok=((new com.ibm.icu.math.BigDecimal("3")).subtract(new com.ibm.icu.math.BigDecimal("+3"),mcdef).toString()).equals("0");\r
2797         (new Test("sub051")).ok=((new com.ibm.icu.math.BigDecimal("3")).subtract(new com.ibm.icu.math.BigDecimal("-3"),mcdef).toString()).equals("6");\r
2798         (new Test("sub052")).ok=((new com.ibm.icu.math.BigDecimal("3")).subtract(new com.ibm.icu.math.BigDecimal(".3")).toString()).equals("2.7");\r
2799         (new Test("sub053")).ok=((new com.ibm.icu.math.BigDecimal("3.")).subtract(new com.ibm.icu.math.BigDecimal(".3")).toString()).equals("2.7");\r
2800         (new Test("sub054")).ok=((new com.ibm.icu.math.BigDecimal("3.0")).subtract(new com.ibm.icu.math.BigDecimal(".3")).toString()).equals("2.7");\r
2801         (new Test("sub055")).ok=((new com.ibm.icu.math.BigDecimal("3.00")).subtract(new com.ibm.icu.math.BigDecimal(".3")).toString()).equals("2.70");\r
2802         (new Test("sub056")).ok=((new com.ibm.icu.math.BigDecimal("3")).subtract(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("0");\r
2803         (new Test("sub057")).ok=((new com.ibm.icu.math.BigDecimal("3")).subtract(new com.ibm.icu.math.BigDecimal("+3")).toString()).equals("0");\r
2804         (new Test("sub058")).ok=((new com.ibm.icu.math.BigDecimal("3")).subtract(new com.ibm.icu.math.BigDecimal("-3")).toString()).equals("6");\r
2805 \r
2806         // the above all from add; massaged and extended. Now some new ones...\r
2807         // [particularly important for comparisons]\r
2808         // NB: -1E-7 below were non-exponents pre-ANSI\r
2809         (new Test("sub080")).ok=("-1E-7").equals((new com.ibm.icu.math.BigDecimal("10.23456784")).subtract(new com.ibm.icu.math.BigDecimal("10.23456789"),mcdef).toString());\r
2810         (new Test("sub081")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456785")).subtract(new com.ibm.icu.math.BigDecimal("10.23456789"),mcdef).toString());\r
2811         (new Test("sub082")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456786")).subtract(new com.ibm.icu.math.BigDecimal("10.23456789"),mcdef).toString());\r
2812         (new Test("sub083")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456787")).subtract(new com.ibm.icu.math.BigDecimal("10.23456789"),mcdef).toString());\r
2813         (new Test("sub084")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456788")).subtract(new com.ibm.icu.math.BigDecimal("10.23456789"),mcdef).toString());\r
2814         (new Test("sub085")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456789")).subtract(new com.ibm.icu.math.BigDecimal("10.23456789"),mcdef).toString());\r
2815         (new Test("sub086")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456790")).subtract(new com.ibm.icu.math.BigDecimal("10.23456789"),mcdef).toString());\r
2816         (new Test("sub087")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456791")).subtract(new com.ibm.icu.math.BigDecimal("10.23456789"),mcdef).toString());\r
2817         (new Test("sub088")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456792")).subtract(new com.ibm.icu.math.BigDecimal("10.23456789"),mcdef).toString());\r
2818         (new Test("sub089")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456793")).subtract(new com.ibm.icu.math.BigDecimal("10.23456789"),mcdef).toString());\r
2819         (new Test("sub090")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456794")).subtract(new com.ibm.icu.math.BigDecimal("10.23456789"),mcdef).toString());\r
2820         (new Test("sub091")).ok=("-1E-7").equals((new com.ibm.icu.math.BigDecimal("10.23456781")).subtract(new com.ibm.icu.math.BigDecimal("10.23456786"),mcdef).toString());\r
2821         (new Test("sub092")).ok=("-1E-7").equals((new com.ibm.icu.math.BigDecimal("10.23456782")).subtract(new com.ibm.icu.math.BigDecimal("10.23456786"),mcdef).toString());\r
2822         (new Test("sub093")).ok=("-1E-7").equals((new com.ibm.icu.math.BigDecimal("10.23456783")).subtract(new com.ibm.icu.math.BigDecimal("10.23456786"),mcdef).toString());\r
2823         (new Test("sub094")).ok=("-1E-7").equals((new com.ibm.icu.math.BigDecimal("10.23456784")).subtract(new com.ibm.icu.math.BigDecimal("10.23456786"),mcdef).toString());\r
2824         (new Test("sub095")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456785")).subtract(new com.ibm.icu.math.BigDecimal("10.23456786"),mcdef).toString());\r
2825         (new Test("sub096")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456786")).subtract(new com.ibm.icu.math.BigDecimal("10.23456786"),mcdef).toString());\r
2826         (new Test("sub097")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456787")).subtract(new com.ibm.icu.math.BigDecimal("10.23456786"),mcdef).toString());\r
2827         (new Test("sub098")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456788")).subtract(new com.ibm.icu.math.BigDecimal("10.23456786"),mcdef).toString());\r
2828         (new Test("sub099")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456789")).subtract(new com.ibm.icu.math.BigDecimal("10.23456786"),mcdef).toString());\r
2829         (new Test("sub100")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456790")).subtract(new com.ibm.icu.math.BigDecimal("10.23456786"),mcdef).toString());\r
2830         (new Test("sub101")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456791")).subtract(new com.ibm.icu.math.BigDecimal("10.23456786"),mcdef).toString());\r
2831         (new Test("sub102")).ok="0".equals(com.ibm.icu.math.BigDecimal.ONE.subtract(new com.ibm.icu.math.BigDecimal("0.999999999"),mcdef).toString());\r
2832         (new Test("sub103")).ok="0".equals((new com.ibm.icu.math.BigDecimal("0.999999999")).subtract(com.ibm.icu.math.BigDecimal.ONE,mcdef).toString());\r
2833 \r
2834         alhs = new com.ibm.icu.math.BigDecimal("12345678900000");\r
2835         arhs = new com.ibm.icu.math.BigDecimal("9999999999999");\r
2836         (new Test("sub110")).ok = (alhs.subtract(arhs, mc3).toString()).equals("2.3E+12");\r
2837         (new Test("sub111")).ok = (arhs.subtract(alhs, mc3).toString()).equals("-2.3E+12");\r
2838         (new Test("sub112")).ok = (alhs.subtract(arhs).toString()).equals("2345678900001");\r
2839         (new Test("sub113")).ok = (arhs.subtract(alhs).toString()).equals("-2345678900001");\r
2840 \r
2841         // additional scaled arithmetic tests [0.97 problem]\r
2842         (new Test("sub120")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal(".1")).toString()).equals("-0.1");\r
2843         (new Test("sub121")).ok=((new com.ibm.icu.math.BigDecimal("00")).subtract(new com.ibm.icu.math.BigDecimal(".97983")).toString()).equals("-0.97983");\r
2844         (new Test("sub122")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal(".9")).toString()).equals("-0.9");\r
2845         (new Test("sub123")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("0.102")).toString()).equals("-0.102");\r
2846         (new Test("sub124")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal(".4")).toString()).equals("-0.4");\r
2847         (new Test("sub125")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal(".307")).toString()).equals("-0.307");\r
2848         (new Test("sub126")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal(".43822")).toString()).equals("-0.43822");\r
2849         (new Test("sub127")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal(".911")).toString()).equals("-0.911");\r
2850         (new Test("sub128")).ok=((new com.ibm.icu.math.BigDecimal(".0")).subtract(new com.ibm.icu.math.BigDecimal(".02")).toString()).equals("-0.02");\r
2851         (new Test("sub129")).ok=((new com.ibm.icu.math.BigDecimal("00")).subtract(new com.ibm.icu.math.BigDecimal(".392")).toString()).equals("-0.392");\r
2852         (new Test("sub130")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal(".26")).toString()).equals("-0.26");\r
2853         (new Test("sub131")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("0.51")).toString()).equals("-0.51");\r
2854         (new Test("sub132")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal(".2234")).toString()).equals("-0.2234");\r
2855         (new Test("sub133")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal(".2")).toString()).equals("-0.2");\r
2856         (new Test("sub134")).ok=((new com.ibm.icu.math.BigDecimal(".0")).subtract(new com.ibm.icu.math.BigDecimal(".0008")).toString()).equals("-0.0008");\r
2857         // 0. on left\r
2858         (new Test("sub140")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-.1")).toString()).equals("0.1");\r
2859         (new Test("sub141")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).subtract(new com.ibm.icu.math.BigDecimal("-.97983")).toString()).equals("0.97983");\r
2860         (new Test("sub142")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-.9")).toString()).equals("0.9");\r
2861         (new Test("sub143")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-0.102")).toString()).equals("0.102");\r
2862         (new Test("sub144")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-.4")).toString()).equals("0.4");\r
2863         (new Test("sub145")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-.307")).toString()).equals("0.307");\r
2864         (new Test("sub146")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-.43822")).toString()).equals("0.43822");\r
2865         (new Test("sub147")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-.911")).toString()).equals("0.911");\r
2866         (new Test("sub148")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-.02")).toString()).equals("0.02");\r
2867         (new Test("sub149")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).subtract(new com.ibm.icu.math.BigDecimal("-.392")).toString()).equals("0.392");\r
2868         (new Test("sub150")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-.26")).toString()).equals("0.26");\r
2869         (new Test("sub151")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-0.51")).toString()).equals("0.51");\r
2870         (new Test("sub152")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-.2234")).toString()).equals("0.2234");\r
2871         (new Test("sub153")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-.2")).toString()).equals("0.2");\r
2872         (new Test("sub154")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-.0008")).toString()).equals("0.0008");\r
2873         // negatives of same\r
2874         (new Test("sub160")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-.1")).toString()).equals("0.1");\r
2875         (new Test("sub161")).ok=((new com.ibm.icu.math.BigDecimal("00")).subtract(new com.ibm.icu.math.BigDecimal("-.97983")).toString()).equals("0.97983");\r
2876         (new Test("sub162")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-.9")).toString()).equals("0.9");\r
2877         (new Test("sub163")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-0.102")).toString()).equals("0.102");\r
2878         (new Test("sub164")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-.4")).toString()).equals("0.4");\r
2879         (new Test("sub165")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-.307")).toString()).equals("0.307");\r
2880         (new Test("sub166")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-.43822")).toString()).equals("0.43822");\r
2881         (new Test("sub167")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-.911")).toString()).equals("0.911");\r
2882         (new Test("sub168")).ok=((new com.ibm.icu.math.BigDecimal(".0")).subtract(new com.ibm.icu.math.BigDecimal("-.02")).toString()).equals("0.02");\r
2883         (new Test("sub169")).ok=((new com.ibm.icu.math.BigDecimal("00")).subtract(new com.ibm.icu.math.BigDecimal("-.392")).toString()).equals("0.392");\r
2884         (new Test("sub170")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-.26")).toString()).equals("0.26");\r
2885         (new Test("sub171")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-0.51")).toString()).equals("0.51");\r
2886         (new Test("sub172")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-.2234")).toString()).equals("0.2234");\r
2887         (new Test("sub173")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-.2")).toString()).equals("0.2");\r
2888         (new Test("sub174")).ok=((new com.ibm.icu.math.BigDecimal(".0")).subtract(new com.ibm.icu.math.BigDecimal("-.0008")).toString()).equals("0.0008");\r
2889 \r
2890         // more fixed, LHS swaps [really same as testcases under add]\r
2891         (new Test("sub180")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-10")).subtract(zero).toString()).equals("-0.0000056267");\r
2892         (new Test("sub181")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-5")).subtract(zero).toString()).equals("-0.56267");\r
2893         (new Test("sub182")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-2")).subtract(zero).toString()).equals("-562.67");\r
2894         (new Test("sub183")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-1")).subtract(zero).toString()).equals("-5626.7");\r
2895         (new Test("sub185")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-0")).subtract(zero).toString()).equals("-56267");\r
2896 \r
2897         try {\r
2898             ten.subtract((com.ibm.icu.math.BigDecimal) null);\r
2899             flag = false;\r
2900         } catch (java.lang.NullPointerException $83) {\r
2901             flag = true;\r
2902         }/* checknull */\r
2903         (new Test("sub200")).ok = flag;\r
2904         try {\r
2905             ten.subtract(ten, (com.ibm.icu.math.MathContext) null);\r
2906             flag = false;\r
2907         } catch (java.lang.NullPointerException $84) {\r
2908             flag = true;\r
2909         }/* checknull2 */\r
2910         (new Test("sub201")).ok = flag;\r
2911 \r
2912         try {\r
2913             com.ibm.icu.math.BigDecimal.ONE.subtract(tenlong, mcld);\r
2914             flag = false;\r
2915         } catch (java.lang.ArithmeticException $85) {\r
2916             ae = $85;\r
2917             flag = (ae.getMessage()).equals("Too many digits:" + " "\r
2918                     + tenlong.toString());\r
2919         }/* checkdigits */\r
2920         (new Test("sub202")).ok = flag;\r
2921         try {\r
2922             tenlong.subtract(com.ibm.icu.math.BigDecimal.ONE, mcld);\r
2923             flag = false;\r
2924         } catch (java.lang.ArithmeticException $86) {\r
2925             ae = $86;\r
2926             flag = (ae.getMessage()).equals("Too many digits:" + " "\r
2927                     + tenlong.toString());\r
2928         }/* checkdigits */\r
2929         (new Test("sub203")).ok = flag;\r
2930         summary("subtract");\r
2931     }\r
2932 \r
2933     /* ----------------------------------------------------------------- */\r
2934 \r
2935     /* ----------------------------------------------------------------- */\r
2936     /* Other methods */\r
2937     /* ----------------------------------------------------------------- */\r
2938 \r
2939     /** Test the <code>BigDecimal.byteValue()</code> method. */\r
2940 \r
2941     public void diagbyteValue() {\r
2942         boolean flag = false;\r
2943         java.lang.String v = null;\r
2944         java.lang.ArithmeticException ae = null;\r
2945         java.lang.String badstrings[];\r
2946         int i = 0;\r
2947         java.lang.String norm = null;\r
2948 \r
2949         (new Test("byv001")).ok=((((byte)-128)))==((new com.ibm.icu.math.BigDecimal("-128")).byteValue());\r
2950         (new Test("byv002")).ok=((0))==((new com.ibm.icu.math.BigDecimal("0")).byteValue());\r
2951         (new Test("byv003")).ok=((1))==((new com.ibm.icu.math.BigDecimal("1")).byteValue());\r
2952         (new Test("byv004")).ok=((99))==((new com.ibm.icu.math.BigDecimal("99")).byteValue());\r
2953         (new Test("byv005")).ok=((127))==((new com.ibm.icu.math.BigDecimal("127")).byteValue());\r
2954         (new Test("byv006")).ok=((-128))==((new com.ibm.icu.math.BigDecimal("128")).byteValue());\r
2955         (new Test("byv007")).ok=((-127))==((new com.ibm.icu.math.BigDecimal("129")).byteValue());\r
2956         (new Test("byv008")).ok=((127))==((new com.ibm.icu.math.BigDecimal("-129")).byteValue());\r
2957         (new Test("byv009")).ok=((126))==((new com.ibm.icu.math.BigDecimal("-130")).byteValue());\r
2958         (new Test("byv010")).ok=((bmax))==((new com.ibm.icu.math.BigDecimal(bmax)).byteValue());\r
2959         (new Test("byv011")).ok=((bmin))==((new com.ibm.icu.math.BigDecimal(bmin)).byteValue());\r
2960         (new Test("byv012")).ok=((bneg))==((new com.ibm.icu.math.BigDecimal(bneg)).byteValue());\r
2961         (new Test("byv013")).ok=((bzer))==((new com.ibm.icu.math.BigDecimal(bzer)).byteValue());\r
2962         (new Test("byv014")).ok=((bpos))==((new com.ibm.icu.math.BigDecimal(bpos)).byteValue());\r
2963         (new Test("byv015")).ok=((bmin))==((new com.ibm.icu.math.BigDecimal(bmax+1)).byteValue());\r
2964         (new Test("byv016")).ok=((bmax))==((new com.ibm.icu.math.BigDecimal(bmin-1)).byteValue());\r
2965         \r
2966         (new Test("byv021")).ok=((((byte)-128)))==((new com.ibm.icu.math.BigDecimal("-128")).byteValueExact());\r
2967         (new Test("byv022")).ok=((0))==((new com.ibm.icu.math.BigDecimal("0")).byteValueExact());\r
2968         (new Test("byv023")).ok=((1))==((new com.ibm.icu.math.BigDecimal("1")).byteValueExact());\r
2969         (new Test("byv024")).ok=((99))==((new com.ibm.icu.math.BigDecimal("99")).byteValueExact());\r
2970         (new Test("byv025")).ok=((127))==((new com.ibm.icu.math.BigDecimal("127")).byteValueExact());\r
2971         (new Test("byv026")).ok=((bmax))==((new com.ibm.icu.math.BigDecimal(bmax)).byteValueExact());\r
2972         (new Test("byv027")).ok=((bmin))==((new com.ibm.icu.math.BigDecimal(bmin)).byteValueExact());\r
2973         (new Test("byv028")).ok=((bneg))==((new com.ibm.icu.math.BigDecimal(bneg)).byteValueExact());\r
2974         (new Test("byv029")).ok=((bzer))==((new com.ibm.icu.math.BigDecimal(bzer)).byteValueExact());\r
2975         (new Test("byv030")).ok=((bpos))==((new com.ibm.icu.math.BigDecimal(bpos)).byteValueExact());\r
2976         try {\r
2977             v = "-129";\r
2978             (new com.ibm.icu.math.BigDecimal(v)).byteValueExact();\r
2979             flag = false;\r
2980         } catch (java.lang.ArithmeticException $87) {\r
2981             ae = $87;\r
2982             flag = (ae.getMessage()).equals("Conversion overflow:" + " " + v);\r
2983         }\r
2984         (new Test("byv100")).ok = flag;\r
2985         try {\r
2986             v = "128";\r
2987             (new com.ibm.icu.math.BigDecimal(v)).byteValueExact();\r
2988             flag = false;\r
2989         } catch (java.lang.ArithmeticException $88) {\r
2990             ae = $88;\r
2991             flag = (ae.getMessage()).equals("Conversion overflow:" + " " + v);\r
2992         }\r
2993         (new Test("byv101")).ok = flag;\r
2994         try {\r
2995             v = "1.5";\r
2996             (new com.ibm.icu.math.BigDecimal(v)).byteValueExact();\r
2997             flag = false;\r
2998         } catch (java.lang.ArithmeticException $89) {\r
2999             ae = $89;\r
3000             flag = (ae.getMessage()).equals("Decimal part non-zero:" + " " + v);\r
3001         }\r
3002         (new Test("byv102")).ok = flag;\r
3003 \r
3004         badstrings = new java.lang.String[] {\r
3005                 "1234",\r
3006                 (new com.ibm.icu.math.BigDecimal(bmax)).add(one).toString(),\r
3007                 (new com.ibm.icu.math.BigDecimal(bmin)).subtract(one)\r
3008                         .toString(),\r
3009                 "170",\r
3010                 "270",\r
3011                 "370",\r
3012                 "470",\r
3013                 "570",\r
3014                 "670",\r
3015                 "770",\r
3016                 "870",\r
3017                 "970",\r
3018                 "-170",\r
3019                 "-270",\r
3020                 "-370",\r
3021                 "-470",\r
3022                 "-570",\r
3023                 "-670",\r
3024                 "-770",\r
3025                 "-870",\r
3026                 "-970",\r
3027                 (new com.ibm.icu.math.BigDecimal(bmin)).multiply(two)\r
3028                         .toString(),\r
3029                 (new com.ibm.icu.math.BigDecimal(bmax)).multiply(two)\r
3030                         .toString(),\r
3031                 (new com.ibm.icu.math.BigDecimal(bmin)).multiply(ten)\r
3032                         .toString(),\r
3033                 (new com.ibm.icu.math.BigDecimal(bmax)).multiply(ten)\r
3034                         .toString(), "-1234" }; // 220\r
3035         // 221\r
3036         // 222\r
3037         // 223\r
3038         // 224\r
3039         // 225\r
3040         // 226\r
3041         // 227\r
3042         // 228\r
3043         // 229\r
3044         // 230\r
3045         // 231\r
3046         // 232\r
3047         // 233\r
3048         // 234\r
3049         // 235\r
3050         // 236\r
3051         // 237\r
3052         // 238\r
3053         // 239\r
3054         // 240\r
3055         // 241\r
3056         // 242\r
3057         // 243\r
3058         // 244\r
3059         // 245\r
3060         {\r
3061             int $90 = badstrings.length;\r
3062             i = 0;\r
3063             for (; $90 > 0; $90--, i++) {\r
3064                 try {\r
3065                     v = badstrings[i];\r
3066                     (new com.ibm.icu.math.BigDecimal(v)).byteValueExact();\r
3067                     flag = false;\r
3068                 } catch (java.lang.ArithmeticException $91) {\r
3069                     ae = $91;\r
3070                     norm = (new com.ibm.icu.math.BigDecimal(v)).toString();\r
3071                     flag = (ae.getMessage()).equals("Conversion overflow:"\r
3072                             + " " + norm);\r
3073                 }\r
3074                 (new Test("byv" + (220 + i))).ok = flag;\r
3075             }\r
3076         }/* i */\r
3077 \r
3078         summary("byteValue+");\r
3079     }\r
3080 \r
3081     /* ----------------------------------------------------------------- */\r
3082 \r
3083     /**\r
3084      * Test the {@link com.ibm.icu.math.BigDecimal#compareTo(java.lang.Object)}\r
3085      * method.\r
3086      */\r
3087 \r
3088     public void diagcomparetoObj() {\r
3089 //        boolean flag = false;\r
3090 //        com.ibm.icu.math.BigDecimal d;\r
3091 //        com.ibm.icu.math.BigDecimal long1;\r
3092 //        com.ibm.icu.math.BigDecimal long2;\r
3093 //\r
3094 //        d = new com.ibm.icu.math.BigDecimal(17);\r
3095 //        (new Test("cto001")).ok = (d\r
3096 //                .compareTo((java.lang.Object) (new com.ibm.icu.math.BigDecimal(\r
3097 //                        66)))) == (-1);\r
3098 //        (new Test("cto002")).ok = (d\r
3099 //                .compareTo((java.lang.Object) ((new com.ibm.icu.math.BigDecimal(\r
3100 //                        10)).add(new com.ibm.icu.math.BigDecimal(7))))) == 0;\r
3101 //        (new Test("cto003")).ok = (d\r
3102 //                .compareTo((java.lang.Object) (new com.ibm.icu.math.BigDecimal(\r
3103 //                        10)))) == 1;\r
3104 //        long1 = new com.ibm.icu.math.BigDecimal("12345678903");\r
3105 //        long2 = new com.ibm.icu.math.BigDecimal("12345678900");\r
3106 //        (new Test("cto004")).ok = (long1.compareTo((java.lang.Object) long2)) == 1;\r
3107 //        (new Test("cto005")).ok = (long2.compareTo((java.lang.Object) long1)) == (-1);\r
3108 //        (new Test("cto006")).ok = (long2.compareTo((java.lang.Object) long2)) == 0;\r
3109 //        try {\r
3110 //            d.compareTo((java.lang.Object) null);\r
3111 //            flag = false;\r
3112 //        } catch (java.lang.NullPointerException $92) {\r
3113 //            flag = true; // should get here\r
3114 //        }\r
3115 //        (new Test("cto101")).ok = flag;\r
3116 //        try {\r
3117 //            d.compareTo((java.lang.Object) "foo");\r
3118 //            flag = false;\r
3119 //        } catch (java.lang.ClassCastException $93) {\r
3120 //            flag = true; // should get here\r
3121 //        }\r
3122 //        (new Test("cto102")).ok = flag;\r
3123 //        summary("compareTo(Obj)");\r
3124     }\r
3125 \r
3126     /* ----------------------------------------------------------------- */\r
3127 \r
3128     /** Test the {@link com.ibm.icu.math.BigDecimal#doubleValue} method. */\r
3129 \r
3130     public void diagdoublevalue() {\r
3131         java.lang.String val;\r
3132         // 1999.03.07 Infinities no longer errors\r
3133         val = "-1";\r
3134         (new Test("dov001")).ok = ((new com.ibm.icu.math.BigDecimal(val)).doubleValue()) == ((new java.lang.Double(val)).doubleValue());\r
3135         val = "-0.1";\r
3136         (new Test("dov002")).ok = ((new com.ibm.icu.math.BigDecimal(val)).doubleValue()) == ((new java.lang.Double(val)).doubleValue());\r
3137         val = "0";\r
3138         (new Test("dov003")).ok = ((new com.ibm.icu.math.BigDecimal(val)).doubleValue()) == ((new java.lang.Double(val)).doubleValue());\r
3139         val = "0.1";\r
3140         (new Test("dov004")).ok = ((new com.ibm.icu.math.BigDecimal(val)).doubleValue()) == ((new java.lang.Double(val)).doubleValue());\r
3141         val = "1";\r
3142         (new Test("dov005")).ok = ((new com.ibm.icu.math.BigDecimal(val)).doubleValue()) == ((new java.lang.Double(val)).doubleValue());\r
3143         val = "1e1000";\r
3144         (new Test("dov006")).ok = ((new com.ibm.icu.math.BigDecimal(val)).doubleValue()) == java.lang.Double.POSITIVE_INFINITY;\r
3145         val = "-1e1000";\r
3146         (new Test("dov007")).ok = ((new com.ibm.icu.math.BigDecimal(val)).doubleValue()) == java.lang.Double.NEGATIVE_INFINITY;\r
3147         summary("doubleValue");\r
3148     }\r
3149 \r
3150     /* ----------------------------------------------------------------- */\r
3151 \r
3152     /** Test the {@link com.ibm.icu.math.BigDecimal#equals} method. */\r
3153 \r
3154     public void diagequals() {\r
3155         com.ibm.icu.math.BigDecimal d;\r
3156         d = new com.ibm.icu.math.BigDecimal(17);\r
3157         (new Test("equ001")).ok = (!(d.equals((java.lang.Object) null)));\r
3158         (new Test("equ002")).ok = (!(d.equals((java.lang.Object) "foo")));\r
3159         (new Test("equ003")).ok = (!(d\r
3160                 .equals((java.lang.Object) (new com.ibm.icu.math.BigDecimal(66)))));\r
3161         (new Test("equ004")).ok = d.equals((java.lang.Object) d);\r
3162         (new Test("equ005")).ok = d\r
3163                 .equals((java.lang.Object) ((new com.ibm.icu.math.BigDecimal(10))\r
3164                         .add(new com.ibm.icu.math.BigDecimal(7))));\r
3165         summary("equals");\r
3166     }\r
3167 \r
3168     /* ----------------------------------------------------------------- */\r
3169 \r
3170     /** Test the {@link com.ibm.icu.math.BigDecimal#floatValue} method. */\r
3171 \r
3172     public void diagfloatvalue() {\r
3173         java.lang.String val;\r
3174         // 1999.03.07 Infinities no longer errors\r
3175         val = "-1";\r
3176         (new Test("flv001")).ok = ((new com.ibm.icu.math.BigDecimal(val)).floatValue()) == ((new java.lang.Float(val)).floatValue());\r
3177         val = "-0.1";\r
3178         (new Test("flv002")).ok = ((new com.ibm.icu.math.BigDecimal(val)).floatValue()) == ((new java.lang.Float(val)).floatValue());\r
3179         val = "0";\r
3180         (new Test("flv003")).ok = ((new com.ibm.icu.math.BigDecimal(val)).floatValue()) == ((new java.lang.Float(val)).floatValue());\r
3181         val = "0.1";\r
3182         (new Test("flv004")).ok = ((new com.ibm.icu.math.BigDecimal(val)).floatValue()) == ((new java.lang.Float(val)).floatValue());\r
3183         val = "1";\r
3184         (new Test("flv005")).ok = ((new com.ibm.icu.math.BigDecimal(val)).floatValue()) == ((new java.lang.Float(val)).floatValue());\r
3185         val = "1e200";\r
3186         (new Test("flv006")).ok = ((new com.ibm.icu.math.BigDecimal(val)).floatValue()) == java.lang.Float.POSITIVE_INFINITY;\r
3187         val = "-1e200";\r
3188         (new Test("flv007")).ok = ((new com.ibm.icu.math.BigDecimal(val)).floatValue()) == java.lang.Float.NEGATIVE_INFINITY;\r
3189         val = "1e1000";\r
3190         (new Test("flv008")).ok = ((new com.ibm.icu.math.BigDecimal(val)).floatValue()) == java.lang.Float.POSITIVE_INFINITY;\r
3191         val = "-1e1000";\r
3192         (new Test("flv009")).ok = ((new com.ibm.icu.math.BigDecimal(val)).floatValue()) == java.lang.Float.NEGATIVE_INFINITY;\r
3193         summary("floatValue");\r
3194     }\r
3195 \r
3196     /* ----------------------------------------------------------------- */\r
3197 \r
3198     /** Test the {@link com.ibm.icu.math.BigDecimal#format} method. */\r
3199 \r
3200     public void diagformat() {\r
3201         boolean flag = false;\r
3202         int eng;\r
3203         int sci;\r
3204         com.ibm.icu.math.BigDecimal d04;\r
3205         com.ibm.icu.math.BigDecimal d05;\r
3206         com.ibm.icu.math.BigDecimal d06;\r
3207         com.ibm.icu.math.BigDecimal d15;\r
3208         java.lang.IllegalArgumentException iae = null;\r
3209         com.ibm.icu.math.BigDecimal d050;\r
3210         com.ibm.icu.math.BigDecimal d150;\r
3211         com.ibm.icu.math.BigDecimal m050;\r
3212         com.ibm.icu.math.BigDecimal m150;\r
3213         com.ibm.icu.math.BigDecimal d051;\r
3214         com.ibm.icu.math.BigDecimal d151;\r
3215         com.ibm.icu.math.BigDecimal d000;\r
3216         com.ibm.icu.math.BigDecimal d500;\r
3217         java.lang.ArithmeticException ae = null;\r
3218         // 1999.02.09 now only two signatures for format(), so some tests below\r
3219         // may now be redundant\r
3220 \r
3221         (new Test("for001")).ok=((new com.ibm.icu.math.BigDecimal("12.3")).format(-1,-1)).equals("12.3");\r
3222         (new Test("for002")).ok=((new com.ibm.icu.math.BigDecimal("-12.73")).format(-1,-1)).equals("-12.73");\r
3223         (new Test("for003")).ok=((new com.ibm.icu.math.BigDecimal("0.000")).format(-1,-1)).equals("0.000");\r
3224         (new Test("for004")).ok=((new com.ibm.icu.math.BigDecimal("3E+3")).format(-1,-1)).equals("3000");\r
3225         (new Test("for005")).ok=((new com.ibm.icu.math.BigDecimal("3")).format(4,-1)).equals("   3");\r
3226         (new Test("for006")).ok=((new com.ibm.icu.math.BigDecimal("1.73")).format(4,0)).equals("   2");\r
3227         (new Test("for007")).ok=((new com.ibm.icu.math.BigDecimal("1.73")).format(4,1)).equals("   1.7");\r
3228         (new Test("for008")).ok=((new com.ibm.icu.math.BigDecimal("1.75")).format(4,1)).equals("   1.8");\r
3229         (new Test("for009")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).format(4,1)).equals("   0.5");\r
3230         (new Test("for010")).ok=((new com.ibm.icu.math.BigDecimal("0.05")).format(4,1)).equals("   0.1");\r
3231         (new Test("for011")).ok=((new com.ibm.icu.math.BigDecimal("0.04")).format(4,1)).equals("   0.0");\r
3232         (new Test("for012")).ok=((new com.ibm.icu.math.BigDecimal("0")).format(4,0)).equals("   0");\r
3233         (new Test("for013")).ok=((new com.ibm.icu.math.BigDecimal("0")).format(4,1)).equals("   0.0");\r
3234         (new Test("for014")).ok=((new com.ibm.icu.math.BigDecimal("0")).format(4,2)).equals("   0.00");\r
3235         (new Test("for015")).ok=((new com.ibm.icu.math.BigDecimal("0")).format(4,3)).equals("   0.000");\r
3236         (new Test("for016")).ok=((new com.ibm.icu.math.BigDecimal("0")).format(4,4)).equals("   0.0000");\r
3237         (new Test("for017")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).format(4,0)).equals("   0");\r
3238         (new Test("for018")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).format(4,1)).equals("   0.0");\r
3239         (new Test("for019")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).format(4,2)).equals("   0.01");\r
3240         (new Test("for020")).ok=((new com.ibm.icu.math.BigDecimal("0.004")).format(4,2)).equals("   0.00");\r
3241         (new Test("for021")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).format(4,3)).equals("   0.005");\r
3242         (new Test("for022")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).format(4,4)).equals("   0.0050");\r
3243         \r
3244         (new Test("for023")).ok=((new com.ibm.icu.math.BigDecimal("1.73")).format(4,2)).equals("   1.73");\r
3245         (new Test("for024")).ok=((new com.ibm.icu.math.BigDecimal("1.73")).format(4,3)).equals("   1.730");\r
3246         (new Test("for025")).ok=((new com.ibm.icu.math.BigDecimal("-.76")).format(4,1)).equals("  -0.8");\r
3247         (new Test("for026")).ok=((new com.ibm.icu.math.BigDecimal("-12.73")).format(-1,4)).equals("-12.7300");\r
3248         \r
3249         (new Test("for027")).ok=((new com.ibm.icu.math.BigDecimal("3.03")).format(4,-1)).equals("   3.03");\r
3250         (new Test("for028")).ok=((new com.ibm.icu.math.BigDecimal("3.03")).format(4,1)).equals("   3.0");\r
3251         (new Test("for029")).ok=((new com.ibm.icu.math.BigDecimal("3.03")).format(4,-1,3,-1,-1,-1)).equals("   3.03     ");\r
3252         (new Test("for030")).ok=((new com.ibm.icu.math.BigDecimal("3.03")).format(-1,-1,3,-1,-1,-1)).equals("3.03     ");\r
3253         (new Test("for031")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,-1,-1,4,-1,-1)).equals("1.234573E+4");\r
3254         (new Test("for032")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,-1,-1,5,-1,-1)).equals("12345.73");\r
3255         (new Test("for033")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,-1,-1,6,-1,-1)).equals("12345.73");\r
3256         \r
3257         (new Test("for034")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,8,-1,3,-1,-1)).equals("1.23457300E+4");\r
3258         (new Test("for035")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,7,-1,3,-1,-1)).equals("1.2345730E+4");\r
3259         (new Test("for036")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,6,-1,3,-1,-1)).equals("1.234573E+4");\r
3260         (new Test("for037")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,5,-1,3,-1,-1)).equals("1.23457E+4");\r
3261         (new Test("for038")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,4,-1,3,-1,-1)).equals("1.2346E+4");\r
3262         (new Test("for039")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,3,-1,3,-1,-1)).equals("1.235E+4");\r
3263         (new Test("for040")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,2,-1,3,-1,-1)).equals("1.23E+4");\r
3264         (new Test("for041")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,1,-1,3,-1,-1)).equals("1.2E+4");\r
3265         (new Test("for042")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,0,-1,3,-1,-1)).equals("1E+4");\r
3266         \r
3267         (new Test("for043")).ok=((new com.ibm.icu.math.BigDecimal("99999.99")).format(-1,6,-1,3,-1,-1)).equals("9.999999E+4");\r
3268         (new Test("for044")).ok=((new com.ibm.icu.math.BigDecimal("99999.99")).format(-1,5,-1,3,-1,-1)).equals("1.00000E+5");\r
3269         (new Test("for045")).ok=((new com.ibm.icu.math.BigDecimal("99999.99")).format(-1,2,-1,3,-1,-1)).equals("1.00E+5");\r
3270         (new Test("for046")).ok=((new com.ibm.icu.math.BigDecimal("99999.99")).format(-1,0,-1,3,-1,-1)).equals("1E+5");\r
3271         (new Test("for047")).ok=((new com.ibm.icu.math.BigDecimal("99999.99")).format(3,0,-1,3,-1,-1)).equals("  1E+5");\r
3272         \r
3273         (new Test("for048")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,-1,2,2,-1,-1)).equals("1.234573E+04");\r
3274         (new Test("for049")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,3,-1,0,-1,-1)).equals("1.235E+4");\r
3275         (new Test("for050")).ok=((new com.ibm.icu.math.BigDecimal("1.234573")).format(-1,3,-1,0,-1,-1)).equals("1.235");\r
3276         (new Test("for051")).ok=((new com.ibm.icu.math.BigDecimal("123.45")).format(-1,3,2,0,-1,-1)).equals("1.235E+02");\r
3277         \r
3278         (new Test("for052")).ok=((new com.ibm.icu.math.BigDecimal("0.444")).format(-1,0)).equals("0");\r
3279         (new Test("for053")).ok=((new com.ibm.icu.math.BigDecimal("-0.444")).format(-1,0)).equals("0");\r
3280         (new Test("for054")).ok=((new com.ibm.icu.math.BigDecimal("0.4")).format(-1,0)).equals("0");\r
3281         (new Test("for055")).ok=((new com.ibm.icu.math.BigDecimal("-0.4")).format(-1,0)).equals("0");\r
3282 \r
3283         eng = com.ibm.icu.math.MathContext.ENGINEERING;\r
3284         sci = com.ibm.icu.math.MathContext.SCIENTIFIC;\r
3285         (new Test("for060")).ok=((new com.ibm.icu.math.BigDecimal("1234.5")).format(-1,3,2,0,eng,-1)).equals("1.235E+03");\r
3286         (new Test("for061")).ok=((new com.ibm.icu.math.BigDecimal("12345")).format(-1,3,3,0,eng,-1)).equals("12.345E+003");\r
3287         (new Test("for062")).ok=((new com.ibm.icu.math.BigDecimal("12345")).format(-1,3,3,0,sci,-1)).equals("1.235E+004");\r
3288         (new Test("for063")).ok=((new com.ibm.icu.math.BigDecimal("1234.5")).format(4,3,2,0,eng,-1)).equals("   1.235E+03");\r
3289         (new Test("for064")).ok=((new com.ibm.icu.math.BigDecimal("12345")).format(5,3,3,0,eng,-1)).equals("   12.345E+003");\r
3290         (new Test("for065")).ok=((new com.ibm.icu.math.BigDecimal("12345")).format(6,3,3,0,sci,-1)).equals("     1.235E+004");\r
3291 \r
3292         (new Test("for066")).ok=((new com.ibm.icu.math.BigDecimal("1.2345")).format(-1,3,2,0,-1,-1)).equals("1.235    ");\r
3293         (new Test("for067")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,-1,3,6,-1,-1)).equals("12345.73     ");\r
3294         (new Test("for068")).ok=((new com.ibm.icu.math.BigDecimal("12345e+5")).format(-1,0)).equals("1234500000");\r
3295         (new Test("for069")).ok=((new com.ibm.icu.math.BigDecimal("12345e+5")).format(-1,1)).equals("1234500000.0");\r
3296         (new Test("for070")).ok=((new com.ibm.icu.math.BigDecimal("12345e+5")).format(-1,2)).equals("1234500000.00");\r
3297         (new Test("for071")).ok=((new com.ibm.icu.math.BigDecimal("12345e+5")).format(-1,3)).equals("1234500000.000");\r
3298         (new Test("for072")).ok=((new com.ibm.icu.math.BigDecimal("12345e+5")).format(-1,4)).equals("1234500000.0000");\r
3299 \r
3300         // some from ANSI Dallas [Nov 1998]\r
3301         (new Test("for073")).ok=((new com.ibm.icu.math.BigDecimal("99.999")).format(-1,2,-1,2,-1,-1)).equals("100.00");\r
3302         (new Test("for074")).ok=((new com.ibm.icu.math.BigDecimal("0.99999")).format(-1,4,2,2,-1,-1)).equals("1.0000    ");\r
3303 \r
3304         // try some rounding modes [default ROUND_HALF_UP widely tested above]\r
3305         // the first few also tests that defaults are accepted for the others\r
3306         d04 = new com.ibm.icu.math.BigDecimal("0.04");\r
3307         d05 = new com.ibm.icu.math.BigDecimal("0.05");\r
3308         d06 = new com.ibm.icu.math.BigDecimal("0.06");\r
3309         d15 = new com.ibm.icu.math.BigDecimal("0.15");\r
3310         (new Test("for080")).ok = (d05.format(-1, 1)).equals("0.1");\r
3311         (new Test("for081")).ok = (d05.format(-1, 1, -1, -1, -1,\r
3312                 com.ibm.icu.math.MathContext.ROUND_HALF_UP)).equals("0.1");\r
3313         (new Test("for082")).ok = (d05.format(-1, 1, -1, -1, -1, -1))\r
3314                 .equals("0.1");\r
3315         (new Test("for083")).ok = (d05.format(-1, -1, -1, -1, -1, -1))\r
3316                 .equals("0.05");\r
3317         (new Test("for084")).ok = (d05.format(-1, -1)).equals("0.05");\r
3318         try {\r
3319             d05.format(-1, -1, -1, -1, -1, 30); // bad mode\r
3320             flag = false; // shouldn't get here\r
3321         } catch (java.lang.IllegalArgumentException $94) {\r
3322             iae = $94;\r
3323             flag = (iae.getMessage()).equals("Bad argument 6 to format: 30");\r
3324         }\r
3325         (new Test("for085")).ok = flag;\r
3326 \r
3327         (new Test("for090")).ok=(d04.format(-1,1)).equals("0.0");\r
3328         (new Test("for091")).ok=(d06.format(-1,1)).equals("0.1");\r
3329         (new Test("for092")).ok=(d04.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN)).equals("0.0");\r
3330         (new Test("for093")).ok=(d05.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN)).equals("0.0");\r
3331         (new Test("for094")).ok=(d06.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN)).equals("0.1");\r
3332 \r
3333         (new Test("for095")).ok=(d04.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN)).equals("0.0");\r
3334         (new Test("for096")).ok=(d05.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN)).equals("0.0");\r
3335         (new Test("for097")).ok=(d06.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN)).equals("0.1");\r
3336         (new Test("for098")).ok=(d15.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN)).equals("0.2");\r
3337         d050 = new com.ibm.icu.math.BigDecimal("0.050");\r
3338         d150 = new com.ibm.icu.math.BigDecimal("0.150");\r
3339         (new Test("for099")).ok=(d050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN)).equals("0.0");\r
3340         (new Test("for100")).ok=(d150.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN)).equals("0.2");\r
3341         m050 = new com.ibm.icu.math.BigDecimal("-0.050");\r
3342         m150 = new com.ibm.icu.math.BigDecimal("-0.150");\r
3343         (new Test("for101")).ok=(m050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN)).equals("0.0");\r
3344         (new Test("for102")).ok=(m150.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN)).equals("-0.2");\r
3345         d051 = new com.ibm.icu.math.BigDecimal("0.051");\r
3346         d151 = new com.ibm.icu.math.BigDecimal("0.151");\r
3347         (new Test("for103")).ok=(d051.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN)).equals("0.1");\r
3348         (new Test("for104")).ok=(d151.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN)).equals("0.2");\r
3349         \r
3350         (new Test("for105")).ok=(m050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_CEILING)).equals("0.0");\r
3351         (new Test("for106")).ok=(m150.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_CEILING)).equals("-0.1");\r
3352         (new Test("for107")).ok=(d050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_CEILING)).equals("0.1");\r
3353         (new Test("for108")).ok=(d150.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_CEILING)).equals("0.2");\r
3354         \r
3355         (new Test("for109")).ok=(m050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_FLOOR)).equals("-0.1");\r
3356         (new Test("for110")).ok=(m150.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_FLOOR)).equals("-0.2");\r
3357         (new Test("for111")).ok=(d050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_FLOOR)).equals("0.0");\r
3358         (new Test("for112")).ok=(d150.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_FLOOR)).equals("0.1");\r
3359         \r
3360         (new Test("for113")).ok=(m050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UP)).equals("-0.1");\r
3361         (new Test("for114")).ok=(m150.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UP)).equals("-0.2");\r
3362         (new Test("for115")).ok=(d050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UP)).equals("0.1");\r
3363         (new Test("for116")).ok=(d150.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UP)).equals("0.2");\r
3364         \r
3365         (new Test("for117")).ok=(m050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_DOWN)).equals("0.0");\r
3366         (new Test("for118")).ok=(m150.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_DOWN)).equals("-0.1");\r
3367         (new Test("for119")).ok=(d050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_DOWN)).equals("0.0");\r
3368         (new Test("for120")).ok=(d150.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_DOWN)).equals("0.1");\r
3369 \r
3370         d000 = new com.ibm.icu.math.BigDecimal("0.000");\r
3371         d500 = new com.ibm.icu.math.BigDecimal("0.500");\r
3372         (new Test("for121")).ok=(d000.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY)).equals("0.0");\r
3373         (new Test("for122")).ok=(d000.format(-1,2,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY)).equals("0.00");\r
3374         (new Test("for123")).ok=(d000.format(-1,3,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY)).equals("0.000");\r
3375         try { // this should trap..\r
3376             d050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY);\r
3377             flag = false;\r
3378         } catch (java.lang.ArithmeticException $95) {\r
3379             ae = $95;\r
3380             flag = (ae.getMessage()).equals("Rounding necessary");\r
3381         }\r
3382         (new Test("for124")).ok=flag;\r
3383         (new Test("for125")).ok=(d050.format(-1,2,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY)).equals("0.05");\r
3384         (new Test("for126")).ok=(d050.format(-1,3,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY)).equals("0.050");\r
3385         (new Test("for127")).ok=(d500.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY)).equals("0.5");\r
3386         (new Test("for128")).ok=(d500.format(-1,2,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY)).equals("0.50");\r
3387         (new Test("for129")).ok=(d500.format(-1,3,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY)).equals("0.500");\r
3388 \r
3389         // bad negs --\r
3390         try {\r
3391             d050.format(-2, -1, -1, -1, -1, -1);\r
3392             flag = false;\r
3393         } catch (java.lang.IllegalArgumentException $96) {\r
3394             flag = true;\r
3395         }\r
3396         (new Test("for131")).ok = flag;\r
3397         try {\r
3398             d050.format(-1, -2, -1, -1, -1, -1);\r
3399             flag = false;\r
3400         } catch (java.lang.IllegalArgumentException $97) {\r
3401             flag = true;\r
3402         }\r
3403         (new Test("for132")).ok = flag;\r
3404         try {\r
3405             d050.format(-1, -1, -2, -1, -1, -1);\r
3406             flag = false;\r
3407         } catch (java.lang.IllegalArgumentException $98) {\r
3408             flag = true;\r
3409         }\r
3410         (new Test("for133")).ok = flag;\r
3411         try {\r
3412             d050.format(-1, -1, -1, -2, -1, -1);\r
3413             flag = false;\r
3414         } catch (java.lang.IllegalArgumentException $99) {\r
3415             flag = true;\r
3416         }\r
3417         (new Test("for134")).ok = flag;\r
3418         try {\r
3419             d050.format(-1, -1, -1, -1, -2, -1);\r
3420             flag = false;\r
3421         } catch (java.lang.IllegalArgumentException $100) {\r
3422             flag = true;\r
3423         }\r
3424         (new Test("for135")).ok = flag;\r
3425         try {\r
3426             d050.format(-1, -1, -1, -1, -1, -2);\r
3427             flag = false;\r
3428         } catch (java.lang.IllegalArgumentException $101) {\r
3429             flag = true;\r
3430         }\r
3431         (new Test("for136")).ok = flag;\r
3432 \r
3433         summary("format");\r
3434     }\r
3435 \r
3436     /* ----------------------------------------------------------------- */\r
3437 \r
3438     /** Test the {@link com.ibm.icu.math.BigDecimal#hashCode} method. */\r
3439 \r
3440     public void diaghashcode() {\r
3441         java.lang.String hs;\r
3442         com.ibm.icu.math.BigDecimal d;\r
3443         hs = "27827817";\r
3444         d = new com.ibm.icu.math.BigDecimal(hs);\r
3445         (new Test("has001")).ok = (d.hashCode()) == (hs.hashCode());\r
3446         hs = "1.265E+200";\r
3447         d = new com.ibm.icu.math.BigDecimal(hs);\r
3448         (new Test("has002")).ok = (d.hashCode()) == (hs.hashCode());\r
3449         hs = "126.5E+200";\r
3450         d = new com.ibm.icu.math.BigDecimal(hs);\r
3451         (new Test("has003")).ok = (d.hashCode()) != (hs.hashCode());\r
3452         summary("hashCode");\r
3453     }\r
3454 \r
3455     /* ----------------------------------------------------------------- */\r
3456 \r
3457     /** Test the {@link com.ibm.icu.math.BigDecimal#intValue} method. */\r
3458 \r
3459     public void diagintvalue() {\r
3460         boolean flag = false;\r
3461         java.lang.String v = null;\r
3462         java.lang.ArithmeticException ae = null;\r
3463         java.lang.String badstrings[];\r
3464         int i = 0;\r
3465         java.lang.String norm = null;\r
3466         com.ibm.icu.math.BigDecimal dimax;\r
3467         com.ibm.icu.math.BigDecimal num = null;\r
3468         com.ibm.icu.math.BigDecimal dv = null;\r
3469         com.ibm.icu.math.BigDecimal dimin;\r
3470 \r
3471         // intValue --\r
3472 \r
3473         (new Test("inv001")).ok=imin==((new com.ibm.icu.math.BigDecimal(imin)).intValue());\r
3474         (new Test("inv002")).ok=((99))==((new com.ibm.icu.math.BigDecimal("99")).intValue());\r
3475         (new Test("inv003")).ok=((1))==((new com.ibm.icu.math.BigDecimal("1")).intValue());\r
3476         (new Test("inv004")).ok=((0))==((new com.ibm.icu.math.BigDecimal("0")).intValue());\r
3477         (new Test("inv005")).ok=((-1))==((new com.ibm.icu.math.BigDecimal("-1")).intValue());\r
3478         (new Test("inv006")).ok=((-99))==((new com.ibm.icu.math.BigDecimal("-99")).intValue());\r
3479         (new Test("inv007")).ok=imax==((new com.ibm.icu.math.BigDecimal(imax)).intValue());\r
3480         (new Test("inv008")).ok=((5))==((new com.ibm.icu.math.BigDecimal("5.0")).intValue());\r
3481         (new Test("inv009")).ok=((5))==((new com.ibm.icu.math.BigDecimal("5.3")).intValue());\r
3482         (new Test("inv010")).ok=((5))==((new com.ibm.icu.math.BigDecimal("5.5")).intValue());\r
3483         (new Test("inv011")).ok=((5))==((new com.ibm.icu.math.BigDecimal("5.7")).intValue());\r
3484         (new Test("inv012")).ok=((5))==((new com.ibm.icu.math.BigDecimal("5.9")).intValue());\r
3485         (new Test("inv013")).ok=((-5))==((new com.ibm.icu.math.BigDecimal("-5.0")).intValue());\r
3486         (new Test("inv014")).ok=((-5))==((new com.ibm.icu.math.BigDecimal("-5.3")).intValue());\r
3487         (new Test("inv015")).ok=((-5))==((new com.ibm.icu.math.BigDecimal("-5.5")).intValue());\r
3488         (new Test("inv016")).ok=((-5))==((new com.ibm.icu.math.BigDecimal("-5.7")).intValue());\r
3489         (new Test("inv017")).ok=((-5))==((new com.ibm.icu.math.BigDecimal("-5.9")).intValue());\r
3490         (new Test("inv018")).ok=((new com.ibm.icu.math.BigDecimal("88888888888")).intValue())==(-1305424328); // ugh\r
3491         (new Test("inv019")).ok=((new com.ibm.icu.math.BigDecimal("-88888888888")).intValue())==1305424328; // ugh\r
3492         (new Test("inv020")).ok=((imin))==((new com.ibm.icu.math.BigDecimal((((long)imax))+1)).intValue());\r
3493         (new Test("inv021")).ok=((imax))==((new com.ibm.icu.math.BigDecimal((((long)imin))-1)).intValue());\r
3494 \r
3495         // intValueExact --\r
3496 \r
3497         (new Test("inv101")).ok=imin==((new com.ibm.icu.math.BigDecimal(imin)).intValueExact());\r
3498         (new Test("inv102")).ok=((99))==((new com.ibm.icu.math.BigDecimal("99")).intValue());\r
3499         (new Test("inv103")).ok=((1))==((new com.ibm.icu.math.BigDecimal("1")).intValue());\r
3500         (new Test("inv104")).ok=((0))==((new com.ibm.icu.math.BigDecimal("0")).intValue());\r
3501         (new Test("inv105")).ok=((-1))==((new com.ibm.icu.math.BigDecimal("-1")).intValue());\r
3502         (new Test("inv106")).ok=((-99))==((new com.ibm.icu.math.BigDecimal("-99")).intValue());\r
3503         (new Test("inv107")).ok=imax==((new com.ibm.icu.math.BigDecimal(imax)).intValue());\r
3504         (new Test("inv108")).ok=((5))==((new com.ibm.icu.math.BigDecimal("5.0")).intValue());\r
3505         (new Test("inv109")).ok=((-5))==((new com.ibm.icu.math.BigDecimal("-5.0")).intValue());\r
3506         (new Test("inv110")).ok=imax==((new com.ibm.icu.math.BigDecimal(imax)).intValueExact());\r
3507 \r
3508         try {\r
3509             v = "-88588688888";\r
3510             (new com.ibm.icu.math.BigDecimal(v)).intValueExact();\r
3511             flag = false;\r
3512         } catch (java.lang.ArithmeticException $102) {\r
3513             ae = $102;\r
3514             flag = (ae.getMessage()).equals("Conversion overflow:" + " " + v);\r
3515         }\r
3516         (new Test("inv200")).ok = flag;\r
3517 \r
3518         // this one could raise either overflow or bad decimal part\r
3519         try {\r
3520             v = "88088818888.00001";\r
3521             (new com.ibm.icu.math.BigDecimal(v)).intValueExact();\r
3522             flag = false;\r
3523         } catch (java.lang.ArithmeticException $103) {\r
3524             flag = true;\r
3525         }\r
3526         (new Test("inv201")).ok = flag;\r
3527 \r
3528         // 1999.10.28: the testcases marked '*' failed\r
3529         badstrings = new java.lang.String[] {\r
3530                 "12345678901",\r
3531                 (new com.ibm.icu.math.BigDecimal(imax)).add(one).toString(),\r
3532                 (new com.ibm.icu.math.BigDecimal(imin)).subtract(one)\r
3533                         .toString(),\r
3534                 "3731367293",\r
3535                 "4731367293",\r
3536                 "5731367293",\r
3537                 "6731367293",\r
3538                 "7731367293",\r
3539                 "8731367293",\r
3540                 "9731367293",\r
3541                 "-3731367293",\r
3542                 "-4731367293",\r
3543                 "-5731367293",\r
3544                 "-6731367293",\r
3545                 "-7731367293",\r
3546                 "-8731367293",\r
3547                 "-9731367293",\r
3548                 (new com.ibm.icu.math.BigDecimal(imin)).multiply(two)\r
3549                         .toString(),\r
3550                 (new com.ibm.icu.math.BigDecimal(imax)).multiply(two)\r
3551                         .toString(),\r
3552                 (new com.ibm.icu.math.BigDecimal(imin)).multiply(ten)\r
3553                         .toString(),\r
3554                 (new com.ibm.icu.math.BigDecimal(imax)).multiply(ten)\r
3555                         .toString(), "4731367293", "4831367293", "4931367293",\r
3556                 "5031367293", "5131367293", "5231367293", "5331367293",\r
3557                 "5431367293", "5531367293", "5631367293", "5731367293",\r
3558                 "5831367293", "5931367293", "6031367293", "6131367293",\r
3559                 "6231367293", "6331367293", "6431367293", "6531367293",\r
3560                 "6631367293", "6731367293", "2200000000", "2300000000",\r
3561                 "2400000000", "2500000000", "2600000000", "2700000000",\r
3562                 "2800000000", "2900000000", "-2200000000", "-2300000000",\r
3563                 "-2400000000", "-2500000000", "-2600000000", "-2700000000",\r
3564                 "-2800000000", "-2900000000", "25E+8", "-25E+8", "-12345678901" }; // 220\r
3565         // 221\r
3566         // 222\r
3567         // 223\r
3568         // 224\r
3569         // 225 *\r
3570         // 226\r
3571         // 227\r
3572         // 228\r
3573         // 229 *\r
3574         // 230\r
3575         // 231\r
3576         // 232 *\r
3577         // 233\r
3578         // 234\r
3579         // 235\r
3580         // 236 *\r
3581         // 237\r
3582         // 238\r
3583         // 239\r
3584         // 240\r
3585         // 241\r
3586         // 242 *\r
3587         // 243 *\r
3588         // 244 *\r
3589         // 245 *\r
3590         // 246 *\r
3591         // 247 *\r
3592         // 248 *\r
3593         // 249 *\r
3594         // 250 *\r
3595         // 251 *\r
3596         // 252 *\r
3597         // 253 *\r
3598         // 254 *\r
3599         // 255 *\r
3600         // 256 *\r
3601         // 257 *\r
3602         // 258 *\r
3603         // 259\r
3604         // 260\r
3605         // 261\r
3606         // 262\r
3607         // 263\r
3608         // 264\r
3609         // 265\r
3610         // 266\r
3611         // 267\r
3612         // 268\r
3613         // 269\r
3614         // 270\r
3615         // 271\r
3616         // 272\r
3617         // 273\r
3618         // 274\r
3619         // 275\r
3620         // 276\r
3621         // 277\r
3622         // 278\r
3623         // 279\r
3624         // 280\r
3625         {\r
3626             int $104 = badstrings.length;\r
3627             i = 0;\r
3628             for (; $104 > 0; $104--, i++) {\r
3629                 try {\r
3630                     v = badstrings[i];\r
3631                     (new com.ibm.icu.math.BigDecimal(v)).intValueExact();\r
3632                     flag = false;\r
3633                 } catch (java.lang.ArithmeticException $105) {\r
3634                     ae = $105;\r
3635                     norm = (new com.ibm.icu.math.BigDecimal(v)).toString();\r
3636                     flag = (ae.getMessage()).equals("Conversion overflow:"\r
3637                             + " " + norm);\r
3638                 }\r
3639                 (new Test("inv" + (220 + i))).ok = flag;\r
3640             }\r
3641         }/* i */\r
3642 \r
3643         // now slip in some single bits...\r
3644         dimax = new com.ibm.icu.math.BigDecimal(imax);\r
3645         {\r
3646             i = 0;\r
3647             for (; i <= 49; i++) {\r
3648                 try {\r
3649                     num = two.pow(new com.ibm.icu.math.BigDecimal(i), mc50);\r
3650                     dv = dimax.add(num, mc50);\r
3651                     dv.intValueExact();\r
3652                     flag = false;\r
3653                 } catch (java.lang.ArithmeticException $106) {\r
3654                     ae = $106;\r
3655                     norm = dv.toString();\r
3656                     flag = (ae.getMessage()).equals("Conversion overflow:"\r
3657                             + " " + norm);\r
3658                 }\r
3659                 (new Test("inv" + (300 + i))).ok = flag;\r
3660             }\r
3661         }/* i */\r
3662         dimin = new com.ibm.icu.math.BigDecimal(imin);\r
3663         {\r
3664             i = 50;\r
3665             for (; i <= 99; i++) {\r
3666                 try {\r
3667                     num = two.pow(new com.ibm.icu.math.BigDecimal(i), mc50);\r
3668                     dv = dimin.subtract(num, mc50);\r
3669                     dv.intValueExact();\r
3670                     flag = false;\r
3671                 } catch (java.lang.ArithmeticException $107) {\r
3672                     ae = $107;\r
3673                     norm = dv.toString();\r
3674                     flag = (ae.getMessage()).equals("Conversion overflow:"\r
3675                             + " " + norm);\r
3676                 }\r
3677                 (new Test("inv" + (300 + i))).ok = flag;\r
3678             }\r
3679         }/* i */\r
3680 \r
3681         // the following should all raise bad-decimal-part exceptions\r
3682         badstrings = new java.lang.String[] { "0.09", "0.9", "0.01", "0.1",\r
3683                 "-0.01", "-0.1", "1.01", "-1.01", "-1.1", "-111.111",\r
3684                 "+111.111", "1.09", "1.05", "1.04", "1.99", "1.9", "1.5",\r
3685                 "1.4", "-1.09", "-1.05", "-1.04", "-1.99", "-1.9", "-1.5",\r
3686                 "-1.4", "1E-1000", "-1E-1000", "11E-1", "1.5" }; // 400-403\r
3687         // 404-407\r
3688         // 408-411\r
3689         // 412-416\r
3690         // 417-420\r
3691         // 421-424\r
3692         // 425-428\r
3693 \r
3694         {\r
3695             int $108 = badstrings.length;\r
3696             i = 0;\r
3697             for (; $108 > 0; $108--, i++) {\r
3698                 try {\r
3699                     v = badstrings[i];\r
3700                     (new com.ibm.icu.math.BigDecimal(v)).intValueExact();\r
3701                     flag = false;\r
3702                 } catch (java.lang.ArithmeticException $109) {\r
3703                     ae = $109;\r
3704                     norm = (new com.ibm.icu.math.BigDecimal(v)).toString();\r
3705                     flag = (ae.getMessage()).equals("Decimal part non-zero:"\r
3706                             + " " + norm);\r
3707                 }\r
3708                 (new Test("inv" + (400 + i))).ok = flag;\r
3709             }\r
3710         }/* i */\r
3711 \r
3712         summary("intValue+");\r
3713     }\r
3714 \r
3715     /* ----------------------------------------------------------------- */\r
3716 \r
3717     /** Test the {@link com.ibm.icu.math.BigDecimal#longValue} method. */\r
3718 \r
3719     public void diaglongvalue() {\r
3720         boolean flag = false;\r
3721         java.lang.String v = null;\r
3722         java.lang.ArithmeticException ae = null;\r
3723         java.lang.String badstrings[];\r
3724         int i = 0;\r
3725         java.lang.String norm = null;\r
3726         com.ibm.icu.math.BigDecimal dlmax;\r
3727         com.ibm.icu.math.BigDecimal num = null;\r
3728         com.ibm.icu.math.BigDecimal dv = null;\r
3729         com.ibm.icu.math.BigDecimal dlmin;\r
3730 \r
3731         // longValue --\r
3732 \r
3733         (new Test("lov001")).ok=lmin==((new com.ibm.icu.math.BigDecimal(lmin)).longValue());\r
3734         (new Test("lov002")).ok=(((long)99))==((new com.ibm.icu.math.BigDecimal("99")).longValue());\r
3735         (new Test("lov003")).ok=(((long)1))==((new com.ibm.icu.math.BigDecimal("1")).longValue());\r
3736         (new Test("lov004")).ok=(((long)0))==((new com.ibm.icu.math.BigDecimal("0")).longValue());\r
3737         (new Test("lov005")).ok=(((long)-1))==((new com.ibm.icu.math.BigDecimal("-1")).longValue());\r
3738         (new Test("lov006")).ok=(((long)-99))==((new com.ibm.icu.math.BigDecimal("-99")).longValue());\r
3739         (new Test("lov007")).ok=lmax==((new com.ibm.icu.math.BigDecimal(lmax)).longValue());\r
3740         (new Test("lov008")).ok=(((long)5))==((new com.ibm.icu.math.BigDecimal("5.0")).longValue());\r
3741         (new Test("lov009")).ok=(((long)5))==((new com.ibm.icu.math.BigDecimal("5.3")).longValue());\r
3742         (new Test("lov010")).ok=(((long)5))==((new com.ibm.icu.math.BigDecimal("5.5")).longValue());\r
3743         (new Test("lov011")).ok=(((long)5))==((new com.ibm.icu.math.BigDecimal("5.7")).longValue());\r
3744         (new Test("lov012")).ok=(((long)5))==((new com.ibm.icu.math.BigDecimal("5.9")).longValue());\r
3745         (new Test("lov013")).ok=(((long)-5))==((new com.ibm.icu.math.BigDecimal("-5.0")).longValue());\r
3746         (new Test("lov014")).ok=(((long)-5))==((new com.ibm.icu.math.BigDecimal("-5.3")).longValue());\r
3747         (new Test("lov015")).ok=(((long)-5))==((new com.ibm.icu.math.BigDecimal("-5.5")).longValue());\r
3748         (new Test("lov016")).ok=(((long)-5))==((new com.ibm.icu.math.BigDecimal("-5.7")).longValue());\r
3749         (new Test("lov017")).ok=(((long)-5))==((new com.ibm.icu.math.BigDecimal("-5.9")).longValue());\r
3750         (new Test("lov018")).ok=((new com.ibm.icu.math.BigDecimal("888888888899999999998")).longValue())==3445173361941522430L; // ugh\r
3751         (new Test("lov019")).ok=((new com.ibm.icu.math.BigDecimal("-888888888899999999998")).longValue())==(-3445173361941522430L); // ugh\r
3752 \r
3753         // longValueExact --\r
3754 \r
3755         (new Test("lov101")).ok=lmin==((new com.ibm.icu.math.BigDecimal(lmin)).longValue());\r
3756         (new Test("lov102")).ok=(((long)99))==((new com.ibm.icu.math.BigDecimal("99")).longValue());\r
3757         (new Test("lov103")).ok=(((long)1))==((new com.ibm.icu.math.BigDecimal("1")).longValue());\r
3758         (new Test("lov104")).ok=(((long)0))==((new com.ibm.icu.math.BigDecimal("0")).longValue());\r
3759         (new Test("lov105")).ok=(((long)-1))==((new com.ibm.icu.math.BigDecimal("-1")).longValue());\r
3760         (new Test("lov106")).ok=(((long)-99))==((new com.ibm.icu.math.BigDecimal("-99")).longValue());\r
3761         (new Test("lov107")).ok=lmax==((new com.ibm.icu.math.BigDecimal(lmax)).longValue());\r
3762         (new Test("lov108")).ok=(((long)5))==((new com.ibm.icu.math.BigDecimal("5.0")).longValue());\r
3763         (new Test("lov109")).ok=(((long)-5))==((new com.ibm.icu.math.BigDecimal("-5.0")).longValue());\r
3764 \r
3765         try {\r
3766             v = "-888888888899999999998";\r
3767             (new com.ibm.icu.math.BigDecimal(v)).longValueExact();\r
3768             flag = false;\r
3769         } catch (java.lang.ArithmeticException $110) {\r
3770             ae = $110;\r
3771             flag = (ae.getMessage()).equals("Conversion overflow:" + " " + v);\r
3772         }\r
3773         (new Test("lov200")).ok = flag;\r
3774         try {\r
3775             v = "88888887487487479488888";\r
3776             (new com.ibm.icu.math.BigDecimal(v)).longValueExact();\r
3777             flag = false;\r
3778         } catch (java.lang.ArithmeticException $111) {\r
3779             ae = $111;\r
3780             flag = (ae.getMessage()).equals("Conversion overflow:" + " " + v);\r
3781         }\r
3782         (new Test("lov201")).ok = flag;\r
3783         try {\r
3784             v = "1.5";\r
3785             (new com.ibm.icu.math.BigDecimal(v)).longValueExact();\r
3786             flag = false;\r
3787         } catch (java.lang.ArithmeticException $112) {\r
3788             ae = $112;\r
3789             flag = (ae.getMessage()).equals("Decimal part non-zero:" + " " + v);\r
3790         }\r
3791         (new Test("lov202")).ok = flag;\r
3792 \r
3793         badstrings = new java.lang.String[] {\r
3794                 "1234567890110987654321",\r
3795                 "-1234567890110987654321",\r
3796                 (new com.ibm.icu.math.BigDecimal(lmax)).add(one).toString(),\r
3797                 (new com.ibm.icu.math.BigDecimal(lmin)).subtract(one)\r
3798                         .toString(),\r
3799                 (new com.ibm.icu.math.BigDecimal(lmin)).multiply(two)\r
3800                         .toString(),\r
3801                 (new com.ibm.icu.math.BigDecimal(lmax)).multiply(two)\r
3802                         .toString(),\r
3803                 (new com.ibm.icu.math.BigDecimal(lmin)).multiply(ten)\r
3804                         .toString(),\r
3805                 (new com.ibm.icu.math.BigDecimal(lmax)).multiply(ten)\r
3806                         .toString(), "9223372036854775818",\r
3807                 "9323372036854775818", "9423372036854775818",\r
3808                 "9523372036854775818", "9623372036854775818",\r
3809                 "9723372036854775818", "9823372036854775818",\r
3810                 "9923372036854775818", "-9223372036854775818",\r
3811                 "-9323372036854775818", "-9423372036854775818",\r
3812                 "-9523372036854775818", "-9623372036854775818",\r
3813                 "-9723372036854775818", "-9823372036854775818",\r
3814                 "-9923372036854775818", "12345678901234567890" }; // 220\r
3815         // 221\r
3816         // 222\r
3817         // 223\r
3818         // 224\r
3819         // 225\r
3820         // 226\r
3821         // 227\r
3822         // 228\r
3823         // 229\r
3824         // 230\r
3825         // 231\r
3826         // 232\r
3827         // 233\r
3828         // 234\r
3829         // 235\r
3830         // 236\r
3831         // 237\r
3832         // 238\r
3833         // 239\r
3834         // 240\r
3835         // 241\r
3836         // 242\r
3837         // 243\r
3838         // 244\r
3839         {\r
3840             int $113 = badstrings.length;\r
3841             i = 0;\r
3842             for (; $113 > 0; $113--, i++) {\r
3843                 try {\r
3844                     v = badstrings[i];\r
3845                     (new com.ibm.icu.math.BigDecimal(v)).longValueExact();\r
3846                     flag = false;\r
3847                 } catch (java.lang.ArithmeticException $114) {\r
3848                     ae = $114;\r
3849                     norm = (new com.ibm.icu.math.BigDecimal(v)).toString();\r
3850                     flag = (ae.getMessage()).equals("Conversion overflow:"\r
3851                             + " " + norm);\r
3852                 }\r
3853                 (new Test("lov" + (220 + i))).ok = flag;\r
3854             }\r
3855         }/* i */\r
3856 \r
3857         // now slip in some single bits...\r
3858         dlmax = new com.ibm.icu.math.BigDecimal(lmax);\r
3859         {\r
3860             i = 0;\r
3861             for (; i <= 99; i++) {\r
3862                 try {\r
3863                     num = two.pow(new com.ibm.icu.math.BigDecimal(i), mc50);\r
3864                     dv = dlmax.add(num, mc50);\r
3865                     dv.longValueExact();\r
3866                     flag = false;\r
3867                 } catch (java.lang.ArithmeticException $115) {\r
3868                     ae = $115;\r
3869                     norm = dv.toString();\r
3870                     flag = (ae.getMessage()).equals("Conversion overflow:"\r
3871                             + " " + norm);\r
3872                 }\r
3873                 (new Test("lov" + (300 + i))).ok = flag;\r
3874             }\r
3875         }/* i */\r
3876         dlmin = new com.ibm.icu.math.BigDecimal(lmin);\r
3877         {\r
3878             i = 0;\r
3879             for (; i <= 99; i++) {\r
3880                 try {\r
3881                     num = two.pow(new com.ibm.icu.math.BigDecimal(i), mc50);\r
3882                     dv = dlmin.subtract(num, mc50);\r
3883                     dv.longValueExact();\r
3884                     flag = false;\r
3885                 } catch (java.lang.ArithmeticException $116) {\r
3886                     ae = $116;\r
3887                     norm = dv.toString();\r
3888                     flag = (ae.getMessage()).equals("Conversion overflow:"\r
3889                             + " " + norm);\r
3890                 }\r
3891                 (new Test("lov" + (400 + i))).ok = flag;\r
3892             }\r
3893         }/* i */\r
3894 \r
3895         summary("longValue+");\r
3896     }\r
3897 \r
3898     /* ----------------------------------------------------------------- */\r
3899 \r
3900     /** Test the {@link com.ibm.icu.math.BigDecimal#movePointLeft} method. */\r
3901 \r
3902     public void diagmovepointleft() {\r
3903         (new Test("mpl001")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointLeft(-10).toString()).equals("-10000000000");\r
3904         (new Test("mpl002")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointLeft(-5).toString()).equals("-100000");\r
3905         (new Test("mpl003")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointLeft(-1).toString()).equals("-10");\r
3906         (new Test("mpl004")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointLeft(0).toString()).equals("-1");\r
3907         (new Test("mpl005")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointLeft(+1).toString()).equals("-0.1");\r
3908         (new Test("mpl006")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointLeft(+5).toString()).equals("-0.00001");\r
3909         (new Test("mpl007")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointLeft(+10).toString()).equals("-0.0000000001");\r
3910         \r
3911         (new Test("mpl010")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointLeft(-10).toString()).equals("0");\r
3912         (new Test("mpl010")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointLeft(-5).toString()).equals("0");\r
3913         (new Test("mpl010")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointLeft(-1).toString()).equals("0");\r
3914         (new Test("mpl010")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointLeft(0).toString()).equals("0");\r
3915         (new Test("mpl010")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointLeft(+1).toString()).equals("0.0");\r
3916         (new Test("mpl010")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointLeft(+5).toString()).equals("0.00000");\r
3917         (new Test("mpl010")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointLeft(+10).toString()).equals("0.0000000000");\r
3918         \r
3919         (new Test("mpl020")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointLeft(-10).toString()).equals("10000000000");\r
3920         (new Test("mpl021")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointLeft(-5).toString()).equals("100000");\r
3921         (new Test("mpl022")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointLeft(-1).toString()).equals("10");\r
3922         (new Test("mpl023")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointLeft(0).toString()).equals("1");\r
3923         (new Test("mpl024")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointLeft(+1).toString()).equals("0.1");\r
3924         (new Test("mpl025")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointLeft(+5).toString()).equals("0.00001");\r
3925         (new Test("mpl026")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointLeft(+10).toString()).equals("0.0000000001");\r
3926         \r
3927         (new Test("mpl030")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointLeft(-10).toString()).equals("50000000000");\r
3928         (new Test("mpl031")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointLeft(-5).toString()).equals("500000");\r
3929         (new Test("mpl032")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointLeft(-1).toString()).equals("50");\r
3930         (new Test("mpl033")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointLeft(0).toString()).equals("5");\r
3931         (new Test("mpl034")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointLeft(+1).toString()).equals("0.5");\r
3932         (new Test("mpl035")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointLeft(+5).toString()).equals("0.00005");\r
3933         (new Test("mpl036")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointLeft(+10).toString()).equals("0.0000000005");\r
3934 \r
3935         summary("movePointLeft");\r
3936     }\r
3937 \r
3938     /* ----------------------------------------------------------------- */\r
3939 \r
3940     /** Test the {@link com.ibm.icu.math.BigDecimal#movePointRight} method. */\r
3941 \r
3942     public void diagmovepointright() {\r
3943         (new Test("mpr001")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointRight(+10).toString()).equals("-10000000000");\r
3944         (new Test("mpr002")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointRight(+5).toString()).equals("-100000");\r
3945         (new Test("mpr003")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointRight(+1).toString()).equals("-10");\r
3946         (new Test("mpr004")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointRight(0).toString()).equals("-1");\r
3947         (new Test("mpr005")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointRight(-1).toString()).equals("-0.1");\r
3948         (new Test("mpr006")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointRight(-5).toString()).equals("-0.00001");\r
3949         (new Test("mpr007")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointRight(-10).toString()).equals("-0.0000000001");\r
3950         \r
3951         (new Test("mpr010")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointRight(+10).toString()).equals("0");\r
3952         (new Test("mpr011")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointRight(+5).toString()).equals("0");\r
3953         (new Test("mpr012")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointRight(+1).toString()).equals("0");\r
3954         (new Test("mpr013")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointRight(0).toString()).equals("0");\r
3955         (new Test("mpr014")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointRight(-1).toString()).equals("0.0");\r
3956         (new Test("mpr015")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointRight(-5).toString()).equals("0.00000");\r
3957         (new Test("mpr016")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointRight(-10).toString()).equals("0.0000000000");\r
3958         \r
3959         (new Test("mpr020")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointRight(+10).toString()).equals("10000000000");\r
3960         (new Test("mpr021")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointRight(+5).toString()).equals("100000");\r
3961         (new Test("mpr022")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointRight(+1).toString()).equals("10");\r
3962         (new Test("mpr023")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointRight(0).toString()).equals("1");\r
3963         (new Test("mpr024")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointRight(-1).toString()).equals("0.1");\r
3964         (new Test("mpr025")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointRight(-5).toString()).equals("0.00001");\r
3965         (new Test("mpr026")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointRight(-10).toString()).equals("0.0000000001");\r
3966         \r
3967         (new Test("mpr030")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointRight(+10).toString()).equals("50000000000");\r
3968         (new Test("mpr031")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointRight(+5).toString()).equals("500000");\r
3969         (new Test("mpr032")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointRight(+1).toString()).equals("50");\r
3970         (new Test("mpr033")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointRight(0).toString()).equals("5");\r
3971         (new Test("mpr034")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointRight(-1).toString()).equals("0.5");\r
3972         (new Test("mpr035")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointRight(-5).toString()).equals("0.00005");\r
3973         (new Test("mpr036")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointRight(-10).toString()).equals("0.0000000005");\r
3974 \r
3975         summary("movePointRight");\r
3976     }\r
3977 \r
3978     /* ----------------------------------------------------------------- */\r
3979 \r
3980     /** Test the {@link com.ibm.icu.math.BigDecimal#scale} method. */\r
3981 \r
3982     public void diagscale() {\r
3983         (new Test("sca001")).ok=((new com.ibm.icu.math.BigDecimal("-1")).scale())==0;\r
3984         (new Test("sca002")).ok=((new com.ibm.icu.math.BigDecimal("-10")).scale())==0;\r
3985         (new Test("sca003")).ok=((new com.ibm.icu.math.BigDecimal("+1")).scale())==0;\r
3986         (new Test("sca004")).ok=((new com.ibm.icu.math.BigDecimal("+10")).scale())==0;\r
3987         (new Test("sca005")).ok=((new com.ibm.icu.math.BigDecimal("1E+10")).scale())==0;\r
3988         (new Test("sca006")).ok=((new com.ibm.icu.math.BigDecimal("1E-10")).scale())==10;\r
3989         (new Test("sca007")).ok=((new com.ibm.icu.math.BigDecimal("0E-10")).scale())==0;\r
3990         (new Test("sca008")).ok=((new com.ibm.icu.math.BigDecimal("0.000")).scale())==3;\r
3991         (new Test("sca009")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).scale())==2;\r
3992         (new Test("sca010")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).scale())==1;\r
3993         (new Test("sca011")).ok=((new com.ibm.icu.math.BigDecimal("0.1")).scale())==1;\r
3994         (new Test("sca012")).ok=((new com.ibm.icu.math.BigDecimal("0.12")).scale())==2;\r
3995         (new Test("sca013")).ok=((new com.ibm.icu.math.BigDecimal("0.123")).scale())==3;\r
3996         (new Test("sca014")).ok=((new com.ibm.icu.math.BigDecimal("-0.0")).scale())==1;\r
3997         (new Test("sca015")).ok=((new com.ibm.icu.math.BigDecimal("-0.1")).scale())==1;\r
3998         (new Test("sca016")).ok=((new com.ibm.icu.math.BigDecimal("-0.12")).scale())==2;\r
3999         (new Test("sca017")).ok=((new com.ibm.icu.math.BigDecimal("-0.123")).scale())==3;\r
4000         summary("scale");\r
4001     }\r
4002 \r
4003     /* ----------------------------------------------------------------- */\r
4004 \r
4005     /** Test the {@link com.ibm.icu.math.BigDecimal#setScale} method. */\r
4006 \r
4007     public void diagsetscale() {\r
4008         boolean flag = false;\r
4009         java.lang.RuntimeException e = null;\r
4010 \r
4011         (new Test("ssc001")).ok=((new com.ibm.icu.math.BigDecimal("-1")).setScale(0).toString()).equals("-1");\r
4012         (new Test("ssc002")).ok=((new com.ibm.icu.math.BigDecimal("-1")).setScale(1).toString()).equals("-1.0");\r
4013         (new Test("ssc003")).ok=((new com.ibm.icu.math.BigDecimal("-1")).setScale(2).toString()).equals("-1.00");\r
4014         (new Test("ssc004")).ok=((new com.ibm.icu.math.BigDecimal("0")).setScale(0).toString()).equals("0");\r
4015         (new Test("ssc005")).ok=((new com.ibm.icu.math.BigDecimal("0")).setScale(1).toString()).equals("0.0");\r
4016         (new Test("ssc006")).ok=((new com.ibm.icu.math.BigDecimal("0")).setScale(2).toString()).equals("0.00");\r
4017         (new Test("ssc007")).ok=((new com.ibm.icu.math.BigDecimal("+1")).setScale(0).toString()).equals("1");\r
4018         (new Test("ssc008")).ok=((new com.ibm.icu.math.BigDecimal("+1")).setScale(1).toString()).equals("1.0");\r
4019         (new Test("ssc009")).ok=((new com.ibm.icu.math.BigDecimal("+1")).setScale(2).toString()).equals("1.00");\r
4020         (new Test("ssc010")).ok=((new com.ibm.icu.math.BigDecimal("-1")).setScale(0,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("-1");\r
4021         (new Test("ssc011")).ok=((new com.ibm.icu.math.BigDecimal("-1")).setScale(1,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("-1.0");\r
4022         (new Test("ssc012")).ok=((new com.ibm.icu.math.BigDecimal("-1")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("-1.00");\r
4023         (new Test("ssc013")).ok=((new com.ibm.icu.math.BigDecimal("0")).setScale(0,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0");\r
4024         (new Test("ssc014")).ok=((new com.ibm.icu.math.BigDecimal("0")).setScale(1,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.0");\r
4025         (new Test("ssc015")).ok=((new com.ibm.icu.math.BigDecimal("0")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.00");\r
4026         (new Test("ssc016")).ok=((new com.ibm.icu.math.BigDecimal("+1")).setScale(0,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1");\r
4027         (new Test("ssc017")).ok=((new com.ibm.icu.math.BigDecimal("+1")).setScale(1,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1.0");\r
4028         (new Test("ssc018")).ok=((new com.ibm.icu.math.BigDecimal("+1")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1.00");\r
4029         \r
4030         (new Test("ssc020")).ok=((new com.ibm.icu.math.BigDecimal("1.04")).setScale(3,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1.040");\r
4031         (new Test("ssc021")).ok=((new com.ibm.icu.math.BigDecimal("1.04")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1.04");\r
4032         (new Test("ssc022")).ok=((new com.ibm.icu.math.BigDecimal("1.04")).setScale(1,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1.0");\r
4033         (new Test("ssc023")).ok=((new com.ibm.icu.math.BigDecimal("1.04")).setScale(0,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1");\r
4034         (new Test("ssc024")).ok=((new com.ibm.icu.math.BigDecimal("1.05")).setScale(3,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1.050");\r
4035         (new Test("ssc025")).ok=((new com.ibm.icu.math.BigDecimal("1.05")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1.05");\r
4036         (new Test("ssc026")).ok=((new com.ibm.icu.math.BigDecimal("1.05")).setScale(1,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1.1");\r
4037         (new Test("ssc027")).ok=((new com.ibm.icu.math.BigDecimal("1.05")).setScale(0,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1");\r
4038         (new Test("ssc028")).ok=((new com.ibm.icu.math.BigDecimal("1.05")).setScale(3,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("1.050");\r
4039         (new Test("ssc029")).ok=((new com.ibm.icu.math.BigDecimal("1.05")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("1.05");\r
4040         (new Test("ssc030")).ok=((new com.ibm.icu.math.BigDecimal("1.05")).setScale(1,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("1.0");\r
4041         (new Test("ssc031")).ok=((new com.ibm.icu.math.BigDecimal("1.05")).setScale(0,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("1");\r
4042         (new Test("ssc032")).ok=((new com.ibm.icu.math.BigDecimal("1.06")).setScale(3,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1.060");\r
4043         (new Test("ssc033")).ok=((new com.ibm.icu.math.BigDecimal("1.06")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1.06");\r
4044         (new Test("ssc034")).ok=((new com.ibm.icu.math.BigDecimal("1.06")).setScale(1,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1.1");\r
4045         (new Test("ssc035")).ok=((new com.ibm.icu.math.BigDecimal("1.06")).setScale(0,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1");\r
4046         \r
4047         (new Test("ssc040")).ok=((new com.ibm.icu.math.BigDecimal("-10")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("-10.00");\r
4048         (new Test("ssc041")).ok=((new com.ibm.icu.math.BigDecimal("+1")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1.00");\r
4049         (new Test("ssc042")).ok=((new com.ibm.icu.math.BigDecimal("+10")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("10.00");\r
4050         (new Test("ssc043")).ok=((new com.ibm.icu.math.BigDecimal("1E+10")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("10000000000.00");\r
4051         (new Test("ssc044")).ok=((new com.ibm.icu.math.BigDecimal("1E-10")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.00");\r
4052         (new Test("ssc045")).ok=((new com.ibm.icu.math.BigDecimal("1E-2")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.01");\r
4053         (new Test("ssc046")).ok=((new com.ibm.icu.math.BigDecimal("0E-10")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.00");\r
4054 \r
4055         // check rounding\r
4056         (new Test("ssc050")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(2,com.ibm.icu.math.MathContext.ROUND_CEILING).toString()).equals("0.01");\r
4057         (new Test("ssc051")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(1,com.ibm.icu.math.MathContext.ROUND_CEILING).toString()).equals("0.1");\r
4058         (new Test("ssc052")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(0,com.ibm.icu.math.MathContext.ROUND_CEILING).toString()).equals("1");\r
4059         (new Test("ssc053")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(2,com.ibm.icu.math.MathContext.ROUND_DOWN).toString()).equals("0.00");\r
4060         (new Test("ssc054")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(1,com.ibm.icu.math.MathContext.ROUND_DOWN).toString()).equals("0.0");\r
4061         (new Test("ssc055")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(0,com.ibm.icu.math.MathContext.ROUND_DOWN).toString()).equals("0");\r
4062         (new Test("ssc056")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(2,com.ibm.icu.math.MathContext.ROUND_FLOOR).toString()).equals("0.00");\r
4063         (new Test("ssc057")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(1,com.ibm.icu.math.MathContext.ROUND_FLOOR).toString()).equals("0.0");\r
4064         (new Test("ssc058")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(0,com.ibm.icu.math.MathContext.ROUND_FLOOR).toString()).equals("0");\r
4065         (new Test("ssc059")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("0.00");\r
4066         (new Test("ssc060")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(1,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("0.0");\r
4067         (new Test("ssc061")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(0,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("0");\r
4068         (new Test("ssc062")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0.00");\r
4069         (new Test("ssc063")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0.0");\r
4070         (new Test("ssc064")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(0,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0");\r
4071         (new Test("ssc065")).ok=((new com.ibm.icu.math.BigDecimal("0.015")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0.02");\r
4072         (new Test("ssc066")).ok=((new com.ibm.icu.math.BigDecimal("0.015")).setScale(1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0.0");\r
4073         (new Test("ssc067")).ok=((new com.ibm.icu.math.BigDecimal("0.015")).setScale(0,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0");\r
4074         (new Test("ssc068")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.01");\r
4075         (new Test("ssc069")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(1,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.0");\r
4076         (new Test("ssc070")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(0,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0");\r
4077         (new Test("ssc071")).ok=((new com.ibm.icu.math.BigDecimal("0.095")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.10");\r
4078         (new Test("ssc072")).ok=((new com.ibm.icu.math.BigDecimal("0.095")).setScale(1,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.1");\r
4079         (new Test("ssc073")).ok=((new com.ibm.icu.math.BigDecimal("0.095")).setScale(0,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0");\r
4080         (new Test("ssc074")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(2,com.ibm.icu.math.MathContext.ROUND_UP).toString()).equals("0.01");\r
4081         (new Test("ssc075")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(1,com.ibm.icu.math.MathContext.ROUND_UP).toString()).equals("0.1");\r
4082         (new Test("ssc076")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(0,com.ibm.icu.math.MathContext.ROUND_UP).toString()).equals("1");\r
4083 \r
4084         try {\r
4085             (new com.ibm.icu.math.BigDecimal(1)).setScale(-8);\r
4086             flag = false;\r
4087         } catch (java.lang.RuntimeException $117) {\r
4088             e = $117;\r
4089             flag = (e.getMessage()).equals("Negative scale: -8");\r
4090         }/* checkscale */\r
4091         (new Test("ssc100")).ok = flag;\r
4092         try {\r
4093             (new com.ibm.icu.math.BigDecimal(1.0001D)).setScale(3);\r
4094             flag = false;\r
4095         } catch (java.lang.RuntimeException $118) {\r
4096             e = $118;\r
4097             flag = (e.getMessage()).equals("Rounding necessary");\r
4098         }/* checkrunn */\r
4099         (new Test("ssc101")).ok = flag;\r
4100         try {\r
4101             (new com.ibm.icu.math.BigDecimal(1E-8D)).setScale(3);\r
4102             flag = false;\r
4103         } catch (java.lang.RuntimeException $119) {\r
4104             e = $119;\r
4105             flag = (e.getMessage()).equals("Rounding necessary");\r
4106         }/* checkrunn */\r
4107         (new Test("ssc102")).ok = flag;\r
4108         summary("setScale");\r
4109     }\r
4110 \r
4111     /* ----------------------------------------------------------------- */\r
4112 \r
4113     /** Test the <code>BigDecimal.shortValue()</code> method. */\r
4114 \r
4115     public void diagshortvalue() {\r
4116         boolean flag = false;\r
4117         java.lang.String v = null;\r
4118         java.lang.ArithmeticException ae = null;\r
4119         java.lang.String badstrings[];\r
4120         int i = 0;\r
4121         java.lang.String norm = null;\r
4122 \r
4123         (new Test("shv002")).ok=(((short)0))==((new com.ibm.icu.math.BigDecimal("0")).shortValue());\r
4124         (new Test("shv003")).ok=(((short)1))==((new com.ibm.icu.math.BigDecimal("1")).shortValue());\r
4125         (new Test("shv004")).ok=(((short)99))==((new com.ibm.icu.math.BigDecimal("99")).shortValue());\r
4126         (new Test("shv006")).ok=((smax))==((new com.ibm.icu.math.BigDecimal(smax)).shortValue());\r
4127         (new Test("shv007")).ok=((smin))==((new com.ibm.icu.math.BigDecimal(smin)).shortValue());\r
4128         (new Test("shv008")).ok=((sneg))==((new com.ibm.icu.math.BigDecimal(sneg)).shortValue());\r
4129         (new Test("shv009")).ok=((szer))==((new com.ibm.icu.math.BigDecimal(szer)).shortValue());\r
4130         (new Test("shv010")).ok=((spos))==((new com.ibm.icu.math.BigDecimal(spos)).shortValue());\r
4131         (new Test("shv011")).ok=((smin))==((new com.ibm.icu.math.BigDecimal(smax+1)).shortValue());\r
4132         (new Test("shv012")).ok=((smax))==((new com.ibm.icu.math.BigDecimal(smin-1)).shortValue());\r
4133 \r
4134         (new Test("shv022")).ok=(((short)0))==((new com.ibm.icu.math.BigDecimal("0")).shortValueExact());\r
4135         (new Test("shv023")).ok=(((short)1))==((new com.ibm.icu.math.BigDecimal("1")).shortValueExact());\r
4136         (new Test("shv024")).ok=(((short)99))==((new com.ibm.icu.math.BigDecimal("99")).shortValueExact());\r
4137         (new Test("shv026")).ok=((smax))==((new com.ibm.icu.math.BigDecimal(smax)).shortValueExact());\r
4138         (new Test("shv027")).ok=((smin))==((new com.ibm.icu.math.BigDecimal(smin)).shortValueExact());\r
4139         (new Test("shv028")).ok=((sneg))==((new com.ibm.icu.math.BigDecimal(sneg)).shortValueExact());\r
4140         (new Test("shv029")).ok=((szer))==((new com.ibm.icu.math.BigDecimal(szer)).shortValueExact());\r
4141         (new Test("shv030")).ok=((spos))==((new com.ibm.icu.math.BigDecimal(spos)).shortValueExact());\r
4142         try {\r
4143             v = "-88888888888";\r
4144             (new com.ibm.icu.math.BigDecimal(v)).shortValueExact();\r
4145             flag = false;\r
4146         } catch (java.lang.ArithmeticException $120) {\r
4147             ae = $120;\r
4148             flag = (ae.getMessage()).equals("Conversion overflow:" + " " + v);\r
4149         }\r
4150         (new Test("shv100")).ok = flag;\r
4151         try {\r
4152             v = "88888888888";\r
4153             (new com.ibm.icu.math.BigDecimal(v)).shortValueExact();\r
4154             flag = false;\r
4155         } catch (java.lang.ArithmeticException $121) {\r
4156             ae = $121;\r
4157             flag = (ae.getMessage()).equals("Conversion overflow:" + " " + v);\r
4158         }\r
4159         (new Test("shv101")).ok = flag;\r
4160         try {\r
4161             v = "1.5";\r
4162             (new com.ibm.icu.math.BigDecimal(v)).shortValueExact();\r
4163             flag = false;\r
4164         } catch (java.lang.ArithmeticException $122) {\r
4165             ae = $122;\r
4166             flag = (ae.getMessage()).equals("Decimal part non-zero:" + " " + v);\r
4167         }\r
4168         (new Test("shv102")).ok = flag;\r
4169 \r
4170         badstrings = new java.lang.String[] {\r
4171                 "123456",\r
4172                 (new com.ibm.icu.math.BigDecimal(smax)).add(one).toString(),\r
4173                 (new com.ibm.icu.math.BigDecimal(smin)).subtract(one)\r
4174                         .toString(),\r
4175                 "71111",\r
4176                 "81111",\r
4177                 "91111",\r
4178                 "-71111",\r
4179                 "-81111",\r
4180                 "-91111",\r
4181                 (new com.ibm.icu.math.BigDecimal(smin)).multiply(two)\r
4182                         .toString(),\r
4183                 (new com.ibm.icu.math.BigDecimal(smax)).multiply(two)\r
4184                         .toString(),\r
4185                 (new com.ibm.icu.math.BigDecimal(smin)).multiply(ten)\r
4186                         .toString(),\r
4187                 (new com.ibm.icu.math.BigDecimal(smax)).multiply(ten)\r
4188                         .toString(), "-123456" }; // 220\r
4189         // 221\r
4190         // 222\r
4191         // 223\r
4192         // 224\r
4193         // 225\r
4194         // 226\r
4195         // 227\r
4196         // 228\r
4197         // 229\r
4198         // 230\r
4199         // 231\r
4200         // 232\r
4201         // 233\r
4202         {\r
4203             int $123 = badstrings.length;\r
4204             i = 0;\r
4205             for (; $123 > 0; $123--, i++) {\r
4206                 try {\r
4207                     v = badstrings[i];\r
4208                     (new com.ibm.icu.math.BigDecimal(v)).shortValueExact();\r
4209                     flag = false;\r
4210                 } catch (java.lang.ArithmeticException $124) {\r
4211                     ae = $124;\r
4212                     norm = (new com.ibm.icu.math.BigDecimal(v)).toString();\r
4213                     flag = (ae.getMessage()).equals("Conversion overflow:"\r
4214                             + " " + norm);\r
4215                 }\r
4216                 (new Test("shv" + (220 + i))).ok = flag;\r
4217             }\r
4218         }/* i */\r
4219 \r
4220         summary("shortValue+");\r
4221     }\r
4222 \r
4223     /* ----------------------------------------------------------------- */\r
4224 \r
4225     /** Test the {@link com.ibm.icu.math.BigDecimal#signum} method. */\r
4226 \r
4227     public void diagsignum() {\r
4228         // necessarily checks some obscure constructions, too\r
4229         (new Test("sig001")).ok=(-1)==((new com.ibm.icu.math.BigDecimal("-1")).signum());\r
4230         (new Test("sig002")).ok=(-1)==((new com.ibm.icu.math.BigDecimal("-0.0010")).signum());\r
4231         (new Test("sig003")).ok=(-1)==((new com.ibm.icu.math.BigDecimal("-0.001")).signum());\r
4232         (new Test("sig004")).ok=0==((new com.ibm.icu.math.BigDecimal("-0.00")).signum());\r
4233         (new Test("sig005")).ok=0==((new com.ibm.icu.math.BigDecimal("-0")).signum());\r
4234         (new Test("sig006")).ok=0==((new com.ibm.icu.math.BigDecimal("0")).signum());\r
4235         (new Test("sig007")).ok=0==((new com.ibm.icu.math.BigDecimal("00")).signum());\r
4236         (new Test("sig008")).ok=0==((new com.ibm.icu.math.BigDecimal("00.0")).signum());\r
4237         (new Test("sig009")).ok=1==((new com.ibm.icu.math.BigDecimal("00.01")).signum());\r
4238         (new Test("sig010")).ok=1==((new com.ibm.icu.math.BigDecimal("00.01")).signum());\r
4239         (new Test("sig011")).ok=1==((new com.ibm.icu.math.BigDecimal("00.010")).signum());\r
4240         (new Test("sig012")).ok=1==((new com.ibm.icu.math.BigDecimal("01.01")).signum());\r
4241         (new Test("sig013")).ok=1==((new com.ibm.icu.math.BigDecimal("+0.01")).signum());\r
4242         (new Test("sig014")).ok=1==((new com.ibm.icu.math.BigDecimal("+0.001")).signum());\r
4243         (new Test("sig015")).ok=1==((new com.ibm.icu.math.BigDecimal("1")).signum());\r
4244         (new Test("sig016")).ok=1==((new com.ibm.icu.math.BigDecimal("1e+12")).signum());\r
4245         (new Test("sig017")).ok=0==((new com.ibm.icu.math.BigDecimal("00e+12")).signum());\r
4246         summary("signum");\r
4247     }\r
4248 \r
4249     /* ----------------------------------------------------------------- */\r
4250 \r
4251     /** Test the {@link com.ibm.icu.math.BigDecimal#toBigDecimal} method. */\r
4252 \r
4253     public void diagtobigdecimal() {\r
4254         (new Test("tbd001")).ok=((new com.ibm.icu.math.BigDecimal("0")).toBigDecimal().toString()).equals("0");\r
4255         (new Test("tbd002")).ok=((new com.ibm.icu.math.BigDecimal("-1")).toBigDecimal().toString()).equals("-1");\r
4256         (new Test("tbd003")).ok=((new com.ibm.icu.math.BigDecimal("+1")).toBigDecimal().toString()).equals("1");\r
4257         (new Test("tbd004")).ok=((new com.ibm.icu.math.BigDecimal("1")).toBigDecimal().toString()).equals("1");\r
4258         (new Test("tbd005")).ok=((new com.ibm.icu.math.BigDecimal("1E+2")).toBigDecimal().toString()).equals("100");\r
4259         (new Test("tbd006")).ok=((new com.ibm.icu.math.BigDecimal("1E-2")).toBigDecimal().toString()).equals("0.01");\r
4260         if (!isJDK15OrLater) {\r
4261             (new Test("tbd007")).ok=((new com.ibm.icu.math.BigDecimal("1E-8")).toBigDecimal().toString()).equals("0.00000001");\r
4262         }\r
4263         if (!isJDK15OrLater) {\r
4264             (new Test("tbd008")).ok=((new com.ibm.icu.math.BigDecimal("1E-9")).toBigDecimal().toString()).equals("0.000000001");\r
4265         }\r
4266         (new Test("tbd009")).ok=((new com.ibm.icu.math.BigDecimal("1E10")).toBigDecimal().toString()).equals("10000000000");\r
4267         (new Test("tbd010")).ok=((new com.ibm.icu.math.BigDecimal("1E12")).toBigDecimal().toString()).equals("1000000000000");\r
4268         summary("toBigDecimal");\r
4269     }\r
4270 \r
4271     /* ----------------------------------------------------------------- */\r
4272 \r
4273     /** Test the {@link com.ibm.icu.math.BigDecimal#toBigInteger} method. */\r
4274 \r
4275     public void diagtobiginteger() {\r
4276         boolean flag = false;\r
4277         java.lang.String badstrings[];\r
4278         int i = 0;\r
4279         (new Test("tbi001")).ok=((new com.ibm.icu.math.BigDecimal("-1")).toBigInteger().toString()).equals("-1");\r
4280         (new Test("tbi002")).ok=((new com.ibm.icu.math.BigDecimal("0")).toBigInteger().toString()).equals("0");\r
4281         (new Test("tbi003")).ok=((new com.ibm.icu.math.BigDecimal("+1")).toBigInteger().toString()).equals("1");\r
4282         (new Test("tbi004")).ok=((new com.ibm.icu.math.BigDecimal("10")).toBigInteger().toString()).equals("10");\r
4283         (new Test("tbi005")).ok=((new com.ibm.icu.math.BigDecimal("1000")).toBigInteger().toString()).equals("1000");\r
4284         (new Test("tbi006")).ok=((new com.ibm.icu.math.BigDecimal("-1E+0")).toBigInteger().toString()).equals("-1");\r
4285         (new Test("tbi007")).ok=((new com.ibm.icu.math.BigDecimal("0E+0")).toBigInteger().toString()).equals("0");\r
4286         (new Test("tbi008")).ok=((new com.ibm.icu.math.BigDecimal("+1E+0")).toBigInteger().toString()).equals("1");\r
4287         (new Test("tbi009")).ok=((new com.ibm.icu.math.BigDecimal("10E+0")).toBigInteger().toString()).equals("10");\r
4288         (new Test("tbi010")).ok=((new com.ibm.icu.math.BigDecimal("1E+3")).toBigInteger().toString()).equals("1000");\r
4289         (new Test("tbi011")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).toBigInteger().toString()).equals("0");\r
4290         (new Test("tbi012")).ok=((new com.ibm.icu.math.BigDecimal("0.01")).toBigInteger().toString()).equals("0");\r
4291         (new Test("tbi013")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).toBigInteger().toString()).equals("0");\r
4292         (new Test("tbi014")).ok=((new com.ibm.icu.math.BigDecimal("0.1")).toBigInteger().toString()).equals("0");\r
4293         (new Test("tbi015")).ok=((new com.ibm.icu.math.BigDecimal("-0.00")).toBigInteger().toString()).equals("0");\r
4294         (new Test("tbi016")).ok=((new com.ibm.icu.math.BigDecimal("-0.01")).toBigInteger().toString()).equals("0");\r
4295         (new Test("tbi017")).ok=((new com.ibm.icu.math.BigDecimal("-0.0")).toBigInteger().toString()).equals("0");\r
4296         (new Test("tbi018")).ok=((new com.ibm.icu.math.BigDecimal("-0.1")).toBigInteger().toString()).equals("0");\r
4297         (new Test("tbi019")).ok=((new com.ibm.icu.math.BigDecimal("1.00")).toBigInteger().toString()).equals("1");\r
4298         (new Test("tbi020")).ok=((new com.ibm.icu.math.BigDecimal("1.01")).toBigInteger().toString()).equals("1");\r
4299         (new Test("tbi021")).ok=((new com.ibm.icu.math.BigDecimal("1.0")).toBigInteger().toString()).equals("1");\r
4300         (new Test("tbi022")).ok=((new com.ibm.icu.math.BigDecimal("1.1")).toBigInteger().toString()).equals("1");\r
4301         (new Test("tbi023")).ok=((new com.ibm.icu.math.BigDecimal("-1.00")).toBigInteger().toString()).equals("-1");\r
4302         (new Test("tbi024")).ok=((new com.ibm.icu.math.BigDecimal("-1.01")).toBigInteger().toString()).equals("-1");\r
4303         (new Test("tbi025")).ok=((new com.ibm.icu.math.BigDecimal("-1.0")).toBigInteger().toString()).equals("-1");\r
4304         (new Test("tbi026")).ok=((new com.ibm.icu.math.BigDecimal("-1.1")).toBigInteger().toString()).equals("-1");\r
4305         (new Test("tbi027")).ok=((new com.ibm.icu.math.BigDecimal("-111.111")).toBigInteger().toString()).equals("-111");\r
4306         (new Test("tbi028")).ok=((new com.ibm.icu.math.BigDecimal("+111.111")).toBigInteger().toString()).equals("111");\r
4307         (new Test("tbi029")).ok=((new com.ibm.icu.math.BigDecimal("0.09")).toBigInteger().toString()).equals("0");\r
4308         (new Test("tbi030")).ok=((new com.ibm.icu.math.BigDecimal("0.9")).toBigInteger().toString()).equals("0");\r
4309         (new Test("tbi031")).ok=((new com.ibm.icu.math.BigDecimal("1.09")).toBigInteger().toString()).equals("1");\r
4310         (new Test("tbi032")).ok=((new com.ibm.icu.math.BigDecimal("1.05")).toBigInteger().toString()).equals("1");\r
4311         (new Test("tbi033")).ok=((new com.ibm.icu.math.BigDecimal("1.04")).toBigInteger().toString()).equals("1");\r
4312         (new Test("tbi034")).ok=((new com.ibm.icu.math.BigDecimal("1.99")).toBigInteger().toString()).equals("1");\r
4313         (new Test("tbi034")).ok=((new com.ibm.icu.math.BigDecimal("1.9")).toBigInteger().toString()).equals("1");\r
4314         (new Test("tbi035")).ok=((new com.ibm.icu.math.BigDecimal("1.5")).toBigInteger().toString()).equals("1");\r
4315         (new Test("tbi036")).ok=((new com.ibm.icu.math.BigDecimal("1.4")).toBigInteger().toString()).equals("1");\r
4316         (new Test("tbi037")).ok=((new com.ibm.icu.math.BigDecimal("-1.09")).toBigInteger().toString()).equals("-1");\r
4317         (new Test("tbi038")).ok=((new com.ibm.icu.math.BigDecimal("-1.05")).toBigInteger().toString()).equals("-1");\r
4318         (new Test("tbi039")).ok=((new com.ibm.icu.math.BigDecimal("-1.04")).toBigInteger().toString()).equals("-1");\r
4319         (new Test("tbi040")).ok=((new com.ibm.icu.math.BigDecimal("-1.99")).toBigInteger().toString()).equals("-1");\r
4320         (new Test("tbi041")).ok=((new com.ibm.icu.math.BigDecimal("-1.9")).toBigInteger().toString()).equals("-1");\r
4321         (new Test("tbi042")).ok=((new com.ibm.icu.math.BigDecimal("-1.5")).toBigInteger().toString()).equals("-1");\r
4322         (new Test("tbi043")).ok=((new com.ibm.icu.math.BigDecimal("-1.4")).toBigInteger().toString()).equals("-1");\r
4323         (new Test("tbi044")).ok=((new com.ibm.icu.math.BigDecimal("1E-1000")).toBigInteger().toString()).equals("0");\r
4324         (new Test("tbi045")).ok=((new com.ibm.icu.math.BigDecimal("-1E-1000")).toBigInteger().toString()).equals("0");\r
4325 \r
4326         // Exact variety --\r
4327         (new Test("tbi101")).ok=((new com.ibm.icu.math.BigDecimal("-1")).toBigIntegerExact().toString()).equals("-1");\r
4328         (new Test("tbi102")).ok=((new com.ibm.icu.math.BigDecimal("0")).toBigIntegerExact().toString()).equals("0");\r
4329         (new Test("tbi103")).ok=((new com.ibm.icu.math.BigDecimal("+1")).toBigIntegerExact().toString()).equals("1");\r
4330         (new Test("tbi104")).ok=((new com.ibm.icu.math.BigDecimal("10")).toBigIntegerExact().toString()).equals("10");\r
4331         (new Test("tbi105")).ok=((new com.ibm.icu.math.BigDecimal("1000")).toBigIntegerExact().toString()).equals("1000");\r
4332         (new Test("tbi106")).ok=((new com.ibm.icu.math.BigDecimal("-1E+0")).toBigIntegerExact().toString()).equals("-1");\r
4333         (new Test("tbi107")).ok=((new com.ibm.icu.math.BigDecimal("0E+0")).toBigIntegerExact().toString()).equals("0");\r
4334         (new Test("tbi108")).ok=((new com.ibm.icu.math.BigDecimal("+1E+0")).toBigIntegerExact().toString()).equals("1");\r
4335         (new Test("tbi109")).ok=((new com.ibm.icu.math.BigDecimal("10E+0")).toBigIntegerExact().toString()).equals("10");\r
4336         (new Test("tbi110")).ok=((new com.ibm.icu.math.BigDecimal("1E+3")).toBigIntegerExact().toString()).equals("1000");\r
4337         (new Test("tbi111")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).toBigIntegerExact().toString()).equals("0");\r
4338         (new Test("tbi112")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).toBigIntegerExact().toString()).equals("0");\r
4339         (new Test("tbi113")).ok=((new com.ibm.icu.math.BigDecimal("-0.00")).toBigIntegerExact().toString()).equals("0");\r
4340         (new Test("tbi114")).ok=((new com.ibm.icu.math.BigDecimal("-0.0")).toBigIntegerExact().toString()).equals("0");\r
4341         (new Test("tbi115")).ok=((new com.ibm.icu.math.BigDecimal("1.00")).toBigIntegerExact().toString()).equals("1");\r
4342         (new Test("tbi116")).ok=((new com.ibm.icu.math.BigDecimal("1.0")).toBigIntegerExact().toString()).equals("1");\r
4343         (new Test("tbi117")).ok=((new com.ibm.icu.math.BigDecimal("-1.00")).toBigIntegerExact().toString()).equals("-1");\r
4344         (new Test("tbi118")).ok=((new com.ibm.icu.math.BigDecimal("-1.0")).toBigIntegerExact().toString()).equals("-1");\r
4345         (new Test("tbi119")).ok=((new com.ibm.icu.math.BigDecimal("1.00000000000000000000000000000")).toBigIntegerExact().toString()).equals("1");\r
4346 \r
4347 \r
4348         // the following should all raise exceptions\r
4349 \r
4350         badstrings = new java.lang.String[] { "0.09", "0.9", "0.01", "0.1",\r
4351                 "-0.01", "-0.1", "1.01", "-1.01", "-1.1", "-111.111",\r
4352                 "+111.111", "1.09", "1.05", "1.04", "1.99", "1.9", "1.5",\r
4353                 "1.4", "-1.09", "-1.05", "-1.04", "-1.99", "-1.9", "-1.5",\r
4354                 "-1.4", "1E-1000", "-1E-1000", "11E-1", "1.1",\r
4355                 "127623156123656561356123512315631231551312356.000001",\r
4356                 "0.000000000000000000000000000000000000000000000001" }; // 300-303\r
4357         // 304-307\r
4358         // 308-311\r
4359         // 312-316\r
4360         // 317-320\r
4361         // 321-324\r
4362         // 325-328\r
4363         // 329\r
4364         // 330\r
4365 \r
4366         {\r
4367             int $125 = badstrings.length;\r
4368             i = 0;\r
4369             for (; $125 > 0; $125--, i++) {\r
4370                 try {\r
4371                     (new com.ibm.icu.math.BigDecimal(badstrings[i]))\r
4372                             .toBigIntegerExact();\r
4373                     flag = false;\r
4374                 } catch (java.lang.ArithmeticException $126) {\r
4375                     flag = true;\r
4376                 }\r
4377                 (new Test("tbi" + (300 + i))).ok = flag;\r
4378             }\r
4379         }/* i */\r
4380 \r
4381         summary("toBigInteger+");\r
4382     }\r
4383 \r
4384     /* ----------------------------------------------------------------- */\r
4385 \r
4386     /** Test the {@link com.ibm.icu.math.BigDecimal#toCharArray} method. */\r
4387 \r
4388     public void diagtochararray() {\r
4389         java.lang.String str;\r
4390         char car[];\r
4391         com.ibm.icu.math.BigDecimal d;\r
4392         char ca[];\r
4393         // the function of this has been tested above, this is simply an\r
4394         // existence proof and type-check\r
4395         str = "-123.45";\r
4396         car = (str).toCharArray();\r
4397         d = new com.ibm.icu.math.BigDecimal(str);\r
4398         ca = d.toCharArray();\r
4399         (new Test("tca001")).ok = ca.length == car.length;\r
4400         (new Test("tca002")).ok = (new java.lang.String(ca))\r
4401                 .equals((java.lang.Object) (new java.lang.String(car)));\r
4402         (new Test("tca003")).ok = (d.toCharArray() instanceof char[]);\r
4403         (new Test("tca004")).ok = (ca instanceof char[]);\r
4404         summary("toCharArray");\r
4405     }\r
4406 \r
4407     /* ----------------------------------------------------------------- */\r
4408 \r
4409     /** Test the {@link com.ibm.icu.math.BigDecimal#toString} method. */\r
4410 \r
4411     public void diagtostring() {\r
4412         java.lang.String str;\r
4413         char car[];\r
4414         com.ibm.icu.math.BigDecimal d;\r
4415         char ca[];\r
4416         java.lang.String cs;\r
4417         // the function of this has been tested above, this is simply an\r
4418         // existence proof and type-check\r
4419         str = "123.45";\r
4420         car = (str).toCharArray();\r
4421         d = new com.ibm.icu.math.BigDecimal(car, 0, car.length);\r
4422         ca = d.toCharArray();\r
4423         cs = d.toString();\r
4424         (new Test("tos001")).ok = (str.toCharArray().length) == ca.length;\r
4425         (new Test("tos002")).ok = (str.length()) == (cs.length());\r
4426         (new Test("tos003")).ok = str\r
4427                 .equals((java.lang.Object) (new java.lang.String(ca)));\r
4428         (new Test("tos004")).ok = str.equals((java.lang.Object) cs);\r
4429         (new Test("tos005")).ok = (cs instanceof java.lang.String);\r
4430         (new Test("tos006")).ok = (d.toString() instanceof java.lang.String);\r
4431         summary("toString");\r
4432     }\r
4433 \r
4434     /* ----------------------------------------------------------------- */\r
4435 \r
4436     /** Test the {@link com.ibm.icu.math.BigDecimal#unscaledValue} method. */\r
4437 \r
4438     public void diagunscaledvalue() {\r
4439         // just like toBigInteger, but scaly bits are preserved [without dots]\r
4440         (new Test("uns001")).ok=((new com.ibm.icu.math.BigDecimal("-1")).unscaledValue().toString()).equals("-1");\r
4441         (new Test("uns002")).ok=((new com.ibm.icu.math.BigDecimal("0")).unscaledValue().toString()).equals("0");\r
4442         (new Test("uns003")).ok=((new com.ibm.icu.math.BigDecimal("+1")).unscaledValue().toString()).equals("1");\r
4443         (new Test("uns004")).ok=((new com.ibm.icu.math.BigDecimal("10")).unscaledValue().toString()).equals("10");\r
4444         (new Test("uns005")).ok=((new com.ibm.icu.math.BigDecimal("1000")).unscaledValue().toString()).equals("1000");\r
4445         (new Test("uns006")).ok=((new com.ibm.icu.math.BigDecimal("-1E+0")).unscaledValue().toString()).equals("-1");\r
4446         (new Test("uns007")).ok=((new com.ibm.icu.math.BigDecimal("0E+0")).unscaledValue().toString()).equals("0");\r
4447         (new Test("uns008")).ok=((new com.ibm.icu.math.BigDecimal("+1E+0")).unscaledValue().toString()).equals("1");\r
4448         (new Test("uns009")).ok=((new com.ibm.icu.math.BigDecimal("10E+0")).unscaledValue().toString()).equals("10");\r
4449         (new Test("uns010")).ok=((new com.ibm.icu.math.BigDecimal("1E+3")).unscaledValue().toString()).equals("1000");\r
4450         (new Test("uns011")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).unscaledValue().toString()).equals("0");\r
4451         (new Test("uns012")).ok=((new com.ibm.icu.math.BigDecimal("0.01")).unscaledValue().toString()).equals("1");\r
4452         (new Test("uns013")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).unscaledValue().toString()).equals("0");\r
4453         (new Test("uns014")).ok=((new com.ibm.icu.math.BigDecimal("0.1")).unscaledValue().toString()).equals("1");\r
4454         (new Test("uns015")).ok=((new com.ibm.icu.math.BigDecimal("-0.00")).unscaledValue().toString()).equals("0");\r
4455         (new Test("uns016")).ok=((new com.ibm.icu.math.BigDecimal("-0.01")).unscaledValue().toString()).equals("-1");\r
4456         (new Test("uns017")).ok=((new com.ibm.icu.math.BigDecimal("-0.0")).unscaledValue().toString()).equals("0");\r
4457         (new Test("uns018")).ok=((new com.ibm.icu.math.BigDecimal("-0.1")).unscaledValue().toString()).equals("-1");\r
4458         (new Test("uns019")).ok=((new com.ibm.icu.math.BigDecimal("1.00")).unscaledValue().toString()).equals("100");\r
4459         (new Test("uns020")).ok=((new com.ibm.icu.math.BigDecimal("1.01")).unscaledValue().toString()).equals("101");\r
4460         (new Test("uns021")).ok=((new com.ibm.icu.math.BigDecimal("1.0")).unscaledValue().toString()).equals("10");\r
4461         (new Test("uns022")).ok=((new com.ibm.icu.math.BigDecimal("1.1")).unscaledValue().toString()).equals("11");\r
4462         (new Test("uns023")).ok=((new com.ibm.icu.math.BigDecimal("-1.00")).unscaledValue().toString()).equals("-100");\r
4463         (new Test("uns024")).ok=((new com.ibm.icu.math.BigDecimal("-1.01")).unscaledValue().toString()).equals("-101");\r
4464         (new Test("uns025")).ok=((new com.ibm.icu.math.BigDecimal("-1.0")).unscaledValue().toString()).equals("-10");\r
4465         (new Test("uns026")).ok=((new com.ibm.icu.math.BigDecimal("-1.1")).unscaledValue().toString()).equals("-11");\r
4466         (new Test("uns027")).ok=((new com.ibm.icu.math.BigDecimal("-111.111")).unscaledValue().toString()).equals("-111111");\r
4467         (new Test("uns028")).ok=((new com.ibm.icu.math.BigDecimal("+111.111")).unscaledValue().toString()).equals("111111");\r
4468         summary("unscaledValue");\r
4469     }\r
4470 \r
4471     /* ----------------------------------------------------------------- */\r
4472 \r
4473     /**\r
4474      * Test the {@link com.ibm.icu.math.BigDecimal#valueOf} method [long and\r
4475      * double].\r
4476      */\r
4477 \r
4478     public void diagvalueof() {\r
4479         boolean flag = false;\r
4480         java.lang.NumberFormatException e = null;\r
4481         double dzer;\r
4482         double dpos;\r
4483         double dneg;\r
4484         double dpos5;\r
4485         double dneg5;\r
4486         double dmin;\r
4487         double dmax;\r
4488         double d;\r
4489 \r
4490         // valueOf(long [,scale]) --\r
4491 \r
4492         (new Test("val001")).ok=(com.ibm.icu.math.BigDecimal.valueOf((long)((byte)-2)).toString()).equals("-2");\r
4493         (new Test("val002")).ok=(com.ibm.icu.math.BigDecimal.valueOf((long)((byte)-1)).toString()).equals("-1");\r
4494         (new Test("val003")).ok=(com.ibm.icu.math.BigDecimal.valueOf((long)((byte)-0)).toString()).equals("0");\r
4495         (new Test("val004")).ok=(com.ibm.icu.math.BigDecimal.valueOf((long)((byte)+1)).toString()).equals("1");\r
4496         (new Test("val005")).ok=(com.ibm.icu.math.BigDecimal.valueOf((long)((byte)+2)).toString()).equals("2");\r
4497         (new Test("val006")).ok=(com.ibm.icu.math.BigDecimal.valueOf((long)((byte)10)).toString()).equals("10");\r
4498         (new Test("val007")).ok=(com.ibm.icu.math.BigDecimal.valueOf((long)((byte)11)).toString()).equals("11");\r
4499         (new Test("val008")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lmin).toString()).equals("-9223372036854775808");\r
4500         (new Test("val009")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lmax).toString()).equals("9223372036854775807");\r
4501         (new Test("val010")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lneg).toString()).equals("-1");\r
4502         (new Test("val011")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lzer).toString()).equals("0");\r
4503         (new Test("val012")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lpos).toString()).equals("1");\r
4504         (new Test("val013")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lmin,0).toString()).equals("-9223372036854775808");\r
4505         (new Test("val014")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lmax,0).toString()).equals("9223372036854775807");\r
4506         (new Test("val015")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lneg,0).toString()).equals("-1");\r
4507         (new Test("val016")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lpos,0).toString()).equals("1");\r
4508         \r
4509         (new Test("val017")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lzer,0).toString()).equals("0");\r
4510         (new Test("val018")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lzer,1).toString()).equals("0.0");\r
4511         (new Test("val019")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lzer,2).toString()).equals("0.00");\r
4512         (new Test("val020")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lzer,3).toString()).equals("0.000");\r
4513         (new Test("val021")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lzer,10).toString()).equals("0.0000000000");\r
4514         \r
4515         (new Test("val022")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lmin,7).toString()).equals("-922337203685.4775808");\r
4516         (new Test("val023")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lmax,11).toString()).equals("92233720.36854775807");\r
4517 \r
4518         try {\r
4519             com.ibm.icu.math.BigDecimal.valueOf((long) 23, -8);\r
4520             flag = false;\r
4521         } catch (java.lang.NumberFormatException $127) {\r
4522             e = $127;\r
4523             flag = (e.getMessage()).equals("Negative scale: -8");\r
4524         }/* checkscale */\r
4525         (new Test("val100")).ok = flag;\r
4526 \r
4527         // valueOf(double) --\r
4528 \r
4529         dzer = (double) 0;\r
4530         dpos = (double) 1;\r
4531         dpos = dpos / ((double) 10);\r
4532         dneg = (double) -dpos;\r
4533         (new Test("val201")).ok=(com.ibm.icu.math.BigDecimal.valueOf(dneg).toString()).equals("-0.1");\r
4534         (new Test("val202")).ok=(com.ibm.icu.math.BigDecimal.valueOf(dzer).toString()).equals("0.0"); // cf. constructor\r
4535         (new Test("val203")).ok=(com.ibm.icu.math.BigDecimal.valueOf(dpos).toString()).equals("0.1");\r
4536         dpos5 = (double) 0.5D;\r
4537         dneg5 = (double) -dpos5;\r
4538         (new Test("val204")).ok=(com.ibm.icu.math.BigDecimal.valueOf(dneg5).toString()).equals("-0.5");\r
4539         (new Test("val205")).ok=(com.ibm.icu.math.BigDecimal.valueOf(dpos5).toString()).equals("0.5");\r
4540         dmin = java.lang.Double.MIN_VALUE;\r
4541         dmax = java.lang.Double.MAX_VALUE;\r
4542         (new Test("val206")).ok=(com.ibm.icu.math.BigDecimal.valueOf(dmin).toString()).equals("4.9E-324");\r
4543         (new Test("val207")).ok=(com.ibm.icu.math.BigDecimal.valueOf(dmax).toString()).equals("1.7976931348623157E+308");\r
4544 \r
4545         // nasties\r
4546         d = (double) 9;\r
4547         d = d / ((double) 10);\r
4548         (new Test("val210")).ok = (com.ibm.icu.math.BigDecimal.valueOf(d).toString()).equals("0.9");\r
4549         d = d / ((double) 10);\r
4550         (new Test("val211")).ok = (com.ibm.icu.math.BigDecimal.valueOf(d).toString()).equals("0.09");\r
4551         d = d / ((double) 10);\r
4552         // The primitive double 0.009 is different in java 7. In java <= 6, there is a trailing 0 (e.g 0.0090).\r
4553         if (System.getProperty("java.version").charAt(2) >= '7') {\r
4554             (new Test("val212")).ok = (com.ibm.icu.math.BigDecimal.valueOf(d).toString()).equals("0.009");\r
4555         } else {\r
4556             (new Test("val212")).ok = (com.ibm.icu.math.BigDecimal.valueOf(d).toString()).equals("0.0090");\r
4557         }\r
4558         d = d / ((double) 10);\r
4559         (new Test("val213")).ok = (com.ibm.icu.math.BigDecimal.valueOf(d).toString()).equals("9.0E-4");\r
4560         d = d / ((double) 10);\r
4561         (new Test("val214")).ok = (com.ibm.icu.math.BigDecimal.valueOf(d).toString()).equals("8.999999999999999E-5");\r
4562         d = d / ((double) 10);\r
4563         (new Test("val215")).ok = (com.ibm.icu.math.BigDecimal.valueOf(d).toString()).equals("8.999999999999999E-6");\r
4564         d = d / ((double) 10);\r
4565         (new Test("val216")).ok = (com.ibm.icu.math.BigDecimal.valueOf(d).toString()).equals("8.999999999999999E-7");\r
4566         d = d / ((double) 10);\r
4567         (new Test("val217")).ok = (com.ibm.icu.math.BigDecimal.valueOf(d).toString()).equals("8.999999999999999E-8");\r
4568         d = d / ((double) 10);\r
4569         (new Test("val218")).ok = (com.ibm.icu.math.BigDecimal.valueOf(d).toString()).equals("8.999999999999998E-9");\r
4570 \r
4571         try {\r
4572             com.ibm.icu.math.BigDecimal\r
4573                     .valueOf(java.lang.Double.POSITIVE_INFINITY);\r
4574             flag = false;\r
4575         } catch (java.lang.NumberFormatException $128) {\r
4576             flag = true;\r
4577         }/* checkpin */\r
4578         (new Test("val301")).ok = flag;\r
4579         try {\r
4580             com.ibm.icu.math.BigDecimal\r
4581                     .valueOf(java.lang.Double.NEGATIVE_INFINITY);\r
4582             flag = false;\r
4583         } catch (java.lang.NumberFormatException $129) {\r
4584             flag = true;\r
4585         }/* checknin */\r
4586         (new Test("val302")).ok = flag;\r
4587         try {\r
4588             com.ibm.icu.math.BigDecimal.valueOf(java.lang.Double.NaN);\r
4589             flag = false;\r
4590         } catch (java.lang.NumberFormatException $130) {\r
4591             flag = true;\r
4592         }/* checknan */\r
4593         (new Test("val303")).ok = flag;\r
4594 \r
4595         summary("valueOf");\r
4596     }\r
4597 \r
4598     /* ----------------------------------------------------------------- */\r
4599 \r
4600     /** Test the {@link com.ibm.icu.math.MathContext} class. */\r
4601 \r
4602     public void diagmathcontext() {\r
4603         com.ibm.icu.math.MathContext mccon1;\r
4604         com.ibm.icu.math.MathContext mccon2;\r
4605         com.ibm.icu.math.MathContext mccon3;\r
4606         com.ibm.icu.math.MathContext mccon4;\r
4607         com.ibm.icu.math.MathContext mcrmc;\r
4608         com.ibm.icu.math.MathContext mcrmd;\r
4609         com.ibm.icu.math.MathContext mcrmf;\r
4610         com.ibm.icu.math.MathContext mcrmhd;\r
4611         com.ibm.icu.math.MathContext mcrmhe;\r
4612         com.ibm.icu.math.MathContext mcrmhu;\r
4613         com.ibm.icu.math.MathContext mcrmun;\r
4614         com.ibm.icu.math.MathContext mcrmu;\r
4615         boolean flag = false;\r
4616         java.lang.IllegalArgumentException e = null;\r
4617         // these tests are mostly existence checks\r
4618         (new Test("mcn001")).ok=(com.ibm.icu.math.MathContext.DEFAULT.getDigits())==9;\r
4619         (new Test("mcn002")).ok=(com.ibm.icu.math.MathContext.DEFAULT.getForm())==com.ibm.icu.math.MathContext.SCIENTIFIC;\r
4620         (new Test("mcn003")).ok=(com.ibm.icu.math.MathContext.DEFAULT.getForm())!=com.ibm.icu.math.MathContext.ENGINEERING;\r
4621         (new Test("mcn004")).ok=(com.ibm.icu.math.MathContext.DEFAULT.getForm())!=com.ibm.icu.math.MathContext.PLAIN;\r
4622         (new Test("mcn005")).ok=(com.ibm.icu.math.MathContext.DEFAULT.getLostDigits()?1:0)==0;\r
4623         (new Test("mcn006")).ok=(com.ibm.icu.math.MathContext.DEFAULT.getRoundingMode())==com.ibm.icu.math.MathContext.ROUND_HALF_UP;\r
4624         \r
4625         (new Test("mcn010")).ok=com.ibm.icu.math.MathContext.ROUND_CEILING>=0;\r
4626         (new Test("mcn011")).ok=com.ibm.icu.math.MathContext.ROUND_DOWN>=0;\r
4627         (new Test("mcn012")).ok=com.ibm.icu.math.MathContext.ROUND_FLOOR>=0;\r
4628         (new Test("mcn013")).ok=com.ibm.icu.math.MathContext.ROUND_HALF_DOWN>=0;\r
4629         (new Test("mcn014")).ok=com.ibm.icu.math.MathContext.ROUND_HALF_EVEN>=0;\r
4630         (new Test("mcn015")).ok=com.ibm.icu.math.MathContext.ROUND_HALF_UP>=0;\r
4631         (new Test("mcn016")).ok=com.ibm.icu.math.MathContext.ROUND_UNNECESSARY>=0;\r
4632         (new Test("mcn017")).ok=com.ibm.icu.math.MathContext.ROUND_UP>=0;\r
4633         \r
4634         mccon1=new com.ibm.icu.math.MathContext(111);\r
4635         (new Test("mcn021")).ok=(mccon1.getDigits())==111;\r
4636         (new Test("mcn022")).ok=(mccon1.getForm())==com.ibm.icu.math.MathContext.SCIENTIFIC;\r
4637         (new Test("mcn023")).ok=(mccon1.getLostDigits()?1:0)==0;\r
4638         (new Test("mcn024")).ok=(mccon1.getRoundingMode())==com.ibm.icu.math.MathContext.ROUND_HALF_UP;\r
4639         \r
4640         mccon2=new com.ibm.icu.math.MathContext(78,com.ibm.icu.math.MathContext.ENGINEERING);\r
4641         (new Test("mcn031")).ok=(mccon2.getDigits())==78;\r
4642         (new Test("mcn032")).ok=(mccon2.getForm())==com.ibm.icu.math.MathContext.ENGINEERING;\r
4643         (new Test("mcn033")).ok=(mccon2.getLostDigits()?1:0)==0;\r
4644         (new Test("mcn034")).ok=(mccon2.getRoundingMode())==com.ibm.icu.math.MathContext.ROUND_HALF_UP;\r
4645         \r
4646         mccon3=new com.ibm.icu.math.MathContext(5,com.ibm.icu.math.MathContext.PLAIN,true);\r
4647         (new Test("mcn041")).ok=(mccon3.getDigits())==5;\r
4648         (new Test("mcn042")).ok=(mccon3.getForm())==com.ibm.icu.math.MathContext.PLAIN;\r
4649         (new Test("mcn043")).ok=(mccon3.getLostDigits()?1:0)==1;\r
4650         (new Test("mcn044")).ok=(mccon3.getRoundingMode())==com.ibm.icu.math.MathContext.ROUND_HALF_UP;\r
4651         \r
4652         mccon4=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.SCIENTIFIC,false,com.ibm.icu.math.MathContext.ROUND_FLOOR);\r
4653         (new Test("mcn051")).ok = (mccon4.getDigits()) == 0;\r
4654         (new Test("mcn052")).ok = (mccon4.getForm()) == com.ibm.icu.math.MathContext.SCIENTIFIC;\r
4655         (new Test("mcn053")).ok = (mccon4.getLostDigits() ? 1 : 0) == 0;\r
4656         (new Test("mcn054")).ok = (mccon4.getRoundingMode()) == com.ibm.icu.math.MathContext.ROUND_FLOOR;\r
4657 \r
4658         (new Test("mcn061")).ok=(mccon1.toString()).equals("digits=111 form=SCIENTIFIC lostDigits=0 roundingMode=ROUND_HALF_UP");\r
4659         \r
4660         (new Test("mcn062")).ok=(mccon2.toString()).equals("digits=78 form=ENGINEERING lostDigits=0 roundingMode=ROUND_HALF_UP");\r
4661         \r
4662         (new Test("mcn063")).ok=(mccon3.toString()).equals("digits=5 form=PLAIN lostDigits=1 roundingMode=ROUND_HALF_UP");\r
4663         \r
4664         (new Test("mcn064")).ok=(mccon4.toString()).equals("digits=0 form=SCIENTIFIC lostDigits=0 roundingMode=ROUND_FLOOR");\r
4665 \r
4666         // complete testing rounding modes round trips\r
4667         mcrmc=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN,false,com.ibm.icu.math.MathContext.ROUND_CEILING);\r
4668         mcrmd=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN,false,com.ibm.icu.math.MathContext.ROUND_DOWN);\r
4669         mcrmf=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN,false,com.ibm.icu.math.MathContext.ROUND_FLOOR);\r
4670         mcrmhd=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN,false,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN);\r
4671         mcrmhe=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN,false,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN);\r
4672         mcrmhu=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN,false,com.ibm.icu.math.MathContext.ROUND_HALF_UP);\r
4673         mcrmun=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN,false,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY);\r
4674         mcrmu=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN,false,com.ibm.icu.math.MathContext.ROUND_UP);\r
4675 \r
4676         (new Test("mcn071")).ok = (mcrmc.toString()).equals("digits=0 form=PLAIN lostDigits=0 roundingMode=ROUND_CEILING");\r
4677 \r
4678         (new Test("mcn072")).ok = (mcrmd.toString()).equals("digits=0 form=PLAIN lostDigits=0 roundingMode=ROUND_DOWN");\r
4679 \r
4680         (new Test("mcn073")).ok = (mcrmf.toString()).equals("digits=0 form=PLAIN lostDigits=0 roundingMode=ROUND_FLOOR");\r
4681 \r
4682         (new Test("mcn074")).ok = (mcrmhd.toString()).equals("digits=0 form=PLAIN lostDigits=0 roundingMode=ROUND_HALF_DOWN");\r
4683 \r
4684         (new Test("mcn075")).ok = (mcrmhe.toString()).equals("digits=0 form=PLAIN lostDigits=0 roundingMode=ROUND_HALF_EVEN");\r
4685 \r
4686         (new Test("mcn076")).ok = (mcrmhu.toString()).equals("digits=0 form=PLAIN lostDigits=0 roundingMode=ROUND_HALF_UP");\r
4687 \r
4688         (new Test("mcn077")).ok = (mcrmun.toString()).equals("digits=0 form=PLAIN lostDigits=0 roundingMode=ROUND_UNNECESSARY");\r
4689 \r
4690         (new Test("mcn078")).ok = (mcrmu.toString()).equals("digits=0 form=PLAIN lostDigits=0 roundingMode=ROUND_UP");\r
4691 \r
4692         // [get methods tested already]\r
4693 \r
4694         // errors...\r
4695 \r
4696         try {\r
4697             new com.ibm.icu.math.MathContext(-1);\r
4698             flag = false;\r
4699         } catch (java.lang.IllegalArgumentException $131) {\r
4700             e = $131;\r
4701             flag = (e.getMessage()).equals("Digits too small: -1");\r
4702         }/* checkdig */\r
4703         (new Test("mcn101")).ok = flag;\r
4704         try {\r
4705             new com.ibm.icu.math.MathContext(1000000000);\r
4706             flag = false;\r
4707         } catch (java.lang.IllegalArgumentException $132) {\r
4708             e = $132;\r
4709             flag = (e.getMessage()).equals("Digits too large: 1000000000");\r
4710         }/* checkdigbig */\r
4711         (new Test("mcn102")).ok = flag;\r
4712 \r
4713         try {\r
4714             new com.ibm.icu.math.MathContext(0, 5);\r
4715             flag = false;\r
4716         } catch (java.lang.IllegalArgumentException $133) {\r
4717             e = $133;\r
4718             flag = (e.getMessage()).equals("Bad form value: 5");\r
4719         }/* checkform */\r
4720         (new Test("mcn111")).ok = flag;\r
4721         try {\r
4722             new com.ibm.icu.math.MathContext(0, -1);\r
4723             flag = false;\r
4724         } catch (java.lang.IllegalArgumentException $134) {\r
4725             e = $134;\r
4726             flag = (e.getMessage()).equals("Bad form value: -1");\r
4727         }/* checkformneg */\r
4728         (new Test("mcn112")).ok = flag;\r
4729 \r
4730         // [lostDigits cannot be invalid]\r
4731 \r
4732         try {\r
4733             new com.ibm.icu.math.MathContext(0,\r
4734                     com.ibm.icu.math.MathContext.PLAIN, false, 12);\r
4735             flag = false;\r
4736         } catch (java.lang.IllegalArgumentException $135) {\r
4737             e = $135;\r
4738             flag = (e.getMessage()).equals("Bad roundingMode value: 12");\r
4739         }/* checkround */\r
4740         (new Test("mcn121")).ok = flag;\r
4741         try {\r
4742             new com.ibm.icu.math.MathContext(0,\r
4743                     com.ibm.icu.math.MathContext.PLAIN, false, -1);\r
4744             flag = false;\r
4745         } catch (java.lang.IllegalArgumentException $136) {\r
4746             e = $136;\r
4747             flag = (e.getMessage()).equals("Bad roundingMode value: -1");\r
4748         }/* checkroundneg */\r
4749         (new Test("mcn122")).ok = flag;\r
4750 \r
4751         summary("MathContext");\r
4752     }\r
4753 \r
4754     /* ----------------------------------------------------------------- */\r
4755 \r
4756     /**\r
4757      * Test general arithmetic (base operators).\r
4758      * <p>\r
4759      * Unlike the specific method tests, these tests were randomly generated by\r
4760      * an IBM Object Rexx procedure, then manually corrected for known\r
4761      * differences from ANSI X3-274. These differences are:\r
4762      * <ol>\r
4763      * <li>the trigger point in exponential notation is fixed in ANSI X3-274\r
4764      * but varies with DIGITS in Classic and Object Rexx\r
4765      * <li>some trailing zeros were missing (e.g., 1.3 + 1E-60 should show\r
4766      * seven trailing zeros)\r
4767      * <li>the power operator is less accurate in Object Rexx\r
4768      * <li>ANSI X3-274 [errata 1999] rounds input numbers to DIGITS (rather\r
4769      * than truncating to DIGITS+1).\r
4770      * </ol>\r
4771      */\r
4772 \r
4773     public void diagmath() {\r
4774         com.ibm.icu.math.MathContext def;\r
4775         def = com.ibm.icu.math.MathContext.DEFAULT;\r
4776         mathtest(1,def,"-9375284.42","5516.99832E+27276984","5.51699832E+27276987","-5.51699832E+27276987","-5.17234284E+27276994","-1.69934516E-27276981","0","-9375284.42","6.79057752E+41");\r
4777         mathtest(2,def,"-410.832710","99.3588243E-502740862","-410.832710","-410.832710","-4.08198550E-502740858","-4.13483868E+502740862","","","1.36977786E+26");\r
4778         mathtest(3,def,"80025.2340","-8.03097581","80017.2030","80033.2650","-642680.718","-9964.57167","-9964","4.59102916","5.94544517E-40");\r
4779         mathtest(4,def,"81052020.2","-464525495","-383473475","545577515","-3.76507298E+16","-0.17448347","0","81052020.2","");\r
4780         mathtest(5,def,"715.069294E-26923151","85.4404128E+796388557","8.54404128E+796388558","-8.54404128E+796388558","6.10958157E+769465410","8.36921628E-823311708","0","7.15069294E-26923149","4.88802213E-242308334");\r
4781         mathtest(6,def,"-21971575.0E+31454441","-70944960.3E+111238221","-7.09449603E+111238228","7.09449603E+111238228","1.55877252E+142692677","3.09698884E-79783781","0","-2.19715750E+31454448","-4.04549502E-220181139");\r
4782         mathtest(7,def,"682.25316","54470185.6","54470867.9","-54469503.4","3.71624563E+10","0.0000125252586","0","682.25316","3.48578699E+154365541");\r
4783         mathtest(8,def,"-257586757.","2082888.71","-255503868","-259669646","-5.36524548E+14","-123.668036","-123","-1391445.67","-1.26879515E+17519020");\r
4784         mathtest(9,def,"319577540.E+242599761","60.7124561","3.19577540E+242599769","3.19577540E+242599769","1.94023374E+242599771","5.26378869E+242599767","","","");\r
4785         mathtest(10,def,"-13769977.0","24371.3381","-13745605.7","-13794348.3","-3.35592765E+11","-565.007015","-565","-170.9735","-8.73734001E+173982");\r
4786         mathtest(11,def,"-475.434972E-725464311","-3.22214066E-865476836","-4.75434972E-725464309","-4.75434972E-725464309","","1.47552519E+140012527","","","");\r
4787         mathtest(12,def,"842.01250","197199893","197200735","-197199051","1.66044775E+11","0.00000426984258","0","842.01250","7.00674164E+576872502");\r
4788         mathtest(13,def,"572.173103E+280128428","-7140.19428","5.72173103E+280128430","5.72173103E+280128430","-4.08542712E+280128434","-8.01341085E+280128426","","","");\r
4789         mathtest(14,def,"674235.954E+476135291","9684.82245","6.74235954E+476135296","6.74235954E+476135296","6.52985550E+476135300","6.96177919E+476135292","","","");\r
4790         mathtest(15,def,"-360557.921E+437116514","930428850","-3.60557921E+437116519","-3.60557921E+437116519","-3.35473492E+437116528","-3.87517993E+437116510","","","");\r
4791         mathtest(16,def,"957165918E-394595705","1676.59073E-829618944","9.57165918E-394595697","9.57165918E-394595697","","5.70900161E+435023244","","","9.16166595E-789191393");\r
4792         mathtest(17,def,"-2610864.40","31245912.7","28635048.3","-33856777.1","-8.15788411E+13","-0.0835585897","0","-2610864.40","-3.12008905E+200498284");\r
4793         mathtest(18,def,"959.548461","98.994577E+776775426","9.89945770E+776775427","-9.89945770E+776775427","9.49900940E+776775430","9.69293965E-776775426","0","959.548461","6.61712185E+29");\r
4794         mathtest(19,def,"-41085.0268","3115477.61","3074392.58","-3156562.64","-1.27999481E+11","-0.0131873927","0","-41085.0268","4.73844173E+14373829");\r
4795         mathtest(20,def,"-723420285.","2681660.35","-720738625","-726101945","-1.93996749E+15","-269.765813","-269","-2053650.85","4.14324113E+23757873");\r
4796         mathtest(21,def,"63542018.0E-817732230","-8836243.22","-8836243.22","8836243.22","-5.61472726E-817732216","-7.19106711E-817732230","0","6.35420180E-817732223","");\r
4797         mathtest(22,def,"-96051.7108","-291201.955","-387253.666","195150.244","2.79704460E+10","0.329845694","0","-96051.7108","3.53617153E-1450916");\r
4798         mathtest(23,def,"108490.853","91685996.5","91794487.4","-91577505.7","9.94709197E+12","0.00118328706","0","108490.853","6.98124265E+461675038");\r
4799         mathtest(24,def,"-27489.1735","-9835835.4E-506411649","-27489.1735","-27489.1735","2.70378986E-506411638","2.79479804E+506411646","","","4.05866472E-45");\r
4800         mathtest(25,def,"-89220406.6","993391.008E-611041175","-89220406.6","-89220406.6","-8.86307496E-611041162","-8.98139865E+611041176","","","3.19625913E+79");\r
4801         mathtest(26,def,"4.75502020","-17089144.9","-17089140.2","17089149.7","-81259229.2","-2.78247989E-7","0","4.75502020","1.0630191E-11571955");\r
4802         mathtest(27,def,"68027916.2","-796883.839","67231032.4","68824800.0","-5.42103470E+13","-85.3674185","-85","292789.885","8.29415374E-6241744");\r
4803         mathtest(28,def,"-8.01969439E+788605478","92154156.0","-8.01969439E+788605478","-8.01969439E+788605478","-7.39048168E+788605486","-8.70247717E+788605470","","","");\r
4804         mathtest(29,def,"-8012.98341","96188.8651","88175.8817","-104201.849","-770759780","-0.0833046881","0","-8012.98341","-1.16010156E+375502");\r
4805         mathtest(30,def,"21761476E+592330677","-9.70744506","2.17614760E+592330684","2.17614760E+592330684","-2.11248333E+592330685","-2.24173053E+592330683","","","");\r
4806         mathtest(31,def,"-9840778.51","-17907.219","-9858685.73","-9822871.29","1.76220976E+11","549.542534","549","-9715.279","-6.62997437E-125225");\r
4807         mathtest(32,def,"-4.1097614","-819.225776E-145214751","-4.10976140","-4.10976140","3.36682247E-145214748","5.01664074E+145214748","","","0.0000122876018");\r
4808         mathtest(33,def,"-448.880985","-394.087374E-442511435","-448.880985","-448.880985","1.76898329E-442511430","1.13903925E+442511435","","","2.46306099E-11");\r
4809         mathtest(34,def,"779.445304E+882688544","-797868519","7.79445304E+882688546","7.79445304E+882688546","-6.21894870E+882688555","-9.7690946E+882688537","","","");\r
4810         mathtest(35,def,"799995477","-6.23675208E+156309440","-6.23675208E+156309440","6.23675208E+156309440","-4.98937346E+156309449","-1.28271169E-156309432","0","799995477","3.81482667E-54");\r
4811         mathtest(36,def,"-51932.8170","591840275E-278480289","-51932.8170","-51932.8170","-3.07359327E-278480276","-8.7748028E+278480284","","","1.96178443E+28");\r
4812         mathtest(37,def,"70.3552392","-4228656.73","-4228586.38","4228727.09","-297508156","-0.0000166377277","0","70.3552392","9.14742382E-7811584");\r
4813         mathtest(38,def,"1588359.34","-12232799.2","-10644439.9","13821158.5","-1.94300809E+13","-0.129844307","0","1588359.34","1.56910086E-75854960");\r
4814         mathtest(39,def,"2842.16206","-3.23234345","2838.92972","2845.39440","-9186.84392","-879.288388","-879","0.93216745","4.35565514E-11");\r
4815         mathtest(40,def,"29960.2305","45.2735747E-95205475","29960.2305","29960.2305","1.35640673E-95205469","6.61759773E+95205477","","","2.413936E+22");\r
4816         mathtest(41,def,"2916565.77","1151935.43E-787118724","2916565.77","2916565.77","3.35969544E-787118712","2.53188303E+787118724","","","2916565.77");\r
4817         mathtest(42,def,"-52723012.9E-967143787","79.4088237","79.4088237","-79.4088237","-4.18667244E-967143778","-6.63944011E-967143782","0","-5.27230129E-967143780","");\r
4818         mathtest(43,def,"-167473465","793646.597","-166679819","-168267112","-1.32914746E+14","-211.017682","-211","-14033.033","-1.19053789E+6526910");\r
4819         mathtest(44,def,"-31769071.0","133.4360","-31768937.6","-31769204.4","-4.23913776E+9","-238084.707","-238084","-94.3760","-5.84252432E+997");\r
4820         mathtest(45,def,"45960.6383","-93352.7468","-47392.1085","139313.385","-4.29055183E+9","-0.492333004","0","45960.6383","1.88335323E-435248");\r
4821         mathtest(46,def,"606.175648","5.28528458E-981983620","606.175648","606.175648","3.20381081E-981983617","1.14691203E+981983622","","","8.18450516E+13");\r
4822         mathtest(47,def,"171578.617E+643006110","-407774.293","1.71578617E+643006115","1.71578617E+643006115","-6.99653492E+643006120","-4.20768597E+643006109","","","");\r
4823         mathtest(48,def,"-682286332.","-464.871699","-682286797","-682285867","3.17175606E+11","1467687.39","1467687","-182.709787","-1.6050843E-4108");\r
4824         mathtest(49,def,"492088.428","653.72170","492742.150","491434.706","321688884","752.74911","752","489.70960","3.94658596E+3722");\r
4825         mathtest(50,def,"74303782.5","1141.68058","74304924.2","74302640.8","8.48311855E+10","65082.812","65082","926.99244","4.94849869E+8988");\r
4826         mathtest(51,def,"74.7794084E+119375329","-34799355.6","7.47794084E+119375330","7.47794084E+119375330","-2.60227522E+119375338","-2.14887337E+119375323","","","");\r
4827         mathtest(52,def,"-9432.08369","33735.5058","24303.4221","-43167.5895","-318196114","-0.279589218","0","-9432.08369","2.309567E+134087");\r
4828         mathtest(53,def,"4249198.78E-112433155","418673051.","418673051","-418673051","1.77902502E-112433140","1.01492054E-112433157","0","4.24919878E-112433149","");\r
4829         mathtest(54,def,"-2960933.02","-207933.38","-3168866.40","-2752999.64","6.15676811E+11","14.2398158","14","-49865.70","-2.75680397E-1345624");\r
4830         mathtest(55,def,"29317.7519E+945600035","1.43555750","2.93177519E+945600039","2.93177519E+945600039","4.20873186E+945600039","2.04225549E+945600039","","","2.93177519E+945600039");\r
4831         mathtest(56,def,"-51.1693770","-638055.414","-638106.583","638004.245","32648898.0","0.0000801958198","0","-51.1693770","-3.48266075E-1090443");\r
4832         mathtest(57,def,"-756343055.","-68.9248344E+217100975","-6.89248344E+217100976","6.89248344E+217100976","5.21308198E+217100985","1.09734475E-217100968","0","-756343055","-7.06265897E-63");\r
4833         mathtest(58,def,"2538.80406E+694185197","-3386499.65","2.53880406E+694185200","2.53880406E+694185200","-8.59765906E+694185206","-7.49683839E+694185193","","","");\r
4834         mathtest(59,def,"-54344.0672","-8086.45235","-62430.5196","-46257.6149","439450710","6.72038427","6","-5825.35310","3.62916861E-38289");\r
4835         mathtest(60,def,"3.31600054","217481648","217481651","-217481645","721169262","1.5247266E-8","0","3.31600054","3.73134969E+113224119");\r
4836         mathtest(61,def,"681832.671","320341.161E+629467560","3.20341161E+629467565","-3.20341161E+629467565","2.18419069E+629467571","2.12845789E-629467560","0","681832.671","3.16981139E+17");\r
4837         mathtest(62,def,"832689481","348040024E-882122501","832689481","832689481","2.89809267E-882122484","2.3925107E+882122501","","","5.77363381E+26");\r
4838         mathtest(63,def,"14.5512326E+257500811","60.9979577E-647314724","1.45512326E+257500812","1.45512326E+257500812","8.87595471E-389813911","2.38552784E+904815534","","","");\r
4839         mathtest(64,def,"-901.278844","449461667.","449460766","-449462568","-4.05090292E+11","-0.00000200524074","0","-901.278844","");\r
4840         mathtest(65,def,"-5.32627675","-738860216E-238273224","-5.32627675","-5.32627675","3.93537399E-238273215","7.20877459E+238273215","","","-0.00000822306838");\r
4841         mathtest(66,def,"-505383463.","3.18756328","-505383460","-505383466","-1.61094177E+9","-158548527","-158548527","-0.23671144","-1.29081226E+26");\r
4842         mathtest(67,def,"769241.44E-720927320","-145382631.","-145382631","145382631","-1.11834344E-720927306","-5.29115091E-720927323","0","7.6924144E-720927315","");\r
4843         mathtest(68,def,"-6.45038910","56736.4411E+440937167","5.67364411E+440937171","-5.67364411E+440937171","-3.65972121E+440937172","-1.13690407E-440937171","0","-6.45038910","72030.3421");\r
4844         mathtest(69,def,"58.4721075","-712186829","-712186771","712186887","-4.16430648E+10","-8.21022028E-8","0","58.4721075","");\r
4845         mathtest(70,def,"8244.08357","245.302828E+652007959","2.45302828E+652007961","-2.45302828E+652007961","2.02229701E+652007965","3.36077804E-652007958","0","8244.08357","67964913.9");\r
4846         mathtest(71,def,"45.5361397","-76579063.9","-76579018.4","76579109.4","-3.48711495E+9","-5.94629098E-7","0","45.5361397","3.98335374E-126995367");\r
4847         mathtest(72,def,"594420.54E+685263039","-952420.179","5.94420540E+685263044","5.94420540E+685263044","-5.66138117E+685263050","-6.24115861E+685263038","","","");\r
4848         mathtest(73,def,"-841310701.","9398110.4","-831912591","-850708811","-7.90673085E+15","-89.5191337","-89","-4878875.4","1.30001466E+83877722");\r
4849         mathtest(74,def,"904392146E-140100276","168116093.","168116093","-168116093","1.52042874E-140100259","5.37956914E-140100276","0","9.04392146E-140100268","");\r
4850         mathtest(75,def,"-907324792E+685539670","-15.6902171","-9.07324792E+685539678","-9.07324792E+685539678","1.42361230E+685539680","5.78274211E+685539677","","","");\r
4851         mathtest(76,def,"987013606.","-26818.3572E+560907442","-2.68183572E+560907446","2.68183572E+560907446","-2.64700834E+560907455","-3.68036565E-560907438","0","987013606","1.0399934E-27");\r
4852         mathtest(77,def,"-741317564","630.241530E-212782946","-741317564","-741317564","-4.67209116E-212782935","-1.1762436E+212782952","","","1.65968527E+53");\r
4853         mathtest(78,def,"61867907.2","-139204670","-77336763","201072577","-8.61230161E+15","-0.444438446","0","61867907.2","");\r
4854         mathtest(79,def,"-273.622743E+531282717","-4543.68684","-2.73622743E+531282719","-2.73622743E+531282719","1.24325606E+531282723","6.02204229E+531282715","","","");\r
4855         mathtest(80,def,"-383588949.","-428640583.","-812229532","45051634","1.64421791E+17","0.89489648","0","-383588949","");\r
4856         mathtest(81,def,"-56182.2686","32.7741649","-56149.4944","-56215.0428","-1841326.94","-1714.22426","-1714","-7.3499614","-5.45476402E+156");\r
4857         mathtest(82,def,"-6366384.30","332014.980","-6034369.32","-6698399.28","-2.11373496E+12","-19.1749911","-19","-58099.680","-3.05392399E+2258994");\r
4858         mathtest(83,def,"-1.27897702","-8213776.03E-686519123","-1.27897702","-1.27897702","1.05052308E-686519116","1.55711212E+686519116","","","0.139668371");\r
4859         mathtest(84,def,"65.4059036","401162145E+884155506","4.01162145E+884155514","-4.01162145E+884155514","2.62383726E+884155516","1.63041066E-884155513","0","65.4059036","18300704.1");\r
4860         mathtest(85,def,"-20630916.8","158987411.E-480500612","-20630916.8","-20630916.8","-3.28005605E-480500597","-1.29764468E+480500611","","","4.25634728E+14");\r
4861         mathtest(86,def,"-4.72705853","-97626742.4","-97626747.1","97626737.7","461487325","4.84197097E-8","0","-4.72705853","2.92654449E-65858120");\r
4862         mathtest(87,def,"8.43528169","-4573.45752","-4565.02224","4581.89280","-38578.4025","-0.00184439927","0","8.43528169","8.84248688E-4236");\r
4863         mathtest(88,def,"1.91075189","-704247089.","-704247087","704247091","-1.34564146E+9","-2.71318394E-9","0","1.91075189","6.84547494E-198037309");\r
4864         mathtest(89,def,"31997198E-551746308","326.892584","326.892584","-326.892584","1.04596467E-551746298","9.78829119E-551746304","0","3.1997198E-551746301","");\r
4865         mathtest(90,def,"127589.213","84184304.","84311893.2","-84056714.8","1.07410091E+13","0.00151559385","0","127589.213","2.87917042E+429829394");\r
4866         mathtest(91,def,"714494248","-7025063.59","707469185","721519312","-5.01936753E+15","-101.706446","-101","4962825.41","1.65018516E-62199908");\r
4867         mathtest(92,def,"-52987680.2E+279533503","-42014114.8","-5.29876802E+279533510","-5.29876802E+279533510","2.22623048E+279533518","1.26118759E+279533503","","","");\r
4868         mathtest(93,def,"-8795.0513","-225294.394E-884414238","-8795.05130","-8795.05130","1.98147575E-884414229","3.90380388E+884414236","","","1.2927759E-8");\r
4869         mathtest(94,def,"83280.1394","161566354.","161649634","-161483074","1.34552685E+13","0.000515454718","0","83280.1394","5.30774809E+794993940");\r
4870         mathtest(95,def,"112.877897","-9.96481666","102.913080","122.842714","-1124.80755","-11.3276441","-11","3.26491374","2.97790545E-21");\r
4871         mathtest(96,def,"-572542.121E+847487397","433.843420","-5.72542121E+847487402","-5.72542121E+847487402","-2.48393632E+847487405","-1.3196976E+847487400","","","");\r
4872         mathtest(97,def,"4709649.89","20949266.4","25658916.3","-16239616.5","9.86637102E+13","0.224812163","0","4709649.89","4.85293644E+139794213");\r
4873         mathtest(98,def,"-9475.19322","-30885.2475E+584487341","-3.08852475E+584487345","3.08852475E+584487345","2.92643688E+584487349","3.06787026E-584487342","0","-9475.19322","-1.17553557E-12");\r
4874         mathtest(99,def,"-213230447.","864.815822E+127783046","8.64815822E+127783048","-8.64815822E+127783048","-1.84405064E+127783057","-2.46561686E-127783041","0","-213230447","-9.11261361E+74");\r
4875         mathtest(100,def,"-89.1168786E+403375873","6464.05744","-8.91168786E+403375874","-8.91168786E+403375874","-5.76056622E+403375878","-1.37865233E+403375871","","","");\r
4876         mathtest(101,def,"61774.4958","-14000.7706","47773.7252","75775.2664","-864890545","-4.41222112","-4","5771.4134","7.59030407E-67077");\r
4877         mathtest(102,def,"1.60731414","7.04330293E-427033419","1.60731414","1.60731414","1.13208004E-427033418","2.28204602E+427033418","","","27.7143921");\r
4878         mathtest(103,def,"7955012.51","-230117662.","-222162650","238072675","-1.83058888E+15","-0.0345693261","0","7955012.51","");\r
4879         mathtest(104,def,"4086661.08","1.77621994","4086662.86","4086659.30","7258808.90","2300762.98","2300762","1.73840572","1.67007988E+13");\r
4880         mathtest(105,def,"-610.076931","-207.658306","-817.735237","-402.418625","126687.542","2.93788841","2","-194.760319","4.36518377E-580");\r
4881         mathtest(106,def,"-98.6353697","-99253.3899E-716309653","-98.6353697","-98.6353697","9.78989481E-716309647","9.93773309E+716309649","","","1.14729007E-20");\r
4882         mathtest(107,def,"-959923730","409.125542E-900295528","-959923730","-959923730","-3.92729316E-900295517","-2.3462816E+900295534","","","8.49076677E+35");\r
4883         mathtest(108,def,"379965133","-8.15869657","379965125","379965141","-3.10002023E+9","-46571793.6","-46571793","5.19214999","2.30170697E-69");\r
4884         mathtest(109,def,"833.646797","1389499.46E-443407251","833.646797","833.646797","1.15835177E-443407242","5.99961944E+443407247","","","833.646797");\r
4885         mathtest(110,def,"2314933.4E-646489194","-7401538.17","-7401538.17","7401538.17","-1.71340679E-646489181","-3.12763826E-646489195","0","2.3149334E-646489188","");\r
4886         mathtest(111,def,"808525347","-5959.74667E+58232168","-5.95974667E+58232171","5.95974667E+58232171","-4.81860624E+58232180","-1.35664382E-58232163","0","808525347","3.5796302E-54");\r
4887         mathtest(112,def,"-17220490.6E+726428704","19.9855688","-1.72204906E+726428711","-1.72204906E+726428711","-3.44161300E+726428712","-8.61646259E+726428709","","","");\r
4888         mathtest(113,def,"59015.9705","-72070405.4E+322957279","-7.20704054E+322957286","7.20704054E+322957286","-4.25330492E+322957291","-8.18865527E-322957283","0","59015.9705","4.01063488E-34");\r
4889         mathtest(114,def,"16411470E+578192008","497470.005E-377473621","1.64114700E+578192015","1.64114700E+578192015","8.16421406E+200718399","3.29898684E+955665630","","","");\r
4890         mathtest(115,def,"-107.353544E+609689808","-659.50136E-456711743","-1.07353544E+609689810","-1.07353544E+609689810","7.07998083E+152978069","","","","");\r
4891         mathtest(116,def,"786.134163","-53.0292275E-664419768","786.134163","786.134163","-4.16880874E-664419764","-1.48245449E+664419769","","","3.33055532E-15");\r
4892         mathtest(117,def,"23.5414714","5000786.91","5000810.45","-5000763.37","117725882","0.0000047075534","0","23.5414714","4.4895618E+6860247");\r
4893         mathtest(118,def,"-69775.6113","561292120.","561222344","-561361896","-3.91645008E+13","-0.000124312473","0","-69775.6113","");\r
4894         mathtest(119,def,"919043.871","-71606613.7","-70687569.8","72525657.6","-6.58096194E+13","-0.0128346227","0","919043.871","3.05862429E-427014317");\r
4895         mathtest(120,def,"-27667.1915","-293455.107E-789181924","-27667.1915","-27667.1915","8.11907864E-789181915","9.42808315E+789181922","","","-4.72176938E-14");\r
4896         mathtest(121,def,"-908603625.","-982.409273E+449441134","-9.82409273E+449441136","9.82409273E+449441136","8.92620627E+449441145","9.2487281E-449441129","0","-908603625","2.60768632E-90");\r
4897         mathtest(122,def,"847.113351","5.71511268","852.828464","841.398238","4841.34825","148.223386","148","1.27667436","3.69529538E+17");\r
4898         mathtest(123,def,"-992140475","3.82918218","-992140471","-992140479","-3.79908663E+9","-259099836","-259099836","-0.14787752","9.68930595E+35");\r
4899         mathtest(124,def,"-12606437.5","268123145E+362798858","2.68123145E+362798866","-2.68123145E+362798866","-3.38007767E+362798873","-4.70173416E-362798860","0","-12606437.5","-2.00344362E+21");\r
4900         mathtest(125,def,"3799470.64","-264.703992","3799205.94","3799735.34","-1.00573505E+9","-14353.6583","-14353","174.242824","2.3625466E-1744");\r
4901         mathtest(126,def,"-8.11070247","-931284056.E-654288974","-8.11070247","-8.11070247","7.55336789E-654288965","8.70916067E+654288965","","","-6.58375662E-9");\r
4902         mathtest(127,def,"-242660177.","-6.09832715E-943742415","-242660177","-242660177","1.47982115E-943742406","3.97912692E+943742422","","","4.89788901E-51");\r
4903         mathtest(128,def,"76.1463803","-45.6758006E-636907996","76.1463803","76.1463803","-3.47804688E-636907993","-1.66710554E+636907996","","","3.90619287E-10");\r
4904         mathtest(129,def,"761185.862","-70878470.9E+221214712","-7.08784709E+221214719","7.08784709E+221214719","-5.39516900E+221214725","-1.07393099E-221214714","0","761185.862","6.75406144E-42");\r
4905         mathtest(130,def,"6203606.54","-195.92748E-833512061","6203606.54","6203606.54","-1.21545700E-833512052","-3.1662769E+833512065","","","2.59843292E-14");\r
4906         mathtest(131,def,"-163274837.","95.0448550E+887876533","9.50448550E+887876534","-9.50448550E+887876534","-1.55184332E+887876543","-1.71787139E-887876527","0","-163274837","1.34645731E+82");\r
4907         mathtest(132,def,"2.38638190","-807986179.","-807986177","807986181","-1.92816359E+9","-2.95349347E-9","0","2.38638190","1.19029305E-305208656");\r
4908         mathtest(133,def,"-109022296E-811981158","7.19685680","7.19685680","-7.19685680","-7.84617852E-811981150","-1.51485988E-811981151","0","-1.09022296E-811981150","");\r
4909         mathtest(134,def,"-559250.780E-273710421","-393780811.","-393780811","393780811","2.20222226E-273710407","1.42020831E-273710424","0","-5.59250780E-273710416","");\r
4910         mathtest(135,def,"-88021.9966E+555334642","7599686.64E+818884053","7.59968664E+818884059","-7.59968664E+818884059","","-1.15823192E-263549413","0","-8.80219966E+555334646","");\r
4911         mathtest(136,def,"194.317648E-197450009","-930.979064","-930.979064","930.979064","-1.80905662E-197450004","-2.08723972E-197450010","0","1.94317648E-197450007","");\r
4912         mathtest(137,def,"9495479.65","7405697.96","16901177.6","2089781.69","7.03206543E+13","1.28218565","1","2089781.69","1.0135446E+51673383");\r
4913         mathtest(138,def,"-1656.28925","-163050511E-682882380","-1656.28925","-1656.28925","2.70058809E-682882369","1.01581359E+682882375","","","3.64525265E-7");\r
4914         mathtest(139,def,"95581.3784E+64262149","-99.2879365","9.55813784E+64262153","9.55813784E+64262153","-9.49007783E+64262155","-9.62668596E+64262151","","","");\r
4915         mathtest(140,def,"643761.452","3.73446939","643765.186","643757.718","2404107.44","172383.647","172383","2.41514363","1.71751236E+23");\r
4916         mathtest(141,def,"7960.49866E-129827423","3220.22850","3220.22850","-3220.22850","2.56346247E-129827416","2.47202913E-129827423","0","7.96049866E-129827420","");\r
4917         mathtest(142,def,"-6356.64112E-707203818","1805054.98","1805054.98","-1805054.98","-1.14740867E-707203808","-3.52157756E-707203821","0","-6.35664112E-707203815","");\r
4918         mathtest(143,def,"2.3904042","8476.52006","8478.91046","-8474.12966","20262.3092","0.000282003013","0","2.3904042","2.00251752E+3208");\r
4919         mathtest(144,def,"-713298.658","-957.782729","-714256.441","-712340.875","683185135","744.739528","744","-708.307624","3.68122321E-5608");\r
4920         mathtest(145,def,"607779233.E-820497365","-20.1188742E-857318323","6.07779233E-820497357","6.07779233E-820497357","","-3.02094057E+36820965","","","");\r
4921         mathtest(146,def,"-205888251","-908.792922E+250680613","-9.08792922E+250680615","9.08792922E+250680615","1.87109785E+250680624","2.26551336E-250680608","0","-205888251","-1.5042358E-75");\r
4922         mathtest(147,def,"51542399.1","-23212.2414","51519186.9","51565611.3","-1.19641461E+12","-2220.4835","-2220","11223.1920","1.71641348E-179015");\r
4923         mathtest(148,def,"4.44287230","158923023","158923027","-158923019","706074697","2.79561275E-8","0","4.44287230","7.12573416E+102928693");\r
4924         mathtest(149,def,"-79123682.6","-3.8571770","-79123686.5","-79123678.8","305194049","20513365.8","20513365","-2.9293950","2.55137345E-32");\r
4925         mathtest(150,def,"-80.3324347E-569715030","883142.351","883142.351","-883142.351","-7.09449752E-569715023","-9.09620455E-569715035","0","-8.03324347E-569715029","");\r
4926         mathtest(151,def,"13637.483","-52798.5631","-39161.0801","66436.0461","-720039507","-0.258292692","0","13637.483","1.47163791E-218310");\r
4927         mathtest(152,def,"6.42934843E-276476458","84057440.0E-388039782","6.42934843E-276476458","6.42934843E-276476458","5.40434570E-664516232","7.64875593E+111563316","","","");\r
4928         mathtest(153,def,"-5.64133087","-17401297.","-17401302.6","17401291.4","98166473.9","3.24190253E-7","0","-5.64133087","-1.25908916E-13075014");\r
4929         mathtest(154,def,"95469.7057E+865733824","198.829749","9.54697057E+865733828","9.54697057E+865733828","1.89822176E+865733831","4.80158056E+865733826","","","");\r
4930         mathtest(155,def,"-416466.209","-930153427","-930569893","929736961","3.87377472E+14","0.000447739262","0","-416466.209","");\r
4931         mathtest(156,def,"-1541733.85","-1.99208708","-1541735.84","-1541731.86","3071268.08","773928.944","773928","-1.88034976","4.20708401E-13");\r
4932         mathtest(157,def,"-39152691.8","-645131748.","-684284440","605979056","2.52586445E+16","0.0606894513","0","-39152691.8","");\r
4933         mathtest(158,def,"113.939979","-58282550.4","-58282436.5","58282664.3","-6.64071257E+9","-0.0000019549587","0","113.939979","2.106557E-119868330");\r
4934         mathtest(159,def,"-324971.736","-9517.15154","-334488.888","-315454.585","3.09280526E+9","34.1459033","34","-1388.58364","-5.82795263E-52457");\r
4935         mathtest(160,def,"-76.9436744","-9548122.75E-273599728","-76.9436744","-76.9436744","7.34667648E-273599720","8.05851332E+273599722","","","1.37489895E-19");\r
4936         mathtest(161,def,"-430393.282","-70.2551505","-430463.537","-430323.027","30237344.8","6126.14561","6126","-10.2300370","4.26006409E-395");\r
4937         mathtest(162,def,"-3308051.90","-349433799.E+397813188","-3.49433799E+397813196","3.49433799E+397813196","1.15594514E+397813203","9.46689161E-397813191","0","-3308051.90","-2.76237768E-20");\r
4938         mathtest(163,def,"23.1543212E-655822712","5848.20853","5848.20853","-5848.20853","1.35411299E-655822707","3.95921607E-655822715","0","2.31543212E-655822711","");\r
4939         mathtest(164,def,"-174.261308E-82902077","-200096204.","-200096204","200096204","3.48690262E-82902067","8.70887626E-82902084","0","-1.74261308E-82902075","");\r
4940         mathtest(165,def,"-50669105.2","9105789.01E+609889700","9.10578901E+609889706","-9.10578901E+609889706","-4.61382181E+609889714","-5.56449366E-609889700","0","-50669105.2","-2.20135008E+69");\r
4941         mathtest(166,def,"424768856.","-971.71757","424767884","424769828","-4.12755361E+11","-437132.012","-437132","11.19076","2.72651473E-8387");\r
4942         mathtest(167,def,"7181.2767","999117.918","1006299.19","-991936.641","7.17494223E+9","0.00718761677","0","7181.2767","3.09655124E+3852800");\r
4943         mathtest(168,def,"8096417.07E-433694528","-68.4863363","-68.4863363","68.4863363","-5.54493942E-433694520","-1.18219451E-433694523","0","8.09641707E-433694522","");\r
4944         mathtest(169,def,"1236287.5","-7119.97299E-176200498","1236287.50","1236287.50","-8.80233361E-176200489","-1.73636544E+176200500","","","2.26549784E-43");\r
4945         mathtest(170,def,"-752995833E-654401067","-15.2736930E+803939983","-1.52736930E+803939984","1.52736930E+803939984","1.15010272E+149538926","","0","-7.52995833E-654401059","");\r
4946         mathtest(171,def,"702992.459","-312.689474","702679.770","703305.148","-219818342","-2248.21274","-2248","66.521448","8.02493322E-1831");\r
4947         mathtest(172,def,"-4414.38805","-17680.4630E-584364536","-4414.38805","-4414.38805","7.80484246E-584364529","2.49676044E+584364535","","","5.13167312E-8");\r
4948         mathtest(173,def,"9.46350807","7826.65424","7836.11775","-7817.19073","74067.6056","0.00120913839","0","9.46350807","3.63271495E+7639");\r
4949         mathtest(174,def,"2078153.7","-16934607.3E+233594439","-1.69346073E+233594446","1.69346073E+233594446","-3.51927168E+233594452","-1.2271638E-233594440","0","2078153.7","2.31549939E-13");\r
4950         mathtest(175,def,"-9359.74629","7.07761788E+252457696","7.07761788E+252457696","-7.07761788E+252457696","-6.62447077E+252457700","-1.32244301E-252457693","0","-9359.74629","-6.29286677E+27");\r
4951         mathtest(176,def,"66.2319284E+730468479","25.9391685E+221147044","6.62319284E+730468480","6.62319284E+730468480","1.71800115E+951615526","2.55335588E+509321435","","","");\r
4952         mathtest(177,def,"317997088.E-90968742","-977426.461","-977426.461","977426.461","-3.10818768E-90968728","-3.2534119E-90968740","0","3.17997088E-90968734","");\r
4953         mathtest(178,def,"227473386","-6759.61390","227466626","227480146","-1.53763226E+12","-33651.8312","-33651","5618.65110","1.40992627E-56493");\r
4954         mathtest(179,def,"-392019.462","-245456.503","-637475.965","-146562.959","9.62237263E+10","1.59710359","1","-146562.959","-3.08656533E-1372917");\r
4955         mathtest(180,def,"-3619556.28E+587673583","-3.45236972","-3.61955628E+587673589","-3.61955628E+587673589","1.24960465E+587673590","1.04842661E+587673589","","","");\r
4956         mathtest(181,def,"-249.400704E-923930848","831102.919","831102.919","-831102.919","-2.07277653E-923930840","-3.00084019E-923930852","0","-2.49400704E-923930846","");\r
4957         mathtest(182,def,"65234.2739E+154949914","-694581895","6.52342739E+154949918","6.52342739E+154949918","-4.53105456E+154949927","-9.39187652E+154949909","","","");\r
4958         mathtest(183,def,"45.2316213","-88775083.4","-88775038.2","88775128.6","-4.01544095E+9","-5.09508069E-7","0","45.2316213","1.92314254E-146962015");\r
4959         mathtest(184,def,"331100375.","442.343378","331100817","331099933","1.46460058E+11","748514.37","748514","163.759708","6.64011043E+3765");\r
4960         mathtest(185,def,"81.8162765","5.61239515E+467372163","5.61239515E+467372163","-5.61239515E+467372163","4.59185273E+467372165","1.45777826E-467372162","0","81.8162765","2.99942677E+11");\r
4961         mathtest(186,def,"-5738.13069E+789464078","33969715.0","-5.73813069E+789464081","-5.73813069E+789464081","-1.94922664E+789464089","-1.68919012E+789464074","","","");\r
4962         mathtest(187,def,"-7413.03911","2.70630320E-254858264","-7413.03911","-7413.03911","-2.00619315E-254858260","-2.73917539E+254858267","","","-4.07369842E+11");\r
4963         mathtest(188,def,"-417696.182","27400.6002","-390295.582","-445096.782","-1.14451261E+10","-15.2440523","-15","-6687.1790","-1.58020334E+154017");\r
4964         mathtest(189,def,"68.8538735E+655647287","3198.17933E-132454826","6.88538735E+655647288","6.88538735E+655647288","2.20207035E+523192466","2.15290846E+788102111","","","");\r
4965         mathtest(190,def,"-6817.04246","434420.439","427603.397","-441237.481","-2.96146258E+9","-0.0156922692","0","-6817.04246","5.94143518E+1665390");\r
4966         mathtest(191,def,"8578.27511","647042.341E-490924334","8578.27511","8578.27511","5.55050721E-490924325","1.3257672E+490924332","","","3.98473846E+23");\r
4967         mathtest(192,def,"4124.11615E+733109424","597385828E+375928745","4.12411615E+733109427","4.12411615E+733109427","","6.9036056E+357180673","","","");\r
4968         mathtest(193,def,"102.714400","-919017.468","-918914.754","919120.182","-94396327.8","-0.000111765449","0","102.714400","4.04295689E-1848724");\r
4969         mathtest(194,def,"-4614.33015E+996778733","-433.560812E+22860599","-4.61433015E+996778736","-4.61433015E+996778736","","1.06428672E+973918135","","","");\r
4970         mathtest(195,def,"457455170.","3709230.48E+677010879","3.70923048E+677010885","-3.70923048E+677010885","1.69680666E+677010894","1.23328861E-677010877","0","457455170","4.37919376E+34");\r
4971         mathtest(196,def,"-2522468.15","-48482043.5","-51004511.7","45959575.4","1.22294411E+14","0.0520289156","0","-2522468.15","1.42348178E-310373595");\r
4972         mathtest(197,def,"-659811384","62777.6118","-659748606","-659874162","-4.14213829E+13","-10510.2976","-10510","-18683.9820","3.4393524E+553665");\r
4973         mathtest(198,def,"4424.94176","-825848.20","-821423.258","830273.142","-3.65433019E+9","-0.00535805704","0","4424.94176","3.42152775E-3010966");\r
4974         mathtest(199,def,"43.6441884","-6509.89663E-614169377","43.6441884","43.6441884","-2.84119155E-614169372","-6.70428286E+614169374","","","3.31524056E-12");\r
4975         mathtest(200,def,"897.388381E-843864876","84195.1369","84195.1369","-84195.1369","7.55557376E-843864869","1.06584348E-843864878","0","8.97388381E-843864874","");\r
4976         mathtest(201,def,"796199825","496.76834","796200322","796199328","3.95526865E+11","1602758.79","1602758","393.91828","6.42647264E+4423");\r
4977         mathtest(202,def,"573583582","1598.69521","573585181","573581983","9.16985325E+11","358782.323","358782","517.16578","9.91156302E+14004");\r
4978         mathtest(203,def,"-783144270.","6347.71496","-783137922","-783150618","-4.97117660E+12","-123374.202","-123374","-1284.52496","1.28110803E+56458");\r
4979         mathtest(204,def,"26909234.7","52411.5081","26961646.2","26856823.2","1.41035357E+12","513.422255","513","22131.0447","9.75836528E+389415");\r
4980         mathtest(205,def,"8.21915282","24859.7841E-843282959","8.21915282","8.21915282","2.04326365E-843282954","3.30620443E+843282955","","","67.5544731");\r
4981         mathtest(206,def,"-688.387710","82783.5207E-831870858","-688.387710","-688.387710","-5.69871582E-831870851","-8.31551623E+831870855","","","5.04272012E+22");\r
4982         mathtest(207,def,"-9792232.","-1749.01166","-9793981.01","-9790482.99","1.71267279E+10","5598.72311","5598","-1264.72732","-8.86985674E-12228");\r
4983         mathtest(208,def,"-130.765600","8.67437427","-122.091226","-139.439974","-1134.30976","-15.0749317","-15","-0.64998595","-1.11799947E+19");\r
4984         mathtest(209,def,"917.259102","-368640.426","-367723.167","369557.685","-338138786","-0.00248822169","0","917.259102","8.67104255E-1092094");\r
4985         mathtest(210,def,"-4.9725631","-294563717.","-294563722","294563712","1.46473667E+9","1.6881112E-8","0","-4.9725631","-6.27962584E-205187284");\r
4986         mathtest(211,def,"-60962887.2E-514249661","-243021.407","-243021.407","243021.407","1.48152866E-514249648","2.5085398E-514249659","0","-6.09628872E-514249654","");\r
4987         mathtest(212,def,"-55389219.8","-3772200E+981866393","-3.77220000E+981866399","3.77220000E+981866399","2.08939215E+981866407","1.46835321E-981866392","0","-55389219.8","1.06242678E-31");\r
4988         mathtest(213,def,"681.666010","626886700","626887382","-626886018","4.27327356E+11","0.00000108738311","0","681.666010","");\r
4989         mathtest(214,def,"6.42652138","53465894.5","53465900.9","-53465888.1","343599714","1.2019852E-7","0","6.42652138","4.61155532E+43199157");\r
4990         mathtest(215,def,"561546656","651408.476","562198064","560895248","3.65796251E+14","862.049968","862","32549.688","8.6052377E+5699419");\r
4991         mathtest(216,def,"7845778.36E-79951139","9.45859047","9.45859047","-9.45859047","7.42100044E-79951132","8.29487056E-79951134","0","7.84577836E-79951133","1.12648216E-719560189");\r
4992         mathtest(217,def,"54486.2112","10.7565078","54496.9677","54475.4547","586081.356","5065.41828","5065","4.4991930","1.25647168E+52");\r
4993         mathtest(218,def,"16576482.5","-2217720.83","14358761.7","18794203.3","-3.67620105E+13","-7.47455779","-7","1052436.69","1.38259374E-16010820");\r
4994         mathtest(219,def,"61.2793787E-392070111","6.22575651","6.22575651","-6.22575651","3.81510491E-392070109","9.84288072E-392070111","0","6.12793787E-392070110","");\r
4995         mathtest(220,def,"5115136.39","-653674372.","-648559236","658789508","-3.34363357E+15","-0.00782520565","0","5115136.39","");\r
4996         mathtest(221,def,"-7.84238366E-416477339","-37432758.9E+97369393","-3.74327589E+97369400","3.74327589E+97369400","2.93562057E-319107938","2.09505895E-513846739","0","-7.84238366E-416477339","");\r
4997         mathtest(222,def,"-387781.3E+284108380","-218085.592","-3.87781300E+284108385","-3.87781300E+284108385","8.45695144E+284108390","1.77811517E+284108380","","","");\r
4998         mathtest(223,def,"-5353.17736","3.39332346E+546685359","3.39332346E+546685359","-3.39332346E+546685359","-1.81650623E+546685363","-1.57756177E-546685356","0","-5353.17736","-1.53403369E+11");\r
4999         mathtest(224,def,"-20837.2900E-168652772","-8236.78305E-712819173","-2.08372900E-168652768","-2.08372900E-168652768","1.71632237E-881471937","2.52978497E+544166401","","","");\r
5000         mathtest(225,def,"-98573.8722E+829022366","309011.007","-9.85738722E+829022370","-9.85738722E+829022370","-3.04604115E+829022376","-3.18997932E+829022365","","","");\r
5001         mathtest(226,def,"49730750.7","-5315.10636E-299586991","49730750.7","49730750.7","-2.64324229E-299586980","-9.35649211E+299586994","","","3.28756936E-39");\r
5002         mathtest(227,def,"1539523.40","-962388.581","577134.82","2501911.98","-1.48161974E+12","-1.59969001","-1","577134.819","3.10144834E-5954673");\r
5003         mathtest(228,def,"81596.2121","-37600.9653","43995.2468","119197.177","-3.06809634E+9","-2.17005631","-2","6394.2815","1.97878299E-184684");\r
5004         mathtest(229,def,"590146199","-1425404.61","588720794","591571604","-8.41197113E+14","-414.020128","-414","28690.46","2.04650994E-12502170");\r
5005         mathtest(230,def,"196.05543","505.936305","701.991735","-309.880875","99191.5598","0.387510104","0","196.05543","8.78437397E+1159");\r
5006         mathtest(231,def,"77.8058449","-642.275274","-564.469429","720.081119","-49972.7704","-0.121140963","0","77.8058449","9.33582626E-1215");\r
5007         mathtest(232,def,"1468.60684","10068.138","11536.7448","-8599.5312","14786136.3","0.145866777","0","1468.60684","2.54122484E+31884");\r
5008         mathtest(233,def,"4.98774767E-387968632","4.41731439E-578812376","4.98774767E-387968632","4.98774767E-387968632","2.20324496E-966781007","1.12913577E+190843744","","","");\r
5009         mathtest(234,def,"981.091059","-92238.9930","-91257.9020","93220.0841","-90494851.3","-0.0106364025","0","981.091059","5.29943342E-275953");\r
5010         mathtest(235,def,"-3606.24992","8290224.70","8286618.45","-8293830.95","-2.98966222E+10","-0.000435000262","0","-3606.24992","-1.23747107E+29488793");\r
5011         mathtest(236,def,"-8978571.35","92243.4796","-8886327.87","-9070814.83","-8.28214663E+11","-97.3355666","-97","-30953.8288","-4.95762813E+641384");\r
5012         mathtest(237,def,"-61968.1992E+810060478","474294671.E+179263414","-6.19681992E+810060482","-6.19681992E+810060482","-2.93911867E+989323905","-1.30653374E+630797060","","","");\r
5013         mathtest(238,def,"61298431.6E-754429041","-2584862.79","-2584862.79","2584862.79","-1.58448035E-754429027","-2.37143851E-754429040","0","6.12984316E-754429034","");\r
5014         mathtest(239,def,"621039.064","-5351539.62","-4730500.56","5972578.68","-3.32351516E+12","-0.116048672","0","621039.064","2.41163312E-31002108");\r
5015         mathtest(240,def,"-19.6007605","-57905696.","-57905715.6","57905676.4","1.13499568E+9","3.38494515E-7","0","-19.6007605","1.05663646E-74829963");\r
5016         mathtest(241,def,"3626.13109E+687030346","189.896004","3.62613109E+687030349","3.62613109E+687030349","6.88587804E+687030351","1.90953523E+687030347","","","");\r
5017         mathtest(242,def,"-249334.026","-7.54735834E-14137188","-249334.026","-249334.026","1.88181324E-14137182","3.30359332E+14137192","","","6.69495408E-44");\r
5018         mathtest(243,def,"417613928.","-925213.216","416688715","418539141","-3.86381925E+14","-451.370474","-451","342767.584","8.38430085E-7976054");\r
5019         mathtest(244,def,"23.8320309","-50074996.1","-50074972.3","50075019.9","-1.19338885E+9","-4.75926765E-7","0","23.8320309","5.81466387E-68961335");\r
5020         mathtest(245,def,"49789677.7","-131827812E+156412534","-1.31827812E+156412542","1.31827812E+156412542","-6.56366427E+156412549","-3.77687204E-156412535","0","49789677.7","2.00844843E-8");\r
5021         mathtest(246,def,"-8907163.61E-741867246","773651.288E-472033282","7.73651288E-472033277","-7.73651288E-472033277","","-1.15131504E-269833963","0","-8.90716361E-741867240","");\r
5022         mathtest(247,def,"514021711.E+463536646","617441659.","5.14021711E+463536654","5.14021711E+463536654","3.17378418E+463536663","8.32502478E+463536645","","","");\r
5023         mathtest(248,def,"998175750","2.39285478","998175752","998175748","2.38848961E+9","417148487","417148486","1.30513692","9.96354828E+17");\r
5024         mathtest(249,def,"873575426.","647853.152E+497450781","6.47853152E+497450786","-6.47853152E+497450786","5.65948593E+497450795","1.3484158E-497450778","0","873575426","4.44429064E+53");\r
5025         mathtest(250,def,"4352626.8","-130338048.E-744560911","4352626.80","4352626.80","-5.67312881E-744560897","-3.33949055E+744560909","","","2.29746322E-7");\r
5026         mathtest(251,def,"437.286960","7.37560835","444.662568","429.911352","3225.25735","59.2882565","59","2.12606735","3.05749452E+18");\r
5027         mathtest(252,def,"8498280.45E+220511522","588617612","8.49828045E+220511528","8.49828045E+220511528","5.00223754E+220511537","1.44376931E+220511520","","","");\r
5028         mathtest(253,def,"-5320387.77","-7673237.46","-12993625.2","2352849.69","4.08245987E+13","0.693369363","0","-5320387.77","-1.30113745E-51609757");\r
5029         mathtest(254,def,"587655375","-4.9748366","587655370","587655380","-2.92348947E+9","-118125563","-118125563","0.7919942","1.42687667E-44");\r
5030         mathtest(255,def,"1266098.44","-2661.64904E-642601142","1266098.44","1266098.44","-3.36990970E-642601133","-4.75681963E+642601144","","","4.92717036E-19");\r
5031         mathtest(256,def,"3.92737463E+482873483","-685.522747","3.92737463E+482873483","3.92737463E+482873483","-2.69230464E+482873486","-5.72902161E+482873480","","","");\r
5032         mathtest(257,def,"22826494.1","986189474.","1.00901597E+9","-963362980","2.25112482E+16","0.0231461547","0","22826494.1","");\r
5033         mathtest(258,def,"-647342.380","-498816386","-499463728","498169044","3.22904986E+14","0.00129775685","0","-647342.380","");\r
5034         mathtest(259,def,"393092373.","-25.7226822","393092347","393092399","-1.01113902E+10","-15281935.6","-15281935","15.5939430","3.49252839E-224");\r
5035         mathtest(260,def,"2.96253492","20.7444888","23.7070237","-17.7819539","61.4562725","0.142810698","0","2.96253492","8.03402246E+9");\r
5036         mathtest(261,def,"53553.3750E+386955423","-732470876","5.35533750E+386955427","5.35533750E+386955427","-3.92262875E+386955436","-7.31133165E+386955418","","","");\r
5037         mathtest(262,def,"-696451.406E-286535917","-73086090.8","-73086090.8","73086090.8","5.09009107E-286535904","9.52919219E-286535920","0","-6.96451406E-286535912","");\r
5038         mathtest(263,def,"1551.29957","-580358622.E+117017265","-5.80358622E+117017273","5.80358622E+117017273","-9.00310081E+117017276","-2.67300168E-117017271","0","1551.29957","7.17506711E-20");\r
5039         mathtest(264,def,"-205123006.E-213752799","-78638468.6","-78638468.6","78638468.6","1.61305591E-213752783","2.60843083E-213752799","0","-2.05123006E-213752791","");\r
5040         mathtest(265,def,"77632.8073","-3378542.88E+677441319","-3.37854288E+677441325","3.37854288E+677441325","-2.62285768E+677441330","-2.29781921E-677441321","0","77632.8073","2.13729331E-15");\r
5041         mathtest(266,def,"3068999.37","2.21006212","3069001.58","3068997.16","6782679.25","1388648.46","1388648","1.02718624","9.41875713E+12");\r
5042         mathtest(267,def,"625524274.","55.2468624","625524329","625524219","3.45582535E+10","11322349.3","11322349","16.7522224","6.21482943E+483");\r
5043         mathtest(268,def,"61269134.9","-845761303.","-784492168","907030438","-5.18190634E+16","-0.0724425848","0","61269134.9","");\r
5044         mathtest(269,def,"-2840.12099","-2856.76731E-82743650","-2840.12099","-2840.12099","8.11356480E-82743644","9.94173022E+82743649","","","-4.36505254E-11");\r
5045         mathtest(270,def,"8.9538781","-7.56603391","1.38784419","16.5199120","-67.7453453","-1.18343087","-1","1.38784419","2.42053061E-8");\r
5046         mathtest(271,def,"-56233547.2","509752530","453518983","-565986077","-2.86651930E+16","-0.110315386","0","-56233547.2","");\r
5047         mathtest(272,def,"-3167.47853E-854859497","-110852115","-110852115","110852115","3.51121694E-854859486","2.85739116E-854859502","0","-3.16747853E-854859494","");\r
5048         mathtest(273,def,"-5652.52092","-632243244.","-632248897","632237592","3.57376816E+12","0.00000894042123","0","-5652.52092","");\r
5049         mathtest(274,def,"-946.009928","820090.66E-589278015","-946.009928","-946.009928","-7.75813906E-589278007","-1.15354311E+589278012","","","6.41454053E+23");\r
5050         mathtest(275,def,"-367.757758","-959.626016","-1327.38377","591.868258","352909.912","0.383230292","0","-367.757758","1.14982199E-2463");\r
5051         mathtest(276,def,"809926721.E-744611554","-67.6560549","-67.6560549","67.6560549","-5.47964467E-744611544","-1.19712378E-744611547","0","8.09926721E-744611546","");\r
5052         mathtest(277,def,"-1725.08555","75586.3031","73861.2176","-77311.3887","-130392839","-0.0228227269","0","-1725.08555","3.70540587E+244657");\r
5053         mathtest(278,def,"2659.84191E+29314492","-74372.4551E+518196680","-7.43724551E+518196684","7.43724551E+518196684","-1.97818973E+547511180","-3.5763804E-488882190","0","2.65984191E+29314495","1.06171811E-205201468");\r
5054         mathtest(279,def,"-91.1431113","12147507.0","12147415.9","-12147598.1","-1.10716158E+9","-0.00000750303015","0","-91.1431113","-1.52417006E+23805759");\r
5055         mathtest(280,def,"-1136778.91E+697783878","-801552569.","-1.13677891E+697783884","-1.13677891E+697783884","9.11188056E+697783892","1.41822128E+697783875","","","");\r
5056         mathtest(281,def,"73123773.0E+433334149","63.3548930","7.31237730E+433334156","7.31237730E+433334156","4.63274881E+433334158","1.15419298E+433334155","","","");\r
5057         mathtest(282,def,"-9765484.8","7979.90802E-234029715","-9765484.80","-9765484.80","-7.79276705E-234029705","-1.22375907E+234029718","","","8.27085614E+55");\r
5058         mathtest(283,def,"-695010288","-8.26582820","-695010296","-695010280","5.74483564E+9","84082353.4","84082353","-3.45024540","1.83683495E-71");\r
5059         mathtest(284,def,"23975643.3E-155955264","-505547.692E+137258948","-5.05547692E+137258953","5.05547692E+137258953","-1.21208311E-18696303","-4.7425087E-293214211","0","2.39756433E-155955257","1.26225952E+779776283");\r
5060         mathtest(285,def,"2862.95921","-32601248.6E-605861333","2862.95921","2862.95921","-9.33360449E-605861323","-8.78174712E+605861328","","","4.26142175E-11");\r
5061         mathtest(286,def,"-13.133518E+246090516","-8.71269925E-945092108","-1.31335180E+246090517","-1.31335180E+246090517","1.14428392E-699001590","","","","");\r
5062         mathtest(287,def,"-34671.2232","817710.762","783039.539","-852381.985","-2.83510323E+10","-0.0424003508","0","-34671.2232","-5.30788828E+3712382");\r
5063         mathtest(288,def,"-22464769","62.4366060","-22464706.6","-22464831.4","-1.40262393E+9","-359801.252","-359801","-15.7245940","6.21042536E+455");\r
5064         mathtest(289,def,"-9458.60887E-563051963","5676056.01","5676056.01","-5676056.01","-5.36875937E-563051953","-1.66640513E-563051966","0","-9.45860887E-563051960","");\r
5065         mathtest(290,def,"-591.924123E-95331874","-134.596188","-134.596188","134.596188","7.96707305E-95331870","4.39777777E-95331874","0","-5.91924123E-95331872","");\r
5066         mathtest(291,def,"-182566085.E+68870646","-960345993.","-1.82566085E+68870654","-1.82566085E+68870654","1.75326608E+68870663","1.9010449E+68870645","","","");\r
5067         mathtest(292,def,"8232.54893","-99822004E+891979845","-9.98220040E+891979852","9.98220040E+891979852","-8.21789532E+891979856","-8.24722867E-891979850","0","8232.54893","6.99289156E-40");\r
5068         mathtest(293,def,"-4336.94317","-819373.601E+563233430","-8.19373601E+563233435","8.19373601E+563233435","3.55357674E+563233439","5.29299841E-563233433","0","-4336.94317","7.98969405E-30");\r
5069         mathtest(294,def,"-2.09044362E-876527908","-6515463.33","-6515463.33","6515463.33","1.36202087E-876527901","3.20843433E-876527915","0","-2.09044362E-876527908","");\r
5070         mathtest(295,def,"-194343.344","1.95929977","-194341.385","-194345.303","-380776.869","-99190.2041","-99190","-0.39981370","3.77693354E+10");\r
5071         mathtest(296,def,"-326002.927","4215.99030","-321786.937","-330218.917","-1.37442518E+9","-77.3253503","-77","-1371.67390","5.51875821E+23243");\r
5072         mathtest(297,def,"-12037.8590E+876429044","314.81827","-1.20378590E+876429048","-1.20378590E+876429048","-3.78973794E+876429050","-3.82374854E+876429045","","","");\r
5073         mathtest(298,def,"21036045.4E-162804809","-91.7149219","-91.7149219","91.7149219","-1.92931926E-162804800","-2.2936339E-162804804","0","2.10360454E-162804802","");\r
5074         mathtest(299,def,"-947019.534","9916.29280","-937103.241","-956935.827","-9.39092299E+9","-95.5013686","-95","-4971.71800","3.76029022E+59261");\r
5075         mathtest(300,def,"-5985.84136","-12.4090184E-12364204","-5985.84136","-5985.84136","7.42784156E-12364200","4.82378313E+12364206","","","-0.000167060893");\r
5076         mathtest(301,def,"-85344379.4","-6783.08669E+218840215","-6.78308669E+218840218","6.78308669E+218840218","5.78898324E+218840226","1.25819385E-218840211","0","-85344379.4","-3.03232347E-56");\r
5077         mathtest(302,def,"-94.1947070E-938257103","15003.240","15003.2400","-15003.2400","-1.41322580E-938257097","-6.27829102E-938257106","0","-9.41947070E-938257102","");\r
5078         mathtest(303,def,"-4846233.6","-8289769.76","-13136003.4","3443536.16","4.01741607E+13","0.584604125","0","-4846233.6","4.25077524E-55420465");\r
5079         mathtest(304,def,"67.9147198","-108373645.E+291715415","-1.08373645E+291715423","1.08373645E+291715423","-7.36016573E+291715424","-6.26671916E-291715422","0","67.9147198","0.0147243485");\r
5080         mathtest(305,def,"1958.77994","5.57285137E+690137826","5.57285137E+690137826","-5.57285137E+690137826","1.09159895E+690137830","3.51486126E-690137824","0","1958.77994","5.64824968E+19");\r
5081         mathtest(306,def,"22780314.3","8805279.83","31585594.1","13975034.5","2.00587042E+14","2.58711986","2","5169754.64","2.39132169E+64785373");\r
5082         mathtest(307,def,"596745.184","197602423.","198199168","-197005678","1.17918294E+14","0.00301992848","0","596745.184","");\r
5083         mathtest(308,def,"171.340497","-480349.924","-480178.584","480521.264","-82303394.7","-0.000356699332","0","171.340497","2.17914102E-1073035");\r
5084         mathtest(309,def,"824.65555","-379287.530","-378462.875","380112.186","-312781567","-0.00217422268","0","824.65555","6.35829256E-1106108");\r
5085         mathtest(310,def,"19.3164031","-9207644.24E+988115069","-9.20764424E+988115075","9.20764424E+988115075","-1.77858568E+988115077","-2.09786592E-988115075","0","19.3164031","2.67093711E-12");\r
5086         mathtest(311,def,"-3123.77646E+177814265","973284435.E+383256112","9.73284435E+383256120","-9.73284435E+383256120","-3.04032301E+561070389","-3.20952062E-205441853","0","-3.12377646E+177814268","");\r
5087         mathtest(312,def,"-850.123915E+662955309","6774849.81E-846576865","-8.50123915E+662955311","-8.50123915E+662955311","-5.75946184E-183621547","","","","");\r
5088         mathtest(313,def,"-23349.7724","2921.35355","-20428.4189","-26271.1260","-68212940.5","-7.99279238","-7","-2900.29755","-5.6705546E+12759");\r
5089         mathtest(314,def,"18886653.3","568707476.","587594129","-549820823","1.07409809E+16","0.0332097855","0","18886653.3","");\r
5090         mathtest(315,def,"-90552818.0","-542.03563E-986606878","-90552818.0","-90552818.0","4.90828538E-986606868","1.67060638E+986606883","","","-1.64244241E-40");\r
5091         mathtest(316,def,"41501126.1E+791838765","-69.6651675E+204268348","4.15011261E+791838772","4.15011261E+791838772","-2.89118290E+996107122","-5.95722763E+587570422","","","");\r
5092         mathtest(317,def,"76783193.3E-271488154","3765.01829E-520346003","7.67831933E-271488147","7.67831933E-271488147","2.89090127E-791834146","2.03938434E+248857853","","","");\r
5093         mathtest(318,def,"4192.9928","987822007E-146560989","4192.99280","4192.99280","4.14193056E-146560977","4.24468454E+146560983","","","1.67973653E+36");\r
5094         mathtest(319,def,"-891845.629","48277955.","47386109.4","-49169800.6","-4.30564831E+13","-0.0184731443","0","-891845.629","-6.32964147E+287267817");\r
5095         mathtest(320,def,"334.901176","-7609296.55E+447340228","-7.60929655E+447340234","7.60929655E+447340234","-2.54836236E+447340237","-4.40121073E-447340233","0","334.901176","6.31926575E-21");\r
5096         mathtest(321,def,"4.49868636","-341880896E-447251873","4.49868636","4.49868636","-1.53801492E-447251864","-1.31586363E+447251865","","","0.010983553");\r
5097         mathtest(322,def,"807615.58","-314286480","-313478865","315094096","-2.53822658E+14","-0.00256967968","0","807615.58","");\r
5098         mathtest(323,def,"-37.7457954","53277.8129E-859225538","-37.7457954","-37.7457954","-2.01101343E-859225532","-7.08471188E+859225534","","","-76620134.1");\r
5099         mathtest(324,def,"-28671081.","98.8819623","-28670982.1","-28671179.9","-2.83505275E+9","-289952.589","-289952","-58.2671904","-1.93625566E+738");\r
5100         mathtest(325,def,"-89752.2106E-469496896","99.9879961","99.9879961","-99.9879961","-8.97414368E-469496890","-8.97629857E-469496894","0","-8.97522106E-469496892","");\r
5101         mathtest(326,def,"-497983567E-13538052","39.4578742","39.4578742","-39.4578742","-1.96493729E-13538042","-1.26206385E-13538045","0","-4.97983567E-13538044","-1.55376543E-527983689");\r
5102         mathtest(327,def,"845739221E-654202565","-33313.1551","-33313.1551","33313.1551","-2.81742418E-654202552","-2.53875449E-654202561","0","8.45739221E-654202557","");\r
5103         mathtest(328,def,"742.332067E+537827843","-4532.70023E-855387414","7.42332067E+537827845","7.42332067E+537827845","-3.36476873E-317559565","","","","");\r
5104         mathtest(329,def,"-893.48654","670389960","670389067","-670390853","-5.98984406E+11","-0.00000133278628","0","-893.48654","");\r
5105         mathtest(330,def,"1.37697162","-915.737474E-351578724","1.37697162","1.37697162","-1.26094451E-351578721","-1.50367508E+351578721","","","0.0561920784");\r
5106         mathtest(331,def,"-65.2839808E+550288403","-121389.306","-6.52839808E+550288404","-6.52839808E+550288404","7.92477712E+550288409","5.37806689E+550288399","","","");\r
5107         mathtest(332,def,"-30346603.E+346067390","792661.544","-3.03466030E+346067397","-3.03466030E+346067397","-2.40545852E+346067403","-3.82844396E+346067391","","","");\r
5108         mathtest(333,def,"-61170.7065","-453731131.","-453792302","453669960","2.77550538E+13","0.000134817081","0","-61170.7065","");\r
5109         mathtest(334,def,"6569.51133","13.8706351E+399434914","1.38706351E+399434915","-1.38706351E+399434915","9.11232944E+399434918","4.73627291E-399434912","0","6569.51133","6569.51133");\r
5110         mathtest(335,def,"300703925.","-3156736.8","297547188","303860662","-9.49243146E+14","-95.2578387","-95","813929.0","4.18609114E-26763256");\r
5111         mathtest(336,def,"192138216E+353011592","-473.080633","1.92138216E+353011600","1.92138216E+353011600","-9.08968688E+353011602","-4.06142637E+353011597","","","");\r
5112         mathtest(337,def,"8607.64794","-34740.3367","-26132.6888","43347.9846","-299032588","-0.247770999","0","8607.64794","1.29604519E-136698");\r
5113         mathtest(338,def,"-67913.8241","-93815.4229","-161729.247","25901.5988","6.37136413E+9","0.723908948","0","-67913.8241","-6.96355203E-453311");\r
5114         mathtest(339,def,"34.5559455","-998799398.","-998799364","998799433","-3.45144576E+10","-3.45974833E-8","0","34.5559455","");\r
5115         mathtest(340,def,"387995.328","990199543.E-124623607","387995.328","387995.328","3.84192796E-124623593","3.91835495E+124623603","","","7.73152138E+55");\r
5116         mathtest(341,def,"-471.09166E-83521919","-441222368","-441222368","441222368","2.07856178E-83521908","1.06769669E-83521925","0","-4.7109166E-83521917","");\r
5117         mathtest(342,def,"-97834.3858","70779789.8E+502166065","7.07797898E+502166072","-7.07797898E+502166072","-6.92469726E+502166077","-1.38223617E-502166068","0","-97834.3858","-8.57907886E+34");\r
5118         mathtest(343,def,"7732331.06","-952719.482E+115325505","-9.52719482E+115325510","9.52719482E+115325510","-7.36674244E+115325517","-8.11606271E-115325505","0","7732331.06","1.30886724E-69");\r
5119         mathtest(344,def,"23.2745547","2.23194245E-221062592","23.2745547","23.2745547","5.19474666E-221062591","1.04279368E+221062593","","","541.704896");\r
5120         mathtest(345,def,"671.083363E-218324205","-787150031","-787150031","787150031","-5.28243290E-218324194","-8.52548227E-218324212","0","6.71083363E-218324203","");\r
5121         mathtest(346,def,"365167.80","-80263.6516","284904.148","445431.452","-2.93097011E+10","-4.54960362","-4","44113.1936","1.27052227E-446468");\r
5122         mathtest(347,def,"-1.43297604E-65129780","56.598733E-135581942","-1.43297604E-65129780","-1.43297604E-65129780","-8.11046283E-200711721","-2.53181646E+70452160","","","8.65831881E-390778680");\r
5123         mathtest(348,def,"416998859.","260.220323E-349285593","416998859","416998859","1.08511578E-349285582","1.60248383E+349285599","","","7.25111178E+25");\r
5124         mathtest(349,def,"7267.17611E+862630607","4021.56861","7.26717611E+862630610","7.26717611E+862630610","2.92254473E+862630614","1.80705014E+862630607","","","");\r
5125         mathtest(350,def,"12.2142434E+593908740","5.27236571E-396050748","1.22142434E+593908741","1.22142434E+593908741","6.43979581E+197857993","2.3166533E+989959488","","","");\r
5126         mathtest(351,def,"-28.591932","-1.79153238E-817064576","-28.5919320","-28.5919320","5.12233720E-817064575","1.59594838E+817064577","","","0.00122324372");\r
5127         mathtest(352,def,"590.849666","753424.306E+277232744","7.53424306E+277232749","-7.53424306E+277232749","4.45160500E+277232752","7.84219014E-277232748","0","590.849666","1.48530607E+22");\r
5128         mathtest(353,def,"1.7270628","-1325026.67","-1325024.94","1325028.40","-2288404.27","-0.00000130341739","0","1.7270628","2.09260036E-314440");\r
5129         mathtest(354,def,"33402118.","-5534.83745","33396583.2","33407652.8","-1.84875294E+11","-6034.8869","-6034","4908.82670","8.14473913E-41645");\r
5130         mathtest(355,def,"-439842.506","-775110.807","-1214953.31","335268.301","3.40926680E+11","0.567457584","0","-439842.506","-1.84678472E-4374182");\r
5131         mathtest(356,def,"-248664.779","-440890.44E+666433944","-4.40890440E+666433949","4.40890440E+666433949","1.09633924E+666433955","5.64005831E-666433945","0","-248664.779","2.61542877E-22");\r
5132         mathtest(357,def,"-14161.9142","8306.49493","-5855.4193","-22468.4091","-117635869","-1.70492059","-1","-5855.41927","1.65573372E+34479");\r
5133         mathtest(358,def,"-6417227.13","16679.8842","-6400547.25","-6433907.01","-1.07038605E+11","-384.728518","-384","-12151.5972","3.58767978E+113546");\r
5134         mathtest(359,def,"514825024.","-25.0446345E-103809457","514825024","514825024","-1.28936046E-103809447","-2.05563002E+103809464","","","7.32860062E-27");\r
5135         mathtest(360,def,"525948196","219450390","745398586","306497806","1.15419537E+17","2.39666102","2","87047416","");\r
5136         mathtest(361,def,"-638509.181","45580189.0E+269212559","4.55801890E+269212566","-4.55801890E+269212566","-2.91033691E+269212572","-1.40084803E-269212561","0","-638509.181","-1.06129405E+29");\r
5137         mathtest(362,def,"330590422","74.359928E+535377965","7.43599280E+535377966","-7.43599280E+535377966","2.45826800E+535377975","4.44581418E-535377959","0","330590422","4.31550742E+59");\r
5138         mathtest(363,def,"-3.48593871E-940579904","-20265.9640E-322988987","-2.02659640E-322988983","2.02659640E-322988983","","1.72009519E-617590921","0","-3.48593871E-940579904","");\r
5139         mathtest(364,def,"-328103480.","-721.949371E-923938665","-328103480","-328103480","2.36874101E-923938654","4.54468822E+923938670","","","-2.4430038E-60");\r
5140         mathtest(365,def,"-1857.01448","19081578.1","19079721.1","-19083435.1","-3.54347668E+10","-0.0000973197537","0","-1857.01448","8.44397087E+62374153");\r
5141         mathtest(366,def,"347.28720E+145930771","-62821.9906E-676564106","3.47287200E+145930773","3.47287200E+145930773","-2.18172732E-530633328","-5.52811518E+822494874","","","5.69990135E-875584642");\r
5142         mathtest(367,def,"-643.211399E+441807003","-50733419.2","-6.43211399E+441807005","-6.43211399E+441807005","3.26323135E+441807013","1.26782584E+441806998","","","");\r
5143         mathtest(368,def,"-53991661.4E-843339554","20718.7346","20718.7346","-20718.7346","-1.11863890E-843339542","-2.60593431E-843339551","0","-5.39916614E-843339547","");\r
5144         mathtest(369,def,"-900181424","-105763982.","-1.00594541E+9","-794417442","9.52067719E+16","8.51122856","8","-54069568","1.32627061E-947045602");\r
5145         mathtest(370,def,"94218.7462E+563233951","19262.6382E+765263890","1.92626382E+765263894","-1.92626382E+765263894","","4.89126906E-202029939","0","9.42187462E+563233955","");\r
5146         mathtest(371,def,"28549.271E+921331828","-2150590.40","2.85492710E+921331832","2.85492710E+921331832","-6.13977881E+921331838","-1.32750853E+921331826","","","");\r
5147         mathtest(372,def,"810.7080E+779625763","5957.94044","8.10708000E+779625765","8.10708000E+779625765","4.83014998E+779625769","1.36071854E+779625762","","","");\r
5148         mathtest(373,def,"-23.7357549E+77116908","351.100649E+864348022","3.51100649E+864348024","-3.51100649E+864348024","-8.33363895E+941464933","-6.7603848E-787231116","0","-2.37357549E+77116909","3.17403853E+308467637");\r
5149         mathtest(374,def,"40216102.2E+292724544","661.025962","4.02161022E+292724551","4.02161022E+292724551","2.65838876E+292724554","6.08389148E+292724548","","","");\r
5150         mathtest(375,def,"22785024.3E+783719168","399.505989E+137478666","2.27850243E+783719175","2.27850243E+783719175","9.10275367E+921197843","5.70329981E+646240506","","","");\r
5151         mathtest(376,def,"515.591819E+821371364","-692137914.E-149498690","5.15591819E+821371366","5.15591819E+821371366","-3.56860646E+671872685","-7.44926421E+970870047","","","");\r
5152         mathtest(377,def,"-536883072E+477911251","624996.301","-5.36883072E+477911259","-5.36883072E+477911259","-3.35549934E+477911265","-8.59017999E+477911253","","","");\r
5153         mathtest(378,def,"-399492.914E-334369192","5202119.87E+442442258","5.20211987E+442442264","-5.20211987E+442442264","-2.07821003E+108073078","-7.67942539E-776811452","0","-3.99492914E-334369187","");\r
5154         mathtest(379,def,"762.071184","9851631.37","9852393.44","-9850869.30","7.50764438E+9","0.0000773548213","0","762.071184","4.02198436E+28392356");\r
5155         mathtest(380,def,"5626.12471","72989818.3","72995444.4","-72984192.2","4.10649820E+11","0.0000770809524","0","5626.12471","1.79814757E+273727098");\r
5156         mathtest(381,def,"-47207260.1","-2073.3152","-47209333.4","-47205186.8","9.78755299E+10","22768.9741","22768","-2019.6264","-6.02238319E-15909");\r
5157         mathtest(382,def,"207.740860","-51.0390090","156.701851","258.779869","-10602.8876","-4.07023694","-4","3.5848240","6.40297515E-119");\r
5158         mathtest(383,def,"-572.812464E-745934021","-182805872.E+604508681","-1.82805872E+604508689","1.82805872E+604508689","1.04713482E-141425329","","0","-5.72812464E-745934019","");\r
5159         mathtest(384,def,"-6418504E+3531407","8459416.1","-6.41850400E+3531413","-6.41850400E+3531413","-5.42967961E+3531420","-7.58740784E+3531406","","","");\r
5160         mathtest(385,def,"280689.531","-128212543","-127931854","128493233","-3.59879186E+13","-0.00218925173","0","280689.531","1.42173809E-698530938");\r
5161         mathtest(386,def,"15.803551E-783422793","239108038E-489186308","2.39108038E-489186300","-2.39108038E-489186300","","6.60937672E-294236493","0","1.5803551E-783422792","");\r
5162         mathtest(387,def,"26.515922","-9418242.96E-105481628","26.5159220","26.5159220","-2.49733396E-105481620","-2.81537885E+105481622","","","1.54326108E-13");\r
5163         mathtest(388,def,"-88.1094557","-54029934.1","-54030022.2","54029846.0","4.76054809E+9","0.0000016307526","0","-88.1094557","5.05289826E-105089439");\r
5164         mathtest(389,def,"6770.68602E-498420397","-6.11248908E-729616908","6.77068602E-498420394","6.77068602E-498420394","","-1.10768067E+231196514","","","");\r
5165         mathtest(390,def,"-892973818.E-781904441","555201299.","555201299","-555201299","-4.95780224E-781904424","-1.60837847E-781904441","0","-8.92973818E-781904433","");\r
5166         mathtest(391,def,"670175802E+135430680","27355195.4","6.70175802E+135430688","6.70175802E+135430688","1.83327900E+135430696","2.44990318E+135430681","","","");\r
5167         mathtest(392,def,"-440950.26","205.477469E-677345561","-440950.260","-440950.260","-9.06053434E-677345554","-2.14597864E+677345564","","","1.94437132E+11");\r
5168         mathtest(393,def,"-8.2335779","573665010E+742722075","5.73665010E+742722083","-5.73665010E+742722083","-4.72331555E+742722084","-1.43525886E-742722083","0","-8.2335779","311552.753");\r
5169         mathtest(394,def,"452943.863","7022.23629","459966.099","445921.627","3.18067883E+9","64.5013703","64","3520.74044","5.54158976E+39716");\r
5170         mathtest(395,def,"62874.1079","-52719654.1","-52656780.0","52782528.2","-3.31470122E+12","-0.0011926123","0","62874.1079","1.18819936E-252973775");\r
5171         mathtest(396,def,"-7428.41741E+609772037","-46024819.3","-7.42841741E+609772040","-7.42841741E+609772040","3.41891569E+609772048","1.61400251E+609772033","","","");\r
5172         mathtest(397,def,"2.27959297","41937.019","41939.2986","-41934.7394","95599.3337","0.0000543575348","0","2.27959297","2.89712423E+15007");\r
5173         mathtest(398,def,"508692408E-671967782","8491989.20","8491989.20","-8491989.20","4.31981043E-671967767","5.99026207E-671967781","0","5.08692408E-671967774","");\r
5174         mathtest(399,def,"940.533705E-379310421","-4.01176961E+464620037","-4.01176961E+464620037","4.01176961E+464620037","-3.77320453E+85309619","-2.34443599E-843930456","0","9.40533705E-379310419","");\r
5175         mathtest(400,def,"97.0649652","-92.4485649E-151989098","97.0649652","97.0649652","-8.97351673E-151989095","-1.0499348E+151989098","","","1.30748728E-18");\r
5176         mathtest(401,def,"297544.536E+360279473","8.80275007","2.97544536E+360279478","2.97544536E+360279478","2.61921019E+360279479","3.38013159E+360279477","","","");\r
5177         mathtest(402,def,"-28861028.","82818.820E+138368758","8.28188200E+138368762","-8.28188200E+138368762","-2.39023628E+138368770","-3.48483932E-138368756","0","-28861028","4.81387013E+59");\r
5178         mathtest(403,def,"36.2496238E+68828039","49243.00","3.62496238E+68828040","3.62496238E+68828040","1.78504022E+68828045","7.36137599E+68828035","","","");\r
5179         mathtest(404,def,"22.447828E-476014683","-56067.5520","-56067.5520","56067.5520","-1.25859476E-476014677","-4.00371109E-476014687","0","2.2447828E-476014682","");\r
5180         mathtest(405,def,"282688.791E+75011952","5.99789051","2.82688791E+75011957","2.82688791E+75011957","1.69553642E+75011958","4.7131369E+75011956","","","5.10330507E+450071744");\r
5181         mathtest(406,def,"-981.860310E-737387002","-994046289","-994046289","994046289","9.76014597E-737386991","9.87741035E-737387009","0","-9.81860310E-737387000","");\r
5182         mathtest(407,def,"-702.91210","-6444903.55","-6445606.46","6444200.64","4.53020069E+9","0.000109064797","0","-702.91210","1.70866703E-18348004");\r
5183         mathtest(408,def,"972456720E-17536823","16371.2590","16371.2590","-16371.2590","1.59203408E-17536810","5.94002404E-17536819","0","9.72456720E-17536815","");\r
5184         mathtest(409,def,"71471.2045","-74303278.4","-74231807.2","74374749.6","-5.31054481E+12","-0.00096188494","0","71471.2045","2.14535374E-360677853");\r
5185         mathtest(410,def,"643.103951E+439708441","788251925.","6.43103951E+439708443","6.43103951E+439708443","5.06927927E+439708452","8.15860933E+439708434","","","");\r
5186         mathtest(411,def,"4.30838663","-7.43110827","-3.12272164","11.7394949","-32.0160875","-0.579777131","0","4.30838663","0.0000362908645");\r
5187         mathtest(412,def,"823.678025","-513.581840E-324453141","823.678025","823.678025","-4.23026076E-324453136","-1.60379118E+324453141","","","2.63762228E-15");\r
5188         mathtest(413,def,"4461.81162","3.22081680","4465.03244","4458.59080","14370.6778","1385.30438","1385","0.98035200","8.8824688E+10");\r
5189         mathtest(414,def,"-4458527.10","-99072605","-103531132","94614077.9","4.41717894E+14","0.0450026231","0","-4458527.10","-6.23928099E-658752715");\r
5190         mathtest(415,def,"-577964618","487424368.","-90540250","-1.06538899E+9","-2.81714039E+17","-1.18575241","-1","-90540250","");\r
5191         mathtest(416,def,"-867.036184","-57.1768608","-924.213045","-809.859323","49574.4072","15.1641096","15","-9.3832720","-3.40312837E-168");\r
5192         mathtest(417,def,"771871921E-330504770","5.34285236","5.34285236","-5.34285236","4.12399771E-330504761","1.44468136E-330504762","0","7.71871921E-330504762","");\r
5193         mathtest(418,def,"-338683.062E-728777518","166441931","166441931","-166441931","-5.63710628E-728777505","-2.03484218E-728777521","0","-3.38683062E-728777513","");\r
5194         mathtest(419,def,"-512568743","-416376887.E-965945295","-512568743","-512568743","2.13421778E-965945278","1.23102112E+965945295","","","1.44874358E-35");\r
5195         mathtest(420,def,"7447181.99","5318438.52","12765620.5","2128743.47","3.96073796E+13","1.40025723","1","2128743.47","1.21634782E+36548270");\r
5196         mathtest(421,def,"54789.8207","93165435.2","93220225.0","-93110645.4","5.10451749E+12","0.000588091716","0","54789.8207","3.80769825E+441483035");\r
5197         mathtest(422,def,"41488.5960","146.797094","41635.3931","41341.7989","6090405.33","282.625459","282","91.815492","6.84738153E+678");\r
5198         mathtest(423,def,"785741.663E+56754529","-461.531732","7.85741663E+56754534","7.85741663E+56754534","-3.62644711E+56754537","-1.70246509E+56754532","","","");\r
5199         mathtest(424,def,"-4.95436786","-3132.4233","-3137.37767","3127.46893","15519.1773","0.0015816406","0","-4.95436786","1.98062422E-2177");\r
5200         mathtest(425,def,"77321.8478E+404626874","82.4797688","7.73218478E+404626878","7.73218478E+404626878","6.37748813E+404626880","9.3746441E+404626876","","","");\r
5201         mathtest(426,def,"-7.99307725","-29153.7273","-29161.7204","29145.7342","233027.994","0.000274169994","0","-7.99307725","1.88688028E-26318");\r
5202         mathtest(427,def,"-61.6337401E+474999517","5254.87092","-6.16337401E+474999518","-6.16337401E+474999518","-3.23877349E+474999522","-1.1728878E+474999515","","","");\r
5203         mathtest(428,def,"-16.4043088","35.0064812","18.6021724","-51.4107900","-574.257128","-0.468607762","0","-16.4043088","-3.33831843E+42");\r
5204         mathtest(429,def,"-8.41156520","-56508958.9","-56508967.3","56508950.5","475328792","1.48853657E-7","0","-8.41156520","-8.86365458E-52263827");\r
5205         mathtest(430,def,"-360165.79E+503559835","-196688.515","-3.60165790E+503559840","-3.60165790E+503559840","7.08404744E+503559845","1.83114805E+503559835","","","");\r
5206         mathtest(431,def,"-653236480.E+565648495","-930.445274","-6.53236480E+565648503","-6.53236480E+565648503","6.07800796E+565648506","7.02068674E+565648500","","","");\r
5207         mathtest(432,def,"-3.73342903","855.029289","851.295860","-858.762718","-3192.19117","-0.00436643408","0","-3.73342903","-1.41988961E+489");\r
5208         mathtest(433,def,"-5.14890532E+562048011","10847127.8E-390918910","-5.14890532E+562048011","-5.14890532E+562048011","-5.58508340E+171129108","-4.74679142E+952966914","","","-5.14890532E+562048011");\r
5209         mathtest(434,def,"653311907","-810.036965E+744537823","-8.10036965E+744537825","8.10036965E+744537825","-5.29206794E+744537834","-8.06521104E-744537818","0","653311907","3.01325171E-71");\r
5210         mathtest(435,def,"-1.31557907","98.9139300E-579281802","-1.31557907","-1.31557907","-1.30129096E-579281800","-1.33002406E+579281800","","","15.529932");\r
5211         mathtest(436,def,"-875192389","-72071565.6","-947263955","-803120823","6.30764857E+16","12.1433797","12","-10333601.8","1.25564408E-644471405");\r
5212         mathtest(437,def,"-72838078.8","-391.398423","-72838470.2","-72837687.4","2.85087092E+10","186097.017","186097","-6.474969","-6.574057E-3075");\r
5213         mathtest(438,def,"29186560.9","-79.7419988","29186481.2","29186640.6","-2.32739470E+9","-366012.407","-366012","32.4352144","6.10050869E-598");\r
5214         mathtest(439,def,"-329801660E-730249465","-6489.9256","-6489.92560","6489.92560","2.14038824E-730249453","5.08174793E-730249461","0","-3.29801660E-730249457","");\r
5215         mathtest(440,def,"91.8429117E+103164883","7131455.16","9.18429117E+103164884","9.18429117E+103164884","6.54973607E+103164891","1.28785654E+103164878","","","");\r
5216         mathtest(441,def,"3943866.38E+150855113","-31927007.3","3.94386638E+150855119","3.94386638E+150855119","-1.25915851E+150855127","-1.23527594E+150855112","","","");\r
5217         mathtest(442,def,"-7002.0468E-795962156","-5937891.05","-5937891.05","5937891.05","4.15773910E-795962146","1.17921443E-795962159","0","-7.0020468E-795962153","");\r
5218         mathtest(443,def,"696504605.","54506.4617","696559111","696450099","3.79640016E+13","12778.386","12778","21037.3974","2.6008532E+481992");\r
5219         mathtest(444,def,"-5115.76467","690.960979E+815126701","6.90960979E+815126703","-6.90960979E+815126703","-3.53479376E+815126707","-7.4038402E-815126701","0","-5115.76467","-9.17009655E+25");\r
5220         mathtest(445,def,"-261.279392","-613.079357","-874.358749","351.799965","160185.002","0.426175484","0","-261.279392","-2.06318841E-1482");\r
5221         mathtest(446,def,"-591407763","-80145822.8","-671553586","-511261940","4.73988618E+16","7.37914644","7","-30387003.4","-2.79334522E-703030105");\r
5222         mathtest(447,def,"615630407","-69.4661869","615630338","615630476","-4.27654969E+10","-8862303.15","-8862303","10.4375693","3.44283102E-607");\r
5223         mathtest(448,def,"1078757.50","27402569.0E-713742082","1078757.50","1078757.50","2.95607268E-713742069","3.93670207E+713742080","","","1.25536924E+18");\r
5224         mathtest(449,def,"-4865.60358E-401116515","66952.5315","66952.5315","-66952.5315","-3.25764477E-401116507","-7.26724363E-401116517","0","-4.86560358E-401116512","");\r
5225         mathtest(450,def,"-87805.3921E-934896690","-1875.14745","-1875.14745","1875.14745","1.64648057E-934896682","4.68258601E-934896689","0","-8.78053921E-934896686","");\r
5226         mathtest(451,def,"-232540609.E+602702520","68.0834223","-2.32540609E+602702528","-2.32540609E+602702528","-1.58321605E+602702530","-3.41552468E+602702526","","","");\r
5227         mathtest(452,def,"-320610803.","-863871235.","-1.18448204E+9","543260432","2.76966450E+17","0.37113263","0","-320610803","");\r
5228         mathtest(453,def,"-303956364E+278139979","229537.920E+479603725","2.29537920E+479603730","-2.29537920E+479603730","-6.97695116E+757743717","-1.3242098E-201463743","0","-3.03956364E+278139987","9.23894712E+556279974");\r
5229         mathtest(454,def,"-439.747348","74.9494457E-353117582","-439.747348","-439.747348","-3.29588200E-353117578","-5.86725284E+353117582","","","-3.17996693E+18");\r
5230         mathtest(455,def,"-89702231.9","1.28993993","-89702230.6","-89702233.2","-115710491","-69539852.1","-69539852","-0.07890964","-89702231.9");\r
5231         mathtest(456,def,"-5856939.14","-6743375.34","-12600314.5","886436.20","3.94955390E+13","0.868547107","0","-5856939.14","-3.29213248E-45636942");\r
5232         mathtest(457,def,"733317.669E+100381349","-13832.6792E+174055607","-1.38326792E+174055611","1.38326792E+174055611","-1.01437481E+274436966","-5.30134227E-73674257","0","7.33317669E+100381354","1.36366549E-100381355");\r
5233         mathtest(458,def,"87.4798787E-80124704","108497.32","108497.320","-108497.320","9.49133239E-80124698","8.06286079E-80124708","0","8.74798787E-80124703","");\r
5234         mathtest(459,def,"-694562052","310681.319E+549445264","3.10681319E+549445269","-3.10681319E+549445269","-2.15787454E+549445278","-2.23560932E-549445261","0","-694562052","-3.35068155E+26");\r
5235         mathtest(460,def,"-9744135.85","1797016.04","-7947119.81","-11541151.9","-1.75103684E+13","-5.42239782","-5","-759055.65","3.83848006E+12558883");\r
5236         mathtest(461,def,"3625.87308","-50.2208536E+658627487","-5.02208536E+658627488","5.02208536E+658627488","-1.82094441E+658627492","-7.21985554E-658627486","0","3625.87308","1.5956477E-18");\r
5237         mathtest(462,def,"365347.52","-3655414.47","-3290066.95","4020761.99","-1.33549661E+12","-0.099946948","0","365347.52","1.02663257E-20333994");\r
5238         mathtest(463,def,"-19706333.6E-816923050","-383858032.","-383858032","383858032","7.56443443E-816923035","5.1337557E-816923052","0","-1.97063336E-816923043","");\r
5239         mathtest(464,def,"-86346.2616","-98.8063785","-86445.0680","-86247.4552","8531561.41","873.893598","873","-88.2931695","-2.05064086E-489");\r
5240         mathtest(465,def,"-445588.160E-496592215","328.822976","328.822976","-328.822976","-1.46519625E-496592207","-1.35510044E-496592212","0","-4.45588160E-496592210","");\r
5241         mathtest(466,def,"-9709213.71","-34.6690137","-9709248.38","-9709179.04","336608863","280054.512","280054","-17.7472602","-2.80903974E-245");\r
5242         mathtest(467,def,"742395536.","-43533.6889","742352002","742439070","-3.23192163E+13","-17053.3569","-17053","15539.1883","5.7622734E-386175");\r
5243         mathtest(468,def,"-878849193.","-5842982.47E-972537342","-878849193","-878849193","5.13510043E-972537327","1.50411061E+972537344","","","2.17027042E-54");\r
5244         mathtest(469,def,"-78014142.1","-624658.522","-78638800.6","-77389483.6","4.87321987E+13","124.890863","124","-556485.372","-7.86063865E-4929918");\r
5245         mathtest(470,def,"857039.371","454.379672","857493.751","856584.991","389421268","1886.17454","1886","79.309608","3.82253101E+2693");\r
5246         mathtest(471,def,"166534010.","-173.012236","166533837","166534183","-2.88124214E+10","-962556.255","-962556","44.164784","4.78620664E-1423");\r
5247         mathtest(472,def,"-810.879063","43776.610","42965.7309","-44587.4891","-35497536.5","-0.0185231123","0","-810.879063","-2.34758691E+127345");\r
5248         mathtest(473,def,"-327.127935","93458944","93458616.9","-93459271.1","-3.05730314E+10","-0.00000350023145","0","-327.127935","2.29323021E+235022854");\r
5249         mathtest(474,def,"539295218.","-9587941.10E-309643098","539295218","539295218","-5.17073079E-309643083","-5.62472394E+309643099","","","4.80545269E-88");\r
5250         mathtest(475,def,"-3862702.65","879616.733","-2983085.92","-4742319.38","-3.39769789E+12","-4.3913474","-4","-344235.718","-3.50650167E+5793941");\r
5251         mathtest(476,def,"-8.25290500","992.091584E+256070257","9.92091584E+256070259","-9.92091584E+256070259","-8.18763759E+256070260","-8.31869268E-256070260","0","-8.25290500","1.46577888E+9");\r
5252         mathtest(477,def,"546875205.","447.52857E+557357101","4.47528570E+557357103","-4.47528570E+557357103","2.44742278E+557357112","1.22198948E-557357095","0","546875205","8.94443542E+34");\r
5253         mathtest(478,def,"177623437","-7779116.14","169844321","185402553","-1.38175335E+15","-22.83337","-22","6482881.92","2.90085309E-64173820");\r
5254         mathtest(479,def,"377204735.","13768.1401","377218503","377190967","5.19340764E+12","27396.9274","27396","12768.8204","2.06065297E+118082");\r
5255         mathtest(480,def,"-2435.49239","-11732.0640E-23331504","-2435.49239","-2435.49239","2.85733526E-23331497","2.07592832E+23331503","","","-0.00041059459");\r
5256         mathtest(481,def,"-6128465.14E-137123294","-5742264.27","-5742264.27","5742264.27","3.51912664E-137123281","1.06725585E-137123294","0","-6.12846514E-137123288","");\r
5257         mathtest(482,def,"-2898065.44","-5.11638105","-2898070.56","-2898060.32","14827607.1","566428.773","566428","-3.95461060","-4.89169151E-33");\r
5258         mathtest(483,def,"1851395.31E+594383160","-550301.475","1.85139531E+594383166","1.85139531E+594383166","-1.01882557E+594383172","-3.36432918E+594383160","","","");\r
5259         mathtest(484,def,"536412589.E+379583977","899.601161","5.36412589E+379583985","5.36412589E+379583985","4.82557388E+379583988","5.96278231E+379583982","","","");\r
5260         mathtest(485,def,"185.85297","867419480.","867419666","-867419294","1.61212487E+11","2.14259622E-7","0","185.85297","");\r
5261         mathtest(486,def,"-5.26631053","-3815941.35E+183291763","-3.81594135E+183291769","3.81594135E+183291769","2.00959321E+183291770","1.38008162E-183291769","0","-5.26631053","0.00130009218");\r
5262         mathtest(487,def,"-8.11587021E-245942806","4553.06753E+943412048","4.55306753E+943412051","-4.55306753E+943412051","-3.69521051E+697469246","","0","-8.11587021E-245942806","");\r
5263         mathtest(488,def,"-405765.352","854963231","854557466","-855368996","-3.46914456E+14","-0.000474599769","0","-405765.352","");\r
5264         mathtest(489,def,"-159.609757","-43356.7567","-43516.3665","43197.1470","6920161.40","0.00368131219","0","-159.609757","-8.95397849E-95519");\r
5265         mathtest(490,def,"-564240.241E-501316672","-557.781977","-557.781977","557.781977","3.14723037E-501316664","1.01157847E-501316669","0","-5.64240241E-501316667","");\r
5266         mathtest(491,def,"318847.270","582107878.E+399633412","5.82107878E+399633420","-5.82107878E+399633420","1.85603508E+399633426","5.47746014E-399633416","0","318847.270","1.0507423E+33");\r
5267         mathtest(492,def,"-4426.59663","95.1096765","-4331.48695","-4521.70631","-421012.173","-46.5420217","-46","-51.5515110","-2.38037379E+346");\r
5268         mathtest(493,def,"6037.28310","578264.105","584301.388","-572226.822","3.49114411E+9","0.010440356","0","6037.28310","3.57279483E+2186324");\r
5269         mathtest(494,def,"-66.9556692","-53.8519404","-120.807610","-13.1037288","3605.69271","1.24332881","1","-13.1037288","2.55554086E-99");\r
5270         mathtest(495,def,"-92486.0222","-59935.8544","-152421.877","-32550.1678","5.54322876E+9","1.5430834","1","-32550.1678","1.83152656E-297647");\r
5271         mathtest(496,def,"852136219.E+917787351","9246221.91","8.52136219E+917787359","8.52136219E+917787359","7.87904058E+917787366","9.21604767E+917787352","","","");\r
5272         mathtest(497,def,"-2120096.16E-269253718","9437.00514","9437.00514","-9437.00514","-2.00073584E-269253708","-2.24657731E-269253716","0","-2.12009616E-269253712","");\r
5273         mathtest(498,def,"-524653.169E-865784226","228054.698","228054.698","-228054.698","-1.19649620E-865784215","-2.30055848E-865784226","0","-5.24653169E-865784221","");\r
5274         mathtest(499,def,"-288193133","-312268737.","-600461870","24075604","8.99937057E+16","0.922901011","0","-288193133","");\r
5275         mathtest(500,def,"-373484759E-113589964","844101958E-852538240","-3.73484759E-113589956","-3.73484759E-113589956","-3.15259216E-966128187","-4.42464036E+738948275","","","3.78602147E-908719644");\r
5276 \r
5277         summary("Arithmetic");\r
5278     }\r
5279 \r
5280     /* mathtest -- general arithmetic test routine\r
5281      Arg1  is test number\r
5282      Arg2  is MathContext\r
5283      Arg3  is left hand side (LHS)\r
5284      Arg4  is right hand side (RHS)\r
5285      Arg5  is the expected result for add\r
5286      Arg6  is the expected result for subtract\r
5287      Arg7  is the expected result for multiply\r
5288      Arg8  is the expected result for divide\r
5289      Arg9  is the expected result for integerDivide\r
5290      Arg10 is the expected result for remainder\r
5291      Arg11 is the expected result for power\r
5292      \r
5293      For power RHS, 0 is added to the number, any exponent is removed and\r
5294      the number is then rounded to an integer, using format(rhs+0,,0)\r
5295      \r
5296      If an error should result for an operation, the 'expected result' is\r
5297      an empty string.\r
5298      */\r
5299 \r
5300     private void mathtest(int test, com.ibm.icu.math.MathContext mc,\r
5301             java.lang.String slhs, java.lang.String srhs, java.lang.String add,\r
5302             java.lang.String sub, java.lang.String mul, java.lang.String div,\r
5303             java.lang.String idv, java.lang.String rem, java.lang.String pow) {\r
5304         com.ibm.icu.math.BigDecimal lhs;\r
5305         com.ibm.icu.math.BigDecimal rhs;\r
5306         java.lang.String res = null;\r
5307         java.lang.String sn = null;\r
5308         int e = 0;\r
5309 \r
5310         lhs = new com.ibm.icu.math.BigDecimal(slhs);\r
5311         rhs = new com.ibm.icu.math.BigDecimal(srhs);\r
5312 \r
5313         try {\r
5314             res = lhs.add(rhs, mc).toString();\r
5315         } catch (java.lang.ArithmeticException $137) {\r
5316             res = "";\r
5317         }\r
5318         mathtestcheck(test, lhs, rhs, "add", res, add);\r
5319 \r
5320         try {\r
5321             res = lhs.subtract(rhs, mc).toString();\r
5322         } catch (java.lang.ArithmeticException $138) {\r
5323             res = "";\r
5324         }\r
5325         mathtestcheck(test, lhs, rhs, "sub", res, sub);\r
5326 \r
5327         try {\r
5328             res = lhs.multiply(rhs, mc).toString();\r
5329         } catch (java.lang.ArithmeticException $139) {\r
5330             res = "";\r
5331         }\r
5332         mathtestcheck(test, lhs, rhs, "mul", res, mul);\r
5333 \r
5334         try {\r
5335             res = lhs.divide(rhs, mc).toString();\r
5336         } catch (java.lang.ArithmeticException $140) {\r
5337             res = "";\r
5338         }\r
5339         mathtestcheck(test, lhs, rhs, "div", res, div);\r
5340 \r
5341         try {\r
5342             res = lhs.divideInteger(rhs, mc).toString();\r
5343         } catch (java.lang.ArithmeticException $141) {\r
5344             res = "";\r
5345         }\r
5346         mathtestcheck(test, lhs, rhs, "idv", res, idv);\r
5347 \r
5348         try {\r
5349             res = lhs.remainder(rhs, mc).toString();\r
5350         } catch (java.lang.ArithmeticException $142) {\r
5351             res = "";\r
5352         }\r
5353         mathtestcheck(test, lhs, rhs, "rem", res, rem);\r
5354 \r
5355         try {\r
5356             // prepare an integer from the rhs\r
5357             // in Rexx:\r
5358             //   n=rhs+0\r
5359             //   e=pos('E', n)\r
5360             //   if e>0 then n=left(n,e-1)\r
5361             //   n=format(n,,0)\r
5362 \r
5363             sn = rhs.plus(mc).toString();\r
5364             e = sn.indexOf("E", 0);\r
5365             if (e > 0)\r
5366                 sn = sn.substring(0, e);\r
5367             sn = (new com.ibm.icu.math.BigDecimal(sn)).format(-1, 0);\r
5368 \r
5369             res = lhs.pow(new com.ibm.icu.math.BigDecimal(sn), mc).toString();\r
5370         } catch (java.lang.ArithmeticException $143) {\r
5371             res = "";\r
5372         }\r
5373         mathtestcheck(test, lhs, rhs, "pow", res, pow);\r
5374         return;\r
5375     }\r
5376 \r
5377     /* mathtestcheck -- check for general mathtest error\r
5378      Arg1  is test number\r
5379      Arg2  is left hand side (LHS)\r
5380      Arg3  is right hand side (RHS)\r
5381      Arg4  is the operation\r
5382      Arg5  is the actual result\r
5383      Arg6  is the expected result\r
5384      Show error message if a problem, otherwise return quietly\r
5385      */\r
5386 \r
5387     private void mathtestcheck(int test, com.ibm.icu.math.BigDecimal lhs,\r
5388             com.ibm.icu.math.BigDecimal rhs, java.lang.String op,\r
5389             java.lang.String got, java.lang.String want) {\r
5390         boolean flag;\r
5391         java.lang.String testnum;\r
5392 \r
5393         flag = want.equals((java.lang.Object) got);\r
5394 \r
5395         if ((!flag))\r
5396             say(">" + test + ">" + " " + lhs.toString() + " " + op + " "\r
5397                     + rhs.toString() + " " + "=" + " " + want + " " + "[got"\r
5398                     + " " + got + "]");\r
5399 \r
5400         testnum = "gen"\r
5401                 + right((new com.ibm.icu.math.BigDecimal(test + 1000))\r
5402                         .toString(), 3);\r
5403 \r
5404         (new Test(testnum)).ok = flag;\r
5405         return;\r
5406     }\r
5407 \r
5408     /* ------------------------------------------------------------------ */\r
5409     /* Support routines and minor classes follow                          */\r
5410     /* ------------------------------------------------------------------ */\r
5411 \r
5412     /* ----------------------------------------------------------------- */\r
5413     /* Method called to summarise pending tests                          */\r
5414     /* ----------------------------------------------------------------- */\r
5415     /* Arg1 is section name */\r
5416 \r
5417     private void summary(java.lang.String section) {\r
5418         int bad;\r
5419         int count;\r
5420         int i = 0;\r
5421         Test item = null;\r
5422         bad = 0;\r
5423         count = Tests.size();\r
5424         {\r
5425             int $144 = count;\r
5426             i = 0;\r
5427             for (; $144 > 0; $144--, i++) {\r
5428                 item = (Test) (Tests.elementAt(i));\r
5429                 if ((!item.ok))\r
5430                 {\r
5431                     bad++;\r
5432                     errln("Failed:" + " " + item.name);\r
5433                 }\r
5434             }\r
5435         }/*i*/\r
5436         totalcount = totalcount + count;\r
5437         Tests = new java.util.Vector(100); // reinitialize\r
5438         if (bad == 0)\r
5439             say("OK" + " " + left(section, 14) + " "\r
5440                     + right("[" + count + " " + "tests]", 12));\r
5441         else\r
5442             throw new DiagException(section + " " + "[failed" + " " + bad + " "\r
5443                     + "of" + " " + count + " " + "tests]", bad);\r
5444     }\r
5445 \r
5446     /* ----------------------------------------------------------------- */\r
5447     /* right - Utility to do a 'right' on a Java String                  */\r
5448     /* ----------------------------------------------------------------- */\r
5449     /* Arg1 is string to right-justify */\r
5450     /* Arg2 is desired length */\r
5451 \r
5452     private static java.lang.String right(java.lang.String s, int len) {\r
5453         int slen;\r
5454         slen = s.length();\r
5455         if (slen == len)\r
5456             return s; // length just right\r
5457         if (slen > len)\r
5458             return s.substring(slen - len); // truncate on left\r
5459         // too short\r
5460         return (new java.lang.String(new char[len - slen]))\r
5461                 .replace('\000', ' ').concat(s);\r
5462     }\r
5463 \r
5464     /* ----------------------------------------------------------------- */\r
5465     /* left - Utility to do a 'left' on a Java String                    */\r
5466     /* ----------------------------------------------------------------- */\r
5467     /* Arg1 is string to left-justify */\r
5468     /* Arg2 is desired length */\r
5469 \r
5470     private static java.lang.String left(java.lang.String s, int len) {\r
5471         int slen;\r
5472         slen = s.length();\r
5473         if (slen == len)\r
5474             return s; // length just right\r
5475         if (slen > len)\r
5476             return s.substring(0, len); // truncate on right\r
5477         // too short\r
5478         return s.concat((new java.lang.String(new char[len - slen])).replace(\r
5479                 '\000', ' '));\r
5480     }\r
5481 \r
5482     /* ----------------------------------------------------------------- */\r
5483     /* say - Utility to do a display                                     */\r
5484     /* ----------------------------------------------------------------- */\r
5485     /* Arg1 is string to display, omitted if none */\r
5486     /*         [null or omitted gives blank line] */\r
5487     // this version doesn't heed continuation final character\r
5488     private void say() {\r
5489         say((java.lang.String) null);\r
5490         return;\r
5491     }\r
5492 \r
5493     private void say(java.lang.String s) {\r
5494         if (s == null)\r
5495             s = "  ";\r
5496         logln(s);\r
5497     }\r
5498 \r
5499     /* ----------------------------------------------------------------- */\r
5500     /* Scaffolding for stand-alone run                                   */\r
5501     /* ----------------------------------------------------------------- */\r
5502     /** Entry point for stand-alone run.  It constructs a\r
5503      *  <code>DiagBigDecimal</code> object and then invokes its\r
5504      *  {@link #diagrun(boolean)} method to run the test\r
5505      *  suite.\r
5506      *\r
5507      * @param args The command line argument string array.\r
5508      *   if the first word is '<code>continue</code>' then try and run\r
5509      *   all tests, otherwise stop after the first failing test group.\r
5510      */\r
5511     public static void main(String[] args) throws Exception {\r
5512         new DiagBigDecimal().run(args);\r
5513     }\r
5514 \r
5515     public void TestBigDecimal() {\r
5516         boolean $continue;\r
5517         int fails;\r
5518         $continue = false;\r
5519         fails = diagrun($continue); // and run the tests\r
5520         if (fails != 0) {\r
5521             errln("Diagnostic Tests for math failed. Number of errors: "\r
5522                     + fails);\r
5523         }\r
5524     }\r
5525 \r
5526     /* ------------------------------------------------------------------ */\r
5527     /* Test -- represents a test and its status                           */\r
5528     /* ------------------------------------------------------------------ */\r
5529     /* Copyright IBM Corporation 1998, 2000.  All rights reserved.        */\r
5530     /* Author: Mike Cowlishaw                                             */\r
5531     /* ------------------------------------------------------------------ */\r
5532     /* 1998.07.15 Initial version                                         */\r
5533     /* 2000.03.27 Change to javadoc comments                              */\r
5534 \r
5535     /**\r
5536      * The <code>Test</code> class is used to record a specific test.\r
5537      * When constructed, it notes the name of the test and adds the test\r
5538      * to the list of tests held by the parent.\r
5539      *\r
5540      * Its <code>ok</flag> is assigned directly to record whether the\r
5541      * test succeeded (1) or failed (0).\r
5542      *\r
5543      * @see     com.ibm.icu.math.BigDecimal\r
5544      * @version 1.00 2000.03.27\r
5545      * @author  Mike Cowlishaw\r
5546      */\r
5547 \r
5548     public class Test {\r
5549         //private final transient java.lang.String $0 = "DiagBigDecimal.nrx";\r
5550 \r
5551         /* properties shared transient */\r
5552         /** The name of the test. */\r
5553         transient java.lang.String name;\r
5554 \r
5555         /** Success flag; will be set to 1 (true) if the test succeeded, or 0\r
5556          * (false) if the test failed.\r
5557          */\r
5558         transient boolean ok;\r
5559 \r
5560         /**\r
5561          * Constructs a new <code>Test</code> with a specified name.\r
5562          *\r
5563          * @param testname The <code>String</code> naming the test.\r
5564          */\r
5565 \r
5566         public Test(java.lang.String testname) {\r
5567             super();\r
5568             name = testname; // save the name\r
5569             DiagBigDecimal.this.Tests.addElement((java.lang.Object) this); // and add to parent's list\r
5570         }\r
5571     }\r
5572 \r
5573     /* ------------------------------------------------------------------ */\r
5574     /* DiagException                                                      */\r
5575     /* ------------------------------------------------------------------ */\r
5576     /* Copyright IBM Corporation 1996, 2000.  All rights reserved.        */\r
5577     /* Author: Mike Cowlishaw                                             */\r
5578     /* ------------------------------------------------------------------ */\r
5579     /* 1996.05.27 Initial version in NetRexx (as DiagX)                   */\r
5580     /* 1998.06.25 Copied from NetRexx test suite                          */\r
5581     /* 1999.07.03 Add fail count                                          */\r
5582     /* 2000.03.27 Change to javadoc comments                              */\r
5583 \r
5584     /**\r
5585      * The <code>DiagException</code> class is used to signal the failure\r
5586      * of a test group.  It records the number of failures in the group.\r
5587      *\r
5588      * @see     com.ibm.icu.math.BigDecimal\r
5589      * @version 1.00 2000.03.27\r
5590      * @author  Mike Cowlishaw\r
5591      */\r
5592 \r
5593     public static class DiagException extends java.lang.RuntimeException {\r
5594         //private final transient java.lang.String $0 = "DiagBigDecimal.nrx";\r
5595 \r
5596         /**\r
5597          * For serialization\r
5598          */\r
5599         private static final long serialVersionUID = 755873172220249188L;\r
5600         /* properties shared transient */\r
5601         /** the count of failed tests in the group which signalled this\r
5602          * exception.\r
5603          */\r
5604         transient int failcount = 0;\r
5605 \r
5606         // number of tests which failed\r
5607 \r
5608         /**\r
5609          * Constructs a new <code>DiagException</code> with a message and\r
5610          * failure count.  This is thrown when a group of tests fails.\r
5611          *\r
5612          * @param message The <code>String</code> message describing the group.\r
5613          * @param fails   The <code>int</code> number of failed tests in the  group.\r
5614          */\r
5615 \r
5616         public DiagException(java.lang.String message, int fails) {\r
5617             super(message);\r
5618             failcount = fails;\r
5619         }\r
5620     }\r
5621 }\r