]> gitweb.fperrin.net Git - Dictionary.git/blob - jars/icu4j-4_2_1-src/src/com/ibm/icu/dev/test/bigdec/DiagBigDecimal.java
fcbc1fc2dab7091ef30abf3e71a2ebc642fc99c9
[Dictionary.git] / jars / icu4j-4_2_1-src / src / com / ibm / icu / dev / test / bigdec / DiagBigDecimal.java
1 //##header\r
2 /* Generated from 'DiagBigDecimal.nrx' 27 Mar 2000 22:38:44 [v1.162] */\r
3 /* Options: Binary Comments Crossref Format Java Logo Trace1 Verbose3 */\r
4 package com.ibm.icu.dev.test.bigdec;\r
5 \r
6 import java.math.BigInteger;\r
7 import com.ibm.icu.dev.test.TestFmwk;\r
8 import com.ibm.icu.util.VersionInfo;\r
9 \r
10 /* ------------------------------------------------------------------ */\r
11 /* Decimal diagnostic tests mfc */\r
12 /* Copyright (c) IBM Corporation 1996-2009. All Rights Reserved. */\r
13 /* ------------------------------------------------------------------ */\r
14 /* DiagBigDecimal */\r
15 /*                                                                    */\r
16 /* A class that tests the BigDecimal and MathContext classes. */\r
17 /*                                                                    */\r
18 /* The tests here are derived from or cover the same paths as: */\r
19 /* -- ANSI X3-274 testcases */\r
20 /* -- Java JCK testcases */\r
21 /* -- NetRexx testcases */\r
22 /* -- VM/CMS S/370 REXX implementation testcases [1981+] */\r
23 /* -- IBM Vienna Laboratory Rexx compiler testcases [1988+] */\r
24 /* -- New testcases */\r
25 /*                                                                    */\r
26 /* The authoritative sources for how the underlying technology */\r
27 /* (arithmetic) should work are: */\r
28 /* -- for digits=0 (fixed point): java.math.BigDecimal */\r
29 /* -- for digits>0 (floating point): ANSI X3.274-1996 + errata */\r
30 /*                                                                    */\r
31 /* ------------------------------------------------------------------ */\r
32 /* Change list */\r
33 /* 1997.09.05 Initial implementation, from DiagRexx [NetRexx tests] */\r
34 /* 1998.05.02 0.07 changes (e.g., compareTo) */\r
35 /* 1998.06.06 Rounding modes and format additions */\r
36 /* 1998.06.25 Rename from DiagDecimal; make stand-alone [add */\r
37 /* DiagException as a Minor class] */\r
38 /* 1998.06.27 Start adding testcases for DIGITS=0/FORM=PLAIN cases */\r
39 /* Reorganize for faster trace compilation */\r
40 /* 1998.06.28 new: valueof, scale, movePointX, unscaledValue, etc. */\r
41 /* 1998.07.07 Scaled divide */\r
42 /* 1998.07.08 setScale */\r
43 /* 1998.07.15 new scaffolding (Minor Test class) -- see diagabs */\r
44 /* 1998.12.14 add toBigDecimal and BigDecimal(java.math.BigDecimal) */\r
45 /* 1999.02.04 number preparation rounds instead of digits+1 trunc */\r
46 /* 1999.02.09 format method now only has two signatures */\r
47 /* 1999.02.27 no longer use Rexx class or RexxIO class */\r
48 /* 1999.03.05 add MathContext tests */\r
49 /* 1999.03.05 update for 0.96 [no null settings, etc.] */\r
50 /* drop sundry constructors; no blanks; char[] gets ints */\r
51 /* drop sundry converters, add Exact converters */\r
52 /* 1999.05.27 additional tests for scaled arithmetic */\r
53 /* 1999.06.29 additional tests for exponent overflows */\r
54 /* 1999.07.03 add 'continue' option */\r
55 /* 1999.07.10 additional tests for scaled arithmetic */\r
56 /* 1999.07.18 randomly-generated tests added for base operators */\r
57 /* 1999.10.28 weird intValueExact bad cases */\r
58 /* 1999.12.21 multiplication fast path failure and edge cases */\r
59 /* 2000.01.01 copyright update */\r
60 /* 2000.03.26 cosmetic updates; add extra format() testcases */\r
61 /* 2000.03.27 1.00 move to com.ibm.icu.math package; open source release; */\r
62 /* change to javadoc comments */\r
63 /* ------------------------------------------------------------------ */\r
64 \r
65 // note BINARY for conversions checking\r
66 \r
67 /**\r
68  * The <code>DiagBigDecimal</code> class forms a standalone test suite for the\r
69  * <code>com.ibm.icu.math.BigDecimal</code> and\r
70  * <code>com.ibm.icu.math.MathContext</code> classes (or, by changing the\r
71  * <code>package</code> statement, other classes of the same names and\r
72  * definition in other packages). It may also be used as a constructed object to\r
73  * embed the tests in an external test harness.\r
74  * <p>\r
75  * The tests are collected into <i>groups</i>, each corresponding to a tested\r
76  * method or a more general grouping. By default, when run from the static\r
77  * {@link #main(java.lang.String[])} method, the run will end if any test fails\r
78  * in a group. The <code>continue</code> argument may be specified to force\r
79  * the tests to run to completion.\r
80  * <p>\r
81  * Two minor (inner) classes are used; {@link DiagBigDecimal.DiagException} is\r
82  * used to signal the failure of a test group, and {@link DiagBigDecimal.Test},\r
83  * a dependent minor class, is used to register tests so that a summary of\r
84  * failures (or success) can be presented as each group is completed.\r
85  * \r
86  * @see com.ibm.icu.math.BigDecimal\r
87  * @see com.ibm.icu.math.MathContext\r
88  * @version 1.00 2000.03.27\r
89  * @author Mike Cowlishaw\r
90  */\r
91 \r
92 public class DiagBigDecimal extends TestFmwk {\r
93     //private static final java.lang.String $0 = "DiagBigDecimal.nrx";\r
94 \r
95     /* properties shared */\r
96     java.util.Vector Tests = new java.util.Vector(100); // scaffolding\r
97 \r
98     /* properties private */\r
99     private int totalcount = 0; // counts tests run\r
100 \r
101     /* properties constant private */\r
102 \r
103     /* Count of test groups */\r
104     private static final int testcount = 38;\r
105 \r
106     private static final com.ibm.icu.math.BigDecimal zero = com.ibm.icu.math.BigDecimal.ZERO;\r
107     private static final com.ibm.icu.math.BigDecimal one = com.ibm.icu.math.BigDecimal.ONE;\r
108     private static final com.ibm.icu.math.BigDecimal two = new com.ibm.icu.math.BigDecimal(2);\r
109     private static final com.ibm.icu.math.BigDecimal ten = com.ibm.icu.math.BigDecimal.TEN;\r
110     private static final com.ibm.icu.math.BigDecimal tenlong = new com.ibm.icu.math.BigDecimal((long) 1234554321); // 10-digiter\r
111 \r
112     /* Some context objects -- [some of these are checked later] */\r
113     private static final com.ibm.icu.math.MathContext mcdef = com.ibm.icu.math.MathContext.DEFAULT;\r
114     private static final com.ibm.icu.math.MathContext mc3 = new com.ibm.icu.math.MathContext(3);\r
115     private static final com.ibm.icu.math.MathContext mc6 = new com.ibm.icu.math.MathContext(6);\r
116     private static final com.ibm.icu.math.MathContext mc9 = new com.ibm.icu.math.MathContext(9);\r
117     private static final com.ibm.icu.math.MathContext mc50 = new com.ibm.icu.math.MathContext(50);\r
118     private static final com.ibm.icu.math.MathContext mcs = new com.ibm.icu.math.MathContext(9, com.ibm.icu.math.MathContext.SCIENTIFIC);\r
119     private static final com.ibm.icu.math.MathContext mce = new com.ibm.icu.math.MathContext(9, com.ibm.icu.math.MathContext.ENGINEERING);\r
120     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
121     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
122     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
123 \r
124     /* boundary primitive values */\r
125     private static final byte bmin = -128;\r
126     private static final byte bmax = 127;\r
127     private static final byte bzer = 0;\r
128     private static final byte bneg = -1;\r
129     private static final byte bpos = 1;\r
130     private static final int imin = -2147483648;\r
131     private static final int imax = 2147483647;\r
132     private static final int izer = 0;\r
133     private static final int ineg = -1;\r
134     private static final int ipos = 1;\r
135     private static final long lmin = -9223372036854775808L;\r
136     private static final long lmax = 9223372036854775807L;\r
137     private static final long lzer = (long) 0;\r
138     private static final long lneg = (long) -1;\r
139     private static final long lpos = (long) 1;\r
140     private static final short smin = -32768;\r
141     private static final short smax = 32767;\r
142     private static final short szer = (short) 0;\r
143     private static final short sneg = (short) (-1);\r
144     private static final short spos = (short) 1;\r
145 \r
146     /**\r
147      * Constructs a <code>DiagBigDecimal</code> test suite.\r
148      * <p>\r
149      * Invoke its {@link #diagrun} method to run the tests.\r
150      */\r
151 \r
152     public DiagBigDecimal() {\r
153         super();\r
154     }\r
155 \r
156     static final boolean isJDK15OrLater = VersionInfo.javaVersion().compareTo(\r
157             VersionInfo.getInstance(1, 5)) >= 0;\r
158 \r
159     /**\r
160      * Run the tests in the test suite.\r
161      * \r
162      * @param isContinue\r
163      *            The <code>boolean</code> which determines whether to stop\r
164      *            running after a group fails. If 1 (true) then the tests should\r
165      *            be run to completion if possible; if 0 (false) then the run\r
166      *            will end if a group fails.\r
167      * @return an <code>int</code> which is 0 if all tests were successful, >0\r
168      *         (the count of failures) if some failures were detected, or <0 if\r
169      *         an unexpected Exception was signalled.\r
170      */\r
171 \r
172     public int diagrun(boolean isContinue) {\r
173         int fails;\r
174         int num = 0;\r
175         DiagException de = null;\r
176         java.lang.RuntimeException e = null;\r
177         java.lang.String rest = null;\r
178 \r
179         fails = 0; // count of failures\r
180         try {\r
181             num = 1;\r
182             num: for (; num <= testcount; num++) { // [testcount is constant\r
183                                                     // set above]\r
184                 try {\r
185                     dotest(num);\r
186                 } catch (DiagException $1) {\r
187                     de = $1;\r
188                     say();\r
189                     errln("**** Failed:" + " " + de.getMessage() + " " + "****");\r
190                     say();\r
191                     fails = fails + de.failcount;\r
192                     if ((!isContinue))\r
193                         break num;\r
194                 }\r
195             }\r
196         } catch (java.lang.RuntimeException $2) {\r
197             e = $2; // any other exception is total failure; just show trace and\r
198                     // quit\r
199             say();\r
200             errln("**** Failed: unexpected exception ****");\r
201             e.printStackTrace();\r
202             return -1;\r
203         }/* num */\r
204 \r
205         if (fails == 0)\r
206             say("--- All OK ---" + " "\r
207                     + right("[" + totalcount + " " + "tests]", 15));\r
208         else {\r
209             if (isContinue) {\r
210                 if (fails > 1)\r
211                     rest = "tests";\r
212                 else\r
213                     rest = "test";\r
214                 say("--- All run ---" + " "\r
215                         + right("[" + totalcount + " " + "tests,", 14) + " "\r
216                         + "failed" + " " + fails + " " + rest + "]");\r
217 \r
218             }\r
219         }\r
220 \r
221         return fails;\r
222     }\r
223 \r
224     /* Run test by number -- method for development/private switching */\r
225 \r
226     private void dotest(int num) {\r
227         {/* select */\r
228             switch (num) {\r
229             /* -------------------------------------------------------------- */\r
230             /* MathContext */\r
231             /* -------------------------------------------------------------- */\r
232             case 1:\r
233                 diagmathcontext();\r
234                 break;\r
235 \r
236             /* -------------------------------------------------------------- */\r
237             /* Constructors */\r
238             /* -------------------------------------------------------------- */\r
239             case 2:\r
240                 diagconstructors();\r
241                 break;\r
242 \r
243             /* -------------------------------------------------------------- */\r
244             /* Operator methods */\r
245             /* -------------------------------------------------------------- */\r
246             case 3:\r
247                 diagabs();\r
248                 break;\r
249             case 4:\r
250                 diagadd();\r
251                 break;\r
252             case 5:\r
253                 diagcompareto();\r
254                 break;\r
255             case 6:\r
256                 diagdivide();\r
257                 break;\r
258             case 7:\r
259                 diagdivideInteger();\r
260                 break;\r
261             case 8:\r
262                 diagmax();\r
263                 break;\r
264             case 9:\r
265                 diagmin();\r
266                 break;\r
267             case 10:\r
268                 diagmultiply();\r
269                 break;\r
270             case 11:\r
271                 diagnegate();\r
272                 break;\r
273             case 12:\r
274                 diagplus();\r
275                 break;\r
276             case 13:\r
277                 diagpow();\r
278                 break;\r
279             case 14:\r
280                 diagremainder();\r
281                 break;\r
282             case 15:\r
283                 diagsubtract();\r
284                 break;\r
285             case 16:\r
286                 diagmath();\r
287                 break; // general math\r
288 \r
289             /* -------------------------------------------------------------- */\r
290             /* Other methods */\r
291             /* -------------------------------------------------------------- */\r
292             case 17:\r
293                 diagbyteValue();\r
294                 break;\r
295             case 18:\r
296                 diagcomparetoObj();\r
297                 break;\r
298             case 19:\r
299                 diagdoublevalue();\r
300                 break;\r
301             case 20:\r
302                 diagequals();\r
303                 break;\r
304             case 21:\r
305                 diagfloatvalue();\r
306                 break;\r
307             case 22:\r
308                 diagformat();\r
309                 break;\r
310             case 23:\r
311                 diaghashcode();\r
312                 break;\r
313             case 24:\r
314                 diagintvalue();\r
315                 break;\r
316             case 25:\r
317                 diaglongvalue();\r
318                 break;\r
319             case 26:\r
320                 diagmovepointleft();\r
321                 break;\r
322             case 27:\r
323                 diagmovepointright();\r
324                 break;\r
325             case 28:\r
326                 diagscale();\r
327                 break;\r
328             case 29:\r
329                 diagsetscale();\r
330                 break;\r
331             case 30:\r
332                 diagshortvalue();\r
333                 break;\r
334             case 31:\r
335                 diagsignum();\r
336                 break;\r
337             case 32:\r
338                 diagtobigdecimal();\r
339                 break;\r
340             case 33:\r
341                 diagtobiginteger();\r
342                 break;\r
343             case 34:\r
344                 diagtochararray();\r
345                 break;\r
346             case 35:\r
347                 diagtostring();\r
348                 break;\r
349             case 36:\r
350                 diagunscaledvalue();\r
351                 break;\r
352             case 37:\r
353                 diagvalueof();\r
354                 break;\r
355 \r
356             /* -------------------------------------------------------------- */\r
357             /* Mutation test [must be the last test] */\r
358             /* -------------------------------------------------------------- */\r
359             case 38:\r
360                 diagmutation();\r
361                 break;\r
362             // if any more, increase testcount above\r
363             default: {\r
364                 say("*** dotest case not found:" + " " + num + " " + "***");\r
365             }\r
366             }\r
367         }\r
368         return;\r
369     }\r
370 \r
371     /*--------------------------------------------------------------------*/\r
372     /* Diagnostic group methods */\r
373     /*--------------------------------------------------------------------*/\r
374 \r
375     /** Test constructors (and {@link #toString()} for equalities). */\r
376 \r
377     public void diagconstructors() {\r
378         boolean flag = false;\r
379         java.lang.String num;\r
380         java.math.BigInteger bip;\r
381         java.math.BigInteger biz;\r
382         java.math.BigInteger bin;\r
383         com.ibm.icu.math.BigDecimal bda;\r
384         com.ibm.icu.math.BigDecimal bdb;\r
385         com.ibm.icu.math.BigDecimal bmc;\r
386         com.ibm.icu.math.BigDecimal bmd;\r
387         com.ibm.icu.math.BigDecimal bme;\r
388         java.lang.RuntimeException e = null;\r
389         char ca[];\r
390         double dzer;\r
391         double dpos;\r
392         double dneg;\r
393         double dpos5;\r
394         double dneg5;\r
395         double dmin;\r
396         double dmax;\r
397         double d;\r
398         java.lang.String badstrings[];\r
399         int i = 0;\r
400 \r
401         // constants [statically-called constructors]\r
402         (new Test("con001")).ok = (com.ibm.icu.math.BigDecimal.ZERO.toString()).equals("0");\r
403         (new Test("con002")).ok = (com.ibm.icu.math.BigDecimal.ONE.toString()).equals("1");\r
404         (new Test("con003")).ok = (com.ibm.icu.math.BigDecimal.TEN.toString()).equals("10");\r
405         (new Test("con004")).ok = (com.ibm.icu.math.BigDecimal.ZERO.intValueExact()) == 0;\r
406         (new Test("con005")).ok = (com.ibm.icu.math.BigDecimal.ONE.intValueExact()) == 1;\r
407         (new Test("con006")).ok = (com.ibm.icu.math.BigDecimal.TEN.intValueExact()) == 10;\r
408 \r
409         // [java.math.] BigDecimal\r
410 //#if defined(FOUNDATION10) || defined(J2SE13)\r
411 //#else\r
412         (new Test("cbd001")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal("0"))).toString()).equals("0");\r
413         (new Test("cbd002")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal("1"))).toString()).equals("1");\r
414         (new Test("cbd003")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal("10"))).toString()).equals("10");\r
415         (new Test("cbd004")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal("1000"))).toString()).equals("1000");\r
416         (new Test("cbd005")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal("10.0"))).toString()).equals("10.0");\r
417         (new Test("cbd006")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal("10.1"))).toString()).equals("10.1");\r
418         (new Test("cbd007")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal("-1.1"))).toString()).equals("-1.1");\r
419         (new Test("cbd008")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal("-9.0"))).toString()).equals("-9.0");\r
420         (new Test("cbd009")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal("0.9"))).toString()).equals("0.9");\r
421 \r
422         num = "123456789.123456789";\r
423         (new Test("cbd010")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal(num))).toString()).equals(num);\r
424         num = "123456789.000000000";\r
425         (new Test("cbd011")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal(num))).toString()).equals(num);\r
426         num = "123456789000000000";\r
427         (new Test("cbd012")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal(num))).toString()).equals(num);\r
428         num = "0.00000123456789";\r
429         (new Test("cbd013")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal(num))).toString()).equals(num);\r
430         num = "0.000000123456789";\r
431 \r
432         // ignore format change issues with 1.5\r
433         if (!isJDK15OrLater)\r
434             (new Test("cbd014")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal(num))).toString()).equals(num);\r
435 \r
436         try {\r
437             new com.ibm.icu.math.BigDecimal((java.math.BigDecimal) null);\r
438             flag = false;\r
439         } catch (java.lang.NullPointerException $3) {\r
440             flag = true;\r
441         }/* checknull */\r
442         (new Test("cbi015")).ok = flag;\r
443 //#endif\r
444 \r
445         // BigInteger\r
446         bip = new BigInteger("987654321987654321987654321"); // biggie +ve\r
447         biz = new BigInteger("0"); // biggie 0\r
448         bin = new BigInteger("-12345678998765432112345678"); // biggie -ve\r
449         (new Test("cbi001")).ok = ((new com.ibm.icu.math.BigDecimal(bip)).toString()).equals(bip.toString());\r
450         (new Test("cbi002")).ok = ((new com.ibm.icu.math.BigDecimal(biz)).toString()).equals("0");\r
451         (new Test("cbi003")).ok = ((new com.ibm.icu.math.BigDecimal(bin)).toString()).equals(bin.toString());\r
452         try {\r
453             new com.ibm.icu.math.BigDecimal((java.math.BigInteger) null);\r
454             flag = false;\r
455         } catch (java.lang.NullPointerException $4) {\r
456             flag = true;\r
457         }/* checknull */\r
458         (new Test("cbi004")).ok = flag;\r
459 \r
460         // BigInteger with scale\r
461         bip = new BigInteger("123456789"); // bigish\r
462         bda = new com.ibm.icu.math.BigDecimal(bip);\r
463         bdb = new com.ibm.icu.math.BigDecimal(bip, 5);\r
464         bmc = new com.ibm.icu.math.BigDecimal(bip, 15);\r
465         (new Test("cbs001")).ok = (bda.toString()).equals("123456789");\r
466         (new Test("cbs002")).ok = (bdb.toString()).equals("1234.56789");\r
467         (new Test("cbs003")).ok = (bmc.toString()).equals("0.000000123456789");\r
468         bip = new BigInteger("123456789123456789123456789"); // biggie\r
469         bda = new com.ibm.icu.math.BigDecimal(bip);\r
470         bdb = new com.ibm.icu.math.BigDecimal(bip, 7);\r
471         bmc = new com.ibm.icu.math.BigDecimal(bip, 13);\r
472         bmd = new com.ibm.icu.math.BigDecimal(bip, 19);\r
473         bme = new com.ibm.icu.math.BigDecimal(bip, 29);\r
474         (new Test("cbs011")).ok = (bda.toString()).equals("123456789123456789123456789");\r
475         (new Test("cbs012")).ok = (bdb.toString()).equals("12345678912345678912.3456789");\r
476         (new Test("cbs013")).ok = (bmc.toString()).equals("12345678912345.6789123456789");\r
477         (new Test("cbs014")).ok = (bmd.toString()).equals("12345678.9123456789123456789");\r
478         (new Test("cbs015")).ok = (bme.toString()).equals("0.00123456789123456789123456789");\r
479         try {\r
480             new com.ibm.icu.math.BigDecimal((java.math.BigInteger) null, 1);\r
481             flag = false;\r
482         } catch (java.lang.NullPointerException $5) {\r
483             flag = true;\r
484         }/* checknull */\r
485         (new Test("cbs004")).ok = flag;\r
486         try {\r
487             new com.ibm.icu.math.BigDecimal(bip, -8);\r
488             flag = false;\r
489         } catch (java.lang.RuntimeException $6) {\r
490             e = $6;\r
491             flag = (e.getMessage()).equals("Negative scale: -8");\r
492         }/* checkscale */\r
493         (new Test("cbs005")).ok = flag;\r
494 \r
495         // char[]\r
496         // We just test it's there\r
497         // Functionality is tested by BigDecimal(String).\r
498         ca = ("123.45").toCharArray();\r
499         (new Test("cca001")).ok = ((new com.ibm.icu.math.BigDecimal(ca))\r
500                 .toString()).equals("123.45");\r
501         try {\r
502             new com.ibm.icu.math.BigDecimal((char[]) null);\r
503             flag = false;\r
504         } catch (java.lang.NullPointerException $7) {\r
505             flag = true;\r
506         }/* checknull */\r
507         (new Test("cca010")).ok = flag;\r
508 \r
509         // char[],int,int\r
510         // We just test it's there, and that offsets work.\r
511         // Functionality is tested by BigDecimal(String).\r
512         ca = ("123.45").toCharArray();\r
513         (new Test("cca101")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 0, 6)).toString()).equals("123.45");\r
514         (new Test("cca102")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 1, 5)).toString()).equals("23.45");\r
515         (new Test("cca103")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 2, 4)).toString()).equals("3.45");\r
516         (new Test("cca104")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 3, 3)).toString()).equals("0.45");\r
517         (new Test("cca105")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 4, 2)).toString()).equals("45");\r
518         (new Test("cca106")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 5, 1)).toString()).equals("5");\r
519 \r
520         (new Test("cca110")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 0, 1)).toString()).equals("1");\r
521         (new Test("cca111")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 1, 1)).toString()).equals("2");\r
522         (new Test("cca112")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 2, 1)).toString()).equals("3");\r
523         (new Test("cca113")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 4, 1)).toString()).equals("4");\r
524 \r
525         (new Test("cca120")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 0, 2)).toString()).equals("12");\r
526         (new Test("cca121")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 1, 2)).toString()).equals("23");\r
527         (new Test("cca122")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 2, 2)).toString()).equals("3");\r
528         (new Test("cca123")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 3, 2)).toString()).equals("0.4");\r
529 \r
530         (new Test("cca130")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 0, 3)).toString()).equals("123");\r
531         (new Test("cca131")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 1, 3)).toString()).equals("23");\r
532         (new Test("cca132")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 2, 3)).toString()).equals("3.4");\r
533 \r
534         (new Test("cca140")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 0, 4)).toString()).equals("123");\r
535         (new Test("cca141")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 1, 4)).toString()).equals("23.4");\r
536 \r
537         (new Test("cca150")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 0, 5)).toString()).equals("123.4");\r
538 \r
539         // a couple of oddies\r
540         ca = ("x23.4x").toCharArray();\r
541         (new Test("cca160")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 1, 4)).toString()).equals("23.4");\r
542         (new Test("cca161")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 1, 1)).toString()).equals("2");\r
543         (new Test("cca162")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 4, 1)).toString()).equals("4");\r
544 \r
545         ca = ("0123456789.9876543210").toCharArray();\r
546         (new Test("cca163")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 0, 21)).toString()).equals("123456789.9876543210");\r
547         (new Test("cca164")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 1, 20)).toString()).equals("123456789.9876543210");\r
548         (new Test("cca165")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 2, 19)).toString()).equals("23456789.9876543210");\r
549         (new Test("cca166")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 2, 18)).toString()).equals("23456789.987654321");\r
550         (new Test("cca167")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 2, 17)).toString()).equals("23456789.98765432");\r
551         (new Test("cca168")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 2, 16)).toString()).equals("23456789.9876543");\r
552 \r
553         try {\r
554             new com.ibm.icu.math.BigDecimal((char[]) null, 0, 1);\r
555             flag = false;\r
556         } catch (java.lang.NullPointerException $8) {\r
557             flag = true;\r
558         }/* checknull */\r
559         (new Test("cca200")).ok = flag;\r
560 \r
561         try {\r
562             new com.ibm.icu.math.BigDecimal("123".toCharArray(), 0, 0);\r
563             flag = false;\r
564         } catch (java.lang.NumberFormatException $9) {\r
565             flag = true;\r
566         }/* checklen */\r
567         (new Test("cca201")).ok = flag;\r
568 \r
569         try {\r
570             new com.ibm.icu.math.BigDecimal("123".toCharArray(), 2, 4);\r
571             flag = false;\r
572         } catch (java.lang.RuntimeException $10) { // anything OK\r
573             flag = true;\r
574         }/* checkbound */\r
575         (new Test("cca202")).ok = flag;\r
576         try {\r
577             new com.ibm.icu.math.BigDecimal("123".toCharArray(), -1, 2);\r
578             flag = false;\r
579         } catch (java.lang.RuntimeException $11) { // anything OK\r
580             flag = true;\r
581         }/* checkbound2 */\r
582         (new Test("cca203")).ok = flag;\r
583         try {\r
584             new com.ibm.icu.math.BigDecimal("123".toCharArray(), 1, -2);\r
585             flag = false;\r
586         } catch (java.lang.RuntimeException $12) { // anything OK\r
587             flag = true;\r
588         }/* checkbound3 */\r
589         (new Test("cca204")).ok = flag;\r
590 \r
591 //#if defined(FOUNDATION10) || defined(J2SE13)\r
592 //#else\r
593         // double [deprecated]\r
594         // Note that many of these differ from the valueOf(double) results.\r
595         dzer = (double) 0;\r
596         dpos = (double) 1;\r
597         dpos = dpos / ((double) 10);\r
598         dneg = (double) -dpos;\r
599         (new Test("cdo001")).ok = ((new com.ibm.icu.math.BigDecimal(dneg)).toString()).equals("-0.1000000000000000055511151231257827021181583404541015625");\r
600 \r
601         (new Test("cdo002")).ok = ((new com.ibm.icu.math.BigDecimal(dzer)).toString()).equals("0"); // NB, not '0.0'\r
602         (new Test("cdo003")).ok = ((new com.ibm.icu.math.BigDecimal(dpos)).toString()).equals("0.1000000000000000055511151231257827021181583404541015625");\r
603 \r
604         dpos5 = (double) 0.5D;\r
605         dneg5 = (double) -dpos5;\r
606         (new Test("cdo004")).ok = ((new com.ibm.icu.math.BigDecimal(dneg5)).toString()).equals("-0.5");\r
607         (new Test("cdo005")).ok = ((new com.ibm.icu.math.BigDecimal(dpos5)).toString()).equals("0.5");\r
608         dmin = java.lang.Double.MIN_VALUE;\r
609         dmax = java.lang.Double.MAX_VALUE;\r
610         if (!isJDK15OrLater) // for some reason we format using scientific\r
611                                 // notation on 1.5 after 30 decimals or so\r
612             (new Test("cdo006")).ok = ((new com.ibm.icu.math.BigDecimal(dmin)).toString()).equals("0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004940656458412465441765687928682213723650598026143247644255856825006755072702087518652998363616359923797965646954457177309266567103559397963987747960107818781263007131903114045278458171678489821036887186360569987307230500063874091535649843873124733972731696151400317153853980741262385655911710266585566867681870395603106249319452715914924553293054565444011274801297099995419319894090804165633245247571478690147267801593552386115501348035264934720193790268107107491703332226844753335720832431936092382893458368060106011506169809753078342277318329247904982524730776375927247874656084778203734469699533647017972677717585125660551199131504891101451037862738167250955837389733598993664809941164205702637090279242767544565229087538682506419718265533447265625");\r
613 \r
614         (new Test("cdo007")).ok = ((new com.ibm.icu.math.BigDecimal(dmax)).toString()).equals("179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368");\r
615 \r
616         // nasties\r
617         d = (double) 9;\r
618         d = d / ((double) 10);\r
619         (new Test("cdo010")).ok = ((new com.ibm.icu.math.BigDecimal(d)).toString()).equals("0.90000000000000002220446049250313080847263336181640625");\r
620 \r
621         d = d / ((double) 10);\r
622         (new Test("cdo011")).ok = ((new com.ibm.icu.math.BigDecimal(d)).toString()).equals("0.0899999999999999966693309261245303787291049957275390625");\r
623 \r
624         d = d / ((double) 10);\r
625         (new Test("cdo012")).ok = ((new com.ibm.icu.math.BigDecimal(d)).toString()).equals("0.00899999999999999931998839741709161899052560329437255859375");\r
626 \r
627         d = d / ((double) 10);\r
628         (new Test("cdo013")).ok = ((new com.ibm.icu.math.BigDecimal(d)).toString()).equals("0.00089999999999999997536692664112933925935067236423492431640625");\r
629 \r
630         d = d / ((double) 10);\r
631         (new Test("cdo014")).ok = ((new com.ibm.icu.math.BigDecimal(d)).toString()).equals("0.00008999999999999999211568180168541175589780323207378387451171875");\r
632 \r
633         d = d / ((double) 10);\r
634         (new Test("cdo015")).ok = ((new com.ibm.icu.math.BigDecimal(d)).toString()).equals("0.00000899999999999999853394182236510090433512232266366481781005859375");\r
635 \r
636         d = d / ((double) 10);\r
637         if (!isJDK15OrLater)\r
638             (new Test("cdo016")).ok = ((new com.ibm.icu.math.BigDecimal(d)).toString()).equals("0.000000899999999999999853394182236510090433512232266366481781005859375");\r
639 \r
640         d = d / ((double) 10);\r
641         if (!isJDK15OrLater)\r
642             (new Test("cdo017")).ok = ((new com.ibm.icu.math.BigDecimal(d)).toString()).equals("0.0000000899999999999999853394182236510090433512232266366481781005859375");\r
643 \r
644         d = d / ((double) 10);\r
645         if (!isJDK15OrLater)\r
646             (new Test("cdo018")).ok = ((new com.ibm.icu.math.BigDecimal(d)).toString()).equals("0.000000008999999999999997872197332322678764437995369007694534957408905029296875");\r
647 //#endif\r
648 \r
649         try {\r
650             new com.ibm.icu.math.BigDecimal(\r
651                     java.lang.Double.POSITIVE_INFINITY);\r
652             flag = false;\r
653         } catch (java.lang.NumberFormatException $13) {\r
654             flag = true;\r
655         }/* checkpin */\r
656         (new Test("cdo101")).ok = flag;\r
657         try {\r
658             new com.ibm.icu.math.BigDecimal(\r
659                     java.lang.Double.NEGATIVE_INFINITY);\r
660             flag = false;\r
661         } catch (java.lang.NumberFormatException $14) {\r
662             flag = true;\r
663         }/* checknin */\r
664         (new Test("cdo102")).ok = flag;\r
665         try {\r
666             new com.ibm.icu.math.BigDecimal(java.lang.Double.NaN);\r
667             flag = false;\r
668         } catch (java.lang.NumberFormatException $15) {\r
669             flag = true;\r
670         }/* checknan */\r
671         (new Test("cdo103")).ok = flag;\r
672 \r
673         // int\r
674         (new Test("cin001")).ok = ((new com.ibm.icu.math.BigDecimal(imin)).toString()).equals("-2147483648");\r
675         (new Test("cin002")).ok = ((new com.ibm.icu.math.BigDecimal(imax)).toString()).equals("2147483647");\r
676         (new Test("cin003")).ok = ((new com.ibm.icu.math.BigDecimal(ineg)).toString()).equals("-1");\r
677         (new Test("cin004")).ok = ((new com.ibm.icu.math.BigDecimal(izer)).toString()).equals("0");\r
678         (new Test("cin005")).ok = ((new com.ibm.icu.math.BigDecimal(ipos)).toString()).equals("1");\r
679         (new Test("cin006")).ok = ((new com.ibm.icu.math.BigDecimal(10)).toString()).equals("10");\r
680         (new Test("cin007")).ok = ((new com.ibm.icu.math.BigDecimal(9)).toString()).equals("9");\r
681         (new Test("cin008")).ok = ((new com.ibm.icu.math.BigDecimal(5)).toString()).equals("5");\r
682         (new Test("cin009")).ok = ((new com.ibm.icu.math.BigDecimal(2)).toString()).equals("2");\r
683         (new Test("cin010")).ok = ((new com.ibm.icu.math.BigDecimal(-2)).toString()).equals("-2");\r
684         (new Test("cin011")).ok = ((new com.ibm.icu.math.BigDecimal(-5)).toString()).equals("-5");\r
685         (new Test("cin012")).ok = ((new com.ibm.icu.math.BigDecimal(-9)).toString()).equals("-9");\r
686         (new Test("cin013")).ok = ((new com.ibm.icu.math.BigDecimal(-10)).toString()).equals("-10");\r
687         (new Test("cin014")).ok = ((new com.ibm.icu.math.BigDecimal(-11)).toString()).equals("-11");\r
688         (new Test("cin015")).ok = ((new com.ibm.icu.math.BigDecimal(-99)).toString()).equals("-99");\r
689         (new Test("cin016")).ok = ((new com.ibm.icu.math.BigDecimal(-100)).toString()).equals("-100");\r
690         (new Test("cin017")).ok = ((new com.ibm.icu.math.BigDecimal(-999)).toString()).equals("-999");\r
691         (new Test("cin018")).ok = ((new com.ibm.icu.math.BigDecimal(-1000)).toString()).equals("-1000");\r
692 \r
693         (new Test("cin019")).ok = ((new com.ibm.icu.math.BigDecimal(11)).toString()).equals("11");\r
694         (new Test("cin020")).ok = ((new com.ibm.icu.math.BigDecimal(99)).toString()).equals("99");\r
695         (new Test("cin021")).ok = ((new com.ibm.icu.math.BigDecimal(100)).toString()).equals("100");\r
696         (new Test("cin022")).ok = ((new com.ibm.icu.math.BigDecimal(999)).toString()).equals("999");\r
697         (new Test("cin023")).ok = ((new com.ibm.icu.math.BigDecimal(1000)).toString()).equals("1000");\r
698 \r
699         // long\r
700         (new Test("clo001")).ok = ((new com.ibm.icu.math.BigDecimal(lmin)).toString()).equals("-9223372036854775808");\r
701         (new Test("clo002")).ok = ((new com.ibm.icu.math.BigDecimal(lmax)).toString()).equals("9223372036854775807");\r
702         (new Test("clo003")).ok = ((new com.ibm.icu.math.BigDecimal(lneg)).toString()).equals("-1");\r
703         (new Test("clo004")).ok = ((new com.ibm.icu.math.BigDecimal(lzer)).toString()).equals("0");\r
704         (new Test("clo005")).ok = ((new com.ibm.icu.math.BigDecimal(lpos)).toString()).equals("1");\r
705 \r
706         // String [many more examples are elsewhere]\r
707         // strings without E cannot generate E in result\r
708         (new Test("cst001")).ok = ((new com.ibm.icu.math.BigDecimal("12")).toString()).equals("12");\r
709         (new Test("cst002")).ok = ((new com.ibm.icu.math.BigDecimal("-76")).toString()).equals("-76");\r
710         (new Test("cst003")).ok = ((new com.ibm.icu.math.BigDecimal("12.76")).toString()).equals("12.76");\r
711         (new Test("cst004")).ok = ((new com.ibm.icu.math.BigDecimal("+12.76")).toString()).equals("12.76");\r
712         (new Test("cst005")).ok = ((new com.ibm.icu.math.BigDecimal("012.76")).toString()).equals("12.76");\r
713         (new Test("cst006")).ok = ((new com.ibm.icu.math.BigDecimal("+0.003")).toString()).equals("0.003");\r
714         (new Test("cst007")).ok = ((new com.ibm.icu.math.BigDecimal("17.")).toString()).equals("17");\r
715         (new Test("cst008")).ok = ((new com.ibm.icu.math.BigDecimal(".5")).toString()).equals("0.5");\r
716         (new Test("cst009")).ok = ((new com.ibm.icu.math.BigDecimal("044")).toString()).equals("44");\r
717         (new Test("cst010")).ok = ((new com.ibm.icu.math.BigDecimal("0044")).toString()).equals("44");\r
718         (new Test("cst011")).ok = ((new com.ibm.icu.math.BigDecimal("0.0005")).toString()).equals("0.0005");\r
719         (new Test("cst012")).ok = ((new com.ibm.icu.math.BigDecimal("00.00005")).toString()).equals("0.00005");\r
720         (new Test("cst013")).ok = ((new com.ibm.icu.math.BigDecimal("0.000005")).toString()).equals("0.000005");\r
721         (new Test("cst014")).ok = ((new com.ibm.icu.math.BigDecimal("0.0000005")).toString()).equals("0.0000005"); // \NR\r
722         (new Test("cst015")).ok = ((new com.ibm.icu.math.BigDecimal("0.00000005")).toString()).equals("0.00000005"); // \NR\r
723         (new Test("cst016")).ok = ((new com.ibm.icu.math.BigDecimal("12345678.876543210")).toString()).equals("12345678.876543210");\r
724         (new Test("cst017")).ok = ((new com.ibm.icu.math.BigDecimal("2345678.876543210")).toString()).equals("2345678.876543210");\r
725         (new Test("cst018")).ok = ((new com.ibm.icu.math.BigDecimal("345678.876543210")).toString()).equals("345678.876543210");\r
726         (new Test("cst019")).ok = ((new com.ibm.icu.math.BigDecimal("0345678.87654321")).toString()).equals("345678.87654321");\r
727         (new Test("cst020")).ok = ((new com.ibm.icu.math.BigDecimal("345678.8765432")).toString()).equals("345678.8765432");\r
728         (new Test("cst021")).ok = ((new com.ibm.icu.math.BigDecimal("+345678.8765432")).toString()).equals("345678.8765432");\r
729         (new Test("cst022")).ok = ((new com.ibm.icu.math.BigDecimal("+0345678.8765432")).toString()).equals("345678.8765432");\r
730         (new Test("cst023")).ok = ((new com.ibm.icu.math.BigDecimal("+00345678.8765432")).toString()).equals("345678.8765432");\r
731         (new Test("cst024")).ok = ((new com.ibm.icu.math.BigDecimal("-345678.8765432")).toString()).equals("-345678.8765432");\r
732         (new Test("cst025")).ok = ((new com.ibm.icu.math.BigDecimal("-0345678.8765432")).toString()).equals("-345678.8765432");\r
733         (new Test("cst026")).ok = ((new com.ibm.icu.math.BigDecimal("-00345678.8765432")).toString()).equals("-345678.8765432");\r
734 \r
735         // exotics --\r
736         (new Test("cst035")).ok = ((new com.ibm.icu.math.BigDecimal("\u0e57.\u0e50")).toString()).equals("7.0");\r
737         (new Test("cst036")).ok = ((new com.ibm.icu.math.BigDecimal("\u0b66.\u0b67")).toString()).equals("0.1");\r
738         (new Test("cst037")).ok = ((new com.ibm.icu.math.BigDecimal("\u0b66\u0b66")).toString()).equals("0");\r
739         (new Test("cst038")).ok = ((new com.ibm.icu.math.BigDecimal("\u0b6a\u0b66")).toString()).equals("40");\r
740 \r
741         // strings with E\r
742         (new Test("cst040")).ok = ((new com.ibm.icu.math.BigDecimal("1E+9")).toString()).equals("1E+9");\r
743         (new Test("cst041")).ok = ((new com.ibm.icu.math.BigDecimal("1e+09")).toString()).equals("1E+9");\r
744         (new Test("cst042")).ok = ((new com.ibm.icu.math.BigDecimal("1E+90")).toString()).equals("1E+90");\r
745         (new Test("cst043")).ok = ((new com.ibm.icu.math.BigDecimal("+1E+009")).toString()).equals("1E+9");\r
746         (new Test("cst044")).ok = ((new com.ibm.icu.math.BigDecimal("0E+9")).toString()).equals("0");\r
747         (new Test("cst045")).ok = ((new com.ibm.icu.math.BigDecimal("1E+9")).toString()).equals("1E+9");\r
748         (new Test("cst046")).ok = ((new com.ibm.icu.math.BigDecimal("1E+09")).toString()).equals("1E+9");\r
749         (new Test("cst047")).ok = ((new com.ibm.icu.math.BigDecimal("1e+90")).toString()).equals("1E+90");\r
750         (new Test("cst048")).ok = ((new com.ibm.icu.math.BigDecimal("1E+009")).toString()).equals("1E+9");\r
751         (new Test("cst049")).ok = ((new com.ibm.icu.math.BigDecimal("0E+9")).toString()).equals("0");\r
752         (new Test("cst050")).ok = ((new com.ibm.icu.math.BigDecimal("1E9")).toString()).equals("1E+9");\r
753         (new Test("cst051")).ok = ((new com.ibm.icu.math.BigDecimal("1e09")).toString()).equals("1E+9");\r
754         (new Test("cst052")).ok = ((new com.ibm.icu.math.BigDecimal("1E90")).toString()).equals("1E+90");\r
755         (new Test("cst053")).ok = ((new com.ibm.icu.math.BigDecimal("1E009")).toString()).equals("1E+9");\r
756         (new Test("cst054")).ok = ((new com.ibm.icu.math.BigDecimal("0E9")).toString()).equals("0");\r
757         (new Test("cst055")).ok = ((new com.ibm.icu.math.BigDecimal("0.000e+0")).toString()).equals("0");\r
758         (new Test("cst056")).ok = ((new com.ibm.icu.math.BigDecimal("0.000E-1")).toString()).equals("0");\r
759         (new Test("cst057")).ok = ((new com.ibm.icu.math.BigDecimal("4E+9")).toString()).equals("4E+9");\r
760         (new Test("cst058")).ok = ((new com.ibm.icu.math.BigDecimal("44E+9")).toString()).equals("4.4E+10");\r
761         (new Test("cst059")).ok = ((new com.ibm.icu.math.BigDecimal("0.73e-7")).toString()).equals("7.3E-8");\r
762         (new Test("cst060")).ok = ((new com.ibm.icu.math.BigDecimal("00E+9")).toString()).equals("0");\r
763         (new Test("cst061")).ok = ((new com.ibm.icu.math.BigDecimal("00E-9")).toString()).equals("0");\r
764         (new Test("cst062")).ok = ((new com.ibm.icu.math.BigDecimal("10E+9")).toString()).equals("1.0E+10");\r
765         (new Test("cst063")).ok = ((new com.ibm.icu.math.BigDecimal("10E+09")).toString()).equals("1.0E+10");\r
766         (new Test("cst064")).ok = ((new com.ibm.icu.math.BigDecimal("10e+90")).toString()).equals("1.0E+91");\r
767         (new Test("cst065")).ok = ((new com.ibm.icu.math.BigDecimal("10E+009")).toString()).equals("1.0E+10");\r
768         (new Test("cst066")).ok = ((new com.ibm.icu.math.BigDecimal("100e+9")).toString()).equals("1.00E+11");\r
769         (new Test("cst067")).ok = ((new com.ibm.icu.math.BigDecimal("100e+09")).toString()).equals("1.00E+11");\r
770         (new Test("cst068")).ok = ((new com.ibm.icu.math.BigDecimal("100E+90")).toString()).equals("1.00E+92");\r
771         (new Test("cst069")).ok = ((new com.ibm.icu.math.BigDecimal("100e+009")).toString()).equals("1.00E+11");\r
772 \r
773         (new Test("cst070")).ok = ((new com.ibm.icu.math.BigDecimal("1.265")).toString()).equals("1.265");\r
774         (new Test("cst071")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E-20")).toString()).equals("1.265E-20");\r
775         (new Test("cst072")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E-8")).toString()).equals("1.265E-8");\r
776         (new Test("cst073")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E-4")).toString()).equals("1.265E-4");\r
777         (new Test("cst074")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E-3")).toString()).equals("1.265E-3");\r
778         (new Test("cst075")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E-2")).toString()).equals("1.265E-2");\r
779         (new Test("cst076")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E-1")).toString()).equals("1.265E-1");\r
780         (new Test("cst077")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E-0")).toString()).equals("1.265");\r
781         (new Test("cst078")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E+1")).toString()).equals("1.265E+1");\r
782         (new Test("cst079")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E+2")).toString()).equals("1.265E+2");\r
783         (new Test("cst080")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E+3")).toString()).equals("1.265E+3");\r
784         (new Test("cst081")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E+4")).toString()).equals("1.265E+4");\r
785         (new Test("cst082")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E+8")).toString()).equals("1.265E+8");\r
786         (new Test("cst083")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E+20")).toString()).equals("1.265E+20");\r
787 \r
788         (new Test("cst090")).ok = ((new com.ibm.icu.math.BigDecimal("12.65")).toString()).equals("12.65");\r
789         (new Test("cst091")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E-20")).toString()).equals("1.265E-19");\r
790         (new Test("cst092")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E-8")).toString()).equals("1.265E-7");\r
791         (new Test("cst093")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E-4")).toString()).equals("1.265E-3");\r
792         (new Test("cst094")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E-3")).toString()).equals("1.265E-2");\r
793         (new Test("cst095")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E-2")).toString()).equals("1.265E-1");\r
794         (new Test("cst096")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E-1")).toString()).equals("1.265");\r
795         (new Test("cst097")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E-0")).toString()).equals("1.265E+1");\r
796         (new Test("cst098")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E+1")).toString()).equals("1.265E+2");\r
797         (new Test("cst099")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E+2")).toString()).equals("1.265E+3");\r
798         (new Test("cst100")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E+3")).toString()).equals("1.265E+4");\r
799         (new Test("cst101")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E+4")).toString()).equals("1.265E+5");\r
800         (new Test("cst102")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E+8")).toString()).equals("1.265E+9");\r
801         (new Test("cst103")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E+20")).toString()).equals("1.265E+21");\r
802 \r
803         (new Test("cst110")).ok = ((new com.ibm.icu.math.BigDecimal("126.5")).toString()).equals("126.5");\r
804         (new Test("cst111")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E-20")).toString()).equals("1.265E-18");\r
805         (new Test("cst112")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E-8")).toString()).equals("1.265E-6");\r
806         (new Test("cst113")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E-4")).toString()).equals("1.265E-2");\r
807         (new Test("cst114")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E-3")).toString()).equals("1.265E-1");\r
808         (new Test("cst115")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E-2")).toString()).equals("1.265");\r
809         (new Test("cst116")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E-1")).toString()).equals("1.265E+1");\r
810         (new Test("cst117")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E-0")).toString()).equals("1.265E+2");\r
811         (new Test("cst118")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E+1")).toString()).equals("1.265E+3");\r
812         (new Test("cst119")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E+2")).toString()).equals("1.265E+4");\r
813         (new Test("cst120")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E+3")).toString()).equals("1.265E+5");\r
814         (new Test("cst121")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E+4")).toString()).equals("1.265E+6");\r
815         (new Test("cst122")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E+8")).toString()).equals("1.265E+10");\r
816         (new Test("cst123")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E+20")).toString()).equals("1.265E+22");\r
817 \r
818         (new Test("cst130")).ok = ((new com.ibm.icu.math.BigDecimal("1265")).toString()).equals("1265");\r
819         (new Test("cst131")).ok = ((new com.ibm.icu.math.BigDecimal("1265E-20")).toString()).equals("1.265E-17");\r
820         (new Test("cst132")).ok = ((new com.ibm.icu.math.BigDecimal("1265E-8")).toString()).equals("1.265E-5");\r
821         (new Test("cst133")).ok = ((new com.ibm.icu.math.BigDecimal("1265E-4")).toString()).equals("1.265E-1");\r
822         (new Test("cst134")).ok = ((new com.ibm.icu.math.BigDecimal("1265E-3")).toString()).equals("1.265");\r
823         (new Test("cst135")).ok = ((new com.ibm.icu.math.BigDecimal("1265E-2")).toString()).equals("1.265E+1");\r
824         (new Test("cst136")).ok = ((new com.ibm.icu.math.BigDecimal("1265E-1")).toString()).equals("1.265E+2");\r
825         (new Test("cst137")).ok = ((new com.ibm.icu.math.BigDecimal("1265E-0")).toString()).equals("1.265E+3");\r
826         (new Test("cst138")).ok = ((new com.ibm.icu.math.BigDecimal("1265E+1")).toString()).equals("1.265E+4");\r
827         (new Test("cst139")).ok = ((new com.ibm.icu.math.BigDecimal("1265E+2")).toString()).equals("1.265E+5");\r
828         (new Test("cst140")).ok = ((new com.ibm.icu.math.BigDecimal("1265E+3")).toString()).equals("1.265E+6");\r
829         (new Test("cst141")).ok = ((new com.ibm.icu.math.BigDecimal("1265E+4")).toString()).equals("1.265E+7");\r
830         (new Test("cst142")).ok = ((new com.ibm.icu.math.BigDecimal("1265E+8")).toString()).equals("1.265E+11");\r
831         (new Test("cst143")).ok = ((new com.ibm.icu.math.BigDecimal("1265E+20")).toString()).equals("1.265E+23");\r
832 \r
833         (new Test("cst150")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265")).toString()).equals("0.1265");\r
834         (new Test("cst151")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E-20")).toString()).equals("1.265E-21");\r
835         (new Test("cst152")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E-8")).toString()).equals("1.265E-9");\r
836         (new Test("cst153")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E-4")).toString()).equals("1.265E-5");\r
837         (new Test("cst154")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E-3")).toString()).equals("1.265E-4");\r
838         (new Test("cst155")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E-2")).toString()).equals("1.265E-3");\r
839         (new Test("cst156")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E-1")).toString()).equals("1.265E-2");\r
840         (new Test("cst157")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E-0")).toString()).equals("1.265E-1");\r
841         (new Test("cst158")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E+1")).toString()).equals("1.265");\r
842         (new Test("cst159")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E+2")).toString()).equals("1.265E+1");\r
843         (new Test("cst160")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E+3")).toString()).equals("1.265E+2");\r
844         (new Test("cst161")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E+4")).toString()).equals("1.265E+3");\r
845         (new Test("cst162")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E+8")).toString()).equals("1.265E+7");\r
846         (new Test("cst163")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E+20")).toString()).equals("1.265E+19");\r
847 \r
848         (new Test("cst170")).ok = ((new com.ibm.icu.math.BigDecimal("0.09e999999999")).toString()).equals("9E+999999997");\r
849         (new Test("cst171")).ok = ((new com.ibm.icu.math.BigDecimal("0.9e999999999")).toString()).equals("9E+999999998");\r
850         (new Test("cst172")).ok = ((new com.ibm.icu.math.BigDecimal("9e999999999")).toString()).equals("9E+999999999");\r
851         (new Test("cst173")).ok = ((new com.ibm.icu.math.BigDecimal("9.9e999999999")).toString()).equals("9.9E+999999999");\r
852         (new Test("cst174")).ok = ((new com.ibm.icu.math.BigDecimal("9.99e999999999")).toString()).equals("9.99E+999999999");\r
853         (new Test("cst175")).ok = ((new com.ibm.icu.math.BigDecimal("9.99e-999999999")).toString()).equals("9.99E-999999999");\r
854         (new Test("cst176")).ok = ((new com.ibm.icu.math.BigDecimal("9.9e-999999999")).toString()).equals("9.9E-999999999");\r
855         (new Test("cst177")).ok = ((new com.ibm.icu.math.BigDecimal("9e-999999999")).toString()).equals("9E-999999999");\r
856         (new Test("cst179")).ok = ((new com.ibm.icu.math.BigDecimal("99e-999999999")).toString()).equals("9.9E-999999998");\r
857         (new Test("cst180")).ok = ((new com.ibm.icu.math.BigDecimal("999e-999999999")).toString()).equals("9.99E-999999997");\r
858 \r
859         // baddies --\r
860         badstrings = new java.lang.String[] { "1..2", ".", "..", "++1", "--1",\r
861                 "-+1", "+-1", "12e", "12e++", "12f4", " +1", "+ 1", "12 ",\r
862                 " + 1", " - 1 ", "x", "-1-", "12-", "3+", "", "1e-",\r
863                 "7e1000000000", "", "e100", "\u0e5a", "\u0b65", "99e999999999",\r
864                 "999e999999999", "0.9e-999999999", "0.09e-999999999",\r
865                 "0.1e1000000000", "10e-1000000000", "0.9e9999999999",\r
866                 "99e-9999999999", "111e9999999999",\r
867                 "1111e-9999999999" + " " + "111e*123", "111e123-", "111e+12+",\r
868                 "111e1-3-", "111e1*23", "111e1e+3", "1e1.0", "1e123e", "ten",\r
869                 "ONE", "1e.1", "1e1.", "1ee", "e+1" }; // 200-203\r
870         // 204-207\r
871         // 208-211\r
872         // 211-214\r
873         // 215-219\r
874         // 220-222\r
875         // 223-224\r
876         // 225-226\r
877         // 227-228\r
878         // 229-230\r
879         // 231-232\r
880         // 233-234\r
881         // 235-237\r
882         // 238-240\r
883         // 241-244\r
884         // 245-248\r
885 \r
886         // watch out for commas on continuation lines\r
887 \r
888         {\r
889             int $16 = badstrings.length;\r
890             i = 0;\r
891             for (; $16 > 0; $16--, i++) {\r
892                 try {\r
893                     new com.ibm.icu.math.BigDecimal(badstrings[i]);\r
894                     say(">>> cst"+(200+i)+":"+" "+badstrings[i]+" "+(new com.ibm.icu.math.BigDecimal(badstrings[i])).toString());\r
895                     flag = false;\r
896                 } catch (java.lang.NumberFormatException $17) {\r
897                     flag = true;\r
898                 }\r
899                 (new Test("cst" + (200 + i))).ok = flag;\r
900             }\r
901         }/* i */\r
902 \r
903         try {\r
904             new com.ibm.icu.math.BigDecimal((java.lang.String) null);\r
905             flag = false;\r
906         } catch (java.lang.NullPointerException $18) {\r
907             flag = true;\r
908         }/* checknull */\r
909         (new Test("cst301")).ok = flag;\r
910 \r
911         summary("Constructors");\r
912         return;\r
913     }\r
914 \r
915     /** Mutation tests (checks that contents of constant objects are unchanged). */\r
916 \r
917     public void diagmutation() {\r
918         /* ---------------------------------------------------------------- */\r
919         /* Final tests -- check constants haven't mutated */\r
920         /* -- also that MC objects haven't mutated */\r
921         /* ---------------------------------------------------------------- */\r
922         (new Test("cuc001")).ok = (com.ibm.icu.math.BigDecimal.ZERO.toString()).equals("0");\r
923         (new Test("cuc002")).ok = (com.ibm.icu.math.BigDecimal.ONE.toString()).equals("1");\r
924         (new Test("cuc003")).ok = (com.ibm.icu.math.BigDecimal.TEN.toString()).equals("10");\r
925 \r
926         (new Test("cuc010")).ok = com.ibm.icu.math.BigDecimal.ROUND_CEILING == com.ibm.icu.math.MathContext.ROUND_CEILING;\r
927         (new Test("cuc011")).ok = com.ibm.icu.math.BigDecimal.ROUND_DOWN == com.ibm.icu.math.MathContext.ROUND_DOWN;\r
928         (new Test("cuc012")).ok = com.ibm.icu.math.BigDecimal.ROUND_FLOOR == com.ibm.icu.math.MathContext.ROUND_FLOOR;\r
929         (new Test("cuc013")).ok = com.ibm.icu.math.BigDecimal.ROUND_HALF_DOWN == com.ibm.icu.math.MathContext.ROUND_HALF_DOWN;\r
930         (new Test("cuc014")).ok = com.ibm.icu.math.BigDecimal.ROUND_HALF_EVEN == com.ibm.icu.math.MathContext.ROUND_HALF_EVEN;\r
931         (new Test("cuc015")).ok = com.ibm.icu.math.BigDecimal.ROUND_HALF_UP == com.ibm.icu.math.MathContext.ROUND_HALF_UP;\r
932         (new Test("cuc016")).ok = com.ibm.icu.math.BigDecimal.ROUND_UNNECESSARY == com.ibm.icu.math.MathContext.ROUND_UNNECESSARY;\r
933         (new Test("cuc017")).ok = com.ibm.icu.math.BigDecimal.ROUND_UP == com.ibm.icu.math.MathContext.ROUND_UP;\r
934 \r
935         (new Test("cuc020")).ok = (com.ibm.icu.math.MathContext.DEFAULT.getDigits()) == 9;\r
936         (new Test("cuc021")).ok = (com.ibm.icu.math.MathContext.DEFAULT.getForm()) == com.ibm.icu.math.MathContext.SCIENTIFIC;\r
937         (new Test("cuc022")).ok = (com.ibm.icu.math.MathContext.DEFAULT.getLostDigits() ? 1 : 0) == 0;\r
938         (new Test("cuc023")).ok = (com.ibm.icu.math.MathContext.DEFAULT.getRoundingMode()) == com.ibm.icu.math.MathContext.ROUND_HALF_UP;\r
939 \r
940         // mc9 =MathContext(9)\r
941         // mcld =MathContext(9, SCIENTIFIC, 1)\r
942         // mcfd =MathContext(0, PLAIN)\r
943         (new Test("cuc030")).ok = (mc9.getDigits()) == 9;\r
944         (new Test("cuc031")).ok = (mc9.getForm()) == com.ibm.icu.math.MathContext.SCIENTIFIC;\r
945         (new Test("cuc032")).ok = (mc9.getLostDigits() ? 1 : 0) == 0;\r
946         (new Test("cuc033")).ok = (mc9.getRoundingMode()) == com.ibm.icu.math.MathContext.ROUND_HALF_UP;\r
947         (new Test("cuc034")).ok = (mcld.getDigits()) == 9;\r
948         (new Test("cuc035")).ok = (mcld.getForm()) == com.ibm.icu.math.MathContext.SCIENTIFIC;\r
949         (new Test("cuc036")).ok = (mcld.getLostDigits() ? 1 : 0) == 1;\r
950         (new Test("cuc037")).ok = (mcld.getRoundingMode()) == com.ibm.icu.math.MathContext.ROUND_HALF_UP;\r
951         (new Test("cuc038")).ok = (mcfd.getDigits()) == 0;\r
952         (new Test("cuc039")).ok = (mcfd.getForm()) == com.ibm.icu.math.MathContext.PLAIN;\r
953         (new Test("cuc040")).ok = (mcfd.getLostDigits() ? 1 : 0) == 0;\r
954         (new Test("cuc041")).ok = (mcfd.getRoundingMode()) == com.ibm.icu.math.MathContext.ROUND_HALF_UP;\r
955 \r
956         summary("No mutation");\r
957     }\r
958 \r
959 \r
960     /* ----------------------------------------------------------------- */\r
961     /* Operator test methods */\r
962     /* ----------------------------------------------------------------- */\r
963     // The use of context in these tests are primarily to show that they\r
964     // are correctly passed to the methods, except that we check that\r
965     // each method checks for lostDigits.\r
966 \r
967     /** Test the {@link com.ibm.icu.math.BigDecimal#abs} method. */\r
968 \r
969     public void diagabs() {\r
970         boolean flag = false;\r
971         java.lang.ArithmeticException ae = null;\r
972 \r
973         // most of the function of this is tested by add\r
974         (new Test("abs001")).ok = ((new com.ibm.icu.math.BigDecimal("2")).abs().toString()).equals("2");\r
975         (new Test("abs002")).ok = ((new com.ibm.icu.math.BigDecimal("-2")).abs().toString()).equals("2");\r
976         (new Test("abs003")).ok = ((new com.ibm.icu.math.BigDecimal("+0.000")).abs().toString()).equals("0.000");\r
977         (new Test("abs004")).ok = ((new com.ibm.icu.math.BigDecimal("00.000")).abs().toString()).equals("0.000");\r
978         (new Test("abs005")).ok = ((new com.ibm.icu.math.BigDecimal("-0.000")).abs().toString()).equals("0.000");\r
979         (new Test("abs006")).ok = ((new com.ibm.icu.math.BigDecimal("+0.000")).abs(mcdef).toString()).equals("0");\r
980         (new Test("abs007")).ok = ((new com.ibm.icu.math.BigDecimal("00.000")).abs(mcdef).toString()).equals("0");\r
981         (new Test("abs008")).ok = ((new com.ibm.icu.math.BigDecimal("-0.000")).abs(mcdef).toString()).equals("0");\r
982         (new Test("abs009")).ok = ((new com.ibm.icu.math.BigDecimal("-2000000")).abs().toString()).equals("2000000");\r
983         (new Test("abs010")).ok = ((new com.ibm.icu.math.BigDecimal("-2000000")).abs(mcdef).toString()).equals("2000000");\r
984         (new Test("abs011")).ok = ((new com.ibm.icu.math.BigDecimal("-2000000")).abs(mc6).toString()).equals("2.00000E+6");\r
985         (new Test("abs012")).ok = ((new com.ibm.icu.math.BigDecimal("2000000")).abs(mc6).toString()).equals("2.00000E+6");\r
986         (new Test("abs013")).ok = ((new com.ibm.icu.math.BigDecimal("0.2")).abs().toString()).equals("0.2");\r
987         (new Test("abs014")).ok = ((new com.ibm.icu.math.BigDecimal("-0.2")).abs().toString()).equals("0.2");\r
988         (new Test("abs015")).ok = ((new com.ibm.icu.math.BigDecimal("0.01")).abs().toString()).equals("0.01");\r
989         (new Test("abs016")).ok = ((new com.ibm.icu.math.BigDecimal("-0.01")).abs().toString()).equals("0.01");\r
990         try {\r
991             tenlong.abs(mcld);\r
992             flag = false;\r
993         } catch (java.lang.ArithmeticException $19) {\r
994             ae = $19;\r
995             flag = (ae.getMessage()).equals("Too many digits:" + " "\r
996                     + tenlong.toString());\r
997         }/* checkdigits */\r
998         (new Test("abs020")).ok = flag;\r
999         // check lostdigits not raised if digits=0 [monadic method]\r
1000         try {\r
1001             tenlong.abs(mcld0);\r
1002             flag = true;\r
1003         } catch (java.lang.ArithmeticException $20) {\r
1004             ae = $20;\r
1005             flag = false;\r
1006         }/* checkdigits */\r
1007         (new Test("abs021")).ok = flag;\r
1008         try {\r
1009             com.ibm.icu.math.BigDecimal.TEN\r
1010                     .abs((com.ibm.icu.math.MathContext) null);\r
1011             flag = false;\r
1012         } catch (java.lang.NullPointerException $21) {\r
1013             flag = true;\r
1014         }/* checknull */\r
1015         (new Test("abs022")).ok = flag;\r
1016 \r
1017         summary("abs");\r
1018     }\r
1019 \r
1020     /* ----------------------------------------------------------------- */\r
1021 \r
1022     /** Test the {@link com.ibm.icu.math.BigDecimal#add} method. */\r
1023 \r
1024     public void diagadd() {\r
1025         boolean flag = false;\r
1026         com.ibm.icu.math.BigDecimal alhs;\r
1027         com.ibm.icu.math.BigDecimal arhs;\r
1028         java.lang.ArithmeticException ae = null;\r
1029 \r
1030         // [first group are 'quick confidence check']\r
1031         (new Test("add001")).ok=((new com.ibm.icu.math.BigDecimal(2)).add(new com.ibm.icu.math.BigDecimal(3),mcdef).toString()).equals("5");\r
1032         (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
1033         (new Test("add004")).ok=((new com.ibm.icu.math.BigDecimal("5")).add(new com.ibm.icu.math.BigDecimal("-3"),mcdef).toString()).equals("2");\r
1034         (new Test("add005")).ok=((new com.ibm.icu.math.BigDecimal("-5")).add(new com.ibm.icu.math.BigDecimal("-3"),mcdef).toString()).equals("-8");\r
1035         (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
1036         (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
1037         (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
1038         (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
1039         \r
1040         (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
1041         \r
1042         \r
1043         (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
1044         \r
1045         (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
1046         \r
1047         (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
1048         \r
1049         (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
1050         \r
1051         (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
1052         \r
1053         \r
1054         (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
1055         \r
1056         (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
1057         \r
1058         (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
1059         \r
1060         (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
1061         \r
1062         (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
1063         \r
1064         \r
1065         // [Now the same group with fixed arithmetic]\r
1066         (new Test("add030")).ok=((new com.ibm.icu.math.BigDecimal(2)).add(new com.ibm.icu.math.BigDecimal(3)).toString()).equals("5");\r
1067         (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
1068         (new Test("add032")).ok=((new com.ibm.icu.math.BigDecimal("5")).add(new com.ibm.icu.math.BigDecimal("-3")).toString()).equals("2");\r
1069         (new Test("add033")).ok=((new com.ibm.icu.math.BigDecimal("-5")).add(new com.ibm.icu.math.BigDecimal("-3")).toString()).equals("-8");\r
1070         (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
1071         (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
1072         (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
1073         (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
1074         \r
1075         (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
1076         \r
1077         \r
1078         (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
1079         \r
1080         (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
1081         \r
1082         (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
1083         \r
1084         (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
1085         \r
1086         (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
1087         \r
1088         \r
1089         (new Test("add044")).ok=((new com.ibm.icu.math.BigDecimal("70")).add(new com.ibm.icu.math.BigDecimal("10000e+9")).toString()).equals("10000000000070");\r
1090         \r
1091         (new Test("add045")).ok=((new com.ibm.icu.math.BigDecimal("700")).add(new com.ibm.icu.math.BigDecimal("10000e+9")).toString()).equals("10000000000700");\r
1092         \r
1093         (new Test("add046")).ok=((new com.ibm.icu.math.BigDecimal("7000")).add(new com.ibm.icu.math.BigDecimal("10000e+9")).toString()).equals("10000000007000");\r
1094         \r
1095         (new Test("add047")).ok=((new com.ibm.icu.math.BigDecimal("70000")).add(new com.ibm.icu.math.BigDecimal("10000e+9")).toString()).equals("10000000070000");\r
1096         \r
1097         (new Test("add048")).ok=((new com.ibm.icu.math.BigDecimal("700000")).add(new com.ibm.icu.math.BigDecimal("10000e+9")).toString()).equals("10000000700000");\r
1098         \r
1099 \r
1100         // symmetry:\r
1101         (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
1102         \r
1103         (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
1104         \r
1105         (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
1106         \r
1107         (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
1108         \r
1109         (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
1110         \r
1111         \r
1112         (new Test("add054")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("70")).toString()).equals("10000000000070");\r
1113         \r
1114         (new Test("add055")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("700")).toString()).equals("10000000000700");\r
1115         \r
1116         (new Test("add056")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("7000")).toString()).equals("10000000007000");\r
1117         \r
1118         (new Test("add057")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("70000")).toString()).equals("10000000070000");\r
1119         \r
1120         (new Test("add058")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("700000")).toString()).equals("10000000700000");\r
1121 \r
1122         // some rounding effects\r
1123         (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
1124         \r
1125         (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
1126         \r
1127         (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
1128         \r
1129         (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
1130 \r
1131 \r
1132         // MC\r
1133         (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
1134         \r
1135         (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
1136         \r
1137         (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
1138 \r
1139 \r
1140         // zero preservation\r
1141         (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
1142         \r
1143         (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
1144         \r
1145         (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
1146         \r
1147         (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
1148         \r
1149         (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
1150 \r
1151 \r
1152         // more fixed, LHS swaps\r
1153         (new Test("add090")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-10")).add(zero).toString()).equals("-0.0000056267");\r
1154         (new Test("add091")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-6")).add(zero).toString()).equals("-0.056267");\r
1155         (new Test("add092")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-5")).add(zero).toString()).equals("-0.56267");\r
1156         (new Test("add093")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-4")).add(zero).toString()).equals("-5.6267");\r
1157         (new Test("add094")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-3")).add(zero).toString()).equals("-56.267");\r
1158         (new Test("add095")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-2")).add(zero).toString()).equals("-562.67");\r
1159         (new Test("add096")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-1")).add(zero).toString()).equals("-5626.7");\r
1160         (new Test("add097")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-0")).add(zero).toString()).equals("-56267");\r
1161         (new Test("add098")).ok=((new com.ibm.icu.math.BigDecimal("-5E-10")).add(zero).toString()).equals("-0.0000000005");\r
1162         (new Test("add099")).ok=((new com.ibm.icu.math.BigDecimal("-5E-5")).add(zero).toString()).equals("-0.00005");\r
1163         (new Test("add100")).ok=((new com.ibm.icu.math.BigDecimal("-5E-1")).add(zero).toString()).equals("-0.5");\r
1164         (new Test("add101")).ok=((new com.ibm.icu.math.BigDecimal("-5E-10")).add(zero).toString()).equals("-0.0000000005");\r
1165         (new Test("add102")).ok=((new com.ibm.icu.math.BigDecimal("-5E-5")).add(zero).toString()).equals("-0.00005");\r
1166         (new Test("add103")).ok=((new com.ibm.icu.math.BigDecimal("-5E-1")).add(zero).toString()).equals("-0.5");\r
1167         (new Test("add104")).ok=((new com.ibm.icu.math.BigDecimal("-5E10")).add(zero).toString()).equals("-50000000000");\r
1168         (new Test("add105")).ok=((new com.ibm.icu.math.BigDecimal("-5E5")).add(zero).toString()).equals("-500000");\r
1169         (new Test("add106")).ok=((new com.ibm.icu.math.BigDecimal("-5E1")).add(zero).toString()).equals("-50");\r
1170         (new Test("add107")).ok=((new com.ibm.icu.math.BigDecimal("-5E0")).add(zero).toString()).equals("-5");\r
1171 \r
1172         // more fixed, RHS swaps\r
1173         (new Test("add108")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-56267E-10")).toString()).equals("-0.0000056267");\r
1174         (new Test("add109")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-56267E-6")).toString()).equals("-0.056267");\r
1175         (new Test("add110")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-56267E-5")).toString()).equals("-0.56267");\r
1176         (new Test("add111")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-56267E-4")).toString()).equals("-5.6267");\r
1177         (new Test("add112")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-56267E-3")).toString()).equals("-56.267");\r
1178         (new Test("add113")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-56267E-2")).toString()).equals("-562.67");\r
1179         (new Test("add114")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-56267E-1")).toString()).equals("-5626.7");\r
1180         (new Test("add115")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-56267E-0")).toString()).equals("-56267");\r
1181         (new Test("add116")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-5E-10")).toString()).equals("-0.0000000005");\r
1182         (new Test("add117")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-5E-5")).toString()).equals("-0.00005");\r
1183         (new Test("add118")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-5E-1")).toString()).equals("-0.5");\r
1184         (new Test("add129")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-5E-10")).toString()).equals("-0.0000000005");\r
1185         (new Test("add130")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-5E-5")).toString()).equals("-0.00005");\r
1186         (new Test("add131")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-5E-1")).toString()).equals("-0.5");\r
1187         (new Test("add132")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-5E10")).toString()).equals("-50000000000");\r
1188         (new Test("add133")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-5E5")).toString()).equals("-500000");\r
1189         (new Test("add134")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-5E1")).toString()).equals("-50");\r
1190         (new Test("add135")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-5E0")).toString()).equals("-5");\r
1191 \r
1192         // [some of the next group are really constructor tests]\r
1193         (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
1194         (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
1195         (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
1196         (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
1197         (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
1198         (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
1199         (new Test("add146")).ok=((new com.ibm.icu.math.BigDecimal("3")).add(new com.ibm.icu.math.BigDecimal("3"),mcdef).toString()).equals("6");\r
1200         (new Test("add147")).ok=((new com.ibm.icu.math.BigDecimal("3")).add(new com.ibm.icu.math.BigDecimal("+3"),mcdef).toString()).equals("6");\r
1201         (new Test("add148")).ok=((new com.ibm.icu.math.BigDecimal("3")).add(new com.ibm.icu.math.BigDecimal("-3"),mcdef).toString()).equals("0");\r
1202         (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
1203         \r
1204         (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
1205         (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
1206         (new Test("add152")).ok=((new com.ibm.icu.math.BigDecimal("3")).add(new com.ibm.icu.math.BigDecimal(".3")).toString()).equals("3.3");\r
1207         (new Test("add153")).ok=((new com.ibm.icu.math.BigDecimal("3.")).add(new com.ibm.icu.math.BigDecimal(".3")).toString()).equals("3.3");\r
1208         (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
1209         (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
1210         (new Test("add156")).ok=((new com.ibm.icu.math.BigDecimal("3")).add(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("6");\r
1211         (new Test("add157")).ok=((new com.ibm.icu.math.BigDecimal("3")).add(new com.ibm.icu.math.BigDecimal("+3")).toString()).equals("6");\r
1212         (new Test("add158")).ok=((new com.ibm.icu.math.BigDecimal("3")).add(new com.ibm.icu.math.BigDecimal("-3")).toString()).equals("0");\r
1213         (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
1214         (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
1215         (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
1216         \r
1217         (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
1218         \r
1219         (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
1220         \r
1221 \r
1222         // input preparation tests\r
1223         alhs=new com.ibm.icu.math.BigDecimal("12345678900000");\r
1224         arhs=new com.ibm.icu.math.BigDecimal("9999999999999");\r
1225         (new Test("add170")).ok=(alhs.add(arhs,mc3).toString()).equals("2.23E+13");\r
1226         (new Test("add171")).ok=(arhs.add(alhs,mc3).toString()).equals("2.23E+13");\r
1227         (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
1228         // next was 1.54E+4 under old [truncate to digits+1] rules\r
1229         (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
1230         (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
1231         (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
1232         \r
1233         (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
1234         // next was 1.54E+4 under old [truncate to digits+1] rules\r
1235         (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
1236         (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
1237         (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
1238 \r
1239         try {\r
1240             ten.add((com.ibm.icu.math.BigDecimal) null);\r
1241             flag = false;\r
1242         } catch (java.lang.NullPointerException $22) {\r
1243             flag = true;\r
1244         }/* checknull */\r
1245         (new Test("add200")).ok = flag;\r
1246         try {\r
1247             ten.add(ten, (com.ibm.icu.math.MathContext) null);\r
1248             flag = false;\r
1249         } catch (java.lang.NullPointerException $23) {\r
1250             flag = true;\r
1251         }/* checknull2 */\r
1252         (new Test("add201")).ok = flag;\r
1253 \r
1254         try {\r
1255             tenlong.add(com.ibm.icu.math.BigDecimal.ZERO, mcld);\r
1256             flag = false;\r
1257         } catch (java.lang.ArithmeticException $24) {\r
1258             ae = $24;\r
1259             flag = (ae.getMessage()).equals("Too many digits:" + " "\r
1260                     + tenlong.toString());\r
1261         }/* checkdigits */\r
1262         (new Test("add202")).ok = flag;\r
1263         try {\r
1264             com.ibm.icu.math.BigDecimal.ZERO.add(tenlong, mcld);\r
1265             flag = false;\r
1266         } catch (java.lang.ArithmeticException $25) {\r
1267             ae = $25;\r
1268             flag = (ae.getMessage()).equals("Too many digits:" + " "\r
1269                     + tenlong.toString());\r
1270         }/* checkdigits */\r
1271         (new Test("add203")).ok = flag;\r
1272 \r
1273         // check lostdigits not raised if digits=0 [dyadic method]\r
1274         try {\r
1275             tenlong.add(com.ibm.icu.math.BigDecimal.ZERO, mcld0);\r
1276             flag = true;\r
1277         } catch (java.lang.ArithmeticException $26) {\r
1278             ae = $26;\r
1279             flag = false;\r
1280         }/* checkdigits */\r
1281         (new Test("add204")).ok = flag;\r
1282         try {\r
1283             com.ibm.icu.math.BigDecimal.ZERO.add(tenlong, mcld0);\r
1284             flag = true;\r
1285         } catch (java.lang.ArithmeticException $27) {\r
1286             ae = $27;\r
1287             flag = false;\r
1288         }/* checkdigits */\r
1289         (new Test("add205")).ok = flag;\r
1290 \r
1291         summary("add");\r
1292     }\r
1293 \r
1294     /* ----------------------------------------------------------------- */\r
1295     /**\r
1296      * Test the {@link com.ibm.icu.math.BigDecimal#compareTo(BigDecimal)}\r
1297      * method.\r
1298      */\r
1299 \r
1300     public void diagcompareto() {\r
1301         boolean flag = false;\r
1302         java.lang.ArithmeticException ae = null;\r
1303         // we assume add/subtract test function; this just\r
1304         // tests existence, exceptions, and possible results\r
1305 \r
1306         (new Test("cpt001")).ok=((new com.ibm.icu.math.BigDecimal("5")).compareTo(new com.ibm.icu.math.BigDecimal("2")))==1;\r
1307         (new Test("cpt002")).ok=((new com.ibm.icu.math.BigDecimal("5")).compareTo(new com.ibm.icu.math.BigDecimal("5")))==0;\r
1308         (new Test("cpt003")).ok=((new com.ibm.icu.math.BigDecimal("5")).compareTo(new com.ibm.icu.math.BigDecimal("5.00")))==0;\r
1309         (new Test("cpt004")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).compareTo(new com.ibm.icu.math.BigDecimal("0.5")))==0;\r
1310         (new Test("cpt005")).ok=((new com.ibm.icu.math.BigDecimal("2")).compareTo(new com.ibm.icu.math.BigDecimal("5")))==(-1);\r
1311         (new Test("cpt006")).ok=((new com.ibm.icu.math.BigDecimal("2")).compareTo(new com.ibm.icu.math.BigDecimal("5"),mcdef))==(-1);\r
1312         (new Test("cpt007")).ok=((new com.ibm.icu.math.BigDecimal("2")).compareTo(new com.ibm.icu.math.BigDecimal("5"),mc6))==(-1);\r
1313         (new Test("cpt008")).ok=((new com.ibm.icu.math.BigDecimal("2")).compareTo(new com.ibm.icu.math.BigDecimal("5"),mcfd))==(-1);\r
1314         try {\r
1315             ten.compareTo((com.ibm.icu.math.BigDecimal) null);\r
1316             flag = false;\r
1317         } catch (java.lang.NullPointerException $28) {\r
1318             flag = true;\r
1319         }/* checknull */\r
1320         (new Test("cpt100")).ok = flag;\r
1321         try {\r
1322             ten.compareTo(ten, (com.ibm.icu.math.MathContext) null);\r
1323             flag = false;\r
1324         } catch (java.lang.NullPointerException $29) {\r
1325             flag = true;\r
1326         }/* checknull2 */\r
1327         (new Test("cpt101")).ok = flag;\r
1328 \r
1329         try {\r
1330             tenlong.compareTo(com.ibm.icu.math.BigDecimal.ONE, mcld);\r
1331             flag = false;\r
1332         } catch (java.lang.ArithmeticException $30) {\r
1333             ae = $30;\r
1334             flag = (ae.getMessage()).equals("Too many digits:" + " "\r
1335                     + tenlong.toString());\r
1336         }/* checkdigits */\r
1337         (new Test("cpt102")).ok = flag;\r
1338         try {\r
1339             com.ibm.icu.math.BigDecimal.ONE.compareTo(tenlong, mcld);\r
1340             flag = false;\r
1341         } catch (java.lang.ArithmeticException $31) {\r
1342             ae = $31;\r
1343             flag = (ae.getMessage()).equals("Too many digits:" + " "\r
1344                     + tenlong.toString());\r
1345         }/* checkdigits */\r
1346         (new Test("cpt103")).ok = flag;\r
1347 \r
1348         summary("compareTo");\r
1349     }\r
1350 \r
1351     /* ----------------------------------------------------------------- */\r
1352 \r
1353     /** Test the {@link com.ibm.icu.math.BigDecimal#divide} method. */\r
1354 \r
1355     public void diagdivide() {\r
1356         boolean flag = false;\r
1357         com.ibm.icu.math.MathContext rmcd;\r
1358         int rhu;\r
1359         int rd;\r
1360         int ru;\r
1361         java.lang.RuntimeException e = null;\r
1362         java.lang.ArithmeticException ae = null;\r
1363 \r
1364         (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
1365         (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
1366         (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
1367         (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
1368         (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
1369         (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
1370         (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
1371         (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
1372         (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
1373         (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
1374         (new Test("div311")).ok=((new com.ibm.icu.math.BigDecimal("2.")).divide(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("1");\r
1375         (new Test("div312")).ok=((new com.ibm.icu.math.BigDecimal("20")).divide(new com.ibm.icu.math.BigDecimal("20"),mcdef).toString()).equals("1");\r
1376         (new Test("div313")).ok=((new com.ibm.icu.math.BigDecimal("187")).divide(new com.ibm.icu.math.BigDecimal("187"),mcdef).toString()).equals("1");\r
1377         (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
1378         (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
1379         (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
1380         (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
1381         (new Test("div318")).ok=((new com.ibm.icu.math.BigDecimal("999999999")).divide(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("999999999");\r
1382         (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
1383         (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
1384         (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
1385         (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
1386         (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
1387         // MC\r
1388         (new Test("div325")).ok=((new com.ibm.icu.math.BigDecimal("999999999")).divide(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("999999999");\r
1389         (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
1390         (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
1391         (new Test("div328")).ok=((new com.ibm.icu.math.BigDecimal("999999")).divide(new com.ibm.icu.math.BigDecimal("1"),mc6).toString()).equals("999999");\r
1392 \r
1393         // check rounding explicitly [note: digits+1 truncation]\r
1394         rmcd=new com.ibm.icu.math.MathContext(2,com.ibm.icu.math.MathContext.SCIENTIFIC,false,com.ibm.icu.math.MathContext.ROUND_CEILING);\r
1395         (new Test("div330")).ok=((new com.ibm.icu.math.BigDecimal("1.50")).divide(one,rmcd).toString()).equals("1.5");\r
1396         (new Test("div331")).ok=((new com.ibm.icu.math.BigDecimal("1.51")).divide(one,rmcd).toString()).equals("1.6");\r
1397         (new Test("div332")).ok=((new com.ibm.icu.math.BigDecimal("1.55")).divide(one,rmcd).toString()).equals("1.6");\r
1398         rmcd=new com.ibm.icu.math.MathContext(2,com.ibm.icu.math.MathContext.SCIENTIFIC,false,com.ibm.icu.math.MathContext.ROUND_DOWN);\r
1399         (new Test("div333")).ok=((new com.ibm.icu.math.BigDecimal("1.55")).divide(one,rmcd).toString()).equals("1.5");\r
1400         (new Test("div334")).ok=((new com.ibm.icu.math.BigDecimal("1.59")).divide(one,rmcd).toString()).equals("1.5");\r
1401         rmcd=new com.ibm.icu.math.MathContext(2,com.ibm.icu.math.MathContext.SCIENTIFIC,false,com.ibm.icu.math.MathContext.ROUND_FLOOR);\r
1402         (new Test("div335")).ok=((new com.ibm.icu.math.BigDecimal("1.55")).divide(one,rmcd).toString()).equals("1.5");\r
1403         (new Test("div336")).ok=((new com.ibm.icu.math.BigDecimal("1.59")).divide(one,rmcd).toString()).equals("1.5");\r
1404         rmcd=new com.ibm.icu.math.MathContext(2,com.ibm.icu.math.MathContext.SCIENTIFIC,false,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN);\r
1405         (new Test("div337")).ok=((new com.ibm.icu.math.BigDecimal("1.45")).divide(one,rmcd).toString()).equals("1.4");\r
1406         (new Test("div338")).ok=((new com.ibm.icu.math.BigDecimal("1.50")).divide(one,rmcd).toString()).equals("1.5");\r
1407         (new Test("div339")).ok=((new com.ibm.icu.math.BigDecimal("1.55")).divide(one,rmcd).toString()).equals("1.5");\r
1408         rmcd=new com.ibm.icu.math.MathContext(2,com.ibm.icu.math.MathContext.SCIENTIFIC,false,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN);\r
1409         (new Test("div340")).ok=((new com.ibm.icu.math.BigDecimal("1.45")).divide(one,rmcd).toString()).equals("1.4");\r
1410         (new Test("div341")).ok=((new com.ibm.icu.math.BigDecimal("1.50")).divide(one,rmcd).toString()).equals("1.5");\r
1411         (new Test("div342")).ok=((new com.ibm.icu.math.BigDecimal("1.55")).divide(one,rmcd).toString()).equals("1.6");\r
1412         rmcd=new com.ibm.icu.math.MathContext(2,com.ibm.icu.math.MathContext.SCIENTIFIC,false,com.ibm.icu.math.MathContext.ROUND_HALF_UP);\r
1413         (new Test("div343")).ok=((new com.ibm.icu.math.BigDecimal("1.45")).divide(one,rmcd).toString()).equals("1.5");\r
1414         (new Test("div344")).ok=((new com.ibm.icu.math.BigDecimal("1.50")).divide(one,rmcd).toString()).equals("1.5");\r
1415         (new Test("div345")).ok=((new com.ibm.icu.math.BigDecimal("1.55")).divide(one,rmcd).toString()).equals("1.6");\r
1416         rmcd=new com.ibm.icu.math.MathContext(2,com.ibm.icu.math.MathContext.SCIENTIFIC,false,com.ibm.icu.math.MathContext.ROUND_UP);\r
1417         (new Test("div346")).ok=((new com.ibm.icu.math.BigDecimal("1.50")).divide(one,rmcd).toString()).equals("1.5");\r
1418         (new Test("div347")).ok=((new com.ibm.icu.math.BigDecimal("1.51")).divide(one,rmcd).toString()).equals("1.6");\r
1419         (new Test("div348")).ok=((new com.ibm.icu.math.BigDecimal("1.55")).divide(one,rmcd).toString()).equals("1.6");\r
1420 \r
1421         // fixed point...\r
1422         (new Test("div350")).ok=((new com.ibm.icu.math.BigDecimal("1")).divide(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("0");\r
1423         (new Test("div351")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("1");\r
1424         (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
1425         (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
1426         (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
1427         (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
1428         (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
1429         (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
1430         (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
1431         (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
1432         (new Test("div360")).ok=((new com.ibm.icu.math.BigDecimal("2.")).divide(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("1");\r
1433         (new Test("div361")).ok=((new com.ibm.icu.math.BigDecimal("20")).divide(new com.ibm.icu.math.BigDecimal("20")).toString()).equals("1");\r
1434         (new Test("div362")).ok=((new com.ibm.icu.math.BigDecimal("187")).divide(new com.ibm.icu.math.BigDecimal("187")).toString()).equals("1");\r
1435         (new Test("div363")).ok=((new com.ibm.icu.math.BigDecimal("5")).divide(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("3");\r
1436         (new Test("div364")).ok=((new com.ibm.icu.math.BigDecimal("5")).divide(new com.ibm.icu.math.BigDecimal("2.0")).toString()).equals("3");\r
1437         (new Test("div365")).ok=((new com.ibm.icu.math.BigDecimal("5")).divide(new com.ibm.icu.math.BigDecimal("2.000")).toString()).equals("3");\r
1438         (new Test("div366")).ok=((new com.ibm.icu.math.BigDecimal("5")).divide(new com.ibm.icu.math.BigDecimal("0.200")).toString()).equals("25");\r
1439         (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
1440         (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
1441         (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
1442         (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
1443         (new Test("div371")).ok=((new com.ibm.icu.math.BigDecimal("999999999")).divide(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("999999999");\r
1444         (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
1445         (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
1446         (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
1447         (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
1448         (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
1449         (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
1450 \r
1451         // - Fixed point; explicit scales & rounds [old BigDecimal divides]\r
1452         rhu = com.ibm.icu.math.MathContext.ROUND_HALF_UP;\r
1453         rd = com.ibm.icu.math.MathContext.ROUND_DOWN;\r
1454         (new Test("div001")).ok=((new com.ibm.icu.math.BigDecimal("0")).divide(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("0");\r
1455         (new Test("div002")).ok=((new com.ibm.icu.math.BigDecimal("0")).divide(new com.ibm.icu.math.BigDecimal("3"),rhu).toString()).equals("0");\r
1456         (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
1457         (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
1458         (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
1459         (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
1460         (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
1461         (new Test("div008")).ok=((new com.ibm.icu.math.BigDecimal("1")).divide(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("0");\r
1462         (new Test("div009")).ok=((new com.ibm.icu.math.BigDecimal("1")).divide(new com.ibm.icu.math.BigDecimal("3"),rhu).toString()).equals("0");\r
1463         (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
1464         (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
1465         (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
1466         (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
1467         (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
1468         (new Test("div015")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("1");\r
1469         (new Test("div016")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3"),rhu).toString()).equals("1");\r
1470         (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
1471         (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
1472         (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
1473         (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
1474         (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
1475         \r
1476         (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
1477         (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
1478         (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
1479         (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
1480         (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
1481         \r
1482         (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
1483         (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
1484         (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
1485         (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
1486         (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
1487         \r
1488         (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
1489         (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
1490         (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
1491         (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
1492         (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
1493         (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
1494         (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
1495         (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
1496         (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
1497         (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
1498         (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
1499         (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
1500         \r
1501         (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
1502         (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
1503         (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
1504         (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
1505         (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
1506         (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
1507         (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
1508         (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
1509         (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
1510         (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
1511         (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
1512         (new Test("div071")).ok=((new com.ibm.icu.math.BigDecimal("9.")).divide(new com.ibm.icu.math.BigDecimal("9."),rhu).toString()).equals("1");\r
1513         \r
1514         rd=com.ibm.icu.math.MathContext.ROUND_DOWN; // test this is actually being used\r
1515         (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
1516         (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
1517         (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
1518         (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
1519         (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
1520         \r
1521         ru=com.ibm.icu.math.MathContext.ROUND_UNNECESSARY; // check for some 0 residues\r
1522         (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
1523         (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
1524         (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
1525         (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
1526         (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
1527         (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
1528         (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
1529 \r
1530         // check rounding explicitly\r
1531         (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
1532         (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
1533         (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
1534         (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
1535         (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
1536         (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
1537         (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
1538         (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
1539         (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
1540         \r
1541         (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
1542         (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
1543         (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
1544         (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
1545         (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
1546         (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
1547         (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
1548         (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
1549         (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
1550         \r
1551         (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
1552         (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
1553         (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
1554         (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
1555         (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
1556         (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
1557         (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
1558         (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
1559         (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
1560         (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
1561         (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
1562         (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
1563         \r
1564         (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
1565         (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
1566         (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
1567         (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
1568         (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
1569         (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
1570         (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
1571         (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
1572         (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
1573         \r
1574         (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
1575         (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
1576         (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
1577 \r
1578         // - error conditions ---\r
1579         try {\r
1580             ten.divide((com.ibm.icu.math.BigDecimal) null);\r
1581             flag = false;\r
1582         } catch (java.lang.NullPointerException $32) {\r
1583             flag = true;\r
1584         }/* checknull */\r
1585         (new Test("div201")).ok = flag;\r
1586         try {\r
1587             ten.divide(ten, (com.ibm.icu.math.MathContext) null);\r
1588             flag = false;\r
1589         } catch (java.lang.NullPointerException $33) {\r
1590             flag = true;\r
1591         }/* checknull2 */\r
1592         (new Test("div202")).ok = flag;\r
1593 \r
1594         try {\r
1595             (new com.ibm.icu.math.BigDecimal("1")).divide(new com.ibm.icu.math.BigDecimal("3"), -8, 0);\r
1596             flag = false;\r
1597         } catch (java.lang.RuntimeException $34) {\r
1598             e = $34;\r
1599             flag = flag & (e.getMessage()).equals("Negative scale: -8");\r
1600         }/* checkscale */\r
1601         (new Test("div203")).ok = flag;\r
1602 \r
1603         try {\r
1604             (new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("5000"), 0, com.ibm.icu.math.MathContext.ROUND_UNNECESSARY);\r
1605             flag = false;\r
1606         } catch (java.lang.ArithmeticException $35) {\r
1607             ae = $35;\r
1608             flag = (ae.getMessage()).equals("Rounding necessary");\r
1609         }/* rounn */\r
1610         (new Test("div204")).ok = flag;\r
1611         try {\r
1612             (new com.ibm.icu.math.BigDecimal("1001")).divide(new com.ibm.icu.math.BigDecimal("10"), 0, com.ibm.icu.math.MathContext.ROUND_UNNECESSARY);\r
1613             flag = false;\r
1614         } catch (java.lang.ArithmeticException $36) {\r
1615             ae = $36;\r
1616             flag = (ae.getMessage()).equals("Rounding necessary");\r
1617         }/* rounn */\r
1618         (new Test("div205")).ok = flag;\r
1619         try {\r
1620             (new com.ibm.icu.math.BigDecimal("1001")).divide(new com.ibm.icu.math.BigDecimal("100"), 1, com.ibm.icu.math.MathContext.ROUND_UNNECESSARY);\r
1621             flag = false;\r
1622         } catch (java.lang.ArithmeticException $37) {\r
1623             ae = $37;\r
1624             flag = (ae.getMessage()).equals("Rounding necessary");\r
1625         }/* rounn */\r
1626         (new Test("div206")).ok = flag;\r
1627         try {\r
1628             (new com.ibm.icu.math.BigDecimal("10001")).divide(\r
1629                     new com.ibm.icu.math.BigDecimal("10000"), 1,\r
1630                     com.ibm.icu.math.MathContext.ROUND_UNNECESSARY);\r
1631             flag = false;\r
1632         } catch (java.lang.ArithmeticException $38) {\r
1633             ae = $38;\r
1634             flag = (ae.getMessage()).equals("Rounding necessary");\r
1635         }/* rounn */\r
1636         (new Test("div207")).ok = flag;\r
1637         try {\r
1638             (new com.ibm.icu.math.BigDecimal("1.0001")).divide(\r
1639                     new com.ibm.icu.math.BigDecimal("1"), 1,\r
1640                     com.ibm.icu.math.MathContext.ROUND_UNNECESSARY);\r
1641                 flag = false;\r
1642         } catch (java.lang.ArithmeticException $39) {\r
1643             ae = $39;\r
1644             flag = (ae.getMessage()).equals("Rounding necessary");\r
1645         }/* rounn */\r
1646         (new Test("div208")).ok = flag;\r
1647 \r
1648         try {\r
1649             (new com.ibm.icu.math.BigDecimal("5"))\r
1650                     .divide(new com.ibm.icu.math.BigDecimal("0.00"));\r
1651             flag = false;\r
1652         } catch (java.lang.ArithmeticException $40) {\r
1653             ae = $40;\r
1654             flag = (ae.getMessage()).equals("Divide by 0");\r
1655         }/* div0 */\r
1656         (new Test("div209")).ok = flag;\r
1657 \r
1658         try {\r
1659             tenlong.divide(com.ibm.icu.math.BigDecimal.ONE, mcld);\r
1660             flag = false;\r
1661         } catch (java.lang.ArithmeticException $41) {\r
1662             ae = $41;\r
1663             flag = (ae.getMessage()).equals("Too many digits:" + " "\r
1664                     + tenlong.toString());\r
1665         }/* checkdigits */\r
1666         (new Test("div210")).ok = flag;\r
1667         try {\r
1668             com.ibm.icu.math.BigDecimal.ONE.divide(tenlong, mcld);\r
1669             flag = false;\r
1670         } catch (java.lang.ArithmeticException $42) {\r
1671             ae = $42;\r
1672             flag = (ae.getMessage()).equals("Too many digits:" + " "\r
1673                     + tenlong.toString());\r
1674         }/* checkdigits */\r
1675         (new Test("div211")).ok = flag;\r
1676 \r
1677         summary("divide");\r
1678     }\r
1679 \r
1680     /* ----------------------------------------------------------------- */\r
1681 \r
1682     /** Test the {@link com.ibm.icu.math.BigDecimal#divideInteger} method. */\r
1683 \r
1684     public void diagdivideInteger() {\r
1685         boolean flag = false;\r
1686         java.lang.ArithmeticException ae = null;\r
1687 \r
1688         (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
1689         (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
1690         (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
1691         (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
1692         (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
1693         (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
1694         (new Test("dvI007")).ok=((new com.ibm.icu.math.BigDecimal("18")).divideInteger(new com.ibm.icu.math.BigDecimal("18"),mcdef).toString()).equals("1");\r
1695         (new Test("dvI008")).ok=((new com.ibm.icu.math.BigDecimal("1120")).divideInteger(new com.ibm.icu.math.BigDecimal("1000"),mcdef).toString()).equals("1");\r
1696         (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
1697         (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
1698         (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
1699         (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
1700         (new Test("dvI013")).ok=((new com.ibm.icu.math.BigDecimal("5")).divideInteger(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("2");\r
1701         (new Test("dvI014")).ok=((new com.ibm.icu.math.BigDecimal("0")).divideInteger(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("0");\r
1702         (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
1703         // MC\r
1704         (new Test("dvI016")).ok = ((new com.ibm.icu.math.BigDecimal("5")).divideInteger(new com.ibm.icu.math.BigDecimal("2"), mce).toString()).equals("2");\r
1705         (new Test("dvI017")).ok = ((new com.ibm.icu.math.BigDecimal("5")).divideInteger(new com.ibm.icu.math.BigDecimal("2"), mc6).toString()).equals("2");\r
1706 \r
1707         // Fixed --\r
1708         (new Test("dvI021")).ok=((new com.ibm.icu.math.BigDecimal("101.3")).divideInteger(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("101");\r
1709         (new Test("dvI022")).ok=((new com.ibm.icu.math.BigDecimal("101.0")).divideInteger(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("101");\r
1710         (new Test("dvI023")).ok=((new com.ibm.icu.math.BigDecimal("101.3")).divideInteger(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("33");\r
1711         (new Test("dvI024")).ok=((new com.ibm.icu.math.BigDecimal("101.0")).divideInteger(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("33");\r
1712         (new Test("dvI025")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).divideInteger(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("2");\r
1713         (new Test("dvI026")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).divideInteger(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("2");\r
1714         (new Test("dvI027")).ok=((new com.ibm.icu.math.BigDecimal("18")).divideInteger(new com.ibm.icu.math.BigDecimal("18")).toString()).equals("1");\r
1715         (new Test("dvI028")).ok=((new com.ibm.icu.math.BigDecimal("1120")).divideInteger(new com.ibm.icu.math.BigDecimal("1000")).toString()).equals("1");\r
1716         (new Test("dvI029")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).divideInteger(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("1");\r
1717         (new Test("dvI030")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).divideInteger(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("1");\r
1718         (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
1719         (new Test("dvI032")).ok=((new com.ibm.icu.math.BigDecimal("8.005")).divideInteger(new com.ibm.icu.math.BigDecimal("7")).toString()).equals("1");\r
1720         (new Test("dvI033")).ok=((new com.ibm.icu.math.BigDecimal("5")).divideInteger(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("2");\r
1721         (new Test("dvI034")).ok=((new com.ibm.icu.math.BigDecimal("0")).divideInteger(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("0");\r
1722         (new Test("dvI035")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).divideInteger(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("0");\r
1723 \r
1724         try {\r
1725             ten.divideInteger((com.ibm.icu.math.BigDecimal) null);\r
1726             flag = false;\r
1727         } catch (java.lang.NullPointerException $43) {\r
1728             flag = true;\r
1729         }/* checknull */\r
1730         (new Test("dvI101")).ok = flag;\r
1731         try {\r
1732             ten.divideInteger(ten, (com.ibm.icu.math.MathContext) null);\r
1733             flag = false;\r
1734         } catch (java.lang.NullPointerException $44) {\r
1735             flag = true;\r
1736         }/* checknull2 */\r
1737         (new Test("dvI102")).ok = flag;\r
1738 \r
1739         try {\r
1740             com.ibm.icu.math.BigDecimal.ONE.divideInteger(tenlong, mcld);\r
1741             flag = false;\r
1742         } catch (java.lang.ArithmeticException $45) {\r
1743             ae = $45;\r
1744             flag = (ae.getMessage()).equals("Too many digits:" + " "\r
1745                     + tenlong.toString());\r
1746         }/* checkdigits */\r
1747         (new Test("dvI103")).ok = flag;\r
1748 \r
1749         try {\r
1750             tenlong.divideInteger(com.ibm.icu.math.BigDecimal.ONE, mcld);\r
1751             flag = false;\r
1752         } catch (java.lang.ArithmeticException $46) {\r
1753             ae = $46;\r
1754             flag = (ae.getMessage()).equals("Too many digits:" + " "\r
1755                     + tenlong.toString());\r
1756         }/* checkdigits */\r
1757         (new Test("dvI104")).ok = flag;\r
1758 \r
1759         summary("divideInteger");\r
1760     }\r
1761 \r
1762     /* ----------------------------------------------------------------- */\r
1763 \r
1764     /** Test the {@link com.ibm.icu.math.BigDecimal#max} method. */\r
1765 \r
1766     public void diagmax() {\r
1767         boolean flag = false;\r
1768         java.lang.ArithmeticException ae = null;\r
1769 \r
1770         // we assume add/subtract test function; this and min just\r
1771         // test existence and test the truth table\r
1772         (new Test("max001")).ok=((new com.ibm.icu.math.BigDecimal("5")).max(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("5");\r
1773         (new Test("max002")).ok=((new com.ibm.icu.math.BigDecimal("5")).max(new com.ibm.icu.math.BigDecimal("5")).toString()).equals("5");\r
1774         (new Test("max003")).ok=((new com.ibm.icu.math.BigDecimal("2")).max(new com.ibm.icu.math.BigDecimal("7")).toString()).equals("7");\r
1775         (new Test("max004")).ok=((new com.ibm.icu.math.BigDecimal("2")).max(new com.ibm.icu.math.BigDecimal("7"),mcdef).toString()).equals("7");\r
1776         (new Test("max005")).ok=((new com.ibm.icu.math.BigDecimal("2")).max(new com.ibm.icu.math.BigDecimal("7"),mc6).toString()).equals("7");\r
1777         (new Test("max006")).ok=((new com.ibm.icu.math.BigDecimal("2E+3")).max(new com.ibm.icu.math.BigDecimal("7")).toString()).equals("2000");\r
1778         (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
1779         (new Test("max008")).ok=((new com.ibm.icu.math.BigDecimal("7")).max(new com.ibm.icu.math.BigDecimal("2E+3")).toString()).equals("2000");\r
1780         (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
1781         try {\r
1782             ten.max((com.ibm.icu.math.BigDecimal) null);\r
1783             flag = false;\r
1784         } catch (java.lang.NullPointerException $47) {\r
1785             flag = true;\r
1786         }/* checknull */\r
1787         (new Test("max010")).ok = flag;\r
1788         try {\r
1789             ten.max(ten, (com.ibm.icu.math.MathContext) null);\r
1790             flag = false;\r
1791         } catch (java.lang.NullPointerException $48) {\r
1792             flag = true;\r
1793         }/* checknull2 */\r
1794         (new Test("max011")).ok = flag;\r
1795         try {\r
1796             tenlong.max(com.ibm.icu.math.BigDecimal.ONE, mcld);\r
1797             flag = false;\r
1798         } catch (java.lang.ArithmeticException $49) {\r
1799             ae = $49;\r
1800             flag = (ae.getMessage()).equals("Too many digits:" + " "\r
1801                     + tenlong.toString());\r
1802         }/* checkdigits */\r
1803         (new Test("max012")).ok = flag;\r
1804         try {\r
1805             com.ibm.icu.math.BigDecimal.ONE.max(tenlong, mcld);\r
1806             flag = false;\r
1807         } catch (java.lang.ArithmeticException $50) {\r
1808             ae = $50;\r
1809             flag = (ae.getMessage()).equals("Too many digits:" + " "\r
1810                     + tenlong.toString());\r
1811         }/* checkdigits */\r
1812         (new Test("max013")).ok = flag;\r
1813         summary("max");\r
1814     }\r
1815 \r
1816     /** Test the {@link com.ibm.icu.math.BigDecimal#min} method. */\r
1817 \r
1818     public void diagmin() {\r
1819         boolean flag = false;\r
1820         com.ibm.icu.math.BigDecimal minx = null;\r
1821         java.lang.ArithmeticException ae = null;\r
1822         // we assume add/subtract test function; this and max just\r
1823         // test existence and test the truth table\r
1824 \r
1825         (new Test("min001")).ok=((new com.ibm.icu.math.BigDecimal("5")).min(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("2");\r
1826         (new Test("min002")).ok=((new com.ibm.icu.math.BigDecimal("5")).min(new com.ibm.icu.math.BigDecimal("5")).toString()).equals("5");\r
1827         (new Test("min003")).ok=((new com.ibm.icu.math.BigDecimal("2")).min(new com.ibm.icu.math.BigDecimal("7")).toString()).equals("2");\r
1828         (new Test("min004")).ok=((new com.ibm.icu.math.BigDecimal("2")).min(new com.ibm.icu.math.BigDecimal("7"),mcdef).toString()).equals("2");\r
1829         (new Test("min005")).ok=((new com.ibm.icu.math.BigDecimal("1")).min(new com.ibm.icu.math.BigDecimal("7"),mc6).toString()).equals("1");\r
1830         (new Test("min006")).ok=((new com.ibm.icu.math.BigDecimal("-2E+3")).min(new com.ibm.icu.math.BigDecimal("7")).toString()).equals("-2000");\r
1831         (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
1832         (new Test("min008")).ok=((new com.ibm.icu.math.BigDecimal("7")).min(new com.ibm.icu.math.BigDecimal("-2E+3")).toString()).equals("-2000");\r
1833         (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
1834         try {\r
1835             minx = ten;\r
1836             minx.min((com.ibm.icu.math.BigDecimal) null);\r
1837             flag = false;\r
1838         } catch (java.lang.NullPointerException $51) {\r
1839             flag = true;\r
1840         }/* checknull */\r
1841         (new Test("min010")).ok = flag;\r
1842         try {\r
1843             minx = ten;\r
1844             minx.min(ten, (com.ibm.icu.math.MathContext) null);\r
1845             flag = false;\r
1846         } catch (java.lang.NullPointerException $52) {\r
1847             flag = true;\r
1848         }/* checknull2 */\r
1849         (new Test("min011")).ok = flag;\r
1850 \r
1851         try {\r
1852             tenlong.min(com.ibm.icu.math.BigDecimal.ONE, mcld);\r
1853             flag = false;\r
1854         } catch (java.lang.ArithmeticException $53) {\r
1855             ae = $53;\r
1856             flag = (ae.getMessage()).equals("Too many digits:" + " "\r
1857                     + tenlong.toString());\r
1858         }/* checkdigits */\r
1859         (new Test("min012")).ok = flag;\r
1860         try {\r
1861             (new com.ibm.icu.math.BigDecimal(9)).min(tenlong, mcld);\r
1862             flag = false;\r
1863         } catch (java.lang.ArithmeticException $54) {\r
1864             ae = $54;\r
1865             flag = (ae.getMessage()).equals("Too many digits:" + " "\r
1866                     + tenlong.toString());\r
1867         }/* checkdigits */\r
1868         (new Test("min013")).ok = flag;\r
1869         summary("min");\r
1870     }\r
1871 \r
1872     /* ----------------------------------------------------------------- */\r
1873 \r
1874     /** Test the {@link com.ibm.icu.math.BigDecimal#multiply} method. */\r
1875 \r
1876     public void diagmultiply() {\r
1877         boolean flag = false;\r
1878         com.ibm.icu.math.BigDecimal l9;\r
1879         com.ibm.icu.math.BigDecimal l77e;\r
1880         com.ibm.icu.math.BigDecimal l12345;\r
1881         com.ibm.icu.math.BigDecimal edge;\r
1882         com.ibm.icu.math.BigDecimal tenedge;\r
1883         com.ibm.icu.math.BigDecimal hunedge;\r
1884         com.ibm.icu.math.BigDecimal opo;\r
1885         com.ibm.icu.math.BigDecimal d1 = null;\r
1886         com.ibm.icu.math.BigDecimal d2 = null;\r
1887         java.lang.ArithmeticException oe = null;\r
1888         java.lang.ArithmeticException ae = null;\r
1889 \r
1890         (new Test("mul001")).ok=((new com.ibm.icu.math.BigDecimal("2")).multiply(new com.ibm.icu.math.BigDecimal("3"),mcdef).toString()).equals("6");\r
1891         (new Test("mul002")).ok=((new com.ibm.icu.math.BigDecimal("5")).multiply(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("5");\r
1892         (new Test("mul003")).ok=((new com.ibm.icu.math.BigDecimal("5")).multiply(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("10");\r
1893         (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
1894         (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
1895         (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
1896         (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
1897         (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
1898         (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
1899         (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
1900         (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
1901         (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
1902         (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
1903         \r
1904         (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
1905         \r
1906         (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
1907         (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
1908         (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
1909         \r
1910         \r
1911         (new Test("mul020")).ok=((new com.ibm.icu.math.BigDecimal("2")).multiply(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("6");\r
1912         (new Test("mul021")).ok=((new com.ibm.icu.math.BigDecimal("5")).multiply(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("5");\r
1913         (new Test("mul022")).ok=((new com.ibm.icu.math.BigDecimal("5")).multiply(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("10");\r
1914         (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
1915         (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
1916         (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
1917         (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
1918         (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
1919         (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
1920         (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
1921         (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
1922         (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
1923         (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
1924         \r
1925         (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
1926         \r
1927         (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
1928         \r
1929         (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
1930         \r
1931         (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
1932         (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
1933         (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
1934         // 1999.12.21: next one is a edge case if intermediate longs are used\r
1935         (new Test("mul039")).ok = ((new com.ibm.icu.math.BigDecimal("999999999999")).multiply(new com.ibm.icu.math.BigDecimal("9765625")).toString()).equals("9765624999990234375");\r
1936 \r
1937         l9 = new com.ibm.icu.math.BigDecimal("123456789E+10");\r
1938         l77e = new com.ibm.icu.math.BigDecimal("77E-20");\r
1939         (new Test("mul040")).ok = (l9.multiply(new com.ibm.icu.math.BigDecimal("3456757")).toString()).equals("4267601195732730000000000");\r
1940         (new Test("mul041")).ok = (l9.multiply(new com.ibm.icu.math.BigDecimal("3456757"), mc3).toString()).equals("4.26E+24");\r
1941         (new Test("mul042")).ok = (l9.multiply(l77e).toString()).equals("0.95061727530000000000");\r
1942         (new Test("mul043")).ok = (l9.multiply(l77e, mc3).toString()).equals("0.947");\r
1943         (new Test("mul044")).ok = (l77e.multiply(l9, mc3).toString()).equals("0.947");\r
1944 \r
1945         l12345 = new com.ibm.icu.math.BigDecimal("123.45");\r
1946         (new Test("mul050")).ok=(l12345.multiply(new com.ibm.icu.math.BigDecimal("1e11"),mcdef).toString()).equals("1.2345E+13");\r
1947         (new Test("mul051")).ok=(l12345.multiply(new com.ibm.icu.math.BigDecimal("1e11"),mcs).toString()).equals("1.2345E+13");\r
1948         (new Test("mul052")).ok=(l12345.multiply(new com.ibm.icu.math.BigDecimal("1e+9"),mce).toString()).equals("123.45E+9");\r
1949         (new Test("mul053")).ok=(l12345.multiply(new com.ibm.icu.math.BigDecimal("1e10"),mce).toString()).equals("1.2345E+12");\r
1950         (new Test("mul054")).ok=(l12345.multiply(new com.ibm.icu.math.BigDecimal("1e11"),mce).toString()).equals("12.345E+12");\r
1951         (new Test("mul055")).ok=(l12345.multiply(new com.ibm.icu.math.BigDecimal("1e12"),mce).toString()).equals("123.45E+12");\r
1952         (new Test("mul056")).ok=(l12345.multiply(new com.ibm.icu.math.BigDecimal("1e13"),mce).toString()).equals("1.2345E+15");\r
1953 \r
1954         // test some cases that are close to exponent overflow\r
1955         (new Test("mul060")).ok=(one.multiply(new com.ibm.icu.math.BigDecimal("9e999999999"),mcs).toString()).equals("9E+999999999");\r
1956         (new Test("mul061")).ok=(one.multiply(new com.ibm.icu.math.BigDecimal("9.9e999999999"),mcs).toString()).equals("9.9E+999999999");\r
1957         (new Test("mul062")).ok=(one.multiply(new com.ibm.icu.math.BigDecimal("9.99e999999999"),mcs).toString()).equals("9.99E+999999999");\r
1958         (new Test("mul063")).ok=(ten.multiply(new com.ibm.icu.math.BigDecimal("9e999999999"),mce).toString()).equals("90E+999999999");\r
1959         (new Test("mul064")).ok=(ten.multiply(new com.ibm.icu.math.BigDecimal("9.9e999999999"),mce).toString()).equals("99.0E+999999999");\r
1960         edge = new com.ibm.icu.math.BigDecimal("9.999e999999999");\r
1961         tenedge = ten.multiply(edge, mce);\r
1962         (new Test("mul065")).ok=(tenedge.toString()).equals("99.990E+999999999");\r
1963         hunedge = ten.multiply(tenedge, mce);\r
1964         (new Test("mul066")).ok = (hunedge.toString()).equals("999.900E+999999999");\r
1965         opo = new com.ibm.icu.math.BigDecimal("0.1"); // one tenth\r
1966         (new Test("mul067")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("9e-999999998"),mcs).toString()).equals("9E-999999999");\r
1967         (new Test("mul068")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("99e-999999998"),mcs).toString()).equals("9.9E-999999998");\r
1968         (new Test("mul069")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("999e-999999998"),mcs).toString()).equals("9.99E-999999997");\r
1969 \r
1970         (new Test("mul070")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("9e-999999998"),mce).toString()).equals("9E-999999999");\r
1971         (new Test("mul071")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("99e-999999998"),mce).toString()).equals("99E-999999999");\r
1972         (new Test("mul072")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("999e-999999998"),mce).toString()).equals("999E-999999999");\r
1973         (new Test("mul073")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("999e-999999997"),mce).toString()).equals("9.99E-999999996");\r
1974         (new Test("mul074")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("9999e-999999997"),mce).toString()).equals("99.99E-999999996");\r
1975         (new Test("mul074")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("99999e-999999997"),mce).toString()).equals("999.99E-999999996");\r
1976 \r
1977         // test some intermediate lengths\r
1978         (new Test("mul080")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("123456789"),mcs).toString()).equals("12345678.9");\r
1979         (new Test("mul081")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("12345678901234"),mcs).toString()).equals("1.23456789E+12");\r
1980         (new Test("mul082")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("123456789123456789"),mcs).toString()).equals("1.23456789E+16");\r
1981         (new Test("mul083")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("123456789"),mcfd).toString()).equals("12345678.9");\r
1982         (new Test("mul084")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("12345678901234"),mcfd).toString()).equals("1234567890123.4");\r
1983         (new Test("mul085")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("123456789123456789"),mcfd).toString()).equals("12345678912345678.9");\r
1984 \r
1985         (new Test("mul090")).ok=((new com.ibm.icu.math.BigDecimal("123456789")).multiply(opo,mcs).toString()).equals("12345678.9");\r
1986         (new Test("mul091")).ok=((new com.ibm.icu.math.BigDecimal("12345678901234")).multiply(opo,mcs).toString()).equals("1.23456789E+12");\r
1987         (new Test("mul092")).ok=((new com.ibm.icu.math.BigDecimal("123456789123456789")).multiply(opo,mcs).toString()).equals("1.23456789E+16");\r
1988         (new Test("mul093")).ok=((new com.ibm.icu.math.BigDecimal("123456789")).multiply(opo,mcfd).toString()).equals("12345678.9");\r
1989         (new Test("mul094")).ok=((new com.ibm.icu.math.BigDecimal("12345678901234")).multiply(opo,mcfd).toString()).equals("1234567890123.4");\r
1990         (new Test("mul095")).ok=((new com.ibm.icu.math.BigDecimal("123456789123456789")).multiply(opo,mcfd).toString()).equals("12345678912345678.9");\r
1991 \r
1992         // test some more edge cases and carries\r
1993         (new Test("mul101")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("9")).toString()).equals("81");\r
1994         (new Test("mul102")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("90")).toString()).equals("810");\r
1995         (new Test("mul103")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("900")).toString()).equals("8100");\r
1996         (new Test("mul104")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("9000")).toString()).equals("81000");\r
1997         (new Test("mul105")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("90000")).toString()).equals("810000");\r
1998         (new Test("mul106")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("900000")).toString()).equals("8100000");\r
1999         (new Test("mul107")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("9000000")).toString()).equals("81000000");\r
2000         (new Test("mul108")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("90000000")).toString()).equals("810000000");\r
2001         (new Test("mul109")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("900000000")).toString()).equals("8100000000");\r
2002         (new Test("mul110")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("9000000000")).toString()).equals("81000000000");\r
2003         (new Test("mul111")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("90000000000")).toString()).equals("810000000000");\r
2004         (new Test("mul112")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("900000000000")).toString()).equals("8100000000000");\r
2005         (new Test("mul113")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("9000000000000")).toString()).equals("81000000000000");\r
2006         (new Test("mul114")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("90000000000000")).toString()).equals("810000000000000");\r
2007         (new Test("mul115")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("900000000000000")).toString()).equals("8100000000000000");\r
2008         (new Test("mul116")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("9000000000000000")).toString()).equals("81000000000000000");\r
2009         (new Test("mul117")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("90000000000000000")).toString()).equals("810000000000000000");\r
2010         (new Test("mul118")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("900000000000000000")).toString()).equals("8100000000000000000");\r
2011         (new Test("mul119")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("9000000000000000000")).toString()).equals("81000000000000000000");\r
2012         (new Test("mul120")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("90000000000000000000")).toString()).equals("810000000000000000000");\r
2013         (new Test("mul121")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("900000000000000000000")).toString()).equals("8100000000000000000000");\r
2014         (new Test("mul122")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("9000000000000000000000")).toString()).equals("81000000000000000000000");\r
2015         (new Test("mul123")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("90000000000000000000000")).toString()).equals("810000000000000000000000");\r
2016         // test some more edge cases without carries\r
2017         (new Test("mul131")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("9");\r
2018         (new Test("mul132")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("30")).toString()).equals("90");\r
2019         (new Test("mul133")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("300")).toString()).equals("900");\r
2020         (new Test("mul134")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("3000")).toString()).equals("9000");\r
2021         (new Test("mul135")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("30000")).toString()).equals("90000");\r
2022         (new Test("mul136")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("300000")).toString()).equals("900000");\r
2023         (new Test("mul137")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("3000000")).toString()).equals("9000000");\r
2024         (new Test("mul138")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("30000000")).toString()).equals("90000000");\r
2025         (new Test("mul139")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("300000000")).toString()).equals("900000000");\r
2026         (new Test("mul140")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("3000000000")).toString()).equals("9000000000");\r
2027         (new Test("mul141")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("30000000000")).toString()).equals("90000000000");\r
2028         (new Test("mul142")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("300000000000")).toString()).equals("900000000000");\r
2029         (new Test("mul143")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("3000000000000")).toString()).equals("9000000000000");\r
2030         (new Test("mul144")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("30000000000000")).toString()).equals("90000000000000");\r
2031         (new Test("mul145")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("300000000000000")).toString()).equals("900000000000000");\r
2032         (new Test("mul146")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("3000000000000000")).toString()).equals("9000000000000000");\r
2033         (new Test("mul147")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("30000000000000000")).toString()).equals("90000000000000000");\r
2034         (new Test("mul148")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("300000000000000000")).toString()).equals("900000000000000000");\r
2035         (new Test("mul149")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("3000000000000000000")).toString()).equals("9000000000000000000");\r
2036         (new Test("mul150")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("30000000000000000000")).toString()).equals("90000000000000000000");\r
2037         (new Test("mul151")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("300000000000000000000")).toString()).equals("900000000000000000000");\r
2038         (new Test("mul152")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("3000000000000000000000")).toString()).equals("9000000000000000000000");\r
2039         (new Test("mul153")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("30000000000000000000000")).toString()).equals("90000000000000000000000");\r
2040 \r
2041         try {\r
2042             ten.multiply((com.ibm.icu.math.BigDecimal) null);\r
2043             flag = false;\r
2044         } catch (java.lang.NullPointerException $55) {\r
2045             flag = true;\r
2046         }/* checknull */\r
2047         (new Test("mul200")).ok = flag;\r
2048         try {\r
2049             ten.multiply(ten, (com.ibm.icu.math.MathContext) null);\r
2050             flag = false;\r
2051         } catch (java.lang.NullPointerException $56) {\r
2052             flag = true;\r
2053         }/* checknull2 */\r
2054         (new Test("mul201")).ok = flag;\r
2055 \r
2056         try {\r
2057             d1 = new com.ibm.icu.math.BigDecimal("-1.23456789012345E-0");\r
2058             d2 = new com.ibm.icu.math.BigDecimal("9E+999999999");\r
2059             d1.multiply(d2, mcdef); // marginal overflow\r
2060             flag = false;\r
2061         } catch (java.lang.ArithmeticException $57) {\r
2062             oe = $57;\r
2063             flag = (oe.getMessage()).equals("Exponent Overflow: 1000000000");\r
2064         }/* checkover */\r
2065         (new Test("mul202")).ok = flag;\r
2066         try {\r
2067             d1 = new com.ibm.icu.math.BigDecimal("112");\r
2068             d2 = new com.ibm.icu.math.BigDecimal("9E+999999999");\r
2069             d1.multiply(d2, mce); // marginal overflow, engineering\r
2070             flag = false;\r
2071         } catch (java.lang.ArithmeticException $58) {\r
2072             oe = $58;\r
2073             flag = (oe.getMessage()).equals("Exponent Overflow: 1000000002");\r
2074         }/* checkover */\r
2075         (new Test("mul203")).ok = flag;\r
2076 \r
2077         try {\r
2078             d1 = new com.ibm.icu.math.BigDecimal("0.9");\r
2079             d2 = new com.ibm.icu.math.BigDecimal("1E-999999999");\r
2080             d1.multiply(d2, mcdef); // marginal negative overflow\r
2081             flag = false;\r
2082         } catch (java.lang.ArithmeticException $59) {\r
2083             oe = $59;\r
2084             flag = (oe.getMessage()).equals("Exponent Overflow: -1000000000");\r
2085         }/* checkover */\r
2086         (new Test("mul204")).ok = flag;\r
2087         try {\r
2088             d1 = new com.ibm.icu.math.BigDecimal("0.9");\r
2089             d2 = new com.ibm.icu.math.BigDecimal("1E-999999999");\r
2090             d1.multiply(d2, mce); // marginal negative overflow,\r
2091                                     // engineering\r
2092             flag = false;\r
2093         } catch (java.lang.ArithmeticException $60) {\r
2094             oe = $60;\r
2095             flag = (oe.getMessage()).equals("Exponent Overflow: -1000000002");\r
2096         }/* checkover */\r
2097         (new Test("mul205")).ok = flag;\r
2098 \r
2099         try {\r
2100             tenlong.multiply(com.ibm.icu.math.BigDecimal.ONE, mcld);\r
2101             flag = false;\r
2102         } catch (java.lang.ArithmeticException $61) {\r
2103             ae = $61;\r
2104             flag = (ae.getMessage()).equals("Too many digits:" + " "\r
2105                     + tenlong.toString());\r
2106         }/* checkdigits */\r
2107         (new Test("mul206")).ok = flag;\r
2108         try {\r
2109             com.ibm.icu.math.BigDecimal.TEN.multiply(tenlong, mcld);\r
2110             flag = false;\r
2111         } catch (java.lang.ArithmeticException $62) {\r
2112             ae = $62;\r
2113             flag = (ae.getMessage()).equals("Too many digits:" + " "\r
2114                     + tenlong.toString());\r
2115         }/* checkdigits */\r
2116         (new Test("mul207")).ok = flag;\r
2117 \r
2118         summary("multiply");\r
2119     }\r
2120 \r
2121     /* ----------------------------------------------------------------- */\r
2122 \r
2123     /** Test the {@link com.ibm.icu.math.BigDecimal#negate} method. */\r
2124 \r
2125     public void diagnegate() {\r
2126         boolean flag = false;\r
2127         java.lang.ArithmeticException ae = null;\r
2128 \r
2129         (new Test("neg001")).ok=((new com.ibm.icu.math.BigDecimal("2")).negate().toString()).equals("-2");\r
2130         (new Test("neg002")).ok=((new com.ibm.icu.math.BigDecimal("-2")).negate().toString()).equals("2");\r
2131         (new Test("neg003")).ok=((new com.ibm.icu.math.BigDecimal("2.00")).negate(mcdef).toString()).equals("-2.00");\r
2132         (new Test("neg004")).ok=((new com.ibm.icu.math.BigDecimal("-2.00")).negate(mcdef).toString()).equals("2.00");\r
2133         (new Test("neg005")).ok=((new com.ibm.icu.math.BigDecimal("0")).negate(mcdef).toString()).equals("0");\r
2134         (new Test("neg006")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).negate(mcdef).toString()).equals("0");\r
2135         (new Test("neg007")).ok=((new com.ibm.icu.math.BigDecimal("00.0")).negate(mcdef).toString()).equals("0");\r
2136         (new Test("neg008")).ok=((new com.ibm.icu.math.BigDecimal("00")).negate(mcdef).toString()).equals("0");\r
2137         \r
2138         (new Test("neg010")).ok=((new com.ibm.icu.math.BigDecimal("2.00")).negate().toString()).equals("-2.00");\r
2139         (new Test("neg011")).ok=((new com.ibm.icu.math.BigDecimal("-2.00")).negate().toString()).equals("2.00");\r
2140         (new Test("neg012")).ok=((new com.ibm.icu.math.BigDecimal("0")).negate().toString()).equals("0");\r
2141         (new Test("neg013")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).negate().toString()).equals("0.00");\r
2142         (new Test("neg014")).ok=((new com.ibm.icu.math.BigDecimal("00.0")).negate().toString()).equals("0.0");\r
2143         (new Test("neg015")).ok=((new com.ibm.icu.math.BigDecimal("00.00")).negate().toString()).equals("0.00");\r
2144         (new Test("neg016")).ok=((new com.ibm.icu.math.BigDecimal("00")).negate().toString()).equals("0");\r
2145         \r
2146         (new Test("neg020")).ok=((new com.ibm.icu.math.BigDecimal("-2000000")).negate().toString()).equals("2000000");\r
2147         (new Test("neg021")).ok=((new com.ibm.icu.math.BigDecimal("-2000000")).negate(mcdef).toString()).equals("2000000");\r
2148         (new Test("neg022")).ok=((new com.ibm.icu.math.BigDecimal("-2000000")).negate(mc6).toString()).equals("2.00000E+6");\r
2149         (new Test("neg023")).ok=((new com.ibm.icu.math.BigDecimal("2000000")).negate(mc6).toString()).equals("-2.00000E+6");\r
2150 \r
2151         try {\r
2152             ten.negate((com.ibm.icu.math.MathContext) null);\r
2153             flag = false;\r
2154         } catch (java.lang.NullPointerException $63) {\r
2155             flag = true;\r
2156         }/* checknull */\r
2157         (new Test("neg100")).ok = flag;\r
2158 \r
2159         try {\r
2160             tenlong.negate(mcld);\r
2161             flag = false;\r
2162         } catch (java.lang.ArithmeticException $64) {\r
2163             ae = $64;\r
2164             flag = (ae.getMessage()).equals("Too many digits:" + " "\r
2165                     + tenlong.toString());\r
2166         }/* checkdigits */\r
2167         (new Test("neg101")).ok = flag;\r
2168         summary("negate");\r
2169     }\r
2170 \r
2171     /* ----------------------------------------------------------------- */\r
2172 \r
2173     /** Test the {@link com.ibm.icu.math.BigDecimal#plus} method. */\r
2174 \r
2175     public void diagplus() {\r
2176         boolean flag = false;\r
2177         com.ibm.icu.math.MathContext mche1;\r
2178         java.lang.ArithmeticException ae = null;\r
2179 \r
2180         (new Test("plu001")).ok=((new com.ibm.icu.math.BigDecimal("2")).plus(mcdef).toString()).equals("2");\r
2181         (new Test("plu002")).ok=((new com.ibm.icu.math.BigDecimal("-2")).plus(mcdef).toString()).equals("-2");\r
2182         (new Test("plu003")).ok=((new com.ibm.icu.math.BigDecimal("2.00")).plus(mcdef).toString()).equals("2.00");\r
2183         (new Test("plu004")).ok=((new com.ibm.icu.math.BigDecimal("-2.00")).plus(mcdef).toString()).equals("-2.00");\r
2184         (new Test("plu005")).ok=((new com.ibm.icu.math.BigDecimal("0")).plus(mcdef).toString()).equals("0");\r
2185         (new Test("plu006")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).plus(mcdef).toString()).equals("0");\r
2186         (new Test("plu007")).ok=((new com.ibm.icu.math.BigDecimal("00.0")).plus(mcdef).toString()).equals("0");\r
2187         (new Test("plu008")).ok=((new com.ibm.icu.math.BigDecimal("00")).plus(mcdef).toString()).equals("0");\r
2188         \r
2189         (new Test("plu010")).ok=((new com.ibm.icu.math.BigDecimal("2")).plus().toString()).equals("2");\r
2190         (new Test("plu011")).ok=((new com.ibm.icu.math.BigDecimal("-2")).plus().toString()).equals("-2");\r
2191         (new Test("plu012")).ok=((new com.ibm.icu.math.BigDecimal("2.00")).plus().toString()).equals("2.00");\r
2192         (new Test("plu013")).ok=((new com.ibm.icu.math.BigDecimal("-2.00")).plus().toString()).equals("-2.00");\r
2193         (new Test("plu014")).ok=((new com.ibm.icu.math.BigDecimal("0")).plus().toString()).equals("0");\r
2194         (new Test("plu015")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).plus().toString()).equals("0.00");\r
2195         (new Test("plu016")).ok=((new com.ibm.icu.math.BigDecimal("00.0")).plus().toString()).equals("0.0");\r
2196         (new Test("plu017")).ok=((new com.ibm.icu.math.BigDecimal("00.00")).plus().toString()).equals("0.00");\r
2197         (new Test("plu018")).ok=((new com.ibm.icu.math.BigDecimal("00")).plus().toString()).equals("0");\r
2198         \r
2199         (new Test("plu020")).ok=((new com.ibm.icu.math.BigDecimal("-2000000")).plus().toString()).equals("-2000000");\r
2200         (new Test("plu021")).ok=((new com.ibm.icu.math.BigDecimal("-2000000")).plus(mcdef).toString()).equals("-2000000");\r
2201         (new Test("plu022")).ok=((new com.ibm.icu.math.BigDecimal("-2000000")).plus(mc6).toString()).equals("-2.00000E+6");\r
2202         (new Test("plu023")).ok=((new com.ibm.icu.math.BigDecimal("2000000")).plus(mc6).toString()).equals("2.00000E+6");\r
2203 \r
2204         // try some exotic but silly rounding [format checks more varieties]\r
2205         // [this mostly ensures we can set up and pass the setting]\r
2206         mche1=new com.ibm.icu.math.MathContext(1,com.ibm.icu.math.MathContext.SCIENTIFIC,false,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN);\r
2207         (new Test("plu030")).ok=((new com.ibm.icu.math.BigDecimal("0.24")).plus(mche1).toString()).equals("0.2");\r
2208         (new Test("plu031")).ok=((new com.ibm.icu.math.BigDecimal("0.25")).plus(mche1).toString()).equals("0.2");\r
2209         (new Test("plu032")).ok=((new com.ibm.icu.math.BigDecimal("0.26")).plus(mche1).toString()).equals("0.3");\r
2210         (new Test("plu033")).ok=((new com.ibm.icu.math.BigDecimal("0.14")).plus(mche1).toString()).equals("0.1");\r
2211         (new Test("plu034")).ok=((new com.ibm.icu.math.BigDecimal("0.15")).plus(mche1).toString()).equals("0.2");\r
2212         (new Test("plu035")).ok=((new com.ibm.icu.math.BigDecimal("0.16")).plus(mche1).toString()).equals("0.2");\r
2213         \r
2214         (new Test("plu040")).ok=((new com.ibm.icu.math.BigDecimal("0.251")).plus(mche1).toString()).equals("0.3");\r
2215         (new Test("plu041")).ok=((new com.ibm.icu.math.BigDecimal("0.151")).plus(mche1).toString()).equals("0.2");\r
2216         \r
2217         (new Test("plu050")).ok=((new com.ibm.icu.math.BigDecimal("-0.24")).plus(mche1).toString()).equals("-0.2");\r
2218         (new Test("plu051")).ok=((new com.ibm.icu.math.BigDecimal("-0.25")).plus(mche1).toString()).equals("-0.2");\r
2219         (new Test("plu052")).ok=((new com.ibm.icu.math.BigDecimal("-0.26")).plus(mche1).toString()).equals("-0.3");\r
2220         (new Test("plu053")).ok=((new com.ibm.icu.math.BigDecimal("-0.14")).plus(mche1).toString()).equals("-0.1");\r
2221         (new Test("plu054")).ok=((new com.ibm.icu.math.BigDecimal("-0.15")).plus(mche1).toString()).equals("-0.2");\r
2222         (new Test("plu055")).ok=((new com.ibm.icu.math.BigDecimal("-0.16")).plus(mche1).toString()).equals("-0.2");\r
2223 \r
2224         // more fixed, potential LHS swaps if done by add 0\r
2225         (new Test("plu060")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-10")).plus().toString()).equals("-0.0000056267");\r
2226         (new Test("plu061")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-5")).plus().toString()).equals("-0.56267");\r
2227         (new Test("plu062")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-2")).plus().toString()).equals("-562.67");\r
2228         (new Test("plu063")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-1")).plus().toString()).equals("-5626.7");\r
2229         (new Test("plu065")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-0")).plus().toString()).equals("-56267");\r
2230 \r
2231         try {\r
2232             ten.plus((com.ibm.icu.math.MathContext) null);\r
2233             flag = false;\r
2234         } catch (java.lang.NullPointerException $65) {\r
2235             flag = true;\r
2236         }/* checknull */\r
2237         (new Test("plu100")).ok = flag;\r
2238 \r
2239         try {\r
2240             tenlong.plus(mcld);\r
2241             flag = false;\r
2242         } catch (java.lang.ArithmeticException $66) {\r
2243             ae = $66;\r
2244             flag = (ae.getMessage()).equals("Too many digits:" + " "\r
2245                     + tenlong.toString());\r
2246         }/* checkdigits */\r
2247         (new Test("plu101")).ok = flag;\r
2248         summary("plus");\r
2249     }\r
2250 \r
2251     /* ----------------------------------------------------------------- */\r
2252 \r
2253     /** Test the {@link com.ibm.icu.math.BigDecimal#pow} method. */\r
2254 \r
2255     public void diagpow() {\r
2256         boolean flag;\r
2257         com.ibm.icu.math.BigDecimal x;\r
2258         com.ibm.icu.math.BigDecimal temp;\r
2259         int n = 0;\r
2260         com.ibm.icu.math.BigDecimal vx;\r
2261         com.ibm.icu.math.BigDecimal vn;\r
2262         java.lang.ArithmeticException ae = null;\r
2263         flag = true;\r
2264         (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
2265         (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
2266         (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
2267         (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
2268         (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
2269         (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
2270         (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
2271         (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
2272         (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
2273         (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
2274         (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
2275         (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
2276         (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
2277         (new Test("pow014")).ok="1".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("0"),mcdef).toString());\r
2278         (new Test("pow015")).ok="10".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString());\r
2279         (new Test("pow016")).ok="100000000".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("8"),mcdef).toString());\r
2280         (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
2281         (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
2282         (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
2283         (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
2284         (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
2285         (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
2286         (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
2287         (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
2288         (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
2289         (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
2290         (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
2291         (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
2292         \r
2293         (new Test("pow050")).ok=((new com.ibm.icu.math.BigDecimal("0")).pow(new com.ibm.icu.math.BigDecimal("0"),mcdef).toString()).equals("1");\r
2294         (new Test("pow051")).ok=((new com.ibm.icu.math.BigDecimal("0")).pow(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("0");\r
2295         (new Test("pow052")).ok=((new com.ibm.icu.math.BigDecimal("0")).pow(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("0");\r
2296         (new Test("pow053")).ok=((new com.ibm.icu.math.BigDecimal("1")).pow(new com.ibm.icu.math.BigDecimal("0"),mcdef).toString()).equals("1");\r
2297         (new Test("pow054")).ok=((new com.ibm.icu.math.BigDecimal("1")).pow(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("1");\r
2298         (new Test("pow055")).ok=((new com.ibm.icu.math.BigDecimal("1")).pow(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("1");\r
2299         (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
2300         (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
2301         (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
2302         (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
2303         (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
2304         (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
2305         (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
2306         (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
2307         (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
2308         (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
2309         (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
2310         (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
2311         (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
2312         (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
2313         (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
2314 \r
2315         // 1998.12.14 Next test removed as pow() no longer rounds RHS [as per ANSI]\r
2316         // Test('pow071').ok=BigDecimal('2').pow(BigDecimal('2.000000001'),mcdef).toString == '4'/* check input rounding */\r
2317 \r
2318         /* General tests from original Rexx diagnostics */\r
2319         x = new com.ibm.icu.math.BigDecimal("0.5");\r
2320         temp = com.ibm.icu.math.BigDecimal.ONE;\r
2321         flag = true;\r
2322         {\r
2323             n = 1;\r
2324             for (; n <= 10; n++) {\r
2325                 temp = temp.multiply(x).divide(com.ibm.icu.math.BigDecimal.ONE);\r
2326                 flag = flag\r
2327                         & (x.pow(new com.ibm.icu.math.BigDecimal(n), mcdef)\r
2328                                 .toString()).equals(temp.toString());\r
2329             }\r
2330         }/* n */\r
2331         (new Test("pow080")).ok = flag;\r
2332 \r
2333         x = new com.ibm.icu.math.BigDecimal("2");\r
2334         temp = com.ibm.icu.math.BigDecimal.ONE;\r
2335         flag = true;\r
2336         {\r
2337             n = 1;\r
2338             for (; n <= 29; n++) {\r
2339                 temp = temp.multiply(x).divide(com.ibm.icu.math.BigDecimal.ONE);\r
2340                 flag=flag&(x.pow(new com.ibm.icu.math.BigDecimal(n),mcdef).toString()).equals(temp.toString());\r
2341                 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
2342                 /* Note that rounding errors are possible for larger "n" */\r
2343                 /* due to the information content of the exponent */\r
2344             }\r
2345         }/* n */\r
2346         (new Test("pow081")).ok = flag;\r
2347 \r
2348         /* The Vienna case. Checks both setup and 1/acc working precision */\r
2349         // Modified 1998.12.14 as RHS no longer rounded before use (must fit)\r
2350         // Modified 1990.02.04 as LHS is now rounded (instead of truncated to guard)\r
2351         vx=new com.ibm.icu.math.BigDecimal("123456789E+10"); // lhs .. rounded to 1.23E+18\r
2352         vn=new com.ibm.icu.math.BigDecimal("-1.23000e+2"); // rhs .. [was: -1.23455e+2, rounds to -123]\r
2353         (new Test("pow090")).ok=(vx.pow(vn,mc3).toString()).equals("8.74E-2226");\r
2354 \r
2355         // - fixed point versions ---\r
2356         (new Test("pow101")).ok="1".equals((new com.ibm.icu.math.BigDecimal("0.3")).pow(new com.ibm.icu.math.BigDecimal("0")).toString());\r
2357         (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
2358         (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
2359         (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
2360         (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
2361         (new Test("pow106")).ok="10".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("1")).toString());\r
2362         (new Test("pow107")).ok="100000000".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("8")).toString());\r
2363         (new Test("pow108")).ok="1000000000".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("9")).toString());\r
2364         (new Test("pow109")).ok="10000000000".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("10")).toString());\r
2365         (new Test("pow110")).ok="1".equals((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("0")).toString());\r
2366         (new Test("pow111")).ok="16".equals((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("4")).toString());\r
2367         (new Test("pow112")).ok="256".equals((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("8")).toString());\r
2368         (new Test("pow113")).ok="1024".equals((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("10")).toString());\r
2369         (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
2370 \r
2371         (new Test("pow120")).ok=((new com.ibm.icu.math.BigDecimal("0")).pow(new com.ibm.icu.math.BigDecimal("0")).toString()).equals("1");\r
2372         (new Test("pow121")).ok=((new com.ibm.icu.math.BigDecimal("0")).pow(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("0");\r
2373         (new Test("pow122")).ok=((new com.ibm.icu.math.BigDecimal("0")).pow(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("0");\r
2374         (new Test("pow123")).ok=((new com.ibm.icu.math.BigDecimal("1")).pow(new com.ibm.icu.math.BigDecimal("0")).toString()).equals("1");\r
2375         (new Test("pow144")).ok=((new com.ibm.icu.math.BigDecimal("1")).pow(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("1");\r
2376         (new Test("pow125")).ok=((new com.ibm.icu.math.BigDecimal("1")).pow(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("1");\r
2377         (new Test("pow126")).ok=((new com.ibm.icu.math.BigDecimal("0.3")).pow(new com.ibm.icu.math.BigDecimal("0")).toString()).equals("1");\r
2378         (new Test("pow127")).ok=((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("7")).toString()).equals("10000000");\r
2379         (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
2380         (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
2381         (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
2382         (new Test("pow131")).ok=((new com.ibm.icu.math.BigDecimal("-3")).pow(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("9");\r
2383         (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
2384 \r
2385         /* errors */\r
2386         try {\r
2387             ten.pow((com.ibm.icu.math.BigDecimal) null);\r
2388             flag = false;\r
2389         } catch (java.lang.NullPointerException $67) {\r
2390             flag = true;\r
2391         }/* checknull */\r
2392         (new Test("pow150")).ok = flag;\r
2393         try {\r
2394             ten.pow(ten, (com.ibm.icu.math.MathContext) null);\r
2395             flag = false;\r
2396         } catch (java.lang.NullPointerException $68) {\r
2397             flag = true;\r
2398         }/* checknull2 */\r
2399         (new Test("pow151")).ok = flag;\r
2400 \r
2401         flag = true;\r
2402         try {\r
2403             tenlong.pow(com.ibm.icu.math.BigDecimal.ONE, mcld);\r
2404             flag = false;\r
2405         } catch (java.lang.ArithmeticException $69) {\r
2406             ae = $69;\r
2407             flag = (ae.getMessage()).equals("Too many digits:" + " "\r
2408                     + tenlong.toString());\r
2409         }/* checkdigits */\r
2410         (new Test("pow152")).ok = flag;\r
2411 \r
2412         try {\r
2413             com.ibm.icu.math.BigDecimal.ONE.pow(tenlong, mcld);\r
2414             flag = false;\r
2415         } catch (java.lang.ArithmeticException $70) {\r
2416             ae = $70;\r
2417             flag = (ae.getMessage()).equals("Too many digits:" + " "\r
2418                     + tenlong.toString());\r
2419         }/* checkdigits */\r
2420         (new Test("pow153")).ok = flag;\r
2421 \r
2422         try {\r
2423             com.ibm.icu.math.BigDecimal.ONE\r
2424                     .pow(new com.ibm.icu.math.BigDecimal("-71"));\r
2425             flag = false;\r
2426         } catch (java.lang.ArithmeticException $71) {\r
2427             ae = $71;\r
2428             flag = (ae.getMessage()).equals("Negative power: -71");\r
2429         }/* checkpos */\r
2430         (new Test("pow154")).ok = flag;\r
2431 \r
2432         try {\r
2433             com.ibm.icu.math.BigDecimal.ONE.pow(\r
2434                     new com.ibm.icu.math.BigDecimal("1234"), mc3);\r
2435             flag = false;\r
2436         } catch (java.lang.ArithmeticException $72) {\r
2437             ae = $72;\r
2438             flag = (ae.getMessage()).equals("Too many digits: 1234");\r
2439         }/* checkwhole */\r
2440         (new Test("pow155")).ok = flag;\r
2441 \r
2442         try {\r
2443             com.ibm.icu.math.BigDecimal.ONE.pow(\r
2444                     new com.ibm.icu.math.BigDecimal("12.34e+2"), mc3);\r
2445             flag = false;\r
2446         } catch (java.lang.ArithmeticException $73) {\r
2447             ae = $73;\r
2448             flag = (ae.getMessage()).equals("Too many digits: 1.234E+3");\r
2449         }/* checkwhole1 */\r
2450         (new Test("pow156")).ok = flag;\r
2451 \r
2452         try {\r
2453             com.ibm.icu.math.BigDecimal.ONE.pow(\r
2454                     new com.ibm.icu.math.BigDecimal("12.4"), mcdef);\r
2455             flag = false;\r
2456         } catch (java.lang.ArithmeticException $74) {\r
2457             ae = $74;\r
2458             flag = (ae.getMessage()).equals("Decimal part non-zero: 12.4");\r
2459         }/* checkwhole2 */\r
2460         (new Test("pow157")).ok = flag;\r
2461 \r
2462         try {\r
2463             com.ibm.icu.math.BigDecimal.ONE.pow(\r
2464                     new com.ibm.icu.math.BigDecimal("1.01"), mcdef);\r
2465             flag = false;\r
2466         } catch (java.lang.ArithmeticException $75) {\r
2467             ae = $75;\r
2468             flag = (ae.getMessage()).equals("Decimal part non-zero: 1.01");\r
2469         }/* checkwhole3 */\r
2470         (new Test("pow158")).ok = flag;\r
2471 \r
2472         try {\r
2473             com.ibm.icu.math.BigDecimal.ONE.pow(\r
2474                     new com.ibm.icu.math.BigDecimal("1.000000001"), mcdef);\r
2475             flag = false;\r
2476         } catch (java.lang.ArithmeticException $76) {\r
2477             ae = $76;\r
2478             flag = (ae.getMessage())\r
2479                     .equals("Decimal part non-zero: 1.000000001");\r
2480         }/* checkwhole4 */\r
2481         (new Test("pow159")).ok = flag;\r
2482 \r
2483         try {\r
2484             com.ibm.icu.math.BigDecimal.ONE.pow(\r
2485                     new com.ibm.icu.math.BigDecimal("1.000000001"), mc3);\r
2486             flag = false;\r
2487         } catch (java.lang.ArithmeticException $77) {\r
2488             ae = $77;\r
2489             flag = (ae.getMessage())\r
2490                     .equals("Decimal part non-zero: 1.000000001");\r
2491         }/* checkwhole5 */\r
2492         (new Test("pow160")).ok = flag;\r
2493 \r
2494         try {\r
2495             com.ibm.icu.math.BigDecimal.ONE\r
2496                     .pow(\r
2497                             new com.ibm.icu.math.BigDecimal(\r
2498                                     "5.67E-987654321"), mc3);\r
2499             flag = false;\r
2500         } catch (java.lang.ArithmeticException $78) {\r
2501             ae = $78;\r
2502             flag = (ae.getMessage())\r
2503                     .equals("Decimal part non-zero: 5.67E-987654321");\r
2504         }/* checkwhole6 */\r
2505         (new Test("pow161")).ok = flag;\r
2506 \r
2507         summary("pow");\r
2508     }\r
2509 \r
2510     /*--------------------------------------------------------------------*/\r
2511 \r
2512     /** Test the {@link com.ibm.icu.math.BigDecimal#remainder} method. */\r
2513 \r
2514     public void diagremainder() {\r
2515         boolean flag = false;\r
2516         java.lang.ArithmeticException ae = null;\r
2517 \r
2518         (new Test("rem001")).ok=((new com.ibm.icu.math.BigDecimal("1")).remainder(new com.ibm.icu.math.BigDecimal("3"),mcdef).toString()).equals("1");\r
2519         (new Test("rem002")).ok=((new com.ibm.icu.math.BigDecimal("5")).remainder(new com.ibm.icu.math.BigDecimal("5"),mcdef).toString()).equals("0");\r
2520         (new Test("rem003")).ok=((new com.ibm.icu.math.BigDecimal("13")).remainder(new com.ibm.icu.math.BigDecimal("10"),mcdef).toString()).equals("3");\r
2521         (new Test("rem004")).ok=((new com.ibm.icu.math.BigDecimal("13")).remainder(new com.ibm.icu.math.BigDecimal("50"),mcdef).toString()).equals("13");\r
2522         (new Test("rem005")).ok=((new com.ibm.icu.math.BigDecimal("13")).remainder(new com.ibm.icu.math.BigDecimal("100"),mcdef).toString()).equals("13");\r
2523         (new Test("rem006")).ok=((new com.ibm.icu.math.BigDecimal("13")).remainder(new com.ibm.icu.math.BigDecimal("1000"),mcdef).toString()).equals("13");\r
2524         (new Test("rem007")).ok=((new com.ibm.icu.math.BigDecimal(".13")).remainder(one).toString()).equals("0.13");\r
2525         (new Test("rem008")).ok=((new com.ibm.icu.math.BigDecimal("0.133")).remainder(one).toString()).equals("0.133");\r
2526         (new Test("rem009")).ok=((new com.ibm.icu.math.BigDecimal("0.1033")).remainder(one).toString()).equals("0.1033");\r
2527         (new Test("rem010")).ok=((new com.ibm.icu.math.BigDecimal("1.033")).remainder(one).toString()).equals("0.033");\r
2528         (new Test("rem011")).ok=((new com.ibm.icu.math.BigDecimal("10.33")).remainder(one).toString()).equals("0.33");\r
2529         (new Test("rem012")).ok=((new com.ibm.icu.math.BigDecimal("10.33")).remainder(com.ibm.icu.math.BigDecimal.TEN).toString()).equals("0.33");\r
2530         (new Test("rem013")).ok=((new com.ibm.icu.math.BigDecimal("103.3")).remainder(com.ibm.icu.math.BigDecimal.ONE).toString()).equals("0.3");\r
2531         (new Test("rem014")).ok=((new com.ibm.icu.math.BigDecimal("133")).remainder(com.ibm.icu.math.BigDecimal.TEN).toString()).equals("3");\r
2532         (new Test("rem015")).ok=((new com.ibm.icu.math.BigDecimal("1033")).remainder(com.ibm.icu.math.BigDecimal.TEN).toString()).equals("3");\r
2533         (new Test("rem016")).ok=((new com.ibm.icu.math.BigDecimal("1033")).remainder(new com.ibm.icu.math.BigDecimal(50),mcdef).toString()).equals("33");\r
2534         (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
2535         (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
2536         (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
2537         (new Test("rem020")).ok=((new com.ibm.icu.math.BigDecimal("2.40")).remainder(one).toString()).equals("0.40");\r
2538         (new Test("rem021")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).remainder(one).toString()).equals("0.400");\r
2539         (new Test("rem022")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).remainder(one).toString()).equals("0.4");\r
2540         (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
2541         (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
2542         (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
2543         (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
2544         (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
2545         (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
2546         (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
2547         (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
2548         (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
2549         (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
2550         (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
2551         \r
2552         (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
2553         (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
2554         (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
2555         (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
2556         (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
2557         (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
2558         (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
2559         (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
2560         (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
2561         (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
2562         \r
2563         (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
2564         (new Test("rem051")).ok=((new com.ibm.icu.math.BigDecimal("5")).remainder(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("1");\r
2565         (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
2566         (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
2567         (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
2568         (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
2569         (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
2570         (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
2571         (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
2572         \r
2573         (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
2574         (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
2575         (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
2576         (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
2577         (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
2578         (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
2579         (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
2580 \r
2581         // MC --\r
2582         (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
2583         (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
2584 \r
2585         // Fixed --\r
2586         (new Test("rem101")).ok=((new com.ibm.icu.math.BigDecimal("1")).remainder(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("1");\r
2587         (new Test("rem102")).ok=((new com.ibm.icu.math.BigDecimal("5")).remainder(new com.ibm.icu.math.BigDecimal("5")).toString()).equals("0");\r
2588         (new Test("rem103")).ok=((new com.ibm.icu.math.BigDecimal("13")).remainder(new com.ibm.icu.math.BigDecimal("10")).toString()).equals("3");\r
2589         (new Test("rem104")).ok=((new com.ibm.icu.math.BigDecimal("13")).remainder(new com.ibm.icu.math.BigDecimal("50")).toString()).equals("13");\r
2590         (new Test("rem105")).ok=((new com.ibm.icu.math.BigDecimal("13")).remainder(new com.ibm.icu.math.BigDecimal("100")).toString()).equals("13");\r
2591         (new Test("rem106")).ok=((new com.ibm.icu.math.BigDecimal("13")).remainder(new com.ibm.icu.math.BigDecimal("1000")).toString()).equals("13");\r
2592         (new Test("rem107")).ok=((new com.ibm.icu.math.BigDecimal(".13")).remainder(one).toString()).equals("0.13");\r
2593         (new Test("rem108")).ok=((new com.ibm.icu.math.BigDecimal("0.133")).remainder(one).toString()).equals("0.133");\r
2594         (new Test("rem109")).ok=((new com.ibm.icu.math.BigDecimal("0.1033")).remainder(one).toString()).equals("0.1033");\r
2595         (new Test("rem110")).ok=((new com.ibm.icu.math.BigDecimal("1.033")).remainder(one).toString()).equals("0.033");\r
2596         (new Test("rem111")).ok=((new com.ibm.icu.math.BigDecimal("10.33")).remainder(one).toString()).equals("0.33");\r
2597         (new Test("rem112")).ok=((new com.ibm.icu.math.BigDecimal("10.33")).remainder(com.ibm.icu.math.BigDecimal.TEN).toString()).equals("0.33");\r
2598         (new Test("rem113")).ok=((new com.ibm.icu.math.BigDecimal("103.3")).remainder(com.ibm.icu.math.BigDecimal.ONE).toString()).equals("0.3");\r
2599         (new Test("rem114")).ok=((new com.ibm.icu.math.BigDecimal("133")).remainder(com.ibm.icu.math.BigDecimal.TEN).toString()).equals("3");\r
2600         (new Test("rem115")).ok=((new com.ibm.icu.math.BigDecimal("1033")).remainder(com.ibm.icu.math.BigDecimal.TEN).toString()).equals("3");\r
2601         (new Test("rem116")).ok=((new com.ibm.icu.math.BigDecimal("1033")).remainder(new com.ibm.icu.math.BigDecimal(50)).toString()).equals("33");\r
2602         (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
2603         (new Test("rem118")).ok=((new com.ibm.icu.math.BigDecimal("102.0")).remainder(new com.ibm.icu.math.BigDecimal(3)).toString()).equals("0");\r
2604         (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
2605         (new Test("rem120")).ok=((new com.ibm.icu.math.BigDecimal("2.40")).remainder(one).toString()).equals("0.40");\r
2606         (new Test("rem121")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).remainder(one).toString()).equals("0.400");\r
2607         (new Test("rem122")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).remainder(one).toString()).equals("0.4");\r
2608         (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
2609         (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
2610         (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
2611         (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
2612         (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
2613         (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
2614         (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
2615         (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
2616         (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
2617         (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
2618         (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
2619         (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
2620         (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
2621         (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
2622         (new Test("rem137")).ok=((new com.ibm.icu.math.BigDecimal("5")).remainder(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("1");\r
2623         (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
2624         (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
2625         (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
2626         (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
2627         (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
2628         (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
2629         (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
2630         (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
2631         (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
2632         (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
2633         (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
2634         (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
2635         (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
2636         (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
2637 \r
2638 \r
2639         try {\r
2640             ten.remainder((com.ibm.icu.math.BigDecimal) null);\r
2641             flag = false;\r
2642         } catch (java.lang.NullPointerException $79) {\r
2643             flag = true;\r
2644         }/* checknull */\r
2645         (new Test("rem200")).ok = flag;\r
2646         try {\r
2647             ten.remainder(ten, (com.ibm.icu.math.MathContext) null);\r
2648             flag = false;\r
2649         } catch (java.lang.NullPointerException $80) {\r
2650             flag = true;\r
2651         }/* checknull2 */\r
2652         (new Test("rem201")).ok = flag;\r
2653 \r
2654         try {\r
2655             com.ibm.icu.math.BigDecimal.ONE.remainder(tenlong, mcld);\r
2656             flag = false;\r
2657         } catch (java.lang.ArithmeticException $81) {\r
2658             ae = $81;\r
2659             flag = (ae.getMessage()).equals("Too many digits:" + " "\r
2660                     + tenlong.toString());\r
2661         }/* checkdigits */\r
2662         (new Test("rem202")).ok = flag;\r
2663 \r
2664         try {\r
2665             tenlong.remainder(one, mcld);\r
2666             flag = false;\r
2667         } catch (java.lang.ArithmeticException $82) {\r
2668             ae = $82;\r
2669             flag = (ae.getMessage()).equals("Too many digits:" + " "\r
2670                     + tenlong.toString());\r
2671         }/* checkdigits */\r
2672         (new Test("rem203")).ok = flag;\r
2673 \r
2674         summary("remainder");\r
2675     }\r
2676 \r
2677     /*--------------------------------------------------------------------*/\r
2678 \r
2679     /** Test the {@link com.ibm.icu.math.BigDecimal#subtract} method. */\r
2680 \r
2681     public void diagsubtract() {\r
2682         boolean flag = false;\r
2683         com.ibm.icu.math.BigDecimal alhs;\r
2684         com.ibm.icu.math.BigDecimal arhs;\r
2685         java.lang.ArithmeticException ae = null;\r
2686 \r
2687         // [first group are 'quick confidence check']\r
2688         (new Test("sub301")).ok=((new com.ibm.icu.math.BigDecimal(2)).subtract(new com.ibm.icu.math.BigDecimal(3),mcdef).toString()).equals("-1");\r
2689         (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
2690         (new Test("sub303")).ok=((new com.ibm.icu.math.BigDecimal("5")).subtract(new com.ibm.icu.math.BigDecimal("-3"),mcdef).toString()).equals("8");\r
2691         (new Test("sub304")).ok=((new com.ibm.icu.math.BigDecimal("-5")).subtract(new com.ibm.icu.math.BigDecimal("-3"),mcdef).toString()).equals("-2");\r
2692         (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
2693         (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
2694         (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
2695         (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
2696         (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
2697         \r
2698         (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
2699         \r
2700         (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
2701         \r
2702         (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
2703         \r
2704         (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
2705         \r
2706         (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
2707         \r
2708         (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
2709         \r
2710         (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
2711         \r
2712         \r
2713         (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
2714         \r
2715         (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
2716         \r
2717         (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
2718         \r
2719         (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
2720         \r
2721         (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
2722 \r
2723         // symmetry:\r
2724         (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
2725         \r
2726         (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
2727         \r
2728         (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
2729         \r
2730         (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
2731         \r
2732         (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
2733 \r
2734 \r
2735         // [same with fixed point arithmetic]\r
2736         (new Test("sub001")).ok=((new com.ibm.icu.math.BigDecimal(2)).subtract(new com.ibm.icu.math.BigDecimal(3)).toString()).equals("-1");\r
2737         (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
2738         (new Test("sub003")).ok=((new com.ibm.icu.math.BigDecimal("5")).subtract(new com.ibm.icu.math.BigDecimal("-3")).toString()).equals("8");\r
2739         (new Test("sub004")).ok=((new com.ibm.icu.math.BigDecimal("-5")).subtract(new com.ibm.icu.math.BigDecimal("-3")).toString()).equals("-2");\r
2740         (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
2741         (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
2742         (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
2743         (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
2744         (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
2745         \r
2746         (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
2747         \r
2748         (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
2749         \r
2750         (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
2751         \r
2752         (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
2753         \r
2754         (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
2755         \r
2756         (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
2757         \r
2758         (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
2759         \r
2760         (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
2761         \r
2762         \r
2763         (new Test("sub018")).ok=((new com.ibm.icu.math.BigDecimal("70")).subtract(new com.ibm.icu.math.BigDecimal("10000e+9")).toString()).equals("-9999999999930");\r
2764         \r
2765         (new Test("sub019")).ok=((new com.ibm.icu.math.BigDecimal("700")).subtract(new com.ibm.icu.math.BigDecimal("10000e+9")).toString()).equals("-9999999999300");\r
2766         \r
2767         (new Test("sub020")).ok=((new com.ibm.icu.math.BigDecimal("7000")).subtract(new com.ibm.icu.math.BigDecimal("10000e+9")).toString()).equals("-9999999993000");\r
2768         \r
2769         (new Test("sub021")).ok=((new com.ibm.icu.math.BigDecimal("70000")).subtract(new com.ibm.icu.math.BigDecimal("10000e+9")).toString()).equals("-9999999930000");\r
2770         \r
2771         (new Test("sub022")).ok=((new com.ibm.icu.math.BigDecimal("700000")).subtract(new com.ibm.icu.math.BigDecimal("10000e+9")).toString()).equals("-9999999300000");\r
2772 \r
2773         // symmetry:\r
2774         (new Test("sub023")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("70")).toString()).equals("9999999999930");\r
2775         \r
2776         (new Test("sub024")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("700")).toString()).equals("9999999999300");\r
2777         \r
2778         (new Test("sub025")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("7000")).toString()).equals("9999999993000");\r
2779         \r
2780         (new Test("sub026")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("70000")).toString()).equals("9999999930000");\r
2781         \r
2782         (new Test("sub027")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("700000")).toString()).equals("9999999300000");\r
2783 \r
2784         // MC\r
2785         (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
2786         \r
2787         (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
2788 \r
2789 \r
2790         // some of the next group are really constructor tests\r
2791         (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
2792         (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
2793         (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
2794         (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
2795         (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
2796         (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
2797         (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
2798         (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
2799         (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
2800         (new Test("sub049")).ok=((new com.ibm.icu.math.BigDecimal("3")).subtract(new com.ibm.icu.math.BigDecimal("3"),mcdef).toString()).equals("0");\r
2801         (new Test("sub050")).ok=((new com.ibm.icu.math.BigDecimal("3")).subtract(new com.ibm.icu.math.BigDecimal("+3"),mcdef).toString()).equals("0");\r
2802         (new Test("sub051")).ok=((new com.ibm.icu.math.BigDecimal("3")).subtract(new com.ibm.icu.math.BigDecimal("-3"),mcdef).toString()).equals("6");\r
2803         (new Test("sub052")).ok=((new com.ibm.icu.math.BigDecimal("3")).subtract(new com.ibm.icu.math.BigDecimal(".3")).toString()).equals("2.7");\r
2804         (new Test("sub053")).ok=((new com.ibm.icu.math.BigDecimal("3.")).subtract(new com.ibm.icu.math.BigDecimal(".3")).toString()).equals("2.7");\r
2805         (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
2806         (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
2807         (new Test("sub056")).ok=((new com.ibm.icu.math.BigDecimal("3")).subtract(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("0");\r
2808         (new Test("sub057")).ok=((new com.ibm.icu.math.BigDecimal("3")).subtract(new com.ibm.icu.math.BigDecimal("+3")).toString()).equals("0");\r
2809         (new Test("sub058")).ok=((new com.ibm.icu.math.BigDecimal("3")).subtract(new com.ibm.icu.math.BigDecimal("-3")).toString()).equals("6");\r
2810 \r
2811         // the above all from add; massaged and extended. Now some new ones...\r
2812         // [particularly important for comparisons]\r
2813         // NB: -1E-7 below were non-exponents pre-ANSI\r
2814         (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
2815         (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
2816         (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
2817         (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
2818         (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
2819         (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
2820         (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
2821         (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
2822         (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
2823         (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
2824         (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
2825         (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
2826         (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
2827         (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
2828         (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
2829         (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
2830         (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
2831         (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
2832         (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
2833         (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
2834         (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
2835         (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
2836         (new Test("sub102")).ok="0".equals(com.ibm.icu.math.BigDecimal.ONE.subtract(new com.ibm.icu.math.BigDecimal("0.999999999"),mcdef).toString());\r
2837         (new Test("sub103")).ok="0".equals((new com.ibm.icu.math.BigDecimal("0.999999999")).subtract(com.ibm.icu.math.BigDecimal.ONE,mcdef).toString());\r
2838 \r
2839         alhs = new com.ibm.icu.math.BigDecimal("12345678900000");\r
2840         arhs = new com.ibm.icu.math.BigDecimal("9999999999999");\r
2841         (new Test("sub110")).ok = (alhs.subtract(arhs, mc3).toString()).equals("2.3E+12");\r
2842         (new Test("sub111")).ok = (arhs.subtract(alhs, mc3).toString()).equals("-2.3E+12");\r
2843         (new Test("sub112")).ok = (alhs.subtract(arhs).toString()).equals("2345678900001");\r
2844         (new Test("sub113")).ok = (arhs.subtract(alhs).toString()).equals("-2345678900001");\r
2845 \r
2846         // additional scaled arithmetic tests [0.97 problem]\r
2847         (new Test("sub120")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal(".1")).toString()).equals("-0.1");\r
2848         (new Test("sub121")).ok=((new com.ibm.icu.math.BigDecimal("00")).subtract(new com.ibm.icu.math.BigDecimal(".97983")).toString()).equals("-0.97983");\r
2849         (new Test("sub122")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal(".9")).toString()).equals("-0.9");\r
2850         (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
2851         (new Test("sub124")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal(".4")).toString()).equals("-0.4");\r
2852         (new Test("sub125")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal(".307")).toString()).equals("-0.307");\r
2853         (new Test("sub126")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal(".43822")).toString()).equals("-0.43822");\r
2854         (new Test("sub127")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal(".911")).toString()).equals("-0.911");\r
2855         (new Test("sub128")).ok=((new com.ibm.icu.math.BigDecimal(".0")).subtract(new com.ibm.icu.math.BigDecimal(".02")).toString()).equals("-0.02");\r
2856         (new Test("sub129")).ok=((new com.ibm.icu.math.BigDecimal("00")).subtract(new com.ibm.icu.math.BigDecimal(".392")).toString()).equals("-0.392");\r
2857         (new Test("sub130")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal(".26")).toString()).equals("-0.26");\r
2858         (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
2859         (new Test("sub132")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal(".2234")).toString()).equals("-0.2234");\r
2860         (new Test("sub133")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal(".2")).toString()).equals("-0.2");\r
2861         (new Test("sub134")).ok=((new com.ibm.icu.math.BigDecimal(".0")).subtract(new com.ibm.icu.math.BigDecimal(".0008")).toString()).equals("-0.0008");\r
2862         // 0. on left\r
2863         (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
2864         (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
2865         (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
2866         (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
2867         (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
2868         (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
2869         (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
2870         (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
2871         (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
2872         (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
2873         (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
2874         (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
2875         (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
2876         (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
2877         (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
2878         // negatives of same\r
2879         (new Test("sub160")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-.1")).toString()).equals("0.1");\r
2880         (new Test("sub161")).ok=((new com.ibm.icu.math.BigDecimal("00")).subtract(new com.ibm.icu.math.BigDecimal("-.97983")).toString()).equals("0.97983");\r
2881         (new Test("sub162")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-.9")).toString()).equals("0.9");\r
2882         (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
2883         (new Test("sub164")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-.4")).toString()).equals("0.4");\r
2884         (new Test("sub165")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-.307")).toString()).equals("0.307");\r
2885         (new Test("sub166")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-.43822")).toString()).equals("0.43822");\r
2886         (new Test("sub167")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-.911")).toString()).equals("0.911");\r
2887         (new Test("sub168")).ok=((new com.ibm.icu.math.BigDecimal(".0")).subtract(new com.ibm.icu.math.BigDecimal("-.02")).toString()).equals("0.02");\r
2888         (new Test("sub169")).ok=((new com.ibm.icu.math.BigDecimal("00")).subtract(new com.ibm.icu.math.BigDecimal("-.392")).toString()).equals("0.392");\r
2889         (new Test("sub170")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-.26")).toString()).equals("0.26");\r
2890         (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
2891         (new Test("sub172")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-.2234")).toString()).equals("0.2234");\r
2892         (new Test("sub173")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-.2")).toString()).equals("0.2");\r
2893         (new Test("sub174")).ok=((new com.ibm.icu.math.BigDecimal(".0")).subtract(new com.ibm.icu.math.BigDecimal("-.0008")).toString()).equals("0.0008");\r
2894 \r
2895         // more fixed, LHS swaps [really same as testcases under add]\r
2896         (new Test("sub180")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-10")).subtract(zero).toString()).equals("-0.0000056267");\r
2897         (new Test("sub181")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-5")).subtract(zero).toString()).equals("-0.56267");\r
2898         (new Test("sub182")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-2")).subtract(zero).toString()).equals("-562.67");\r
2899         (new Test("sub183")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-1")).subtract(zero).toString()).equals("-5626.7");\r
2900         (new Test("sub185")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-0")).subtract(zero).toString()).equals("-56267");\r
2901 \r
2902         try {\r
2903             ten.subtract((com.ibm.icu.math.BigDecimal) null);\r
2904             flag = false;\r
2905         } catch (java.lang.NullPointerException $83) {\r
2906             flag = true;\r
2907         }/* checknull */\r
2908         (new Test("sub200")).ok = flag;\r
2909         try {\r
2910             ten.subtract(ten, (com.ibm.icu.math.MathContext) null);\r
2911             flag = false;\r
2912         } catch (java.lang.NullPointerException $84) {\r
2913             flag = true;\r
2914         }/* checknull2 */\r
2915         (new Test("sub201")).ok = flag;\r
2916 \r
2917         try {\r
2918             com.ibm.icu.math.BigDecimal.ONE.subtract(tenlong, mcld);\r
2919             flag = false;\r
2920         } catch (java.lang.ArithmeticException $85) {\r
2921             ae = $85;\r
2922             flag = (ae.getMessage()).equals("Too many digits:" + " "\r
2923                     + tenlong.toString());\r
2924         }/* checkdigits */\r
2925         (new Test("sub202")).ok = flag;\r
2926         try {\r
2927             tenlong.subtract(com.ibm.icu.math.BigDecimal.ONE, mcld);\r
2928             flag = false;\r
2929         } catch (java.lang.ArithmeticException $86) {\r
2930             ae = $86;\r
2931             flag = (ae.getMessage()).equals("Too many digits:" + " "\r
2932                     + tenlong.toString());\r
2933         }/* checkdigits */\r
2934         (new Test("sub203")).ok = flag;\r
2935         summary("subtract");\r
2936     }\r
2937 \r
2938     /* ----------------------------------------------------------------- */\r
2939 \r
2940     /* ----------------------------------------------------------------- */\r
2941     /* Other methods */\r
2942     /* ----------------------------------------------------------------- */\r
2943 \r
2944     /** Test the <code>BigDecimal.byteValue()</code> method. */\r
2945 \r
2946     public void diagbyteValue() {\r
2947         boolean flag = false;\r
2948         java.lang.String v = null;\r
2949         java.lang.ArithmeticException ae = null;\r
2950         java.lang.String badstrings[];\r
2951         int i = 0;\r
2952         java.lang.String norm = null;\r
2953 \r
2954         (new Test("byv001")).ok=((((byte)-128)))==((new com.ibm.icu.math.BigDecimal("-128")).byteValue());\r
2955         (new Test("byv002")).ok=((0))==((new com.ibm.icu.math.BigDecimal("0")).byteValue());\r
2956         (new Test("byv003")).ok=((1))==((new com.ibm.icu.math.BigDecimal("1")).byteValue());\r
2957         (new Test("byv004")).ok=((99))==((new com.ibm.icu.math.BigDecimal("99")).byteValue());\r
2958         (new Test("byv005")).ok=((127))==((new com.ibm.icu.math.BigDecimal("127")).byteValue());\r
2959         (new Test("byv006")).ok=((-128))==((new com.ibm.icu.math.BigDecimal("128")).byteValue());\r
2960         (new Test("byv007")).ok=((-127))==((new com.ibm.icu.math.BigDecimal("129")).byteValue());\r
2961         (new Test("byv008")).ok=((127))==((new com.ibm.icu.math.BigDecimal("-129")).byteValue());\r
2962         (new Test("byv009")).ok=((126))==((new com.ibm.icu.math.BigDecimal("-130")).byteValue());\r
2963         (new Test("byv010")).ok=((bmax))==((new com.ibm.icu.math.BigDecimal(bmax)).byteValue());\r
2964         (new Test("byv011")).ok=((bmin))==((new com.ibm.icu.math.BigDecimal(bmin)).byteValue());\r
2965         (new Test("byv012")).ok=((bneg))==((new com.ibm.icu.math.BigDecimal(bneg)).byteValue());\r
2966         (new Test("byv013")).ok=((bzer))==((new com.ibm.icu.math.BigDecimal(bzer)).byteValue());\r
2967         (new Test("byv014")).ok=((bpos))==((new com.ibm.icu.math.BigDecimal(bpos)).byteValue());\r
2968         (new Test("byv015")).ok=((bmin))==((new com.ibm.icu.math.BigDecimal(bmax+1)).byteValue());\r
2969         (new Test("byv016")).ok=((bmax))==((new com.ibm.icu.math.BigDecimal(bmin-1)).byteValue());\r
2970         \r
2971         (new Test("byv021")).ok=((((byte)-128)))==((new com.ibm.icu.math.BigDecimal("-128")).byteValueExact());\r
2972         (new Test("byv022")).ok=((0))==((new com.ibm.icu.math.BigDecimal("0")).byteValueExact());\r
2973         (new Test("byv023")).ok=((1))==((new com.ibm.icu.math.BigDecimal("1")).byteValueExact());\r
2974         (new Test("byv024")).ok=((99))==((new com.ibm.icu.math.BigDecimal("99")).byteValueExact());\r
2975         (new Test("byv025")).ok=((127))==((new com.ibm.icu.math.BigDecimal("127")).byteValueExact());\r
2976         (new Test("byv026")).ok=((bmax))==((new com.ibm.icu.math.BigDecimal(bmax)).byteValueExact());\r
2977         (new Test("byv027")).ok=((bmin))==((new com.ibm.icu.math.BigDecimal(bmin)).byteValueExact());\r
2978         (new Test("byv028")).ok=((bneg))==((new com.ibm.icu.math.BigDecimal(bneg)).byteValueExact());\r
2979         (new Test("byv029")).ok=((bzer))==((new com.ibm.icu.math.BigDecimal(bzer)).byteValueExact());\r
2980         (new Test("byv030")).ok=((bpos))==((new com.ibm.icu.math.BigDecimal(bpos)).byteValueExact());\r
2981         try {\r
2982             v = "-129";\r
2983             (new com.ibm.icu.math.BigDecimal(v)).byteValueExact();\r
2984             flag = false;\r
2985         } catch (java.lang.ArithmeticException $87) {\r
2986             ae = $87;\r
2987             flag = (ae.getMessage()).equals("Conversion overflow:" + " " + v);\r
2988         }\r
2989         (new Test("byv100")).ok = flag;\r
2990         try {\r
2991             v = "128";\r
2992             (new com.ibm.icu.math.BigDecimal(v)).byteValueExact();\r
2993             flag = false;\r
2994         } catch (java.lang.ArithmeticException $88) {\r
2995             ae = $88;\r
2996             flag = (ae.getMessage()).equals("Conversion overflow:" + " " + v);\r
2997         }\r
2998         (new Test("byv101")).ok = flag;\r
2999         try {\r
3000             v = "1.5";\r
3001             (new com.ibm.icu.math.BigDecimal(v)).byteValueExact();\r
3002             flag = false;\r
3003         } catch (java.lang.ArithmeticException $89) {\r
3004             ae = $89;\r
3005             flag = (ae.getMessage()).equals("Decimal part non-zero:" + " " + v);\r
3006         }\r
3007         (new Test("byv102")).ok = flag;\r
3008 \r
3009         badstrings = new java.lang.String[] {\r
3010                 "1234",\r
3011                 (new com.ibm.icu.math.BigDecimal(bmax)).add(one).toString(),\r
3012                 (new com.ibm.icu.math.BigDecimal(bmin)).subtract(one)\r
3013                         .toString(),\r
3014                 "170",\r
3015                 "270",\r
3016                 "370",\r
3017                 "470",\r
3018                 "570",\r
3019                 "670",\r
3020                 "770",\r
3021                 "870",\r
3022                 "970",\r
3023                 "-170",\r
3024                 "-270",\r
3025                 "-370",\r
3026                 "-470",\r
3027                 "-570",\r
3028                 "-670",\r
3029                 "-770",\r
3030                 "-870",\r
3031                 "-970",\r
3032                 (new com.ibm.icu.math.BigDecimal(bmin)).multiply(two)\r
3033                         .toString(),\r
3034                 (new com.ibm.icu.math.BigDecimal(bmax)).multiply(two)\r
3035                         .toString(),\r
3036                 (new com.ibm.icu.math.BigDecimal(bmin)).multiply(ten)\r
3037                         .toString(),\r
3038                 (new com.ibm.icu.math.BigDecimal(bmax)).multiply(ten)\r
3039                         .toString(), "-1234" }; // 220\r
3040         // 221\r
3041         // 222\r
3042         // 223\r
3043         // 224\r
3044         // 225\r
3045         // 226\r
3046         // 227\r
3047         // 228\r
3048         // 229\r
3049         // 230\r
3050         // 231\r
3051         // 232\r
3052         // 233\r
3053         // 234\r
3054         // 235\r
3055         // 236\r
3056         // 237\r
3057         // 238\r
3058         // 239\r
3059         // 240\r
3060         // 241\r
3061         // 242\r
3062         // 243\r
3063         // 244\r
3064         // 245\r
3065         {\r
3066             int $90 = badstrings.length;\r
3067             i = 0;\r
3068             for (; $90 > 0; $90--, i++) {\r
3069                 try {\r
3070                     v = badstrings[i];\r
3071                     (new com.ibm.icu.math.BigDecimal(v)).byteValueExact();\r
3072                     flag = false;\r
3073                 } catch (java.lang.ArithmeticException $91) {\r
3074                     ae = $91;\r
3075                     norm = (new com.ibm.icu.math.BigDecimal(v)).toString();\r
3076                     flag = (ae.getMessage()).equals("Conversion overflow:"\r
3077                             + " " + norm);\r
3078                 }\r
3079                 (new Test("byv" + (220 + i))).ok = flag;\r
3080             }\r
3081         }/* i */\r
3082 \r
3083         summary("byteValue+");\r
3084     }\r
3085 \r
3086     /* ----------------------------------------------------------------- */\r
3087 \r
3088     /**\r
3089      * Test the {@link com.ibm.icu.math.BigDecimal#compareTo(java.lang.Object)}\r
3090      * method.\r
3091      */\r
3092 \r
3093     public void diagcomparetoObj() {\r
3094         boolean flag = false;\r
3095         com.ibm.icu.math.BigDecimal d;\r
3096         com.ibm.icu.math.BigDecimal long1;\r
3097         com.ibm.icu.math.BigDecimal long2;\r
3098 \r
3099         d = new com.ibm.icu.math.BigDecimal(17);\r
3100         (new Test("cto001")).ok = (d\r
3101                 .compareTo((java.lang.Object) (new com.ibm.icu.math.BigDecimal(\r
3102                         66)))) == (-1);\r
3103         (new Test("cto002")).ok = (d\r
3104                 .compareTo((java.lang.Object) ((new com.ibm.icu.math.BigDecimal(\r
3105                         10)).add(new com.ibm.icu.math.BigDecimal(7))))) == 0;\r
3106         (new Test("cto003")).ok = (d\r
3107                 .compareTo((java.lang.Object) (new com.ibm.icu.math.BigDecimal(\r
3108                         10)))) == 1;\r
3109         long1 = new com.ibm.icu.math.BigDecimal("12345678903");\r
3110         long2 = new com.ibm.icu.math.BigDecimal("12345678900");\r
3111         (new Test("cto004")).ok = (long1.compareTo((java.lang.Object) long2)) == 1;\r
3112         (new Test("cto005")).ok = (long2.compareTo((java.lang.Object) long1)) == (-1);\r
3113         (new Test("cto006")).ok = (long2.compareTo((java.lang.Object) long2)) == 0;\r
3114         try {\r
3115             d.compareTo((java.lang.Object) null);\r
3116             flag = false;\r
3117         } catch (java.lang.NullPointerException $92) {\r
3118             flag = true; // should get here\r
3119         }\r
3120         (new Test("cto101")).ok = flag;\r
3121         try {\r
3122             d.compareTo((java.lang.Object) "foo");\r
3123             flag = false;\r
3124         } catch (java.lang.ClassCastException $93) {\r
3125             flag = true; // should get here\r
3126         }\r
3127         (new Test("cto102")).ok = flag;\r
3128         summary("compareTo(Obj)");\r
3129     }\r
3130 \r
3131     /* ----------------------------------------------------------------- */\r
3132 \r
3133     /** Test the {@link com.ibm.icu.math.BigDecimal#doubleValue} method. */\r
3134 \r
3135     public void diagdoublevalue() {\r
3136         java.lang.String val;\r
3137         // 1999.03.07 Infinities no longer errors\r
3138         val = "-1";\r
3139         (new Test("dov001")).ok = ((new com.ibm.icu.math.BigDecimal(val)).doubleValue()) == ((new java.lang.Double(val)).doubleValue());\r
3140         val = "-0.1";\r
3141         (new Test("dov002")).ok = ((new com.ibm.icu.math.BigDecimal(val)).doubleValue()) == ((new java.lang.Double(val)).doubleValue());\r
3142         val = "0";\r
3143         (new Test("dov003")).ok = ((new com.ibm.icu.math.BigDecimal(val)).doubleValue()) == ((new java.lang.Double(val)).doubleValue());\r
3144         val = "0.1";\r
3145         (new Test("dov004")).ok = ((new com.ibm.icu.math.BigDecimal(val)).doubleValue()) == ((new java.lang.Double(val)).doubleValue());\r
3146         val = "1";\r
3147         (new Test("dov005")).ok = ((new com.ibm.icu.math.BigDecimal(val)).doubleValue()) == ((new java.lang.Double(val)).doubleValue());\r
3148         val = "1e1000";\r
3149         (new Test("dov006")).ok = ((new com.ibm.icu.math.BigDecimal(val)).doubleValue()) == java.lang.Double.POSITIVE_INFINITY;\r
3150         val = "-1e1000";\r
3151         (new Test("dov007")).ok = ((new com.ibm.icu.math.BigDecimal(val)).doubleValue()) == java.lang.Double.NEGATIVE_INFINITY;\r
3152         summary("doubleValue");\r
3153     }\r
3154 \r
3155     /* ----------------------------------------------------------------- */\r
3156 \r
3157     /** Test the {@link com.ibm.icu.math.BigDecimal#equals} method. */\r
3158 \r
3159     public void diagequals() {\r
3160         com.ibm.icu.math.BigDecimal d;\r
3161         d = new com.ibm.icu.math.BigDecimal(17);\r
3162         (new Test("equ001")).ok = (!(d.equals((java.lang.Object) null)));\r
3163         (new Test("equ002")).ok = (!(d.equals((java.lang.Object) "foo")));\r
3164         (new Test("equ003")).ok = (!(d\r
3165                 .equals((java.lang.Object) (new com.ibm.icu.math.BigDecimal(66)))));\r
3166         (new Test("equ004")).ok = d.equals((java.lang.Object) d);\r
3167         (new Test("equ005")).ok = d\r
3168                 .equals((java.lang.Object) ((new com.ibm.icu.math.BigDecimal(10))\r
3169                         .add(new com.ibm.icu.math.BigDecimal(7))));\r
3170         summary("equals");\r
3171     }\r
3172 \r
3173     /* ----------------------------------------------------------------- */\r
3174 \r
3175     /** Test the {@link com.ibm.icu.math.BigDecimal#floatValue} method. */\r
3176 \r
3177     public void diagfloatvalue() {\r
3178         java.lang.String val;\r
3179         // 1999.03.07 Infinities no longer errors\r
3180         val = "-1";\r
3181         (new Test("flv001")).ok = ((new com.ibm.icu.math.BigDecimal(val)).floatValue()) == ((new java.lang.Float(val)).floatValue());\r
3182         val = "-0.1";\r
3183         (new Test("flv002")).ok = ((new com.ibm.icu.math.BigDecimal(val)).floatValue()) == ((new java.lang.Float(val)).floatValue());\r
3184         val = "0";\r
3185         (new Test("flv003")).ok = ((new com.ibm.icu.math.BigDecimal(val)).floatValue()) == ((new java.lang.Float(val)).floatValue());\r
3186         val = "0.1";\r
3187         (new Test("flv004")).ok = ((new com.ibm.icu.math.BigDecimal(val)).floatValue()) == ((new java.lang.Float(val)).floatValue());\r
3188         val = "1";\r
3189         (new Test("flv005")).ok = ((new com.ibm.icu.math.BigDecimal(val)).floatValue()) == ((new java.lang.Float(val)).floatValue());\r
3190         val = "1e200";\r
3191         (new Test("flv006")).ok = ((new com.ibm.icu.math.BigDecimal(val)).floatValue()) == java.lang.Float.POSITIVE_INFINITY;\r
3192         val = "-1e200";\r
3193         (new Test("flv007")).ok = ((new com.ibm.icu.math.BigDecimal(val)).floatValue()) == java.lang.Float.NEGATIVE_INFINITY;\r
3194         val = "1e1000";\r
3195         (new Test("flv008")).ok = ((new com.ibm.icu.math.BigDecimal(val)).floatValue()) == java.lang.Float.POSITIVE_INFINITY;\r
3196         val = "-1e1000";\r
3197         (new Test("flv009")).ok = ((new com.ibm.icu.math.BigDecimal(val)).floatValue()) == java.lang.Float.NEGATIVE_INFINITY;\r
3198         summary("floatValue");\r
3199     }\r
3200 \r
3201     /* ----------------------------------------------------------------- */\r
3202 \r
3203     /** Test the {@link com.ibm.icu.math.BigDecimal#format} method. */\r
3204 \r
3205     public void diagformat() {\r
3206         boolean flag = false;\r
3207         int eng;\r
3208         int sci;\r
3209         com.ibm.icu.math.BigDecimal d04;\r
3210         com.ibm.icu.math.BigDecimal d05;\r
3211         com.ibm.icu.math.BigDecimal d06;\r
3212         com.ibm.icu.math.BigDecimal d15;\r
3213         java.lang.IllegalArgumentException iae = null;\r
3214         com.ibm.icu.math.BigDecimal d050;\r
3215         com.ibm.icu.math.BigDecimal d150;\r
3216         com.ibm.icu.math.BigDecimal m050;\r
3217         com.ibm.icu.math.BigDecimal m150;\r
3218         com.ibm.icu.math.BigDecimal d051;\r
3219         com.ibm.icu.math.BigDecimal d151;\r
3220         com.ibm.icu.math.BigDecimal d000;\r
3221         com.ibm.icu.math.BigDecimal d500;\r
3222         java.lang.ArithmeticException ae = null;\r
3223         // 1999.02.09 now only two signatures for format(), so some tests below\r
3224         // may now be redundant\r
3225 \r
3226         (new Test("for001")).ok=((new com.ibm.icu.math.BigDecimal("12.3")).format(-1,-1)).equals("12.3");\r
3227         (new Test("for002")).ok=((new com.ibm.icu.math.BigDecimal("-12.73")).format(-1,-1)).equals("-12.73");\r
3228         (new Test("for003")).ok=((new com.ibm.icu.math.BigDecimal("0.000")).format(-1,-1)).equals("0.000");\r
3229         (new Test("for004")).ok=((new com.ibm.icu.math.BigDecimal("3E+3")).format(-1,-1)).equals("3000");\r
3230         (new Test("for005")).ok=((new com.ibm.icu.math.BigDecimal("3")).format(4,-1)).equals("   3");\r
3231         (new Test("for006")).ok=((new com.ibm.icu.math.BigDecimal("1.73")).format(4,0)).equals("   2");\r
3232         (new Test("for007")).ok=((new com.ibm.icu.math.BigDecimal("1.73")).format(4,1)).equals("   1.7");\r
3233         (new Test("for008")).ok=((new com.ibm.icu.math.BigDecimal("1.75")).format(4,1)).equals("   1.8");\r
3234         (new Test("for009")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).format(4,1)).equals("   0.5");\r
3235         (new Test("for010")).ok=((new com.ibm.icu.math.BigDecimal("0.05")).format(4,1)).equals("   0.1");\r
3236         (new Test("for011")).ok=((new com.ibm.icu.math.BigDecimal("0.04")).format(4,1)).equals("   0.0");\r
3237         (new Test("for012")).ok=((new com.ibm.icu.math.BigDecimal("0")).format(4,0)).equals("   0");\r
3238         (new Test("for013")).ok=((new com.ibm.icu.math.BigDecimal("0")).format(4,1)).equals("   0.0");\r
3239         (new Test("for014")).ok=((new com.ibm.icu.math.BigDecimal("0")).format(4,2)).equals("   0.00");\r
3240         (new Test("for015")).ok=((new com.ibm.icu.math.BigDecimal("0")).format(4,3)).equals("   0.000");\r
3241         (new Test("for016")).ok=((new com.ibm.icu.math.BigDecimal("0")).format(4,4)).equals("   0.0000");\r
3242         (new Test("for017")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).format(4,0)).equals("   0");\r
3243         (new Test("for018")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).format(4,1)).equals("   0.0");\r
3244         (new Test("for019")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).format(4,2)).equals("   0.01");\r
3245         (new Test("for020")).ok=((new com.ibm.icu.math.BigDecimal("0.004")).format(4,2)).equals("   0.00");\r
3246         (new Test("for021")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).format(4,3)).equals("   0.005");\r
3247         (new Test("for022")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).format(4,4)).equals("   0.0050");\r
3248         \r
3249         (new Test("for023")).ok=((new com.ibm.icu.math.BigDecimal("1.73")).format(4,2)).equals("   1.73");\r
3250         (new Test("for024")).ok=((new com.ibm.icu.math.BigDecimal("1.73")).format(4,3)).equals("   1.730");\r
3251         (new Test("for025")).ok=((new com.ibm.icu.math.BigDecimal("-.76")).format(4,1)).equals("  -0.8");\r
3252         (new Test("for026")).ok=((new com.ibm.icu.math.BigDecimal("-12.73")).format(-1,4)).equals("-12.7300");\r
3253         \r
3254         (new Test("for027")).ok=((new com.ibm.icu.math.BigDecimal("3.03")).format(4,-1)).equals("   3.03");\r
3255         (new Test("for028")).ok=((new com.ibm.icu.math.BigDecimal("3.03")).format(4,1)).equals("   3.0");\r
3256         (new Test("for029")).ok=((new com.ibm.icu.math.BigDecimal("3.03")).format(4,-1,3,-1,-1,-1)).equals("   3.03     ");\r
3257         (new Test("for030")).ok=((new com.ibm.icu.math.BigDecimal("3.03")).format(-1,-1,3,-1,-1,-1)).equals("3.03     ");\r
3258         (new Test("for031")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,-1,-1,4,-1,-1)).equals("1.234573E+4");\r
3259         (new Test("for032")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,-1,-1,5,-1,-1)).equals("12345.73");\r
3260         (new Test("for033")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,-1,-1,6,-1,-1)).equals("12345.73");\r
3261         \r
3262         (new Test("for034")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,8,-1,3,-1,-1)).equals("1.23457300E+4");\r
3263         (new Test("for035")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,7,-1,3,-1,-1)).equals("1.2345730E+4");\r
3264         (new Test("for036")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,6,-1,3,-1,-1)).equals("1.234573E+4");\r
3265         (new Test("for037")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,5,-1,3,-1,-1)).equals("1.23457E+4");\r
3266         (new Test("for038")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,4,-1,3,-1,-1)).equals("1.2346E+4");\r
3267         (new Test("for039")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,3,-1,3,-1,-1)).equals("1.235E+4");\r
3268         (new Test("for040")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,2,-1,3,-1,-1)).equals("1.23E+4");\r
3269         (new Test("for041")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,1,-1,3,-1,-1)).equals("1.2E+4");\r
3270         (new Test("for042")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,0,-1,3,-1,-1)).equals("1E+4");\r
3271         \r
3272         (new Test("for043")).ok=((new com.ibm.icu.math.BigDecimal("99999.99")).format(-1,6,-1,3,-1,-1)).equals("9.999999E+4");\r
3273         (new Test("for044")).ok=((new com.ibm.icu.math.BigDecimal("99999.99")).format(-1,5,-1,3,-1,-1)).equals("1.00000E+5");\r
3274         (new Test("for045")).ok=((new com.ibm.icu.math.BigDecimal("99999.99")).format(-1,2,-1,3,-1,-1)).equals("1.00E+5");\r
3275         (new Test("for046")).ok=((new com.ibm.icu.math.BigDecimal("99999.99")).format(-1,0,-1,3,-1,-1)).equals("1E+5");\r
3276         (new Test("for047")).ok=((new com.ibm.icu.math.BigDecimal("99999.99")).format(3,0,-1,3,-1,-1)).equals("  1E+5");\r
3277         \r
3278         (new Test("for048")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,-1,2,2,-1,-1)).equals("1.234573E+04");\r
3279         (new Test("for049")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,3,-1,0,-1,-1)).equals("1.235E+4");\r
3280         (new Test("for050")).ok=((new com.ibm.icu.math.BigDecimal("1.234573")).format(-1,3,-1,0,-1,-1)).equals("1.235");\r
3281         (new Test("for051")).ok=((new com.ibm.icu.math.BigDecimal("123.45")).format(-1,3,2,0,-1,-1)).equals("1.235E+02");\r
3282         \r
3283         (new Test("for052")).ok=((new com.ibm.icu.math.BigDecimal("0.444")).format(-1,0)).equals("0");\r
3284         (new Test("for053")).ok=((new com.ibm.icu.math.BigDecimal("-0.444")).format(-1,0)).equals("0");\r
3285         (new Test("for054")).ok=((new com.ibm.icu.math.BigDecimal("0.4")).format(-1,0)).equals("0");\r
3286         (new Test("for055")).ok=((new com.ibm.icu.math.BigDecimal("-0.4")).format(-1,0)).equals("0");\r
3287 \r
3288         eng = com.ibm.icu.math.MathContext.ENGINEERING;\r
3289         sci = com.ibm.icu.math.MathContext.SCIENTIFIC;\r
3290         (new Test("for060")).ok=((new com.ibm.icu.math.BigDecimal("1234.5")).format(-1,3,2,0,eng,-1)).equals("1.235E+03");\r
3291         (new Test("for061")).ok=((new com.ibm.icu.math.BigDecimal("12345")).format(-1,3,3,0,eng,-1)).equals("12.345E+003");\r
3292         (new Test("for062")).ok=((new com.ibm.icu.math.BigDecimal("12345")).format(-1,3,3,0,sci,-1)).equals("1.235E+004");\r
3293         (new Test("for063")).ok=((new com.ibm.icu.math.BigDecimal("1234.5")).format(4,3,2,0,eng,-1)).equals("   1.235E+03");\r
3294         (new Test("for064")).ok=((new com.ibm.icu.math.BigDecimal("12345")).format(5,3,3,0,eng,-1)).equals("   12.345E+003");\r
3295         (new Test("for065")).ok=((new com.ibm.icu.math.BigDecimal("12345")).format(6,3,3,0,sci,-1)).equals("     1.235E+004");\r
3296 \r
3297         (new Test("for066")).ok=((new com.ibm.icu.math.BigDecimal("1.2345")).format(-1,3,2,0,-1,-1)).equals("1.235    ");\r
3298         (new Test("for067")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,-1,3,6,-1,-1)).equals("12345.73     ");\r
3299         (new Test("for068")).ok=((new com.ibm.icu.math.BigDecimal("12345e+5")).format(-1,0)).equals("1234500000");\r
3300         (new Test("for069")).ok=((new com.ibm.icu.math.BigDecimal("12345e+5")).format(-1,1)).equals("1234500000.0");\r
3301         (new Test("for070")).ok=((new com.ibm.icu.math.BigDecimal("12345e+5")).format(-1,2)).equals("1234500000.00");\r
3302         (new Test("for071")).ok=((new com.ibm.icu.math.BigDecimal("12345e+5")).format(-1,3)).equals("1234500000.000");\r
3303         (new Test("for072")).ok=((new com.ibm.icu.math.BigDecimal("12345e+5")).format(-1,4)).equals("1234500000.0000");\r
3304 \r
3305         // some from ANSI Dallas [Nov 1998]\r
3306         (new Test("for073")).ok=((new com.ibm.icu.math.BigDecimal("99.999")).format(-1,2,-1,2,-1,-1)).equals("100.00");\r
3307         (new Test("for074")).ok=((new com.ibm.icu.math.BigDecimal("0.99999")).format(-1,4,2,2,-1,-1)).equals("1.0000    ");\r
3308 \r
3309         // try some rounding modes [default ROUND_HALF_UP widely tested above]\r
3310         // the first few also tests that defaults are accepted for the others\r
3311         d04 = new com.ibm.icu.math.BigDecimal("0.04");\r
3312         d05 = new com.ibm.icu.math.BigDecimal("0.05");\r
3313         d06 = new com.ibm.icu.math.BigDecimal("0.06");\r
3314         d15 = new com.ibm.icu.math.BigDecimal("0.15");\r
3315         (new Test("for080")).ok = (d05.format(-1, 1)).equals("0.1");\r
3316         (new Test("for081")).ok = (d05.format(-1, 1, -1, -1, -1,\r
3317                 com.ibm.icu.math.MathContext.ROUND_HALF_UP)).equals("0.1");\r
3318         (new Test("for082")).ok = (d05.format(-1, 1, -1, -1, -1, -1))\r
3319                 .equals("0.1");\r
3320         (new Test("for083")).ok = (d05.format(-1, -1, -1, -1, -1, -1))\r
3321                 .equals("0.05");\r
3322         (new Test("for084")).ok = (d05.format(-1, -1)).equals("0.05");\r
3323         try {\r
3324             d05.format(-1, -1, -1, -1, -1, 30); // bad mode\r
3325             flag = false; // shouldn't get here\r
3326         } catch (java.lang.IllegalArgumentException $94) {\r
3327             iae = $94;\r
3328             flag = (iae.getMessage()).equals("Bad argument 6 to format: 30");\r
3329         }\r
3330         (new Test("for085")).ok = flag;\r
3331 \r
3332         (new Test("for090")).ok=(d04.format(-1,1)).equals("0.0");\r
3333         (new Test("for091")).ok=(d06.format(-1,1)).equals("0.1");\r
3334         (new Test("for092")).ok=(d04.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN)).equals("0.0");\r
3335         (new Test("for093")).ok=(d05.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN)).equals("0.0");\r
3336         (new Test("for094")).ok=(d06.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN)).equals("0.1");\r
3337 \r
3338         (new Test("for095")).ok=(d04.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN)).equals("0.0");\r
3339         (new Test("for096")).ok=(d05.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN)).equals("0.0");\r
3340         (new Test("for097")).ok=(d06.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN)).equals("0.1");\r
3341         (new Test("for098")).ok=(d15.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN)).equals("0.2");\r
3342         d050 = new com.ibm.icu.math.BigDecimal("0.050");\r
3343         d150 = new com.ibm.icu.math.BigDecimal("0.150");\r
3344         (new Test("for099")).ok=(d050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN)).equals("0.0");\r
3345         (new Test("for100")).ok=(d150.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN)).equals("0.2");\r
3346         m050 = new com.ibm.icu.math.BigDecimal("-0.050");\r
3347         m150 = new com.ibm.icu.math.BigDecimal("-0.150");\r
3348         (new Test("for101")).ok=(m050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN)).equals("0.0");\r
3349         (new Test("for102")).ok=(m150.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN)).equals("-0.2");\r
3350         d051 = new com.ibm.icu.math.BigDecimal("0.051");\r
3351         d151 = new com.ibm.icu.math.BigDecimal("0.151");\r
3352         (new Test("for103")).ok=(d051.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN)).equals("0.1");\r
3353         (new Test("for104")).ok=(d151.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN)).equals("0.2");\r
3354         \r
3355         (new Test("for105")).ok=(m050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_CEILING)).equals("0.0");\r
3356         (new Test("for106")).ok=(m150.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_CEILING)).equals("-0.1");\r
3357         (new Test("for107")).ok=(d050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_CEILING)).equals("0.1");\r
3358         (new Test("for108")).ok=(d150.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_CEILING)).equals("0.2");\r
3359         \r
3360         (new Test("for109")).ok=(m050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_FLOOR)).equals("-0.1");\r
3361         (new Test("for110")).ok=(m150.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_FLOOR)).equals("-0.2");\r
3362         (new Test("for111")).ok=(d050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_FLOOR)).equals("0.0");\r
3363         (new Test("for112")).ok=(d150.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_FLOOR)).equals("0.1");\r
3364         \r
3365         (new Test("for113")).ok=(m050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UP)).equals("-0.1");\r
3366         (new Test("for114")).ok=(m150.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UP)).equals("-0.2");\r
3367         (new Test("for115")).ok=(d050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UP)).equals("0.1");\r
3368         (new Test("for116")).ok=(d150.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UP)).equals("0.2");\r
3369         \r
3370         (new Test("for117")).ok=(m050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_DOWN)).equals("0.0");\r
3371         (new Test("for118")).ok=(m150.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_DOWN)).equals("-0.1");\r
3372         (new Test("for119")).ok=(d050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_DOWN)).equals("0.0");\r
3373         (new Test("for120")).ok=(d150.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_DOWN)).equals("0.1");\r
3374 \r
3375         d000 = new com.ibm.icu.math.BigDecimal("0.000");\r
3376         d500 = new com.ibm.icu.math.BigDecimal("0.500");\r
3377         (new Test("for121")).ok=(d000.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY)).equals("0.0");\r
3378         (new Test("for122")).ok=(d000.format(-1,2,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY)).equals("0.00");\r
3379         (new Test("for123")).ok=(d000.format(-1,3,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY)).equals("0.000");\r
3380         try { // this should trap..\r
3381             d050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY);\r
3382             flag = false;\r
3383         } catch (java.lang.ArithmeticException $95) {\r
3384             ae = $95;\r
3385             flag = (ae.getMessage()).equals("Rounding necessary");\r
3386         }\r
3387         (new Test("for124")).ok=flag;\r
3388         (new Test("for125")).ok=(d050.format(-1,2,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY)).equals("0.05");\r
3389         (new Test("for126")).ok=(d050.format(-1,3,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY)).equals("0.050");\r
3390         (new Test("for127")).ok=(d500.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY)).equals("0.5");\r
3391         (new Test("for128")).ok=(d500.format(-1,2,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY)).equals("0.50");\r
3392         (new Test("for129")).ok=(d500.format(-1,3,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY)).equals("0.500");\r
3393 \r
3394         // bad negs --\r
3395         try {\r
3396             d050.format(-2, -1, -1, -1, -1, -1);\r
3397             flag = false;\r
3398         } catch (java.lang.IllegalArgumentException $96) {\r
3399             flag = true;\r
3400         }\r
3401         (new Test("for131")).ok = flag;\r
3402         try {\r
3403             d050.format(-1, -2, -1, -1, -1, -1);\r
3404             flag = false;\r
3405         } catch (java.lang.IllegalArgumentException $97) {\r
3406             flag = true;\r
3407         }\r
3408         (new Test("for132")).ok = flag;\r
3409         try {\r
3410             d050.format(-1, -1, -2, -1, -1, -1);\r
3411             flag = false;\r
3412         } catch (java.lang.IllegalArgumentException $98) {\r
3413             flag = true;\r
3414         }\r
3415         (new Test("for133")).ok = flag;\r
3416         try {\r
3417             d050.format(-1, -1, -1, -2, -1, -1);\r
3418             flag = false;\r
3419         } catch (java.lang.IllegalArgumentException $99) {\r
3420             flag = true;\r
3421         }\r
3422         (new Test("for134")).ok = flag;\r
3423         try {\r
3424             d050.format(-1, -1, -1, -1, -2, -1);\r
3425             flag = false;\r
3426         } catch (java.lang.IllegalArgumentException $100) {\r
3427             flag = true;\r
3428         }\r
3429         (new Test("for135")).ok = flag;\r
3430         try {\r
3431             d050.format(-1, -1, -1, -1, -1, -2);\r
3432             flag = false;\r
3433         } catch (java.lang.IllegalArgumentException $101) {\r
3434             flag = true;\r
3435         }\r
3436         (new Test("for136")).ok = flag;\r
3437 \r
3438         summary("format");\r
3439     }\r
3440 \r
3441     /* ----------------------------------------------------------------- */\r
3442 \r
3443     /** Test the {@link com.ibm.icu.math.BigDecimal#hashCode} method. */\r
3444 \r
3445     public void diaghashcode() {\r
3446         java.lang.String hs;\r
3447         com.ibm.icu.math.BigDecimal d;\r
3448         hs = "27827817";\r
3449         d = new com.ibm.icu.math.BigDecimal(hs);\r
3450         (new Test("has001")).ok = (d.hashCode()) == (hs.hashCode());\r
3451         hs = "1.265E+200";\r
3452         d = new com.ibm.icu.math.BigDecimal(hs);\r
3453         (new Test("has002")).ok = (d.hashCode()) == (hs.hashCode());\r
3454         hs = "126.5E+200";\r
3455         d = new com.ibm.icu.math.BigDecimal(hs);\r
3456         (new Test("has003")).ok = (d.hashCode()) != (hs.hashCode());\r
3457         summary("hashCode");\r
3458     }\r
3459 \r
3460     /* ----------------------------------------------------------------- */\r
3461 \r
3462     /** Test the {@link com.ibm.icu.math.BigDecimal#intValue} method. */\r
3463 \r
3464     public void diagintvalue() {\r
3465         boolean flag = false;\r
3466         java.lang.String v = null;\r
3467         java.lang.ArithmeticException ae = null;\r
3468         java.lang.String badstrings[];\r
3469         int i = 0;\r
3470         java.lang.String norm = null;\r
3471         com.ibm.icu.math.BigDecimal dimax;\r
3472         com.ibm.icu.math.BigDecimal num = null;\r
3473         com.ibm.icu.math.BigDecimal dv = null;\r
3474         com.ibm.icu.math.BigDecimal dimin;\r
3475 \r
3476         // intValue --\r
3477 \r
3478         (new Test("inv001")).ok=imin==((new com.ibm.icu.math.BigDecimal(imin)).intValue());\r
3479         (new Test("inv002")).ok=((99))==((new com.ibm.icu.math.BigDecimal("99")).intValue());\r
3480         (new Test("inv003")).ok=((1))==((new com.ibm.icu.math.BigDecimal("1")).intValue());\r
3481         (new Test("inv004")).ok=((0))==((new com.ibm.icu.math.BigDecimal("0")).intValue());\r
3482         (new Test("inv005")).ok=((-1))==((new com.ibm.icu.math.BigDecimal("-1")).intValue());\r
3483         (new Test("inv006")).ok=((-99))==((new com.ibm.icu.math.BigDecimal("-99")).intValue());\r
3484         (new Test("inv007")).ok=imax==((new com.ibm.icu.math.BigDecimal(imax)).intValue());\r
3485         (new Test("inv008")).ok=((5))==((new com.ibm.icu.math.BigDecimal("5.0")).intValue());\r
3486         (new Test("inv009")).ok=((5))==((new com.ibm.icu.math.BigDecimal("5.3")).intValue());\r
3487         (new Test("inv010")).ok=((5))==((new com.ibm.icu.math.BigDecimal("5.5")).intValue());\r
3488         (new Test("inv011")).ok=((5))==((new com.ibm.icu.math.BigDecimal("5.7")).intValue());\r
3489         (new Test("inv012")).ok=((5))==((new com.ibm.icu.math.BigDecimal("5.9")).intValue());\r
3490         (new Test("inv013")).ok=((-5))==((new com.ibm.icu.math.BigDecimal("-5.0")).intValue());\r
3491         (new Test("inv014")).ok=((-5))==((new com.ibm.icu.math.BigDecimal("-5.3")).intValue());\r
3492         (new Test("inv015")).ok=((-5))==((new com.ibm.icu.math.BigDecimal("-5.5")).intValue());\r
3493         (new Test("inv016")).ok=((-5))==((new com.ibm.icu.math.BigDecimal("-5.7")).intValue());\r
3494         (new Test("inv017")).ok=((-5))==((new com.ibm.icu.math.BigDecimal("-5.9")).intValue());\r
3495         (new Test("inv018")).ok=((new com.ibm.icu.math.BigDecimal("88888888888")).intValue())==(-1305424328); // ugh\r
3496         (new Test("inv019")).ok=((new com.ibm.icu.math.BigDecimal("-88888888888")).intValue())==1305424328; // ugh\r
3497         (new Test("inv020")).ok=((imin))==((new com.ibm.icu.math.BigDecimal((((long)imax))+1)).intValue());\r
3498         (new Test("inv021")).ok=((imax))==((new com.ibm.icu.math.BigDecimal((((long)imin))-1)).intValue());\r
3499 \r
3500         // intValueExact --\r
3501 \r
3502         (new Test("inv101")).ok=imin==((new com.ibm.icu.math.BigDecimal(imin)).intValueExact());\r
3503         (new Test("inv102")).ok=((99))==((new com.ibm.icu.math.BigDecimal("99")).intValue());\r
3504         (new Test("inv103")).ok=((1))==((new com.ibm.icu.math.BigDecimal("1")).intValue());\r
3505         (new Test("inv104")).ok=((0))==((new com.ibm.icu.math.BigDecimal("0")).intValue());\r
3506         (new Test("inv105")).ok=((-1))==((new com.ibm.icu.math.BigDecimal("-1")).intValue());\r
3507         (new Test("inv106")).ok=((-99))==((new com.ibm.icu.math.BigDecimal("-99")).intValue());\r
3508         (new Test("inv107")).ok=imax==((new com.ibm.icu.math.BigDecimal(imax)).intValue());\r
3509         (new Test("inv108")).ok=((5))==((new com.ibm.icu.math.BigDecimal("5.0")).intValue());\r
3510         (new Test("inv109")).ok=((-5))==((new com.ibm.icu.math.BigDecimal("-5.0")).intValue());\r
3511         (new Test("inv110")).ok=imax==((new com.ibm.icu.math.BigDecimal(imax)).intValueExact());\r
3512 \r
3513         try {\r
3514             v = "-88588688888";\r
3515             (new com.ibm.icu.math.BigDecimal(v)).intValueExact();\r
3516             flag = false;\r
3517         } catch (java.lang.ArithmeticException $102) {\r
3518             ae = $102;\r
3519             flag = (ae.getMessage()).equals("Conversion overflow:" + " " + v);\r
3520         }\r
3521         (new Test("inv200")).ok = flag;\r
3522 \r
3523         // this one could raise either overflow or bad decimal part\r
3524         try {\r
3525             v = "88088818888.00001";\r
3526             (new com.ibm.icu.math.BigDecimal(v)).intValueExact();\r
3527             flag = false;\r
3528         } catch (java.lang.ArithmeticException $103) {\r
3529             flag = true;\r
3530         }\r
3531         (new Test("inv201")).ok = flag;\r
3532 \r
3533         // 1999.10.28: the testcases marked '*' failed\r
3534         badstrings = new java.lang.String[] {\r
3535                 "12345678901",\r
3536                 (new com.ibm.icu.math.BigDecimal(imax)).add(one).toString(),\r
3537                 (new com.ibm.icu.math.BigDecimal(imin)).subtract(one)\r
3538                         .toString(),\r
3539                 "3731367293",\r
3540                 "4731367293",\r
3541                 "5731367293",\r
3542                 "6731367293",\r
3543                 "7731367293",\r
3544                 "8731367293",\r
3545                 "9731367293",\r
3546                 "-3731367293",\r
3547                 "-4731367293",\r
3548                 "-5731367293",\r
3549                 "-6731367293",\r
3550                 "-7731367293",\r
3551                 "-8731367293",\r
3552                 "-9731367293",\r
3553                 (new com.ibm.icu.math.BigDecimal(imin)).multiply(two)\r
3554                         .toString(),\r
3555                 (new com.ibm.icu.math.BigDecimal(imax)).multiply(two)\r
3556                         .toString(),\r
3557                 (new com.ibm.icu.math.BigDecimal(imin)).multiply(ten)\r
3558                         .toString(),\r
3559                 (new com.ibm.icu.math.BigDecimal(imax)).multiply(ten)\r
3560                         .toString(), "4731367293", "4831367293", "4931367293",\r
3561                 "5031367293", "5131367293", "5231367293", "5331367293",\r
3562                 "5431367293", "5531367293", "5631367293", "5731367293",\r
3563                 "5831367293", "5931367293", "6031367293", "6131367293",\r
3564                 "6231367293", "6331367293", "6431367293", "6531367293",\r
3565                 "6631367293", "6731367293", "2200000000", "2300000000",\r
3566                 "2400000000", "2500000000", "2600000000", "2700000000",\r
3567                 "2800000000", "2900000000", "-2200000000", "-2300000000",\r
3568                 "-2400000000", "-2500000000", "-2600000000", "-2700000000",\r
3569                 "-2800000000", "-2900000000", "25E+8", "-25E+8", "-12345678901" }; // 220\r
3570         // 221\r
3571         // 222\r
3572         // 223\r
3573         // 224\r
3574         // 225 *\r
3575         // 226\r
3576         // 227\r
3577         // 228\r
3578         // 229 *\r
3579         // 230\r
3580         // 231\r
3581         // 232 *\r
3582         // 233\r
3583         // 234\r
3584         // 235\r
3585         // 236 *\r
3586         // 237\r
3587         // 238\r
3588         // 239\r
3589         // 240\r
3590         // 241\r
3591         // 242 *\r
3592         // 243 *\r
3593         // 244 *\r
3594         // 245 *\r
3595         // 246 *\r
3596         // 247 *\r
3597         // 248 *\r
3598         // 249 *\r
3599         // 250 *\r
3600         // 251 *\r
3601         // 252 *\r
3602         // 253 *\r
3603         // 254 *\r
3604         // 255 *\r
3605         // 256 *\r
3606         // 257 *\r
3607         // 258 *\r
3608         // 259\r
3609         // 260\r
3610         // 261\r
3611         // 262\r
3612         // 263\r
3613         // 264\r
3614         // 265\r
3615         // 266\r
3616         // 267\r
3617         // 268\r
3618         // 269\r
3619         // 270\r
3620         // 271\r
3621         // 272\r
3622         // 273\r
3623         // 274\r
3624         // 275\r
3625         // 276\r
3626         // 277\r
3627         // 278\r
3628         // 279\r
3629         // 280\r
3630         {\r
3631             int $104 = badstrings.length;\r
3632             i = 0;\r
3633             for (; $104 > 0; $104--, i++) {\r
3634                 try {\r
3635                     v = badstrings[i];\r
3636                     (new com.ibm.icu.math.BigDecimal(v)).intValueExact();\r
3637                     flag = false;\r
3638                 } catch (java.lang.ArithmeticException $105) {\r
3639                     ae = $105;\r
3640                     norm = (new com.ibm.icu.math.BigDecimal(v)).toString();\r
3641                     flag = (ae.getMessage()).equals("Conversion overflow:"\r
3642                             + " " + norm);\r
3643                 }\r
3644                 (new Test("inv" + (220 + i))).ok = flag;\r
3645             }\r
3646         }/* i */\r
3647 \r
3648         // now slip in some single bits...\r
3649         dimax = new com.ibm.icu.math.BigDecimal(imax);\r
3650         {\r
3651             i = 0;\r
3652             for (; i <= 49; i++) {\r
3653                 try {\r
3654                     num = two.pow(new com.ibm.icu.math.BigDecimal(i), mc50);\r
3655                     dv = dimax.add(num, mc50);\r
3656                     dv.intValueExact();\r
3657                     flag = false;\r
3658                 } catch (java.lang.ArithmeticException $106) {\r
3659                     ae = $106;\r
3660                     norm = dv.toString();\r
3661                     flag = (ae.getMessage()).equals("Conversion overflow:"\r
3662                             + " " + norm);\r
3663                 }\r
3664                 (new Test("inv" + (300 + i))).ok = flag;\r
3665             }\r
3666         }/* i */\r
3667         dimin = new com.ibm.icu.math.BigDecimal(imin);\r
3668         {\r
3669             i = 50;\r
3670             for (; i <= 99; i++) {\r
3671                 try {\r
3672                     num = two.pow(new com.ibm.icu.math.BigDecimal(i), mc50);\r
3673                     dv = dimin.subtract(num, mc50);\r
3674                     dv.intValueExact();\r
3675                     flag = false;\r
3676                 } catch (java.lang.ArithmeticException $107) {\r
3677                     ae = $107;\r
3678                     norm = dv.toString();\r
3679                     flag = (ae.getMessage()).equals("Conversion overflow:"\r
3680                             + " " + norm);\r
3681                 }\r
3682                 (new Test("inv" + (300 + i))).ok = flag;\r
3683             }\r
3684         }/* i */\r
3685 \r
3686         // the following should all raise bad-decimal-part exceptions\r
3687         badstrings = new java.lang.String[] { "0.09", "0.9", "0.01", "0.1",\r
3688                 "-0.01", "-0.1", "1.01", "-1.01", "-1.1", "-111.111",\r
3689                 "+111.111", "1.09", "1.05", "1.04", "1.99", "1.9", "1.5",\r
3690                 "1.4", "-1.09", "-1.05", "-1.04", "-1.99", "-1.9", "-1.5",\r
3691                 "-1.4", "1E-1000", "-1E-1000", "11E-1", "1.5" }; // 400-403\r
3692         // 404-407\r
3693         // 408-411\r
3694         // 412-416\r
3695         // 417-420\r
3696         // 421-424\r
3697         // 425-428\r
3698 \r
3699         {\r
3700             int $108 = badstrings.length;\r
3701             i = 0;\r
3702             for (; $108 > 0; $108--, i++) {\r
3703                 try {\r
3704                     v = badstrings[i];\r
3705                     (new com.ibm.icu.math.BigDecimal(v)).intValueExact();\r
3706                     flag = false;\r
3707                 } catch (java.lang.ArithmeticException $109) {\r
3708                     ae = $109;\r
3709                     norm = (new com.ibm.icu.math.BigDecimal(v)).toString();\r
3710                     flag = (ae.getMessage()).equals("Decimal part non-zero:"\r
3711                             + " " + norm);\r
3712                 }\r
3713                 (new Test("inv" + (400 + i))).ok = flag;\r
3714             }\r
3715         }/* i */\r
3716 \r
3717         summary("intValue+");\r
3718     }\r
3719 \r
3720     /* ----------------------------------------------------------------- */\r
3721 \r
3722     /** Test the {@link com.ibm.icu.math.BigDecimal#longValue} method. */\r
3723 \r
3724     public void diaglongvalue() {\r
3725         boolean flag = false;\r
3726         java.lang.String v = null;\r
3727         java.lang.ArithmeticException ae = null;\r
3728         java.lang.String badstrings[];\r
3729         int i = 0;\r
3730         java.lang.String norm = null;\r
3731         com.ibm.icu.math.BigDecimal dlmax;\r
3732         com.ibm.icu.math.BigDecimal num = null;\r
3733         com.ibm.icu.math.BigDecimal dv = null;\r
3734         com.ibm.icu.math.BigDecimal dlmin;\r
3735 \r
3736         // longValue --\r
3737 \r
3738         (new Test("lov001")).ok=lmin==((new com.ibm.icu.math.BigDecimal(lmin)).longValue());\r
3739         (new Test("lov002")).ok=(((long)99))==((new com.ibm.icu.math.BigDecimal("99")).longValue());\r
3740         (new Test("lov003")).ok=(((long)1))==((new com.ibm.icu.math.BigDecimal("1")).longValue());\r
3741         (new Test("lov004")).ok=(((long)0))==((new com.ibm.icu.math.BigDecimal("0")).longValue());\r
3742         (new Test("lov005")).ok=(((long)-1))==((new com.ibm.icu.math.BigDecimal("-1")).longValue());\r
3743         (new Test("lov006")).ok=(((long)-99))==((new com.ibm.icu.math.BigDecimal("-99")).longValue());\r
3744         (new Test("lov007")).ok=lmax==((new com.ibm.icu.math.BigDecimal(lmax)).longValue());\r
3745         (new Test("lov008")).ok=(((long)5))==((new com.ibm.icu.math.BigDecimal("5.0")).longValue());\r
3746         (new Test("lov009")).ok=(((long)5))==((new com.ibm.icu.math.BigDecimal("5.3")).longValue());\r
3747         (new Test("lov010")).ok=(((long)5))==((new com.ibm.icu.math.BigDecimal("5.5")).longValue());\r
3748         (new Test("lov011")).ok=(((long)5))==((new com.ibm.icu.math.BigDecimal("5.7")).longValue());\r
3749         (new Test("lov012")).ok=(((long)5))==((new com.ibm.icu.math.BigDecimal("5.9")).longValue());\r
3750         (new Test("lov013")).ok=(((long)-5))==((new com.ibm.icu.math.BigDecimal("-5.0")).longValue());\r
3751         (new Test("lov014")).ok=(((long)-5))==((new com.ibm.icu.math.BigDecimal("-5.3")).longValue());\r
3752         (new Test("lov015")).ok=(((long)-5))==((new com.ibm.icu.math.BigDecimal("-5.5")).longValue());\r
3753         (new Test("lov016")).ok=(((long)-5))==((new com.ibm.icu.math.BigDecimal("-5.7")).longValue());\r
3754         (new Test("lov017")).ok=(((long)-5))==((new com.ibm.icu.math.BigDecimal("-5.9")).longValue());\r
3755         (new Test("lov018")).ok=((new com.ibm.icu.math.BigDecimal("888888888899999999998")).longValue())==3445173361941522430L; // ugh\r
3756         (new Test("lov019")).ok=((new com.ibm.icu.math.BigDecimal("-888888888899999999998")).longValue())==(-3445173361941522430L); // ugh\r
3757 \r
3758         // longValueExact --\r
3759 \r
3760         (new Test("lov101")).ok=lmin==((new com.ibm.icu.math.BigDecimal(lmin)).longValue());\r
3761         (new Test("lov102")).ok=(((long)99))==((new com.ibm.icu.math.BigDecimal("99")).longValue());\r
3762         (new Test("lov103")).ok=(((long)1))==((new com.ibm.icu.math.BigDecimal("1")).longValue());\r
3763         (new Test("lov104")).ok=(((long)0))==((new com.ibm.icu.math.BigDecimal("0")).longValue());\r
3764         (new Test("lov105")).ok=(((long)-1))==((new com.ibm.icu.math.BigDecimal("-1")).longValue());\r
3765         (new Test("lov106")).ok=(((long)-99))==((new com.ibm.icu.math.BigDecimal("-99")).longValue());\r
3766         (new Test("lov107")).ok=lmax==((new com.ibm.icu.math.BigDecimal(lmax)).longValue());\r
3767         (new Test("lov108")).ok=(((long)5))==((new com.ibm.icu.math.BigDecimal("5.0")).longValue());\r
3768         (new Test("lov109")).ok=(((long)-5))==((new com.ibm.icu.math.BigDecimal("-5.0")).longValue());\r
3769 \r
3770         try {\r
3771             v = "-888888888899999999998";\r
3772             (new com.ibm.icu.math.BigDecimal(v)).longValueExact();\r
3773             flag = false;\r
3774         } catch (java.lang.ArithmeticException $110) {\r
3775             ae = $110;\r
3776             flag = (ae.getMessage()).equals("Conversion overflow:" + " " + v);\r
3777         }\r
3778         (new Test("lov200")).ok = flag;\r
3779         try {\r
3780             v = "88888887487487479488888";\r
3781             (new com.ibm.icu.math.BigDecimal(v)).longValueExact();\r
3782             flag = false;\r
3783         } catch (java.lang.ArithmeticException $111) {\r
3784             ae = $111;\r
3785             flag = (ae.getMessage()).equals("Conversion overflow:" + " " + v);\r
3786         }\r
3787         (new Test("lov201")).ok = flag;\r
3788         try {\r
3789             v = "1.5";\r
3790             (new com.ibm.icu.math.BigDecimal(v)).longValueExact();\r
3791             flag = false;\r
3792         } catch (java.lang.ArithmeticException $112) {\r
3793             ae = $112;\r
3794             flag = (ae.getMessage()).equals("Decimal part non-zero:" + " " + v);\r
3795         }\r
3796         (new Test("lov202")).ok = flag;\r
3797 \r
3798         badstrings = new java.lang.String[] {\r
3799                 "1234567890110987654321",\r
3800                 "-1234567890110987654321",\r
3801                 (new com.ibm.icu.math.BigDecimal(lmax)).add(one).toString(),\r
3802                 (new com.ibm.icu.math.BigDecimal(lmin)).subtract(one)\r
3803                         .toString(),\r
3804                 (new com.ibm.icu.math.BigDecimal(lmin)).multiply(two)\r
3805                         .toString(),\r
3806                 (new com.ibm.icu.math.BigDecimal(lmax)).multiply(two)\r
3807                         .toString(),\r
3808                 (new com.ibm.icu.math.BigDecimal(lmin)).multiply(ten)\r
3809                         .toString(),\r
3810                 (new com.ibm.icu.math.BigDecimal(lmax)).multiply(ten)\r
3811                         .toString(), "9223372036854775818",\r
3812                 "9323372036854775818", "9423372036854775818",\r
3813                 "9523372036854775818", "9623372036854775818",\r
3814                 "9723372036854775818", "9823372036854775818",\r
3815                 "9923372036854775818", "-9223372036854775818",\r
3816                 "-9323372036854775818", "-9423372036854775818",\r
3817                 "-9523372036854775818", "-9623372036854775818",\r
3818                 "-9723372036854775818", "-9823372036854775818",\r
3819                 "-9923372036854775818", "12345678901234567890" }; // 220\r
3820         // 221\r
3821         // 222\r
3822         // 223\r
3823         // 224\r
3824         // 225\r
3825         // 226\r
3826         // 227\r
3827         // 228\r
3828         // 229\r
3829         // 230\r
3830         // 231\r
3831         // 232\r
3832         // 233\r
3833         // 234\r
3834         // 235\r
3835         // 236\r
3836         // 237\r
3837         // 238\r
3838         // 239\r
3839         // 240\r
3840         // 241\r
3841         // 242\r
3842         // 243\r
3843         // 244\r
3844         {\r
3845             int $113 = badstrings.length;\r
3846             i = 0;\r
3847             for (; $113 > 0; $113--, i++) {\r
3848                 try {\r
3849                     v = badstrings[i];\r
3850                     (new com.ibm.icu.math.BigDecimal(v)).longValueExact();\r
3851                     flag = false;\r
3852                 } catch (java.lang.ArithmeticException $114) {\r
3853                     ae = $114;\r
3854                     norm = (new com.ibm.icu.math.BigDecimal(v)).toString();\r
3855                     flag = (ae.getMessage()).equals("Conversion overflow:"\r
3856                             + " " + norm);\r
3857                 }\r
3858                 (new Test("lov" + (220 + i))).ok = flag;\r
3859             }\r
3860         }/* i */\r
3861 \r
3862         // now slip in some single bits...\r
3863         dlmax = new com.ibm.icu.math.BigDecimal(lmax);\r
3864         {\r
3865             i = 0;\r
3866             for (; i <= 99; i++) {\r
3867                 try {\r
3868                     num = two.pow(new com.ibm.icu.math.BigDecimal(i), mc50);\r
3869                     dv = dlmax.add(num, mc50);\r
3870                     dv.longValueExact();\r
3871                     flag = false;\r
3872                 } catch (java.lang.ArithmeticException $115) {\r
3873                     ae = $115;\r
3874                     norm = dv.toString();\r
3875                     flag = (ae.getMessage()).equals("Conversion overflow:"\r
3876                             + " " + norm);\r
3877                 }\r
3878                 (new Test("lov" + (300 + i))).ok = flag;\r
3879             }\r
3880         }/* i */\r
3881         dlmin = new com.ibm.icu.math.BigDecimal(lmin);\r
3882         {\r
3883             i = 0;\r
3884             for (; i <= 99; i++) {\r
3885                 try {\r
3886                     num = two.pow(new com.ibm.icu.math.BigDecimal(i), mc50);\r
3887                     dv = dlmin.subtract(num, mc50);\r
3888                     dv.longValueExact();\r
3889                     flag = false;\r
3890                 } catch (java.lang.ArithmeticException $116) {\r
3891                     ae = $116;\r
3892                     norm = dv.toString();\r
3893                     flag = (ae.getMessage()).equals("Conversion overflow:"\r
3894                             + " " + norm);\r
3895                 }\r
3896                 (new Test("lov" + (400 + i))).ok = flag;\r
3897             }\r
3898         }/* i */\r
3899 \r
3900         summary("longValue+");\r
3901     }\r
3902 \r
3903     /* ----------------------------------------------------------------- */\r
3904 \r
3905     /** Test the {@link com.ibm.icu.math.BigDecimal#movePointLeft} method. */\r
3906 \r
3907     public void diagmovepointleft() {\r
3908         (new Test("mpl001")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointLeft(-10).toString()).equals("-10000000000");\r
3909         (new Test("mpl002")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointLeft(-5).toString()).equals("-100000");\r
3910         (new Test("mpl003")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointLeft(-1).toString()).equals("-10");\r
3911         (new Test("mpl004")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointLeft(0).toString()).equals("-1");\r
3912         (new Test("mpl005")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointLeft(+1).toString()).equals("-0.1");\r
3913         (new Test("mpl006")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointLeft(+5).toString()).equals("-0.00001");\r
3914         (new Test("mpl007")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointLeft(+10).toString()).equals("-0.0000000001");\r
3915         \r
3916         (new Test("mpl010")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointLeft(-10).toString()).equals("0");\r
3917         (new Test("mpl010")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointLeft(-5).toString()).equals("0");\r
3918         (new Test("mpl010")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointLeft(-1).toString()).equals("0");\r
3919         (new Test("mpl010")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointLeft(0).toString()).equals("0");\r
3920         (new Test("mpl010")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointLeft(+1).toString()).equals("0.0");\r
3921         (new Test("mpl010")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointLeft(+5).toString()).equals("0.00000");\r
3922         (new Test("mpl010")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointLeft(+10).toString()).equals("0.0000000000");\r
3923         \r
3924         (new Test("mpl020")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointLeft(-10).toString()).equals("10000000000");\r
3925         (new Test("mpl021")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointLeft(-5).toString()).equals("100000");\r
3926         (new Test("mpl022")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointLeft(-1).toString()).equals("10");\r
3927         (new Test("mpl023")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointLeft(0).toString()).equals("1");\r
3928         (new Test("mpl024")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointLeft(+1).toString()).equals("0.1");\r
3929         (new Test("mpl025")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointLeft(+5).toString()).equals("0.00001");\r
3930         (new Test("mpl026")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointLeft(+10).toString()).equals("0.0000000001");\r
3931         \r
3932         (new Test("mpl030")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointLeft(-10).toString()).equals("50000000000");\r
3933         (new Test("mpl031")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointLeft(-5).toString()).equals("500000");\r
3934         (new Test("mpl032")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointLeft(-1).toString()).equals("50");\r
3935         (new Test("mpl033")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointLeft(0).toString()).equals("5");\r
3936         (new Test("mpl034")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointLeft(+1).toString()).equals("0.5");\r
3937         (new Test("mpl035")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointLeft(+5).toString()).equals("0.00005");\r
3938         (new Test("mpl036")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointLeft(+10).toString()).equals("0.0000000005");\r
3939 \r
3940         summary("movePointLeft");\r
3941     }\r
3942 \r
3943     /* ----------------------------------------------------------------- */\r
3944 \r
3945     /** Test the {@link com.ibm.icu.math.BigDecimal#movePointRight} method. */\r
3946 \r
3947     public void diagmovepointright() {\r
3948         (new Test("mpr001")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointRight(+10).toString()).equals("-10000000000");\r
3949         (new Test("mpr002")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointRight(+5).toString()).equals("-100000");\r
3950         (new Test("mpr003")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointRight(+1).toString()).equals("-10");\r
3951         (new Test("mpr004")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointRight(0).toString()).equals("-1");\r
3952         (new Test("mpr005")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointRight(-1).toString()).equals("-0.1");\r
3953         (new Test("mpr006")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointRight(-5).toString()).equals("-0.00001");\r
3954         (new Test("mpr007")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointRight(-10).toString()).equals("-0.0000000001");\r
3955         \r
3956         (new Test("mpr010")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointRight(+10).toString()).equals("0");\r
3957         (new Test("mpr011")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointRight(+5).toString()).equals("0");\r
3958         (new Test("mpr012")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointRight(+1).toString()).equals("0");\r
3959         (new Test("mpr013")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointRight(0).toString()).equals("0");\r
3960         (new Test("mpr014")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointRight(-1).toString()).equals("0.0");\r
3961         (new Test("mpr015")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointRight(-5).toString()).equals("0.00000");\r
3962         (new Test("mpr016")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointRight(-10).toString()).equals("0.0000000000");\r
3963         \r
3964         (new Test("mpr020")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointRight(+10).toString()).equals("10000000000");\r
3965         (new Test("mpr021")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointRight(+5).toString()).equals("100000");\r
3966         (new Test("mpr022")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointRight(+1).toString()).equals("10");\r
3967         (new Test("mpr023")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointRight(0).toString()).equals("1");\r
3968         (new Test("mpr024")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointRight(-1).toString()).equals("0.1");\r
3969         (new Test("mpr025")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointRight(-5).toString()).equals("0.00001");\r
3970         (new Test("mpr026")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointRight(-10).toString()).equals("0.0000000001");\r
3971         \r
3972         (new Test("mpr030")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointRight(+10).toString()).equals("50000000000");\r
3973         (new Test("mpr031")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointRight(+5).toString()).equals("500000");\r
3974         (new Test("mpr032")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointRight(+1).toString()).equals("50");\r
3975         (new Test("mpr033")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointRight(0).toString()).equals("5");\r
3976         (new Test("mpr034")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointRight(-1).toString()).equals("0.5");\r
3977         (new Test("mpr035")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointRight(-5).toString()).equals("0.00005");\r
3978         (new Test("mpr036")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointRight(-10).toString()).equals("0.0000000005");\r
3979 \r
3980         summary("movePointRight");\r
3981     }\r
3982 \r
3983     /* ----------------------------------------------------------------- */\r
3984 \r
3985     /** Test the {@link com.ibm.icu.math.BigDecimal#scale} method. */\r
3986 \r
3987     public void diagscale() {\r
3988         (new Test("sca001")).ok=((new com.ibm.icu.math.BigDecimal("-1")).scale())==0;\r
3989         (new Test("sca002")).ok=((new com.ibm.icu.math.BigDecimal("-10")).scale())==0;\r
3990         (new Test("sca003")).ok=((new com.ibm.icu.math.BigDecimal("+1")).scale())==0;\r
3991         (new Test("sca004")).ok=((new com.ibm.icu.math.BigDecimal("+10")).scale())==0;\r
3992         (new Test("sca005")).ok=((new com.ibm.icu.math.BigDecimal("1E+10")).scale())==0;\r
3993         (new Test("sca006")).ok=((new com.ibm.icu.math.BigDecimal("1E-10")).scale())==10;\r
3994         (new Test("sca007")).ok=((new com.ibm.icu.math.BigDecimal("0E-10")).scale())==0;\r
3995         (new Test("sca008")).ok=((new com.ibm.icu.math.BigDecimal("0.000")).scale())==3;\r
3996         (new Test("sca009")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).scale())==2;\r
3997         (new Test("sca010")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).scale())==1;\r
3998         (new Test("sca011")).ok=((new com.ibm.icu.math.BigDecimal("0.1")).scale())==1;\r
3999         (new Test("sca012")).ok=((new com.ibm.icu.math.BigDecimal("0.12")).scale())==2;\r
4000         (new Test("sca013")).ok=((new com.ibm.icu.math.BigDecimal("0.123")).scale())==3;\r
4001         (new Test("sca014")).ok=((new com.ibm.icu.math.BigDecimal("-0.0")).scale())==1;\r
4002         (new Test("sca015")).ok=((new com.ibm.icu.math.BigDecimal("-0.1")).scale())==1;\r
4003         (new Test("sca016")).ok=((new com.ibm.icu.math.BigDecimal("-0.12")).scale())==2;\r
4004         (new Test("sca017")).ok=((new com.ibm.icu.math.BigDecimal("-0.123")).scale())==3;\r
4005         summary("scale");\r
4006     }\r
4007 \r
4008     /* ----------------------------------------------------------------- */\r
4009 \r
4010     /** Test the {@link com.ibm.icu.math.BigDecimal#setScale} method. */\r
4011 \r
4012     public void diagsetscale() {\r
4013         boolean flag = false;\r
4014         java.lang.RuntimeException e = null;\r
4015 \r
4016         (new Test("ssc001")).ok=((new com.ibm.icu.math.BigDecimal("-1")).setScale(0).toString()).equals("-1");\r
4017         (new Test("ssc002")).ok=((new com.ibm.icu.math.BigDecimal("-1")).setScale(1).toString()).equals("-1.0");\r
4018         (new Test("ssc003")).ok=((new com.ibm.icu.math.BigDecimal("-1")).setScale(2).toString()).equals("-1.00");\r
4019         (new Test("ssc004")).ok=((new com.ibm.icu.math.BigDecimal("0")).setScale(0).toString()).equals("0");\r
4020         (new Test("ssc005")).ok=((new com.ibm.icu.math.BigDecimal("0")).setScale(1).toString()).equals("0.0");\r
4021         (new Test("ssc006")).ok=((new com.ibm.icu.math.BigDecimal("0")).setScale(2).toString()).equals("0.00");\r
4022         (new Test("ssc007")).ok=((new com.ibm.icu.math.BigDecimal("+1")).setScale(0).toString()).equals("1");\r
4023         (new Test("ssc008")).ok=((new com.ibm.icu.math.BigDecimal("+1")).setScale(1).toString()).equals("1.0");\r
4024         (new Test("ssc009")).ok=((new com.ibm.icu.math.BigDecimal("+1")).setScale(2).toString()).equals("1.00");\r
4025         (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
4026         (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
4027         (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
4028         (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
4029         (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
4030         (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
4031         (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
4032         (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
4033         (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
4034         \r
4035         (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
4036         (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
4037         (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
4038         (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
4039         (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
4040         (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
4041         (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
4042         (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
4043         (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
4044         (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
4045         (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
4046         (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
4047         (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
4048         (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
4049         (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
4050         (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
4051         \r
4052         (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
4053         (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
4054         (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
4055         (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
4056         (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
4057         (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
4058         (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
4059 \r
4060         // check rounding\r
4061         (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
4062         (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
4063         (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
4064         (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
4065         (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
4066         (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
4067         (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
4068         (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
4069         (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
4070         (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
4071         (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
4072         (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
4073         (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
4074         (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
4075         (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
4076         (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
4077         (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
4078         (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
4079         (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
4080         (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
4081         (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
4082         (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
4083         (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
4084         (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
4085         (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
4086         (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
4087         (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
4088 \r
4089         try {\r
4090             (new com.ibm.icu.math.BigDecimal(1)).setScale(-8);\r
4091             flag = false;\r
4092         } catch (java.lang.RuntimeException $117) {\r
4093             e = $117;\r
4094             flag = (e.getMessage()).equals("Negative scale: -8");\r
4095         }/* checkscale */\r
4096         (new Test("ssc100")).ok = flag;\r
4097         try {\r
4098             (new com.ibm.icu.math.BigDecimal(1.0001D)).setScale(3);\r
4099             flag = false;\r
4100         } catch (java.lang.RuntimeException $118) {\r
4101             e = $118;\r
4102             flag = (e.getMessage()).equals("Rounding necessary");\r
4103         }/* checkrunn */\r
4104         (new Test("ssc101")).ok = flag;\r
4105         try {\r
4106             (new com.ibm.icu.math.BigDecimal(1E-8D)).setScale(3);\r
4107             flag = false;\r
4108         } catch (java.lang.RuntimeException $119) {\r
4109             e = $119;\r
4110             flag = (e.getMessage()).equals("Rounding necessary");\r
4111         }/* checkrunn */\r
4112         (new Test("ssc102")).ok = flag;\r
4113         summary("setScale");\r
4114     }\r
4115 \r
4116     /* ----------------------------------------------------------------- */\r
4117 \r
4118     /** Test the <code>BigDecimal.shortValue()</code> method. */\r
4119 \r
4120     public void diagshortvalue() {\r
4121         boolean flag = false;\r
4122         java.lang.String v = null;\r
4123         java.lang.ArithmeticException ae = null;\r
4124         java.lang.String badstrings[];\r
4125         int i = 0;\r
4126         java.lang.String norm = null;\r
4127 \r
4128         (new Test("shv002")).ok=(((short)0))==((new com.ibm.icu.math.BigDecimal("0")).shortValue());\r
4129         (new Test("shv003")).ok=(((short)1))==((new com.ibm.icu.math.BigDecimal("1")).shortValue());\r
4130         (new Test("shv004")).ok=(((short)99))==((new com.ibm.icu.math.BigDecimal("99")).shortValue());\r
4131         (new Test("shv006")).ok=((smax))==((new com.ibm.icu.math.BigDecimal(smax)).shortValue());\r
4132         (new Test("shv007")).ok=((smin))==((new com.ibm.icu.math.BigDecimal(smin)).shortValue());\r
4133         (new Test("shv008")).ok=((sneg))==((new com.ibm.icu.math.BigDecimal(sneg)).shortValue());\r
4134         (new Test("shv009")).ok=((szer))==((new com.ibm.icu.math.BigDecimal(szer)).shortValue());\r
4135         (new Test("shv010")).ok=((spos))==((new com.ibm.icu.math.BigDecimal(spos)).shortValue());\r
4136         (new Test("shv011")).ok=((smin))==((new com.ibm.icu.math.BigDecimal(smax+1)).shortValue());\r
4137         (new Test("shv012")).ok=((smax))==((new com.ibm.icu.math.BigDecimal(smin-1)).shortValue());\r
4138 \r
4139         (new Test("shv022")).ok=(((short)0))==((new com.ibm.icu.math.BigDecimal("0")).shortValueExact());\r
4140         (new Test("shv023")).ok=(((short)1))==((new com.ibm.icu.math.BigDecimal("1")).shortValueExact());\r
4141         (new Test("shv024")).ok=(((short)99))==((new com.ibm.icu.math.BigDecimal("99")).shortValueExact());\r
4142         (new Test("shv026")).ok=((smax))==((new com.ibm.icu.math.BigDecimal(smax)).shortValueExact());\r
4143         (new Test("shv027")).ok=((smin))==((new com.ibm.icu.math.BigDecimal(smin)).shortValueExact());\r
4144         (new Test("shv028")).ok=((sneg))==((new com.ibm.icu.math.BigDecimal(sneg)).shortValueExact());\r
4145         (new Test("shv029")).ok=((szer))==((new com.ibm.icu.math.BigDecimal(szer)).shortValueExact());\r
4146         (new Test("shv030")).ok=((spos))==((new com.ibm.icu.math.BigDecimal(spos)).shortValueExact());\r
4147         try {\r
4148             v = "-88888888888";\r
4149             (new com.ibm.icu.math.BigDecimal(v)).shortValueExact();\r
4150             flag = false;\r
4151         } catch (java.lang.ArithmeticException $120) {\r
4152             ae = $120;\r
4153             flag = (ae.getMessage()).equals("Conversion overflow:" + " " + v);\r
4154         }\r
4155         (new Test("shv100")).ok = flag;\r
4156         try {\r
4157             v = "88888888888";\r
4158             (new com.ibm.icu.math.BigDecimal(v)).shortValueExact();\r
4159             flag = false;\r
4160         } catch (java.lang.ArithmeticException $121) {\r
4161             ae = $121;\r
4162             flag = (ae.getMessage()).equals("Conversion overflow:" + " " + v);\r
4163         }\r
4164         (new Test("shv101")).ok = flag;\r
4165         try {\r
4166             v = "1.5";\r
4167             (new com.ibm.icu.math.BigDecimal(v)).shortValueExact();\r
4168             flag = false;\r
4169         } catch (java.lang.ArithmeticException $122) {\r
4170             ae = $122;\r
4171             flag = (ae.getMessage()).equals("Decimal part non-zero:" + " " + v);\r
4172         }\r
4173         (new Test("shv102")).ok = flag;\r
4174 \r
4175         badstrings = new java.lang.String[] {\r
4176                 "123456",\r
4177                 (new com.ibm.icu.math.BigDecimal(smax)).add(one).toString(),\r
4178                 (new com.ibm.icu.math.BigDecimal(smin)).subtract(one)\r
4179                         .toString(),\r
4180                 "71111",\r
4181                 "81111",\r
4182                 "91111",\r
4183                 "-71111",\r
4184                 "-81111",\r
4185                 "-91111",\r
4186                 (new com.ibm.icu.math.BigDecimal(smin)).multiply(two)\r
4187                         .toString(),\r
4188                 (new com.ibm.icu.math.BigDecimal(smax)).multiply(two)\r
4189                         .toString(),\r
4190                 (new com.ibm.icu.math.BigDecimal(smin)).multiply(ten)\r
4191                         .toString(),\r
4192                 (new com.ibm.icu.math.BigDecimal(smax)).multiply(ten)\r
4193                         .toString(), "-123456" }; // 220\r
4194         // 221\r
4195         // 222\r
4196         // 223\r
4197         // 224\r
4198         // 225\r
4199         // 226\r
4200         // 227\r
4201         // 228\r
4202         // 229\r
4203         // 230\r
4204         // 231\r
4205         // 232\r
4206         // 233\r
4207         {\r
4208             int $123 = badstrings.length;\r
4209             i = 0;\r
4210             for (; $123 > 0; $123--, i++) {\r
4211                 try {\r
4212                     v = badstrings[i];\r
4213                     (new com.ibm.icu.math.BigDecimal(v)).shortValueExact();\r
4214                     flag = false;\r
4215                 } catch (java.lang.ArithmeticException $124) {\r
4216                     ae = $124;\r
4217                     norm = (new com.ibm.icu.math.BigDecimal(v)).toString();\r
4218                     flag = (ae.getMessage()).equals("Conversion overflow:"\r
4219                             + " " + norm);\r
4220                 }\r
4221                 (new Test("shv" + (220 + i))).ok = flag;\r
4222             }\r
4223         }/* i */\r
4224 \r
4225         summary("shortValue+");\r
4226     }\r
4227 \r
4228     /* ----------------------------------------------------------------- */\r
4229 \r
4230     /** Test the {@link com.ibm.icu.math.BigDecimal#signum} method. */\r
4231 \r
4232     public void diagsignum() {\r
4233         // necessarily checks some obscure constructions, too\r
4234         (new Test("sig001")).ok=(-1)==((new com.ibm.icu.math.BigDecimal("-1")).signum());\r
4235         (new Test("sig002")).ok=(-1)==((new com.ibm.icu.math.BigDecimal("-0.0010")).signum());\r
4236         (new Test("sig003")).ok=(-1)==((new com.ibm.icu.math.BigDecimal("-0.001")).signum());\r
4237         (new Test("sig004")).ok=0==((new com.ibm.icu.math.BigDecimal("-0.00")).signum());\r
4238         (new Test("sig005")).ok=0==((new com.ibm.icu.math.BigDecimal("-0")).signum());\r
4239         (new Test("sig006")).ok=0==((new com.ibm.icu.math.BigDecimal("0")).signum());\r
4240         (new Test("sig007")).ok=0==((new com.ibm.icu.math.BigDecimal("00")).signum());\r
4241         (new Test("sig008")).ok=0==((new com.ibm.icu.math.BigDecimal("00.0")).signum());\r
4242         (new Test("sig009")).ok=1==((new com.ibm.icu.math.BigDecimal("00.01")).signum());\r
4243         (new Test("sig010")).ok=1==((new com.ibm.icu.math.BigDecimal("00.01")).signum());\r
4244         (new Test("sig011")).ok=1==((new com.ibm.icu.math.BigDecimal("00.010")).signum());\r
4245         (new Test("sig012")).ok=1==((new com.ibm.icu.math.BigDecimal("01.01")).signum());\r
4246         (new Test("sig013")).ok=1==((new com.ibm.icu.math.BigDecimal("+0.01")).signum());\r
4247         (new Test("sig014")).ok=1==((new com.ibm.icu.math.BigDecimal("+0.001")).signum());\r
4248         (new Test("sig015")).ok=1==((new com.ibm.icu.math.BigDecimal("1")).signum());\r
4249         (new Test("sig016")).ok=1==((new com.ibm.icu.math.BigDecimal("1e+12")).signum());\r
4250         (new Test("sig017")).ok=0==((new com.ibm.icu.math.BigDecimal("00e+12")).signum());\r
4251         summary("signum");\r
4252     }\r
4253 \r
4254     /* ----------------------------------------------------------------- */\r
4255 \r
4256     /** Test the {@link com.ibm.icu.math.BigDecimal#toBigDecimal} method. */\r
4257 \r
4258     public void diagtobigdecimal() {\r
4259 //#if defined(FOUNDATION10) || defined(J2SE13)\r
4260 //#else\r
4261         (new Test("tbd001")).ok=((new com.ibm.icu.math.BigDecimal("0")).toBigDecimal().toString()).equals("0");\r
4262         (new Test("tbd002")).ok=((new com.ibm.icu.math.BigDecimal("-1")).toBigDecimal().toString()).equals("-1");\r
4263         (new Test("tbd003")).ok=((new com.ibm.icu.math.BigDecimal("+1")).toBigDecimal().toString()).equals("1");\r
4264         (new Test("tbd004")).ok=((new com.ibm.icu.math.BigDecimal("1")).toBigDecimal().toString()).equals("1");\r
4265         (new Test("tbd005")).ok=((new com.ibm.icu.math.BigDecimal("1E+2")).toBigDecimal().toString()).equals("100");\r
4266         (new Test("tbd006")).ok=((new com.ibm.icu.math.BigDecimal("1E-2")).toBigDecimal().toString()).equals("0.01");\r
4267         if (!isJDK15OrLater) {\r
4268             (new Test("tbd007")).ok=((new com.ibm.icu.math.BigDecimal("1E-8")).toBigDecimal().toString()).equals("0.00000001");\r
4269         }\r
4270         if (!isJDK15OrLater) {\r
4271             (new Test("tbd008")).ok=((new com.ibm.icu.math.BigDecimal("1E-9")).toBigDecimal().toString()).equals("0.000000001");\r
4272         }\r
4273         (new Test("tbd009")).ok=((new com.ibm.icu.math.BigDecimal("1E10")).toBigDecimal().toString()).equals("10000000000");\r
4274         (new Test("tbd010")).ok=((new com.ibm.icu.math.BigDecimal("1E12")).toBigDecimal().toString()).equals("1000000000000");\r
4275         summary("toBigDecimal");\r
4276 //#endif\r
4277     }\r
4278 \r
4279     /* ----------------------------------------------------------------- */\r
4280 \r
4281     /** Test the {@link com.ibm.icu.math.BigDecimal#toBigInteger} method. */\r
4282 \r
4283     public void diagtobiginteger() {\r
4284         boolean flag = false;\r
4285         java.lang.String badstrings[];\r
4286         int i = 0;\r
4287         (new Test("tbi001")).ok=((new com.ibm.icu.math.BigDecimal("-1")).toBigInteger().toString()).equals("-1");\r
4288         (new Test("tbi002")).ok=((new com.ibm.icu.math.BigDecimal("0")).toBigInteger().toString()).equals("0");\r
4289         (new Test("tbi003")).ok=((new com.ibm.icu.math.BigDecimal("+1")).toBigInteger().toString()).equals("1");\r
4290         (new Test("tbi004")).ok=((new com.ibm.icu.math.BigDecimal("10")).toBigInteger().toString()).equals("10");\r
4291         (new Test("tbi005")).ok=((new com.ibm.icu.math.BigDecimal("1000")).toBigInteger().toString()).equals("1000");\r
4292         (new Test("tbi006")).ok=((new com.ibm.icu.math.BigDecimal("-1E+0")).toBigInteger().toString()).equals("-1");\r
4293         (new Test("tbi007")).ok=((new com.ibm.icu.math.BigDecimal("0E+0")).toBigInteger().toString()).equals("0");\r
4294         (new Test("tbi008")).ok=((new com.ibm.icu.math.BigDecimal("+1E+0")).toBigInteger().toString()).equals("1");\r
4295         (new Test("tbi009")).ok=((new com.ibm.icu.math.BigDecimal("10E+0")).toBigInteger().toString()).equals("10");\r
4296         (new Test("tbi010")).ok=((new com.ibm.icu.math.BigDecimal("1E+3")).toBigInteger().toString()).equals("1000");\r
4297         (new Test("tbi011")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).toBigInteger().toString()).equals("0");\r
4298         (new Test("tbi012")).ok=((new com.ibm.icu.math.BigDecimal("0.01")).toBigInteger().toString()).equals("0");\r
4299         (new Test("tbi013")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).toBigInteger().toString()).equals("0");\r
4300         (new Test("tbi014")).ok=((new com.ibm.icu.math.BigDecimal("0.1")).toBigInteger().toString()).equals("0");\r
4301         (new Test("tbi015")).ok=((new com.ibm.icu.math.BigDecimal("-0.00")).toBigInteger().toString()).equals("0");\r
4302         (new Test("tbi016")).ok=((new com.ibm.icu.math.BigDecimal("-0.01")).toBigInteger().toString()).equals("0");\r
4303         (new Test("tbi017")).ok=((new com.ibm.icu.math.BigDecimal("-0.0")).toBigInteger().toString()).equals("0");\r
4304         (new Test("tbi018")).ok=((new com.ibm.icu.math.BigDecimal("-0.1")).toBigInteger().toString()).equals("0");\r
4305         (new Test("tbi019")).ok=((new com.ibm.icu.math.BigDecimal("1.00")).toBigInteger().toString()).equals("1");\r
4306         (new Test("tbi020")).ok=((new com.ibm.icu.math.BigDecimal("1.01")).toBigInteger().toString()).equals("1");\r
4307         (new Test("tbi021")).ok=((new com.ibm.icu.math.BigDecimal("1.0")).toBigInteger().toString()).equals("1");\r
4308         (new Test("tbi022")).ok=((new com.ibm.icu.math.BigDecimal("1.1")).toBigInteger().toString()).equals("1");\r
4309         (new Test("tbi023")).ok=((new com.ibm.icu.math.BigDecimal("-1.00")).toBigInteger().toString()).equals("-1");\r
4310         (new Test("tbi024")).ok=((new com.ibm.icu.math.BigDecimal("-1.01")).toBigInteger().toString()).equals("-1");\r
4311         (new Test("tbi025")).ok=((new com.ibm.icu.math.BigDecimal("-1.0")).toBigInteger().toString()).equals("-1");\r
4312         (new Test("tbi026")).ok=((new com.ibm.icu.math.BigDecimal("-1.1")).toBigInteger().toString()).equals("-1");\r
4313         (new Test("tbi027")).ok=((new com.ibm.icu.math.BigDecimal("-111.111")).toBigInteger().toString()).equals("-111");\r
4314         (new Test("tbi028")).ok=((new com.ibm.icu.math.BigDecimal("+111.111")).toBigInteger().toString()).equals("111");\r
4315         (new Test("tbi029")).ok=((new com.ibm.icu.math.BigDecimal("0.09")).toBigInteger().toString()).equals("0");\r
4316         (new Test("tbi030")).ok=((new com.ibm.icu.math.BigDecimal("0.9")).toBigInteger().toString()).equals("0");\r
4317         (new Test("tbi031")).ok=((new com.ibm.icu.math.BigDecimal("1.09")).toBigInteger().toString()).equals("1");\r
4318         (new Test("tbi032")).ok=((new com.ibm.icu.math.BigDecimal("1.05")).toBigInteger().toString()).equals("1");\r
4319         (new Test("tbi033")).ok=((new com.ibm.icu.math.BigDecimal("1.04")).toBigInteger().toString()).equals("1");\r
4320         (new Test("tbi034")).ok=((new com.ibm.icu.math.BigDecimal("1.99")).toBigInteger().toString()).equals("1");\r
4321         (new Test("tbi034")).ok=((new com.ibm.icu.math.BigDecimal("1.9")).toBigInteger().toString()).equals("1");\r
4322         (new Test("tbi035")).ok=((new com.ibm.icu.math.BigDecimal("1.5")).toBigInteger().toString()).equals("1");\r
4323         (new Test("tbi036")).ok=((new com.ibm.icu.math.BigDecimal("1.4")).toBigInteger().toString()).equals("1");\r
4324         (new Test("tbi037")).ok=((new com.ibm.icu.math.BigDecimal("-1.09")).toBigInteger().toString()).equals("-1");\r
4325         (new Test("tbi038")).ok=((new com.ibm.icu.math.BigDecimal("-1.05")).toBigInteger().toString()).equals("-1");\r
4326         (new Test("tbi039")).ok=((new com.ibm.icu.math.BigDecimal("-1.04")).toBigInteger().toString()).equals("-1");\r
4327         (new Test("tbi040")).ok=((new com.ibm.icu.math.BigDecimal("-1.99")).toBigInteger().toString()).equals("-1");\r
4328         (new Test("tbi041")).ok=((new com.ibm.icu.math.BigDecimal("-1.9")).toBigInteger().toString()).equals("-1");\r
4329         (new Test("tbi042")).ok=((new com.ibm.icu.math.BigDecimal("-1.5")).toBigInteger().toString()).equals("-1");\r
4330         (new Test("tbi043")).ok=((new com.ibm.icu.math.BigDecimal("-1.4")).toBigInteger().toString()).equals("-1");\r
4331         (new Test("tbi044")).ok=((new com.ibm.icu.math.BigDecimal("1E-1000")).toBigInteger().toString()).equals("0");\r
4332         (new Test("tbi045")).ok=((new com.ibm.icu.math.BigDecimal("-1E-1000")).toBigInteger().toString()).equals("0");\r
4333 \r
4334         // Exact variety --\r
4335         (new Test("tbi101")).ok=((new com.ibm.icu.math.BigDecimal("-1")).toBigIntegerExact().toString()).equals("-1");\r
4336         (new Test("tbi102")).ok=((new com.ibm.icu.math.BigDecimal("0")).toBigIntegerExact().toString()).equals("0");\r
4337         (new Test("tbi103")).ok=((new com.ibm.icu.math.BigDecimal("+1")).toBigIntegerExact().toString()).equals("1");\r
4338         (new Test("tbi104")).ok=((new com.ibm.icu.math.BigDecimal("10")).toBigIntegerExact().toString()).equals("10");\r
4339         (new Test("tbi105")).ok=((new com.ibm.icu.math.BigDecimal("1000")).toBigIntegerExact().toString()).equals("1000");\r
4340         (new Test("tbi106")).ok=((new com.ibm.icu.math.BigDecimal("-1E+0")).toBigIntegerExact().toString()).equals("-1");\r
4341         (new Test("tbi107")).ok=((new com.ibm.icu.math.BigDecimal("0E+0")).toBigIntegerExact().toString()).equals("0");\r
4342         (new Test("tbi108")).ok=((new com.ibm.icu.math.BigDecimal("+1E+0")).toBigIntegerExact().toString()).equals("1");\r
4343         (new Test("tbi109")).ok=((new com.ibm.icu.math.BigDecimal("10E+0")).toBigIntegerExact().toString()).equals("10");\r
4344         (new Test("tbi110")).ok=((new com.ibm.icu.math.BigDecimal("1E+3")).toBigIntegerExact().toString()).equals("1000");\r
4345         (new Test("tbi111")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).toBigIntegerExact().toString()).equals("0");\r
4346         (new Test("tbi112")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).toBigIntegerExact().toString()).equals("0");\r
4347         (new Test("tbi113")).ok=((new com.ibm.icu.math.BigDecimal("-0.00")).toBigIntegerExact().toString()).equals("0");\r
4348         (new Test("tbi114")).ok=((new com.ibm.icu.math.BigDecimal("-0.0")).toBigIntegerExact().toString()).equals("0");\r
4349         (new Test("tbi115")).ok=((new com.ibm.icu.math.BigDecimal("1.00")).toBigIntegerExact().toString()).equals("1");\r
4350         (new Test("tbi116")).ok=((new com.ibm.icu.math.BigDecimal("1.0")).toBigIntegerExact().toString()).equals("1");\r
4351         (new Test("tbi117")).ok=((new com.ibm.icu.math.BigDecimal("-1.00")).toBigIntegerExact().toString()).equals("-1");\r
4352         (new Test("tbi118")).ok=((new com.ibm.icu.math.BigDecimal("-1.0")).toBigIntegerExact().toString()).equals("-1");\r
4353         (new Test("tbi119")).ok=((new com.ibm.icu.math.BigDecimal("1.00000000000000000000000000000")).toBigIntegerExact().toString()).equals("1");\r
4354 \r
4355 \r
4356         // the following should all raise exceptions\r
4357 \r
4358         badstrings = new java.lang.String[] { "0.09", "0.9", "0.01", "0.1",\r
4359                 "-0.01", "-0.1", "1.01", "-1.01", "-1.1", "-111.111",\r
4360                 "+111.111", "1.09", "1.05", "1.04", "1.99", "1.9", "1.5",\r
4361                 "1.4", "-1.09", "-1.05", "-1.04", "-1.99", "-1.9", "-1.5",\r
4362                 "-1.4", "1E-1000", "-1E-1000", "11E-1", "1.1",\r
4363                 "127623156123656561356123512315631231551312356.000001",\r
4364                 "0.000000000000000000000000000000000000000000000001" }; // 300-303\r
4365         // 304-307\r
4366         // 308-311\r
4367         // 312-316\r
4368         // 317-320\r
4369         // 321-324\r
4370         // 325-328\r
4371         // 329\r
4372         // 330\r
4373 \r
4374         {\r
4375             int $125 = badstrings.length;\r
4376             i = 0;\r
4377             for (; $125 > 0; $125--, i++) {\r
4378                 try {\r
4379                     (new com.ibm.icu.math.BigDecimal(badstrings[i]))\r
4380                             .toBigIntegerExact();\r
4381                     flag = false;\r
4382                 } catch (java.lang.ArithmeticException $126) {\r
4383                     flag = true;\r
4384                 }\r
4385                 (new Test("tbi" + (300 + i))).ok = flag;\r
4386             }\r
4387         }/* i */\r
4388 \r
4389         summary("toBigInteger+");\r
4390     }\r
4391 \r
4392     /* ----------------------------------------------------------------- */\r
4393 \r
4394     /** Test the {@link com.ibm.icu.math.BigDecimal#toCharArray} method. */\r
4395 \r
4396     public void diagtochararray() {\r
4397         java.lang.String str;\r
4398         char car[];\r
4399         com.ibm.icu.math.BigDecimal d;\r
4400         char ca[];\r
4401         // the function of this has been tested above, this is simply an\r
4402         // existence proof and type-check\r
4403         str = "-123.45";\r
4404         car = (str).toCharArray();\r
4405         d = new com.ibm.icu.math.BigDecimal(str);\r
4406         ca = d.toCharArray();\r
4407         (new Test("tca001")).ok = ca.length == car.length;\r
4408         (new Test("tca002")).ok = (new java.lang.String(ca))\r
4409                 .equals((java.lang.Object) (new java.lang.String(car)));\r
4410         (new Test("tca003")).ok = (d.toCharArray() instanceof char[]);\r
4411         (new Test("tca004")).ok = (ca instanceof char[]);\r
4412         summary("toCharArray");\r
4413     }\r
4414 \r
4415     /* ----------------------------------------------------------------- */\r
4416 \r
4417     /** Test the {@link com.ibm.icu.math.BigDecimal#toString} method. */\r
4418 \r
4419     public void diagtostring() {\r
4420         java.lang.String str;\r
4421         char car[];\r
4422         com.ibm.icu.math.BigDecimal d;\r
4423         char ca[];\r
4424         java.lang.String cs;\r
4425         // the function of this has been tested above, this is simply an\r
4426         // existence proof and type-check\r
4427         str = "123.45";\r
4428         car = (str).toCharArray();\r
4429         d = new com.ibm.icu.math.BigDecimal(car, 0, car.length);\r
4430         ca = d.toCharArray();\r
4431         cs = d.toString();\r
4432         (new Test("tos001")).ok = (str.toCharArray().length) == ca.length;\r
4433         (new Test("tos002")).ok = (str.length()) == (cs.length());\r
4434         (new Test("tos003")).ok = str\r
4435                 .equals((java.lang.Object) (new java.lang.String(ca)));\r
4436         (new Test("tos004")).ok = str.equals((java.lang.Object) cs);\r
4437         (new Test("tos005")).ok = (cs instanceof java.lang.String);\r
4438         (new Test("tos006")).ok = (d.toString() instanceof java.lang.String);\r
4439         summary("toString");\r
4440     }\r
4441 \r
4442     /* ----------------------------------------------------------------- */\r
4443 \r
4444     /** Test the {@link com.ibm.icu.math.BigDecimal#unscaledValue} method. */\r
4445 \r
4446     public void diagunscaledvalue() {\r
4447         // just like toBigInteger, but scaly bits are preserved [without dots]\r
4448         (new Test("uns001")).ok=((new com.ibm.icu.math.BigDecimal("-1")).unscaledValue().toString()).equals("-1");\r
4449         (new Test("uns002")).ok=((new com.ibm.icu.math.BigDecimal("0")).unscaledValue().toString()).equals("0");\r
4450         (new Test("uns003")).ok=((new com.ibm.icu.math.BigDecimal("+1")).unscaledValue().toString()).equals("1");\r
4451         (new Test("uns004")).ok=((new com.ibm.icu.math.BigDecimal("10")).unscaledValue().toString()).equals("10");\r
4452         (new Test("uns005")).ok=((new com.ibm.icu.math.BigDecimal("1000")).unscaledValue().toString()).equals("1000");\r
4453         (new Test("uns006")).ok=((new com.ibm.icu.math.BigDecimal("-1E+0")).unscaledValue().toString()).equals("-1");\r
4454         (new Test("uns007")).ok=((new com.ibm.icu.math.BigDecimal("0E+0")).unscaledValue().toString()).equals("0");\r
4455         (new Test("uns008")).ok=((new com.ibm.icu.math.BigDecimal("+1E+0")).unscaledValue().toString()).equals("1");\r
4456         (new Test("uns009")).ok=((new com.ibm.icu.math.BigDecimal("10E+0")).unscaledValue().toString()).equals("10");\r
4457         (new Test("uns010")).ok=((new com.ibm.icu.math.BigDecimal("1E+3")).unscaledValue().toString()).equals("1000");\r
4458         (new Test("uns011")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).unscaledValue().toString()).equals("0");\r
4459         (new Test("uns012")).ok=((new com.ibm.icu.math.BigDecimal("0.01")).unscaledValue().toString()).equals("1");\r
4460         (new Test("uns013")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).unscaledValue().toString()).equals("0");\r
4461         (new Test("uns014")).ok=((new com.ibm.icu.math.BigDecimal("0.1")).unscaledValue().toString()).equals("1");\r
4462         (new Test("uns015")).ok=((new com.ibm.icu.math.BigDecimal("-0.00")).unscaledValue().toString()).equals("0");\r
4463         (new Test("uns016")).ok=((new com.ibm.icu.math.BigDecimal("-0.01")).unscaledValue().toString()).equals("-1");\r
4464         (new Test("uns017")).ok=((new com.ibm.icu.math.BigDecimal("-0.0")).unscaledValue().toString()).equals("0");\r
4465         (new Test("uns018")).ok=((new com.ibm.icu.math.BigDecimal("-0.1")).unscaledValue().toString()).equals("-1");\r
4466         (new Test("uns019")).ok=((new com.ibm.icu.math.BigDecimal("1.00")).unscaledValue().toString()).equals("100");\r
4467         (new Test("uns020")).ok=((new com.ibm.icu.math.BigDecimal("1.01")).unscaledValue().toString()).equals("101");\r
4468         (new Test("uns021")).ok=((new com.ibm.icu.math.BigDecimal("1.0")).unscaledValue().toString()).equals("10");\r
4469         (new Test("uns022")).ok=((new com.ibm.icu.math.BigDecimal("1.1")).unscaledValue().toString()).equals("11");\r
4470         (new Test("uns023")).ok=((new com.ibm.icu.math.BigDecimal("-1.00")).unscaledValue().toString()).equals("-100");\r
4471         (new Test("uns024")).ok=((new com.ibm.icu.math.BigDecimal("-1.01")).unscaledValue().toString()).equals("-101");\r
4472         (new Test("uns025")).ok=((new com.ibm.icu.math.BigDecimal("-1.0")).unscaledValue().toString()).equals("-10");\r
4473         (new Test("uns026")).ok=((new com.ibm.icu.math.BigDecimal("-1.1")).unscaledValue().toString()).equals("-11");\r
4474         (new Test("uns027")).ok=((new com.ibm.icu.math.BigDecimal("-111.111")).unscaledValue().toString()).equals("-111111");\r
4475         (new Test("uns028")).ok=((new com.ibm.icu.math.BigDecimal("+111.111")).unscaledValue().toString()).equals("111111");\r
4476         summary("unscaledValue");\r
4477     }\r
4478 \r
4479     /* ----------------------------------------------------------------- */\r
4480 \r
4481     /**\r
4482      * Test the {@link com.ibm.icu.math.BigDecimal#valueOf} method [long and\r
4483      * double].\r
4484      */\r
4485 \r
4486     public void diagvalueof() {\r
4487         boolean flag = false;\r
4488         java.lang.NumberFormatException e = null;\r
4489         double dzer;\r
4490         double dpos;\r
4491         double dneg;\r
4492         double dpos5;\r
4493         double dneg5;\r
4494         double dmin;\r
4495         double dmax;\r
4496         double d;\r
4497 \r
4498         // valueOf(long [,scale]) --\r
4499 \r
4500         (new Test("val001")).ok=(com.ibm.icu.math.BigDecimal.valueOf((long)((byte)-2)).toString()).equals("-2");\r
4501         (new Test("val002")).ok=(com.ibm.icu.math.BigDecimal.valueOf((long)((byte)-1)).toString()).equals("-1");\r
4502         (new Test("val003")).ok=(com.ibm.icu.math.BigDecimal.valueOf((long)((byte)-0)).toString()).equals("0");\r
4503         (new Test("val004")).ok=(com.ibm.icu.math.BigDecimal.valueOf((long)((byte)+1)).toString()).equals("1");\r
4504         (new Test("val005")).ok=(com.ibm.icu.math.BigDecimal.valueOf((long)((byte)+2)).toString()).equals("2");\r
4505         (new Test("val006")).ok=(com.ibm.icu.math.BigDecimal.valueOf((long)((byte)10)).toString()).equals("10");\r
4506         (new Test("val007")).ok=(com.ibm.icu.math.BigDecimal.valueOf((long)((byte)11)).toString()).equals("11");\r
4507         (new Test("val008")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lmin).toString()).equals("-9223372036854775808");\r
4508         (new Test("val009")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lmax).toString()).equals("9223372036854775807");\r
4509         (new Test("val010")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lneg).toString()).equals("-1");\r
4510         (new Test("val011")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lzer).toString()).equals("0");\r
4511         (new Test("val012")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lpos).toString()).equals("1");\r
4512         (new Test("val013")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lmin,0).toString()).equals("-9223372036854775808");\r
4513         (new Test("val014")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lmax,0).toString()).equals("9223372036854775807");\r
4514         (new Test("val015")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lneg,0).toString()).equals("-1");\r
4515         (new Test("val016")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lpos,0).toString()).equals("1");\r
4516         \r
4517         (new Test("val017")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lzer,0).toString()).equals("0");\r
4518         (new Test("val018")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lzer,1).toString()).equals("0.0");\r
4519         (new Test("val019")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lzer,2).toString()).equals("0.00");\r
4520         (new Test("val020")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lzer,3).toString()).equals("0.000");\r
4521         (new Test("val021")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lzer,10).toString()).equals("0.0000000000");\r
4522         \r
4523         (new Test("val022")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lmin,7).toString()).equals("-922337203685.4775808");\r
4524         (new Test("val023")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lmax,11).toString()).equals("92233720.36854775807");\r
4525 \r
4526         try {\r
4527             com.ibm.icu.math.BigDecimal.valueOf((long) 23, -8);\r
4528             flag = false;\r
4529         } catch (java.lang.NumberFormatException $127) {\r
4530             e = $127;\r
4531             flag = (e.getMessage()).equals("Negative scale: -8");\r
4532         }/* checkscale */\r
4533         (new Test("val100")).ok = flag;\r
4534 \r
4535         // valueOf(double) --\r
4536 \r
4537         dzer = (double) 0;\r
4538         dpos = (double) 1;\r
4539         dpos = dpos / ((double) 10);\r
4540         dneg = (double) -dpos;\r
4541         (new Test("val201")).ok=(com.ibm.icu.math.BigDecimal.valueOf(dneg).toString()).equals("-0.1");\r
4542         (new Test("val202")).ok=(com.ibm.icu.math.BigDecimal.valueOf(dzer).toString()).equals("0.0"); // cf. constructor\r
4543         (new Test("val203")).ok=(com.ibm.icu.math.BigDecimal.valueOf(dpos).toString()).equals("0.1");\r
4544         dpos5 = (double) 0.5D;\r
4545         dneg5 = (double) -dpos5;\r
4546         (new Test("val204")).ok=(com.ibm.icu.math.BigDecimal.valueOf(dneg5).toString()).equals("-0.5");\r
4547         (new Test("val205")).ok=(com.ibm.icu.math.BigDecimal.valueOf(dpos5).toString()).equals("0.5");\r
4548         dmin = java.lang.Double.MIN_VALUE;\r
4549         dmax = java.lang.Double.MAX_VALUE;\r
4550         (new Test("val206")).ok=(com.ibm.icu.math.BigDecimal.valueOf(dmin).toString()).equals("4.9E-324");\r
4551         (new Test("val207")).ok=(com.ibm.icu.math.BigDecimal.valueOf(dmax).toString()).equals("1.7976931348623157E+308");\r
4552 \r
4553         // nasties\r
4554         d = (double) 9;\r
4555         d = d / ((double) 10);\r
4556         (new Test("val210")).ok = (com.ibm.icu.math.BigDecimal.valueOf(d).toString()).equals("0.9");\r
4557         d = d / ((double) 10);\r
4558         (new Test("val211")).ok = (com.ibm.icu.math.BigDecimal.valueOf(d).toString()).equals("0.09");\r
4559         d = d / ((double) 10);\r
4560         (new Test("val212")).ok = (com.ibm.icu.math.BigDecimal.valueOf(d).toString()).equals("0.0090");\r
4561         d = d / ((double) 10);\r
4562         (new Test("val213")).ok = (com.ibm.icu.math.BigDecimal.valueOf(d).toString()).equals("9.0E-4");\r
4563         d = d / ((double) 10);\r
4564         (new Test("val214")).ok = (com.ibm.icu.math.BigDecimal.valueOf(d).toString()).equals("8.999999999999999E-5");\r
4565         d = d / ((double) 10);\r
4566         (new Test("val215")).ok = (com.ibm.icu.math.BigDecimal.valueOf(d).toString()).equals("8.999999999999999E-6");\r
4567         d = d / ((double) 10);\r
4568         (new Test("val216")).ok = (com.ibm.icu.math.BigDecimal.valueOf(d).toString()).equals("8.999999999999999E-7");\r
4569         d = d / ((double) 10);\r
4570         (new Test("val217")).ok = (com.ibm.icu.math.BigDecimal.valueOf(d).toString()).equals("8.999999999999999E-8");\r
4571         d = d / ((double) 10);\r
4572         (new Test("val218")).ok = (com.ibm.icu.math.BigDecimal.valueOf(d).toString()).equals("8.999999999999998E-9");\r
4573 \r
4574         try {\r
4575             com.ibm.icu.math.BigDecimal\r
4576                     .valueOf(java.lang.Double.POSITIVE_INFINITY);\r
4577             flag = false;\r
4578         } catch (java.lang.NumberFormatException $128) {\r
4579             flag = true;\r
4580         }/* checkpin */\r
4581         (new Test("val301")).ok = flag;\r
4582         try {\r
4583             com.ibm.icu.math.BigDecimal\r
4584                     .valueOf(java.lang.Double.NEGATIVE_INFINITY);\r
4585             flag = false;\r
4586         } catch (java.lang.NumberFormatException $129) {\r
4587             flag = true;\r
4588         }/* checknin */\r
4589         (new Test("val302")).ok = flag;\r
4590         try {\r
4591             com.ibm.icu.math.BigDecimal.valueOf(java.lang.Double.NaN);\r
4592             flag = false;\r
4593         } catch (java.lang.NumberFormatException $130) {\r
4594             flag = true;\r
4595         }/* checknan */\r
4596         (new Test("val303")).ok = flag;\r
4597 \r
4598         summary("valueOf");\r
4599     }\r
4600 \r
4601     /* ----------------------------------------------------------------- */\r
4602 \r
4603     /** Test the {@link com.ibm.icu.math.MathContext} class. */\r
4604 \r
4605     public void diagmathcontext() {\r
4606         com.ibm.icu.math.MathContext mccon1;\r
4607         com.ibm.icu.math.MathContext mccon2;\r
4608         com.ibm.icu.math.MathContext mccon3;\r
4609         com.ibm.icu.math.MathContext mccon4;\r
4610         com.ibm.icu.math.MathContext mcrmc;\r
4611         com.ibm.icu.math.MathContext mcrmd;\r
4612         com.ibm.icu.math.MathContext mcrmf;\r
4613         com.ibm.icu.math.MathContext mcrmhd;\r
4614         com.ibm.icu.math.MathContext mcrmhe;\r
4615         com.ibm.icu.math.MathContext mcrmhu;\r
4616         com.ibm.icu.math.MathContext mcrmun;\r
4617         com.ibm.icu.math.MathContext mcrmu;\r
4618         boolean flag = false;\r
4619         java.lang.IllegalArgumentException e = null;\r
4620         // these tests are mostly existence checks\r
4621         (new Test("mcn001")).ok=(com.ibm.icu.math.MathContext.DEFAULT.getDigits())==9;\r
4622         (new Test("mcn002")).ok=(com.ibm.icu.math.MathContext.DEFAULT.getForm())==com.ibm.icu.math.MathContext.SCIENTIFIC;\r
4623         (new Test("mcn003")).ok=(com.ibm.icu.math.MathContext.DEFAULT.getForm())!=com.ibm.icu.math.MathContext.ENGINEERING;\r
4624         (new Test("mcn004")).ok=(com.ibm.icu.math.MathContext.DEFAULT.getForm())!=com.ibm.icu.math.MathContext.PLAIN;\r
4625         (new Test("mcn005")).ok=(com.ibm.icu.math.MathContext.DEFAULT.getLostDigits()?1:0)==0;\r
4626         (new Test("mcn006")).ok=(com.ibm.icu.math.MathContext.DEFAULT.getRoundingMode())==com.ibm.icu.math.MathContext.ROUND_HALF_UP;\r
4627         \r
4628         (new Test("mcn010")).ok=com.ibm.icu.math.MathContext.ROUND_CEILING>=0;\r
4629         (new Test("mcn011")).ok=com.ibm.icu.math.MathContext.ROUND_DOWN>=0;\r
4630         (new Test("mcn012")).ok=com.ibm.icu.math.MathContext.ROUND_FLOOR>=0;\r
4631         (new Test("mcn013")).ok=com.ibm.icu.math.MathContext.ROUND_HALF_DOWN>=0;\r
4632         (new Test("mcn014")).ok=com.ibm.icu.math.MathContext.ROUND_HALF_EVEN>=0;\r
4633         (new Test("mcn015")).ok=com.ibm.icu.math.MathContext.ROUND_HALF_UP>=0;\r
4634         (new Test("mcn016")).ok=com.ibm.icu.math.MathContext.ROUND_UNNECESSARY>=0;\r
4635         (new Test("mcn017")).ok=com.ibm.icu.math.MathContext.ROUND_UP>=0;\r
4636         \r
4637         mccon1=new com.ibm.icu.math.MathContext(111);\r
4638         (new Test("mcn021")).ok=(mccon1.getDigits())==111;\r
4639         (new Test("mcn022")).ok=(mccon1.getForm())==com.ibm.icu.math.MathContext.SCIENTIFIC;\r
4640         (new Test("mcn023")).ok=(mccon1.getLostDigits()?1:0)==0;\r
4641         (new Test("mcn024")).ok=(mccon1.getRoundingMode())==com.ibm.icu.math.MathContext.ROUND_HALF_UP;\r
4642         \r
4643         mccon2=new com.ibm.icu.math.MathContext(78,com.ibm.icu.math.MathContext.ENGINEERING);\r
4644         (new Test("mcn031")).ok=(mccon2.getDigits())==78;\r
4645         (new Test("mcn032")).ok=(mccon2.getForm())==com.ibm.icu.math.MathContext.ENGINEERING;\r
4646         (new Test("mcn033")).ok=(mccon2.getLostDigits()?1:0)==0;\r
4647         (new Test("mcn034")).ok=(mccon2.getRoundingMode())==com.ibm.icu.math.MathContext.ROUND_HALF_UP;\r
4648         \r
4649         mccon3=new com.ibm.icu.math.MathContext(5,com.ibm.icu.math.MathContext.PLAIN,true);\r
4650         (new Test("mcn041")).ok=(mccon3.getDigits())==5;\r
4651         (new Test("mcn042")).ok=(mccon3.getForm())==com.ibm.icu.math.MathContext.PLAIN;\r
4652         (new Test("mcn043")).ok=(mccon3.getLostDigits()?1:0)==1;\r
4653         (new Test("mcn044")).ok=(mccon3.getRoundingMode())==com.ibm.icu.math.MathContext.ROUND_HALF_UP;\r
4654         \r
4655         mccon4=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.SCIENTIFIC,false,com.ibm.icu.math.MathContext.ROUND_FLOOR);\r
4656         (new Test("mcn051")).ok = (mccon4.getDigits()) == 0;\r
4657         (new Test("mcn052")).ok = (mccon4.getForm()) == com.ibm.icu.math.MathContext.SCIENTIFIC;\r
4658         (new Test("mcn053")).ok = (mccon4.getLostDigits() ? 1 : 0) == 0;\r
4659         (new Test("mcn054")).ok = (mccon4.getRoundingMode()) == com.ibm.icu.math.MathContext.ROUND_FLOOR;\r
4660 \r
4661         (new Test("mcn061")).ok=(mccon1.toString()).equals("digits=111 form=SCIENTIFIC lostDigits=0 roundingMode=ROUND_HALF_UP");\r
4662         \r
4663         (new Test("mcn062")).ok=(mccon2.toString()).equals("digits=78 form=ENGINEERING lostDigits=0 roundingMode=ROUND_HALF_UP");\r
4664         \r
4665         (new Test("mcn063")).ok=(mccon3.toString()).equals("digits=5 form=PLAIN lostDigits=1 roundingMode=ROUND_HALF_UP");\r
4666         \r
4667         (new Test("mcn064")).ok=(mccon4.toString()).equals("digits=0 form=SCIENTIFIC lostDigits=0 roundingMode=ROUND_FLOOR");\r
4668 \r
4669         // complete testing rounding modes round trips\r
4670         mcrmc=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN,false,com.ibm.icu.math.MathContext.ROUND_CEILING);\r
4671         mcrmd=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN,false,com.ibm.icu.math.MathContext.ROUND_DOWN);\r
4672         mcrmf=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN,false,com.ibm.icu.math.MathContext.ROUND_FLOOR);\r
4673         mcrmhd=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN,false,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN);\r
4674         mcrmhe=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN,false,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN);\r
4675         mcrmhu=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN,false,com.ibm.icu.math.MathContext.ROUND_HALF_UP);\r
4676         mcrmun=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN,false,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY);\r
4677         mcrmu=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN,false,com.ibm.icu.math.MathContext.ROUND_UP);\r
4678 \r
4679         (new Test("mcn071")).ok = (mcrmc.toString()).equals("digits=0 form=PLAIN lostDigits=0 roundingMode=ROUND_CEILING");\r
4680 \r
4681         (new Test("mcn072")).ok = (mcrmd.toString()).equals("digits=0 form=PLAIN lostDigits=0 roundingMode=ROUND_DOWN");\r
4682 \r
4683         (new Test("mcn073")).ok = (mcrmf.toString()).equals("digits=0 form=PLAIN lostDigits=0 roundingMode=ROUND_FLOOR");\r
4684 \r
4685         (new Test("mcn074")).ok = (mcrmhd.toString()).equals("digits=0 form=PLAIN lostDigits=0 roundingMode=ROUND_HALF_DOWN");\r
4686 \r
4687         (new Test("mcn075")).ok = (mcrmhe.toString()).equals("digits=0 form=PLAIN lostDigits=0 roundingMode=ROUND_HALF_EVEN");\r
4688 \r
4689         (new Test("mcn076")).ok = (mcrmhu.toString()).equals("digits=0 form=PLAIN lostDigits=0 roundingMode=ROUND_HALF_UP");\r
4690 \r
4691         (new Test("mcn077")).ok = (mcrmun.toString()).equals("digits=0 form=PLAIN lostDigits=0 roundingMode=ROUND_UNNECESSARY");\r
4692 \r
4693         (new Test("mcn078")).ok = (mcrmu.toString()).equals("digits=0 form=PLAIN lostDigits=0 roundingMode=ROUND_UP");\r
4694 \r
4695         // [get methods tested already]\r
4696 \r
4697         // errors...\r
4698 \r
4699         try {\r
4700             new com.ibm.icu.math.MathContext(-1);\r
4701             flag = false;\r
4702         } catch (java.lang.IllegalArgumentException $131) {\r
4703             e = $131;\r
4704             flag = (e.getMessage()).equals("Digits too small: -1");\r
4705         }/* checkdig */\r
4706         (new Test("mcn101")).ok = flag;\r
4707         try {\r
4708             new com.ibm.icu.math.MathContext(1000000000);\r
4709             flag = false;\r
4710         } catch (java.lang.IllegalArgumentException $132) {\r
4711             e = $132;\r
4712             flag = (e.getMessage()).equals("Digits too large: 1000000000");\r
4713         }/* checkdigbig */\r
4714         (new Test("mcn102")).ok = flag;\r
4715 \r
4716         try {\r
4717             new com.ibm.icu.math.MathContext(0, 5);\r
4718             flag = false;\r
4719         } catch (java.lang.IllegalArgumentException $133) {\r
4720             e = $133;\r
4721             flag = (e.getMessage()).equals("Bad form value: 5");\r
4722         }/* checkform */\r
4723         (new Test("mcn111")).ok = flag;\r
4724         try {\r
4725             new com.ibm.icu.math.MathContext(0, -1);\r
4726             flag = false;\r
4727         } catch (java.lang.IllegalArgumentException $134) {\r
4728             e = $134;\r
4729             flag = (e.getMessage()).equals("Bad form value: -1");\r
4730         }/* checkformneg */\r
4731         (new Test("mcn112")).ok = flag;\r
4732 \r
4733         // [lostDigits cannot be invalid]\r
4734 \r
4735         try {\r
4736             new com.ibm.icu.math.MathContext(0,\r
4737                     com.ibm.icu.math.MathContext.PLAIN, false, 12);\r
4738             flag = false;\r
4739         } catch (java.lang.IllegalArgumentException $135) {\r
4740             e = $135;\r
4741             flag = (e.getMessage()).equals("Bad roundingMode value: 12");\r
4742         }/* checkround */\r
4743         (new Test("mcn121")).ok = flag;\r
4744         try {\r
4745             new com.ibm.icu.math.MathContext(0,\r
4746                     com.ibm.icu.math.MathContext.PLAIN, false, -1);\r
4747             flag = false;\r
4748         } catch (java.lang.IllegalArgumentException $136) {\r
4749             e = $136;\r
4750             flag = (e.getMessage()).equals("Bad roundingMode value: -1");\r
4751         }/* checkroundneg */\r
4752         (new Test("mcn122")).ok = flag;\r
4753 \r
4754         summary("MathContext");\r
4755     }\r
4756 \r
4757     /* ----------------------------------------------------------------- */\r
4758 \r
4759     /**\r
4760      * Test general arithmetic (base operators).\r
4761      * <p>\r
4762      * Unlike the specific method tests, these tests were randomly generated by\r
4763      * an IBM Object Rexx procedure, then manually corrected for known\r
4764      * differences from ANSI X3-274. These differences are:\r
4765      * <ol>\r
4766      * <li>the trigger point in exponential notation is fixed in ANSI X3-274\r
4767      * but varies with DIGITS in Classic and Object Rexx\r
4768      * <li>some trailing zeros were missing (e.g., 1.3 + 1E-60 should show\r
4769      * seven trailing zeros)\r
4770      * <li>the power operator is less accurate in Object Rexx\r
4771      * <li>ANSI X3-274 [errata 1999] rounds input numbers to DIGITS (rather\r
4772      * than truncating to DIGITS+1).\r
4773      * </ol>\r
4774      */\r
4775 \r
4776     public void diagmath() {\r
4777         com.ibm.icu.math.MathContext def;\r
4778         def = com.ibm.icu.math.MathContext.DEFAULT;\r
4779         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
4780         mathtest(2,def,"-410.832710","99.3588243E-502740862","-410.832710","-410.832710","-4.08198550E-502740858","-4.13483868E+502740862","","","1.36977786E+26");\r
4781         mathtest(3,def,"80025.2340","-8.03097581","80017.2030","80033.2650","-642680.718","-9964.57167","-9964","4.59102916","5.94544517E-40");\r
4782         mathtest(4,def,"81052020.2","-464525495","-383473475","545577515","-3.76507298E+16","-0.17448347","0","81052020.2","");\r
4783         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
4784         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
4785         mathtest(7,def,"682.25316","54470185.6","54470867.9","-54469503.4","3.71624563E+10","0.0000125252586","0","682.25316","3.48578699E+154365541");\r
4786         mathtest(8,def,"-257586757.","2082888.71","-255503868","-259669646","-5.36524548E+14","-123.668036","-123","-1391445.67","-1.26879515E+17519020");\r
4787         mathtest(9,def,"319577540.E+242599761","60.7124561","3.19577540E+242599769","3.19577540E+242599769","1.94023374E+242599771","5.26378869E+242599767","","","");\r
4788         mathtest(10,def,"-13769977.0","24371.3381","-13745605.7","-13794348.3","-3.35592765E+11","-565.007015","-565","-170.9735","-8.73734001E+173982");\r
4789         mathtest(11,def,"-475.434972E-725464311","-3.22214066E-865476836","-4.75434972E-725464309","-4.75434972E-725464309","","1.47552519E+140012527","","","");\r
4790         mathtest(12,def,"842.01250","197199893","197200735","-197199051","1.66044775E+11","0.00000426984258","0","842.01250","7.00674164E+576872502");\r
4791         mathtest(13,def,"572.173103E+280128428","-7140.19428","5.72173103E+280128430","5.72173103E+280128430","-4.08542712E+280128434","-8.01341085E+280128426","","","");\r
4792         mathtest(14,def,"674235.954E+476135291","9684.82245","6.74235954E+476135296","6.74235954E+476135296","6.52985550E+476135300","6.96177919E+476135292","","","");\r
4793         mathtest(15,def,"-360557.921E+437116514","930428850","-3.60557921E+437116519","-3.60557921E+437116519","-3.35473492E+437116528","-3.87517993E+437116510","","","");\r
4794         mathtest(16,def,"957165918E-394595705","1676.59073E-829618944","9.57165918E-394595697","9.57165918E-394595697","","5.70900161E+435023244","","","9.16166595E-789191393");\r
4795         mathtest(17,def,"-2610864.40","31245912.7","28635048.3","-33856777.1","-8.15788411E+13","-0.0835585897","0","-2610864.40","-3.12008905E+200498284");\r
4796         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
4797         mathtest(19,def,"-41085.0268","3115477.61","3074392.58","-3156562.64","-1.27999481E+11","-0.0131873927","0","-41085.0268","4.73844173E+14373829");\r
4798         mathtest(20,def,"-723420285.","2681660.35","-720738625","-726101945","-1.93996749E+15","-269.765813","-269","-2053650.85","4.14324113E+23757873");\r
4799         mathtest(21,def,"63542018.0E-817732230","-8836243.22","-8836243.22","8836243.22","-5.61472726E-817732216","-7.19106711E-817732230","0","6.35420180E-817732223","");\r
4800         mathtest(22,def,"-96051.7108","-291201.955","-387253.666","195150.244","2.79704460E+10","0.329845694","0","-96051.7108","3.53617153E-1450916");\r
4801         mathtest(23,def,"108490.853","91685996.5","91794487.4","-91577505.7","9.94709197E+12","0.00118328706","0","108490.853","6.98124265E+461675038");\r
4802         mathtest(24,def,"-27489.1735","-9835835.4E-506411649","-27489.1735","-27489.1735","2.70378986E-506411638","2.79479804E+506411646","","","4.05866472E-45");\r
4803         mathtest(25,def,"-89220406.6","993391.008E-611041175","-89220406.6","-89220406.6","-8.86307496E-611041162","-8.98139865E+611041176","","","3.19625913E+79");\r
4804         mathtest(26,def,"4.75502020","-17089144.9","-17089140.2","17089149.7","-81259229.2","-2.78247989E-7","0","4.75502020","1.0630191E-11571955");\r
4805         mathtest(27,def,"68027916.2","-796883.839","67231032.4","68824800.0","-5.42103470E+13","-85.3674185","-85","292789.885","8.29415374E-6241744");\r
4806         mathtest(28,def,"-8.01969439E+788605478","92154156.0","-8.01969439E+788605478","-8.01969439E+788605478","-7.39048168E+788605486","-8.70247717E+788605470","","","");\r
4807         mathtest(29,def,"-8012.98341","96188.8651","88175.8817","-104201.849","-770759780","-0.0833046881","0","-8012.98341","-1.16010156E+375502");\r
4808         mathtest(30,def,"21761476E+592330677","-9.70744506","2.17614760E+592330684","2.17614760E+592330684","-2.11248333E+592330685","-2.24173053E+592330683","","","");\r
4809         mathtest(31,def,"-9840778.51","-17907.219","-9858685.73","-9822871.29","1.76220976E+11","549.542534","549","-9715.279","-6.62997437E-125225");\r
4810         mathtest(32,def,"-4.1097614","-819.225776E-145214751","-4.10976140","-4.10976140","3.36682247E-145214748","5.01664074E+145214748","","","0.0000122876018");\r
4811         mathtest(33,def,"-448.880985","-394.087374E-442511435","-448.880985","-448.880985","1.76898329E-442511430","1.13903925E+442511435","","","2.46306099E-11");\r
4812         mathtest(34,def,"779.445304E+882688544","-797868519","7.79445304E+882688546","7.79445304E+882688546","-6.21894870E+882688555","-9.7690946E+882688537","","","");\r
4813         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
4814         mathtest(36,def,"-51932.8170","591840275E-278480289","-51932.8170","-51932.8170","-3.07359327E-278480276","-8.7748028E+278480284","","","1.96178443E+28");\r
4815         mathtest(37,def,"70.3552392","-4228656.73","-4228586.38","4228727.09","-297508156","-0.0000166377277","0","70.3552392","9.14742382E-7811584");\r
4816         mathtest(38,def,"1588359.34","-12232799.2","-10644439.9","13821158.5","-1.94300809E+13","-0.129844307","0","1588359.34","1.56910086E-75854960");\r
4817         mathtest(39,def,"2842.16206","-3.23234345","2838.92972","2845.39440","-9186.84392","-879.288388","-879","0.93216745","4.35565514E-11");\r
4818         mathtest(40,def,"29960.2305","45.2735747E-95205475","29960.2305","29960.2305","1.35640673E-95205469","6.61759773E+95205477","","","2.413936E+22");\r
4819         mathtest(41,def,"2916565.77","1151935.43E-787118724","2916565.77","2916565.77","3.35969544E-787118712","2.53188303E+787118724","","","2916565.77");\r
4820         mathtest(42,def,"-52723012.9E-967143787","79.4088237","79.4088237","-79.4088237","-4.18667244E-967143778","-6.63944011E-967143782","0","-5.27230129E-967143780","");\r
4821         mathtest(43,def,"-167473465","793646.597","-166679819","-168267112","-1.32914746E+14","-211.017682","-211","-14033.033","-1.19053789E+6526910");\r
4822         mathtest(44,def,"-31769071.0","133.4360","-31768937.6","-31769204.4","-4.23913776E+9","-238084.707","-238084","-94.3760","-5.84252432E+997");\r
4823         mathtest(45,def,"45960.6383","-93352.7468","-47392.1085","139313.385","-4.29055183E+9","-0.492333004","0","45960.6383","1.88335323E-435248");\r
4824         mathtest(46,def,"606.175648","5.28528458E-981983620","606.175648","606.175648","3.20381081E-981983617","1.14691203E+981983622","","","8.18450516E+13");\r
4825         mathtest(47,def,"171578.617E+643006110","-407774.293","1.71578617E+643006115","1.71578617E+643006115","-6.99653492E+643006120","-4.20768597E+643006109","","","");\r
4826         mathtest(48,def,"-682286332.","-464.871699","-682286797","-682285867","3.17175606E+11","1467687.39","1467687","-182.709787","-1.6050843E-4108");\r
4827         mathtest(49,def,"492088.428","653.72170","492742.150","491434.706","321688884","752.74911","752","489.70960","3.94658596E+3722");\r
4828         mathtest(50,def,"74303782.5","1141.68058","74304924.2","74302640.8","8.48311855E+10","65082.812","65082","926.99244","4.94849869E+8988");\r
4829         mathtest(51,def,"74.7794084E+119375329","-34799355.6","7.47794084E+119375330","7.47794084E+119375330","-2.60227522E+119375338","-2.14887337E+119375323","","","");\r
4830         mathtest(52,def,"-9432.08369","33735.5058","24303.4221","-43167.5895","-318196114","-0.279589218","0","-9432.08369","2.309567E+134087");\r
4831         mathtest(53,def,"4249198.78E-112433155","418673051.","418673051","-418673051","1.77902502E-112433140","1.01492054E-112433157","0","4.24919878E-112433149","");\r
4832         mathtest(54,def,"-2960933.02","-207933.38","-3168866.40","-2752999.64","6.15676811E+11","14.2398158","14","-49865.70","-2.75680397E-1345624");\r
4833         mathtest(55,def,"29317.7519E+945600035","1.43555750","2.93177519E+945600039","2.93177519E+945600039","4.20873186E+945600039","2.04225549E+945600039","","","2.93177519E+945600039");\r
4834         mathtest(56,def,"-51.1693770","-638055.414","-638106.583","638004.245","32648898.0","0.0000801958198","0","-51.1693770","-3.48266075E-1090443");\r
4835         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
4836         mathtest(58,def,"2538.80406E+694185197","-3386499.65","2.53880406E+694185200","2.53880406E+694185200","-8.59765906E+694185206","-7.49683839E+694185193","","","");\r
4837         mathtest(59,def,"-54344.0672","-8086.45235","-62430.5196","-46257.6149","439450710","6.72038427","6","-5825.35310","3.62916861E-38289");\r
4838         mathtest(60,def,"3.31600054","217481648","217481651","-217481645","721169262","1.5247266E-8","0","3.31600054","3.73134969E+113224119");\r
4839         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
4840         mathtest(62,def,"832689481","348040024E-882122501","832689481","832689481","2.89809267E-882122484","2.3925107E+882122501","","","5.77363381E+26");\r
4841         mathtest(63,def,"14.5512326E+257500811","60.9979577E-647314724","1.45512326E+257500812","1.45512326E+257500812","8.87595471E-389813911","2.38552784E+904815534","","","");\r
4842         mathtest(64,def,"-901.278844","449461667.","449460766","-449462568","-4.05090292E+11","-0.00000200524074","0","-901.278844","");\r
4843         mathtest(65,def,"-5.32627675","-738860216E-238273224","-5.32627675","-5.32627675","3.93537399E-238273215","7.20877459E+238273215","","","-0.00000822306838");\r
4844         mathtest(66,def,"-505383463.","3.18756328","-505383460","-505383466","-1.61094177E+9","-158548527","-158548527","-0.23671144","-1.29081226E+26");\r
4845         mathtest(67,def,"769241.44E-720927320","-145382631.","-145382631","145382631","-1.11834344E-720927306","-5.29115091E-720927323","0","7.6924144E-720927315","");\r
4846         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
4847         mathtest(69,def,"58.4721075","-712186829","-712186771","712186887","-4.16430648E+10","-8.21022028E-8","0","58.4721075","");\r
4848         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
4849         mathtest(71,def,"45.5361397","-76579063.9","-76579018.4","76579109.4","-3.48711495E+9","-5.94629098E-7","0","45.5361397","3.98335374E-126995367");\r
4850         mathtest(72,def,"594420.54E+685263039","-952420.179","5.94420540E+685263044","5.94420540E+685263044","-5.66138117E+685263050","-6.24115861E+685263038","","","");\r
4851         mathtest(73,def,"-841310701.","9398110.4","-831912591","-850708811","-7.90673085E+15","-89.5191337","-89","-4878875.4","1.30001466E+83877722");\r
4852         mathtest(74,def,"904392146E-140100276","168116093.","168116093","-168116093","1.52042874E-140100259","5.37956914E-140100276","0","9.04392146E-140100268","");\r
4853         mathtest(75,def,"-907324792E+685539670","-15.6902171","-9.07324792E+685539678","-9.07324792E+685539678","1.42361230E+685539680","5.78274211E+685539677","","","");\r
4854         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
4855         mathtest(77,def,"-741317564","630.241530E-212782946","-741317564","-741317564","-4.67209116E-212782935","-1.1762436E+212782952","","","1.65968527E+53");\r
4856         mathtest(78,def,"61867907.2","-139204670","-77336763","201072577","-8.61230161E+15","-0.444438446","0","61867907.2","");\r
4857         mathtest(79,def,"-273.622743E+531282717","-4543.68684","-2.73622743E+531282719","-2.73622743E+531282719","1.24325606E+531282723","6.02204229E+531282715","","","");\r
4858         mathtest(80,def,"-383588949.","-428640583.","-812229532","45051634","1.64421791E+17","0.89489648","0","-383588949","");\r
4859         mathtest(81,def,"-56182.2686","32.7741649","-56149.4944","-56215.0428","-1841326.94","-1714.22426","-1714","-7.3499614","-5.45476402E+156");\r
4860         mathtest(82,def,"-6366384.30","332014.980","-6034369.32","-6698399.28","-2.11373496E+12","-19.1749911","-19","-58099.680","-3.05392399E+2258994");\r
4861         mathtest(83,def,"-1.27897702","-8213776.03E-686519123","-1.27897702","-1.27897702","1.05052308E-686519116","1.55711212E+686519116","","","0.139668371");\r
4862         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
4863         mathtest(85,def,"-20630916.8","158987411.E-480500612","-20630916.8","-20630916.8","-3.28005605E-480500597","-1.29764468E+480500611","","","4.25634728E+14");\r
4864         mathtest(86,def,"-4.72705853","-97626742.4","-97626747.1","97626737.7","461487325","4.84197097E-8","0","-4.72705853","2.92654449E-65858120");\r
4865         mathtest(87,def,"8.43528169","-4573.45752","-4565.02224","4581.89280","-38578.4025","-0.00184439927","0","8.43528169","8.84248688E-4236");\r
4866         mathtest(88,def,"1.91075189","-704247089.","-704247087","704247091","-1.34564146E+9","-2.71318394E-9","0","1.91075189","6.84547494E-198037309");\r
4867         mathtest(89,def,"31997198E-551746308","326.892584","326.892584","-326.892584","1.04596467E-551746298","9.78829119E-551746304","0","3.1997198E-551746301","");\r
4868         mathtest(90,def,"127589.213","84184304.","84311893.2","-84056714.8","1.07410091E+13","0.00151559385","0","127589.213","2.87917042E+429829394");\r
4869         mathtest(91,def,"714494248","-7025063.59","707469185","721519312","-5.01936753E+15","-101.706446","-101","4962825.41","1.65018516E-62199908");\r
4870         mathtest(92,def,"-52987680.2E+279533503","-42014114.8","-5.29876802E+279533510","-5.29876802E+279533510","2.22623048E+279533518","1.26118759E+279533503","","","");\r
4871         mathtest(93,def,"-8795.0513","-225294.394E-884414238","-8795.05130","-8795.05130","1.98147575E-884414229","3.90380388E+884414236","","","1.2927759E-8");\r
4872         mathtest(94,def,"83280.1394","161566354.","161649634","-161483074","1.34552685E+13","0.000515454718","0","83280.1394","5.30774809E+794993940");\r
4873         mathtest(95,def,"112.877897","-9.96481666","102.913080","122.842714","-1124.80755","-11.3276441","-11","3.26491374","2.97790545E-21");\r
4874         mathtest(96,def,"-572542.121E+847487397","433.843420","-5.72542121E+847487402","-5.72542121E+847487402","-2.48393632E+847487405","-1.3196976E+847487400","","","");\r
4875         mathtest(97,def,"4709649.89","20949266.4","25658916.3","-16239616.5","9.86637102E+13","0.224812163","0","4709649.89","4.85293644E+139794213");\r
4876         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
4877         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
4878         mathtest(100,def,"-89.1168786E+403375873","6464.05744","-8.91168786E+403375874","-8.91168786E+403375874","-5.76056622E+403375878","-1.37865233E+403375871","","","");\r
4879         mathtest(101,def,"61774.4958","-14000.7706","47773.7252","75775.2664","-864890545","-4.41222112","-4","5771.4134","7.59030407E-67077");\r
4880         mathtest(102,def,"1.60731414","7.04330293E-427033419","1.60731414","1.60731414","1.13208004E-427033418","2.28204602E+427033418","","","27.7143921");\r
4881         mathtest(103,def,"7955012.51","-230117662.","-222162650","238072675","-1.83058888E+15","-0.0345693261","0","7955012.51","");\r
4882         mathtest(104,def,"4086661.08","1.77621994","4086662.86","4086659.30","7258808.90","2300762.98","2300762","1.73840572","1.67007988E+13");\r
4883         mathtest(105,def,"-610.076931","-207.658306","-817.735237","-402.418625","126687.542","2.93788841","2","-194.760319","4.36518377E-580");\r
4884         mathtest(106,def,"-98.6353697","-99253.3899E-716309653","-98.6353697","-98.6353697","9.78989481E-716309647","9.93773309E+716309649","","","1.14729007E-20");\r
4885         mathtest(107,def,"-959923730","409.125542E-900295528","-959923730","-959923730","-3.92729316E-900295517","-2.3462816E+900295534","","","8.49076677E+35");\r
4886         mathtest(108,def,"379965133","-8.15869657","379965125","379965141","-3.10002023E+9","-46571793.6","-46571793","5.19214999","2.30170697E-69");\r
4887         mathtest(109,def,"833.646797","1389499.46E-443407251","833.646797","833.646797","1.15835177E-443407242","5.99961944E+443407247","","","833.646797");\r
4888         mathtest(110,def,"2314933.4E-646489194","-7401538.17","-7401538.17","7401538.17","-1.71340679E-646489181","-3.12763826E-646489195","0","2.3149334E-646489188","");\r
4889         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
4890         mathtest(112,def,"-17220490.6E+726428704","19.9855688","-1.72204906E+726428711","-1.72204906E+726428711","-3.44161300E+726428712","-8.61646259E+726428709","","","");\r
4891         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
4892         mathtest(114,def,"16411470E+578192008","497470.005E-377473621","1.64114700E+578192015","1.64114700E+578192015","8.16421406E+200718399","3.29898684E+955665630","","","");\r
4893         mathtest(115,def,"-107.353544E+609689808","-659.50136E-456711743","-1.07353544E+609689810","-1.07353544E+609689810","7.07998083E+152978069","","","","");\r
4894         mathtest(116,def,"786.134163","-53.0292275E-664419768","786.134163","786.134163","-4.16880874E-664419764","-1.48245449E+664419769","","","3.33055532E-15");\r
4895         mathtest(117,def,"23.5414714","5000786.91","5000810.45","-5000763.37","117725882","0.0000047075534","0","23.5414714","4.4895618E+6860247");\r
4896         mathtest(118,def,"-69775.6113","561292120.","561222344","-561361896","-3.91645008E+13","-0.000124312473","0","-69775.6113","");\r
4897         mathtest(119,def,"919043.871","-71606613.7","-70687569.8","72525657.6","-6.58096194E+13","-0.0128346227","0","919043.871","3.05862429E-427014317");\r
4898         mathtest(120,def,"-27667.1915","-293455.107E-789181924","-27667.1915","-27667.1915","8.11907864E-789181915","9.42808315E+789181922","","","-4.72176938E-14");\r
4899         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
4900         mathtest(122,def,"847.113351","5.71511268","852.828464","841.398238","4841.34825","148.223386","148","1.27667436","3.69529538E+17");\r
4901         mathtest(123,def,"-992140475","3.82918218","-992140471","-992140479","-3.79908663E+9","-259099836","-259099836","-0.14787752","9.68930595E+35");\r
4902         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
4903         mathtest(125,def,"3799470.64","-264.703992","3799205.94","3799735.34","-1.00573505E+9","-14353.6583","-14353","174.242824","2.3625466E-1744");\r
4904         mathtest(126,def,"-8.11070247","-931284056.E-654288974","-8.11070247","-8.11070247","7.55336789E-654288965","8.70916067E+654288965","","","-6.58375662E-9");\r
4905         mathtest(127,def,"-242660177.","-6.09832715E-943742415","-242660177","-242660177","1.47982115E-943742406","3.97912692E+943742422","","","4.89788901E-51");\r
4906         mathtest(128,def,"76.1463803","-45.6758006E-636907996","76.1463803","76.1463803","-3.47804688E-636907993","-1.66710554E+636907996","","","3.90619287E-10");\r
4907         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
4908         mathtest(130,def,"6203606.54","-195.92748E-833512061","6203606.54","6203606.54","-1.21545700E-833512052","-3.1662769E+833512065","","","2.59843292E-14");\r
4909         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
4910         mathtest(132,def,"2.38638190","-807986179.","-807986177","807986181","-1.92816359E+9","-2.95349347E-9","0","2.38638190","1.19029305E-305208656");\r
4911         mathtest(133,def,"-109022296E-811981158","7.19685680","7.19685680","-7.19685680","-7.84617852E-811981150","-1.51485988E-811981151","0","-1.09022296E-811981150","");\r
4912         mathtest(134,def,"-559250.780E-273710421","-393780811.","-393780811","393780811","2.20222226E-273710407","1.42020831E-273710424","0","-5.59250780E-273710416","");\r
4913         mathtest(135,def,"-88021.9966E+555334642","7599686.64E+818884053","7.59968664E+818884059","-7.59968664E+818884059","","-1.15823192E-263549413","0","-8.80219966E+555334646","");\r
4914         mathtest(136,def,"194.317648E-197450009","-930.979064","-930.979064","930.979064","-1.80905662E-197450004","-2.08723972E-197450010","0","1.94317648E-197450007","");\r
4915         mathtest(137,def,"9495479.65","7405697.96","16901177.6","2089781.69","7.03206543E+13","1.28218565","1","2089781.69","1.0135446E+51673383");\r
4916         mathtest(138,def,"-1656.28925","-163050511E-682882380","-1656.28925","-1656.28925","2.70058809E-682882369","1.01581359E+682882375","","","3.64525265E-7");\r
4917         mathtest(139,def,"95581.3784E+64262149","-99.2879365","9.55813784E+64262153","9.55813784E+64262153","-9.49007783E+64262155","-9.62668596E+64262151","","","");\r
4918         mathtest(140,def,"643761.452","3.73446939","643765.186","643757.718","2404107.44","172383.647","172383","2.41514363","1.71751236E+23");\r
4919         mathtest(141,def,"7960.49866E-129827423","3220.22850","3220.22850","-3220.22850","2.56346247E-129827416","2.47202913E-129827423","0","7.96049866E-129827420","");\r
4920         mathtest(142,def,"-6356.64112E-707203818","1805054.98","1805054.98","-1805054.98","-1.14740867E-707203808","-3.52157756E-707203821","0","-6.35664112E-707203815","");\r
4921         mathtest(143,def,"2.3904042","8476.52006","8478.91046","-8474.12966","20262.3092","0.000282003013","0","2.3904042","2.00251752E+3208");\r
4922         mathtest(144,def,"-713298.658","-957.782729","-714256.441","-712340.875","683185135","744.739528","744","-708.307624","3.68122321E-5608");\r
4923         mathtest(145,def,"607779233.E-820497365","-20.1188742E-857318323","6.07779233E-820497357","6.07779233E-820497357","","-3.02094057E+36820965","","","");\r
4924         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
4925         mathtest(147,def,"51542399.1","-23212.2414","51519186.9","51565611.3","-1.19641461E+12","-2220.4835","-2220","11223.1920","1.71641348E-179015");\r
4926         mathtest(148,def,"4.44287230","158923023","158923027","-158923019","706074697","2.79561275E-8","0","4.44287230","7.12573416E+102928693");\r
4927         mathtest(149,def,"-79123682.6","-3.8571770","-79123686.5","-79123678.8","305194049","20513365.8","20513365","-2.9293950","2.55137345E-32");\r
4928         mathtest(150,def,"-80.3324347E-569715030","883142.351","883142.351","-883142.351","-7.09449752E-569715023","-9.09620455E-569715035","0","-8.03324347E-569715029","");\r
4929         mathtest(151,def,"13637.483","-52798.5631","-39161.0801","66436.0461","-720039507","-0.258292692","0","13637.483","1.47163791E-218310");\r
4930         mathtest(152,def,"6.42934843E-276476458","84057440.0E-388039782","6.42934843E-276476458","6.42934843E-276476458","5.40434570E-664516232","7.64875593E+111563316","","","");\r
4931         mathtest(153,def,"-5.64133087","-17401297.","-17401302.6","17401291.4","98166473.9","3.24190253E-7","0","-5.64133087","-1.25908916E-13075014");\r
4932         mathtest(154,def,"95469.7057E+865733824","198.829749","9.54697057E+865733828","9.54697057E+865733828","1.89822176E+865733831","4.80158056E+865733826","","","");\r
4933         mathtest(155,def,"-416466.209","-930153427","-930569893","929736961","3.87377472E+14","0.000447739262","0","-416466.209","");\r
4934         mathtest(156,def,"-1541733.85","-1.99208708","-1541735.84","-1541731.86","3071268.08","773928.944","773928","-1.88034976","4.20708401E-13");\r
4935         mathtest(157,def,"-39152691.8","-645131748.","-684284440","605979056","2.52586445E+16","0.0606894513","0","-39152691.8","");\r
4936         mathtest(158,def,"113.939979","-58282550.4","-58282436.5","58282664.3","-6.64071257E+9","-0.0000019549587","0","113.939979","2.106557E-119868330");\r
4937         mathtest(159,def,"-324971.736","-9517.15154","-334488.888","-315454.585","3.09280526E+9","34.1459033","34","-1388.58364","-5.82795263E-52457");\r
4938         mathtest(160,def,"-76.9436744","-9548122.75E-273599728","-76.9436744","-76.9436744","7.34667648E-273599720","8.05851332E+273599722","","","1.37489895E-19");\r
4939         mathtest(161,def,"-430393.282","-70.2551505","-430463.537","-430323.027","30237344.8","6126.14561","6126","-10.2300370","4.26006409E-395");\r
4940         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
4941         mathtest(163,def,"23.1543212E-655822712","5848.20853","5848.20853","-5848.20853","1.35411299E-655822707","3.95921607E-655822715","0","2.31543212E-655822711","");\r
4942         mathtest(164,def,"-174.261308E-82902077","-200096204.","-200096204","200096204","3.48690262E-82902067","8.70887626E-82902084","0","-1.74261308E-82902075","");\r
4943         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
4944         mathtest(166,def,"424768856.","-971.71757","424767884","424769828","-4.12755361E+11","-437132.012","-437132","11.19076","2.72651473E-8387");\r
4945         mathtest(167,def,"7181.2767","999117.918","1006299.19","-991936.641","7.17494223E+9","0.00718761677","0","7181.2767","3.09655124E+3852800");\r
4946         mathtest(168,def,"8096417.07E-433694528","-68.4863363","-68.4863363","68.4863363","-5.54493942E-433694520","-1.18219451E-433694523","0","8.09641707E-433694522","");\r
4947         mathtest(169,def,"1236287.5","-7119.97299E-176200498","1236287.50","1236287.50","-8.80233361E-176200489","-1.73636544E+176200500","","","2.26549784E-43");\r
4948         mathtest(170,def,"-752995833E-654401067","-15.2736930E+803939983","-1.52736930E+803939984","1.52736930E+803939984","1.15010272E+149538926","","0","-7.52995833E-654401059","");\r
4949         mathtest(171,def,"702992.459","-312.689474","702679.770","703305.148","-219818342","-2248.21274","-2248","66.521448","8.02493322E-1831");\r
4950         mathtest(172,def,"-4414.38805","-17680.4630E-584364536","-4414.38805","-4414.38805","7.80484246E-584364529","2.49676044E+584364535","","","5.13167312E-8");\r
4951         mathtest(173,def,"9.46350807","7826.65424","7836.11775","-7817.19073","74067.6056","0.00120913839","0","9.46350807","3.63271495E+7639");\r
4952         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
4953         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
4954         mathtest(176,def,"66.2319284E+730468479","25.9391685E+221147044","6.62319284E+730468480","6.62319284E+730468480","1.71800115E+951615526","2.55335588E+509321435","","","");\r
4955         mathtest(177,def,"317997088.E-90968742","-977426.461","-977426.461","977426.461","-3.10818768E-90968728","-3.2534119E-90968740","0","3.17997088E-90968734","");\r
4956         mathtest(178,def,"227473386","-6759.61390","227466626","227480146","-1.53763226E+12","-33651.8312","-33651","5618.65110","1.40992627E-56493");\r
4957         mathtest(179,def,"-392019.462","-245456.503","-637475.965","-146562.959","9.62237263E+10","1.59710359","1","-146562.959","-3.08656533E-1372917");\r
4958         mathtest(180,def,"-3619556.28E+587673583","-3.45236972","-3.61955628E+587673589","-3.61955628E+587673589","1.24960465E+587673590","1.04842661E+587673589","","","");\r
4959         mathtest(181,def,"-249.400704E-923930848","831102.919","831102.919","-831102.919","-2.07277653E-923930840","-3.00084019E-923930852","0","-2.49400704E-923930846","");\r
4960         mathtest(182,def,"65234.2739E+154949914","-694581895","6.52342739E+154949918","6.52342739E+154949918","-4.53105456E+154949927","-9.39187652E+154949909","","","");\r
4961         mathtest(183,def,"45.2316213","-88775083.4","-88775038.2","88775128.6","-4.01544095E+9","-5.09508069E-7","0","45.2316213","1.92314254E-146962015");\r
4962         mathtest(184,def,"331100375.","442.343378","331100817","331099933","1.46460058E+11","748514.37","748514","163.759708","6.64011043E+3765");\r
4963         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
4964         mathtest(186,def,"-5738.13069E+789464078","33969715.0","-5.73813069E+789464081","-5.73813069E+789464081","-1.94922664E+789464089","-1.68919012E+789464074","","","");\r
4965         mathtest(187,def,"-7413.03911","2.70630320E-254858264","-7413.03911","-7413.03911","-2.00619315E-254858260","-2.73917539E+254858267","","","-4.07369842E+11");\r
4966         mathtest(188,def,"-417696.182","27400.6002","-390295.582","-445096.782","-1.14451261E+10","-15.2440523","-15","-6687.1790","-1.58020334E+154017");\r
4967         mathtest(189,def,"68.8538735E+655647287","3198.17933E-132454826","6.88538735E+655647288","6.88538735E+655647288","2.20207035E+523192466","2.15290846E+788102111","","","");\r
4968         mathtest(190,def,"-6817.04246","434420.439","427603.397","-441237.481","-2.96146258E+9","-0.0156922692","0","-6817.04246","5.94143518E+1665390");\r
4969         mathtest(191,def,"8578.27511","647042.341E-490924334","8578.27511","8578.27511","5.55050721E-490924325","1.3257672E+490924332","","","3.98473846E+23");\r
4970         mathtest(192,def,"4124.11615E+733109424","597385828E+375928745","4.12411615E+733109427","4.12411615E+733109427","","6.9036056E+357180673","","","");\r
4971         mathtest(193,def,"102.714400","-919017.468","-918914.754","919120.182","-94396327.8","-0.000111765449","0","102.714400","4.04295689E-1848724");\r
4972         mathtest(194,def,"-4614.33015E+996778733","-433.560812E+22860599","-4.61433015E+996778736","-4.61433015E+996778736","","1.06428672E+973918135","","","");\r
4973         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
4974         mathtest(196,def,"-2522468.15","-48482043.5","-51004511.7","45959575.4","1.22294411E+14","0.0520289156","0","-2522468.15","1.42348178E-310373595");\r
4975         mathtest(197,def,"-659811384","62777.6118","-659748606","-659874162","-4.14213829E+13","-10510.2976","-10510","-18683.9820","3.4393524E+553665");\r
4976         mathtest(198,def,"4424.94176","-825848.20","-821423.258","830273.142","-3.65433019E+9","-0.00535805704","0","4424.94176","3.42152775E-3010966");\r
4977         mathtest(199,def,"43.6441884","-6509.89663E-614169377","43.6441884","43.6441884","-2.84119155E-614169372","-6.70428286E+614169374","","","3.31524056E-12");\r
4978         mathtest(200,def,"897.388381E-843864876","84195.1369","84195.1369","-84195.1369","7.55557376E-843864869","1.06584348E-843864878","0","8.97388381E-843864874","");\r
4979         mathtest(201,def,"796199825","496.76834","796200322","796199328","3.95526865E+11","1602758.79","1602758","393.91828","6.42647264E+4423");\r
4980         mathtest(202,def,"573583582","1598.69521","573585181","573581983","9.16985325E+11","358782.323","358782","517.16578","9.91156302E+14004");\r
4981         mathtest(203,def,"-783144270.","6347.71496","-783137922","-783150618","-4.97117660E+12","-123374.202","-123374","-1284.52496","1.28110803E+56458");\r
4982         mathtest(204,def,"26909234.7","52411.5081","26961646.2","26856823.2","1.41035357E+12","513.422255","513","22131.0447","9.75836528E+389415");\r
4983         mathtest(205,def,"8.21915282","24859.7841E-843282959","8.21915282","8.21915282","2.04326365E-843282954","3.30620443E+843282955","","","67.5544731");\r
4984         mathtest(206,def,"-688.387710","82783.5207E-831870858","-688.387710","-688.387710","-5.69871582E-831870851","-8.31551623E+831870855","","","5.04272012E+22");\r
4985         mathtest(207,def,"-9792232.","-1749.01166","-9793981.01","-9790482.99","1.71267279E+10","5598.72311","5598","-1264.72732","-8.86985674E-12228");\r
4986         mathtest(208,def,"-130.765600","8.67437427","-122.091226","-139.439974","-1134.30976","-15.0749317","-15","-0.64998595","-1.11799947E+19");\r
4987         mathtest(209,def,"917.259102","-368640.426","-367723.167","369557.685","-338138786","-0.00248822169","0","917.259102","8.67104255E-1092094");\r
4988         mathtest(210,def,"-4.9725631","-294563717.","-294563722","294563712","1.46473667E+9","1.6881112E-8","0","-4.9725631","-6.27962584E-205187284");\r
4989         mathtest(211,def,"-60962887.2E-514249661","-243021.407","-243021.407","243021.407","1.48152866E-514249648","2.5085398E-514249659","0","-6.09628872E-514249654","");\r
4990         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
4991         mathtest(213,def,"681.666010","626886700","626887382","-626886018","4.27327356E+11","0.00000108738311","0","681.666010","");\r
4992         mathtest(214,def,"6.42652138","53465894.5","53465900.9","-53465888.1","343599714","1.2019852E-7","0","6.42652138","4.61155532E+43199157");\r
4993         mathtest(215,def,"561546656","651408.476","562198064","560895248","3.65796251E+14","862.049968","862","32549.688","8.6052377E+5699419");\r
4994         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
4995         mathtest(217,def,"54486.2112","10.7565078","54496.9677","54475.4547","586081.356","5065.41828","5065","4.4991930","1.25647168E+52");\r
4996         mathtest(218,def,"16576482.5","-2217720.83","14358761.7","18794203.3","-3.67620105E+13","-7.47455779","-7","1052436.69","1.38259374E-16010820");\r
4997         mathtest(219,def,"61.2793787E-392070111","6.22575651","6.22575651","-6.22575651","3.81510491E-392070109","9.84288072E-392070111","0","6.12793787E-392070110","");\r
4998         mathtest(220,def,"5115136.39","-653674372.","-648559236","658789508","-3.34363357E+15","-0.00782520565","0","5115136.39","");\r
4999         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
5000         mathtest(222,def,"-387781.3E+284108380","-218085.592","-3.87781300E+284108385","-3.87781300E+284108385","8.45695144E+284108390","1.77811517E+284108380","","","");\r
5001         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
5002         mathtest(224,def,"-20837.2900E-168652772","-8236.78305E-712819173","-2.08372900E-168652768","-2.08372900E-168652768","1.71632237E-881471937","2.52978497E+544166401","","","");\r
5003         mathtest(225,def,"-98573.8722E+829022366","309011.007","-9.85738722E+829022370","-9.85738722E+829022370","-3.04604115E+829022376","-3.18997932E+829022365","","","");\r
5004         mathtest(226,def,"49730750.7","-5315.10636E-299586991","49730750.7","49730750.7","-2.64324229E-299586980","-9.35649211E+299586994","","","3.28756936E-39");\r
5005         mathtest(227,def,"1539523.40","-962388.581","577134.82","2501911.98","-1.48161974E+12","-1.59969001","-1","577134.819","3.10144834E-5954673");\r
5006         mathtest(228,def,"81596.2121","-37600.9653","43995.2468","119197.177","-3.06809634E+9","-2.17005631","-2","6394.2815","1.97878299E-184684");\r
5007         mathtest(229,def,"590146199","-1425404.61","588720794","591571604","-8.41197113E+14","-414.020128","-414","28690.46","2.04650994E-12502170");\r
5008         mathtest(230,def,"196.05543","505.936305","701.991735","-309.880875","99191.5598","0.387510104","0","196.05543","8.78437397E+1159");\r
5009         mathtest(231,def,"77.8058449","-642.275274","-564.469429","720.081119","-49972.7704","-0.121140963","0","77.8058449","9.33582626E-1215");\r
5010         mathtest(232,def,"1468.60684","10068.138","11536.7448","-8599.5312","14786136.3","0.145866777","0","1468.60684","2.54122484E+31884");\r
5011         mathtest(233,def,"4.98774767E-387968632","4.41731439E-578812376","4.98774767E-387968632","4.98774767E-387968632","2.20324496E-966781007","1.12913577E+190843744","","","");\r
5012         mathtest(234,def,"981.091059","-92238.9930","-91257.9020","93220.0841","-90494851.3","-0.0106364025","0","981.091059","5.29943342E-275953");\r
5013         mathtest(235,def,"-3606.24992","8290224.70","8286618.45","-8293830.95","-2.98966222E+10","-0.000435000262","0","-3606.24992","-1.23747107E+29488793");\r
5014         mathtest(236,def,"-8978571.35","92243.4796","-8886327.87","-9070814.83","-8.28214663E+11","-97.3355666","-97","-30953.8288","-4.95762813E+641384");\r
5015         mathtest(237,def,"-61968.1992E+810060478","474294671.E+179263414","-6.19681992E+810060482","-6.19681992E+810060482","-2.93911867E+989323905","-1.30653374E+630797060","","","");\r
5016         mathtest(238,def,"61298431.6E-754429041","-2584862.79","-2584862.79","2584862.79","-1.58448035E-754429027","-2.37143851E-754429040","0","6.12984316E-754429034","");\r
5017         mathtest(239,def,"621039.064","-5351539.62","-4730500.56","5972578.68","-3.32351516E+12","-0.116048672","0","621039.064","2.41163312E-31002108");\r
5018         mathtest(240,def,"-19.6007605","-57905696.","-57905715.6","57905676.4","1.13499568E+9","3.38494515E-7","0","-19.6007605","1.05663646E-74829963");\r
5019         mathtest(241,def,"3626.13109E+687030346","189.896004","3.62613109E+687030349","3.62613109E+687030349","6.88587804E+687030351","1.90953523E+687030347","","","");\r
5020         mathtest(242,def,"-249334.026","-7.54735834E-14137188","-249334.026","-249334.026","1.88181324E-14137182","3.30359332E+14137192","","","6.69495408E-44");\r
5021         mathtest(243,def,"417613928.","-925213.216","416688715","418539141","-3.86381925E+14","-451.370474","-451","342767.584","8.38430085E-7976054");\r
5022         mathtest(244,def,"23.8320309","-50074996.1","-50074972.3","50075019.9","-1.19338885E+9","-4.75926765E-7","0","23.8320309","5.81466387E-68961335");\r
5023         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
5024         mathtest(246,def,"-8907163.61E-741867246","773651.288E-472033282","7.73651288E-472033277","-7.73651288E-472033277","","-1.15131504E-269833963","0","-8.90716361E-741867240","");\r
5025         mathtest(247,def,"514021711.E+463536646","617441659.","5.14021711E+463536654","5.14021711E+463536654","3.17378418E+463536663","8.32502478E+463536645","","","");\r
5026         mathtest(248,def,"998175750","2.39285478","998175752","998175748","2.38848961E+9","417148487","417148486","1.30513692","9.96354828E+17");\r
5027         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
5028         mathtest(250,def,"4352626.8","-130338048.E-744560911","4352626.80","4352626.80","-5.67312881E-744560897","-3.33949055E+744560909","","","2.29746322E-7");\r
5029         mathtest(251,def,"437.286960","7.37560835","444.662568","429.911352","3225.25735","59.2882565","59","2.12606735","3.05749452E+18");\r
5030         mathtest(252,def,"8498280.45E+220511522","588617612","8.49828045E+220511528","8.49828045E+220511528","5.00223754E+220511537","1.44376931E+220511520","","","");\r
5031         mathtest(253,def,"-5320387.77","-7673237.46","-12993625.2","2352849.69","4.08245987E+13","0.693369363","0","-5320387.77","-1.30113745E-51609757");\r
5032         mathtest(254,def,"587655375","-4.9748366","587655370","587655380","-2.92348947E+9","-118125563","-118125563","0.7919942","1.42687667E-44");\r
5033         mathtest(255,def,"1266098.44","-2661.64904E-642601142","1266098.44","1266098.44","-3.36990970E-642601133","-4.75681963E+642601144","","","4.92717036E-19");\r
5034         mathtest(256,def,"3.92737463E+482873483","-685.522747","3.92737463E+482873483","3.92737463E+482873483","-2.69230464E+482873486","-5.72902161E+482873480","","","");\r
5035         mathtest(257,def,"22826494.1","986189474.","1.00901597E+9","-963362980","2.25112482E+16","0.0231461547","0","22826494.1","");\r
5036         mathtest(258,def,"-647342.380","-498816386","-499463728","498169044","3.22904986E+14","0.00129775685","0","-647342.380","");\r
5037         mathtest(259,def,"393092373.","-25.7226822","393092347","393092399","-1.01113902E+10","-15281935.6","-15281935","15.5939430","3.49252839E-224");\r
5038         mathtest(260,def,"2.96253492","20.7444888","23.7070237","-17.7819539","61.4562725","0.142810698","0","2.96253492","8.03402246E+9");\r
5039         mathtest(261,def,"53553.3750E+386955423","-732470876","5.35533750E+386955427","5.35533750E+386955427","-3.92262875E+386955436","-7.31133165E+386955418","","","");\r
5040         mathtest(262,def,"-696451.406E-286535917","-73086090.8","-73086090.8","73086090.8","5.09009107E-286535904","9.52919219E-286535920","0","-6.96451406E-286535912","");\r
5041         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
5042         mathtest(264,def,"-205123006.E-213752799","-78638468.6","-78638468.6","78638468.6","1.61305591E-213752783","2.60843083E-213752799","0","-2.05123006E-213752791","");\r
5043         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
5044         mathtest(266,def,"3068999.37","2.21006212","3069001.58","3068997.16","6782679.25","1388648.46","1388648","1.02718624","9.41875713E+12");\r
5045         mathtest(267,def,"625524274.","55.2468624","625524329","625524219","3.45582535E+10","11322349.3","11322349","16.7522224","6.21482943E+483");\r
5046         mathtest(268,def,"61269134.9","-845761303.","-784492168","907030438","-5.18190634E+16","-0.0724425848","0","61269134.9","");\r
5047         mathtest(269,def,"-2840.12099","-2856.76731E-82743650","-2840.12099","-2840.12099","8.11356480E-82743644","9.94173022E+82743649","","","-4.36505254E-11");\r
5048         mathtest(270,def,"8.9538781","-7.56603391","1.38784419","16.5199120","-67.7453453","-1.18343087","-1","1.38784419","2.42053061E-8");\r
5049         mathtest(271,def,"-56233547.2","509752530","453518983","-565986077","-2.86651930E+16","-0.110315386","0","-56233547.2","");\r
5050         mathtest(272,def,"-3167.47853E-854859497","-110852115","-110852115","110852115","3.51121694E-854859486","2.85739116E-854859502","0","-3.16747853E-854859494","");\r
5051         mathtest(273,def,"-5652.52092","-632243244.","-632248897","632237592","3.57376816E+12","0.00000894042123","0","-5652.52092","");\r
5052         mathtest(274,def,"-946.009928","820090.66E-589278015","-946.009928","-946.009928","-7.75813906E-589278007","-1.15354311E+589278012","","","6.41454053E+23");\r
5053         mathtest(275,def,"-367.757758","-959.626016","-1327.38377","591.868258","352909.912","0.383230292","0","-367.757758","1.14982199E-2463");\r
5054         mathtest(276,def,"809926721.E-744611554","-67.6560549","-67.6560549","67.6560549","-5.47964467E-744611544","-1.19712378E-744611547","0","8.09926721E-744611546","");\r
5055         mathtest(277,def,"-1725.08555","75586.3031","73861.2176","-77311.3887","-130392839","-0.0228227269","0","-1725.08555","3.70540587E+244657");\r
5056         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
5057         mathtest(279,def,"-91.1431113","12147507.0","12147415.9","-12147598.1","-1.10716158E+9","-0.00000750303015","0","-91.1431113","-1.52417006E+23805759");\r
5058         mathtest(280,def,"-1136778.91E+697783878","-801552569.","-1.13677891E+697783884","-1.13677891E+697783884","9.11188056E+697783892","1.41822128E+697783875","","","");\r
5059         mathtest(281,def,"73123773.0E+433334149","63.3548930","7.31237730E+433334156","7.31237730E+433334156","4.63274881E+433334158","1.15419298E+433334155","","","");\r
5060         mathtest(282,def,"-9765484.8","7979.90802E-234029715","-9765484.80","-9765484.80","-7.79276705E-234029705","-1.22375907E+234029718","","","8.27085614E+55");\r
5061         mathtest(283,def,"-695010288","-8.26582820","-695010296","-695010280","5.74483564E+9","84082353.4","84082353","-3.45024540","1.83683495E-71");\r
5062         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
5063         mathtest(285,def,"2862.95921","-32601248.6E-605861333","2862.95921","2862.95921","-9.33360449E-605861323","-8.78174712E+605861328","","","4.26142175E-11");\r
5064         mathtest(286,def,"-13.133518E+246090516","-8.71269925E-945092108","-1.31335180E+246090517","-1.31335180E+246090517","1.14428392E-699001590","","","","");\r
5065         mathtest(287,def,"-34671.2232","817710.762","783039.539","-852381.985","-2.83510323E+10","-0.0424003508","0","-34671.2232","-5.30788828E+3712382");\r
5066         mathtest(288,def,"-22464769","62.4366060","-22464706.6","-22464831.4","-1.40262393E+9","-359801.252","-359801","-15.7245940","6.21042536E+455");\r
5067         mathtest(289,def,"-9458.60887E-563051963","5676056.01","5676056.01","-5676056.01","-5.36875937E-563051953","-1.66640513E-563051966","0","-9.45860887E-563051960","");\r
5068         mathtest(290,def,"-591.924123E-95331874","-134.596188","-134.596188","134.596188","7.96707305E-95331870","4.39777777E-95331874","0","-5.91924123E-95331872","");\r
5069         mathtest(291,def,"-182566085.E+68870646","-960345993.","-1.82566085E+68870654","-1.82566085E+68870654","1.75326608E+68870663","1.9010449E+68870645","","","");\r
5070         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
5071         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
5072         mathtest(294,def,"-2.09044362E-876527908","-6515463.33","-6515463.33","6515463.33","1.36202087E-876527901","3.20843433E-876527915","0","-2.09044362E-876527908","");\r
5073         mathtest(295,def,"-194343.344","1.95929977","-194341.385","-194345.303","-380776.869","-99190.2041","-99190","-0.39981370","3.77693354E+10");\r
5074         mathtest(296,def,"-326002.927","4215.99030","-321786.937","-330218.917","-1.37442518E+9","-77.3253503","-77","-1371.67390","5.51875821E+23243");\r
5075         mathtest(297,def,"-12037.8590E+876429044","314.81827","-1.20378590E+876429048","-1.20378590E+876429048","-3.78973794E+876429050","-3.82374854E+876429045","","","");\r
5076         mathtest(298,def,"21036045.4E-162804809","-91.7149219","-91.7149219","91.7149219","-1.92931926E-162804800","-2.2936339E-162804804","0","2.10360454E-162804802","");\r
5077         mathtest(299,def,"-947019.534","9916.29280","-937103.241","-956935.827","-9.39092299E+9","-95.5013686","-95","-4971.71800","3.76029022E+59261");\r
5078         mathtest(300,def,"-5985.84136","-12.4090184E-12364204","-5985.84136","-5985.84136","7.42784156E-12364200","4.82378313E+12364206","","","-0.000167060893");\r
5079         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
5080         mathtest(302,def,"-94.1947070E-938257103","15003.240","15003.2400","-15003.2400","-1.41322580E-938257097","-6.27829102E-938257106","0","-9.41947070E-938257102","");\r
5081         mathtest(303,def,"-4846233.6","-8289769.76","-13136003.4","3443536.16","4.01741607E+13","0.584604125","0","-4846233.6","4.25077524E-55420465");\r
5082         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
5083         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
5084         mathtest(306,def,"22780314.3","8805279.83","31585594.1","13975034.5","2.00587042E+14","2.58711986","2","5169754.64","2.39132169E+64785373");\r
5085         mathtest(307,def,"596745.184","197602423.","198199168","-197005678","1.17918294E+14","0.00301992848","0","596745.184","");\r
5086         mathtest(308,def,"171.340497","-480349.924","-480178.584","480521.264","-82303394.7","-0.000356699332","0","171.340497","2.17914102E-1073035");\r
5087         mathtest(309,def,"824.65555","-379287.530","-378462.875","380112.186","-312781567","-0.00217422268","0","824.65555","6.35829256E-1106108");\r
5088         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
5089         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
5090         mathtest(312,def,"-850.123915E+662955309","6774849.81E-846576865","-8.50123915E+662955311","-8.50123915E+662955311","-5.75946184E-183621547","","","","");\r
5091         mathtest(313,def,"-23349.7724","2921.35355","-20428.4189","-26271.1260","-68212940.5","-7.99279238","-7","-2900.29755","-5.6705546E+12759");\r
5092         mathtest(314,def,"18886653.3","568707476.","587594129","-549820823","1.07409809E+16","0.0332097855","0","18886653.3","");\r
5093         mathtest(315,def,"-90552818.0","-542.03563E-986606878","-90552818.0","-90552818.0","4.90828538E-986606868","1.67060638E+986606883","","","-1.64244241E-40");\r
5094         mathtest(316,def,"41501126.1E+791838765","-69.6651675E+204268348","4.15011261E+791838772","4.15011261E+791838772","-2.89118290E+996107122","-5.95722763E+587570422","","","");\r
5095         mathtest(317,def,"76783193.3E-271488154","3765.01829E-520346003","7.67831933E-271488147","7.67831933E-271488147","2.89090127E-791834146","2.03938434E+248857853","","","");\r
5096         mathtest(318,def,"4192.9928","987822007E-146560989","4192.99280","4192.99280","4.14193056E-146560977","4.24468454E+146560983","","","1.67973653E+36");\r
5097         mathtest(319,def,"-891845.629","48277955.","47386109.4","-49169800.6","-4.30564831E+13","-0.0184731443","0","-891845.629","-6.32964147E+287267817");\r
5098         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
5099         mathtest(321,def,"4.49868636","-341880896E-447251873","4.49868636","4.49868636","-1.53801492E-447251864","-1.31586363E+447251865","","","0.010983553");\r
5100         mathtest(322,def,"807615.58","-314286480","-313478865","315094096","-2.53822658E+14","-0.00256967968","0","807615.58","");\r
5101         mathtest(323,def,"-37.7457954","53277.8129E-859225538","-37.7457954","-37.7457954","-2.01101343E-859225532","-7.08471188E+859225534","","","-76620134.1");\r
5102         mathtest(324,def,"-28671081.","98.8819623","-28670982.1","-28671179.9","-2.83505275E+9","-289952.589","-289952","-58.2671904","-1.93625566E+738");\r
5103         mathtest(325,def,"-89752.2106E-469496896","99.9879961","99.9879961","-99.9879961","-8.97414368E-469496890","-8.97629857E-469496894","0","-8.97522106E-469496892","");\r
5104         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
5105         mathtest(327,def,"845739221E-654202565","-33313.1551","-33313.1551","33313.1551","-2.81742418E-654202552","-2.53875449E-654202561","0","8.45739221E-654202557","");\r
5106         mathtest(328,def,"742.332067E+537827843","-4532.70023E-855387414","7.42332067E+537827845","7.42332067E+537827845","-3.36476873E-317559565","","","","");\r
5107         mathtest(329,def,"-893.48654","670389960","670389067","-670390853","-5.98984406E+11","-0.00000133278628","0","-893.48654","");\r
5108         mathtest(330,def,"1.37697162","-915.737474E-351578724","1.37697162","1.37697162","-1.26094451E-351578721","-1.50367508E+351578721","","","0.0561920784");\r
5109         mathtest(331,def,"-65.2839808E+550288403","-121389.306","-6.52839808E+550288404","-6.52839808E+550288404","7.92477712E+550288409","5.37806689E+550288399","","","");\r
5110         mathtest(332,def,"-30346603.E+346067390","792661.544","-3.03466030E+346067397","-3.03466030E+346067397","-2.40545852E+346067403","-3.82844396E+346067391","","","");\r
5111         mathtest(333,def,"-61170.7065","-453731131.","-453792302","453669960","2.77550538E+13","0.000134817081","0","-61170.7065","");\r
5112         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
5113         mathtest(335,def,"300703925.","-3156736.8","297547188","303860662","-9.49243146E+14","-95.2578387","-95","813929.0","4.18609114E-26763256");\r
5114         mathtest(336,def,"192138216E+353011592","-473.080633","1.92138216E+353011600","1.92138216E+353011600","-9.08968688E+353011602","-4.06142637E+353011597","","","");\r
5115         mathtest(337,def,"8607.64794","-34740.3367","-26132.6888","43347.9846","-299032588","-0.247770999","0","8607.64794","1.29604519E-136698");\r
5116         mathtest(338,def,"-67913.8241","-93815.4229","-161729.247","25901.5988","6.37136413E+9","0.723908948","0","-67913.8241","-6.96355203E-453311");\r
5117         mathtest(339,def,"34.5559455","-998799398.","-998799364","998799433","-3.45144576E+10","-3.45974833E-8","0","34.5559455","");\r
5118         mathtest(340,def,"387995.328","990199543.E-124623607","387995.328","387995.328","3.84192796E-124623593","3.91835495E+124623603","","","7.73152138E+55");\r
5119         mathtest(341,def,"-471.09166E-83521919","-441222368","-441222368","441222368","2.07856178E-83521908","1.06769669E-83521925","0","-4.7109166E-83521917","");\r
5120         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
5121         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
5122         mathtest(344,def,"23.2745547","2.23194245E-221062592","23.2745547","23.2745547","5.19474666E-221062591","1.04279368E+221062593","","","541.704896");\r
5123         mathtest(345,def,"671.083363E-218324205","-787150031","-787150031","787150031","-5.28243290E-218324194","-8.52548227E-218324212","0","6.71083363E-218324203","");\r
5124         mathtest(346,def,"365167.80","-80263.6516","284904.148","445431.452","-2.93097011E+10","-4.54960362","-4","44113.1936","1.27052227E-446468");\r
5125         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
5126         mathtest(348,def,"416998859.","260.220323E-349285593","416998859","416998859","1.08511578E-349285582","1.60248383E+349285599","","","7.25111178E+25");\r
5127         mathtest(349,def,"7267.17611E+862630607","4021.56861","7.26717611E+862630610","7.26717611E+862630610","2.92254473E+862630614","1.80705014E+862630607","","","");\r
5128         mathtest(350,def,"12.2142434E+593908740","5.27236571E-396050748","1.22142434E+593908741","1.22142434E+593908741","6.43979581E+197857993","2.3166533E+989959488","","","");\r
5129         mathtest(351,def,"-28.591932","-1.79153238E-817064576","-28.5919320","-28.5919320","5.12233720E-817064575","1.59594838E+817064577","","","0.00122324372");\r
5130         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
5131         mathtest(353,def,"1.7270628","-1325026.67","-1325024.94","1325028.40","-2288404.27","-0.00000130341739","0","1.7270628","2.09260036E-314440");\r
5132         mathtest(354,def,"33402118.","-5534.83745","33396583.2","33407652.8","-1.84875294E+11","-6034.8869","-6034","4908.82670","8.14473913E-41645");\r
5133         mathtest(355,def,"-439842.506","-775110.807","-1214953.31","335268.301","3.40926680E+11","0.567457584","0","-439842.506","-1.84678472E-4374182");\r
5134         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
5135         mathtest(357,def,"-14161.9142","8306.49493","-5855.4193","-22468.4091","-117635869","-1.70492059","-1","-5855.41927","1.65573372E+34479");\r
5136         mathtest(358,def,"-6417227.13","16679.8842","-6400547.25","-6433907.01","-1.07038605E+11","-384.728518","-384","-12151.5972","3.58767978E+113546");\r
5137         mathtest(359,def,"514825024.","-25.0446345E-103809457","514825024","514825024","-1.28936046E-103809447","-2.05563002E+103809464","","","7.32860062E-27");\r
5138         mathtest(360,def,"525948196","219450390","745398586","306497806","1.15419537E+17","2.39666102","2","87047416","");\r
5139         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
5140         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
5141         mathtest(363,def,"-3.48593871E-940579904","-20265.9640E-322988987","-2.02659640E-322988983","2.02659640E-322988983","","1.72009519E-617590921","0","-3.48593871E-940579904","");\r
5142         mathtest(364,def,"-328103480.","-721.949371E-923938665","-328103480","-328103480","2.36874101E-923938654","4.54468822E+923938670","","","-2.4430038E-60");\r
5143         mathtest(365,def,"-1857.01448","19081578.1","19079721.1","-19083435.1","-3.54347668E+10","-0.0000973197537","0","-1857.01448","8.44397087E+62374153");\r
5144         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
5145         mathtest(367,def,"-643.211399E+441807003","-50733419.2","-6.43211399E+441807005","-6.43211399E+441807005","3.26323135E+441807013","1.26782584E+441806998","","","");\r
5146         mathtest(368,def,"-53991661.4E-843339554","20718.7346","20718.7346","-20718.7346","-1.11863890E-843339542","-2.60593431E-843339551","0","-5.39916614E-843339547","");\r
5147         mathtest(369,def,"-900181424","-105763982.","-1.00594541E+9","-794417442","9.52067719E+16","8.51122856","8","-54069568","1.32627061E-947045602");\r
5148         mathtest(370,def,"94218.7462E+563233951","19262.6382E+765263890","1.92626382E+765263894","-1.92626382E+765263894","","4.89126906E-202029939","0","9.42187462E+563233955","");\r
5149         mathtest(371,def,"28549.271E+921331828","-2150590.40","2.85492710E+921331832","2.85492710E+921331832","-6.13977881E+921331838","-1.32750853E+921331826","","","");\r
5150         mathtest(372,def,"810.7080E+779625763","5957.94044","8.10708000E+779625765","8.10708000E+779625765","4.83014998E+779625769","1.36071854E+779625762","","","");\r
5151         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
5152         mathtest(374,def,"40216102.2E+292724544","661.025962","4.02161022E+292724551","4.02161022E+292724551","2.65838876E+292724554","6.08389148E+292724548","","","");\r
5153         mathtest(375,def,"22785024.3E+783719168","399.505989E+137478666","2.27850243E+783719175","2.27850243E+783719175","9.10275367E+921197843","5.70329981E+646240506","","","");\r
5154         mathtest(376,def,"515.591819E+821371364","-692137914.E-149498690","5.15591819E+821371366","5.15591819E+821371366","-3.56860646E+671872685","-7.44926421E+970870047","","","");\r
5155         mathtest(377,def,"-536883072E+477911251","624996.301","-5.36883072E+477911259","-5.36883072E+477911259","-3.35549934E+477911265","-8.59017999E+477911253","","","");\r
5156         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
5157         mathtest(379,def,"762.071184","9851631.37","9852393.44","-9850869.30","7.50764438E+9","0.0000773548213","0","762.071184","4.02198436E+28392356");\r
5158         mathtest(380,def,"5626.12471","72989818.3","72995444.4","-72984192.2","4.10649820E+11","0.0000770809524","0","5626.12471","1.79814757E+273727098");\r
5159         mathtest(381,def,"-47207260.1","-2073.3152","-47209333.4","-47205186.8","9.78755299E+10","22768.9741","22768","-2019.6264","-6.02238319E-15909");\r
5160         mathtest(382,def,"207.740860","-51.0390090","156.701851","258.779869","-10602.8876","-4.07023694","-4","3.5848240","6.40297515E-119");\r
5161         mathtest(383,def,"-572.812464E-745934021","-182805872.E+604508681","-1.82805872E+604508689","1.82805872E+604508689","1.04713482E-141425329","","0","-5.72812464E-745934019","");\r
5162         mathtest(384,def,"-6418504E+3531407","8459416.1","-6.41850400E+3531413","-6.41850400E+3531413","-5.42967961E+3531420","-7.58740784E+3531406","","","");\r
5163         mathtest(385,def,"280689.531","-128212543","-127931854","128493233","-3.59879186E+13","-0.00218925173","0","280689.531","1.42173809E-698530938");\r
5164         mathtest(386,def,"15.803551E-783422793","239108038E-489186308","2.39108038E-489186300","-2.39108038E-489186300","","6.60937672E-294236493","0","1.5803551E-783422792","");\r
5165         mathtest(387,def,"26.515922","-9418242.96E-105481628","26.5159220","26.5159220","-2.49733396E-105481620","-2.81537885E+105481622","","","1.54326108E-13");\r
5166         mathtest(388,def,"-88.1094557","-54029934.1","-54030022.2","54029846.0","4.76054809E+9","0.0000016307526","0","-88.1094557","5.05289826E-105089439");\r
5167         mathtest(389,def,"6770.68602E-498420397","-6.11248908E-729616908","6.77068602E-498420394","6.77068602E-498420394","","-1.10768067E+231196514","","","");\r
5168         mathtest(390,def,"-892973818.E-781904441","555201299.","555201299","-555201299","-4.95780224E-781904424","-1.60837847E-781904441","0","-8.92973818E-781904433","");\r
5169         mathtest(391,def,"670175802E+135430680","27355195.4","6.70175802E+135430688","6.70175802E+135430688","1.83327900E+135430696","2.44990318E+135430681","","","");\r
5170         mathtest(392,def,"-440950.26","205.477469E-677345561","-440950.260","-440950.260","-9.06053434E-677345554","-2.14597864E+677345564","","","1.94437132E+11");\r
5171         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
5172         mathtest(394,def,"452943.863","7022.23629","459966.099","445921.627","3.18067883E+9","64.5013703","64","3520.74044","5.54158976E+39716");\r
5173         mathtest(395,def,"62874.1079","-52719654.1","-52656780.0","52782528.2","-3.31470122E+12","-0.0011926123","0","62874.1079","1.18819936E-252973775");\r
5174         mathtest(396,def,"-7428.41741E+609772037","-46024819.3","-7.42841741E+609772040","-7.42841741E+609772040","3.41891569E+609772048","1.61400251E+609772033","","","");\r
5175         mathtest(397,def,"2.27959297","41937.019","41939.2986","-41934.7394","95599.3337","0.0000543575348","0","2.27959297","2.89712423E+15007");\r
5176         mathtest(398,def,"508692408E-671967782","8491989.20","8491989.20","-8491989.20","4.31981043E-671967767","5.99026207E-671967781","0","5.08692408E-671967774","");\r
5177         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
5178         mathtest(400,def,"97.0649652","-92.4485649E-151989098","97.0649652","97.0649652","-8.97351673E-151989095","-1.0499348E+151989098","","","1.30748728E-18");\r
5179         mathtest(401,def,"297544.536E+360279473","8.80275007","2.97544536E+360279478","2.97544536E+360279478","2.61921019E+360279479","3.38013159E+360279477","","","");\r
5180         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
5181         mathtest(403,def,"36.2496238E+68828039","49243.00","3.62496238E+68828040","3.62496238E+68828040","1.78504022E+68828045","7.36137599E+68828035","","","");\r
5182         mathtest(404,def,"22.447828E-476014683","-56067.5520","-56067.5520","56067.5520","-1.25859476E-476014677","-4.00371109E-476014687","0","2.2447828E-476014682","");\r
5183         mathtest(405,def,"282688.791E+75011952","5.99789051","2.82688791E+75011957","2.82688791E+75011957","1.69553642E+75011958","4.7131369E+75011956","","","5.10330507E+450071744");\r
5184         mathtest(406,def,"-981.860310E-737387002","-994046289","-994046289","994046289","9.76014597E-737386991","9.87741035E-737387009","0","-9.81860310E-737387000","");\r
5185         mathtest(407,def,"-702.91210","-6444903.55","-6445606.46","6444200.64","4.53020069E+9","0.000109064797","0","-702.91210","1.70866703E-18348004");\r
5186         mathtest(408,def,"972456720E-17536823","16371.2590","16371.2590","-16371.2590","1.59203408E-17536810","5.94002404E-17536819","0","9.72456720E-17536815","");\r
5187         mathtest(409,def,"71471.2045","-74303278.4","-74231807.2","74374749.6","-5.31054481E+12","-0.00096188494","0","71471.2045","2.14535374E-360677853");\r
5188         mathtest(410,def,"643.103951E+439708441","788251925.","6.43103951E+439708443","6.43103951E+439708443","5.06927927E+439708452","8.15860933E+439708434","","","");\r
5189         mathtest(411,def,"4.30838663","-7.43110827","-3.12272164","11.7394949","-32.0160875","-0.579777131","0","4.30838663","0.0000362908645");\r
5190         mathtest(412,def,"823.678025","-513.581840E-324453141","823.678025","823.678025","-4.23026076E-324453136","-1.60379118E+324453141","","","2.63762228E-15");\r
5191         mathtest(413,def,"4461.81162","3.22081680","4465.03244","4458.59080","14370.6778","1385.30438","1385","0.98035200","8.8824688E+10");\r
5192         mathtest(414,def,"-4458527.10","-99072605","-103531132","94614077.9","4.41717894E+14","0.0450026231","0","-4458527.10","-6.23928099E-658752715");\r
5193         mathtest(415,def,"-577964618","487424368.","-90540250","-1.06538899E+9","-2.81714039E+17","-1.18575241","-1","-90540250","");\r
5194         mathtest(416,def,"-867.036184","-57.1768608","-924.213045","-809.859323","49574.4072","15.1641096","15","-9.3832720","-3.40312837E-168");\r
5195         mathtest(417,def,"771871921E-330504770","5.34285236","5.34285236","-5.34285236","4.12399771E-330504761","1.44468136E-330504762","0","7.71871921E-330504762","");\r
5196         mathtest(418,def,"-338683.062E-728777518","166441931","166441931","-166441931","-5.63710628E-728777505","-2.03484218E-728777521","0","-3.38683062E-728777513","");\r
5197         mathtest(419,def,"-512568743","-416376887.E-965945295","-512568743","-512568743","2.13421778E-965945278","1.23102112E+965945295","","","1.44874358E-35");\r
5198         mathtest(420,def,"7447181.99","5318438.52","12765620.5","2128743.47","3.96073796E+13","1.40025723","1","2128743.47","1.21634782E+36548270");\r
5199         mathtest(421,def,"54789.8207","93165435.2","93220225.0","-93110645.4","5.10451749E+12","0.000588091716","0","54789.8207","3.80769825E+441483035");\r
5200         mathtest(422,def,"41488.5960","146.797094","41635.3931","41341.7989","6090405.33","282.625459","282","91.815492","6.84738153E+678");\r
5201         mathtest(423,def,"785741.663E+56754529","-461.531732","7.85741663E+56754534","7.85741663E+56754534","-3.62644711E+56754537","-1.70246509E+56754532","","","");\r
5202         mathtest(424,def,"-4.95436786","-3132.4233","-3137.37767","3127.46893","15519.1773","0.0015816406","0","-4.95436786","1.98062422E-2177");\r
5203         mathtest(425,def,"77321.8478E+404626874","82.4797688","7.73218478E+404626878","7.73218478E+404626878","6.37748813E+404626880","9.3746441E+404626876","","","");\r
5204         mathtest(426,def,"-7.99307725","-29153.7273","-29161.7204","29145.7342","233027.994","0.000274169994","0","-7.99307725","1.88688028E-26318");\r
5205         mathtest(427,def,"-61.6337401E+474999517","5254.87092","-6.16337401E+474999518","-6.16337401E+474999518","-3.23877349E+474999522","-1.1728878E+474999515","","","");\r
5206         mathtest(428,def,"-16.4043088","35.0064812","18.6021724","-51.4107900","-574.257128","-0.468607762","0","-16.4043088","-3.33831843E+42");\r
5207         mathtest(429,def,"-8.41156520","-56508958.9","-56508967.3","56508950.5","475328792","1.48853657E-7","0","-8.41156520","-8.86365458E-52263827");\r
5208         mathtest(430,def,"-360165.79E+503559835","-196688.515","-3.60165790E+503559840","-3.60165790E+503559840","7.08404744E+503559845","1.83114805E+503559835","","","");\r
5209         mathtest(431,def,"-653236480.E+565648495","-930.445274","-6.53236480E+565648503","-6.53236480E+565648503","6.07800796E+565648506","7.02068674E+565648500","","","");\r
5210         mathtest(432,def,"-3.73342903","855.029289","851.295860","-858.762718","-3192.19117","-0.00436643408","0","-3.73342903","-1.41988961E+489");\r
5211         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
5212         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
5213         mathtest(435,def,"-1.31557907","98.9139300E-579281802","-1.31557907","-1.31557907","-1.30129096E-579281800","-1.33002406E+579281800","","","15.529932");\r
5214         mathtest(436,def,"-875192389","-72071565.6","-947263955","-803120823","6.30764857E+16","12.1433797","12","-10333601.8","1.25564408E-644471405");\r
5215         mathtest(437,def,"-72838078.8","-391.398423","-72838470.2","-72837687.4","2.85087092E+10","186097.017","186097","-6.474969","-6.574057E-3075");\r
5216         mathtest(438,def,"29186560.9","-79.7419988","29186481.2","29186640.6","-2.32739470E+9","-366012.407","-366012","32.4352144","6.10050869E-598");\r
5217         mathtest(439,def,"-329801660E-730249465","-6489.9256","-6489.92560","6489.92560","2.14038824E-730249453","5.08174793E-730249461","0","-3.29801660E-730249457","");\r
5218         mathtest(440,def,"91.8429117E+103164883","7131455.16","9.18429117E+103164884","9.18429117E+103164884","6.54973607E+103164891","1.28785654E+103164878","","","");\r
5219         mathtest(441,def,"3943866.38E+150855113","-31927007.3","3.94386638E+150855119","3.94386638E+150855119","-1.25915851E+150855127","-1.23527594E+150855112","","","");\r
5220         mathtest(442,def,"-7002.0468E-795962156","-5937891.05","-5937891.05","5937891.05","4.15773910E-795962146","1.17921443E-795962159","0","-7.0020468E-795962153","");\r
5221         mathtest(443,def,"696504605.","54506.4617","696559111","696450099","3.79640016E+13","12778.386","12778","21037.3974","2.6008532E+481992");\r
5222         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
5223         mathtest(445,def,"-261.279392","-613.079357","-874.358749","351.799965","160185.002","0.426175484","0","-261.279392","-2.06318841E-1482");\r
5224         mathtest(446,def,"-591407763","-80145822.8","-671553586","-511261940","4.73988618E+16","7.37914644","7","-30387003.4","-2.79334522E-703030105");\r
5225         mathtest(447,def,"615630407","-69.4661869","615630338","615630476","-4.27654969E+10","-8862303.15","-8862303","10.4375693","3.44283102E-607");\r
5226         mathtest(448,def,"1078757.50","27402569.0E-713742082","1078757.50","1078757.50","2.95607268E-713742069","3.93670207E+713742080","","","1.25536924E+18");\r
5227         mathtest(449,def,"-4865.60358E-401116515","66952.5315","66952.5315","-66952.5315","-3.25764477E-401116507","-7.26724363E-401116517","0","-4.86560358E-401116512","");\r
5228         mathtest(450,def,"-87805.3921E-934896690","-1875.14745","-1875.14745","1875.14745","1.64648057E-934896682","4.68258601E-934896689","0","-8.78053921E-934896686","");\r
5229         mathtest(451,def,"-232540609.E+602702520","68.0834223","-2.32540609E+602702528","-2.32540609E+602702528","-1.58321605E+602702530","-3.41552468E+602702526","","","");\r
5230         mathtest(452,def,"-320610803.","-863871235.","-1.18448204E+9","543260432","2.76966450E+17","0.37113263","0","-320610803","");\r
5231         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
5232         mathtest(454,def,"-439.747348","74.9494457E-353117582","-439.747348","-439.747348","-3.29588200E-353117578","-5.86725284E+353117582","","","-3.17996693E+18");\r
5233         mathtest(455,def,"-89702231.9","1.28993993","-89702230.6","-89702233.2","-115710491","-69539852.1","-69539852","-0.07890964","-89702231.9");\r
5234         mathtest(456,def,"-5856939.14","-6743375.34","-12600314.5","886436.20","3.94955390E+13","0.868547107","0","-5856939.14","-3.29213248E-45636942");\r
5235         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
5236         mathtest(458,def,"87.4798787E-80124704","108497.32","108497.320","-108497.320","9.49133239E-80124698","8.06286079E-80124708","0","8.74798787E-80124703","");\r
5237         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
5238         mathtest(460,def,"-9744135.85","1797016.04","-7947119.81","-11541151.9","-1.75103684E+13","-5.42239782","-5","-759055.65","3.83848006E+12558883");\r
5239         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
5240         mathtest(462,def,"365347.52","-3655414.47","-3290066.95","4020761.99","-1.33549661E+12","-0.099946948","0","365347.52","1.02663257E-20333994");\r
5241         mathtest(463,def,"-19706333.6E-816923050","-383858032.","-383858032","383858032","7.56443443E-816923035","5.1337557E-816923052","0","-1.97063336E-816923043","");\r
5242         mathtest(464,def,"-86346.2616","-98.8063785","-86445.0680","-86247.4552","8531561.41","873.893598","873","-88.2931695","-2.05064086E-489");\r
5243         mathtest(465,def,"-445588.160E-496592215","328.822976","328.822976","-328.822976","-1.46519625E-496592207","-1.35510044E-496592212","0","-4.45588160E-496592210","");\r
5244         mathtest(466,def,"-9709213.71","-34.6690137","-9709248.38","-9709179.04","336608863","280054.512","280054","-17.7472602","-2.80903974E-245");\r
5245         mathtest(467,def,"742395536.","-43533.6889","742352002","742439070","-3.23192163E+13","-17053.3569","-17053","15539.1883","5.7622734E-386175");\r
5246         mathtest(468,def,"-878849193.","-5842982.47E-972537342","-878849193","-878849193","5.13510043E-972537327","1.50411061E+972537344","","","2.17027042E-54");\r
5247         mathtest(469,def,"-78014142.1","-624658.522","-78638800.6","-77389483.6","4.87321987E+13","124.890863","124","-556485.372","-7.86063865E-4929918");\r
5248         mathtest(470,def,"857039.371","454.379672","857493.751","856584.991","389421268","1886.17454","1886","79.309608","3.82253101E+2693");\r
5249         mathtest(471,def,"166534010.","-173.012236","166533837","166534183","-2.88124214E+10","-962556.255","-962556","44.164784","4.78620664E-1423");\r
5250         mathtest(472,def,"-810.879063","43776.610","42965.7309","-44587.4891","-35497536.5","-0.0185231123","0","-810.879063","-2.34758691E+127345");\r
5251         mathtest(473,def,"-327.127935","93458944","93458616.9","-93459271.1","-3.05730314E+10","-0.00000350023145","0","-327.127935","2.29323021E+235022854");\r
5252         mathtest(474,def,"539295218.","-9587941.10E-309643098","539295218","539295218","-5.17073079E-309643083","-5.62472394E+309643099","","","4.80545269E-88");\r
5253         mathtest(475,def,"-3862702.65","879616.733","-2983085.92","-4742319.38","-3.39769789E+12","-4.3913474","-4","-344235.718","-3.50650167E+5793941");\r
5254         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
5255         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
5256         mathtest(478,def,"177623437","-7779116.14","169844321","185402553","-1.38175335E+15","-22.83337","-22","6482881.92","2.90085309E-64173820");\r
5257         mathtest(479,def,"377204735.","13768.1401","377218503","377190967","5.19340764E+12","27396.9274","27396","12768.8204","2.06065297E+118082");\r
5258         mathtest(480,def,"-2435.49239","-11732.0640E-23331504","-2435.49239","-2435.49239","2.85733526E-23331497","2.07592832E+23331503","","","-0.00041059459");\r
5259         mathtest(481,def,"-6128465.14E-137123294","-5742264.27","-5742264.27","5742264.27","3.51912664E-137123281","1.06725585E-137123294","0","-6.12846514E-137123288","");\r
5260         mathtest(482,def,"-2898065.44","-5.11638105","-2898070.56","-2898060.32","14827607.1","566428.773","566428","-3.95461060","-4.89169151E-33");\r
5261         mathtest(483,def,"1851395.31E+594383160","-550301.475","1.85139531E+594383166","1.85139531E+594383166","-1.01882557E+594383172","-3.36432918E+594383160","","","");\r
5262         mathtest(484,def,"536412589.E+379583977","899.601161","5.36412589E+379583985","5.36412589E+379583985","4.82557388E+379583988","5.96278231E+379583982","","","");\r
5263         mathtest(485,def,"185.85297","867419480.","867419666","-867419294","1.61212487E+11","2.14259622E-7","0","185.85297","");\r
5264         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
5265         mathtest(487,def,"-8.11587021E-245942806","4553.06753E+943412048","4.55306753E+943412051","-4.55306753E+943412051","-3.69521051E+697469246","","0","-8.11587021E-245942806","");\r
5266         mathtest(488,def,"-405765.352","854963231","854557466","-855368996","-3.46914456E+14","-0.000474599769","0","-405765.352","");\r
5267         mathtest(489,def,"-159.609757","-43356.7567","-43516.3665","43197.1470","6920161.40","0.00368131219","0","-159.609757","-8.95397849E-95519");\r
5268         mathtest(490,def,"-564240.241E-501316672","-557.781977","-557.781977","557.781977","3.14723037E-501316664","1.01157847E-501316669","0","-5.64240241E-501316667","");\r
5269         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
5270         mathtest(492,def,"-4426.59663","95.1096765","-4331.48695","-4521.70631","-421012.173","-46.5420217","-46","-51.5515110","-2.38037379E+346");\r
5271         mathtest(493,def,"6037.28310","578264.105","584301.388","-572226.822","3.49114411E+9","0.010440356","0","6037.28310","3.57279483E+2186324");\r
5272         mathtest(494,def,"-66.9556692","-53.8519404","-120.807610","-13.1037288","3605.69271","1.24332881","1","-13.1037288","2.55554086E-99");\r
5273         mathtest(495,def,"-92486.0222","-59935.8544","-152421.877","-32550.1678","5.54322876E+9","1.5430834","1","-32550.1678","1.83152656E-297647");\r
5274         mathtest(496,def,"852136219.E+917787351","9246221.91","8.52136219E+917787359","8.52136219E+917787359","7.87904058E+917787366","9.21604767E+917787352","","","");\r
5275         mathtest(497,def,"-2120096.16E-269253718","9437.00514","9437.00514","-9437.00514","-2.00073584E-269253708","-2.24657731E-269253716","0","-2.12009616E-269253712","");\r
5276         mathtest(498,def,"-524653.169E-865784226","228054.698","228054.698","-228054.698","-1.19649620E-865784215","-2.30055848E-865784226","0","-5.24653169E-865784221","");\r
5277         mathtest(499,def,"-288193133","-312268737.","-600461870","24075604","8.99937057E+16","0.922901011","0","-288193133","");\r
5278         mathtest(500,def,"-373484759E-113589964","844101958E-852538240","-3.73484759E-113589956","-3.73484759E-113589956","-3.15259216E-966128187","-4.42464036E+738948275","","","3.78602147E-908719644");\r
5279 \r
5280         summary("Arithmetic");\r
5281     }\r
5282 \r
5283     /* mathtest -- general arithmetic test routine\r
5284      Arg1  is test number\r
5285      Arg2  is MathContext\r
5286      Arg3  is left hand side (LHS)\r
5287      Arg4  is right hand side (RHS)\r
5288      Arg5  is the expected result for add\r
5289      Arg6  is the expected result for subtract\r
5290      Arg7  is the expected result for multiply\r
5291      Arg8  is the expected result for divide\r
5292      Arg9  is the expected result for integerDivide\r
5293      Arg10 is the expected result for remainder\r
5294      Arg11 is the expected result for power\r
5295      \r
5296      For power RHS, 0 is added to the number, any exponent is removed and\r
5297      the number is then rounded to an integer, using format(rhs+0,,0)\r
5298      \r
5299      If an error should result for an operation, the 'expected result' is\r
5300      an empty string.\r
5301      */\r
5302 \r
5303     private void mathtest(int test, com.ibm.icu.math.MathContext mc,\r
5304             java.lang.String slhs, java.lang.String srhs, java.lang.String add,\r
5305             java.lang.String sub, java.lang.String mul, java.lang.String div,\r
5306             java.lang.String idv, java.lang.String rem, java.lang.String pow) {\r
5307         com.ibm.icu.math.BigDecimal lhs;\r
5308         com.ibm.icu.math.BigDecimal rhs;\r
5309         java.lang.String res = null;\r
5310         java.lang.String sn = null;\r
5311         int e = 0;\r
5312 \r
5313         lhs = new com.ibm.icu.math.BigDecimal(slhs);\r
5314         rhs = new com.ibm.icu.math.BigDecimal(srhs);\r
5315 \r
5316         try {\r
5317             res = lhs.add(rhs, mc).toString();\r
5318         } catch (java.lang.ArithmeticException $137) {\r
5319             res = "";\r
5320         }\r
5321         mathtestcheck(test, lhs, rhs, "add", res, add);\r
5322 \r
5323         try {\r
5324             res = lhs.subtract(rhs, mc).toString();\r
5325         } catch (java.lang.ArithmeticException $138) {\r
5326             res = "";\r
5327         }\r
5328         mathtestcheck(test, lhs, rhs, "sub", res, sub);\r
5329 \r
5330         try {\r
5331             res = lhs.multiply(rhs, mc).toString();\r
5332         } catch (java.lang.ArithmeticException $139) {\r
5333             res = "";\r
5334         }\r
5335         mathtestcheck(test, lhs, rhs, "mul", res, mul);\r
5336 \r
5337         try {\r
5338             res = lhs.divide(rhs, mc).toString();\r
5339         } catch (java.lang.ArithmeticException $140) {\r
5340             res = "";\r
5341         }\r
5342         mathtestcheck(test, lhs, rhs, "div", res, div);\r
5343 \r
5344         try {\r
5345             res = lhs.divideInteger(rhs, mc).toString();\r
5346         } catch (java.lang.ArithmeticException $141) {\r
5347             res = "";\r
5348         }\r
5349         mathtestcheck(test, lhs, rhs, "idv", res, idv);\r
5350 \r
5351         try {\r
5352             res = lhs.remainder(rhs, mc).toString();\r
5353         } catch (java.lang.ArithmeticException $142) {\r
5354             res = "";\r
5355         }\r
5356         mathtestcheck(test, lhs, rhs, "rem", res, rem);\r
5357 \r
5358         try {\r
5359             // prepare an integer from the rhs\r
5360             // in Rexx:\r
5361             //   n=rhs+0\r
5362             //   e=pos('E', n)\r
5363             //   if e>0 then n=left(n,e-1)\r
5364             //   n=format(n,,0)\r
5365 \r
5366             sn = rhs.plus(mc).toString();\r
5367             e = sn.indexOf("E", 0);\r
5368             if (e > 0)\r
5369                 sn = sn.substring(0, e);\r
5370             sn = (new com.ibm.icu.math.BigDecimal(sn)).format(-1, 0);\r
5371 \r
5372             res = lhs.pow(new com.ibm.icu.math.BigDecimal(sn), mc).toString();\r
5373         } catch (java.lang.ArithmeticException $143) {\r
5374             res = "";\r
5375         }\r
5376         mathtestcheck(test, lhs, rhs, "pow", res, pow);\r
5377         return;\r
5378     }\r
5379 \r
5380     /* mathtestcheck -- check for general mathtest error\r
5381      Arg1  is test number\r
5382      Arg2  is left hand side (LHS)\r
5383      Arg3  is right hand side (RHS)\r
5384      Arg4  is the operation\r
5385      Arg5  is the actual result\r
5386      Arg6  is the expected result\r
5387      Show error message if a problem, otherwise return quietly\r
5388      */\r
5389 \r
5390     private void mathtestcheck(int test, com.ibm.icu.math.BigDecimal lhs,\r
5391             com.ibm.icu.math.BigDecimal rhs, java.lang.String op,\r
5392             java.lang.String got, java.lang.String want) {\r
5393         boolean flag;\r
5394         java.lang.String testnum;\r
5395 \r
5396         flag = want.equals((java.lang.Object) got);\r
5397 \r
5398         if ((!flag))\r
5399             say(">" + test + ">" + " " + lhs.toString() + " " + op + " "\r
5400                     + rhs.toString() + " " + "=" + " " + want + " " + "[got"\r
5401                     + " " + got + "]");\r
5402 \r
5403         testnum = "gen"\r
5404                 + right((new com.ibm.icu.math.BigDecimal(test + 1000))\r
5405                         .toString(), 3);\r
5406 \r
5407         (new Test(testnum)).ok = flag;\r
5408         return;\r
5409     }\r
5410 \r
5411     /* ------------------------------------------------------------------ */\r
5412     /* Support routines and minor classes follow                          */\r
5413     /* ------------------------------------------------------------------ */\r
5414 \r
5415     /* ----------------------------------------------------------------- */\r
5416     /* Method called to summarise pending tests                          */\r
5417     /* ----------------------------------------------------------------- */\r
5418     /* Arg1 is section name */\r
5419 \r
5420     private void summary(java.lang.String section) {\r
5421         int bad;\r
5422         int count;\r
5423         int i = 0;\r
5424         Test item = null;\r
5425         bad = 0;\r
5426         count = Tests.size();\r
5427         {\r
5428             int $144 = count;\r
5429             i = 0;\r
5430             for (; $144 > 0; $144--, i++) {\r
5431                 item = (Test) (Tests.elementAt(i));\r
5432                 if ((!item.ok))\r
5433                 {\r
5434                     bad++;\r
5435                     errln("Failed:" + " " + item.name);\r
5436                 }\r
5437             }\r
5438         }/*i*/\r
5439         totalcount = totalcount + count;\r
5440         Tests = new java.util.Vector(100); // reinitialize\r
5441         if (bad == 0)\r
5442             say("OK" + " " + left(section, 14) + " "\r
5443                     + right("[" + count + " " + "tests]", 12));\r
5444         else\r
5445             throw new DiagException(section + " " + "[failed" + " " + bad + " "\r
5446                     + "of" + " " + count + " " + "tests]", bad);\r
5447     }\r
5448 \r
5449     /* ----------------------------------------------------------------- */\r
5450     /* right - Utility to do a 'right' on a Java String                  */\r
5451     /* ----------------------------------------------------------------- */\r
5452     /* Arg1 is string to right-justify */\r
5453     /* Arg2 is desired length */\r
5454 \r
5455     private static java.lang.String right(java.lang.String s, int len) {\r
5456         int slen;\r
5457         slen = s.length();\r
5458         if (slen == len)\r
5459             return s; // length just right\r
5460         if (slen > len)\r
5461             return s.substring(slen - len); // truncate on left\r
5462         // too short\r
5463         return (new java.lang.String(new char[len - slen]))\r
5464                 .replace('\000', ' ').concat(s);\r
5465     }\r
5466 \r
5467     /* ----------------------------------------------------------------- */\r
5468     /* left - Utility to do a 'left' on a Java String                    */\r
5469     /* ----------------------------------------------------------------- */\r
5470     /* Arg1 is string to left-justify */\r
5471     /* Arg2 is desired length */\r
5472 \r
5473     private static java.lang.String left(java.lang.String s, int len) {\r
5474         int slen;\r
5475         slen = s.length();\r
5476         if (slen == len)\r
5477             return s; // length just right\r
5478         if (slen > len)\r
5479             return s.substring(0, len); // truncate on right\r
5480         // too short\r
5481         return s.concat((new java.lang.String(new char[len - slen])).replace(\r
5482                 '\000', ' '));\r
5483     }\r
5484 \r
5485     /* ----------------------------------------------------------------- */\r
5486     /* say - Utility to do a display                                     */\r
5487     /* ----------------------------------------------------------------- */\r
5488     /* Arg1 is string to display, omitted if none */\r
5489     /*         [null or omitted gives blank line] */\r
5490     // this version doesn't heed continuation final character\r
5491     private void say() {\r
5492         say((java.lang.String) null);\r
5493         return;\r
5494     }\r
5495 \r
5496     private void say(java.lang.String s) {\r
5497         if (s == null)\r
5498             s = "  ";\r
5499         logln(s);\r
5500     }\r
5501 \r
5502     /* ----------------------------------------------------------------- */\r
5503     /* Scaffolding for stand-alone run                                   */\r
5504     /* ----------------------------------------------------------------- */\r
5505     /** Entry point for stand-alone run.  It constructs a\r
5506      *  <code>DiagBigDecimal</code> object and then invokes its\r
5507      *  {@link #diagrun(boolean)} method to run the test\r
5508      *  suite.\r
5509      *\r
5510      * @param args The command line argument string array.\r
5511      *   if the first word is '<code>continue</code>' then try and run\r
5512      *   all tests, otherwise stop after the first failing test group.\r
5513      */\r
5514     public static void main(String[] args) throws Exception {\r
5515         new DiagBigDecimal().run(args);\r
5516     }\r
5517 \r
5518     public void TestBigDecimal() {\r
5519         boolean $continue;\r
5520         int fails;\r
5521         $continue = false;\r
5522         fails = diagrun($continue); // and run the tests\r
5523         if (fails != 0) {\r
5524             errln("Diagnostic Tests for math failed. Number of errors: "\r
5525                     + fails);\r
5526         }\r
5527     }\r
5528 \r
5529     /* ------------------------------------------------------------------ */\r
5530     /* Test -- represents a test and its status                           */\r
5531     /* ------------------------------------------------------------------ */\r
5532     /* Copyright IBM Corporation 1998, 2000.  All rights reserved.        */\r
5533     /* Author: Mike Cowlishaw                                             */\r
5534     /* ------------------------------------------------------------------ */\r
5535     /* 1998.07.15 Initial version                                         */\r
5536     /* 2000.03.27 Change to javadoc comments                              */\r
5537 \r
5538     /**\r
5539      * The <code>Test</code> class is used to record a specific test.\r
5540      * When constructed, it notes the name of the test and adds the test\r
5541      * to the list of tests held by the parent.\r
5542      *\r
5543      * Its <code>ok</flag> is assigned directly to record whether the\r
5544      * test succeeded (1) or failed (0).\r
5545      *\r
5546      * @see     com.ibm.icu.math.BigDecimal\r
5547      * @version 1.00 2000.03.27\r
5548      * @author  Mike Cowlishaw\r
5549      */\r
5550 \r
5551     public class Test {\r
5552         //private final transient java.lang.String $0 = "DiagBigDecimal.nrx";\r
5553 \r
5554         /* properties shared transient */\r
5555         /** The name of the test. */\r
5556         transient java.lang.String name;\r
5557 \r
5558         /** Success flag; will be set to 1 (true) if the test succeeded, or 0\r
5559          * (false) if the test failed.\r
5560          */\r
5561         transient boolean ok;\r
5562 \r
5563         /**\r
5564          * Constructs a new <code>Test</code> with a specified name.\r
5565          *\r
5566          * @param testname The <code>String</code> naming the test.\r
5567          */\r
5568 \r
5569         public Test(java.lang.String testname) {\r
5570             super();\r
5571             name = testname; // save the name\r
5572             DiagBigDecimal.this.Tests.addElement((java.lang.Object) this); // and add to parent's list\r
5573         }\r
5574     }\r
5575 \r
5576     /* ------------------------------------------------------------------ */\r
5577     /* DiagException                                                      */\r
5578     /* ------------------------------------------------------------------ */\r
5579     /* Copyright IBM Corporation 1996, 2000.  All rights reserved.        */\r
5580     /* Author: Mike Cowlishaw                                             */\r
5581     /* ------------------------------------------------------------------ */\r
5582     /* 1996.05.27 Initial version in NetRexx (as DiagX)                   */\r
5583     /* 1998.06.25 Copied from NetRexx test suite                          */\r
5584     /* 1999.07.03 Add fail count                                          */\r
5585     /* 2000.03.27 Change to javadoc comments                              */\r
5586 \r
5587     /**\r
5588      * The <code>DiagException</code> class is used to signal the failure\r
5589      * of a test group.  It records the number of failures in the group.\r
5590      *\r
5591      * @see     com.ibm.icu.math.BigDecimal\r
5592      * @version 1.00 2000.03.27\r
5593      * @author  Mike Cowlishaw\r
5594      */\r
5595 \r
5596     public static class DiagException extends java.lang.RuntimeException {\r
5597         //private final transient java.lang.String $0 = "DiagBigDecimal.nrx";\r
5598 \r
5599         /**\r
5600          * For serialization\r
5601          */\r
5602         private static final long serialVersionUID = 755873172220249188L;\r
5603         /* properties shared transient */\r
5604         /** the count of failed tests in the group which signalled this\r
5605          * exception.\r
5606          */\r
5607         transient int failcount = 0;\r
5608 \r
5609         // number of tests which failed\r
5610 \r
5611         /**\r
5612          * Constructs a new <code>DiagException</code> with a message and\r
5613          * failure count.  This is thrown when a group of tests fails.\r
5614          *\r
5615          * @param message The <code>String</code> message describing the group.\r
5616          * @param fails   The <code>int</code> number of failed tests in the  group.\r
5617          */\r
5618 \r
5619         public DiagException(java.lang.String message, int fails) {\r
5620             super(message);\r
5621             failcount = fails;\r
5622         }\r
5623     }\r
5624 }\r