1 /* Generated from 'DiagBigDecimal.nrx' 27 Mar 2000 22:38:44 [v1.162] */
\r
2 /* Options: Binary Comments Crossref Format Java Logo Trace1 Verbose3 */
\r
3 package com.ibm.icu.dev.test.bigdec;
\r
5 import java.math.BigInteger;
\r
7 import com.ibm.icu.dev.test.TestFmwk;
\r
8 import com.ibm.icu.math.BigDecimal;
\r
9 import com.ibm.icu.util.VersionInfo;
\r
11 /* ------------------------------------------------------------------ */
\r
12 /* Decimal diagnostic tests mfc */
\r
13 /* Copyright (c) IBM Corporation 1996-2010. All Rights Reserved. */
\r
14 /* ------------------------------------------------------------------ */
\r
15 /* DiagBigDecimal */
\r
17 /* A class that tests the BigDecimal and MathContext classes. */
\r
19 /* The tests here are derived from or cover the same paths as: */
\r
20 /* -- ANSI X3-274 testcases */
\r
21 /* -- Java JCK testcases */
\r
22 /* -- NetRexx testcases */
\r
23 /* -- VM/CMS S/370 REXX implementation testcases [1981+] */
\r
24 /* -- IBM Vienna Laboratory Rexx compiler testcases [1988+] */
\r
25 /* -- New testcases */
\r
27 /* The authoritative sources for how the underlying technology */
\r
28 /* (arithmetic) should work are: */
\r
29 /* -- for digits=0 (fixed point): java.math.BigDecimal */
\r
30 /* -- for digits>0 (floating point): ANSI X3.274-1996 + errata */
\r
32 /* ------------------------------------------------------------------ */
\r
34 /* 1997.09.05 Initial implementation, from DiagRexx [NetRexx tests] */
\r
35 /* 1998.05.02 0.07 changes (e.g., compareTo) */
\r
36 /* 1998.06.06 Rounding modes and format additions */
\r
37 /* 1998.06.25 Rename from DiagDecimal; make stand-alone [add */
\r
38 /* DiagException as a Minor class] */
\r
39 /* 1998.06.27 Start adding testcases for DIGITS=0/FORM=PLAIN cases */
\r
40 /* Reorganize for faster trace compilation */
\r
41 /* 1998.06.28 new: valueof, scale, movePointX, unscaledValue, etc. */
\r
42 /* 1998.07.07 Scaled divide */
\r
43 /* 1998.07.08 setScale */
\r
44 /* 1998.07.15 new scaffolding (Minor Test class) -- see diagabs */
\r
45 /* 1998.12.14 add toBigDecimal and BigDecimal(java.math.BigDecimal) */
\r
46 /* 1999.02.04 number preparation rounds instead of digits+1 trunc */
\r
47 /* 1999.02.09 format method now only has two signatures */
\r
48 /* 1999.02.27 no longer use Rexx class or RexxIO class */
\r
49 /* 1999.03.05 add MathContext tests */
\r
50 /* 1999.03.05 update for 0.96 [no null settings, etc.] */
\r
51 /* drop sundry constructors; no blanks; char[] gets ints */
\r
52 /* drop sundry converters, add Exact converters */
\r
53 /* 1999.05.27 additional tests for scaled arithmetic */
\r
54 /* 1999.06.29 additional tests for exponent overflows */
\r
55 /* 1999.07.03 add 'continue' option */
\r
56 /* 1999.07.10 additional tests for scaled arithmetic */
\r
57 /* 1999.07.18 randomly-generated tests added for base operators */
\r
58 /* 1999.10.28 weird intValueExact bad cases */
\r
59 /* 1999.12.21 multiplication fast path failure and edge cases */
\r
60 /* 2000.01.01 copyright update */
\r
61 /* 2000.03.26 cosmetic updates; add extra format() testcases */
\r
62 /* 2000.03.27 1.00 move to com.ibm.icu.math package; open source release; */
\r
63 /* change to javadoc comments */
\r
64 /* ------------------------------------------------------------------ */
\r
66 // note BINARY for conversions checking
\r
69 * The <code>DiagBigDecimal</code> class forms a standalone test suite for the
\r
70 * <code>com.ibm.icu.math.BigDecimal</code> and
\r
71 * <code>com.ibm.icu.math.MathContext</code> classes (or, by changing the
\r
72 * <code>package</code> statement, other classes of the same names and
\r
73 * definition in other packages). It may also be used as a constructed object to
\r
74 * embed the tests in an external test harness.
\r
76 * The tests are collected into <i>groups</i>, each corresponding to a tested
\r
77 * method or a more general grouping. By default, when run from the static
\r
78 * {@link #main(java.lang.String[])} method, the run will end if any test fails
\r
79 * in a group. The <code>continue</code> argument may be specified to force
\r
80 * the tests to run to completion.
\r
82 * Two minor (inner) classes are used; {@link DiagBigDecimal.DiagException} is
\r
83 * used to signal the failure of a test group, and {@link DiagBigDecimal.Test},
\r
84 * a dependent minor class, is used to register tests so that a summary of
\r
85 * failures (or success) can be presented as each group is completed.
\r
87 * @see com.ibm.icu.math.BigDecimal
\r
88 * @see com.ibm.icu.math.MathContext
\r
89 * @version 1.00 2000.03.27
\r
90 * @author Mike Cowlishaw
\r
93 public class DiagBigDecimal extends TestFmwk {
\r
94 //private static final java.lang.String $0 = "DiagBigDecimal.nrx";
\r
96 /* properties shared */
\r
97 java.util.Vector Tests = new java.util.Vector(100); // scaffolding
\r
99 /* properties private */
\r
100 private int totalcount = 0; // counts tests run
\r
102 /* properties constant private */
\r
104 /* Count of test groups */
\r
105 private static final int testcount = 38;
\r
107 private static final com.ibm.icu.math.BigDecimal zero = com.ibm.icu.math.BigDecimal.ZERO;
\r
108 private static final com.ibm.icu.math.BigDecimal one = com.ibm.icu.math.BigDecimal.ONE;
\r
109 private static final com.ibm.icu.math.BigDecimal two = new com.ibm.icu.math.BigDecimal(2);
\r
110 private static final com.ibm.icu.math.BigDecimal ten = com.ibm.icu.math.BigDecimal.TEN;
\r
111 private static final com.ibm.icu.math.BigDecimal tenlong = new com.ibm.icu.math.BigDecimal((long) 1234554321); // 10-digiter
\r
113 /* Some context objects -- [some of these are checked later] */
\r
114 private static final com.ibm.icu.math.MathContext mcdef = com.ibm.icu.math.MathContext.DEFAULT;
\r
115 private static final com.ibm.icu.math.MathContext mc3 = new com.ibm.icu.math.MathContext(3);
\r
116 private static final com.ibm.icu.math.MathContext mc6 = new com.ibm.icu.math.MathContext(6);
\r
117 private static final com.ibm.icu.math.MathContext mc9 = new com.ibm.icu.math.MathContext(9);
\r
118 private static final com.ibm.icu.math.MathContext mc50 = new com.ibm.icu.math.MathContext(50);
\r
119 private static final com.ibm.icu.math.MathContext mcs = new com.ibm.icu.math.MathContext(9, com.ibm.icu.math.MathContext.SCIENTIFIC);
\r
120 private static final com.ibm.icu.math.MathContext mce = new com.ibm.icu.math.MathContext(9, com.ibm.icu.math.MathContext.ENGINEERING);
\r
121 private static final com.ibm.icu.math.MathContext mcld = new com.ibm.icu.math.MathContext(9, com.ibm.icu.math.MathContext.SCIENTIFIC, true); // lost digits
\r
122 private static final com.ibm.icu.math.MathContext mcld0 = new com.ibm.icu.math.MathContext(0, com.ibm.icu.math.MathContext.SCIENTIFIC, true); // lost digits, digits=0
\r
123 private static final com.ibm.icu.math.MathContext mcfd = new com.ibm.icu.math.MathContext(0, com.ibm.icu.math.MathContext.PLAIN); // fixed decimal style
\r
125 /* boundary primitive values */
\r
126 private static final byte bmin = -128;
\r
127 private static final byte bmax = 127;
\r
128 private static final byte bzer = 0;
\r
129 private static final byte bneg = -1;
\r
130 private static final byte bpos = 1;
\r
131 private static final int imin = -2147483648;
\r
132 private static final int imax = 2147483647;
\r
133 private static final int izer = 0;
\r
134 private static final int ineg = -1;
\r
135 private static final int ipos = 1;
\r
136 private static final long lmin = -9223372036854775808L;
\r
137 private static final long lmax = 9223372036854775807L;
\r
138 private static final long lzer = (long) 0;
\r
139 private static final long lneg = (long) -1;
\r
140 private static final long lpos = (long) 1;
\r
141 private static final short smin = -32768;
\r
142 private static final short smax = 32767;
\r
143 private static final short szer = (short) 0;
\r
144 private static final short sneg = (short) (-1);
\r
145 private static final short spos = (short) 1;
\r
148 * Constructs a <code>DiagBigDecimal</code> test suite.
\r
150 * Invoke its {@link #diagrun} method to run the tests.
\r
153 public DiagBigDecimal() {
\r
157 static final boolean isJDK15OrLater = VersionInfo.javaVersion().compareTo(
\r
158 VersionInfo.getInstance(1, 5)) >= 0;
\r
161 * Run the tests in the test suite.
\r
163 * @param isContinue
\r
164 * The <code>boolean</code> which determines whether to stop
\r
165 * running after a group fails. If 1 (true) then the tests should
\r
166 * be run to completion if possible; if 0 (false) then the run
\r
167 * will end if a group fails.
\r
168 * @return an <code>int</code> which is 0 if all tests were successful, >0
\r
169 * (the count of failures) if some failures were detected, or <0 if
\r
170 * an unexpected Exception was signalled.
\r
173 public int diagrun(boolean isContinue) {
\r
176 DiagException de = null;
\r
177 java.lang.RuntimeException e = null;
\r
178 java.lang.String rest = null;
\r
180 fails = 0; // count of failures
\r
183 num: for (; num <= testcount; num++) { // [testcount is constant
\r
187 } catch (DiagException $1) {
\r
190 errln("**** Failed:" + " " + de.getMessage() + " " + "****");
\r
192 fails = fails + de.failcount;
\r
197 } catch (java.lang.RuntimeException $2) {
\r
198 e = $2; // any other exception is total failure; just show trace and
\r
201 errln("**** Failed: unexpected exception ****");
\r
202 e.printStackTrace();
\r
207 say("--- All OK ---" + " "
\r
208 + right("[" + totalcount + " " + "tests]", 15));
\r
215 say("--- All run ---" + " "
\r
216 + right("[" + totalcount + " " + "tests,", 14) + " "
\r
217 + "failed" + " " + fails + " " + rest + "]");
\r
225 /* Run test by number -- method for development/private switching */
\r
227 private void dotest(int num) {
\r
230 /* -------------------------------------------------------------- */
\r
232 /* -------------------------------------------------------------- */
\r
237 /* -------------------------------------------------------------- */
\r
239 /* -------------------------------------------------------------- */
\r
241 diagconstructors();
\r
244 /* -------------------------------------------------------------- */
\r
245 /* Operator methods */
\r
246 /* -------------------------------------------------------------- */
\r
260 diagdivideInteger();
\r
288 break; // general math
\r
290 /* -------------------------------------------------------------- */
\r
291 /* Other methods */
\r
292 /* -------------------------------------------------------------- */
\r
297 diagcomparetoObj();
\r
321 diagmovepointleft();
\r
324 diagmovepointright();
\r
339 diagtobigdecimal();
\r
342 diagtobiginteger();
\r
351 diagunscaledvalue();
\r
357 /* -------------------------------------------------------------- */
\r
358 /* Mutation test [must be the last test] */
\r
359 /* -------------------------------------------------------------- */
\r
363 // if any more, increase testcount above
\r
365 say("*** dotest case not found:" + " " + num + " " + "***");
\r
372 /*--------------------------------------------------------------------*/
\r
373 /* Diagnostic group methods */
\r
374 /*--------------------------------------------------------------------*/
\r
376 /** Test constructors (and {@link #toString()} for equalities). */
\r
378 public void diagconstructors() {
\r
379 boolean flag = false;
\r
380 java.lang.String num;
\r
381 java.math.BigInteger bip;
\r
382 java.math.BigInteger biz;
\r
383 java.math.BigInteger bin;
\r
384 com.ibm.icu.math.BigDecimal bda;
\r
385 com.ibm.icu.math.BigDecimal bdb;
\r
386 com.ibm.icu.math.BigDecimal bmc;
\r
387 com.ibm.icu.math.BigDecimal bmd;
\r
388 com.ibm.icu.math.BigDecimal bme;
\r
389 java.lang.RuntimeException e = null;
\r
399 java.lang.String badstrings[];
\r
402 // constants [statically-called constructors]
\r
403 (new Test("con001")).ok = (com.ibm.icu.math.BigDecimal.ZERO.toString()).equals("0");
\r
404 (new Test("con002")).ok = (com.ibm.icu.math.BigDecimal.ONE.toString()).equals("1");
\r
405 (new Test("con003")).ok = (com.ibm.icu.math.BigDecimal.TEN.toString()).equals("10");
\r
406 (new Test("con004")).ok = (com.ibm.icu.math.BigDecimal.ZERO.intValueExact()) == 0;
\r
407 (new Test("con005")).ok = (com.ibm.icu.math.BigDecimal.ONE.intValueExact()) == 1;
\r
408 (new Test("con006")).ok = (com.ibm.icu.math.BigDecimal.TEN.intValueExact()) == 10;
\r
410 // [java.math.] BigDecimal
\r
411 (new Test("cbd001")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal("0"))).toString()).equals("0");
\r
412 (new Test("cbd002")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal("1"))).toString()).equals("1");
\r
413 (new Test("cbd003")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal("10"))).toString()).equals("10");
\r
414 (new Test("cbd004")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal("1000"))).toString()).equals("1000");
\r
415 (new Test("cbd005")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal("10.0"))).toString()).equals("10.0");
\r
416 (new Test("cbd006")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal("10.1"))).toString()).equals("10.1");
\r
417 (new Test("cbd007")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal("-1.1"))).toString()).equals("-1.1");
\r
418 (new Test("cbd008")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal("-9.0"))).toString()).equals("-9.0");
\r
419 (new Test("cbd009")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal("0.9"))).toString()).equals("0.9");
\r
421 num = "123456789.123456789";
\r
422 (new Test("cbd010")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal(num))).toString()).equals(num);
\r
423 num = "123456789.000000000";
\r
424 (new Test("cbd011")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal(num))).toString()).equals(num);
\r
425 num = "123456789000000000";
\r
426 (new Test("cbd012")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal(num))).toString()).equals(num);
\r
427 num = "0.00000123456789";
\r
428 (new Test("cbd013")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal(num))).toString()).equals(num);
\r
429 num = "0.000000123456789";
\r
431 // ignore format change issues with 1.5
\r
432 if (!isJDK15OrLater)
\r
433 (new Test("cbd014")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal(num))).toString()).equals(num);
\r
436 new com.ibm.icu.math.BigDecimal((java.math.BigDecimal) null);
\r
438 } catch (java.lang.NullPointerException $3) {
\r
441 (new Test("cbi015")).ok = flag;
\r
444 bip = new BigInteger("987654321987654321987654321"); // biggie +ve
\r
445 biz = new BigInteger("0"); // biggie 0
\r
446 bin = new BigInteger("-12345678998765432112345678"); // biggie -ve
\r
447 (new Test("cbi001")).ok = ((new com.ibm.icu.math.BigDecimal(bip)).toString()).equals(bip.toString());
\r
448 (new Test("cbi002")).ok = ((new com.ibm.icu.math.BigDecimal(biz)).toString()).equals("0");
\r
449 (new Test("cbi003")).ok = ((new com.ibm.icu.math.BigDecimal(bin)).toString()).equals(bin.toString());
\r
451 new com.ibm.icu.math.BigDecimal((java.math.BigInteger) null);
\r
453 } catch (java.lang.NullPointerException $4) {
\r
456 (new Test("cbi004")).ok = flag;
\r
458 // BigInteger with scale
\r
459 bip = new BigInteger("123456789"); // bigish
\r
460 bda = new com.ibm.icu.math.BigDecimal(bip);
\r
461 bdb = new com.ibm.icu.math.BigDecimal(bip, 5);
\r
462 bmc = new com.ibm.icu.math.BigDecimal(bip, 15);
\r
463 (new Test("cbs001")).ok = (bda.toString()).equals("123456789");
\r
464 (new Test("cbs002")).ok = (bdb.toString()).equals("1234.56789");
\r
465 (new Test("cbs003")).ok = (bmc.toString()).equals("0.000000123456789");
\r
466 bip = new BigInteger("123456789123456789123456789"); // biggie
\r
467 bda = new com.ibm.icu.math.BigDecimal(bip);
\r
468 bdb = new com.ibm.icu.math.BigDecimal(bip, 7);
\r
469 bmc = new com.ibm.icu.math.BigDecimal(bip, 13);
\r
470 bmd = new com.ibm.icu.math.BigDecimal(bip, 19);
\r
471 bme = new com.ibm.icu.math.BigDecimal(bip, 29);
\r
472 (new Test("cbs011")).ok = (bda.toString()).equals("123456789123456789123456789");
\r
473 (new Test("cbs012")).ok = (bdb.toString()).equals("12345678912345678912.3456789");
\r
474 (new Test("cbs013")).ok = (bmc.toString()).equals("12345678912345.6789123456789");
\r
475 (new Test("cbs014")).ok = (bmd.toString()).equals("12345678.9123456789123456789");
\r
476 (new Test("cbs015")).ok = (bme.toString()).equals("0.00123456789123456789123456789");
\r
478 new com.ibm.icu.math.BigDecimal((java.math.BigInteger) null, 1);
\r
480 } catch (java.lang.NullPointerException $5) {
\r
483 (new Test("cbs004")).ok = flag;
\r
485 new com.ibm.icu.math.BigDecimal(bip, -8);
\r
487 } catch (java.lang.RuntimeException $6) {
\r
489 flag = (e.getMessage()).equals("Negative scale: -8");
\r
491 (new Test("cbs005")).ok = flag;
\r
494 // We just test it's there
\r
495 // Functionality is tested by BigDecimal(String).
\r
496 ca = ("123.45").toCharArray();
\r
497 (new Test("cca001")).ok = ((new com.ibm.icu.math.BigDecimal(ca))
\r
498 .toString()).equals("123.45");
\r
500 new com.ibm.icu.math.BigDecimal((char[]) null);
\r
502 } catch (java.lang.NullPointerException $7) {
\r
505 (new Test("cca010")).ok = flag;
\r
508 // We just test it's there, and that offsets work.
\r
509 // Functionality is tested by BigDecimal(String).
\r
510 ca = ("123.45").toCharArray();
\r
511 (new Test("cca101")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 0, 6)).toString()).equals("123.45");
\r
512 (new Test("cca102")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 1, 5)).toString()).equals("23.45");
\r
513 (new Test("cca103")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 2, 4)).toString()).equals("3.45");
\r
514 (new Test("cca104")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 3, 3)).toString()).equals("0.45");
\r
515 (new Test("cca105")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 4, 2)).toString()).equals("45");
\r
516 (new Test("cca106")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 5, 1)).toString()).equals("5");
\r
518 (new Test("cca110")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 0, 1)).toString()).equals("1");
\r
519 (new Test("cca111")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 1, 1)).toString()).equals("2");
\r
520 (new Test("cca112")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 2, 1)).toString()).equals("3");
\r
521 (new Test("cca113")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 4, 1)).toString()).equals("4");
\r
523 (new Test("cca120")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 0, 2)).toString()).equals("12");
\r
524 (new Test("cca121")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 1, 2)).toString()).equals("23");
\r
525 (new Test("cca122")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 2, 2)).toString()).equals("3");
\r
526 (new Test("cca123")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 3, 2)).toString()).equals("0.4");
\r
528 (new Test("cca130")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 0, 3)).toString()).equals("123");
\r
529 (new Test("cca131")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 1, 3)).toString()).equals("23");
\r
530 (new Test("cca132")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 2, 3)).toString()).equals("3.4");
\r
532 (new Test("cca140")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 0, 4)).toString()).equals("123");
\r
533 (new Test("cca141")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 1, 4)).toString()).equals("23.4");
\r
535 (new Test("cca150")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 0, 5)).toString()).equals("123.4");
\r
537 // a couple of oddies
\r
538 ca = ("x23.4x").toCharArray();
\r
539 (new Test("cca160")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 1, 4)).toString()).equals("23.4");
\r
540 (new Test("cca161")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 1, 1)).toString()).equals("2");
\r
541 (new Test("cca162")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 4, 1)).toString()).equals("4");
\r
543 ca = ("0123456789.9876543210").toCharArray();
\r
544 (new Test("cca163")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 0, 21)).toString()).equals("123456789.9876543210");
\r
545 (new Test("cca164")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 1, 20)).toString()).equals("123456789.9876543210");
\r
546 (new Test("cca165")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 2, 19)).toString()).equals("23456789.9876543210");
\r
547 (new Test("cca166")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 2, 18)).toString()).equals("23456789.987654321");
\r
548 (new Test("cca167")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 2, 17)).toString()).equals("23456789.98765432");
\r
549 (new Test("cca168")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 2, 16)).toString()).equals("23456789.9876543");
\r
552 new com.ibm.icu.math.BigDecimal((char[]) null, 0, 1);
\r
554 } catch (java.lang.NullPointerException $8) {
\r
557 (new Test("cca200")).ok = flag;
\r
560 new com.ibm.icu.math.BigDecimal("123".toCharArray(), 0, 0);
\r
562 } catch (java.lang.NumberFormatException $9) {
\r
565 (new Test("cca201")).ok = flag;
\r
568 new com.ibm.icu.math.BigDecimal("123".toCharArray(), 2, 4);
\r
570 } catch (java.lang.RuntimeException $10) { // anything OK
\r
573 (new Test("cca202")).ok = flag;
\r
575 new com.ibm.icu.math.BigDecimal("123".toCharArray(), -1, 2);
\r
577 } catch (java.lang.RuntimeException $11) { // anything OK
\r
580 (new Test("cca203")).ok = flag;
\r
582 new com.ibm.icu.math.BigDecimal("123".toCharArray(), 1, -2);
\r
584 } catch (java.lang.RuntimeException $12) { // anything OK
\r
587 (new Test("cca204")).ok = flag;
\r
589 // double [deprecated]
\r
590 // Note that many of these differ from the valueOf(double) results.
\r
593 dpos = dpos / ((double) 10);
\r
594 dneg = (double) -dpos;
\r
595 (new Test("cdo001")).ok = ((new com.ibm.icu.math.BigDecimal(dneg)).toString()).equals("-0.1000000000000000055511151231257827021181583404541015625");
\r
597 (new Test("cdo002")).ok = ((new com.ibm.icu.math.BigDecimal(dzer)).toString()).equals("0"); // NB, not '0.0'
\r
598 (new Test("cdo003")).ok = ((new com.ibm.icu.math.BigDecimal(dpos)).toString()).equals("0.1000000000000000055511151231257827021181583404541015625");
\r
600 dpos5 = (double) 0.5D;
\r
601 dneg5 = (double) -dpos5;
\r
602 (new Test("cdo004")).ok = ((new com.ibm.icu.math.BigDecimal(dneg5)).toString()).equals("-0.5");
\r
603 (new Test("cdo005")).ok = ((new com.ibm.icu.math.BigDecimal(dpos5)).toString()).equals("0.5");
\r
604 dmin = java.lang.Double.MIN_VALUE;
\r
605 dmax = java.lang.Double.MAX_VALUE;
\r
606 if (!isJDK15OrLater) // for some reason we format using scientific
\r
607 // notation on 1.5 after 30 decimals or so
\r
608 (new Test("cdo006")).ok = ((new com.ibm.icu.math.BigDecimal(dmin)).toString()).equals("0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004940656458412465441765687928682213723650598026143247644255856825006755072702087518652998363616359923797965646954457177309266567103559397963987747960107818781263007131903114045278458171678489821036887186360569987307230500063874091535649843873124733972731696151400317153853980741262385655911710266585566867681870395603106249319452715914924553293054565444011274801297099995419319894090804165633245247571478690147267801593552386115501348035264934720193790268107107491703332226844753335720832431936092382893458368060106011506169809753078342277318329247904982524730776375927247874656084778203734469699533647017972677717585125660551199131504891101451037862738167250955837389733598993664809941164205702637090279242767544565229087538682506419718265533447265625");
\r
610 (new Test("cdo007")).ok = ((new com.ibm.icu.math.BigDecimal(dmax)).toString()).equals("179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368");
\r
614 d = d / ((double) 10);
\r
615 (new Test("cdo010")).ok = ((new com.ibm.icu.math.BigDecimal(d)).toString()).equals("0.90000000000000002220446049250313080847263336181640625");
\r
617 d = d / ((double) 10);
\r
618 (new Test("cdo011")).ok = ((new com.ibm.icu.math.BigDecimal(d)).toString()).equals("0.0899999999999999966693309261245303787291049957275390625");
\r
620 d = d / ((double) 10);
\r
621 (new Test("cdo012")).ok = ((new com.ibm.icu.math.BigDecimal(d)).toString()).equals("0.00899999999999999931998839741709161899052560329437255859375");
\r
623 d = d / ((double) 10);
\r
624 (new Test("cdo013")).ok = ((new com.ibm.icu.math.BigDecimal(d)).toString()).equals("0.00089999999999999997536692664112933925935067236423492431640625");
\r
626 d = d / ((double) 10);
\r
627 (new Test("cdo014")).ok = ((new com.ibm.icu.math.BigDecimal(d)).toString()).equals("0.00008999999999999999211568180168541175589780323207378387451171875");
\r
629 d = d / ((double) 10);
\r
630 (new Test("cdo015")).ok = ((new com.ibm.icu.math.BigDecimal(d)).toString()).equals("0.00000899999999999999853394182236510090433512232266366481781005859375");
\r
632 d = d / ((double) 10);
\r
633 if (!isJDK15OrLater)
\r
634 (new Test("cdo016")).ok = ((new com.ibm.icu.math.BigDecimal(d)).toString()).equals("0.000000899999999999999853394182236510090433512232266366481781005859375");
\r
636 d = d / ((double) 10);
\r
637 if (!isJDK15OrLater)
\r
638 (new Test("cdo017")).ok = ((new com.ibm.icu.math.BigDecimal(d)).toString()).equals("0.0000000899999999999999853394182236510090433512232266366481781005859375");
\r
640 d = d / ((double) 10);
\r
641 if (!isJDK15OrLater)
\r
642 (new Test("cdo018")).ok = ((new com.ibm.icu.math.BigDecimal(d)).toString()).equals("0.000000008999999999999997872197332322678764437995369007694534957408905029296875");
\r
645 new com.ibm.icu.math.BigDecimal(
\r
646 java.lang.Double.POSITIVE_INFINITY);
\r
648 } catch (java.lang.NumberFormatException $13) {
\r
651 (new Test("cdo101")).ok = flag;
\r
653 new com.ibm.icu.math.BigDecimal(
\r
654 java.lang.Double.NEGATIVE_INFINITY);
\r
656 } catch (java.lang.NumberFormatException $14) {
\r
659 (new Test("cdo102")).ok = flag;
\r
661 new com.ibm.icu.math.BigDecimal(java.lang.Double.NaN);
\r
663 } catch (java.lang.NumberFormatException $15) {
\r
666 (new Test("cdo103")).ok = flag;
\r
669 (new Test("cin001")).ok = ((new com.ibm.icu.math.BigDecimal(imin)).toString()).equals("-2147483648");
\r
670 (new Test("cin002")).ok = ((new com.ibm.icu.math.BigDecimal(imax)).toString()).equals("2147483647");
\r
671 (new Test("cin003")).ok = ((new com.ibm.icu.math.BigDecimal(ineg)).toString()).equals("-1");
\r
672 (new Test("cin004")).ok = ((new com.ibm.icu.math.BigDecimal(izer)).toString()).equals("0");
\r
673 (new Test("cin005")).ok = ((new com.ibm.icu.math.BigDecimal(ipos)).toString()).equals("1");
\r
674 (new Test("cin006")).ok = ((new com.ibm.icu.math.BigDecimal(10)).toString()).equals("10");
\r
675 (new Test("cin007")).ok = ((new com.ibm.icu.math.BigDecimal(9)).toString()).equals("9");
\r
676 (new Test("cin008")).ok = ((new com.ibm.icu.math.BigDecimal(5)).toString()).equals("5");
\r
677 (new Test("cin009")).ok = ((new com.ibm.icu.math.BigDecimal(2)).toString()).equals("2");
\r
678 (new Test("cin010")).ok = ((new com.ibm.icu.math.BigDecimal(-2)).toString()).equals("-2");
\r
679 (new Test("cin011")).ok = ((new com.ibm.icu.math.BigDecimal(-5)).toString()).equals("-5");
\r
680 (new Test("cin012")).ok = ((new com.ibm.icu.math.BigDecimal(-9)).toString()).equals("-9");
\r
681 (new Test("cin013")).ok = ((new com.ibm.icu.math.BigDecimal(-10)).toString()).equals("-10");
\r
682 (new Test("cin014")).ok = ((new com.ibm.icu.math.BigDecimal(-11)).toString()).equals("-11");
\r
683 (new Test("cin015")).ok = ((new com.ibm.icu.math.BigDecimal(-99)).toString()).equals("-99");
\r
684 (new Test("cin016")).ok = ((new com.ibm.icu.math.BigDecimal(-100)).toString()).equals("-100");
\r
685 (new Test("cin017")).ok = ((new com.ibm.icu.math.BigDecimal(-999)).toString()).equals("-999");
\r
686 (new Test("cin018")).ok = ((new com.ibm.icu.math.BigDecimal(-1000)).toString()).equals("-1000");
\r
688 (new Test("cin019")).ok = ((new com.ibm.icu.math.BigDecimal(11)).toString()).equals("11");
\r
689 (new Test("cin020")).ok = ((new com.ibm.icu.math.BigDecimal(99)).toString()).equals("99");
\r
690 (new Test("cin021")).ok = ((new com.ibm.icu.math.BigDecimal(100)).toString()).equals("100");
\r
691 (new Test("cin022")).ok = ((new com.ibm.icu.math.BigDecimal(999)).toString()).equals("999");
\r
692 (new Test("cin023")).ok = ((new com.ibm.icu.math.BigDecimal(1000)).toString()).equals("1000");
\r
695 (new Test("clo001")).ok = ((new com.ibm.icu.math.BigDecimal(lmin)).toString()).equals("-9223372036854775808");
\r
696 (new Test("clo002")).ok = ((new com.ibm.icu.math.BigDecimal(lmax)).toString()).equals("9223372036854775807");
\r
697 (new Test("clo003")).ok = ((new com.ibm.icu.math.BigDecimal(lneg)).toString()).equals("-1");
\r
698 (new Test("clo004")).ok = ((new com.ibm.icu.math.BigDecimal(lzer)).toString()).equals("0");
\r
699 (new Test("clo005")).ok = ((new com.ibm.icu.math.BigDecimal(lpos)).toString()).equals("1");
\r
701 // String [many more examples are elsewhere]
\r
702 // strings without E cannot generate E in result
\r
703 (new Test("cst001")).ok = ((new com.ibm.icu.math.BigDecimal("12")).toString()).equals("12");
\r
704 (new Test("cst002")).ok = ((new com.ibm.icu.math.BigDecimal("-76")).toString()).equals("-76");
\r
705 (new Test("cst003")).ok = ((new com.ibm.icu.math.BigDecimal("12.76")).toString()).equals("12.76");
\r
706 (new Test("cst004")).ok = ((new com.ibm.icu.math.BigDecimal("+12.76")).toString()).equals("12.76");
\r
707 (new Test("cst005")).ok = ((new com.ibm.icu.math.BigDecimal("012.76")).toString()).equals("12.76");
\r
708 (new Test("cst006")).ok = ((new com.ibm.icu.math.BigDecimal("+0.003")).toString()).equals("0.003");
\r
709 (new Test("cst007")).ok = ((new com.ibm.icu.math.BigDecimal("17.")).toString()).equals("17");
\r
710 (new Test("cst008")).ok = ((new com.ibm.icu.math.BigDecimal(".5")).toString()).equals("0.5");
\r
711 (new Test("cst009")).ok = ((new com.ibm.icu.math.BigDecimal("044")).toString()).equals("44");
\r
712 (new Test("cst010")).ok = ((new com.ibm.icu.math.BigDecimal("0044")).toString()).equals("44");
\r
713 (new Test("cst011")).ok = ((new com.ibm.icu.math.BigDecimal("0.0005")).toString()).equals("0.0005");
\r
714 (new Test("cst012")).ok = ((new com.ibm.icu.math.BigDecimal("00.00005")).toString()).equals("0.00005");
\r
715 (new Test("cst013")).ok = ((new com.ibm.icu.math.BigDecimal("0.000005")).toString()).equals("0.000005");
\r
716 (new Test("cst014")).ok = ((new com.ibm.icu.math.BigDecimal("0.0000005")).toString()).equals("0.0000005"); // \NR
\r
717 (new Test("cst015")).ok = ((new com.ibm.icu.math.BigDecimal("0.00000005")).toString()).equals("0.00000005"); // \NR
\r
718 (new Test("cst016")).ok = ((new com.ibm.icu.math.BigDecimal("12345678.876543210")).toString()).equals("12345678.876543210");
\r
719 (new Test("cst017")).ok = ((new com.ibm.icu.math.BigDecimal("2345678.876543210")).toString()).equals("2345678.876543210");
\r
720 (new Test("cst018")).ok = ((new com.ibm.icu.math.BigDecimal("345678.876543210")).toString()).equals("345678.876543210");
\r
721 (new Test("cst019")).ok = ((new com.ibm.icu.math.BigDecimal("0345678.87654321")).toString()).equals("345678.87654321");
\r
722 (new Test("cst020")).ok = ((new com.ibm.icu.math.BigDecimal("345678.8765432")).toString()).equals("345678.8765432");
\r
723 (new Test("cst021")).ok = ((new com.ibm.icu.math.BigDecimal("+345678.8765432")).toString()).equals("345678.8765432");
\r
724 (new Test("cst022")).ok = ((new com.ibm.icu.math.BigDecimal("+0345678.8765432")).toString()).equals("345678.8765432");
\r
725 (new Test("cst023")).ok = ((new com.ibm.icu.math.BigDecimal("+00345678.8765432")).toString()).equals("345678.8765432");
\r
726 (new Test("cst024")).ok = ((new com.ibm.icu.math.BigDecimal("-345678.8765432")).toString()).equals("-345678.8765432");
\r
727 (new Test("cst025")).ok = ((new com.ibm.icu.math.BigDecimal("-0345678.8765432")).toString()).equals("-345678.8765432");
\r
728 (new Test("cst026")).ok = ((new com.ibm.icu.math.BigDecimal("-00345678.8765432")).toString()).equals("-345678.8765432");
\r
731 (new Test("cst035")).ok = ((new com.ibm.icu.math.BigDecimal("\u0e57.\u0e50")).toString()).equals("7.0");
\r
732 (new Test("cst036")).ok = ((new com.ibm.icu.math.BigDecimal("\u0b66.\u0b67")).toString()).equals("0.1");
\r
733 (new Test("cst037")).ok = ((new com.ibm.icu.math.BigDecimal("\u0b66\u0b66")).toString()).equals("0");
\r
734 (new Test("cst038")).ok = ((new com.ibm.icu.math.BigDecimal("\u0b6a\u0b66")).toString()).equals("40");
\r
737 (new Test("cst040")).ok = ((new com.ibm.icu.math.BigDecimal("1E+9")).toString()).equals("1E+9");
\r
738 (new Test("cst041")).ok = ((new com.ibm.icu.math.BigDecimal("1e+09")).toString()).equals("1E+9");
\r
739 (new Test("cst042")).ok = ((new com.ibm.icu.math.BigDecimal("1E+90")).toString()).equals("1E+90");
\r
740 (new Test("cst043")).ok = ((new com.ibm.icu.math.BigDecimal("+1E+009")).toString()).equals("1E+9");
\r
741 (new Test("cst044")).ok = ((new com.ibm.icu.math.BigDecimal("0E+9")).toString()).equals("0");
\r
742 (new Test("cst045")).ok = ((new com.ibm.icu.math.BigDecimal("1E+9")).toString()).equals("1E+9");
\r
743 (new Test("cst046")).ok = ((new com.ibm.icu.math.BigDecimal("1E+09")).toString()).equals("1E+9");
\r
744 (new Test("cst047")).ok = ((new com.ibm.icu.math.BigDecimal("1e+90")).toString()).equals("1E+90");
\r
745 (new Test("cst048")).ok = ((new com.ibm.icu.math.BigDecimal("1E+009")).toString()).equals("1E+9");
\r
746 (new Test("cst049")).ok = ((new com.ibm.icu.math.BigDecimal("0E+9")).toString()).equals("0");
\r
747 (new Test("cst050")).ok = ((new com.ibm.icu.math.BigDecimal("1E9")).toString()).equals("1E+9");
\r
748 (new Test("cst051")).ok = ((new com.ibm.icu.math.BigDecimal("1e09")).toString()).equals("1E+9");
\r
749 (new Test("cst052")).ok = ((new com.ibm.icu.math.BigDecimal("1E90")).toString()).equals("1E+90");
\r
750 (new Test("cst053")).ok = ((new com.ibm.icu.math.BigDecimal("1E009")).toString()).equals("1E+9");
\r
751 (new Test("cst054")).ok = ((new com.ibm.icu.math.BigDecimal("0E9")).toString()).equals("0");
\r
752 (new Test("cst055")).ok = ((new com.ibm.icu.math.BigDecimal("0.000e+0")).toString()).equals("0");
\r
753 (new Test("cst056")).ok = ((new com.ibm.icu.math.BigDecimal("0.000E-1")).toString()).equals("0");
\r
754 (new Test("cst057")).ok = ((new com.ibm.icu.math.BigDecimal("4E+9")).toString()).equals("4E+9");
\r
755 (new Test("cst058")).ok = ((new com.ibm.icu.math.BigDecimal("44E+9")).toString()).equals("4.4E+10");
\r
756 (new Test("cst059")).ok = ((new com.ibm.icu.math.BigDecimal("0.73e-7")).toString()).equals("7.3E-8");
\r
757 (new Test("cst060")).ok = ((new com.ibm.icu.math.BigDecimal("00E+9")).toString()).equals("0");
\r
758 (new Test("cst061")).ok = ((new com.ibm.icu.math.BigDecimal("00E-9")).toString()).equals("0");
\r
759 (new Test("cst062")).ok = ((new com.ibm.icu.math.BigDecimal("10E+9")).toString()).equals("1.0E+10");
\r
760 (new Test("cst063")).ok = ((new com.ibm.icu.math.BigDecimal("10E+09")).toString()).equals("1.0E+10");
\r
761 (new Test("cst064")).ok = ((new com.ibm.icu.math.BigDecimal("10e+90")).toString()).equals("1.0E+91");
\r
762 (new Test("cst065")).ok = ((new com.ibm.icu.math.BigDecimal("10E+009")).toString()).equals("1.0E+10");
\r
763 (new Test("cst066")).ok = ((new com.ibm.icu.math.BigDecimal("100e+9")).toString()).equals("1.00E+11");
\r
764 (new Test("cst067")).ok = ((new com.ibm.icu.math.BigDecimal("100e+09")).toString()).equals("1.00E+11");
\r
765 (new Test("cst068")).ok = ((new com.ibm.icu.math.BigDecimal("100E+90")).toString()).equals("1.00E+92");
\r
766 (new Test("cst069")).ok = ((new com.ibm.icu.math.BigDecimal("100e+009")).toString()).equals("1.00E+11");
\r
768 (new Test("cst070")).ok = ((new com.ibm.icu.math.BigDecimal("1.265")).toString()).equals("1.265");
\r
769 (new Test("cst071")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E-20")).toString()).equals("1.265E-20");
\r
770 (new Test("cst072")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E-8")).toString()).equals("1.265E-8");
\r
771 (new Test("cst073")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E-4")).toString()).equals("1.265E-4");
\r
772 (new Test("cst074")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E-3")).toString()).equals("1.265E-3");
\r
773 (new Test("cst075")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E-2")).toString()).equals("1.265E-2");
\r
774 (new Test("cst076")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E-1")).toString()).equals("1.265E-1");
\r
775 (new Test("cst077")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E-0")).toString()).equals("1.265");
\r
776 (new Test("cst078")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E+1")).toString()).equals("1.265E+1");
\r
777 (new Test("cst079")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E+2")).toString()).equals("1.265E+2");
\r
778 (new Test("cst080")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E+3")).toString()).equals("1.265E+3");
\r
779 (new Test("cst081")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E+4")).toString()).equals("1.265E+4");
\r
780 (new Test("cst082")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E+8")).toString()).equals("1.265E+8");
\r
781 (new Test("cst083")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E+20")).toString()).equals("1.265E+20");
\r
783 (new Test("cst090")).ok = ((new com.ibm.icu.math.BigDecimal("12.65")).toString()).equals("12.65");
\r
784 (new Test("cst091")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E-20")).toString()).equals("1.265E-19");
\r
785 (new Test("cst092")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E-8")).toString()).equals("1.265E-7");
\r
786 (new Test("cst093")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E-4")).toString()).equals("1.265E-3");
\r
787 (new Test("cst094")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E-3")).toString()).equals("1.265E-2");
\r
788 (new Test("cst095")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E-2")).toString()).equals("1.265E-1");
\r
789 (new Test("cst096")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E-1")).toString()).equals("1.265");
\r
790 (new Test("cst097")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E-0")).toString()).equals("1.265E+1");
\r
791 (new Test("cst098")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E+1")).toString()).equals("1.265E+2");
\r
792 (new Test("cst099")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E+2")).toString()).equals("1.265E+3");
\r
793 (new Test("cst100")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E+3")).toString()).equals("1.265E+4");
\r
794 (new Test("cst101")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E+4")).toString()).equals("1.265E+5");
\r
795 (new Test("cst102")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E+8")).toString()).equals("1.265E+9");
\r
796 (new Test("cst103")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E+20")).toString()).equals("1.265E+21");
\r
798 (new Test("cst110")).ok = ((new com.ibm.icu.math.BigDecimal("126.5")).toString()).equals("126.5");
\r
799 (new Test("cst111")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E-20")).toString()).equals("1.265E-18");
\r
800 (new Test("cst112")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E-8")).toString()).equals("1.265E-6");
\r
801 (new Test("cst113")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E-4")).toString()).equals("1.265E-2");
\r
802 (new Test("cst114")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E-3")).toString()).equals("1.265E-1");
\r
803 (new Test("cst115")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E-2")).toString()).equals("1.265");
\r
804 (new Test("cst116")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E-1")).toString()).equals("1.265E+1");
\r
805 (new Test("cst117")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E-0")).toString()).equals("1.265E+2");
\r
806 (new Test("cst118")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E+1")).toString()).equals("1.265E+3");
\r
807 (new Test("cst119")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E+2")).toString()).equals("1.265E+4");
\r
808 (new Test("cst120")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E+3")).toString()).equals("1.265E+5");
\r
809 (new Test("cst121")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E+4")).toString()).equals("1.265E+6");
\r
810 (new Test("cst122")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E+8")).toString()).equals("1.265E+10");
\r
811 (new Test("cst123")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E+20")).toString()).equals("1.265E+22");
\r
813 (new Test("cst130")).ok = ((new com.ibm.icu.math.BigDecimal("1265")).toString()).equals("1265");
\r
814 (new Test("cst131")).ok = ((new com.ibm.icu.math.BigDecimal("1265E-20")).toString()).equals("1.265E-17");
\r
815 (new Test("cst132")).ok = ((new com.ibm.icu.math.BigDecimal("1265E-8")).toString()).equals("1.265E-5");
\r
816 (new Test("cst133")).ok = ((new com.ibm.icu.math.BigDecimal("1265E-4")).toString()).equals("1.265E-1");
\r
817 (new Test("cst134")).ok = ((new com.ibm.icu.math.BigDecimal("1265E-3")).toString()).equals("1.265");
\r
818 (new Test("cst135")).ok = ((new com.ibm.icu.math.BigDecimal("1265E-2")).toString()).equals("1.265E+1");
\r
819 (new Test("cst136")).ok = ((new com.ibm.icu.math.BigDecimal("1265E-1")).toString()).equals("1.265E+2");
\r
820 (new Test("cst137")).ok = ((new com.ibm.icu.math.BigDecimal("1265E-0")).toString()).equals("1.265E+3");
\r
821 (new Test("cst138")).ok = ((new com.ibm.icu.math.BigDecimal("1265E+1")).toString()).equals("1.265E+4");
\r
822 (new Test("cst139")).ok = ((new com.ibm.icu.math.BigDecimal("1265E+2")).toString()).equals("1.265E+5");
\r
823 (new Test("cst140")).ok = ((new com.ibm.icu.math.BigDecimal("1265E+3")).toString()).equals("1.265E+6");
\r
824 (new Test("cst141")).ok = ((new com.ibm.icu.math.BigDecimal("1265E+4")).toString()).equals("1.265E+7");
\r
825 (new Test("cst142")).ok = ((new com.ibm.icu.math.BigDecimal("1265E+8")).toString()).equals("1.265E+11");
\r
826 (new Test("cst143")).ok = ((new com.ibm.icu.math.BigDecimal("1265E+20")).toString()).equals("1.265E+23");
\r
828 (new Test("cst150")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265")).toString()).equals("0.1265");
\r
829 (new Test("cst151")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E-20")).toString()).equals("1.265E-21");
\r
830 (new Test("cst152")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E-8")).toString()).equals("1.265E-9");
\r
831 (new Test("cst153")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E-4")).toString()).equals("1.265E-5");
\r
832 (new Test("cst154")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E-3")).toString()).equals("1.265E-4");
\r
833 (new Test("cst155")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E-2")).toString()).equals("1.265E-3");
\r
834 (new Test("cst156")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E-1")).toString()).equals("1.265E-2");
\r
835 (new Test("cst157")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E-0")).toString()).equals("1.265E-1");
\r
836 (new Test("cst158")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E+1")).toString()).equals("1.265");
\r
837 (new Test("cst159")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E+2")).toString()).equals("1.265E+1");
\r
838 (new Test("cst160")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E+3")).toString()).equals("1.265E+2");
\r
839 (new Test("cst161")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E+4")).toString()).equals("1.265E+3");
\r
840 (new Test("cst162")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E+8")).toString()).equals("1.265E+7");
\r
841 (new Test("cst163")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E+20")).toString()).equals("1.265E+19");
\r
843 (new Test("cst170")).ok = ((new com.ibm.icu.math.BigDecimal("0.09e999999999")).toString()).equals("9E+999999997");
\r
844 (new Test("cst171")).ok = ((new com.ibm.icu.math.BigDecimal("0.9e999999999")).toString()).equals("9E+999999998");
\r
845 (new Test("cst172")).ok = ((new com.ibm.icu.math.BigDecimal("9e999999999")).toString()).equals("9E+999999999");
\r
846 (new Test("cst173")).ok = ((new com.ibm.icu.math.BigDecimal("9.9e999999999")).toString()).equals("9.9E+999999999");
\r
847 (new Test("cst174")).ok = ((new com.ibm.icu.math.BigDecimal("9.99e999999999")).toString()).equals("9.99E+999999999");
\r
848 (new Test("cst175")).ok = ((new com.ibm.icu.math.BigDecimal("9.99e-999999999")).toString()).equals("9.99E-999999999");
\r
849 (new Test("cst176")).ok = ((new com.ibm.icu.math.BigDecimal("9.9e-999999999")).toString()).equals("9.9E-999999999");
\r
850 (new Test("cst177")).ok = ((new com.ibm.icu.math.BigDecimal("9e-999999999")).toString()).equals("9E-999999999");
\r
851 (new Test("cst179")).ok = ((new com.ibm.icu.math.BigDecimal("99e-999999999")).toString()).equals("9.9E-999999998");
\r
852 (new Test("cst180")).ok = ((new com.ibm.icu.math.BigDecimal("999e-999999999")).toString()).equals("9.99E-999999997");
\r
855 badstrings = new java.lang.String[] { "1..2", ".", "..", "++1", "--1",
\r
856 "-+1", "+-1", "12e", "12e++", "12f4", " +1", "+ 1", "12 ",
\r
857 " + 1", " - 1 ", "x", "-1-", "12-", "3+", "", "1e-",
\r
858 "7e1000000000", "", "e100", "\u0e5a", "\u0b65", "99e999999999",
\r
859 "999e999999999", "0.9e-999999999", "0.09e-999999999",
\r
860 "0.1e1000000000", "10e-1000000000", "0.9e9999999999",
\r
861 "99e-9999999999", "111e9999999999",
\r
862 "1111e-9999999999" + " " + "111e*123", "111e123-", "111e+12+",
\r
863 "111e1-3-", "111e1*23", "111e1e+3", "1e1.0", "1e123e", "ten",
\r
864 "ONE", "1e.1", "1e1.", "1ee", "e+1" }; // 200-203
\r
881 // watch out for commas on continuation lines
\r
884 int $16 = badstrings.length;
\r
886 for (; $16 > 0; $16--, i++) {
\r
888 new com.ibm.icu.math.BigDecimal(badstrings[i]);
\r
889 say(">>> cst"+(200+i)+":"+" "+badstrings[i]+" "+(new com.ibm.icu.math.BigDecimal(badstrings[i])).toString());
\r
891 } catch (java.lang.NumberFormatException $17) {
\r
894 (new Test("cst" + (200 + i))).ok = flag;
\r
899 new com.ibm.icu.math.BigDecimal((java.lang.String) null);
\r
901 } catch (java.lang.NullPointerException $18) {
\r
904 (new Test("cst301")).ok = flag;
\r
906 summary("Constructors");
\r
910 /** Mutation tests (checks that contents of constant objects are unchanged). */
\r
912 public void diagmutation() {
\r
913 /* ---------------------------------------------------------------- */
\r
914 /* Final tests -- check constants haven't mutated */
\r
915 /* -- also that MC objects haven't mutated */
\r
916 /* ---------------------------------------------------------------- */
\r
917 (new Test("cuc001")).ok = (com.ibm.icu.math.BigDecimal.ZERO.toString()).equals("0");
\r
918 (new Test("cuc002")).ok = (com.ibm.icu.math.BigDecimal.ONE.toString()).equals("1");
\r
919 (new Test("cuc003")).ok = (com.ibm.icu.math.BigDecimal.TEN.toString()).equals("10");
\r
921 (new Test("cuc010")).ok = com.ibm.icu.math.BigDecimal.ROUND_CEILING == com.ibm.icu.math.MathContext.ROUND_CEILING;
\r
922 (new Test("cuc011")).ok = com.ibm.icu.math.BigDecimal.ROUND_DOWN == com.ibm.icu.math.MathContext.ROUND_DOWN;
\r
923 (new Test("cuc012")).ok = com.ibm.icu.math.BigDecimal.ROUND_FLOOR == com.ibm.icu.math.MathContext.ROUND_FLOOR;
\r
924 (new Test("cuc013")).ok = com.ibm.icu.math.BigDecimal.ROUND_HALF_DOWN == com.ibm.icu.math.MathContext.ROUND_HALF_DOWN;
\r
925 (new Test("cuc014")).ok = com.ibm.icu.math.BigDecimal.ROUND_HALF_EVEN == com.ibm.icu.math.MathContext.ROUND_HALF_EVEN;
\r
926 (new Test("cuc015")).ok = com.ibm.icu.math.BigDecimal.ROUND_HALF_UP == com.ibm.icu.math.MathContext.ROUND_HALF_UP;
\r
927 (new Test("cuc016")).ok = com.ibm.icu.math.BigDecimal.ROUND_UNNECESSARY == com.ibm.icu.math.MathContext.ROUND_UNNECESSARY;
\r
928 (new Test("cuc017")).ok = com.ibm.icu.math.BigDecimal.ROUND_UP == com.ibm.icu.math.MathContext.ROUND_UP;
\r
930 (new Test("cuc020")).ok = (com.ibm.icu.math.MathContext.DEFAULT.getDigits()) == 9;
\r
931 (new Test("cuc021")).ok = (com.ibm.icu.math.MathContext.DEFAULT.getForm()) == com.ibm.icu.math.MathContext.SCIENTIFIC;
\r
932 (new Test("cuc022")).ok = (com.ibm.icu.math.MathContext.DEFAULT.getLostDigits() ? 1 : 0) == 0;
\r
933 (new Test("cuc023")).ok = (com.ibm.icu.math.MathContext.DEFAULT.getRoundingMode()) == com.ibm.icu.math.MathContext.ROUND_HALF_UP;
\r
935 // mc9 =MathContext(9)
\r
936 // mcld =MathContext(9, SCIENTIFIC, 1)
\r
937 // mcfd =MathContext(0, PLAIN)
\r
938 (new Test("cuc030")).ok = (mc9.getDigits()) == 9;
\r
939 (new Test("cuc031")).ok = (mc9.getForm()) == com.ibm.icu.math.MathContext.SCIENTIFIC;
\r
940 (new Test("cuc032")).ok = (mc9.getLostDigits() ? 1 : 0) == 0;
\r
941 (new Test("cuc033")).ok = (mc9.getRoundingMode()) == com.ibm.icu.math.MathContext.ROUND_HALF_UP;
\r
942 (new Test("cuc034")).ok = (mcld.getDigits()) == 9;
\r
943 (new Test("cuc035")).ok = (mcld.getForm()) == com.ibm.icu.math.MathContext.SCIENTIFIC;
\r
944 (new Test("cuc036")).ok = (mcld.getLostDigits() ? 1 : 0) == 1;
\r
945 (new Test("cuc037")).ok = (mcld.getRoundingMode()) == com.ibm.icu.math.MathContext.ROUND_HALF_UP;
\r
946 (new Test("cuc038")).ok = (mcfd.getDigits()) == 0;
\r
947 (new Test("cuc039")).ok = (mcfd.getForm()) == com.ibm.icu.math.MathContext.PLAIN;
\r
948 (new Test("cuc040")).ok = (mcfd.getLostDigits() ? 1 : 0) == 0;
\r
949 (new Test("cuc041")).ok = (mcfd.getRoundingMode()) == com.ibm.icu.math.MathContext.ROUND_HALF_UP;
\r
951 summary("No mutation");
\r
955 /* ----------------------------------------------------------------- */
\r
956 /* Operator test methods */
\r
957 /* ----------------------------------------------------------------- */
\r
958 // The use of context in these tests are primarily to show that they
\r
959 // are correctly passed to the methods, except that we check that
\r
960 // each method checks for lostDigits.
\r
962 /** Test the {@link com.ibm.icu.math.BigDecimal#abs} method. */
\r
964 public void diagabs() {
\r
965 boolean flag = false;
\r
966 java.lang.ArithmeticException ae = null;
\r
968 // most of the function of this is tested by add
\r
969 (new Test("abs001")).ok = ((new com.ibm.icu.math.BigDecimal("2")).abs().toString()).equals("2");
\r
970 (new Test("abs002")).ok = ((new com.ibm.icu.math.BigDecimal("-2")).abs().toString()).equals("2");
\r
971 (new Test("abs003")).ok = ((new com.ibm.icu.math.BigDecimal("+0.000")).abs().toString()).equals("0.000");
\r
972 (new Test("abs004")).ok = ((new com.ibm.icu.math.BigDecimal("00.000")).abs().toString()).equals("0.000");
\r
973 (new Test("abs005")).ok = ((new com.ibm.icu.math.BigDecimal("-0.000")).abs().toString()).equals("0.000");
\r
974 (new Test("abs006")).ok = ((new com.ibm.icu.math.BigDecimal("+0.000")).abs(mcdef).toString()).equals("0");
\r
975 (new Test("abs007")).ok = ((new com.ibm.icu.math.BigDecimal("00.000")).abs(mcdef).toString()).equals("0");
\r
976 (new Test("abs008")).ok = ((new com.ibm.icu.math.BigDecimal("-0.000")).abs(mcdef).toString()).equals("0");
\r
977 (new Test("abs009")).ok = ((new com.ibm.icu.math.BigDecimal("-2000000")).abs().toString()).equals("2000000");
\r
978 (new Test("abs010")).ok = ((new com.ibm.icu.math.BigDecimal("-2000000")).abs(mcdef).toString()).equals("2000000");
\r
979 (new Test("abs011")).ok = ((new com.ibm.icu.math.BigDecimal("-2000000")).abs(mc6).toString()).equals("2.00000E+6");
\r
980 (new Test("abs012")).ok = ((new com.ibm.icu.math.BigDecimal("2000000")).abs(mc6).toString()).equals("2.00000E+6");
\r
981 (new Test("abs013")).ok = ((new com.ibm.icu.math.BigDecimal("0.2")).abs().toString()).equals("0.2");
\r
982 (new Test("abs014")).ok = ((new com.ibm.icu.math.BigDecimal("-0.2")).abs().toString()).equals("0.2");
\r
983 (new Test("abs015")).ok = ((new com.ibm.icu.math.BigDecimal("0.01")).abs().toString()).equals("0.01");
\r
984 (new Test("abs016")).ok = ((new com.ibm.icu.math.BigDecimal("-0.01")).abs().toString()).equals("0.01");
\r
988 } catch (java.lang.ArithmeticException $19) {
\r
990 flag = (ae.getMessage()).equals("Too many digits:" + " "
\r
991 + tenlong.toString());
\r
993 (new Test("abs020")).ok = flag;
\r
994 // check lostdigits not raised if digits=0 [monadic method]
\r
996 tenlong.abs(mcld0);
\r
998 } catch (java.lang.ArithmeticException $20) {
\r
1001 }/* checkdigits */
\r
1002 (new Test("abs021")).ok = flag;
\r
1004 com.ibm.icu.math.BigDecimal.TEN
\r
1005 .abs((com.ibm.icu.math.MathContext) null);
\r
1007 } catch (java.lang.NullPointerException $21) {
\r
1010 (new Test("abs022")).ok = flag;
\r
1015 /* ----------------------------------------------------------------- */
\r
1017 /** Test the {@link com.ibm.icu.math.BigDecimal#add} method. */
\r
1019 public void diagadd() {
\r
1020 boolean flag = false;
\r
1021 com.ibm.icu.math.BigDecimal alhs;
\r
1022 com.ibm.icu.math.BigDecimal arhs;
\r
1023 java.lang.ArithmeticException ae = null;
\r
1025 // [first group are 'quick confidence check']
\r
1026 (new Test("add001")).ok=((new com.ibm.icu.math.BigDecimal(2)).add(new com.ibm.icu.math.BigDecimal(3),mcdef).toString()).equals("5");
\r
1027 (new Test("add003")).ok=((new com.ibm.icu.math.BigDecimal("5.75")).add(new com.ibm.icu.math.BigDecimal("3.3"),mcdef).toString()).equals("9.05");
\r
1028 (new Test("add004")).ok=((new com.ibm.icu.math.BigDecimal("5")).add(new com.ibm.icu.math.BigDecimal("-3"),mcdef).toString()).equals("2");
\r
1029 (new Test("add005")).ok=((new com.ibm.icu.math.BigDecimal("-5")).add(new com.ibm.icu.math.BigDecimal("-3"),mcdef).toString()).equals("-8");
\r
1030 (new Test("add006")).ok=((new com.ibm.icu.math.BigDecimal("-7")).add(new com.ibm.icu.math.BigDecimal("2.5"),mcdef).toString()).equals("-4.5");
\r
1031 (new Test("add007")).ok=((new com.ibm.icu.math.BigDecimal("0.7")).add(new com.ibm.icu.math.BigDecimal("0.3"),mcdef).toString()).equals("1.0");
\r
1032 (new Test("add008")).ok=((new com.ibm.icu.math.BigDecimal("1.25")).add(new com.ibm.icu.math.BigDecimal("1.25"),mcdef).toString()).equals("2.50");
\r
1033 (new Test("add009")).ok=((new com.ibm.icu.math.BigDecimal("1.23456789")).add(new com.ibm.icu.math.BigDecimal("1.00000000"),mcdef).toString()).equals("2.23456789");
\r
1035 (new Test("add010")).ok=((new com.ibm.icu.math.BigDecimal("1.23456789")).add(new com.ibm.icu.math.BigDecimal("1.00000011"),mcdef).toString()).equals("2.23456800");
\r
1038 (new Test("add011")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444444")).add(new com.ibm.icu.math.BigDecimal("0.5555555555"),mcdef).toString()).equals("1.00000000");
\r
1040 (new Test("add012")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444440")).add(new com.ibm.icu.math.BigDecimal("0.5555555555"),mcdef).toString()).equals("1.00000000");
\r
1042 (new Test("add013")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444444")).add(new com.ibm.icu.math.BigDecimal("0.5555555550"),mcdef).toString()).equals("0.999999999");
\r
1044 (new Test("add014")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444444999")).add(new com.ibm.icu.math.BigDecimal("0"),mcdef).toString()).equals("0.444444444");
\r
1046 (new Test("add015")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444445000")).add(new com.ibm.icu.math.BigDecimal("0"),mcdef).toString()).equals("0.444444445");
\r
1049 (new Test("add016")).ok=((new com.ibm.icu.math.BigDecimal("70")).add(new com.ibm.icu.math.BigDecimal("10000e+9"),mcdef).toString()).equals("1.00000000E+13");
\r
1051 (new Test("add017")).ok=((new com.ibm.icu.math.BigDecimal("700")).add(new com.ibm.icu.math.BigDecimal("10000e+9"),mcdef).toString()).equals("1.00000000E+13");
\r
1053 (new Test("add018")).ok=((new com.ibm.icu.math.BigDecimal("7000")).add(new com.ibm.icu.math.BigDecimal("10000e+9"),mcdef).toString()).equals("1.00000000E+13");
\r
1055 (new Test("add019")).ok=((new com.ibm.icu.math.BigDecimal("70000")).add(new com.ibm.icu.math.BigDecimal("10000e+9"),mcdef).toString()).equals("1.00000001E+13");
\r
1057 (new Test("add020")).ok=((new com.ibm.icu.math.BigDecimal("700000")).add(new com.ibm.icu.math.BigDecimal("10000e+9"),mcdef).toString()).equals("1.00000007E+13");
\r
1060 // [Now the same group with fixed arithmetic]
\r
1061 (new Test("add030")).ok=((new com.ibm.icu.math.BigDecimal(2)).add(new com.ibm.icu.math.BigDecimal(3)).toString()).equals("5");
\r
1062 (new Test("add031")).ok=((new com.ibm.icu.math.BigDecimal("5.75")).add(new com.ibm.icu.math.BigDecimal("3.3")).toString()).equals("9.05");
\r
1063 (new Test("add032")).ok=((new com.ibm.icu.math.BigDecimal("5")).add(new com.ibm.icu.math.BigDecimal("-3")).toString()).equals("2");
\r
1064 (new Test("add033")).ok=((new com.ibm.icu.math.BigDecimal("-5")).add(new com.ibm.icu.math.BigDecimal("-3")).toString()).equals("-8");
\r
1065 (new Test("add034")).ok=((new com.ibm.icu.math.BigDecimal("-7")).add(new com.ibm.icu.math.BigDecimal("2.5")).toString()).equals("-4.5");
\r
1066 (new Test("add035")).ok=((new com.ibm.icu.math.BigDecimal("0.7")).add(new com.ibm.icu.math.BigDecimal("0.3")).toString()).equals("1.0");
\r
1067 (new Test("add036")).ok=((new com.ibm.icu.math.BigDecimal("1.25")).add(new com.ibm.icu.math.BigDecimal("1.25")).toString()).equals("2.50");
\r
1068 (new Test("add037")).ok=((new com.ibm.icu.math.BigDecimal("1.23456789")).add(new com.ibm.icu.math.BigDecimal("1.00000000")).toString()).equals("2.23456789");
\r
1070 (new Test("add038")).ok=((new com.ibm.icu.math.BigDecimal("1.23456789")).add(new com.ibm.icu.math.BigDecimal("1.00000011")).toString()).equals("2.23456800");
\r
1073 (new Test("add039")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444444")).add(new com.ibm.icu.math.BigDecimal("0.5555555555")).toString()).equals("0.9999999999");
\r
1075 (new Test("add040")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444440")).add(new com.ibm.icu.math.BigDecimal("0.5555555555")).toString()).equals("0.9999999995");
\r
1077 (new Test("add041")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444444")).add(new com.ibm.icu.math.BigDecimal("0.5555555550")).toString()).equals("0.9999999994");
\r
1079 (new Test("add042")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444444999")).add(new com.ibm.icu.math.BigDecimal("0")).toString()).equals("0.4444444444999");
\r
1081 (new Test("add043")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444445000")).add(new com.ibm.icu.math.BigDecimal("0")).toString()).equals("0.4444444445000");
\r
1084 (new Test("add044")).ok=((new com.ibm.icu.math.BigDecimal("70")).add(new com.ibm.icu.math.BigDecimal("10000e+9")).toString()).equals("10000000000070");
\r
1086 (new Test("add045")).ok=((new com.ibm.icu.math.BigDecimal("700")).add(new com.ibm.icu.math.BigDecimal("10000e+9")).toString()).equals("10000000000700");
\r
1088 (new Test("add046")).ok=((new com.ibm.icu.math.BigDecimal("7000")).add(new com.ibm.icu.math.BigDecimal("10000e+9")).toString()).equals("10000000007000");
\r
1090 (new Test("add047")).ok=((new com.ibm.icu.math.BigDecimal("70000")).add(new com.ibm.icu.math.BigDecimal("10000e+9")).toString()).equals("10000000070000");
\r
1092 (new Test("add048")).ok=((new com.ibm.icu.math.BigDecimal("700000")).add(new com.ibm.icu.math.BigDecimal("10000e+9")).toString()).equals("10000000700000");
\r
1096 (new Test("add049")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("70"),mcdef).toString()).equals("1.00000000E+13");
\r
1098 (new Test("add050")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("700"),mcdef).toString()).equals("1.00000000E+13");
\r
1100 (new Test("add051")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("7000"),mcdef).toString()).equals("1.00000000E+13");
\r
1102 (new Test("add052")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("70000"),mcdef).toString()).equals("1.00000001E+13");
\r
1104 (new Test("add053")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("700000"),mcdef).toString()).equals("1.00000007E+13");
\r
1107 (new Test("add054")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("70")).toString()).equals("10000000000070");
\r
1109 (new Test("add055")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("700")).toString()).equals("10000000000700");
\r
1111 (new Test("add056")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("7000")).toString()).equals("10000000007000");
\r
1113 (new Test("add057")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("70000")).toString()).equals("10000000070000");
\r
1115 (new Test("add058")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("700000")).toString()).equals("10000000700000");
\r
1117 // some rounding effects
\r
1118 (new Test("add059")).ok=((new com.ibm.icu.math.BigDecimal("0.9998")).add(new com.ibm.icu.math.BigDecimal("0.0000")).toString()).equals("0.9998");
\r
1120 (new Test("add060")).ok=((new com.ibm.icu.math.BigDecimal("0.9998")).add(new com.ibm.icu.math.BigDecimal("0.0001")).toString()).equals("0.9999");
\r
1122 (new Test("add061")).ok=((new com.ibm.icu.math.BigDecimal("0.9998")).add(new com.ibm.icu.math.BigDecimal("0.0002")).toString()).equals("1.0000");
\r
1124 (new Test("add062")).ok=((new com.ibm.icu.math.BigDecimal("0.9998")).add(new com.ibm.icu.math.BigDecimal("0.0003")).toString()).equals("1.0001");
\r
1128 (new Test("add070")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("70000"),mcfd).toString()).equals("10000000070000");
\r
1130 (new Test("add071")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("70000"),mcdef).toString()).equals("1.00000001E+13");
\r
1132 (new Test("add072")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("70000"),mc6).toString()).equals("1.00000E+13");
\r
1135 // zero preservation
\r
1136 (new Test("add080")).ok=(com.ibm.icu.math.BigDecimal.ONE.add(new com.ibm.icu.math.BigDecimal("0.0001"),mc6).toString()).equals("1.0001");
\r
1138 (new Test("add081")).ok=(com.ibm.icu.math.BigDecimal.ONE.add(new com.ibm.icu.math.BigDecimal("0.00001"),mc6).toString()).equals("1.00001");
\r
1140 (new Test("add082")).ok=(com.ibm.icu.math.BigDecimal.ONE.add(new com.ibm.icu.math.BigDecimal("0.000001"),mc6).toString()).equals("1.00000");
\r
1142 (new Test("add083")).ok=(com.ibm.icu.math.BigDecimal.ONE.add(new com.ibm.icu.math.BigDecimal("0.0000001"),mc6).toString()).equals("1.00000");
\r
1144 (new Test("add084")).ok=(com.ibm.icu.math.BigDecimal.ONE.add(new com.ibm.icu.math.BigDecimal("0.00000001"),mc6).toString()).equals("1.00000");
\r
1147 // more fixed, LHS swaps
\r
1148 (new Test("add090")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-10")).add(zero).toString()).equals("-0.0000056267");
\r
1149 (new Test("add091")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-6")).add(zero).toString()).equals("-0.056267");
\r
1150 (new Test("add092")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-5")).add(zero).toString()).equals("-0.56267");
\r
1151 (new Test("add093")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-4")).add(zero).toString()).equals("-5.6267");
\r
1152 (new Test("add094")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-3")).add(zero).toString()).equals("-56.267");
\r
1153 (new Test("add095")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-2")).add(zero).toString()).equals("-562.67");
\r
1154 (new Test("add096")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-1")).add(zero).toString()).equals("-5626.7");
\r
1155 (new Test("add097")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-0")).add(zero).toString()).equals("-56267");
\r
1156 (new Test("add098")).ok=((new com.ibm.icu.math.BigDecimal("-5E-10")).add(zero).toString()).equals("-0.0000000005");
\r
1157 (new Test("add099")).ok=((new com.ibm.icu.math.BigDecimal("-5E-5")).add(zero).toString()).equals("-0.00005");
\r
1158 (new Test("add100")).ok=((new com.ibm.icu.math.BigDecimal("-5E-1")).add(zero).toString()).equals("-0.5");
\r
1159 (new Test("add101")).ok=((new com.ibm.icu.math.BigDecimal("-5E-10")).add(zero).toString()).equals("-0.0000000005");
\r
1160 (new Test("add102")).ok=((new com.ibm.icu.math.BigDecimal("-5E-5")).add(zero).toString()).equals("-0.00005");
\r
1161 (new Test("add103")).ok=((new com.ibm.icu.math.BigDecimal("-5E-1")).add(zero).toString()).equals("-0.5");
\r
1162 (new Test("add104")).ok=((new com.ibm.icu.math.BigDecimal("-5E10")).add(zero).toString()).equals("-50000000000");
\r
1163 (new Test("add105")).ok=((new com.ibm.icu.math.BigDecimal("-5E5")).add(zero).toString()).equals("-500000");
\r
1164 (new Test("add106")).ok=((new com.ibm.icu.math.BigDecimal("-5E1")).add(zero).toString()).equals("-50");
\r
1165 (new Test("add107")).ok=((new com.ibm.icu.math.BigDecimal("-5E0")).add(zero).toString()).equals("-5");
\r
1167 // more fixed, RHS swaps
\r
1168 (new Test("add108")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-56267E-10")).toString()).equals("-0.0000056267");
\r
1169 (new Test("add109")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-56267E-6")).toString()).equals("-0.056267");
\r
1170 (new Test("add110")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-56267E-5")).toString()).equals("-0.56267");
\r
1171 (new Test("add111")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-56267E-4")).toString()).equals("-5.6267");
\r
1172 (new Test("add112")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-56267E-3")).toString()).equals("-56.267");
\r
1173 (new Test("add113")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-56267E-2")).toString()).equals("-562.67");
\r
1174 (new Test("add114")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-56267E-1")).toString()).equals("-5626.7");
\r
1175 (new Test("add115")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-56267E-0")).toString()).equals("-56267");
\r
1176 (new Test("add116")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-5E-10")).toString()).equals("-0.0000000005");
\r
1177 (new Test("add117")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-5E-5")).toString()).equals("-0.00005");
\r
1178 (new Test("add118")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-5E-1")).toString()).equals("-0.5");
\r
1179 (new Test("add129")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-5E-10")).toString()).equals("-0.0000000005");
\r
1180 (new Test("add130")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-5E-5")).toString()).equals("-0.00005");
\r
1181 (new Test("add131")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-5E-1")).toString()).equals("-0.5");
\r
1182 (new Test("add132")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-5E10")).toString()).equals("-50000000000");
\r
1183 (new Test("add133")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-5E5")).toString()).equals("-500000");
\r
1184 (new Test("add134")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-5E1")).toString()).equals("-50");
\r
1185 (new Test("add135")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-5E0")).toString()).equals("-5");
\r
1187 // [some of the next group are really constructor tests]
\r
1188 (new Test("add140")).ok=((new com.ibm.icu.math.BigDecimal("00.0")).add(new com.ibm.icu.math.BigDecimal("0.00"),mcdef).toString()).equals("0");
\r
1189 (new Test("add141")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).add(new com.ibm.icu.math.BigDecimal("00.0"),mcdef).toString()).equals("0");
\r
1190 (new Test("add142")).ok=((new com.ibm.icu.math.BigDecimal("3")).add(new com.ibm.icu.math.BigDecimal(".3"),mcdef).toString()).equals("3.3");
\r
1191 (new Test("add143")).ok=((new com.ibm.icu.math.BigDecimal("3.")).add(new com.ibm.icu.math.BigDecimal(".3"),mcdef).toString()).equals("3.3");
\r
1192 (new Test("add144")).ok=((new com.ibm.icu.math.BigDecimal("3.0")).add(new com.ibm.icu.math.BigDecimal(".3"),mcdef).toString()).equals("3.3");
\r
1193 (new Test("add145")).ok=((new com.ibm.icu.math.BigDecimal("3.00")).add(new com.ibm.icu.math.BigDecimal(".3"),mcdef).toString()).equals("3.30");
\r
1194 (new Test("add146")).ok=((new com.ibm.icu.math.BigDecimal("3")).add(new com.ibm.icu.math.BigDecimal("3"),mcdef).toString()).equals("6");
\r
1195 (new Test("add147")).ok=((new com.ibm.icu.math.BigDecimal("3")).add(new com.ibm.icu.math.BigDecimal("+3"),mcdef).toString()).equals("6");
\r
1196 (new Test("add148")).ok=((new com.ibm.icu.math.BigDecimal("3")).add(new com.ibm.icu.math.BigDecimal("-3"),mcdef).toString()).equals("0");
\r
1197 (new Test("add149")).ok=((new com.ibm.icu.math.BigDecimal("0.03")).add(new com.ibm.icu.math.BigDecimal("-0.03"),mcdef).toString()).equals("0");
\r
1199 (new Test("add150")).ok=((new com.ibm.icu.math.BigDecimal("00.0")).add(new com.ibm.icu.math.BigDecimal("0.00")).toString()).equals("0.00");
\r
1200 (new Test("add151")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).add(new com.ibm.icu.math.BigDecimal("00.0")).toString()).equals("0.00");
\r
1201 (new Test("add152")).ok=((new com.ibm.icu.math.BigDecimal("3")).add(new com.ibm.icu.math.BigDecimal(".3")).toString()).equals("3.3");
\r
1202 (new Test("add153")).ok=((new com.ibm.icu.math.BigDecimal("3.")).add(new com.ibm.icu.math.BigDecimal(".3")).toString()).equals("3.3");
\r
1203 (new Test("add154")).ok=((new com.ibm.icu.math.BigDecimal("3.0")).add(new com.ibm.icu.math.BigDecimal(".3")).toString()).equals("3.3");
\r
1204 (new Test("add155")).ok=((new com.ibm.icu.math.BigDecimal("3.00")).add(new com.ibm.icu.math.BigDecimal(".3")).toString()).equals("3.30");
\r
1205 (new Test("add156")).ok=((new com.ibm.icu.math.BigDecimal("3")).add(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("6");
\r
1206 (new Test("add157")).ok=((new com.ibm.icu.math.BigDecimal("3")).add(new com.ibm.icu.math.BigDecimal("+3")).toString()).equals("6");
\r
1207 (new Test("add158")).ok=((new com.ibm.icu.math.BigDecimal("3")).add(new com.ibm.icu.math.BigDecimal("-3")).toString()).equals("0");
\r
1208 (new Test("add159")).ok=((new com.ibm.icu.math.BigDecimal("0.3")).add(new com.ibm.icu.math.BigDecimal("-0.3")).toString()).equals("0.0");
\r
1209 (new Test("add160")).ok=((new com.ibm.icu.math.BigDecimal("0.03")).add(new com.ibm.icu.math.BigDecimal("-0.03")).toString()).equals("0.00");
\r
1210 (new Test("add161")).ok=((new com.ibm.icu.math.BigDecimal("7E+12")).add(new com.ibm.icu.math.BigDecimal("-1"),mcfd).toString()).equals("6999999999999");
\r
1212 (new Test("add162")).ok=((new com.ibm.icu.math.BigDecimal("7E+12")).add(new com.ibm.icu.math.BigDecimal("1.11"),mcfd).toString()).equals("7000000000001.11");
\r
1214 (new Test("add163")).ok=((new com.ibm.icu.math.BigDecimal("1.11")).add(new com.ibm.icu.math.BigDecimal("7E+12"),mcfd).toString()).equals("7000000000001.11");
\r
1217 // input preparation tests
\r
1218 alhs=new com.ibm.icu.math.BigDecimal("12345678900000");
\r
1219 arhs=new com.ibm.icu.math.BigDecimal("9999999999999");
\r
1220 (new Test("add170")).ok=(alhs.add(arhs,mc3).toString()).equals("2.23E+13");
\r
1221 (new Test("add171")).ok=(arhs.add(alhs,mc3).toString()).equals("2.23E+13");
\r
1222 (new Test("add172")).ok=((new com.ibm.icu.math.BigDecimal("12E+3")).add(new com.ibm.icu.math.BigDecimal("3456"),mc3).toString()).equals("1.55E+4");
\r
1223 // next was 1.54E+4 under old [truncate to digits+1] rules
\r
1224 (new Test("add173")).ok=((new com.ibm.icu.math.BigDecimal("12E+3")).add(new com.ibm.icu.math.BigDecimal("3446"),mc3).toString()).equals("1.55E+4");
\r
1225 (new Test("add174")).ok=((new com.ibm.icu.math.BigDecimal("12E+3")).add(new com.ibm.icu.math.BigDecimal("3454"),mc3).toString()).equals("1.55E+4");
\r
1226 (new Test("add175")).ok=((new com.ibm.icu.math.BigDecimal("12E+3")).add(new com.ibm.icu.math.BigDecimal("3444"),mc3).toString()).equals("1.54E+4");
\r
1228 (new Test("add176")).ok=((new com.ibm.icu.math.BigDecimal("3456")).add(new com.ibm.icu.math.BigDecimal("12E+3"),mc3).toString()).equals("1.55E+4");
\r
1229 // next was 1.54E+4 under old [truncate to digits+1] rules
\r
1230 (new Test("add177")).ok=((new com.ibm.icu.math.BigDecimal("3446")).add(new com.ibm.icu.math.BigDecimal("12E+3"),mc3).toString()).equals("1.55E+4");
\r
1231 (new Test("add178")).ok=((new com.ibm.icu.math.BigDecimal("3454")).add(new com.ibm.icu.math.BigDecimal("12E+3"),mc3).toString()).equals("1.55E+4");
\r
1232 (new Test("add179")).ok=((new com.ibm.icu.math.BigDecimal("3444")).add(new com.ibm.icu.math.BigDecimal("12E+3"),mc3).toString()).equals("1.54E+4");
\r
1235 ten.add((com.ibm.icu.math.BigDecimal) null);
\r
1237 } catch (java.lang.NullPointerException $22) {
\r
1240 (new Test("add200")).ok = flag;
\r
1242 ten.add(ten, (com.ibm.icu.math.MathContext) null);
\r
1244 } catch (java.lang.NullPointerException $23) {
\r
1247 (new Test("add201")).ok = flag;
\r
1250 tenlong.add(com.ibm.icu.math.BigDecimal.ZERO, mcld);
\r
1252 } catch (java.lang.ArithmeticException $24) {
\r
1254 flag = (ae.getMessage()).equals("Too many digits:" + " "
\r
1255 + tenlong.toString());
\r
1256 }/* checkdigits */
\r
1257 (new Test("add202")).ok = flag;
\r
1259 com.ibm.icu.math.BigDecimal.ZERO.add(tenlong, mcld);
\r
1261 } catch (java.lang.ArithmeticException $25) {
\r
1263 flag = (ae.getMessage()).equals("Too many digits:" + " "
\r
1264 + tenlong.toString());
\r
1265 }/* checkdigits */
\r
1266 (new Test("add203")).ok = flag;
\r
1268 // check lostdigits not raised if digits=0 [dyadic method]
\r
1270 tenlong.add(com.ibm.icu.math.BigDecimal.ZERO, mcld0);
\r
1272 } catch (java.lang.ArithmeticException $26) {
\r
1275 }/* checkdigits */
\r
1276 (new Test("add204")).ok = flag;
\r
1278 com.ibm.icu.math.BigDecimal.ZERO.add(tenlong, mcld0);
\r
1280 } catch (java.lang.ArithmeticException $27) {
\r
1283 }/* checkdigits */
\r
1284 (new Test("add205")).ok = flag;
\r
1289 /* ----------------------------------------------------------------- */
\r
1291 * Test the {@link com.ibm.icu.math.BigDecimal#compareTo(BigDecimal)}
\r
1295 public void diagcompareto() {
\r
1296 boolean flag = false;
\r
1297 java.lang.ArithmeticException ae = null;
\r
1298 // we assume add/subtract test function; this just
\r
1299 // tests existence, exceptions, and possible results
\r
1301 (new Test("cpt001")).ok=((new com.ibm.icu.math.BigDecimal("5")).compareTo(new com.ibm.icu.math.BigDecimal("2")))==1;
\r
1302 (new Test("cpt002")).ok=((new com.ibm.icu.math.BigDecimal("5")).compareTo(new com.ibm.icu.math.BigDecimal("5")))==0;
\r
1303 (new Test("cpt003")).ok=((new com.ibm.icu.math.BigDecimal("5")).compareTo(new com.ibm.icu.math.BigDecimal("5.00")))==0;
\r
1304 (new Test("cpt004")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).compareTo(new com.ibm.icu.math.BigDecimal("0.5")))==0;
\r
1305 (new Test("cpt005")).ok=((new com.ibm.icu.math.BigDecimal("2")).compareTo(new com.ibm.icu.math.BigDecimal("5")))==(-1);
\r
1306 (new Test("cpt006")).ok=((new com.ibm.icu.math.BigDecimal("2")).compareTo(new com.ibm.icu.math.BigDecimal("5"),mcdef))==(-1);
\r
1307 (new Test("cpt007")).ok=((new com.ibm.icu.math.BigDecimal("2")).compareTo(new com.ibm.icu.math.BigDecimal("5"),mc6))==(-1);
\r
1308 (new Test("cpt008")).ok=((new com.ibm.icu.math.BigDecimal("2")).compareTo(new com.ibm.icu.math.BigDecimal("5"),mcfd))==(-1);
\r
1310 ten.compareTo((com.ibm.icu.math.BigDecimal) null);
\r
1312 } catch (java.lang.NullPointerException $28) {
\r
1315 (new Test("cpt100")).ok = flag;
\r
1317 ten.compareTo(ten, (com.ibm.icu.math.MathContext) null);
\r
1319 } catch (java.lang.NullPointerException $29) {
\r
1322 (new Test("cpt101")).ok = flag;
\r
1325 tenlong.compareTo(com.ibm.icu.math.BigDecimal.ONE, mcld);
\r
1327 } catch (java.lang.ArithmeticException $30) {
\r
1329 flag = (ae.getMessage()).equals("Too many digits:" + " "
\r
1330 + tenlong.toString());
\r
1331 }/* checkdigits */
\r
1332 (new Test("cpt102")).ok = flag;
\r
1334 com.ibm.icu.math.BigDecimal.ONE.compareTo(tenlong, mcld);
\r
1336 } catch (java.lang.ArithmeticException $31) {
\r
1338 flag = (ae.getMessage()).equals("Too many digits:" + " "
\r
1339 + tenlong.toString());
\r
1340 }/* checkdigits */
\r
1341 (new Test("cpt103")).ok = flag;
\r
1343 summary("compareTo");
\r
1346 /* ----------------------------------------------------------------- */
\r
1348 /** Test the {@link com.ibm.icu.math.BigDecimal#divide} method. */
\r
1350 public void diagdivide() {
\r
1351 boolean flag = false;
\r
1352 com.ibm.icu.math.MathContext rmcd;
\r
1356 java.lang.RuntimeException e = null;
\r
1357 java.lang.ArithmeticException ae = null;
\r
1359 (new Test("div301")).ok=((new com.ibm.icu.math.BigDecimal("1")).divide(new com.ibm.icu.math.BigDecimal("3"),mcdef).toString()).equals("0.333333333");
\r
1360 (new Test("div302")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3"),mcdef).toString()).equals("0.666666667");
\r
1361 (new Test("div303")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).divide(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("2.4");
\r
1362 (new Test("div304")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).divide(new com.ibm.icu.math.BigDecimal("-1"),mcdef).toString()).equals("-2.4");
\r
1363 (new Test("div305")).ok=((new com.ibm.icu.math.BigDecimal("-2.4")).divide(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("-2.4");
\r
1364 (new Test("div306")).ok=((new com.ibm.icu.math.BigDecimal("-2.4")).divide(new com.ibm.icu.math.BigDecimal("-1"),mcdef).toString()).equals("2.4");
\r
1365 (new Test("div307")).ok=((new com.ibm.icu.math.BigDecimal("2.40")).divide(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("2.4");
\r
1366 (new Test("div308")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).divide(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("2.4");
\r
1367 (new Test("div309")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).divide(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("1.2");
\r
1368 (new Test("div310")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).divide(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("1.2");
\r
1369 (new Test("div311")).ok=((new com.ibm.icu.math.BigDecimal("2.")).divide(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("1");
\r
1370 (new Test("div312")).ok=((new com.ibm.icu.math.BigDecimal("20")).divide(new com.ibm.icu.math.BigDecimal("20"),mcdef).toString()).equals("1");
\r
1371 (new Test("div313")).ok=((new com.ibm.icu.math.BigDecimal("187")).divide(new com.ibm.icu.math.BigDecimal("187"),mcdef).toString()).equals("1");
\r
1372 (new Test("div314")).ok=((new com.ibm.icu.math.BigDecimal("5")).divide(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("2.5");
\r
1373 (new Test("div315")).ok=((new com.ibm.icu.math.BigDecimal("5")).divide(new com.ibm.icu.math.BigDecimal("2.0"),mcdef).toString()).equals("2.5");
\r
1374 (new Test("div316")).ok=((new com.ibm.icu.math.BigDecimal("5")).divide(new com.ibm.icu.math.BigDecimal("2.000"),mcdef).toString()).equals("2.5");
\r
1375 (new Test("div317")).ok=((new com.ibm.icu.math.BigDecimal("5")).divide(new com.ibm.icu.math.BigDecimal("0.200"),mcdef).toString()).equals("25");
\r
1376 (new Test("div318")).ok=((new com.ibm.icu.math.BigDecimal("999999999")).divide(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("999999999");
\r
1377 (new Test("div319")).ok=((new com.ibm.icu.math.BigDecimal("999999999.4")).divide(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("999999999");
\r
1378 (new Test("div320")).ok=((new com.ibm.icu.math.BigDecimal("999999999.5")).divide(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("1E+9");
\r
1379 (new Test("div321")).ok=((new com.ibm.icu.math.BigDecimal("999999999.9")).divide(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("1E+9");
\r
1380 (new Test("div322")).ok=((new com.ibm.icu.math.BigDecimal("999999999.999")).divide(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("1E+9");
\r
1381 (new Test("div323")).ok=((new com.ibm.icu.math.BigDecimal("0.0000E-50")).divide(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("0");
\r
1383 (new Test("div325")).ok=((new com.ibm.icu.math.BigDecimal("999999999")).divide(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("999999999");
\r
1384 (new Test("div326")).ok=((new com.ibm.icu.math.BigDecimal("999999999")).divide(new com.ibm.icu.math.BigDecimal("1"),mc6).toString()).equals("1E+9");
\r
1385 (new Test("div327")).ok=((new com.ibm.icu.math.BigDecimal("9999999")).divide(new com.ibm.icu.math.BigDecimal("1"),mc6).toString()).equals("1E+7");
\r
1386 (new Test("div328")).ok=((new com.ibm.icu.math.BigDecimal("999999")).divide(new com.ibm.icu.math.BigDecimal("1"),mc6).toString()).equals("999999");
\r
1388 // check rounding explicitly [note: digits+1 truncation]
\r
1389 rmcd=new com.ibm.icu.math.MathContext(2,com.ibm.icu.math.MathContext.SCIENTIFIC,false,com.ibm.icu.math.MathContext.ROUND_CEILING);
\r
1390 (new Test("div330")).ok=((new com.ibm.icu.math.BigDecimal("1.50")).divide(one,rmcd).toString()).equals("1.5");
\r
1391 (new Test("div331")).ok=((new com.ibm.icu.math.BigDecimal("1.51")).divide(one,rmcd).toString()).equals("1.6");
\r
1392 (new Test("div332")).ok=((new com.ibm.icu.math.BigDecimal("1.55")).divide(one,rmcd).toString()).equals("1.6");
\r
1393 rmcd=new com.ibm.icu.math.MathContext(2,com.ibm.icu.math.MathContext.SCIENTIFIC,false,com.ibm.icu.math.MathContext.ROUND_DOWN);
\r
1394 (new Test("div333")).ok=((new com.ibm.icu.math.BigDecimal("1.55")).divide(one,rmcd).toString()).equals("1.5");
\r
1395 (new Test("div334")).ok=((new com.ibm.icu.math.BigDecimal("1.59")).divide(one,rmcd).toString()).equals("1.5");
\r
1396 rmcd=new com.ibm.icu.math.MathContext(2,com.ibm.icu.math.MathContext.SCIENTIFIC,false,com.ibm.icu.math.MathContext.ROUND_FLOOR);
\r
1397 (new Test("div335")).ok=((new com.ibm.icu.math.BigDecimal("1.55")).divide(one,rmcd).toString()).equals("1.5");
\r
1398 (new Test("div336")).ok=((new com.ibm.icu.math.BigDecimal("1.59")).divide(one,rmcd).toString()).equals("1.5");
\r
1399 rmcd=new com.ibm.icu.math.MathContext(2,com.ibm.icu.math.MathContext.SCIENTIFIC,false,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN);
\r
1400 (new Test("div337")).ok=((new com.ibm.icu.math.BigDecimal("1.45")).divide(one,rmcd).toString()).equals("1.4");
\r
1401 (new Test("div338")).ok=((new com.ibm.icu.math.BigDecimal("1.50")).divide(one,rmcd).toString()).equals("1.5");
\r
1402 (new Test("div339")).ok=((new com.ibm.icu.math.BigDecimal("1.55")).divide(one,rmcd).toString()).equals("1.5");
\r
1403 rmcd=new com.ibm.icu.math.MathContext(2,com.ibm.icu.math.MathContext.SCIENTIFIC,false,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN);
\r
1404 (new Test("div340")).ok=((new com.ibm.icu.math.BigDecimal("1.45")).divide(one,rmcd).toString()).equals("1.4");
\r
1405 (new Test("div341")).ok=((new com.ibm.icu.math.BigDecimal("1.50")).divide(one,rmcd).toString()).equals("1.5");
\r
1406 (new Test("div342")).ok=((new com.ibm.icu.math.BigDecimal("1.55")).divide(one,rmcd).toString()).equals("1.6");
\r
1407 rmcd=new com.ibm.icu.math.MathContext(2,com.ibm.icu.math.MathContext.SCIENTIFIC,false,com.ibm.icu.math.MathContext.ROUND_HALF_UP);
\r
1408 (new Test("div343")).ok=((new com.ibm.icu.math.BigDecimal("1.45")).divide(one,rmcd).toString()).equals("1.5");
\r
1409 (new Test("div344")).ok=((new com.ibm.icu.math.BigDecimal("1.50")).divide(one,rmcd).toString()).equals("1.5");
\r
1410 (new Test("div345")).ok=((new com.ibm.icu.math.BigDecimal("1.55")).divide(one,rmcd).toString()).equals("1.6");
\r
1411 rmcd=new com.ibm.icu.math.MathContext(2,com.ibm.icu.math.MathContext.SCIENTIFIC,false,com.ibm.icu.math.MathContext.ROUND_UP);
\r
1412 (new Test("div346")).ok=((new com.ibm.icu.math.BigDecimal("1.50")).divide(one,rmcd).toString()).equals("1.5");
\r
1413 (new Test("div347")).ok=((new com.ibm.icu.math.BigDecimal("1.51")).divide(one,rmcd).toString()).equals("1.6");
\r
1414 (new Test("div348")).ok=((new com.ibm.icu.math.BigDecimal("1.55")).divide(one,rmcd).toString()).equals("1.6");
\r
1417 (new Test("div350")).ok=((new com.ibm.icu.math.BigDecimal("1")).divide(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("0");
\r
1418 (new Test("div351")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("1");
\r
1419 (new Test("div352")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).divide(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("2.4");
\r
1420 (new Test("div353")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).divide(new com.ibm.icu.math.BigDecimal("-1")).toString()).equals("-2.4");
\r
1421 (new Test("div354")).ok=((new com.ibm.icu.math.BigDecimal("-2.4")).divide(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("-2.4");
\r
1422 (new Test("div355")).ok=((new com.ibm.icu.math.BigDecimal("-2.4")).divide(new com.ibm.icu.math.BigDecimal("-1")).toString()).equals("2.4");
\r
1423 (new Test("div356")).ok=((new com.ibm.icu.math.BigDecimal("2.40")).divide(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("2.40");
\r
1424 (new Test("div357")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).divide(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("2.400");
\r
1425 (new Test("div358")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).divide(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("1.2");
\r
1426 (new Test("div359")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).divide(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("1.200");
\r
1427 (new Test("div360")).ok=((new com.ibm.icu.math.BigDecimal("2.")).divide(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("1");
\r
1428 (new Test("div361")).ok=((new com.ibm.icu.math.BigDecimal("20")).divide(new com.ibm.icu.math.BigDecimal("20")).toString()).equals("1");
\r
1429 (new Test("div362")).ok=((new com.ibm.icu.math.BigDecimal("187")).divide(new com.ibm.icu.math.BigDecimal("187")).toString()).equals("1");
\r
1430 (new Test("div363")).ok=((new com.ibm.icu.math.BigDecimal("5")).divide(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("3");
\r
1431 (new Test("div364")).ok=((new com.ibm.icu.math.BigDecimal("5")).divide(new com.ibm.icu.math.BigDecimal("2.0")).toString()).equals("3");
\r
1432 (new Test("div365")).ok=((new com.ibm.icu.math.BigDecimal("5")).divide(new com.ibm.icu.math.BigDecimal("2.000")).toString()).equals("3");
\r
1433 (new Test("div366")).ok=((new com.ibm.icu.math.BigDecimal("5")).divide(new com.ibm.icu.math.BigDecimal("0.200")).toString()).equals("25");
\r
1434 (new Test("div367")).ok=((new com.ibm.icu.math.BigDecimal("5.0")).divide(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("2.5");
\r
1435 (new Test("div368")).ok=((new com.ibm.icu.math.BigDecimal("5.0")).divide(new com.ibm.icu.math.BigDecimal("2.0")).toString()).equals("2.5");
\r
1436 (new Test("div369")).ok=((new com.ibm.icu.math.BigDecimal("5.0")).divide(new com.ibm.icu.math.BigDecimal("2.000")).toString()).equals("2.5");
\r
1437 (new Test("div370")).ok=((new com.ibm.icu.math.BigDecimal("5.0")).divide(new com.ibm.icu.math.BigDecimal("0.200")).toString()).equals("25.0");
\r
1438 (new Test("div371")).ok=((new com.ibm.icu.math.BigDecimal("999999999")).divide(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("999999999");
\r
1439 (new Test("div372")).ok=((new com.ibm.icu.math.BigDecimal("999999999.4")).divide(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("999999999.4");
\r
1440 (new Test("div373")).ok=((new com.ibm.icu.math.BigDecimal("999999999.5")).divide(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("999999999.5");
\r
1441 (new Test("div374")).ok=((new com.ibm.icu.math.BigDecimal("999999999.9")).divide(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("999999999.9");
\r
1442 (new Test("div375")).ok=((new com.ibm.icu.math.BigDecimal("999999999.999")).divide(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("999999999.999");
\r
1443 (new Test("div376")).ok=((new com.ibm.icu.math.BigDecimal("0.0000E-5")).divide(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("0");
\r
1444 (new Test("div377")).ok=((new com.ibm.icu.math.BigDecimal("0.000000000")).divide(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("0.000000000");
\r
1446 // - Fixed point; explicit scales & rounds [old BigDecimal divides]
\r
1447 rhu = com.ibm.icu.math.MathContext.ROUND_HALF_UP;
\r
1448 rd = com.ibm.icu.math.MathContext.ROUND_DOWN;
\r
1449 (new Test("div001")).ok=((new com.ibm.icu.math.BigDecimal("0")).divide(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("0");
\r
1450 (new Test("div002")).ok=((new com.ibm.icu.math.BigDecimal("0")).divide(new com.ibm.icu.math.BigDecimal("3"),rhu).toString()).equals("0");
\r
1451 (new Test("div003")).ok=((new com.ibm.icu.math.BigDecimal("0")).divide(new com.ibm.icu.math.BigDecimal("3"),0,rhu).toString()).equals("0");
\r
1452 (new Test("div004")).ok=((new com.ibm.icu.math.BigDecimal("0")).divide(new com.ibm.icu.math.BigDecimal("3"),1,rhu).toString()).equals("0.0");
\r
1453 (new Test("div005")).ok=((new com.ibm.icu.math.BigDecimal("0")).divide(new com.ibm.icu.math.BigDecimal("3"),2,rhu).toString()).equals("0.00");
\r
1454 (new Test("div006")).ok=((new com.ibm.icu.math.BigDecimal("0")).divide(new com.ibm.icu.math.BigDecimal("3"),3,rhu).toString()).equals("0.000");
\r
1455 (new Test("div007")).ok=((new com.ibm.icu.math.BigDecimal("0")).divide(new com.ibm.icu.math.BigDecimal("3"),4,rhu).toString()).equals("0.0000");
\r
1456 (new Test("div008")).ok=((new com.ibm.icu.math.BigDecimal("1")).divide(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("0");
\r
1457 (new Test("div009")).ok=((new com.ibm.icu.math.BigDecimal("1")).divide(new com.ibm.icu.math.BigDecimal("3"),rhu).toString()).equals("0");
\r
1458 (new Test("div010")).ok=((new com.ibm.icu.math.BigDecimal("1")).divide(new com.ibm.icu.math.BigDecimal("3"),0,rhu).toString()).equals("0");
\r
1459 (new Test("div011")).ok=((new com.ibm.icu.math.BigDecimal("1")).divide(new com.ibm.icu.math.BigDecimal("3"),1,rhu).toString()).equals("0.3");
\r
1460 (new Test("div012")).ok=((new com.ibm.icu.math.BigDecimal("1")).divide(new com.ibm.icu.math.BigDecimal("3"),2,rhu).toString()).equals("0.33");
\r
1461 (new Test("div013")).ok=((new com.ibm.icu.math.BigDecimal("1")).divide(new com.ibm.icu.math.BigDecimal("3"),3,rhu).toString()).equals("0.333");
\r
1462 (new Test("div014")).ok=((new com.ibm.icu.math.BigDecimal("1")).divide(new com.ibm.icu.math.BigDecimal("3"),4,rhu).toString()).equals("0.3333");
\r
1463 (new Test("div015")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("1");
\r
1464 (new Test("div016")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3"),rhu).toString()).equals("1");
\r
1465 (new Test("div017")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3"),0,rhu).toString()).equals("1");
\r
1466 (new Test("div018")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3"),1,rhu).toString()).equals("0.7");
\r
1467 (new Test("div019")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3"),2,rhu).toString()).equals("0.67");
\r
1468 (new Test("div020")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3"),3,rhu).toString()).equals("0.667");
\r
1469 (new Test("div021")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3"),4,rhu).toString()).equals("0.6667");
\r
1471 (new Test("div030")).ok=((new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("2000"),4,rhu).toString()).equals("0.5000");
\r
1472 (new Test("div031")).ok=((new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("2000"),3,rhu).toString()).equals("0.500");
\r
1473 (new Test("div032")).ok=((new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("2000"),2,rhu).toString()).equals("0.50");
\r
1474 (new Test("div033")).ok=((new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("2000"),1,rhu).toString()).equals("0.5");
\r
1475 (new Test("div034")).ok=((new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("2000"),0,rhu).toString()).equals("1");
\r
1477 (new Test("div035")).ok=((new com.ibm.icu.math.BigDecimal("100")).divide(new com.ibm.icu.math.BigDecimal("5000"),4,rhu).toString()).equals("0.0200");
\r
1478 (new Test("div036")).ok=((new com.ibm.icu.math.BigDecimal("100")).divide(new com.ibm.icu.math.BigDecimal("5000"),3,rhu).toString()).equals("0.020");
\r
1479 (new Test("div037")).ok=((new com.ibm.icu.math.BigDecimal("100")).divide(new com.ibm.icu.math.BigDecimal("5000"),2,rhu).toString()).equals("0.02");
\r
1480 (new Test("div038")).ok=((new com.ibm.icu.math.BigDecimal("100")).divide(new com.ibm.icu.math.BigDecimal("5000"),1,rhu).toString()).equals("0.0");
\r
1481 (new Test("div039")).ok=((new com.ibm.icu.math.BigDecimal("100")).divide(new com.ibm.icu.math.BigDecimal("5000"),0,rhu).toString()).equals("0");
\r
1483 (new Test("div040")).ok=((new com.ibm.icu.math.BigDecimal("9.99999999")).divide(new com.ibm.icu.math.BigDecimal("9.77777777"),4,rhu).toString()).equals("1.0227");
\r
1484 (new Test("div041")).ok=((new com.ibm.icu.math.BigDecimal("9.9999999")).divide(new com.ibm.icu.math.BigDecimal("9.7777777"),4,rhu).toString()).equals("1.0227");
\r
1485 (new Test("div042")).ok=((new com.ibm.icu.math.BigDecimal("9.999999")).divide(new com.ibm.icu.math.BigDecimal("9.777777"),4,rhu).toString()).equals("1.0227");
\r
1486 (new Test("div043")).ok=((new com.ibm.icu.math.BigDecimal("9.77777777")).divide(new com.ibm.icu.math.BigDecimal("9.99999999"),4,rhu).toString()).equals("0.9778");
\r
1487 (new Test("div044")).ok=((new com.ibm.icu.math.BigDecimal("9.7777777")).divide(new com.ibm.icu.math.BigDecimal("9.9999999"),4,rhu).toString()).equals("0.9778");
\r
1488 (new Test("div045")).ok=((new com.ibm.icu.math.BigDecimal("9.777777")).divide(new com.ibm.icu.math.BigDecimal("9.999999"),4,rhu).toString()).equals("0.9778");
\r
1489 (new Test("div046")).ok=((new com.ibm.icu.math.BigDecimal("9.77777")).divide(new com.ibm.icu.math.BigDecimal("9.99999"),4,rhu).toString()).equals("0.9778");
\r
1490 (new Test("div047")).ok=((new com.ibm.icu.math.BigDecimal("9.7777")).divide(new com.ibm.icu.math.BigDecimal("9.9999"),4,rhu).toString()).equals("0.9778");
\r
1491 (new Test("div048")).ok=((new com.ibm.icu.math.BigDecimal("9.777")).divide(new com.ibm.icu.math.BigDecimal("9.999"),4,rhu).toString()).equals("0.9778");
\r
1492 (new Test("div049")).ok=((new com.ibm.icu.math.BigDecimal("9.77")).divide(new com.ibm.icu.math.BigDecimal("9.99"),4,rhu).toString()).equals("0.9780");
\r
1493 (new Test("div050")).ok=((new com.ibm.icu.math.BigDecimal("9.7")).divide(new com.ibm.icu.math.BigDecimal("9.9"),4,rhu).toString()).equals("0.9798");
\r
1494 (new Test("div051")).ok=((new com.ibm.icu.math.BigDecimal("9.")).divide(new com.ibm.icu.math.BigDecimal("9."),4,rhu).toString()).equals("1.0000");
\r
1496 (new Test("div060")).ok=((new com.ibm.icu.math.BigDecimal("9.99999999")).divide(new com.ibm.icu.math.BigDecimal("9.77777777"),rhu).toString()).equals("1.02272727");
\r
1497 (new Test("div061")).ok=((new com.ibm.icu.math.BigDecimal("9.9999999")).divide(new com.ibm.icu.math.BigDecimal("9.7777777"),rhu).toString()).equals("1.0227273");
\r
1498 (new Test("div062")).ok=((new com.ibm.icu.math.BigDecimal("9.999999")).divide(new com.ibm.icu.math.BigDecimal("9.777777"),rhu).toString()).equals("1.022727");
\r
1499 (new Test("div063")).ok=((new com.ibm.icu.math.BigDecimal("9.77777777")).divide(new com.ibm.icu.math.BigDecimal("9.99999999"),rhu).toString()).equals("0.97777778");
\r
1500 (new Test("div064")).ok=((new com.ibm.icu.math.BigDecimal("9.7777777")).divide(new com.ibm.icu.math.BigDecimal("9.9999999"),rhu).toString()).equals("0.9777778");
\r
1501 (new Test("div065")).ok=((new com.ibm.icu.math.BigDecimal("9.777777")).divide(new com.ibm.icu.math.BigDecimal("9.999999"),rhu).toString()).equals("0.977778");
\r
1502 (new Test("div066")).ok=((new com.ibm.icu.math.BigDecimal("9.77777")).divide(new com.ibm.icu.math.BigDecimal("9.99999"),rhu).toString()).equals("0.97778");
\r
1503 (new Test("div067")).ok=((new com.ibm.icu.math.BigDecimal("9.7777")).divide(new com.ibm.icu.math.BigDecimal("9.9999"),rhu).toString()).equals("0.9778");
\r
1504 (new Test("div068")).ok=((new com.ibm.icu.math.BigDecimal("9.777")).divide(new com.ibm.icu.math.BigDecimal("9.999"),rhu).toString()).equals("0.978");
\r
1505 (new Test("div069")).ok=((new com.ibm.icu.math.BigDecimal("9.77")).divide(new com.ibm.icu.math.BigDecimal("9.99"),rhu).toString()).equals("0.98");
\r
1506 (new Test("div070")).ok=((new com.ibm.icu.math.BigDecimal("9.7")).divide(new com.ibm.icu.math.BigDecimal("9.9"),rhu).toString()).equals("1.0");
\r
1507 (new Test("div071")).ok=((new com.ibm.icu.math.BigDecimal("9.")).divide(new com.ibm.icu.math.BigDecimal("9."),rhu).toString()).equals("1");
\r
1509 rd=com.ibm.icu.math.MathContext.ROUND_DOWN; // test this is actually being used
\r
1510 (new Test("div080")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3"),0,rd).toString()).equals("0");
\r
1511 (new Test("div081")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3"),1,rd).toString()).equals("0.6");
\r
1512 (new Test("div082")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3"),2,rd).toString()).equals("0.66");
\r
1513 (new Test("div083")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3"),3,rd).toString()).equals("0.666");
\r
1514 (new Test("div084")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3"),4,rd).toString()).equals("0.6666");
\r
1516 ru=com.ibm.icu.math.MathContext.ROUND_UNNECESSARY; // check for some 0 residues
\r
1517 (new Test("div090")).ok=((new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("5"),4,ru).toString()).equals("200.0000");
\r
1518 (new Test("div091")).ok=((new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("50"),4,ru).toString()).equals("20.0000");
\r
1519 (new Test("div092")).ok=((new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("500"),4,ru).toString()).equals("2.0000");
\r
1520 (new Test("div093")).ok=((new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("5000"),4,ru).toString()).equals("0.2000");
\r
1521 (new Test("div094")).ok=((new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("5000"),3,ru).toString()).equals("0.200");
\r
1522 (new Test("div095")).ok=((new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("5000"),2,ru).toString()).equals("0.20");
\r
1523 (new Test("div096")).ok=((new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("5000"),1,ru).toString()).equals("0.2");
\r
1525 // check rounding explicitly
\r
1526 (new Test("div101")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_CEILING).toString()).equals("0.06");
\r
1527 (new Test("div102")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_CEILING).toString()).equals("0.1");
\r
1528 (new Test("div103")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_CEILING).toString()).equals("1");
\r
1529 (new Test("div104")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_DOWN).toString()).equals("0.05");
\r
1530 (new Test("div105")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_DOWN).toString()).equals("0.0");
\r
1531 (new Test("div106")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_DOWN).toString()).equals("0");
\r
1532 (new Test("div107")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_FLOOR).toString()).equals("0.05");
\r
1533 (new Test("div108")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_FLOOR).toString()).equals("0.0");
\r
1534 (new Test("div109")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_FLOOR).toString()).equals("0");
\r
1536 (new Test("div110")).ok=((new com.ibm.icu.math.BigDecimal("0.045")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("0.04");
\r
1537 (new Test("div111")).ok=((new com.ibm.icu.math.BigDecimal("0.045")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("0.0");
\r
1538 (new Test("div112")).ok=((new com.ibm.icu.math.BigDecimal("0.045")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("0");
\r
1539 (new Test("div113")).ok=((new com.ibm.icu.math.BigDecimal("0.050")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("0.05");
\r
1540 (new Test("div114")).ok=((new com.ibm.icu.math.BigDecimal("0.050")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("0.0");
\r
1541 (new Test("div115")).ok=((new com.ibm.icu.math.BigDecimal("0.050")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("0");
\r
1542 (new Test("div116")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("0.05");
\r
1543 (new Test("div117")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("0.1");
\r
1544 (new Test("div118")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("0");
\r
1546 (new Test("div120")).ok=((new com.ibm.icu.math.BigDecimal("0.045")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0.04");
\r
1547 (new Test("div121")).ok=((new com.ibm.icu.math.BigDecimal("0.045")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0.0");
\r
1548 (new Test("div122")).ok=((new com.ibm.icu.math.BigDecimal("0.045")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0");
\r
1549 (new Test("div123")).ok=((new com.ibm.icu.math.BigDecimal("0.050")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0.05");
\r
1550 (new Test("div124")).ok=((new com.ibm.icu.math.BigDecimal("0.050")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0.0");
\r
1551 (new Test("div125")).ok=((new com.ibm.icu.math.BigDecimal("0.050")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0");
\r
1552 (new Test("div126")).ok=((new com.ibm.icu.math.BigDecimal("0.150")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0.15");
\r
1553 (new Test("div127")).ok=((new com.ibm.icu.math.BigDecimal("0.150")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0.2");
\r
1554 (new Test("div128")).ok=((new com.ibm.icu.math.BigDecimal("0.150")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0");
\r
1555 (new Test("div129")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0.06");
\r
1556 (new Test("div130")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0.1");
\r
1557 (new Test("div131")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0");
\r
1559 (new Test("div140")).ok=((new com.ibm.icu.math.BigDecimal("0.045")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.05");
\r
1560 (new Test("div141")).ok=((new com.ibm.icu.math.BigDecimal("0.045")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.0");
\r
1561 (new Test("div142")).ok=((new com.ibm.icu.math.BigDecimal("0.045")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0");
\r
1562 (new Test("div143")).ok=((new com.ibm.icu.math.BigDecimal("0.050")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.05");
\r
1563 (new Test("div144")).ok=((new com.ibm.icu.math.BigDecimal("0.050")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.1");
\r
1564 (new Test("div145")).ok=((new com.ibm.icu.math.BigDecimal("0.050")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0");
\r
1565 (new Test("div146")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.06");
\r
1566 (new Test("div147")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.1");
\r
1567 (new Test("div148")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0");
\r
1569 (new Test("div150")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_UP).toString()).equals("0.06");
\r
1570 (new Test("div151")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_UP).toString()).equals("0.1");
\r
1571 (new Test("div52.")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_UP).toString()).equals("1");
\r
1573 // - error conditions ---
\r
1575 ten.divide((com.ibm.icu.math.BigDecimal) null);
\r
1577 } catch (java.lang.NullPointerException $32) {
\r
1580 (new Test("div201")).ok = flag;
\r
1582 ten.divide(ten, (com.ibm.icu.math.MathContext) null);
\r
1584 } catch (java.lang.NullPointerException $33) {
\r
1587 (new Test("div202")).ok = flag;
\r
1590 (new com.ibm.icu.math.BigDecimal("1")).divide(new com.ibm.icu.math.BigDecimal("3"), -8, 0);
\r
1592 } catch (java.lang.RuntimeException $34) {
\r
1594 flag = flag & (e.getMessage()).equals("Negative scale: -8");
\r
1596 (new Test("div203")).ok = flag;
\r
1599 (new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("5000"), 0, com.ibm.icu.math.MathContext.ROUND_UNNECESSARY);
\r
1601 } catch (java.lang.ArithmeticException $35) {
\r
1603 flag = (ae.getMessage()).equals("Rounding necessary");
\r
1605 (new Test("div204")).ok = flag;
\r
1607 (new com.ibm.icu.math.BigDecimal("1001")).divide(new com.ibm.icu.math.BigDecimal("10"), 0, com.ibm.icu.math.MathContext.ROUND_UNNECESSARY);
\r
1609 } catch (java.lang.ArithmeticException $36) {
\r
1611 flag = (ae.getMessage()).equals("Rounding necessary");
\r
1613 (new Test("div205")).ok = flag;
\r
1615 (new com.ibm.icu.math.BigDecimal("1001")).divide(new com.ibm.icu.math.BigDecimal("100"), 1, com.ibm.icu.math.MathContext.ROUND_UNNECESSARY);
\r
1617 } catch (java.lang.ArithmeticException $37) {
\r
1619 flag = (ae.getMessage()).equals("Rounding necessary");
\r
1621 (new Test("div206")).ok = flag;
\r
1623 (new com.ibm.icu.math.BigDecimal("10001")).divide(
\r
1624 new com.ibm.icu.math.BigDecimal("10000"), 1,
\r
1625 com.ibm.icu.math.MathContext.ROUND_UNNECESSARY);
\r
1627 } catch (java.lang.ArithmeticException $38) {
\r
1629 flag = (ae.getMessage()).equals("Rounding necessary");
\r
1631 (new Test("div207")).ok = flag;
\r
1633 (new com.ibm.icu.math.BigDecimal("1.0001")).divide(
\r
1634 new com.ibm.icu.math.BigDecimal("1"), 1,
\r
1635 com.ibm.icu.math.MathContext.ROUND_UNNECESSARY);
\r
1637 } catch (java.lang.ArithmeticException $39) {
\r
1639 flag = (ae.getMessage()).equals("Rounding necessary");
\r
1641 (new Test("div208")).ok = flag;
\r
1644 (new com.ibm.icu.math.BigDecimal("5"))
\r
1645 .divide(new com.ibm.icu.math.BigDecimal("0.00"));
\r
1647 } catch (java.lang.ArithmeticException $40) {
\r
1649 flag = (ae.getMessage()).equals("Divide by 0");
\r
1651 (new Test("div209")).ok = flag;
\r
1654 tenlong.divide(com.ibm.icu.math.BigDecimal.ONE, mcld);
\r
1656 } catch (java.lang.ArithmeticException $41) {
\r
1658 flag = (ae.getMessage()).equals("Too many digits:" + " "
\r
1659 + tenlong.toString());
\r
1660 }/* checkdigits */
\r
1661 (new Test("div210")).ok = flag;
\r
1663 com.ibm.icu.math.BigDecimal.ONE.divide(tenlong, mcld);
\r
1665 } catch (java.lang.ArithmeticException $42) {
\r
1667 flag = (ae.getMessage()).equals("Too many digits:" + " "
\r
1668 + tenlong.toString());
\r
1669 }/* checkdigits */
\r
1670 (new Test("div211")).ok = flag;
\r
1672 summary("divide");
\r
1675 /* ----------------------------------------------------------------- */
\r
1677 /** Test the {@link com.ibm.icu.math.BigDecimal#divideInteger} method. */
\r
1679 public void diagdivideInteger() {
\r
1680 boolean flag = false;
\r
1681 java.lang.ArithmeticException ae = null;
\r
1683 (new Test("dvI001")).ok=((new com.ibm.icu.math.BigDecimal("101.3")).divideInteger(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("101");
\r
1684 (new Test("dvI002")).ok=((new com.ibm.icu.math.BigDecimal("101.0")).divideInteger(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("101");
\r
1685 (new Test("dvI003")).ok=((new com.ibm.icu.math.BigDecimal("101.3")).divideInteger(new com.ibm.icu.math.BigDecimal("3"),mcdef).toString()).equals("33");
\r
1686 (new Test("dvI004")).ok=((new com.ibm.icu.math.BigDecimal("101.0")).divideInteger(new com.ibm.icu.math.BigDecimal("3"),mcdef).toString()).equals("33");
\r
1687 (new Test("dvI005")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).divideInteger(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("2");
\r
1688 (new Test("dvI006")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).divideInteger(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("2");
\r
1689 (new Test("dvI007")).ok=((new com.ibm.icu.math.BigDecimal("18")).divideInteger(new com.ibm.icu.math.BigDecimal("18"),mcdef).toString()).equals("1");
\r
1690 (new Test("dvI008")).ok=((new com.ibm.icu.math.BigDecimal("1120")).divideInteger(new com.ibm.icu.math.BigDecimal("1000"),mcdef).toString()).equals("1");
\r
1691 (new Test("dvI009")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).divideInteger(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("1");
\r
1692 (new Test("dvI010")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).divideInteger(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("1");
\r
1693 (new Test("dvI011")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).divideInteger(new com.ibm.icu.math.BigDecimal("2.000"),mcdef).toString()).equals("0");
\r
1694 (new Test("dvI012")).ok=((new com.ibm.icu.math.BigDecimal("8.005")).divideInteger(new com.ibm.icu.math.BigDecimal("7"),mcdef).toString()).equals("1");
\r
1695 (new Test("dvI013")).ok=((new com.ibm.icu.math.BigDecimal("5")).divideInteger(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("2");
\r
1696 (new Test("dvI014")).ok=((new com.ibm.icu.math.BigDecimal("0")).divideInteger(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("0");
\r
1697 (new Test("dvI015")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).divideInteger(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("0");
\r
1699 (new Test("dvI016")).ok = ((new com.ibm.icu.math.BigDecimal("5")).divideInteger(new com.ibm.icu.math.BigDecimal("2"), mce).toString()).equals("2");
\r
1700 (new Test("dvI017")).ok = ((new com.ibm.icu.math.BigDecimal("5")).divideInteger(new com.ibm.icu.math.BigDecimal("2"), mc6).toString()).equals("2");
\r
1703 (new Test("dvI021")).ok=((new com.ibm.icu.math.BigDecimal("101.3")).divideInteger(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("101");
\r
1704 (new Test("dvI022")).ok=((new com.ibm.icu.math.BigDecimal("101.0")).divideInteger(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("101");
\r
1705 (new Test("dvI023")).ok=((new com.ibm.icu.math.BigDecimal("101.3")).divideInteger(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("33");
\r
1706 (new Test("dvI024")).ok=((new com.ibm.icu.math.BigDecimal("101.0")).divideInteger(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("33");
\r
1707 (new Test("dvI025")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).divideInteger(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("2");
\r
1708 (new Test("dvI026")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).divideInteger(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("2");
\r
1709 (new Test("dvI027")).ok=((new com.ibm.icu.math.BigDecimal("18")).divideInteger(new com.ibm.icu.math.BigDecimal("18")).toString()).equals("1");
\r
1710 (new Test("dvI028")).ok=((new com.ibm.icu.math.BigDecimal("1120")).divideInteger(new com.ibm.icu.math.BigDecimal("1000")).toString()).equals("1");
\r
1711 (new Test("dvI029")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).divideInteger(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("1");
\r
1712 (new Test("dvI030")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).divideInteger(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("1");
\r
1713 (new Test("dvI031")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).divideInteger(new com.ibm.icu.math.BigDecimal("2.000")).toString()).equals("0");
\r
1714 (new Test("dvI032")).ok=((new com.ibm.icu.math.BigDecimal("8.005")).divideInteger(new com.ibm.icu.math.BigDecimal("7")).toString()).equals("1");
\r
1715 (new Test("dvI033")).ok=((new com.ibm.icu.math.BigDecimal("5")).divideInteger(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("2");
\r
1716 (new Test("dvI034")).ok=((new com.ibm.icu.math.BigDecimal("0")).divideInteger(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("0");
\r
1717 (new Test("dvI035")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).divideInteger(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("0");
\r
1720 ten.divideInteger((com.ibm.icu.math.BigDecimal) null);
\r
1722 } catch (java.lang.NullPointerException $43) {
\r
1725 (new Test("dvI101")).ok = flag;
\r
1727 ten.divideInteger(ten, (com.ibm.icu.math.MathContext) null);
\r
1729 } catch (java.lang.NullPointerException $44) {
\r
1732 (new Test("dvI102")).ok = flag;
\r
1735 com.ibm.icu.math.BigDecimal.ONE.divideInteger(tenlong, mcld);
\r
1737 } catch (java.lang.ArithmeticException $45) {
\r
1739 flag = (ae.getMessage()).equals("Too many digits:" + " "
\r
1740 + tenlong.toString());
\r
1741 }/* checkdigits */
\r
1742 (new Test("dvI103")).ok = flag;
\r
1745 tenlong.divideInteger(com.ibm.icu.math.BigDecimal.ONE, mcld);
\r
1747 } catch (java.lang.ArithmeticException $46) {
\r
1749 flag = (ae.getMessage()).equals("Too many digits:" + " "
\r
1750 + tenlong.toString());
\r
1751 }/* checkdigits */
\r
1752 (new Test("dvI104")).ok = flag;
\r
1754 summary("divideInteger");
\r
1757 /* ----------------------------------------------------------------- */
\r
1759 /** Test the {@link com.ibm.icu.math.BigDecimal#max} method. */
\r
1761 public void diagmax() {
\r
1762 boolean flag = false;
\r
1763 java.lang.ArithmeticException ae = null;
\r
1765 // we assume add/subtract test function; this and min just
\r
1766 // test existence and test the truth table
\r
1767 (new Test("max001")).ok=((new com.ibm.icu.math.BigDecimal("5")).max(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("5");
\r
1768 (new Test("max002")).ok=((new com.ibm.icu.math.BigDecimal("5")).max(new com.ibm.icu.math.BigDecimal("5")).toString()).equals("5");
\r
1769 (new Test("max003")).ok=((new com.ibm.icu.math.BigDecimal("2")).max(new com.ibm.icu.math.BigDecimal("7")).toString()).equals("7");
\r
1770 (new Test("max004")).ok=((new com.ibm.icu.math.BigDecimal("2")).max(new com.ibm.icu.math.BigDecimal("7"),mcdef).toString()).equals("7");
\r
1771 (new Test("max005")).ok=((new com.ibm.icu.math.BigDecimal("2")).max(new com.ibm.icu.math.BigDecimal("7"),mc6).toString()).equals("7");
\r
1772 (new Test("max006")).ok=((new com.ibm.icu.math.BigDecimal("2E+3")).max(new com.ibm.icu.math.BigDecimal("7")).toString()).equals("2000");
\r
1773 (new Test("max007")).ok=((new com.ibm.icu.math.BigDecimal("2E+3")).max(new com.ibm.icu.math.BigDecimal("7"),mc3).toString()).equals("2E+3");
\r
1774 (new Test("max008")).ok=((new com.ibm.icu.math.BigDecimal("7")).max(new com.ibm.icu.math.BigDecimal("2E+3")).toString()).equals("2000");
\r
1775 (new Test("max009")).ok=((new com.ibm.icu.math.BigDecimal("7")).max(new com.ibm.icu.math.BigDecimal("2E+3"),mc3).toString()).equals("2E+3");
\r
1777 ten.max((com.ibm.icu.math.BigDecimal) null);
\r
1779 } catch (java.lang.NullPointerException $47) {
\r
1782 (new Test("max010")).ok = flag;
\r
1784 ten.max(ten, (com.ibm.icu.math.MathContext) null);
\r
1786 } catch (java.lang.NullPointerException $48) {
\r
1789 (new Test("max011")).ok = flag;
\r
1791 tenlong.max(com.ibm.icu.math.BigDecimal.ONE, mcld);
\r
1793 } catch (java.lang.ArithmeticException $49) {
\r
1795 flag = (ae.getMessage()).equals("Too many digits:" + " "
\r
1796 + tenlong.toString());
\r
1797 }/* checkdigits */
\r
1798 (new Test("max012")).ok = flag;
\r
1800 com.ibm.icu.math.BigDecimal.ONE.max(tenlong, mcld);
\r
1802 } catch (java.lang.ArithmeticException $50) {
\r
1804 flag = (ae.getMessage()).equals("Too many digits:" + " "
\r
1805 + tenlong.toString());
\r
1806 }/* checkdigits */
\r
1807 (new Test("max013")).ok = flag;
\r
1811 /** Test the {@link com.ibm.icu.math.BigDecimal#min} method. */
\r
1813 public void diagmin() {
\r
1814 boolean flag = false;
\r
1815 com.ibm.icu.math.BigDecimal minx = null;
\r
1816 java.lang.ArithmeticException ae = null;
\r
1817 // we assume add/subtract test function; this and max just
\r
1818 // test existence and test the truth table
\r
1820 (new Test("min001")).ok=((new com.ibm.icu.math.BigDecimal("5")).min(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("2");
\r
1821 (new Test("min002")).ok=((new com.ibm.icu.math.BigDecimal("5")).min(new com.ibm.icu.math.BigDecimal("5")).toString()).equals("5");
\r
1822 (new Test("min003")).ok=((new com.ibm.icu.math.BigDecimal("2")).min(new com.ibm.icu.math.BigDecimal("7")).toString()).equals("2");
\r
1823 (new Test("min004")).ok=((new com.ibm.icu.math.BigDecimal("2")).min(new com.ibm.icu.math.BigDecimal("7"),mcdef).toString()).equals("2");
\r
1824 (new Test("min005")).ok=((new com.ibm.icu.math.BigDecimal("1")).min(new com.ibm.icu.math.BigDecimal("7"),mc6).toString()).equals("1");
\r
1825 (new Test("min006")).ok=((new com.ibm.icu.math.BigDecimal("-2E+3")).min(new com.ibm.icu.math.BigDecimal("7")).toString()).equals("-2000");
\r
1826 (new Test("min007")).ok=((new com.ibm.icu.math.BigDecimal("-2E+3")).min(new com.ibm.icu.math.BigDecimal("7"),mc3).toString()).equals("-2E+3");
\r
1827 (new Test("min008")).ok=((new com.ibm.icu.math.BigDecimal("7")).min(new com.ibm.icu.math.BigDecimal("-2E+3")).toString()).equals("-2000");
\r
1828 (new Test("min009")).ok=((new com.ibm.icu.math.BigDecimal("7")).min(new com.ibm.icu.math.BigDecimal("-2E+3"),mc3).toString()).equals("-2E+3");
\r
1831 minx.min((com.ibm.icu.math.BigDecimal) null);
\r
1833 } catch (java.lang.NullPointerException $51) {
\r
1836 (new Test("min010")).ok = flag;
\r
1839 minx.min(ten, (com.ibm.icu.math.MathContext) null);
\r
1841 } catch (java.lang.NullPointerException $52) {
\r
1844 (new Test("min011")).ok = flag;
\r
1847 tenlong.min(com.ibm.icu.math.BigDecimal.ONE, mcld);
\r
1849 } catch (java.lang.ArithmeticException $53) {
\r
1851 flag = (ae.getMessage()).equals("Too many digits:" + " "
\r
1852 + tenlong.toString());
\r
1853 }/* checkdigits */
\r
1854 (new Test("min012")).ok = flag;
\r
1856 (new com.ibm.icu.math.BigDecimal(9)).min(tenlong, mcld);
\r
1858 } catch (java.lang.ArithmeticException $54) {
\r
1860 flag = (ae.getMessage()).equals("Too many digits:" + " "
\r
1861 + tenlong.toString());
\r
1862 }/* checkdigits */
\r
1863 (new Test("min013")).ok = flag;
\r
1867 /* ----------------------------------------------------------------- */
\r
1869 /** Test the {@link com.ibm.icu.math.BigDecimal#multiply} method. */
\r
1871 public void diagmultiply() {
\r
1872 boolean flag = false;
\r
1873 com.ibm.icu.math.BigDecimal l9;
\r
1874 com.ibm.icu.math.BigDecimal l77e;
\r
1875 com.ibm.icu.math.BigDecimal l12345;
\r
1876 com.ibm.icu.math.BigDecimal edge;
\r
1877 com.ibm.icu.math.BigDecimal tenedge;
\r
1878 com.ibm.icu.math.BigDecimal hunedge;
\r
1879 com.ibm.icu.math.BigDecimal opo;
\r
1880 com.ibm.icu.math.BigDecimal d1 = null;
\r
1881 com.ibm.icu.math.BigDecimal d2 = null;
\r
1882 java.lang.ArithmeticException oe = null;
\r
1883 java.lang.ArithmeticException ae = null;
\r
1885 (new Test("mul001")).ok=((new com.ibm.icu.math.BigDecimal("2")).multiply(new com.ibm.icu.math.BigDecimal("3"),mcdef).toString()).equals("6");
\r
1886 (new Test("mul002")).ok=((new com.ibm.icu.math.BigDecimal("5")).multiply(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("5");
\r
1887 (new Test("mul003")).ok=((new com.ibm.icu.math.BigDecimal("5")).multiply(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("10");
\r
1888 (new Test("mul004")).ok=((new com.ibm.icu.math.BigDecimal("1.20")).multiply(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("2.40");
\r
1889 (new Test("mul005")).ok=((new com.ibm.icu.math.BigDecimal("1.20")).multiply(new com.ibm.icu.math.BigDecimal("0"),mcdef).toString()).equals("0");
\r
1890 (new Test("mul006")).ok=((new com.ibm.icu.math.BigDecimal("1.20")).multiply(new com.ibm.icu.math.BigDecimal("-2"),mcdef).toString()).equals("-2.40");
\r
1891 (new Test("mul007")).ok=((new com.ibm.icu.math.BigDecimal("-1.20")).multiply(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("-2.40");
\r
1892 (new Test("mul008")).ok=((new com.ibm.icu.math.BigDecimal("-1.20")).multiply(new com.ibm.icu.math.BigDecimal("0"),mcdef).toString()).equals("0");
\r
1893 (new Test("mul009")).ok=((new com.ibm.icu.math.BigDecimal("-1.20")).multiply(new com.ibm.icu.math.BigDecimal("-2"),mcdef).toString()).equals("2.40");
\r
1894 (new Test("mul010")).ok=((new com.ibm.icu.math.BigDecimal("5.09")).multiply(new com.ibm.icu.math.BigDecimal("7.1"),mcdef).toString()).equals("36.139");
\r
1895 (new Test("mul011")).ok=((new com.ibm.icu.math.BigDecimal("2.5")).multiply(new com.ibm.icu.math.BigDecimal("4"),mcdef).toString()).equals("10.0");
\r
1896 (new Test("mul012")).ok=((new com.ibm.icu.math.BigDecimal("2.50")).multiply(new com.ibm.icu.math.BigDecimal("4"),mcdef).toString()).equals("10.00");
\r
1897 (new Test("mul013")).ok=((new com.ibm.icu.math.BigDecimal("1.23456789")).multiply(new com.ibm.icu.math.BigDecimal("1.00000000"),mcdef).toString()).equals("1.23456789");
\r
1899 (new Test("mul014")).ok=((new com.ibm.icu.math.BigDecimal("9.999999999")).multiply(new com.ibm.icu.math.BigDecimal("9.999999999"),mcdef).toString()).equals("100.000000");
\r
1901 (new Test("mul015")).ok=((new com.ibm.icu.math.BigDecimal("2.50")).multiply(new com.ibm.icu.math.BigDecimal("4"),mcdef).toString()).equals("10.00");
\r
1902 (new Test("mul016")).ok=((new com.ibm.icu.math.BigDecimal("2.50")).multiply(new com.ibm.icu.math.BigDecimal("4"),mc6).toString()).equals("10.00");
\r
1903 (new Test("mul017")).ok=((new com.ibm.icu.math.BigDecimal("9.999999999")).multiply(new com.ibm.icu.math.BigDecimal("9.999999999"),mc6).toString()).equals("100.000");
\r
1906 (new Test("mul020")).ok=((new com.ibm.icu.math.BigDecimal("2")).multiply(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("6");
\r
1907 (new Test("mul021")).ok=((new com.ibm.icu.math.BigDecimal("5")).multiply(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("5");
\r
1908 (new Test("mul022")).ok=((new com.ibm.icu.math.BigDecimal("5")).multiply(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("10");
\r
1909 (new Test("mul023")).ok=((new com.ibm.icu.math.BigDecimal("1.20")).multiply(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("2.40");
\r
1910 (new Test("mul024")).ok=((new com.ibm.icu.math.BigDecimal("1.20")).multiply(new com.ibm.icu.math.BigDecimal("0")).toString()).equals("0.00");
\r
1911 (new Test("mul025")).ok=((new com.ibm.icu.math.BigDecimal("1.20")).multiply(new com.ibm.icu.math.BigDecimal("-2")).toString()).equals("-2.40");
\r
1912 (new Test("mul026")).ok=((new com.ibm.icu.math.BigDecimal("-1.20")).multiply(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("-2.40");
\r
1913 (new Test("mul027")).ok=((new com.ibm.icu.math.BigDecimal("-1.20")).multiply(new com.ibm.icu.math.BigDecimal("0")).toString()).equals("0.00");
\r
1914 (new Test("mul028")).ok=((new com.ibm.icu.math.BigDecimal("-1.20")).multiply(new com.ibm.icu.math.BigDecimal("-2")).toString()).equals("2.40");
\r
1915 (new Test("mul029")).ok=((new com.ibm.icu.math.BigDecimal("5.09")).multiply(new com.ibm.icu.math.BigDecimal("7.1")).toString()).equals("36.139");
\r
1916 (new Test("mul030")).ok=((new com.ibm.icu.math.BigDecimal("2.5")).multiply(new com.ibm.icu.math.BigDecimal("4")).toString()).equals("10.0");
\r
1917 (new Test("mul031")).ok=((new com.ibm.icu.math.BigDecimal("2.50")).multiply(new com.ibm.icu.math.BigDecimal("4")).toString()).equals("10.00");
\r
1918 (new Test("mul032")).ok=((new com.ibm.icu.math.BigDecimal("1.23456789")).multiply(new com.ibm.icu.math.BigDecimal("1.00000000")).toString()).equals("1.2345678900000000");
\r
1920 (new Test("mul033")).ok=((new com.ibm.icu.math.BigDecimal("1234.56789")).multiply(new com.ibm.icu.math.BigDecimal("-1000.00000")).toString()).equals("-1234567.8900000000");
\r
1922 (new Test("mul034")).ok=((new com.ibm.icu.math.BigDecimal("-1234.56789")).multiply(new com.ibm.icu.math.BigDecimal("1000.00000")).toString()).equals("-1234567.8900000000");
\r
1924 (new Test("mul035")).ok=((new com.ibm.icu.math.BigDecimal("9.999999999")).multiply(new com.ibm.icu.math.BigDecimal("9.999999999")).toString()).equals("99.999999980000000001");
\r
1926 (new Test("mul036")).ok=((new com.ibm.icu.math.BigDecimal("5.00")).multiply(new com.ibm.icu.math.BigDecimal("1E-3")).toString()).equals("0.00500");
\r
1927 (new Test("mul037")).ok=((new com.ibm.icu.math.BigDecimal("00.00")).multiply(new com.ibm.icu.math.BigDecimal("0.000")).toString()).equals("0.00000");
\r
1928 (new Test("mul038")).ok=((new com.ibm.icu.math.BigDecimal("00.00")).multiply(new com.ibm.icu.math.BigDecimal("0E-3")).toString()).equals("0.00"); // rhs is '0'
\r
1929 // 1999.12.21: next one is a edge case if intermediate longs are used
\r
1930 (new Test("mul039")).ok = ((new com.ibm.icu.math.BigDecimal("999999999999")).multiply(new com.ibm.icu.math.BigDecimal("9765625")).toString()).equals("9765624999990234375");
\r
1932 l9 = new com.ibm.icu.math.BigDecimal("123456789E+10");
\r
1933 l77e = new com.ibm.icu.math.BigDecimal("77E-20");
\r
1934 (new Test("mul040")).ok = (l9.multiply(new com.ibm.icu.math.BigDecimal("3456757")).toString()).equals("4267601195732730000000000");
\r
1935 (new Test("mul041")).ok = (l9.multiply(new com.ibm.icu.math.BigDecimal("3456757"), mc3).toString()).equals("4.26E+24");
\r
1936 (new Test("mul042")).ok = (l9.multiply(l77e).toString()).equals("0.95061727530000000000");
\r
1937 (new Test("mul043")).ok = (l9.multiply(l77e, mc3).toString()).equals("0.947");
\r
1938 (new Test("mul044")).ok = (l77e.multiply(l9, mc3).toString()).equals("0.947");
\r
1940 l12345 = new com.ibm.icu.math.BigDecimal("123.45");
\r
1941 (new Test("mul050")).ok=(l12345.multiply(new com.ibm.icu.math.BigDecimal("1e11"),mcdef).toString()).equals("1.2345E+13");
\r
1942 (new Test("mul051")).ok=(l12345.multiply(new com.ibm.icu.math.BigDecimal("1e11"),mcs).toString()).equals("1.2345E+13");
\r
1943 (new Test("mul052")).ok=(l12345.multiply(new com.ibm.icu.math.BigDecimal("1e+9"),mce).toString()).equals("123.45E+9");
\r
1944 (new Test("mul053")).ok=(l12345.multiply(new com.ibm.icu.math.BigDecimal("1e10"),mce).toString()).equals("1.2345E+12");
\r
1945 (new Test("mul054")).ok=(l12345.multiply(new com.ibm.icu.math.BigDecimal("1e11"),mce).toString()).equals("12.345E+12");
\r
1946 (new Test("mul055")).ok=(l12345.multiply(new com.ibm.icu.math.BigDecimal("1e12"),mce).toString()).equals("123.45E+12");
\r
1947 (new Test("mul056")).ok=(l12345.multiply(new com.ibm.icu.math.BigDecimal("1e13"),mce).toString()).equals("1.2345E+15");
\r
1949 // test some cases that are close to exponent overflow
\r
1950 (new Test("mul060")).ok=(one.multiply(new com.ibm.icu.math.BigDecimal("9e999999999"),mcs).toString()).equals("9E+999999999");
\r
1951 (new Test("mul061")).ok=(one.multiply(new com.ibm.icu.math.BigDecimal("9.9e999999999"),mcs).toString()).equals("9.9E+999999999");
\r
1952 (new Test("mul062")).ok=(one.multiply(new com.ibm.icu.math.BigDecimal("9.99e999999999"),mcs).toString()).equals("9.99E+999999999");
\r
1953 (new Test("mul063")).ok=(ten.multiply(new com.ibm.icu.math.BigDecimal("9e999999999"),mce).toString()).equals("90E+999999999");
\r
1954 (new Test("mul064")).ok=(ten.multiply(new com.ibm.icu.math.BigDecimal("9.9e999999999"),mce).toString()).equals("99.0E+999999999");
\r
1955 edge = new com.ibm.icu.math.BigDecimal("9.999e999999999");
\r
1956 tenedge = ten.multiply(edge, mce);
\r
1957 (new Test("mul065")).ok=(tenedge.toString()).equals("99.990E+999999999");
\r
1958 hunedge = ten.multiply(tenedge, mce);
\r
1959 (new Test("mul066")).ok = (hunedge.toString()).equals("999.900E+999999999");
\r
1960 opo = new com.ibm.icu.math.BigDecimal("0.1"); // one tenth
\r
1961 (new Test("mul067")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("9e-999999998"),mcs).toString()).equals("9E-999999999");
\r
1962 (new Test("mul068")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("99e-999999998"),mcs).toString()).equals("9.9E-999999998");
\r
1963 (new Test("mul069")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("999e-999999998"),mcs).toString()).equals("9.99E-999999997");
\r
1965 (new Test("mul070")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("9e-999999998"),mce).toString()).equals("9E-999999999");
\r
1966 (new Test("mul071")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("99e-999999998"),mce).toString()).equals("99E-999999999");
\r
1967 (new Test("mul072")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("999e-999999998"),mce).toString()).equals("999E-999999999");
\r
1968 (new Test("mul073")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("999e-999999997"),mce).toString()).equals("9.99E-999999996");
\r
1969 (new Test("mul074")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("9999e-999999997"),mce).toString()).equals("99.99E-999999996");
\r
1970 (new Test("mul074")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("99999e-999999997"),mce).toString()).equals("999.99E-999999996");
\r
1972 // test some intermediate lengths
\r
1973 (new Test("mul080")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("123456789"),mcs).toString()).equals("12345678.9");
\r
1974 (new Test("mul081")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("12345678901234"),mcs).toString()).equals("1.23456789E+12");
\r
1975 (new Test("mul082")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("123456789123456789"),mcs).toString()).equals("1.23456789E+16");
\r
1976 (new Test("mul083")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("123456789"),mcfd).toString()).equals("12345678.9");
\r
1977 (new Test("mul084")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("12345678901234"),mcfd).toString()).equals("1234567890123.4");
\r
1978 (new Test("mul085")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("123456789123456789"),mcfd).toString()).equals("12345678912345678.9");
\r
1980 (new Test("mul090")).ok=((new com.ibm.icu.math.BigDecimal("123456789")).multiply(opo,mcs).toString()).equals("12345678.9");
\r
1981 (new Test("mul091")).ok=((new com.ibm.icu.math.BigDecimal("12345678901234")).multiply(opo,mcs).toString()).equals("1.23456789E+12");
\r
1982 (new Test("mul092")).ok=((new com.ibm.icu.math.BigDecimal("123456789123456789")).multiply(opo,mcs).toString()).equals("1.23456789E+16");
\r
1983 (new Test("mul093")).ok=((new com.ibm.icu.math.BigDecimal("123456789")).multiply(opo,mcfd).toString()).equals("12345678.9");
\r
1984 (new Test("mul094")).ok=((new com.ibm.icu.math.BigDecimal("12345678901234")).multiply(opo,mcfd).toString()).equals("1234567890123.4");
\r
1985 (new Test("mul095")).ok=((new com.ibm.icu.math.BigDecimal("123456789123456789")).multiply(opo,mcfd).toString()).equals("12345678912345678.9");
\r
1987 // test some more edge cases and carries
\r
1988 (new Test("mul101")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("9")).toString()).equals("81");
\r
1989 (new Test("mul102")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("90")).toString()).equals("810");
\r
1990 (new Test("mul103")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("900")).toString()).equals("8100");
\r
1991 (new Test("mul104")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("9000")).toString()).equals("81000");
\r
1992 (new Test("mul105")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("90000")).toString()).equals("810000");
\r
1993 (new Test("mul106")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("900000")).toString()).equals("8100000");
\r
1994 (new Test("mul107")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("9000000")).toString()).equals("81000000");
\r
1995 (new Test("mul108")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("90000000")).toString()).equals("810000000");
\r
1996 (new Test("mul109")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("900000000")).toString()).equals("8100000000");
\r
1997 (new Test("mul110")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("9000000000")).toString()).equals("81000000000");
\r
1998 (new Test("mul111")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("90000000000")).toString()).equals("810000000000");
\r
1999 (new Test("mul112")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("900000000000")).toString()).equals("8100000000000");
\r
2000 (new Test("mul113")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("9000000000000")).toString()).equals("81000000000000");
\r
2001 (new Test("mul114")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("90000000000000")).toString()).equals("810000000000000");
\r
2002 (new Test("mul115")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("900000000000000")).toString()).equals("8100000000000000");
\r
2003 (new Test("mul116")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("9000000000000000")).toString()).equals("81000000000000000");
\r
2004 (new Test("mul117")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("90000000000000000")).toString()).equals("810000000000000000");
\r
2005 (new Test("mul118")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("900000000000000000")).toString()).equals("8100000000000000000");
\r
2006 (new Test("mul119")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("9000000000000000000")).toString()).equals("81000000000000000000");
\r
2007 (new Test("mul120")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("90000000000000000000")).toString()).equals("810000000000000000000");
\r
2008 (new Test("mul121")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("900000000000000000000")).toString()).equals("8100000000000000000000");
\r
2009 (new Test("mul122")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("9000000000000000000000")).toString()).equals("81000000000000000000000");
\r
2010 (new Test("mul123")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("90000000000000000000000")).toString()).equals("810000000000000000000000");
\r
2011 // test some more edge cases without carries
\r
2012 (new Test("mul131")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("9");
\r
2013 (new Test("mul132")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("30")).toString()).equals("90");
\r
2014 (new Test("mul133")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("300")).toString()).equals("900");
\r
2015 (new Test("mul134")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("3000")).toString()).equals("9000");
\r
2016 (new Test("mul135")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("30000")).toString()).equals("90000");
\r
2017 (new Test("mul136")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("300000")).toString()).equals("900000");
\r
2018 (new Test("mul137")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("3000000")).toString()).equals("9000000");
\r
2019 (new Test("mul138")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("30000000")).toString()).equals("90000000");
\r
2020 (new Test("mul139")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("300000000")).toString()).equals("900000000");
\r
2021 (new Test("mul140")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("3000000000")).toString()).equals("9000000000");
\r
2022 (new Test("mul141")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("30000000000")).toString()).equals("90000000000");
\r
2023 (new Test("mul142")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("300000000000")).toString()).equals("900000000000");
\r
2024 (new Test("mul143")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("3000000000000")).toString()).equals("9000000000000");
\r
2025 (new Test("mul144")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("30000000000000")).toString()).equals("90000000000000");
\r
2026 (new Test("mul145")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("300000000000000")).toString()).equals("900000000000000");
\r
2027 (new Test("mul146")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("3000000000000000")).toString()).equals("9000000000000000");
\r
2028 (new Test("mul147")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("30000000000000000")).toString()).equals("90000000000000000");
\r
2029 (new Test("mul148")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("300000000000000000")).toString()).equals("900000000000000000");
\r
2030 (new Test("mul149")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("3000000000000000000")).toString()).equals("9000000000000000000");
\r
2031 (new Test("mul150")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("30000000000000000000")).toString()).equals("90000000000000000000");
\r
2032 (new Test("mul151")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("300000000000000000000")).toString()).equals("900000000000000000000");
\r
2033 (new Test("mul152")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("3000000000000000000000")).toString()).equals("9000000000000000000000");
\r
2034 (new Test("mul153")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("30000000000000000000000")).toString()).equals("90000000000000000000000");
\r
2037 ten.multiply((com.ibm.icu.math.BigDecimal) null);
\r
2039 } catch (java.lang.NullPointerException $55) {
\r
2042 (new Test("mul200")).ok = flag;
\r
2044 ten.multiply(ten, (com.ibm.icu.math.MathContext) null);
\r
2046 } catch (java.lang.NullPointerException $56) {
\r
2049 (new Test("mul201")).ok = flag;
\r
2052 d1 = new com.ibm.icu.math.BigDecimal("-1.23456789012345E-0");
\r
2053 d2 = new com.ibm.icu.math.BigDecimal("9E+999999999");
\r
2054 d1.multiply(d2, mcdef); // marginal overflow
\r
2056 } catch (java.lang.ArithmeticException $57) {
\r
2058 flag = (oe.getMessage()).equals("Exponent Overflow: 1000000000");
\r
2060 (new Test("mul202")).ok = flag;
\r
2062 d1 = new com.ibm.icu.math.BigDecimal("112");
\r
2063 d2 = new com.ibm.icu.math.BigDecimal("9E+999999999");
\r
2064 d1.multiply(d2, mce); // marginal overflow, engineering
\r
2066 } catch (java.lang.ArithmeticException $58) {
\r
2068 flag = (oe.getMessage()).equals("Exponent Overflow: 1000000002");
\r
2070 (new Test("mul203")).ok = flag;
\r
2073 d1 = new com.ibm.icu.math.BigDecimal("0.9");
\r
2074 d2 = new com.ibm.icu.math.BigDecimal("1E-999999999");
\r
2075 d1.multiply(d2, mcdef); // marginal negative overflow
\r
2077 } catch (java.lang.ArithmeticException $59) {
\r
2079 flag = (oe.getMessage()).equals("Exponent Overflow: -1000000000");
\r
2081 (new Test("mul204")).ok = flag;
\r
2083 d1 = new com.ibm.icu.math.BigDecimal("0.9");
\r
2084 d2 = new com.ibm.icu.math.BigDecimal("1E-999999999");
\r
2085 d1.multiply(d2, mce); // marginal negative overflow,
\r
2088 } catch (java.lang.ArithmeticException $60) {
\r
2090 flag = (oe.getMessage()).equals("Exponent Overflow: -1000000002");
\r
2092 (new Test("mul205")).ok = flag;
\r
2095 tenlong.multiply(com.ibm.icu.math.BigDecimal.ONE, mcld);
\r
2097 } catch (java.lang.ArithmeticException $61) {
\r
2099 flag = (ae.getMessage()).equals("Too many digits:" + " "
\r
2100 + tenlong.toString());
\r
2101 }/* checkdigits */
\r
2102 (new Test("mul206")).ok = flag;
\r
2104 com.ibm.icu.math.BigDecimal.TEN.multiply(tenlong, mcld);
\r
2106 } catch (java.lang.ArithmeticException $62) {
\r
2108 flag = (ae.getMessage()).equals("Too many digits:" + " "
\r
2109 + tenlong.toString());
\r
2110 }/* checkdigits */
\r
2111 (new Test("mul207")).ok = flag;
\r
2113 summary("multiply");
\r
2116 /* ----------------------------------------------------------------- */
\r
2118 /** Test the {@link com.ibm.icu.math.BigDecimal#negate} method. */
\r
2120 public void diagnegate() {
\r
2121 boolean flag = false;
\r
2122 java.lang.ArithmeticException ae = null;
\r
2124 (new Test("neg001")).ok=((new com.ibm.icu.math.BigDecimal("2")).negate().toString()).equals("-2");
\r
2125 (new Test("neg002")).ok=((new com.ibm.icu.math.BigDecimal("-2")).negate().toString()).equals("2");
\r
2126 (new Test("neg003")).ok=((new com.ibm.icu.math.BigDecimal("2.00")).negate(mcdef).toString()).equals("-2.00");
\r
2127 (new Test("neg004")).ok=((new com.ibm.icu.math.BigDecimal("-2.00")).negate(mcdef).toString()).equals("2.00");
\r
2128 (new Test("neg005")).ok=((new com.ibm.icu.math.BigDecimal("0")).negate(mcdef).toString()).equals("0");
\r
2129 (new Test("neg006")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).negate(mcdef).toString()).equals("0");
\r
2130 (new Test("neg007")).ok=((new com.ibm.icu.math.BigDecimal("00.0")).negate(mcdef).toString()).equals("0");
\r
2131 (new Test("neg008")).ok=((new com.ibm.icu.math.BigDecimal("00")).negate(mcdef).toString()).equals("0");
\r
2133 (new Test("neg010")).ok=((new com.ibm.icu.math.BigDecimal("2.00")).negate().toString()).equals("-2.00");
\r
2134 (new Test("neg011")).ok=((new com.ibm.icu.math.BigDecimal("-2.00")).negate().toString()).equals("2.00");
\r
2135 (new Test("neg012")).ok=((new com.ibm.icu.math.BigDecimal("0")).negate().toString()).equals("0");
\r
2136 (new Test("neg013")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).negate().toString()).equals("0.00");
\r
2137 (new Test("neg014")).ok=((new com.ibm.icu.math.BigDecimal("00.0")).negate().toString()).equals("0.0");
\r
2138 (new Test("neg015")).ok=((new com.ibm.icu.math.BigDecimal("00.00")).negate().toString()).equals("0.00");
\r
2139 (new Test("neg016")).ok=((new com.ibm.icu.math.BigDecimal("00")).negate().toString()).equals("0");
\r
2141 (new Test("neg020")).ok=((new com.ibm.icu.math.BigDecimal("-2000000")).negate().toString()).equals("2000000");
\r
2142 (new Test("neg021")).ok=((new com.ibm.icu.math.BigDecimal("-2000000")).negate(mcdef).toString()).equals("2000000");
\r
2143 (new Test("neg022")).ok=((new com.ibm.icu.math.BigDecimal("-2000000")).negate(mc6).toString()).equals("2.00000E+6");
\r
2144 (new Test("neg023")).ok=((new com.ibm.icu.math.BigDecimal("2000000")).negate(mc6).toString()).equals("-2.00000E+6");
\r
2147 ten.negate((com.ibm.icu.math.MathContext) null);
\r
2149 } catch (java.lang.NullPointerException $63) {
\r
2152 (new Test("neg100")).ok = flag;
\r
2155 tenlong.negate(mcld);
\r
2157 } catch (java.lang.ArithmeticException $64) {
\r
2159 flag = (ae.getMessage()).equals("Too many digits:" + " "
\r
2160 + tenlong.toString());
\r
2161 }/* checkdigits */
\r
2162 (new Test("neg101")).ok = flag;
\r
2163 summary("negate");
\r
2166 /* ----------------------------------------------------------------- */
\r
2168 /** Test the {@link com.ibm.icu.math.BigDecimal#plus} method. */
\r
2170 public void diagplus() {
\r
2171 boolean flag = false;
\r
2172 com.ibm.icu.math.MathContext mche1;
\r
2173 java.lang.ArithmeticException ae = null;
\r
2175 (new Test("plu001")).ok=((new com.ibm.icu.math.BigDecimal("2")).plus(mcdef).toString()).equals("2");
\r
2176 (new Test("plu002")).ok=((new com.ibm.icu.math.BigDecimal("-2")).plus(mcdef).toString()).equals("-2");
\r
2177 (new Test("plu003")).ok=((new com.ibm.icu.math.BigDecimal("2.00")).plus(mcdef).toString()).equals("2.00");
\r
2178 (new Test("plu004")).ok=((new com.ibm.icu.math.BigDecimal("-2.00")).plus(mcdef).toString()).equals("-2.00");
\r
2179 (new Test("plu005")).ok=((new com.ibm.icu.math.BigDecimal("0")).plus(mcdef).toString()).equals("0");
\r
2180 (new Test("plu006")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).plus(mcdef).toString()).equals("0");
\r
2181 (new Test("plu007")).ok=((new com.ibm.icu.math.BigDecimal("00.0")).plus(mcdef).toString()).equals("0");
\r
2182 (new Test("plu008")).ok=((new com.ibm.icu.math.BigDecimal("00")).plus(mcdef).toString()).equals("0");
\r
2184 (new Test("plu010")).ok=((new com.ibm.icu.math.BigDecimal("2")).plus().toString()).equals("2");
\r
2185 (new Test("plu011")).ok=((new com.ibm.icu.math.BigDecimal("-2")).plus().toString()).equals("-2");
\r
2186 (new Test("plu012")).ok=((new com.ibm.icu.math.BigDecimal("2.00")).plus().toString()).equals("2.00");
\r
2187 (new Test("plu013")).ok=((new com.ibm.icu.math.BigDecimal("-2.00")).plus().toString()).equals("-2.00");
\r
2188 (new Test("plu014")).ok=((new com.ibm.icu.math.BigDecimal("0")).plus().toString()).equals("0");
\r
2189 (new Test("plu015")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).plus().toString()).equals("0.00");
\r
2190 (new Test("plu016")).ok=((new com.ibm.icu.math.BigDecimal("00.0")).plus().toString()).equals("0.0");
\r
2191 (new Test("plu017")).ok=((new com.ibm.icu.math.BigDecimal("00.00")).plus().toString()).equals("0.00");
\r
2192 (new Test("plu018")).ok=((new com.ibm.icu.math.BigDecimal("00")).plus().toString()).equals("0");
\r
2194 (new Test("plu020")).ok=((new com.ibm.icu.math.BigDecimal("-2000000")).plus().toString()).equals("-2000000");
\r
2195 (new Test("plu021")).ok=((new com.ibm.icu.math.BigDecimal("-2000000")).plus(mcdef).toString()).equals("-2000000");
\r
2196 (new Test("plu022")).ok=((new com.ibm.icu.math.BigDecimal("-2000000")).plus(mc6).toString()).equals("-2.00000E+6");
\r
2197 (new Test("plu023")).ok=((new com.ibm.icu.math.BigDecimal("2000000")).plus(mc6).toString()).equals("2.00000E+6");
\r
2199 // try some exotic but silly rounding [format checks more varieties]
\r
2200 // [this mostly ensures we can set up and pass the setting]
\r
2201 mche1=new com.ibm.icu.math.MathContext(1,com.ibm.icu.math.MathContext.SCIENTIFIC,false,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN);
\r
2202 (new Test("plu030")).ok=((new com.ibm.icu.math.BigDecimal("0.24")).plus(mche1).toString()).equals("0.2");
\r
2203 (new Test("plu031")).ok=((new com.ibm.icu.math.BigDecimal("0.25")).plus(mche1).toString()).equals("0.2");
\r
2204 (new Test("plu032")).ok=((new com.ibm.icu.math.BigDecimal("0.26")).plus(mche1).toString()).equals("0.3");
\r
2205 (new Test("plu033")).ok=((new com.ibm.icu.math.BigDecimal("0.14")).plus(mche1).toString()).equals("0.1");
\r
2206 (new Test("plu034")).ok=((new com.ibm.icu.math.BigDecimal("0.15")).plus(mche1).toString()).equals("0.2");
\r
2207 (new Test("plu035")).ok=((new com.ibm.icu.math.BigDecimal("0.16")).plus(mche1).toString()).equals("0.2");
\r
2209 (new Test("plu040")).ok=((new com.ibm.icu.math.BigDecimal("0.251")).plus(mche1).toString()).equals("0.3");
\r
2210 (new Test("plu041")).ok=((new com.ibm.icu.math.BigDecimal("0.151")).plus(mche1).toString()).equals("0.2");
\r
2212 (new Test("plu050")).ok=((new com.ibm.icu.math.BigDecimal("-0.24")).plus(mche1).toString()).equals("-0.2");
\r
2213 (new Test("plu051")).ok=((new com.ibm.icu.math.BigDecimal("-0.25")).plus(mche1).toString()).equals("-0.2");
\r
2214 (new Test("plu052")).ok=((new com.ibm.icu.math.BigDecimal("-0.26")).plus(mche1).toString()).equals("-0.3");
\r
2215 (new Test("plu053")).ok=((new com.ibm.icu.math.BigDecimal("-0.14")).plus(mche1).toString()).equals("-0.1");
\r
2216 (new Test("plu054")).ok=((new com.ibm.icu.math.BigDecimal("-0.15")).plus(mche1).toString()).equals("-0.2");
\r
2217 (new Test("plu055")).ok=((new com.ibm.icu.math.BigDecimal("-0.16")).plus(mche1).toString()).equals("-0.2");
\r
2219 // more fixed, potential LHS swaps if done by add 0
\r
2220 (new Test("plu060")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-10")).plus().toString()).equals("-0.0000056267");
\r
2221 (new Test("plu061")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-5")).plus().toString()).equals("-0.56267");
\r
2222 (new Test("plu062")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-2")).plus().toString()).equals("-562.67");
\r
2223 (new Test("plu063")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-1")).plus().toString()).equals("-5626.7");
\r
2224 (new Test("plu065")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-0")).plus().toString()).equals("-56267");
\r
2227 ten.plus((com.ibm.icu.math.MathContext) null);
\r
2229 } catch (java.lang.NullPointerException $65) {
\r
2232 (new Test("plu100")).ok = flag;
\r
2235 tenlong.plus(mcld);
\r
2237 } catch (java.lang.ArithmeticException $66) {
\r
2239 flag = (ae.getMessage()).equals("Too many digits:" + " "
\r
2240 + tenlong.toString());
\r
2241 }/* checkdigits */
\r
2242 (new Test("plu101")).ok = flag;
\r
2246 /* ----------------------------------------------------------------- */
\r
2248 /** Test the {@link com.ibm.icu.math.BigDecimal#pow} method. */
\r
2250 public void diagpow() {
\r
2252 com.ibm.icu.math.BigDecimal x;
\r
2253 com.ibm.icu.math.BigDecimal temp;
\r
2255 com.ibm.icu.math.BigDecimal vx;
\r
2256 com.ibm.icu.math.BigDecimal vn;
\r
2257 java.lang.ArithmeticException ae = null;
\r
2259 (new Test("pow001")).ok="1".equals((new com.ibm.icu.math.BigDecimal("0.3")).pow(new com.ibm.icu.math.BigDecimal("0"),mcdef).toString());
\r
2260 (new Test("pow002")).ok="0.3".equals((new com.ibm.icu.math.BigDecimal("0.3")).pow(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString());
\r
2261 (new Test("pow003")).ok="0.3".equals((new com.ibm.icu.math.BigDecimal("0.3")).pow(new com.ibm.icu.math.BigDecimal("1.00"),mcdef).toString());
\r
2262 (new Test("pow004")).ok="0.09".equals((new com.ibm.icu.math.BigDecimal("0.3")).pow(new com.ibm.icu.math.BigDecimal("2.00"),mcdef).toString());
\r
2263 (new Test("pow005")).ok="0.09".equals((new com.ibm.icu.math.BigDecimal("0.3")).pow(new com.ibm.icu.math.BigDecimal("2.000000000"),mcdef).toString());
\r
2264 (new Test("pow006")).ok=("1E-8").equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-8"),mcdef).toString());
\r
2265 (new Test("pow007")).ok=("1E-7").equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-7"),mcdef).toString());
\r
2266 (new Test("pow008")).ok="0.000001".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-6"),mcdef).toString());
\r
2267 (new Test("pow009")).ok="0.00001".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-5"),mcdef).toString());
\r
2268 (new Test("pow010")).ok="0.0001".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-4"),mcdef).toString());
\r
2269 (new Test("pow011")).ok="0.001".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-3"),mcdef).toString());
\r
2270 (new Test("pow012")).ok="0.01".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-2"),mcdef).toString());
\r
2271 (new Test("pow013")).ok="0.1".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-1"),mcdef).toString());
\r
2272 (new Test("pow014")).ok="1".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("0"),mcdef).toString());
\r
2273 (new Test("pow015")).ok="10".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString());
\r
2274 (new Test("pow016")).ok="100000000".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("8"),mcdef).toString());
\r
2275 (new Test("pow017")).ok=("1E+9").equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("9"),mcdef).toString());
\r
2276 (new Test("pow018")).ok=("1E+99").equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("99"),mcdef).toString());
\r
2277 (new Test("pow019")).ok=("1E+999999999").equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("999999999"),mcdef).toString());
\r
2278 (new Test("pow020")).ok=("1E+999999998").equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("999999998"),mcdef).toString());
\r
2279 (new Test("pow021")).ok=("1E+999999997").equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("999999997"),mcdef).toString());
\r
2280 (new Test("pow022")).ok=("1E+333333333").equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("333333333"),mcdef).toString());
\r
2281 (new Test("pow023")).ok=("1E-333333333").equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-333333333"),mcdef).toString());
\r
2282 (new Test("pow024")).ok=("1E-999999998").equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-999999998"),mcdef).toString());
\r
2283 (new Test("pow025")).ok=("1E-999999999").equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-999999999"),mcdef).toString());
\r
2284 (new Test("pow026")).ok="0.5".equals((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("-1"),mcdef).toString());
\r
2285 (new Test("pow027")).ok="0.25".equals((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("-2"),mcdef).toString());
\r
2286 (new Test("pow028")).ok="0.0625".equals((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("-4"),mcdef).toString());
\r
2288 (new Test("pow050")).ok=((new com.ibm.icu.math.BigDecimal("0")).pow(new com.ibm.icu.math.BigDecimal("0"),mcdef).toString()).equals("1");
\r
2289 (new Test("pow051")).ok=((new com.ibm.icu.math.BigDecimal("0")).pow(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("0");
\r
2290 (new Test("pow052")).ok=((new com.ibm.icu.math.BigDecimal("0")).pow(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("0");
\r
2291 (new Test("pow053")).ok=((new com.ibm.icu.math.BigDecimal("1")).pow(new com.ibm.icu.math.BigDecimal("0"),mcdef).toString()).equals("1");
\r
2292 (new Test("pow054")).ok=((new com.ibm.icu.math.BigDecimal("1")).pow(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("1");
\r
2293 (new Test("pow055")).ok=((new com.ibm.icu.math.BigDecimal("1")).pow(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("1");
\r
2294 (new Test("pow056")).ok=((new com.ibm.icu.math.BigDecimal("0.3")).pow(new com.ibm.icu.math.BigDecimal("0"),mcdef).toString()).equals("1");
\r
2295 (new Test("pow057")).ok=((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("999999999"),mcdef).toString()).equals("1E+999999999");
\r
2296 (new Test("pow058")).ok=((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("999999998"),mcdef).toString()).equals("1E+999999998");
\r
2297 (new Test("pow059")).ok=((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("999999997"),mcdef).toString()).equals("1E+999999997");
\r
2298 (new Test("pow060")).ok=((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("333333333"),mcdef).toString()).equals("1E+333333333");
\r
2299 (new Test("pow061")).ok=((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("77"),mcdef).toString()).equals("1E+77");
\r
2300 (new Test("pow062")).ok=((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("22"),mcdef).toString()).equals("1E+22");
\r
2301 (new Test("pow063")).ok=((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-77"),mcdef).toString()).equals("1E-77");
\r
2302 (new Test("pow064")).ok=((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-22"),mcdef).toString()).equals("1E-22");
\r
2303 (new Test("pow065")).ok=((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("-1"),mcdef).toString()).equals("0.5");
\r
2304 (new Test("pow066")).ok=((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("-2"),mcdef).toString()).equals("0.25");
\r
2305 (new Test("pow067")).ok=((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("-4"),mcdef).toString()).equals("0.0625");
\r
2306 (new Test("pow068")).ok=((new com.ibm.icu.math.BigDecimal("6.0")).pow(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("36");
\r
2307 (new Test("pow069")).ok=((new com.ibm.icu.math.BigDecimal("-3")).pow(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("9");/* from book */
\r
2308 (new Test("pow070")).ok=((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("2"),mcdef).pow(new com.ibm.icu.math.BigDecimal("3"),mcdef).toString()).equals("64");/* from book */
\r
2310 // 1998.12.14 Next test removed as pow() no longer rounds RHS [as per ANSI]
\r
2311 // Test('pow071').ok=BigDecimal('2').pow(BigDecimal('2.000000001'),mcdef).toString == '4'/* check input rounding */
\r
2313 /* General tests from original Rexx diagnostics */
\r
2314 x = new com.ibm.icu.math.BigDecimal("0.5");
\r
2315 temp = com.ibm.icu.math.BigDecimal.ONE;
\r
2319 for (; n <= 10; n++) {
\r
2320 temp = temp.multiply(x).divide(com.ibm.icu.math.BigDecimal.ONE);
\r
2322 & (x.pow(new com.ibm.icu.math.BigDecimal(n), mcdef)
\r
2323 .toString()).equals(temp.toString());
\r
2326 (new Test("pow080")).ok = flag;
\r
2328 x = new com.ibm.icu.math.BigDecimal("2");
\r
2329 temp = com.ibm.icu.math.BigDecimal.ONE;
\r
2333 for (; n <= 29; n++) {
\r
2334 temp = temp.multiply(x).divide(com.ibm.icu.math.BigDecimal.ONE);
\r
2335 flag=flag&(x.pow(new com.ibm.icu.math.BigDecimal(n),mcdef).toString()).equals(temp.toString());
\r
2336 flag=flag&(x.pow(new com.ibm.icu.math.BigDecimal((int)-n),mcdef).toString()).equals(com.ibm.icu.math.BigDecimal.ONE.divide(temp,mcdef).toString());
\r
2337 /* Note that rounding errors are possible for larger "n" */
\r
2338 /* due to the information content of the exponent */
\r
2341 (new Test("pow081")).ok = flag;
\r
2343 /* The Vienna case. Checks both setup and 1/acc working precision */
\r
2344 // Modified 1998.12.14 as RHS no longer rounded before use (must fit)
\r
2345 // Modified 1990.02.04 as LHS is now rounded (instead of truncated to guard)
\r
2346 vx=new com.ibm.icu.math.BigDecimal("123456789E+10"); // lhs .. rounded to 1.23E+18
\r
2347 vn=new com.ibm.icu.math.BigDecimal("-1.23000e+2"); // rhs .. [was: -1.23455e+2, rounds to -123]
\r
2348 (new Test("pow090")).ok=(vx.pow(vn,mc3).toString()).equals("8.74E-2226");
\r
2350 // - fixed point versions ---
\r
2351 (new Test("pow101")).ok="1".equals((new com.ibm.icu.math.BigDecimal("0.3")).pow(new com.ibm.icu.math.BigDecimal("0")).toString());
\r
2352 (new Test("pow102")).ok="0.3".equals((new com.ibm.icu.math.BigDecimal("0.3")).pow(new com.ibm.icu.math.BigDecimal("1")).toString());
\r
2353 (new Test("pow103")).ok="0.3".equals((new com.ibm.icu.math.BigDecimal("0.3")).pow(new com.ibm.icu.math.BigDecimal("1.00")).toString());
\r
2354 (new Test("pow104")).ok="0.09".equals((new com.ibm.icu.math.BigDecimal("0.3")).pow(new com.ibm.icu.math.BigDecimal("2")).toString());
\r
2355 (new Test("pow105")).ok="0.09".equals((new com.ibm.icu.math.BigDecimal("0.3")).pow(new com.ibm.icu.math.BigDecimal("2.00")).toString());
\r
2356 (new Test("pow106")).ok="10".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("1")).toString());
\r
2357 (new Test("pow107")).ok="100000000".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("8")).toString());
\r
2358 (new Test("pow108")).ok="1000000000".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("9")).toString());
\r
2359 (new Test("pow109")).ok="10000000000".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("10")).toString());
\r
2360 (new Test("pow110")).ok="1".equals((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("0")).toString());
\r
2361 (new Test("pow111")).ok="16".equals((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("4")).toString());
\r
2362 (new Test("pow112")).ok="256".equals((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("8")).toString());
\r
2363 (new Test("pow113")).ok="1024".equals((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("10")).toString());
\r
2364 (new Test("pow114")).ok="1.0510100501".equals((new com.ibm.icu.math.BigDecimal("1.01")).pow(new com.ibm.icu.math.BigDecimal("5")).toString());
\r
2366 (new Test("pow120")).ok=((new com.ibm.icu.math.BigDecimal("0")).pow(new com.ibm.icu.math.BigDecimal("0")).toString()).equals("1");
\r
2367 (new Test("pow121")).ok=((new com.ibm.icu.math.BigDecimal("0")).pow(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("0");
\r
2368 (new Test("pow122")).ok=((new com.ibm.icu.math.BigDecimal("0")).pow(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("0");
\r
2369 (new Test("pow123")).ok=((new com.ibm.icu.math.BigDecimal("1")).pow(new com.ibm.icu.math.BigDecimal("0")).toString()).equals("1");
\r
2370 (new Test("pow144")).ok=((new com.ibm.icu.math.BigDecimal("1")).pow(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("1");
\r
2371 (new Test("pow125")).ok=((new com.ibm.icu.math.BigDecimal("1")).pow(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("1");
\r
2372 (new Test("pow126")).ok=((new com.ibm.icu.math.BigDecimal("0.3")).pow(new com.ibm.icu.math.BigDecimal("0")).toString()).equals("1");
\r
2373 (new Test("pow127")).ok=((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("7")).toString()).equals("10000000");
\r
2374 (new Test("pow128")).ok=((new com.ibm.icu.math.BigDecimal("6.0")).pow(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("36.00");
\r
2375 (new Test("pow129")).ok=((new com.ibm.icu.math.BigDecimal("6.00")).pow(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("36.0000");
\r
2376 (new Test("pow130")).ok=((new com.ibm.icu.math.BigDecimal("6.000")).pow(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("36.000000");
\r
2377 (new Test("pow131")).ok=((new com.ibm.icu.math.BigDecimal("-3")).pow(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("9");
\r
2378 (new Test("pow132")).ok=((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("64");
\r
2382 ten.pow((com.ibm.icu.math.BigDecimal) null);
\r
2384 } catch (java.lang.NullPointerException $67) {
\r
2387 (new Test("pow150")).ok = flag;
\r
2389 ten.pow(ten, (com.ibm.icu.math.MathContext) null);
\r
2391 } catch (java.lang.NullPointerException $68) {
\r
2394 (new Test("pow151")).ok = flag;
\r
2398 tenlong.pow(com.ibm.icu.math.BigDecimal.ONE, mcld);
\r
2400 } catch (java.lang.ArithmeticException $69) {
\r
2402 flag = (ae.getMessage()).equals("Too many digits:" + " "
\r
2403 + tenlong.toString());
\r
2404 }/* checkdigits */
\r
2405 (new Test("pow152")).ok = flag;
\r
2408 com.ibm.icu.math.BigDecimal.ONE.pow(tenlong, mcld);
\r
2410 } catch (java.lang.ArithmeticException $70) {
\r
2412 flag = (ae.getMessage()).equals("Too many digits:" + " "
\r
2413 + tenlong.toString());
\r
2414 }/* checkdigits */
\r
2415 (new Test("pow153")).ok = flag;
\r
2418 com.ibm.icu.math.BigDecimal.ONE
\r
2419 .pow(new com.ibm.icu.math.BigDecimal("-71"));
\r
2421 } catch (java.lang.ArithmeticException $71) {
\r
2423 flag = (ae.getMessage()).equals("Negative power: -71");
\r
2425 (new Test("pow154")).ok = flag;
\r
2428 com.ibm.icu.math.BigDecimal.ONE.pow(
\r
2429 new com.ibm.icu.math.BigDecimal("1234"), mc3);
\r
2431 } catch (java.lang.ArithmeticException $72) {
\r
2433 flag = (ae.getMessage()).equals("Too many digits: 1234");
\r
2435 (new Test("pow155")).ok = flag;
\r
2438 com.ibm.icu.math.BigDecimal.ONE.pow(
\r
2439 new com.ibm.icu.math.BigDecimal("12.34e+2"), mc3);
\r
2441 } catch (java.lang.ArithmeticException $73) {
\r
2443 flag = (ae.getMessage()).equals("Too many digits: 1.234E+3");
\r
2444 }/* checkwhole1 */
\r
2445 (new Test("pow156")).ok = flag;
\r
2448 com.ibm.icu.math.BigDecimal.ONE.pow(
\r
2449 new com.ibm.icu.math.BigDecimal("12.4"), mcdef);
\r
2451 } catch (java.lang.ArithmeticException $74) {
\r
2453 flag = (ae.getMessage()).equals("Decimal part non-zero: 12.4");
\r
2454 }/* checkwhole2 */
\r
2455 (new Test("pow157")).ok = flag;
\r
2458 com.ibm.icu.math.BigDecimal.ONE.pow(
\r
2459 new com.ibm.icu.math.BigDecimal("1.01"), mcdef);
\r
2461 } catch (java.lang.ArithmeticException $75) {
\r
2463 flag = (ae.getMessage()).equals("Decimal part non-zero: 1.01");
\r
2464 }/* checkwhole3 */
\r
2465 (new Test("pow158")).ok = flag;
\r
2468 com.ibm.icu.math.BigDecimal.ONE.pow(
\r
2469 new com.ibm.icu.math.BigDecimal("1.000000001"), mcdef);
\r
2471 } catch (java.lang.ArithmeticException $76) {
\r
2473 flag = (ae.getMessage())
\r
2474 .equals("Decimal part non-zero: 1.000000001");
\r
2475 }/* checkwhole4 */
\r
2476 (new Test("pow159")).ok = flag;
\r
2479 com.ibm.icu.math.BigDecimal.ONE.pow(
\r
2480 new com.ibm.icu.math.BigDecimal("1.000000001"), mc3);
\r
2482 } catch (java.lang.ArithmeticException $77) {
\r
2484 flag = (ae.getMessage())
\r
2485 .equals("Decimal part non-zero: 1.000000001");
\r
2486 }/* checkwhole5 */
\r
2487 (new Test("pow160")).ok = flag;
\r
2490 com.ibm.icu.math.BigDecimal.ONE
\r
2492 new com.ibm.icu.math.BigDecimal(
\r
2493 "5.67E-987654321"), mc3);
\r
2495 } catch (java.lang.ArithmeticException $78) {
\r
2497 flag = (ae.getMessage())
\r
2498 .equals("Decimal part non-zero: 5.67E-987654321");
\r
2499 }/* checkwhole6 */
\r
2500 (new Test("pow161")).ok = flag;
\r
2505 /*--------------------------------------------------------------------*/
\r
2507 /** Test the {@link com.ibm.icu.math.BigDecimal#remainder} method. */
\r
2509 public void diagremainder() {
\r
2510 boolean flag = false;
\r
2511 java.lang.ArithmeticException ae = null;
\r
2513 (new Test("rem001")).ok=((new com.ibm.icu.math.BigDecimal("1")).remainder(new com.ibm.icu.math.BigDecimal("3"),mcdef).toString()).equals("1");
\r
2514 (new Test("rem002")).ok=((new com.ibm.icu.math.BigDecimal("5")).remainder(new com.ibm.icu.math.BigDecimal("5"),mcdef).toString()).equals("0");
\r
2515 (new Test("rem003")).ok=((new com.ibm.icu.math.BigDecimal("13")).remainder(new com.ibm.icu.math.BigDecimal("10"),mcdef).toString()).equals("3");
\r
2516 (new Test("rem004")).ok=((new com.ibm.icu.math.BigDecimal("13")).remainder(new com.ibm.icu.math.BigDecimal("50"),mcdef).toString()).equals("13");
\r
2517 (new Test("rem005")).ok=((new com.ibm.icu.math.BigDecimal("13")).remainder(new com.ibm.icu.math.BigDecimal("100"),mcdef).toString()).equals("13");
\r
2518 (new Test("rem006")).ok=((new com.ibm.icu.math.BigDecimal("13")).remainder(new com.ibm.icu.math.BigDecimal("1000"),mcdef).toString()).equals("13");
\r
2519 (new Test("rem007")).ok=((new com.ibm.icu.math.BigDecimal(".13")).remainder(one).toString()).equals("0.13");
\r
2520 (new Test("rem008")).ok=((new com.ibm.icu.math.BigDecimal("0.133")).remainder(one).toString()).equals("0.133");
\r
2521 (new Test("rem009")).ok=((new com.ibm.icu.math.BigDecimal("0.1033")).remainder(one).toString()).equals("0.1033");
\r
2522 (new Test("rem010")).ok=((new com.ibm.icu.math.BigDecimal("1.033")).remainder(one).toString()).equals("0.033");
\r
2523 (new Test("rem011")).ok=((new com.ibm.icu.math.BigDecimal("10.33")).remainder(one).toString()).equals("0.33");
\r
2524 (new Test("rem012")).ok=((new com.ibm.icu.math.BigDecimal("10.33")).remainder(com.ibm.icu.math.BigDecimal.TEN).toString()).equals("0.33");
\r
2525 (new Test("rem013")).ok=((new com.ibm.icu.math.BigDecimal("103.3")).remainder(com.ibm.icu.math.BigDecimal.ONE).toString()).equals("0.3");
\r
2526 (new Test("rem014")).ok=((new com.ibm.icu.math.BigDecimal("133")).remainder(com.ibm.icu.math.BigDecimal.TEN).toString()).equals("3");
\r
2527 (new Test("rem015")).ok=((new com.ibm.icu.math.BigDecimal("1033")).remainder(com.ibm.icu.math.BigDecimal.TEN).toString()).equals("3");
\r
2528 (new Test("rem016")).ok=((new com.ibm.icu.math.BigDecimal("1033")).remainder(new com.ibm.icu.math.BigDecimal(50),mcdef).toString()).equals("33");
\r
2529 (new Test("rem017")).ok=((new com.ibm.icu.math.BigDecimal("101.0")).remainder(new com.ibm.icu.math.BigDecimal(3),mcdef).toString()).equals("2.0");
\r
2530 (new Test("rem018")).ok=((new com.ibm.icu.math.BigDecimal("102.0")).remainder(new com.ibm.icu.math.BigDecimal(3),mcdef).toString()).equals("0");
\r
2531 (new Test("rem019")).ok=((new com.ibm.icu.math.BigDecimal("103.0")).remainder(new com.ibm.icu.math.BigDecimal(3),mcdef).toString()).equals("1.0");
\r
2532 (new Test("rem020")).ok=((new com.ibm.icu.math.BigDecimal("2.40")).remainder(one).toString()).equals("0.40");
\r
2533 (new Test("rem021")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).remainder(one).toString()).equals("0.400");
\r
2534 (new Test("rem022")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).remainder(one).toString()).equals("0.4");
\r
2535 (new Test("rem023")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).remainder(new com.ibm.icu.math.BigDecimal(2),mcdef).toString()).equals("0.4");
\r
2536 (new Test("rem024")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).remainder(new com.ibm.icu.math.BigDecimal(2),mcdef).toString()).equals("0.400");
\r
2537 (new Test("rem025")).ok=((new com.ibm.icu.math.BigDecimal("1")).remainder(new com.ibm.icu.math.BigDecimal("0.3"),mcdef).toString()).equals("0.1");
\r
2538 (new Test("rem026")).ok=((new com.ibm.icu.math.BigDecimal("1")).remainder(new com.ibm.icu.math.BigDecimal("0.30"),mcdef).toString()).equals("0.10");
\r
2539 (new Test("rem027")).ok=((new com.ibm.icu.math.BigDecimal("1")).remainder(new com.ibm.icu.math.BigDecimal("0.300"),mcdef).toString()).equals("0.100");
\r
2540 (new Test("rem028")).ok=((new com.ibm.icu.math.BigDecimal("1")).remainder(new com.ibm.icu.math.BigDecimal("0.3000"),mcdef).toString()).equals("0.1000");
\r
2541 (new Test("rem029")).ok=((new com.ibm.icu.math.BigDecimal("1.0")).remainder(new com.ibm.icu.math.BigDecimal("0.3"),mcdef).toString()).equals("0.1");
\r
2542 (new Test("rem030")).ok=((new com.ibm.icu.math.BigDecimal("1.00")).remainder(new com.ibm.icu.math.BigDecimal("0.3"),mcdef).toString()).equals("0.10");
\r
2543 (new Test("rem031")).ok=((new com.ibm.icu.math.BigDecimal("1.000")).remainder(new com.ibm.icu.math.BigDecimal("0.3"),mcdef).toString()).equals("0.100");
\r
2544 (new Test("rem032")).ok=((new com.ibm.icu.math.BigDecimal("1.0000")).remainder(new com.ibm.icu.math.BigDecimal("0.3"),mcdef).toString()).equals("0.1000");
\r
2545 (new Test("rem033")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("2.001"),mcdef).toString()).equals("0.5");
\r
2547 (new Test("rem040")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("0.5000001"),mcdef).toString()).equals("0.5");
\r
2548 (new Test("rem041")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("0.50000001"),mcdef).toString()).equals("0.5");
\r
2549 (new Test("rem042")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("0.500000001"),mcdef).toString()).equals("0.5");
\r
2550 (new Test("rem043")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("0.5000000001"),mcdef).toString()).equals("0");
\r
2551 (new Test("rem044")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("0.50000000001"),mcdef).toString()).equals("0");
\r
2552 (new Test("rem045")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("0.4999999"),mcdef).toString()).equals("1E-7");
\r
2553 (new Test("rem046")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("0.49999999"),mcdef).toString()).equals("1E-8");
\r
2554 (new Test("rem047")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("0.499999999"),mcdef).toString()).equals("1E-9");
\r
2555 (new Test("rem048")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("0.4999999999"),mcdef).toString()).equals("0");
\r
2556 (new Test("rem049")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("0.49999999999"),mcdef).toString()).equals("0");
\r
2558 (new Test("rem050")).ok=((new com.ibm.icu.math.BigDecimal("0.03")).remainder(new com.ibm.icu.math.BigDecimal("7"),mcdef).toString()).equals("0.03");
\r
2559 (new Test("rem051")).ok=((new com.ibm.icu.math.BigDecimal("5")).remainder(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("1");
\r
2560 (new Test("rem052")).ok=((new com.ibm.icu.math.BigDecimal("4.1")).remainder(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("0.1");
\r
2561 (new Test("rem053")).ok=((new com.ibm.icu.math.BigDecimal("4.01")).remainder(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("0.01");
\r
2562 (new Test("rem054")).ok=((new com.ibm.icu.math.BigDecimal("4.001")).remainder(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("0.001");
\r
2563 (new Test("rem055")).ok=((new com.ibm.icu.math.BigDecimal("4.0001")).remainder(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("0.0001");
\r
2564 (new Test("rem056")).ok=((new com.ibm.icu.math.BigDecimal("4.00001")).remainder(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("0.00001");
\r
2565 (new Test("rem057")).ok=((new com.ibm.icu.math.BigDecimal("4.000001")).remainder(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("0.000001");
\r
2566 (new Test("rem058")).ok=((new com.ibm.icu.math.BigDecimal("4.0000001")).remainder(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("1E-7");
\r
2568 (new Test("rem060")).ok=((new com.ibm.icu.math.BigDecimal("1.2")).remainder(new com.ibm.icu.math.BigDecimal("0.7345"),mcdef).toString()).equals("0.4655");
\r
2569 (new Test("rem061")).ok=((new com.ibm.icu.math.BigDecimal("0.8")).remainder(new com.ibm.icu.math.BigDecimal("12"),mcdef).toString()).equals("0.8");
\r
2570 (new Test("rem062")).ok=((new com.ibm.icu.math.BigDecimal("0.8")).remainder(new com.ibm.icu.math.BigDecimal("0.2"),mcdef).toString()).equals("0");
\r
2571 (new Test("rem063")).ok=((new com.ibm.icu.math.BigDecimal("0.8")).remainder(new com.ibm.icu.math.BigDecimal("0.3"),mcdef).toString()).equals("0.2");
\r
2572 (new Test("rem064")).ok=((new com.ibm.icu.math.BigDecimal("0.800")).remainder(new com.ibm.icu.math.BigDecimal("12"),mcdef).toString()).equals("0.800");
\r
2573 (new Test("rem065")).ok=((new com.ibm.icu.math.BigDecimal("0.800")).remainder(new com.ibm.icu.math.BigDecimal("1.7"),mcdef).toString()).equals("0.800");
\r
2574 (new Test("rem066")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).remainder(new com.ibm.icu.math.BigDecimal(2),mcdef).toString()).equals("0.400");
\r
2577 (new Test("rem071")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).remainder(new com.ibm.icu.math.BigDecimal(2),mc6).toString()).equals("0.400");
\r
2578 (new Test("rem072")).ok=((new com.ibm.icu.math.BigDecimal("12345678900000")).remainder(new com.ibm.icu.math.BigDecimal("12e+12"),mc3).toString()).equals("3E+11");
\r
2581 (new Test("rem101")).ok=((new com.ibm.icu.math.BigDecimal("1")).remainder(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("1");
\r
2582 (new Test("rem102")).ok=((new com.ibm.icu.math.BigDecimal("5")).remainder(new com.ibm.icu.math.BigDecimal("5")).toString()).equals("0");
\r
2583 (new Test("rem103")).ok=((new com.ibm.icu.math.BigDecimal("13")).remainder(new com.ibm.icu.math.BigDecimal("10")).toString()).equals("3");
\r
2584 (new Test("rem104")).ok=((new com.ibm.icu.math.BigDecimal("13")).remainder(new com.ibm.icu.math.BigDecimal("50")).toString()).equals("13");
\r
2585 (new Test("rem105")).ok=((new com.ibm.icu.math.BigDecimal("13")).remainder(new com.ibm.icu.math.BigDecimal("100")).toString()).equals("13");
\r
2586 (new Test("rem106")).ok=((new com.ibm.icu.math.BigDecimal("13")).remainder(new com.ibm.icu.math.BigDecimal("1000")).toString()).equals("13");
\r
2587 (new Test("rem107")).ok=((new com.ibm.icu.math.BigDecimal(".13")).remainder(one).toString()).equals("0.13");
\r
2588 (new Test("rem108")).ok=((new com.ibm.icu.math.BigDecimal("0.133")).remainder(one).toString()).equals("0.133");
\r
2589 (new Test("rem109")).ok=((new com.ibm.icu.math.BigDecimal("0.1033")).remainder(one).toString()).equals("0.1033");
\r
2590 (new Test("rem110")).ok=((new com.ibm.icu.math.BigDecimal("1.033")).remainder(one).toString()).equals("0.033");
\r
2591 (new Test("rem111")).ok=((new com.ibm.icu.math.BigDecimal("10.33")).remainder(one).toString()).equals("0.33");
\r
2592 (new Test("rem112")).ok=((new com.ibm.icu.math.BigDecimal("10.33")).remainder(com.ibm.icu.math.BigDecimal.TEN).toString()).equals("0.33");
\r
2593 (new Test("rem113")).ok=((new com.ibm.icu.math.BigDecimal("103.3")).remainder(com.ibm.icu.math.BigDecimal.ONE).toString()).equals("0.3");
\r
2594 (new Test("rem114")).ok=((new com.ibm.icu.math.BigDecimal("133")).remainder(com.ibm.icu.math.BigDecimal.TEN).toString()).equals("3");
\r
2595 (new Test("rem115")).ok=((new com.ibm.icu.math.BigDecimal("1033")).remainder(com.ibm.icu.math.BigDecimal.TEN).toString()).equals("3");
\r
2596 (new Test("rem116")).ok=((new com.ibm.icu.math.BigDecimal("1033")).remainder(new com.ibm.icu.math.BigDecimal(50)).toString()).equals("33");
\r
2597 (new Test("rem117")).ok=((new com.ibm.icu.math.BigDecimal("101.0")).remainder(new com.ibm.icu.math.BigDecimal(3)).toString()).equals("2.0");
\r
2598 (new Test("rem118")).ok=((new com.ibm.icu.math.BigDecimal("102.0")).remainder(new com.ibm.icu.math.BigDecimal(3)).toString()).equals("0");
\r
2599 (new Test("rem119")).ok=((new com.ibm.icu.math.BigDecimal("103.0")).remainder(new com.ibm.icu.math.BigDecimal(3)).toString()).equals("1.0");
\r
2600 (new Test("rem120")).ok=((new com.ibm.icu.math.BigDecimal("2.40")).remainder(one).toString()).equals("0.40");
\r
2601 (new Test("rem121")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).remainder(one).toString()).equals("0.400");
\r
2602 (new Test("rem122")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).remainder(one).toString()).equals("0.4");
\r
2603 (new Test("rem123")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).remainder(new com.ibm.icu.math.BigDecimal(2)).toString()).equals("0.4");
\r
2604 (new Test("rem124")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).remainder(new com.ibm.icu.math.BigDecimal(2)).toString()).equals("0.400");
\r
2605 (new Test("rem125")).ok=((new com.ibm.icu.math.BigDecimal("1")).remainder(new com.ibm.icu.math.BigDecimal("0.3")).toString()).equals("0.1");
\r
2606 (new Test("rem126")).ok=((new com.ibm.icu.math.BigDecimal("1")).remainder(new com.ibm.icu.math.BigDecimal("0.30")).toString()).equals("0.10");
\r
2607 (new Test("rem127")).ok=((new com.ibm.icu.math.BigDecimal("1")).remainder(new com.ibm.icu.math.BigDecimal("0.300")).toString()).equals("0.100");
\r
2608 (new Test("rem128")).ok=((new com.ibm.icu.math.BigDecimal("1")).remainder(new com.ibm.icu.math.BigDecimal("0.3000")).toString()).equals("0.1000");
\r
2609 (new Test("rem129")).ok=((new com.ibm.icu.math.BigDecimal("1.0")).remainder(new com.ibm.icu.math.BigDecimal("0.3")).toString()).equals("0.1");
\r
2610 (new Test("rem130")).ok=((new com.ibm.icu.math.BigDecimal("1.00")).remainder(new com.ibm.icu.math.BigDecimal("0.3")).toString()).equals("0.10");
\r
2611 (new Test("rem131")).ok=((new com.ibm.icu.math.BigDecimal("1.000")).remainder(new com.ibm.icu.math.BigDecimal("0.3")).toString()).equals("0.100");
\r
2612 (new Test("rem132")).ok=((new com.ibm.icu.math.BigDecimal("1.0000")).remainder(new com.ibm.icu.math.BigDecimal("0.3")).toString()).equals("0.1000");
\r
2613 (new Test("rem133")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("2.001")).toString()).equals("0.5");
\r
2614 (new Test("rem134")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("0.500000001")).toString()).equals("0.5");
\r
2615 (new Test("rem135")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("0.5000000001")).toString()).equals("0.5");
\r
2616 (new Test("rem136")).ok=((new com.ibm.icu.math.BigDecimal("0.03")).remainder(new com.ibm.icu.math.BigDecimal("7")).toString()).equals("0.03");
\r
2617 (new Test("rem137")).ok=((new com.ibm.icu.math.BigDecimal("5")).remainder(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("1");
\r
2618 (new Test("rem138")).ok=((new com.ibm.icu.math.BigDecimal("4.1")).remainder(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("0.1");
\r
2619 (new Test("rem139")).ok=((new com.ibm.icu.math.BigDecimal("4.01")).remainder(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("0.01");
\r
2620 (new Test("rem140")).ok=((new com.ibm.icu.math.BigDecimal("4.001")).remainder(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("0.001");
\r
2621 (new Test("rem141")).ok=((new com.ibm.icu.math.BigDecimal("4.0001")).remainder(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("0.0001");
\r
2622 (new Test("rem142")).ok=((new com.ibm.icu.math.BigDecimal("4.00001")).remainder(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("0.00001");
\r
2623 (new Test("rem143")).ok=((new com.ibm.icu.math.BigDecimal("4.000001")).remainder(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("0.000001");
\r
2624 (new Test("rem144")).ok=((new com.ibm.icu.math.BigDecimal("4.0000001")).remainder(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("0.0000001"); // 1E-7, plain
\r
2625 (new Test("rem145")).ok=((new com.ibm.icu.math.BigDecimal("1.2")).remainder(new com.ibm.icu.math.BigDecimal("0.7345")).toString()).equals("0.4655");
\r
2626 (new Test("rem146")).ok=((new com.ibm.icu.math.BigDecimal("0.8")).remainder(new com.ibm.icu.math.BigDecimal("12")).toString()).equals("0.8");
\r
2627 (new Test("rem147")).ok=((new com.ibm.icu.math.BigDecimal("0.8")).remainder(new com.ibm.icu.math.BigDecimal("0.2")).toString()).equals("0");
\r
2628 (new Test("rem148")).ok=((new com.ibm.icu.math.BigDecimal("0.8")).remainder(new com.ibm.icu.math.BigDecimal("0.3")).toString()).equals("0.2");
\r
2629 (new Test("rem149")).ok=((new com.ibm.icu.math.BigDecimal("0.800")).remainder(new com.ibm.icu.math.BigDecimal("12")).toString()).equals("0.800");
\r
2630 (new Test("rem150")).ok=((new com.ibm.icu.math.BigDecimal("0.800")).remainder(new com.ibm.icu.math.BigDecimal("1.7")).toString()).equals("0.800");
\r
2631 (new Test("rem151")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).remainder(new com.ibm.icu.math.BigDecimal(2),mcdef).toString()).equals("0.400");
\r
2635 ten.remainder((com.ibm.icu.math.BigDecimal) null);
\r
2637 } catch (java.lang.NullPointerException $79) {
\r
2640 (new Test("rem200")).ok = flag;
\r
2642 ten.remainder(ten, (com.ibm.icu.math.MathContext) null);
\r
2644 } catch (java.lang.NullPointerException $80) {
\r
2647 (new Test("rem201")).ok = flag;
\r
2650 com.ibm.icu.math.BigDecimal.ONE.remainder(tenlong, mcld);
\r
2652 } catch (java.lang.ArithmeticException $81) {
\r
2654 flag = (ae.getMessage()).equals("Too many digits:" + " "
\r
2655 + tenlong.toString());
\r
2656 }/* checkdigits */
\r
2657 (new Test("rem202")).ok = flag;
\r
2660 tenlong.remainder(one, mcld);
\r
2662 } catch (java.lang.ArithmeticException $82) {
\r
2664 flag = (ae.getMessage()).equals("Too many digits:" + " "
\r
2665 + tenlong.toString());
\r
2666 }/* checkdigits */
\r
2667 (new Test("rem203")).ok = flag;
\r
2669 summary("remainder");
\r
2672 /*--------------------------------------------------------------------*/
\r
2674 /** Test the {@link com.ibm.icu.math.BigDecimal#subtract} method. */
\r
2676 public void diagsubtract() {
\r
2677 boolean flag = false;
\r
2678 com.ibm.icu.math.BigDecimal alhs;
\r
2679 com.ibm.icu.math.BigDecimal arhs;
\r
2680 java.lang.ArithmeticException ae = null;
\r
2682 // [first group are 'quick confidence check']
\r
2683 (new Test("sub301")).ok=((new com.ibm.icu.math.BigDecimal(2)).subtract(new com.ibm.icu.math.BigDecimal(3),mcdef).toString()).equals("-1");
\r
2684 (new Test("sub302")).ok=((new com.ibm.icu.math.BigDecimal("5.75")).subtract(new com.ibm.icu.math.BigDecimal("3.3"),mcdef).toString()).equals("2.45");
\r
2685 (new Test("sub303")).ok=((new com.ibm.icu.math.BigDecimal("5")).subtract(new com.ibm.icu.math.BigDecimal("-3"),mcdef).toString()).equals("8");
\r
2686 (new Test("sub304")).ok=((new com.ibm.icu.math.BigDecimal("-5")).subtract(new com.ibm.icu.math.BigDecimal("-3"),mcdef).toString()).equals("-2");
\r
2687 (new Test("sub305")).ok=((new com.ibm.icu.math.BigDecimal("-7")).subtract(new com.ibm.icu.math.BigDecimal("2.5"),mcdef).toString()).equals("-9.5");
\r
2688 (new Test("sub306")).ok=((new com.ibm.icu.math.BigDecimal("0.7")).subtract(new com.ibm.icu.math.BigDecimal("0.3"),mcdef).toString()).equals("0.4");
\r
2689 (new Test("sub307")).ok=((new com.ibm.icu.math.BigDecimal("1.3")).subtract(new com.ibm.icu.math.BigDecimal("0.3"),mcdef).toString()).equals("1.0");
\r
2690 (new Test("sub308")).ok=((new com.ibm.icu.math.BigDecimal("1.25")).subtract(new com.ibm.icu.math.BigDecimal("1.25"),mcdef).toString()).equals("0");
\r
2691 (new Test("sub309")).ok=((new com.ibm.icu.math.BigDecimal("1.23456789")).subtract(new com.ibm.icu.math.BigDecimal("1.00000000"),mcdef).toString()).equals("0.23456789");
\r
2693 (new Test("sub310")).ok=((new com.ibm.icu.math.BigDecimal("1.23456789")).subtract(new com.ibm.icu.math.BigDecimal("1.00000089"),mcdef).toString()).equals("0.23456700");
\r
2695 (new Test("sub311")).ok=((new com.ibm.icu.math.BigDecimal("0.5555555559")).subtract(new com.ibm.icu.math.BigDecimal("0.0000000001"),mcdef).toString()).equals("0.555555556");
\r
2697 (new Test("sub312")).ok=((new com.ibm.icu.math.BigDecimal("0.5555555559")).subtract(new com.ibm.icu.math.BigDecimal("0.0000000005"),mcdef).toString()).equals("0.555555556");
\r
2699 (new Test("sub313")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444444")).subtract(new com.ibm.icu.math.BigDecimal("0.1111111111"),mcdef).toString()).equals("0.333333333");
\r
2701 (new Test("sub314")).ok=((new com.ibm.icu.math.BigDecimal("1.0000000000")).subtract(new com.ibm.icu.math.BigDecimal("0.00000001"),mcdef).toString()).equals("0.99999999");
\r
2703 (new Test("sub315")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444444999")).subtract(new com.ibm.icu.math.BigDecimal("0"),mcdef).toString()).equals("0.444444444");
\r
2705 (new Test("sub316")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444445000")).subtract(new com.ibm.icu.math.BigDecimal("0"),mcdef).toString()).equals("0.444444445");
\r
2708 (new Test("sub317")).ok=((new com.ibm.icu.math.BigDecimal("70")).subtract(new com.ibm.icu.math.BigDecimal("10000e+9"),mcdef).toString()).equals("-1.00000000E+13");
\r
2710 (new Test("sub318")).ok=((new com.ibm.icu.math.BigDecimal("700")).subtract(new com.ibm.icu.math.BigDecimal("10000e+9"),mcdef).toString()).equals("-1.00000000E+13");
\r
2712 (new Test("sub319")).ok=((new com.ibm.icu.math.BigDecimal("7000")).subtract(new com.ibm.icu.math.BigDecimal("10000e+9"),mcdef).toString()).equals("-1.00000000E+13");
\r
2714 (new Test("sub320")).ok=((new com.ibm.icu.math.BigDecimal("70000")).subtract(new com.ibm.icu.math.BigDecimal("10000e+9"),mcdef).toString()).equals("-9.9999999E+12");
\r
2716 (new Test("sub321")).ok=((new com.ibm.icu.math.BigDecimal("700000")).subtract(new com.ibm.icu.math.BigDecimal("10000e+9"),mcdef).toString()).equals("-9.9999993E+12");
\r
2719 (new Test("sub322")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("70"),mcdef).toString()).equals("1.00000000E+13");
\r
2721 (new Test("sub323")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("700"),mcdef).toString()).equals("1.00000000E+13");
\r
2723 (new Test("sub324")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("7000"),mcdef).toString()).equals("1.00000000E+13");
\r
2725 (new Test("sub325")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("70000"),mcdef).toString()).equals("9.9999999E+12");
\r
2727 (new Test("sub326")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("700000"),mcdef).toString()).equals("9.9999993E+12");
\r
2730 // [same with fixed point arithmetic]
\r
2731 (new Test("sub001")).ok=((new com.ibm.icu.math.BigDecimal(2)).subtract(new com.ibm.icu.math.BigDecimal(3)).toString()).equals("-1");
\r
2732 (new Test("sub002")).ok=((new com.ibm.icu.math.BigDecimal("5.75")).subtract(new com.ibm.icu.math.BigDecimal("3.3")).toString()).equals("2.45");
\r
2733 (new Test("sub003")).ok=((new com.ibm.icu.math.BigDecimal("5")).subtract(new com.ibm.icu.math.BigDecimal("-3")).toString()).equals("8");
\r
2734 (new Test("sub004")).ok=((new com.ibm.icu.math.BigDecimal("-5")).subtract(new com.ibm.icu.math.BigDecimal("-3")).toString()).equals("-2");
\r
2735 (new Test("sub005")).ok=((new com.ibm.icu.math.BigDecimal("-7")).subtract(new com.ibm.icu.math.BigDecimal("2.5")).toString()).equals("-9.5");
\r
2736 (new Test("sub006")).ok=((new com.ibm.icu.math.BigDecimal("0.7")).subtract(new com.ibm.icu.math.BigDecimal("0.3")).toString()).equals("0.4");
\r
2737 (new Test("sub007")).ok=((new com.ibm.icu.math.BigDecimal("1.3")).subtract(new com.ibm.icu.math.BigDecimal("0.3")).toString()).equals("1.0");
\r
2738 (new Test("sub008")).ok=((new com.ibm.icu.math.BigDecimal("1.25")).subtract(new com.ibm.icu.math.BigDecimal("1.25")).toString()).equals("0.00");
\r
2739 (new Test("sub009")).ok=((new com.ibm.icu.math.BigDecimal("0.02")).subtract(new com.ibm.icu.math.BigDecimal("0.02")).toString()).equals("0.00");
\r
2741 (new Test("sub010")).ok=((new com.ibm.icu.math.BigDecimal("1.23456789")).subtract(new com.ibm.icu.math.BigDecimal("1.00000000")).toString()).equals("0.23456789");
\r
2743 (new Test("sub011")).ok=((new com.ibm.icu.math.BigDecimal("1.23456789")).subtract(new com.ibm.icu.math.BigDecimal("1.00000089")).toString()).equals("0.23456700");
\r
2745 (new Test("sub012")).ok=((new com.ibm.icu.math.BigDecimal("0.5555555559")).subtract(new com.ibm.icu.math.BigDecimal("0.0000000001")).toString()).equals("0.5555555558");
\r
2747 (new Test("sub013")).ok=((new com.ibm.icu.math.BigDecimal("0.5555555559")).subtract(new com.ibm.icu.math.BigDecimal("0.0000000005")).toString()).equals("0.5555555554");
\r
2749 (new Test("sub014")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444444")).subtract(new com.ibm.icu.math.BigDecimal("0.1111111111")).toString()).equals("0.3333333333");
\r
2751 (new Test("sub015")).ok=((new com.ibm.icu.math.BigDecimal("1.0000000000")).subtract(new com.ibm.icu.math.BigDecimal("0.00000001")).toString()).equals("0.9999999900");
\r
2753 (new Test("sub016")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444444999")).subtract(new com.ibm.icu.math.BigDecimal("0")).toString()).equals("0.4444444444999");
\r
2755 (new Test("sub017")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444445000")).subtract(new com.ibm.icu.math.BigDecimal("0")).toString()).equals("0.4444444445000");
\r
2758 (new Test("sub018")).ok=((new com.ibm.icu.math.BigDecimal("70")).subtract(new com.ibm.icu.math.BigDecimal("10000e+9")).toString()).equals("-9999999999930");
\r
2760 (new Test("sub019")).ok=((new com.ibm.icu.math.BigDecimal("700")).subtract(new com.ibm.icu.math.BigDecimal("10000e+9")).toString()).equals("-9999999999300");
\r
2762 (new Test("sub020")).ok=((new com.ibm.icu.math.BigDecimal("7000")).subtract(new com.ibm.icu.math.BigDecimal("10000e+9")).toString()).equals("-9999999993000");
\r
2764 (new Test("sub021")).ok=((new com.ibm.icu.math.BigDecimal("70000")).subtract(new com.ibm.icu.math.BigDecimal("10000e+9")).toString()).equals("-9999999930000");
\r
2766 (new Test("sub022")).ok=((new com.ibm.icu.math.BigDecimal("700000")).subtract(new com.ibm.icu.math.BigDecimal("10000e+9")).toString()).equals("-9999999300000");
\r
2769 (new Test("sub023")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("70")).toString()).equals("9999999999930");
\r
2771 (new Test("sub024")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("700")).toString()).equals("9999999999300");
\r
2773 (new Test("sub025")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("7000")).toString()).equals("9999999993000");
\r
2775 (new Test("sub026")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("70000")).toString()).equals("9999999930000");
\r
2777 (new Test("sub027")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("700000")).toString()).equals("9999999300000");
\r
2780 (new Test("sub030")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("70000"),mcdef).toString()).equals("9.9999999E+12");
\r
2782 (new Test("sub031")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("70000"),mc6).toString()).equals("1.00000E+13");
\r
2785 // some of the next group are really constructor tests
\r
2786 (new Test("sub040")).ok=((new com.ibm.icu.math.BigDecimal("00.0")).subtract(new com.ibm.icu.math.BigDecimal("0.0")).toString()).equals("0.0");
\r
2787 (new Test("sub041")).ok=((new com.ibm.icu.math.BigDecimal("00.0")).subtract(new com.ibm.icu.math.BigDecimal("0.00")).toString()).equals("0.00");
\r
2788 (new Test("sub042")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).subtract(new com.ibm.icu.math.BigDecimal("00.0")).toString()).equals("0.00");
\r
2789 (new Test("sub043")).ok=((new com.ibm.icu.math.BigDecimal("00.0")).subtract(new com.ibm.icu.math.BigDecimal("0.00"),mcdef).toString()).equals("0");
\r
2790 (new Test("sub044")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).subtract(new com.ibm.icu.math.BigDecimal("00.0"),mcdef).toString()).equals("0");
\r
2791 (new Test("sub045")).ok=((new com.ibm.icu.math.BigDecimal("3")).subtract(new com.ibm.icu.math.BigDecimal(".3"),mcdef).toString()).equals("2.7");
\r
2792 (new Test("sub046")).ok=((new com.ibm.icu.math.BigDecimal("3.")).subtract(new com.ibm.icu.math.BigDecimal(".3"),mcdef).toString()).equals("2.7");
\r
2793 (new Test("sub047")).ok=((new com.ibm.icu.math.BigDecimal("3.0")).subtract(new com.ibm.icu.math.BigDecimal(".3"),mcdef).toString()).equals("2.7");
\r
2794 (new Test("sub048")).ok=((new com.ibm.icu.math.BigDecimal("3.00")).subtract(new com.ibm.icu.math.BigDecimal(".3"),mcdef).toString()).equals("2.70");
\r
2795 (new Test("sub049")).ok=((new com.ibm.icu.math.BigDecimal("3")).subtract(new com.ibm.icu.math.BigDecimal("3"),mcdef).toString()).equals("0");
\r
2796 (new Test("sub050")).ok=((new com.ibm.icu.math.BigDecimal("3")).subtract(new com.ibm.icu.math.BigDecimal("+3"),mcdef).toString()).equals("0");
\r
2797 (new Test("sub051")).ok=((new com.ibm.icu.math.BigDecimal("3")).subtract(new com.ibm.icu.math.BigDecimal("-3"),mcdef).toString()).equals("6");
\r
2798 (new Test("sub052")).ok=((new com.ibm.icu.math.BigDecimal("3")).subtract(new com.ibm.icu.math.BigDecimal(".3")).toString()).equals("2.7");
\r
2799 (new Test("sub053")).ok=((new com.ibm.icu.math.BigDecimal("3.")).subtract(new com.ibm.icu.math.BigDecimal(".3")).toString()).equals("2.7");
\r
2800 (new Test("sub054")).ok=((new com.ibm.icu.math.BigDecimal("3.0")).subtract(new com.ibm.icu.math.BigDecimal(".3")).toString()).equals("2.7");
\r
2801 (new Test("sub055")).ok=((new com.ibm.icu.math.BigDecimal("3.00")).subtract(new com.ibm.icu.math.BigDecimal(".3")).toString()).equals("2.70");
\r
2802 (new Test("sub056")).ok=((new com.ibm.icu.math.BigDecimal("3")).subtract(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("0");
\r
2803 (new Test("sub057")).ok=((new com.ibm.icu.math.BigDecimal("3")).subtract(new com.ibm.icu.math.BigDecimal("+3")).toString()).equals("0");
\r
2804 (new Test("sub058")).ok=((new com.ibm.icu.math.BigDecimal("3")).subtract(new com.ibm.icu.math.BigDecimal("-3")).toString()).equals("6");
\r
2806 // the above all from add; massaged and extended. Now some new ones...
\r
2807 // [particularly important for comparisons]
\r
2808 // NB: -1E-7 below were non-exponents pre-ANSI
\r
2809 (new Test("sub080")).ok=("-1E-7").equals((new com.ibm.icu.math.BigDecimal("10.23456784")).subtract(new com.ibm.icu.math.BigDecimal("10.23456789"),mcdef).toString());
\r
2810 (new Test("sub081")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456785")).subtract(new com.ibm.icu.math.BigDecimal("10.23456789"),mcdef).toString());
\r
2811 (new Test("sub082")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456786")).subtract(new com.ibm.icu.math.BigDecimal("10.23456789"),mcdef).toString());
\r
2812 (new Test("sub083")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456787")).subtract(new com.ibm.icu.math.BigDecimal("10.23456789"),mcdef).toString());
\r
2813 (new Test("sub084")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456788")).subtract(new com.ibm.icu.math.BigDecimal("10.23456789"),mcdef).toString());
\r
2814 (new Test("sub085")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456789")).subtract(new com.ibm.icu.math.BigDecimal("10.23456789"),mcdef).toString());
\r
2815 (new Test("sub086")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456790")).subtract(new com.ibm.icu.math.BigDecimal("10.23456789"),mcdef).toString());
\r
2816 (new Test("sub087")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456791")).subtract(new com.ibm.icu.math.BigDecimal("10.23456789"),mcdef).toString());
\r
2817 (new Test("sub088")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456792")).subtract(new com.ibm.icu.math.BigDecimal("10.23456789"),mcdef).toString());
\r
2818 (new Test("sub089")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456793")).subtract(new com.ibm.icu.math.BigDecimal("10.23456789"),mcdef).toString());
\r
2819 (new Test("sub090")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456794")).subtract(new com.ibm.icu.math.BigDecimal("10.23456789"),mcdef).toString());
\r
2820 (new Test("sub091")).ok=("-1E-7").equals((new com.ibm.icu.math.BigDecimal("10.23456781")).subtract(new com.ibm.icu.math.BigDecimal("10.23456786"),mcdef).toString());
\r
2821 (new Test("sub092")).ok=("-1E-7").equals((new com.ibm.icu.math.BigDecimal("10.23456782")).subtract(new com.ibm.icu.math.BigDecimal("10.23456786"),mcdef).toString());
\r
2822 (new Test("sub093")).ok=("-1E-7").equals((new com.ibm.icu.math.BigDecimal("10.23456783")).subtract(new com.ibm.icu.math.BigDecimal("10.23456786"),mcdef).toString());
\r
2823 (new Test("sub094")).ok=("-1E-7").equals((new com.ibm.icu.math.BigDecimal("10.23456784")).subtract(new com.ibm.icu.math.BigDecimal("10.23456786"),mcdef).toString());
\r
2824 (new Test("sub095")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456785")).subtract(new com.ibm.icu.math.BigDecimal("10.23456786"),mcdef).toString());
\r
2825 (new Test("sub096")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456786")).subtract(new com.ibm.icu.math.BigDecimal("10.23456786"),mcdef).toString());
\r
2826 (new Test("sub097")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456787")).subtract(new com.ibm.icu.math.BigDecimal("10.23456786"),mcdef).toString());
\r
2827 (new Test("sub098")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456788")).subtract(new com.ibm.icu.math.BigDecimal("10.23456786"),mcdef).toString());
\r
2828 (new Test("sub099")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456789")).subtract(new com.ibm.icu.math.BigDecimal("10.23456786"),mcdef).toString());
\r
2829 (new Test("sub100")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456790")).subtract(new com.ibm.icu.math.BigDecimal("10.23456786"),mcdef).toString());
\r
2830 (new Test("sub101")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456791")).subtract(new com.ibm.icu.math.BigDecimal("10.23456786"),mcdef).toString());
\r
2831 (new Test("sub102")).ok="0".equals(com.ibm.icu.math.BigDecimal.ONE.subtract(new com.ibm.icu.math.BigDecimal("0.999999999"),mcdef).toString());
\r
2832 (new Test("sub103")).ok="0".equals((new com.ibm.icu.math.BigDecimal("0.999999999")).subtract(com.ibm.icu.math.BigDecimal.ONE,mcdef).toString());
\r
2834 alhs = new com.ibm.icu.math.BigDecimal("12345678900000");
\r
2835 arhs = new com.ibm.icu.math.BigDecimal("9999999999999");
\r
2836 (new Test("sub110")).ok = (alhs.subtract(arhs, mc3).toString()).equals("2.3E+12");
\r
2837 (new Test("sub111")).ok = (arhs.subtract(alhs, mc3).toString()).equals("-2.3E+12");
\r
2838 (new Test("sub112")).ok = (alhs.subtract(arhs).toString()).equals("2345678900001");
\r
2839 (new Test("sub113")).ok = (arhs.subtract(alhs).toString()).equals("-2345678900001");
\r
2841 // additional scaled arithmetic tests [0.97 problem]
\r
2842 (new Test("sub120")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal(".1")).toString()).equals("-0.1");
\r
2843 (new Test("sub121")).ok=((new com.ibm.icu.math.BigDecimal("00")).subtract(new com.ibm.icu.math.BigDecimal(".97983")).toString()).equals("-0.97983");
\r
2844 (new Test("sub122")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal(".9")).toString()).equals("-0.9");
\r
2845 (new Test("sub123")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("0.102")).toString()).equals("-0.102");
\r
2846 (new Test("sub124")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal(".4")).toString()).equals("-0.4");
\r
2847 (new Test("sub125")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal(".307")).toString()).equals("-0.307");
\r
2848 (new Test("sub126")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal(".43822")).toString()).equals("-0.43822");
\r
2849 (new Test("sub127")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal(".911")).toString()).equals("-0.911");
\r
2850 (new Test("sub128")).ok=((new com.ibm.icu.math.BigDecimal(".0")).subtract(new com.ibm.icu.math.BigDecimal(".02")).toString()).equals("-0.02");
\r
2851 (new Test("sub129")).ok=((new com.ibm.icu.math.BigDecimal("00")).subtract(new com.ibm.icu.math.BigDecimal(".392")).toString()).equals("-0.392");
\r
2852 (new Test("sub130")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal(".26")).toString()).equals("-0.26");
\r
2853 (new Test("sub131")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("0.51")).toString()).equals("-0.51");
\r
2854 (new Test("sub132")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal(".2234")).toString()).equals("-0.2234");
\r
2855 (new Test("sub133")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal(".2")).toString()).equals("-0.2");
\r
2856 (new Test("sub134")).ok=((new com.ibm.icu.math.BigDecimal(".0")).subtract(new com.ibm.icu.math.BigDecimal(".0008")).toString()).equals("-0.0008");
\r
2858 (new Test("sub140")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-.1")).toString()).equals("0.1");
\r
2859 (new Test("sub141")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).subtract(new com.ibm.icu.math.BigDecimal("-.97983")).toString()).equals("0.97983");
\r
2860 (new Test("sub142")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-.9")).toString()).equals("0.9");
\r
2861 (new Test("sub143")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-0.102")).toString()).equals("0.102");
\r
2862 (new Test("sub144")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-.4")).toString()).equals("0.4");
\r
2863 (new Test("sub145")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-.307")).toString()).equals("0.307");
\r
2864 (new Test("sub146")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-.43822")).toString()).equals("0.43822");
\r
2865 (new Test("sub147")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-.911")).toString()).equals("0.911");
\r
2866 (new Test("sub148")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-.02")).toString()).equals("0.02");
\r
2867 (new Test("sub149")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).subtract(new com.ibm.icu.math.BigDecimal("-.392")).toString()).equals("0.392");
\r
2868 (new Test("sub150")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-.26")).toString()).equals("0.26");
\r
2869 (new Test("sub151")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-0.51")).toString()).equals("0.51");
\r
2870 (new Test("sub152")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-.2234")).toString()).equals("0.2234");
\r
2871 (new Test("sub153")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-.2")).toString()).equals("0.2");
\r
2872 (new Test("sub154")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-.0008")).toString()).equals("0.0008");
\r
2873 // negatives of same
\r
2874 (new Test("sub160")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-.1")).toString()).equals("0.1");
\r
2875 (new Test("sub161")).ok=((new com.ibm.icu.math.BigDecimal("00")).subtract(new com.ibm.icu.math.BigDecimal("-.97983")).toString()).equals("0.97983");
\r
2876 (new Test("sub162")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-.9")).toString()).equals("0.9");
\r
2877 (new Test("sub163")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-0.102")).toString()).equals("0.102");
\r
2878 (new Test("sub164")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-.4")).toString()).equals("0.4");
\r
2879 (new Test("sub165")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-.307")).toString()).equals("0.307");
\r
2880 (new Test("sub166")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-.43822")).toString()).equals("0.43822");
\r
2881 (new Test("sub167")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-.911")).toString()).equals("0.911");
\r
2882 (new Test("sub168")).ok=((new com.ibm.icu.math.BigDecimal(".0")).subtract(new com.ibm.icu.math.BigDecimal("-.02")).toString()).equals("0.02");
\r
2883 (new Test("sub169")).ok=((new com.ibm.icu.math.BigDecimal("00")).subtract(new com.ibm.icu.math.BigDecimal("-.392")).toString()).equals("0.392");
\r
2884 (new Test("sub170")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-.26")).toString()).equals("0.26");
\r
2885 (new Test("sub171")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-0.51")).toString()).equals("0.51");
\r
2886 (new Test("sub172")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-.2234")).toString()).equals("0.2234");
\r
2887 (new Test("sub173")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-.2")).toString()).equals("0.2");
\r
2888 (new Test("sub174")).ok=((new com.ibm.icu.math.BigDecimal(".0")).subtract(new com.ibm.icu.math.BigDecimal("-.0008")).toString()).equals("0.0008");
\r
2890 // more fixed, LHS swaps [really same as testcases under add]
\r
2891 (new Test("sub180")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-10")).subtract(zero).toString()).equals("-0.0000056267");
\r
2892 (new Test("sub181")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-5")).subtract(zero).toString()).equals("-0.56267");
\r
2893 (new Test("sub182")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-2")).subtract(zero).toString()).equals("-562.67");
\r
2894 (new Test("sub183")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-1")).subtract(zero).toString()).equals("-5626.7");
\r
2895 (new Test("sub185")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-0")).subtract(zero).toString()).equals("-56267");
\r
2898 ten.subtract((com.ibm.icu.math.BigDecimal) null);
\r
2900 } catch (java.lang.NullPointerException $83) {
\r
2903 (new Test("sub200")).ok = flag;
\r
2905 ten.subtract(ten, (com.ibm.icu.math.MathContext) null);
\r
2907 } catch (java.lang.NullPointerException $84) {
\r
2910 (new Test("sub201")).ok = flag;
\r
2913 com.ibm.icu.math.BigDecimal.ONE.subtract(tenlong, mcld);
\r
2915 } catch (java.lang.ArithmeticException $85) {
\r
2917 flag = (ae.getMessage()).equals("Too many digits:" + " "
\r
2918 + tenlong.toString());
\r
2919 }/* checkdigits */
\r
2920 (new Test("sub202")).ok = flag;
\r
2922 tenlong.subtract(com.ibm.icu.math.BigDecimal.ONE, mcld);
\r
2924 } catch (java.lang.ArithmeticException $86) {
\r
2926 flag = (ae.getMessage()).equals("Too many digits:" + " "
\r
2927 + tenlong.toString());
\r
2928 }/* checkdigits */
\r
2929 (new Test("sub203")).ok = flag;
\r
2930 summary("subtract");
\r
2933 /* ----------------------------------------------------------------- */
\r
2935 /* ----------------------------------------------------------------- */
\r
2936 /* Other methods */
\r
2937 /* ----------------------------------------------------------------- */
\r
2939 /** Test the <code>BigDecimal.byteValue()</code> method. */
\r
2941 public void diagbyteValue() {
\r
2942 boolean flag = false;
\r
2943 java.lang.String v = null;
\r
2944 java.lang.ArithmeticException ae = null;
\r
2945 java.lang.String badstrings[];
\r
2947 java.lang.String norm = null;
\r
2949 (new Test("byv001")).ok=((((byte)-128)))==((new com.ibm.icu.math.BigDecimal("-128")).byteValue());
\r
2950 (new Test("byv002")).ok=((0))==((new com.ibm.icu.math.BigDecimal("0")).byteValue());
\r
2951 (new Test("byv003")).ok=((1))==((new com.ibm.icu.math.BigDecimal("1")).byteValue());
\r
2952 (new Test("byv004")).ok=((99))==((new com.ibm.icu.math.BigDecimal("99")).byteValue());
\r
2953 (new Test("byv005")).ok=((127))==((new com.ibm.icu.math.BigDecimal("127")).byteValue());
\r
2954 (new Test("byv006")).ok=((-128))==((new com.ibm.icu.math.BigDecimal("128")).byteValue());
\r
2955 (new Test("byv007")).ok=((-127))==((new com.ibm.icu.math.BigDecimal("129")).byteValue());
\r
2956 (new Test("byv008")).ok=((127))==((new com.ibm.icu.math.BigDecimal("-129")).byteValue());
\r
2957 (new Test("byv009")).ok=((126))==((new com.ibm.icu.math.BigDecimal("-130")).byteValue());
\r
2958 (new Test("byv010")).ok=((bmax))==((new com.ibm.icu.math.BigDecimal(bmax)).byteValue());
\r
2959 (new Test("byv011")).ok=((bmin))==((new com.ibm.icu.math.BigDecimal(bmin)).byteValue());
\r
2960 (new Test("byv012")).ok=((bneg))==((new com.ibm.icu.math.BigDecimal(bneg)).byteValue());
\r
2961 (new Test("byv013")).ok=((bzer))==((new com.ibm.icu.math.BigDecimal(bzer)).byteValue());
\r
2962 (new Test("byv014")).ok=((bpos))==((new com.ibm.icu.math.BigDecimal(bpos)).byteValue());
\r
2963 (new Test("byv015")).ok=((bmin))==((new com.ibm.icu.math.BigDecimal(bmax+1)).byteValue());
\r
2964 (new Test("byv016")).ok=((bmax))==((new com.ibm.icu.math.BigDecimal(bmin-1)).byteValue());
\r
2966 (new Test("byv021")).ok=((((byte)-128)))==((new com.ibm.icu.math.BigDecimal("-128")).byteValueExact());
\r
2967 (new Test("byv022")).ok=((0))==((new com.ibm.icu.math.BigDecimal("0")).byteValueExact());
\r
2968 (new Test("byv023")).ok=((1))==((new com.ibm.icu.math.BigDecimal("1")).byteValueExact());
\r
2969 (new Test("byv024")).ok=((99))==((new com.ibm.icu.math.BigDecimal("99")).byteValueExact());
\r
2970 (new Test("byv025")).ok=((127))==((new com.ibm.icu.math.BigDecimal("127")).byteValueExact());
\r
2971 (new Test("byv026")).ok=((bmax))==((new com.ibm.icu.math.BigDecimal(bmax)).byteValueExact());
\r
2972 (new Test("byv027")).ok=((bmin))==((new com.ibm.icu.math.BigDecimal(bmin)).byteValueExact());
\r
2973 (new Test("byv028")).ok=((bneg))==((new com.ibm.icu.math.BigDecimal(bneg)).byteValueExact());
\r
2974 (new Test("byv029")).ok=((bzer))==((new com.ibm.icu.math.BigDecimal(bzer)).byteValueExact());
\r
2975 (new Test("byv030")).ok=((bpos))==((new com.ibm.icu.math.BigDecimal(bpos)).byteValueExact());
\r
2978 (new com.ibm.icu.math.BigDecimal(v)).byteValueExact();
\r
2980 } catch (java.lang.ArithmeticException $87) {
\r
2982 flag = (ae.getMessage()).equals("Conversion overflow:" + " " + v);
\r
2984 (new Test("byv100")).ok = flag;
\r
2987 (new com.ibm.icu.math.BigDecimal(v)).byteValueExact();
\r
2989 } catch (java.lang.ArithmeticException $88) {
\r
2991 flag = (ae.getMessage()).equals("Conversion overflow:" + " " + v);
\r
2993 (new Test("byv101")).ok = flag;
\r
2996 (new com.ibm.icu.math.BigDecimal(v)).byteValueExact();
\r
2998 } catch (java.lang.ArithmeticException $89) {
\r
3000 flag = (ae.getMessage()).equals("Decimal part non-zero:" + " " + v);
\r
3002 (new Test("byv102")).ok = flag;
\r
3004 badstrings = new java.lang.String[] {
\r
3006 (new com.ibm.icu.math.BigDecimal(bmax)).add(one).toString(),
\r
3007 (new com.ibm.icu.math.BigDecimal(bmin)).subtract(one)
\r
3027 (new com.ibm.icu.math.BigDecimal(bmin)).multiply(two)
\r
3029 (new com.ibm.icu.math.BigDecimal(bmax)).multiply(two)
\r
3031 (new com.ibm.icu.math.BigDecimal(bmin)).multiply(ten)
\r
3033 (new com.ibm.icu.math.BigDecimal(bmax)).multiply(ten)
\r
3034 .toString(), "-1234" }; // 220
\r
3061 int $90 = badstrings.length;
\r
3063 for (; $90 > 0; $90--, i++) {
\r
3065 v = badstrings[i];
\r
3066 (new com.ibm.icu.math.BigDecimal(v)).byteValueExact();
\r
3068 } catch (java.lang.ArithmeticException $91) {
\r
3070 norm = (new com.ibm.icu.math.BigDecimal(v)).toString();
\r
3071 flag = (ae.getMessage()).equals("Conversion overflow:"
\r
3074 (new Test("byv" + (220 + i))).ok = flag;
\r
3078 summary("byteValue+");
\r
3081 /* ----------------------------------------------------------------- */
\r
3084 * Test the {@link com.ibm.icu.math.BigDecimal#compareTo(java.lang.Object)}
\r
3088 public void diagcomparetoObj() {
\r
3089 // boolean flag = false;
\r
3090 // com.ibm.icu.math.BigDecimal d;
\r
3091 // com.ibm.icu.math.BigDecimal long1;
\r
3092 // com.ibm.icu.math.BigDecimal long2;
\r
3094 // d = new com.ibm.icu.math.BigDecimal(17);
\r
3095 // (new Test("cto001")).ok = (d
\r
3096 // .compareTo((java.lang.Object) (new com.ibm.icu.math.BigDecimal(
\r
3097 // 66)))) == (-1);
\r
3098 // (new Test("cto002")).ok = (d
\r
3099 // .compareTo((java.lang.Object) ((new com.ibm.icu.math.BigDecimal(
\r
3100 // 10)).add(new com.ibm.icu.math.BigDecimal(7))))) == 0;
\r
3101 // (new Test("cto003")).ok = (d
\r
3102 // .compareTo((java.lang.Object) (new com.ibm.icu.math.BigDecimal(
\r
3104 // long1 = new com.ibm.icu.math.BigDecimal("12345678903");
\r
3105 // long2 = new com.ibm.icu.math.BigDecimal("12345678900");
\r
3106 // (new Test("cto004")).ok = (long1.compareTo((java.lang.Object) long2)) == 1;
\r
3107 // (new Test("cto005")).ok = (long2.compareTo((java.lang.Object) long1)) == (-1);
\r
3108 // (new Test("cto006")).ok = (long2.compareTo((java.lang.Object) long2)) == 0;
\r
3110 // d.compareTo((java.lang.Object) null);
\r
3112 // } catch (java.lang.NullPointerException $92) {
\r
3113 // flag = true; // should get here
\r
3115 // (new Test("cto101")).ok = flag;
\r
3117 // d.compareTo((java.lang.Object) "foo");
\r
3119 // } catch (java.lang.ClassCastException $93) {
\r
3120 // flag = true; // should get here
\r
3122 // (new Test("cto102")).ok = flag;
\r
3123 // summary("compareTo(Obj)");
\r
3126 /* ----------------------------------------------------------------- */
\r
3128 /** Test the {@link com.ibm.icu.math.BigDecimal#doubleValue} method. */
\r
3130 public void diagdoublevalue() {
\r
3131 java.lang.String val;
\r
3132 // 1999.03.07 Infinities no longer errors
\r
3134 (new Test("dov001")).ok = ((new com.ibm.icu.math.BigDecimal(val)).doubleValue()) == ((new java.lang.Double(val)).doubleValue());
\r
3136 (new Test("dov002")).ok = ((new com.ibm.icu.math.BigDecimal(val)).doubleValue()) == ((new java.lang.Double(val)).doubleValue());
\r
3138 (new Test("dov003")).ok = ((new com.ibm.icu.math.BigDecimal(val)).doubleValue()) == ((new java.lang.Double(val)).doubleValue());
\r
3140 (new Test("dov004")).ok = ((new com.ibm.icu.math.BigDecimal(val)).doubleValue()) == ((new java.lang.Double(val)).doubleValue());
\r
3142 (new Test("dov005")).ok = ((new com.ibm.icu.math.BigDecimal(val)).doubleValue()) == ((new java.lang.Double(val)).doubleValue());
\r
3144 (new Test("dov006")).ok = ((new com.ibm.icu.math.BigDecimal(val)).doubleValue()) == java.lang.Double.POSITIVE_INFINITY;
\r
3146 (new Test("dov007")).ok = ((new com.ibm.icu.math.BigDecimal(val)).doubleValue()) == java.lang.Double.NEGATIVE_INFINITY;
\r
3147 summary("doubleValue");
\r
3150 /* ----------------------------------------------------------------- */
\r
3152 /** Test the {@link com.ibm.icu.math.BigDecimal#equals} method. */
\r
3154 public void diagequals() {
\r
3155 com.ibm.icu.math.BigDecimal d;
\r
3156 d = new com.ibm.icu.math.BigDecimal(17);
\r
3157 (new Test("equ001")).ok = (!(d.equals((java.lang.Object) null)));
\r
3158 (new Test("equ002")).ok = (!(d.equals((java.lang.Object) "foo")));
\r
3159 (new Test("equ003")).ok = (!(d
\r
3160 .equals((java.lang.Object) (new com.ibm.icu.math.BigDecimal(66)))));
\r
3161 (new Test("equ004")).ok = d.equals((java.lang.Object) d);
\r
3162 (new Test("equ005")).ok = d
\r
3163 .equals((java.lang.Object) ((new com.ibm.icu.math.BigDecimal(10))
\r
3164 .add(new com.ibm.icu.math.BigDecimal(7))));
\r
3165 summary("equals");
\r
3168 /* ----------------------------------------------------------------- */
\r
3170 /** Test the {@link com.ibm.icu.math.BigDecimal#floatValue} method. */
\r
3172 public void diagfloatvalue() {
\r
3173 java.lang.String val;
\r
3174 // 1999.03.07 Infinities no longer errors
\r
3176 (new Test("flv001")).ok = ((new com.ibm.icu.math.BigDecimal(val)).floatValue()) == ((new java.lang.Float(val)).floatValue());
\r
3178 (new Test("flv002")).ok = ((new com.ibm.icu.math.BigDecimal(val)).floatValue()) == ((new java.lang.Float(val)).floatValue());
\r
3180 (new Test("flv003")).ok = ((new com.ibm.icu.math.BigDecimal(val)).floatValue()) == ((new java.lang.Float(val)).floatValue());
\r
3182 (new Test("flv004")).ok = ((new com.ibm.icu.math.BigDecimal(val)).floatValue()) == ((new java.lang.Float(val)).floatValue());
\r
3184 (new Test("flv005")).ok = ((new com.ibm.icu.math.BigDecimal(val)).floatValue()) == ((new java.lang.Float(val)).floatValue());
\r
3186 (new Test("flv006")).ok = ((new com.ibm.icu.math.BigDecimal(val)).floatValue()) == java.lang.Float.POSITIVE_INFINITY;
\r
3188 (new Test("flv007")).ok = ((new com.ibm.icu.math.BigDecimal(val)).floatValue()) == java.lang.Float.NEGATIVE_INFINITY;
\r
3190 (new Test("flv008")).ok = ((new com.ibm.icu.math.BigDecimal(val)).floatValue()) == java.lang.Float.POSITIVE_INFINITY;
\r
3192 (new Test("flv009")).ok = ((new com.ibm.icu.math.BigDecimal(val)).floatValue()) == java.lang.Float.NEGATIVE_INFINITY;
\r
3193 summary("floatValue");
\r
3196 /* ----------------------------------------------------------------- */
\r
3198 /** Test the {@link com.ibm.icu.math.BigDecimal#format} method. */
\r
3200 public void diagformat() {
\r
3201 boolean flag = false;
\r
3204 com.ibm.icu.math.BigDecimal d04;
\r
3205 com.ibm.icu.math.BigDecimal d05;
\r
3206 com.ibm.icu.math.BigDecimal d06;
\r
3207 com.ibm.icu.math.BigDecimal d15;
\r
3208 java.lang.IllegalArgumentException iae = null;
\r
3209 com.ibm.icu.math.BigDecimal d050;
\r
3210 com.ibm.icu.math.BigDecimal d150;
\r
3211 com.ibm.icu.math.BigDecimal m050;
\r
3212 com.ibm.icu.math.BigDecimal m150;
\r
3213 com.ibm.icu.math.BigDecimal d051;
\r
3214 com.ibm.icu.math.BigDecimal d151;
\r
3215 com.ibm.icu.math.BigDecimal d000;
\r
3216 com.ibm.icu.math.BigDecimal d500;
\r
3217 java.lang.ArithmeticException ae = null;
\r
3218 // 1999.02.09 now only two signatures for format(), so some tests below
\r
3219 // may now be redundant
\r
3221 (new Test("for001")).ok=((new com.ibm.icu.math.BigDecimal("12.3")).format(-1,-1)).equals("12.3");
\r
3222 (new Test("for002")).ok=((new com.ibm.icu.math.BigDecimal("-12.73")).format(-1,-1)).equals("-12.73");
\r
3223 (new Test("for003")).ok=((new com.ibm.icu.math.BigDecimal("0.000")).format(-1,-1)).equals("0.000");
\r
3224 (new Test("for004")).ok=((new com.ibm.icu.math.BigDecimal("3E+3")).format(-1,-1)).equals("3000");
\r
3225 (new Test("for005")).ok=((new com.ibm.icu.math.BigDecimal("3")).format(4,-1)).equals(" 3");
\r
3226 (new Test("for006")).ok=((new com.ibm.icu.math.BigDecimal("1.73")).format(4,0)).equals(" 2");
\r
3227 (new Test("for007")).ok=((new com.ibm.icu.math.BigDecimal("1.73")).format(4,1)).equals(" 1.7");
\r
3228 (new Test("for008")).ok=((new com.ibm.icu.math.BigDecimal("1.75")).format(4,1)).equals(" 1.8");
\r
3229 (new Test("for009")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).format(4,1)).equals(" 0.5");
\r
3230 (new Test("for010")).ok=((new com.ibm.icu.math.BigDecimal("0.05")).format(4,1)).equals(" 0.1");
\r
3231 (new Test("for011")).ok=((new com.ibm.icu.math.BigDecimal("0.04")).format(4,1)).equals(" 0.0");
\r
3232 (new Test("for012")).ok=((new com.ibm.icu.math.BigDecimal("0")).format(4,0)).equals(" 0");
\r
3233 (new Test("for013")).ok=((new com.ibm.icu.math.BigDecimal("0")).format(4,1)).equals(" 0.0");
\r
3234 (new Test("for014")).ok=((new com.ibm.icu.math.BigDecimal("0")).format(4,2)).equals(" 0.00");
\r
3235 (new Test("for015")).ok=((new com.ibm.icu.math.BigDecimal("0")).format(4,3)).equals(" 0.000");
\r
3236 (new Test("for016")).ok=((new com.ibm.icu.math.BigDecimal("0")).format(4,4)).equals(" 0.0000");
\r
3237 (new Test("for017")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).format(4,0)).equals(" 0");
\r
3238 (new Test("for018")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).format(4,1)).equals(" 0.0");
\r
3239 (new Test("for019")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).format(4,2)).equals(" 0.01");
\r
3240 (new Test("for020")).ok=((new com.ibm.icu.math.BigDecimal("0.004")).format(4,2)).equals(" 0.00");
\r
3241 (new Test("for021")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).format(4,3)).equals(" 0.005");
\r
3242 (new Test("for022")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).format(4,4)).equals(" 0.0050");
\r
3244 (new Test("for023")).ok=((new com.ibm.icu.math.BigDecimal("1.73")).format(4,2)).equals(" 1.73");
\r
3245 (new Test("for024")).ok=((new com.ibm.icu.math.BigDecimal("1.73")).format(4,3)).equals(" 1.730");
\r
3246 (new Test("for025")).ok=((new com.ibm.icu.math.BigDecimal("-.76")).format(4,1)).equals(" -0.8");
\r
3247 (new Test("for026")).ok=((new com.ibm.icu.math.BigDecimal("-12.73")).format(-1,4)).equals("-12.7300");
\r
3249 (new Test("for027")).ok=((new com.ibm.icu.math.BigDecimal("3.03")).format(4,-1)).equals(" 3.03");
\r
3250 (new Test("for028")).ok=((new com.ibm.icu.math.BigDecimal("3.03")).format(4,1)).equals(" 3.0");
\r
3251 (new Test("for029")).ok=((new com.ibm.icu.math.BigDecimal("3.03")).format(4,-1,3,-1,-1,-1)).equals(" 3.03 ");
\r
3252 (new Test("for030")).ok=((new com.ibm.icu.math.BigDecimal("3.03")).format(-1,-1,3,-1,-1,-1)).equals("3.03 ");
\r
3253 (new Test("for031")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,-1,-1,4,-1,-1)).equals("1.234573E+4");
\r
3254 (new Test("for032")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,-1,-1,5,-1,-1)).equals("12345.73");
\r
3255 (new Test("for033")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,-1,-1,6,-1,-1)).equals("12345.73");
\r
3257 (new Test("for034")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,8,-1,3,-1,-1)).equals("1.23457300E+4");
\r
3258 (new Test("for035")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,7,-1,3,-1,-1)).equals("1.2345730E+4");
\r
3259 (new Test("for036")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,6,-1,3,-1,-1)).equals("1.234573E+4");
\r
3260 (new Test("for037")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,5,-1,3,-1,-1)).equals("1.23457E+4");
\r
3261 (new Test("for038")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,4,-1,3,-1,-1)).equals("1.2346E+4");
\r
3262 (new Test("for039")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,3,-1,3,-1,-1)).equals("1.235E+4");
\r
3263 (new Test("for040")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,2,-1,3,-1,-1)).equals("1.23E+4");
\r
3264 (new Test("for041")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,1,-1,3,-1,-1)).equals("1.2E+4");
\r
3265 (new Test("for042")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,0,-1,3,-1,-1)).equals("1E+4");
\r
3267 (new Test("for043")).ok=((new com.ibm.icu.math.BigDecimal("99999.99")).format(-1,6,-1,3,-1,-1)).equals("9.999999E+4");
\r
3268 (new Test("for044")).ok=((new com.ibm.icu.math.BigDecimal("99999.99")).format(-1,5,-1,3,-1,-1)).equals("1.00000E+5");
\r
3269 (new Test("for045")).ok=((new com.ibm.icu.math.BigDecimal("99999.99")).format(-1,2,-1,3,-1,-1)).equals("1.00E+5");
\r
3270 (new Test("for046")).ok=((new com.ibm.icu.math.BigDecimal("99999.99")).format(-1,0,-1,3,-1,-1)).equals("1E+5");
\r
3271 (new Test("for047")).ok=((new com.ibm.icu.math.BigDecimal("99999.99")).format(3,0,-1,3,-1,-1)).equals(" 1E+5");
\r
3273 (new Test("for048")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,-1,2,2,-1,-1)).equals("1.234573E+04");
\r
3274 (new Test("for049")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,3,-1,0,-1,-1)).equals("1.235E+4");
\r
3275 (new Test("for050")).ok=((new com.ibm.icu.math.BigDecimal("1.234573")).format(-1,3,-1,0,-1,-1)).equals("1.235");
\r
3276 (new Test("for051")).ok=((new com.ibm.icu.math.BigDecimal("123.45")).format(-1,3,2,0,-1,-1)).equals("1.235E+02");
\r
3278 (new Test("for052")).ok=((new com.ibm.icu.math.BigDecimal("0.444")).format(-1,0)).equals("0");
\r
3279 (new Test("for053")).ok=((new com.ibm.icu.math.BigDecimal("-0.444")).format(-1,0)).equals("0");
\r
3280 (new Test("for054")).ok=((new com.ibm.icu.math.BigDecimal("0.4")).format(-1,0)).equals("0");
\r
3281 (new Test("for055")).ok=((new com.ibm.icu.math.BigDecimal("-0.4")).format(-1,0)).equals("0");
\r
3283 eng = com.ibm.icu.math.MathContext.ENGINEERING;
\r
3284 sci = com.ibm.icu.math.MathContext.SCIENTIFIC;
\r
3285 (new Test("for060")).ok=((new com.ibm.icu.math.BigDecimal("1234.5")).format(-1,3,2,0,eng,-1)).equals("1.235E+03");
\r
3286 (new Test("for061")).ok=((new com.ibm.icu.math.BigDecimal("12345")).format(-1,3,3,0,eng,-1)).equals("12.345E+003");
\r
3287 (new Test("for062")).ok=((new com.ibm.icu.math.BigDecimal("12345")).format(-1,3,3,0,sci,-1)).equals("1.235E+004");
\r
3288 (new Test("for063")).ok=((new com.ibm.icu.math.BigDecimal("1234.5")).format(4,3,2,0,eng,-1)).equals(" 1.235E+03");
\r
3289 (new Test("for064")).ok=((new com.ibm.icu.math.BigDecimal("12345")).format(5,3,3,0,eng,-1)).equals(" 12.345E+003");
\r
3290 (new Test("for065")).ok=((new com.ibm.icu.math.BigDecimal("12345")).format(6,3,3,0,sci,-1)).equals(" 1.235E+004");
\r
3292 (new Test("for066")).ok=((new com.ibm.icu.math.BigDecimal("1.2345")).format(-1,3,2,0,-1,-1)).equals("1.235 ");
\r
3293 (new Test("for067")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,-1,3,6,-1,-1)).equals("12345.73 ");
\r
3294 (new Test("for068")).ok=((new com.ibm.icu.math.BigDecimal("12345e+5")).format(-1,0)).equals("1234500000");
\r
3295 (new Test("for069")).ok=((new com.ibm.icu.math.BigDecimal("12345e+5")).format(-1,1)).equals("1234500000.0");
\r
3296 (new Test("for070")).ok=((new com.ibm.icu.math.BigDecimal("12345e+5")).format(-1,2)).equals("1234500000.00");
\r
3297 (new Test("for071")).ok=((new com.ibm.icu.math.BigDecimal("12345e+5")).format(-1,3)).equals("1234500000.000");
\r
3298 (new Test("for072")).ok=((new com.ibm.icu.math.BigDecimal("12345e+5")).format(-1,4)).equals("1234500000.0000");
\r
3300 // some from ANSI Dallas [Nov 1998]
\r
3301 (new Test("for073")).ok=((new com.ibm.icu.math.BigDecimal("99.999")).format(-1,2,-1,2,-1,-1)).equals("100.00");
\r
3302 (new Test("for074")).ok=((new com.ibm.icu.math.BigDecimal("0.99999")).format(-1,4,2,2,-1,-1)).equals("1.0000 ");
\r
3304 // try some rounding modes [default ROUND_HALF_UP widely tested above]
\r
3305 // the first few also tests that defaults are accepted for the others
\r
3306 d04 = new com.ibm.icu.math.BigDecimal("0.04");
\r
3307 d05 = new com.ibm.icu.math.BigDecimal("0.05");
\r
3308 d06 = new com.ibm.icu.math.BigDecimal("0.06");
\r
3309 d15 = new com.ibm.icu.math.BigDecimal("0.15");
\r
3310 (new Test("for080")).ok = (d05.format(-1, 1)).equals("0.1");
\r
3311 (new Test("for081")).ok = (d05.format(-1, 1, -1, -1, -1,
\r
3312 com.ibm.icu.math.MathContext.ROUND_HALF_UP)).equals("0.1");
\r
3313 (new Test("for082")).ok = (d05.format(-1, 1, -1, -1, -1, -1))
\r
3315 (new Test("for083")).ok = (d05.format(-1, -1, -1, -1, -1, -1))
\r
3317 (new Test("for084")).ok = (d05.format(-1, -1)).equals("0.05");
\r
3319 d05.format(-1, -1, -1, -1, -1, 30); // bad mode
\r
3320 flag = false; // shouldn't get here
\r
3321 } catch (java.lang.IllegalArgumentException $94) {
\r
3323 flag = (iae.getMessage()).equals("Bad argument 6 to format: 30");
\r
3325 (new Test("for085")).ok = flag;
\r
3327 (new Test("for090")).ok=(d04.format(-1,1)).equals("0.0");
\r
3328 (new Test("for091")).ok=(d06.format(-1,1)).equals("0.1");
\r
3329 (new Test("for092")).ok=(d04.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN)).equals("0.0");
\r
3330 (new Test("for093")).ok=(d05.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN)).equals("0.0");
\r
3331 (new Test("for094")).ok=(d06.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN)).equals("0.1");
\r
3333 (new Test("for095")).ok=(d04.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN)).equals("0.0");
\r
3334 (new Test("for096")).ok=(d05.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN)).equals("0.0");
\r
3335 (new Test("for097")).ok=(d06.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN)).equals("0.1");
\r
3336 (new Test("for098")).ok=(d15.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN)).equals("0.2");
\r
3337 d050 = new com.ibm.icu.math.BigDecimal("0.050");
\r
3338 d150 = new com.ibm.icu.math.BigDecimal("0.150");
\r
3339 (new Test("for099")).ok=(d050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN)).equals("0.0");
\r
3340 (new Test("for100")).ok=(d150.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN)).equals("0.2");
\r
3341 m050 = new com.ibm.icu.math.BigDecimal("-0.050");
\r
3342 m150 = new com.ibm.icu.math.BigDecimal("-0.150");
\r
3343 (new Test("for101")).ok=(m050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN)).equals("0.0");
\r
3344 (new Test("for102")).ok=(m150.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN)).equals("-0.2");
\r
3345 d051 = new com.ibm.icu.math.BigDecimal("0.051");
\r
3346 d151 = new com.ibm.icu.math.BigDecimal("0.151");
\r
3347 (new Test("for103")).ok=(d051.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN)).equals("0.1");
\r
3348 (new Test("for104")).ok=(d151.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN)).equals("0.2");
\r
3350 (new Test("for105")).ok=(m050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_CEILING)).equals("0.0");
\r
3351 (new Test("for106")).ok=(m150.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_CEILING)).equals("-0.1");
\r
3352 (new Test("for107")).ok=(d050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_CEILING)).equals("0.1");
\r
3353 (new Test("for108")).ok=(d150.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_CEILING)).equals("0.2");
\r
3355 (new Test("for109")).ok=(m050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_FLOOR)).equals("-0.1");
\r
3356 (new Test("for110")).ok=(m150.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_FLOOR)).equals("-0.2");
\r
3357 (new Test("for111")).ok=(d050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_FLOOR)).equals("0.0");
\r
3358 (new Test("for112")).ok=(d150.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_FLOOR)).equals("0.1");
\r
3360 (new Test("for113")).ok=(m050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UP)).equals("-0.1");
\r
3361 (new Test("for114")).ok=(m150.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UP)).equals("-0.2");
\r
3362 (new Test("for115")).ok=(d050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UP)).equals("0.1");
\r
3363 (new Test("for116")).ok=(d150.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UP)).equals("0.2");
\r
3365 (new Test("for117")).ok=(m050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_DOWN)).equals("0.0");
\r
3366 (new Test("for118")).ok=(m150.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_DOWN)).equals("-0.1");
\r
3367 (new Test("for119")).ok=(d050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_DOWN)).equals("0.0");
\r
3368 (new Test("for120")).ok=(d150.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_DOWN)).equals("0.1");
\r
3370 d000 = new com.ibm.icu.math.BigDecimal("0.000");
\r
3371 d500 = new com.ibm.icu.math.BigDecimal("0.500");
\r
3372 (new Test("for121")).ok=(d000.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY)).equals("0.0");
\r
3373 (new Test("for122")).ok=(d000.format(-1,2,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY)).equals("0.00");
\r
3374 (new Test("for123")).ok=(d000.format(-1,3,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY)).equals("0.000");
\r
3375 try { // this should trap..
\r
3376 d050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY);
\r
3378 } catch (java.lang.ArithmeticException $95) {
\r
3380 flag = (ae.getMessage()).equals("Rounding necessary");
\r
3382 (new Test("for124")).ok=flag;
\r
3383 (new Test("for125")).ok=(d050.format(-1,2,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY)).equals("0.05");
\r
3384 (new Test("for126")).ok=(d050.format(-1,3,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY)).equals("0.050");
\r
3385 (new Test("for127")).ok=(d500.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY)).equals("0.5");
\r
3386 (new Test("for128")).ok=(d500.format(-1,2,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY)).equals("0.50");
\r
3387 (new Test("for129")).ok=(d500.format(-1,3,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY)).equals("0.500");
\r
3391 d050.format(-2, -1, -1, -1, -1, -1);
\r
3393 } catch (java.lang.IllegalArgumentException $96) {
\r
3396 (new Test("for131")).ok = flag;
\r
3398 d050.format(-1, -2, -1, -1, -1, -1);
\r
3400 } catch (java.lang.IllegalArgumentException $97) {
\r
3403 (new Test("for132")).ok = flag;
\r
3405 d050.format(-1, -1, -2, -1, -1, -1);
\r
3407 } catch (java.lang.IllegalArgumentException $98) {
\r
3410 (new Test("for133")).ok = flag;
\r
3412 d050.format(-1, -1, -1, -2, -1, -1);
\r
3414 } catch (java.lang.IllegalArgumentException $99) {
\r
3417 (new Test("for134")).ok = flag;
\r
3419 d050.format(-1, -1, -1, -1, -2, -1);
\r
3421 } catch (java.lang.IllegalArgumentException $100) {
\r
3424 (new Test("for135")).ok = flag;
\r
3426 d050.format(-1, -1, -1, -1, -1, -2);
\r
3428 } catch (java.lang.IllegalArgumentException $101) {
\r
3431 (new Test("for136")).ok = flag;
\r
3433 summary("format");
\r
3436 /* ----------------------------------------------------------------- */
\r
3438 /** Test the {@link com.ibm.icu.math.BigDecimal#hashCode} method. */
\r
3440 public void diaghashcode() {
\r
3441 java.lang.String hs;
\r
3442 com.ibm.icu.math.BigDecimal d;
\r
3444 d = new com.ibm.icu.math.BigDecimal(hs);
\r
3445 (new Test("has001")).ok = (d.hashCode()) == (hs.hashCode());
\r
3446 hs = "1.265E+200";
\r
3447 d = new com.ibm.icu.math.BigDecimal(hs);
\r
3448 (new Test("has002")).ok = (d.hashCode()) == (hs.hashCode());
\r
3449 hs = "126.5E+200";
\r
3450 d = new com.ibm.icu.math.BigDecimal(hs);
\r
3451 (new Test("has003")).ok = (d.hashCode()) != (hs.hashCode());
\r
3452 summary("hashCode");
\r
3455 /* ----------------------------------------------------------------- */
\r
3457 /** Test the {@link com.ibm.icu.math.BigDecimal#intValue} method. */
\r
3459 public void diagintvalue() {
\r
3460 boolean flag = false;
\r
3461 java.lang.String v = null;
\r
3462 java.lang.ArithmeticException ae = null;
\r
3463 java.lang.String badstrings[];
\r
3465 java.lang.String norm = null;
\r
3466 com.ibm.icu.math.BigDecimal dimax;
\r
3467 com.ibm.icu.math.BigDecimal num = null;
\r
3468 com.ibm.icu.math.BigDecimal dv = null;
\r
3469 com.ibm.icu.math.BigDecimal dimin;
\r
3473 (new Test("inv001")).ok=imin==((new com.ibm.icu.math.BigDecimal(imin)).intValue());
\r
3474 (new Test("inv002")).ok=((99))==((new com.ibm.icu.math.BigDecimal("99")).intValue());
\r
3475 (new Test("inv003")).ok=((1))==((new com.ibm.icu.math.BigDecimal("1")).intValue());
\r
3476 (new Test("inv004")).ok=((0))==((new com.ibm.icu.math.BigDecimal("0")).intValue());
\r
3477 (new Test("inv005")).ok=((-1))==((new com.ibm.icu.math.BigDecimal("-1")).intValue());
\r
3478 (new Test("inv006")).ok=((-99))==((new com.ibm.icu.math.BigDecimal("-99")).intValue());
\r
3479 (new Test("inv007")).ok=imax==((new com.ibm.icu.math.BigDecimal(imax)).intValue());
\r
3480 (new Test("inv008")).ok=((5))==((new com.ibm.icu.math.BigDecimal("5.0")).intValue());
\r
3481 (new Test("inv009")).ok=((5))==((new com.ibm.icu.math.BigDecimal("5.3")).intValue());
\r
3482 (new Test("inv010")).ok=((5))==((new com.ibm.icu.math.BigDecimal("5.5")).intValue());
\r
3483 (new Test("inv011")).ok=((5))==((new com.ibm.icu.math.BigDecimal("5.7")).intValue());
\r
3484 (new Test("inv012")).ok=((5))==((new com.ibm.icu.math.BigDecimal("5.9")).intValue());
\r
3485 (new Test("inv013")).ok=((-5))==((new com.ibm.icu.math.BigDecimal("-5.0")).intValue());
\r
3486 (new Test("inv014")).ok=((-5))==((new com.ibm.icu.math.BigDecimal("-5.3")).intValue());
\r
3487 (new Test("inv015")).ok=((-5))==((new com.ibm.icu.math.BigDecimal("-5.5")).intValue());
\r
3488 (new Test("inv016")).ok=((-5))==((new com.ibm.icu.math.BigDecimal("-5.7")).intValue());
\r
3489 (new Test("inv017")).ok=((-5))==((new com.ibm.icu.math.BigDecimal("-5.9")).intValue());
\r
3490 (new Test("inv018")).ok=((new com.ibm.icu.math.BigDecimal("88888888888")).intValue())==(-1305424328); // ugh
\r
3491 (new Test("inv019")).ok=((new com.ibm.icu.math.BigDecimal("-88888888888")).intValue())==1305424328; // ugh
\r
3492 (new Test("inv020")).ok=((imin))==((new com.ibm.icu.math.BigDecimal((((long)imax))+1)).intValue());
\r
3493 (new Test("inv021")).ok=((imax))==((new com.ibm.icu.math.BigDecimal((((long)imin))-1)).intValue());
\r
3495 // intValueExact --
\r
3497 (new Test("inv101")).ok=imin==((new com.ibm.icu.math.BigDecimal(imin)).intValueExact());
\r
3498 (new Test("inv102")).ok=((99))==((new com.ibm.icu.math.BigDecimal("99")).intValue());
\r
3499 (new Test("inv103")).ok=((1))==((new com.ibm.icu.math.BigDecimal("1")).intValue());
\r
3500 (new Test("inv104")).ok=((0))==((new com.ibm.icu.math.BigDecimal("0")).intValue());
\r
3501 (new Test("inv105")).ok=((-1))==((new com.ibm.icu.math.BigDecimal("-1")).intValue());
\r
3502 (new Test("inv106")).ok=((-99))==((new com.ibm.icu.math.BigDecimal("-99")).intValue());
\r
3503 (new Test("inv107")).ok=imax==((new com.ibm.icu.math.BigDecimal(imax)).intValue());
\r
3504 (new Test("inv108")).ok=((5))==((new com.ibm.icu.math.BigDecimal("5.0")).intValue());
\r
3505 (new Test("inv109")).ok=((-5))==((new com.ibm.icu.math.BigDecimal("-5.0")).intValue());
\r
3506 (new Test("inv110")).ok=imax==((new com.ibm.icu.math.BigDecimal(imax)).intValueExact());
\r
3509 v = "-88588688888";
\r
3510 (new com.ibm.icu.math.BigDecimal(v)).intValueExact();
\r
3512 } catch (java.lang.ArithmeticException $102) {
\r
3514 flag = (ae.getMessage()).equals("Conversion overflow:" + " " + v);
\r
3516 (new Test("inv200")).ok = flag;
\r
3518 // this one could raise either overflow or bad decimal part
\r
3520 v = "88088818888.00001";
\r
3521 (new com.ibm.icu.math.BigDecimal(v)).intValueExact();
\r
3523 } catch (java.lang.ArithmeticException $103) {
\r
3526 (new Test("inv201")).ok = flag;
\r
3528 // 1999.10.28: the testcases marked '*' failed
\r
3529 badstrings = new java.lang.String[] {
\r
3531 (new com.ibm.icu.math.BigDecimal(imax)).add(one).toString(),
\r
3532 (new com.ibm.icu.math.BigDecimal(imin)).subtract(one)
\r
3548 (new com.ibm.icu.math.BigDecimal(imin)).multiply(two)
\r
3550 (new com.ibm.icu.math.BigDecimal(imax)).multiply(two)
\r
3552 (new com.ibm.icu.math.BigDecimal(imin)).multiply(ten)
\r
3554 (new com.ibm.icu.math.BigDecimal(imax)).multiply(ten)
\r
3555 .toString(), "4731367293", "4831367293", "4931367293",
\r
3556 "5031367293", "5131367293", "5231367293", "5331367293",
\r
3557 "5431367293", "5531367293", "5631367293", "5731367293",
\r
3558 "5831367293", "5931367293", "6031367293", "6131367293",
\r
3559 "6231367293", "6331367293", "6431367293", "6531367293",
\r
3560 "6631367293", "6731367293", "2200000000", "2300000000",
\r
3561 "2400000000", "2500000000", "2600000000", "2700000000",
\r
3562 "2800000000", "2900000000", "-2200000000", "-2300000000",
\r
3563 "-2400000000", "-2500000000", "-2600000000", "-2700000000",
\r
3564 "-2800000000", "-2900000000", "25E+8", "-25E+8", "-12345678901" }; // 220
\r
3626 int $104 = badstrings.length;
\r
3628 for (; $104 > 0; $104--, i++) {
\r
3630 v = badstrings[i];
\r
3631 (new com.ibm.icu.math.BigDecimal(v)).intValueExact();
\r
3633 } catch (java.lang.ArithmeticException $105) {
\r
3635 norm = (new com.ibm.icu.math.BigDecimal(v)).toString();
\r
3636 flag = (ae.getMessage()).equals("Conversion overflow:"
\r
3639 (new Test("inv" + (220 + i))).ok = flag;
\r
3643 // now slip in some single bits...
\r
3644 dimax = new com.ibm.icu.math.BigDecimal(imax);
\r
3647 for (; i <= 49; i++) {
\r
3649 num = two.pow(new com.ibm.icu.math.BigDecimal(i), mc50);
\r
3650 dv = dimax.add(num, mc50);
\r
3651 dv.intValueExact();
\r
3653 } catch (java.lang.ArithmeticException $106) {
\r
3655 norm = dv.toString();
\r
3656 flag = (ae.getMessage()).equals("Conversion overflow:"
\r
3659 (new Test("inv" + (300 + i))).ok = flag;
\r
3662 dimin = new com.ibm.icu.math.BigDecimal(imin);
\r
3665 for (; i <= 99; i++) {
\r
3667 num = two.pow(new com.ibm.icu.math.BigDecimal(i), mc50);
\r
3668 dv = dimin.subtract(num, mc50);
\r
3669 dv.intValueExact();
\r
3671 } catch (java.lang.ArithmeticException $107) {
\r
3673 norm = dv.toString();
\r
3674 flag = (ae.getMessage()).equals("Conversion overflow:"
\r
3677 (new Test("inv" + (300 + i))).ok = flag;
\r
3681 // the following should all raise bad-decimal-part exceptions
\r
3682 badstrings = new java.lang.String[] { "0.09", "0.9", "0.01", "0.1",
\r
3683 "-0.01", "-0.1", "1.01", "-1.01", "-1.1", "-111.111",
\r
3684 "+111.111", "1.09", "1.05", "1.04", "1.99", "1.9", "1.5",
\r
3685 "1.4", "-1.09", "-1.05", "-1.04", "-1.99", "-1.9", "-1.5",
\r
3686 "-1.4", "1E-1000", "-1E-1000", "11E-1", "1.5" }; // 400-403
\r
3695 int $108 = badstrings.length;
\r
3697 for (; $108 > 0; $108--, i++) {
\r
3699 v = badstrings[i];
\r
3700 (new com.ibm.icu.math.BigDecimal(v)).intValueExact();
\r
3702 } catch (java.lang.ArithmeticException $109) {
\r
3704 norm = (new com.ibm.icu.math.BigDecimal(v)).toString();
\r
3705 flag = (ae.getMessage()).equals("Decimal part non-zero:"
\r
3708 (new Test("inv" + (400 + i))).ok = flag;
\r
3712 summary("intValue+");
\r
3715 /* ----------------------------------------------------------------- */
\r
3717 /** Test the {@link com.ibm.icu.math.BigDecimal#longValue} method. */
\r
3719 public void diaglongvalue() {
\r
3720 boolean flag = false;
\r
3721 java.lang.String v = null;
\r
3722 java.lang.ArithmeticException ae = null;
\r
3723 java.lang.String badstrings[];
\r
3725 java.lang.String norm = null;
\r
3726 com.ibm.icu.math.BigDecimal dlmax;
\r
3727 com.ibm.icu.math.BigDecimal num = null;
\r
3728 com.ibm.icu.math.BigDecimal dv = null;
\r
3729 com.ibm.icu.math.BigDecimal dlmin;
\r
3733 (new Test("lov001")).ok=lmin==((new com.ibm.icu.math.BigDecimal(lmin)).longValue());
\r
3734 (new Test("lov002")).ok=(((long)99))==((new com.ibm.icu.math.BigDecimal("99")).longValue());
\r
3735 (new Test("lov003")).ok=(((long)1))==((new com.ibm.icu.math.BigDecimal("1")).longValue());
\r
3736 (new Test("lov004")).ok=(((long)0))==((new com.ibm.icu.math.BigDecimal("0")).longValue());
\r
3737 (new Test("lov005")).ok=(((long)-1))==((new com.ibm.icu.math.BigDecimal("-1")).longValue());
\r
3738 (new Test("lov006")).ok=(((long)-99))==((new com.ibm.icu.math.BigDecimal("-99")).longValue());
\r
3739 (new Test("lov007")).ok=lmax==((new com.ibm.icu.math.BigDecimal(lmax)).longValue());
\r
3740 (new Test("lov008")).ok=(((long)5))==((new com.ibm.icu.math.BigDecimal("5.0")).longValue());
\r
3741 (new Test("lov009")).ok=(((long)5))==((new com.ibm.icu.math.BigDecimal("5.3")).longValue());
\r
3742 (new Test("lov010")).ok=(((long)5))==((new com.ibm.icu.math.BigDecimal("5.5")).longValue());
\r
3743 (new Test("lov011")).ok=(((long)5))==((new com.ibm.icu.math.BigDecimal("5.7")).longValue());
\r
3744 (new Test("lov012")).ok=(((long)5))==((new com.ibm.icu.math.BigDecimal("5.9")).longValue());
\r
3745 (new Test("lov013")).ok=(((long)-5))==((new com.ibm.icu.math.BigDecimal("-5.0")).longValue());
\r
3746 (new Test("lov014")).ok=(((long)-5))==((new com.ibm.icu.math.BigDecimal("-5.3")).longValue());
\r
3747 (new Test("lov015")).ok=(((long)-5))==((new com.ibm.icu.math.BigDecimal("-5.5")).longValue());
\r
3748 (new Test("lov016")).ok=(((long)-5))==((new com.ibm.icu.math.BigDecimal("-5.7")).longValue());
\r
3749 (new Test("lov017")).ok=(((long)-5))==((new com.ibm.icu.math.BigDecimal("-5.9")).longValue());
\r
3750 (new Test("lov018")).ok=((new com.ibm.icu.math.BigDecimal("888888888899999999998")).longValue())==3445173361941522430L; // ugh
\r
3751 (new Test("lov019")).ok=((new com.ibm.icu.math.BigDecimal("-888888888899999999998")).longValue())==(-3445173361941522430L); // ugh
\r
3753 // longValueExact --
\r
3755 (new Test("lov101")).ok=lmin==((new com.ibm.icu.math.BigDecimal(lmin)).longValue());
\r
3756 (new Test("lov102")).ok=(((long)99))==((new com.ibm.icu.math.BigDecimal("99")).longValue());
\r
3757 (new Test("lov103")).ok=(((long)1))==((new com.ibm.icu.math.BigDecimal("1")).longValue());
\r
3758 (new Test("lov104")).ok=(((long)0))==((new com.ibm.icu.math.BigDecimal("0")).longValue());
\r
3759 (new Test("lov105")).ok=(((long)-1))==((new com.ibm.icu.math.BigDecimal("-1")).longValue());
\r
3760 (new Test("lov106")).ok=(((long)-99))==((new com.ibm.icu.math.BigDecimal("-99")).longValue());
\r
3761 (new Test("lov107")).ok=lmax==((new com.ibm.icu.math.BigDecimal(lmax)).longValue());
\r
3762 (new Test("lov108")).ok=(((long)5))==((new com.ibm.icu.math.BigDecimal("5.0")).longValue());
\r
3763 (new Test("lov109")).ok=(((long)-5))==((new com.ibm.icu.math.BigDecimal("-5.0")).longValue());
\r
3766 v = "-888888888899999999998";
\r
3767 (new com.ibm.icu.math.BigDecimal(v)).longValueExact();
\r
3769 } catch (java.lang.ArithmeticException $110) {
\r
3771 flag = (ae.getMessage()).equals("Conversion overflow:" + " " + v);
\r
3773 (new Test("lov200")).ok = flag;
\r
3775 v = "88888887487487479488888";
\r
3776 (new com.ibm.icu.math.BigDecimal(v)).longValueExact();
\r
3778 } catch (java.lang.ArithmeticException $111) {
\r
3780 flag = (ae.getMessage()).equals("Conversion overflow:" + " " + v);
\r
3782 (new Test("lov201")).ok = flag;
\r
3785 (new com.ibm.icu.math.BigDecimal(v)).longValueExact();
\r
3787 } catch (java.lang.ArithmeticException $112) {
\r
3789 flag = (ae.getMessage()).equals("Decimal part non-zero:" + " " + v);
\r
3791 (new Test("lov202")).ok = flag;
\r
3793 badstrings = new java.lang.String[] {
\r
3794 "1234567890110987654321",
\r
3795 "-1234567890110987654321",
\r
3796 (new com.ibm.icu.math.BigDecimal(lmax)).add(one).toString(),
\r
3797 (new com.ibm.icu.math.BigDecimal(lmin)).subtract(one)
\r
3799 (new com.ibm.icu.math.BigDecimal(lmin)).multiply(two)
\r
3801 (new com.ibm.icu.math.BigDecimal(lmax)).multiply(two)
\r
3803 (new com.ibm.icu.math.BigDecimal(lmin)).multiply(ten)
\r
3805 (new com.ibm.icu.math.BigDecimal(lmax)).multiply(ten)
\r
3806 .toString(), "9223372036854775818",
\r
3807 "9323372036854775818", "9423372036854775818",
\r
3808 "9523372036854775818", "9623372036854775818",
\r
3809 "9723372036854775818", "9823372036854775818",
\r
3810 "9923372036854775818", "-9223372036854775818",
\r
3811 "-9323372036854775818", "-9423372036854775818",
\r
3812 "-9523372036854775818", "-9623372036854775818",
\r
3813 "-9723372036854775818", "-9823372036854775818",
\r
3814 "-9923372036854775818", "12345678901234567890" }; // 220
\r
3840 int $113 = badstrings.length;
\r
3842 for (; $113 > 0; $113--, i++) {
\r
3844 v = badstrings[i];
\r
3845 (new com.ibm.icu.math.BigDecimal(v)).longValueExact();
\r
3847 } catch (java.lang.ArithmeticException $114) {
\r
3849 norm = (new com.ibm.icu.math.BigDecimal(v)).toString();
\r
3850 flag = (ae.getMessage()).equals("Conversion overflow:"
\r
3853 (new Test("lov" + (220 + i))).ok = flag;
\r
3857 // now slip in some single bits...
\r
3858 dlmax = new com.ibm.icu.math.BigDecimal(lmax);
\r
3861 for (; i <= 99; i++) {
\r
3863 num = two.pow(new com.ibm.icu.math.BigDecimal(i), mc50);
\r
3864 dv = dlmax.add(num, mc50);
\r
3865 dv.longValueExact();
\r
3867 } catch (java.lang.ArithmeticException $115) {
\r
3869 norm = dv.toString();
\r
3870 flag = (ae.getMessage()).equals("Conversion overflow:"
\r
3873 (new Test("lov" + (300 + i))).ok = flag;
\r
3876 dlmin = new com.ibm.icu.math.BigDecimal(lmin);
\r
3879 for (; i <= 99; i++) {
\r
3881 num = two.pow(new com.ibm.icu.math.BigDecimal(i), mc50);
\r
3882 dv = dlmin.subtract(num, mc50);
\r
3883 dv.longValueExact();
\r
3885 } catch (java.lang.ArithmeticException $116) {
\r
3887 norm = dv.toString();
\r
3888 flag = (ae.getMessage()).equals("Conversion overflow:"
\r
3891 (new Test("lov" + (400 + i))).ok = flag;
\r
3895 summary("longValue+");
\r
3898 /* ----------------------------------------------------------------- */
\r
3900 /** Test the {@link com.ibm.icu.math.BigDecimal#movePointLeft} method. */
\r
3902 public void diagmovepointleft() {
\r
3903 (new Test("mpl001")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointLeft(-10).toString()).equals("-10000000000");
\r
3904 (new Test("mpl002")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointLeft(-5).toString()).equals("-100000");
\r
3905 (new Test("mpl003")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointLeft(-1).toString()).equals("-10");
\r
3906 (new Test("mpl004")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointLeft(0).toString()).equals("-1");
\r
3907 (new Test("mpl005")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointLeft(+1).toString()).equals("-0.1");
\r
3908 (new Test("mpl006")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointLeft(+5).toString()).equals("-0.00001");
\r
3909 (new Test("mpl007")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointLeft(+10).toString()).equals("-0.0000000001");
\r
3911 (new Test("mpl010")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointLeft(-10).toString()).equals("0");
\r
3912 (new Test("mpl010")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointLeft(-5).toString()).equals("0");
\r
3913 (new Test("mpl010")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointLeft(-1).toString()).equals("0");
\r
3914 (new Test("mpl010")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointLeft(0).toString()).equals("0");
\r
3915 (new Test("mpl010")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointLeft(+1).toString()).equals("0.0");
\r
3916 (new Test("mpl010")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointLeft(+5).toString()).equals("0.00000");
\r
3917 (new Test("mpl010")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointLeft(+10).toString()).equals("0.0000000000");
\r
3919 (new Test("mpl020")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointLeft(-10).toString()).equals("10000000000");
\r
3920 (new Test("mpl021")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointLeft(-5).toString()).equals("100000");
\r
3921 (new Test("mpl022")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointLeft(-1).toString()).equals("10");
\r
3922 (new Test("mpl023")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointLeft(0).toString()).equals("1");
\r
3923 (new Test("mpl024")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointLeft(+1).toString()).equals("0.1");
\r
3924 (new Test("mpl025")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointLeft(+5).toString()).equals("0.00001");
\r
3925 (new Test("mpl026")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointLeft(+10).toString()).equals("0.0000000001");
\r
3927 (new Test("mpl030")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointLeft(-10).toString()).equals("50000000000");
\r
3928 (new Test("mpl031")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointLeft(-5).toString()).equals("500000");
\r
3929 (new Test("mpl032")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointLeft(-1).toString()).equals("50");
\r
3930 (new Test("mpl033")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointLeft(0).toString()).equals("5");
\r
3931 (new Test("mpl034")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointLeft(+1).toString()).equals("0.5");
\r
3932 (new Test("mpl035")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointLeft(+5).toString()).equals("0.00005");
\r
3933 (new Test("mpl036")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointLeft(+10).toString()).equals("0.0000000005");
\r
3935 summary("movePointLeft");
\r
3938 /* ----------------------------------------------------------------- */
\r
3940 /** Test the {@link com.ibm.icu.math.BigDecimal#movePointRight} method. */
\r
3942 public void diagmovepointright() {
\r
3943 (new Test("mpr001")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointRight(+10).toString()).equals("-10000000000");
\r
3944 (new Test("mpr002")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointRight(+5).toString()).equals("-100000");
\r
3945 (new Test("mpr003")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointRight(+1).toString()).equals("-10");
\r
3946 (new Test("mpr004")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointRight(0).toString()).equals("-1");
\r
3947 (new Test("mpr005")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointRight(-1).toString()).equals("-0.1");
\r
3948 (new Test("mpr006")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointRight(-5).toString()).equals("-0.00001");
\r
3949 (new Test("mpr007")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointRight(-10).toString()).equals("-0.0000000001");
\r
3951 (new Test("mpr010")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointRight(+10).toString()).equals("0");
\r
3952 (new Test("mpr011")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointRight(+5).toString()).equals("0");
\r
3953 (new Test("mpr012")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointRight(+1).toString()).equals("0");
\r
3954 (new Test("mpr013")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointRight(0).toString()).equals("0");
\r
3955 (new Test("mpr014")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointRight(-1).toString()).equals("0.0");
\r
3956 (new Test("mpr015")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointRight(-5).toString()).equals("0.00000");
\r
3957 (new Test("mpr016")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointRight(-10).toString()).equals("0.0000000000");
\r
3959 (new Test("mpr020")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointRight(+10).toString()).equals("10000000000");
\r
3960 (new Test("mpr021")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointRight(+5).toString()).equals("100000");
\r
3961 (new Test("mpr022")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointRight(+1).toString()).equals("10");
\r
3962 (new Test("mpr023")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointRight(0).toString()).equals("1");
\r
3963 (new Test("mpr024")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointRight(-1).toString()).equals("0.1");
\r
3964 (new Test("mpr025")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointRight(-5).toString()).equals("0.00001");
\r
3965 (new Test("mpr026")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointRight(-10).toString()).equals("0.0000000001");
\r
3967 (new Test("mpr030")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointRight(+10).toString()).equals("50000000000");
\r
3968 (new Test("mpr031")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointRight(+5).toString()).equals("500000");
\r
3969 (new Test("mpr032")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointRight(+1).toString()).equals("50");
\r
3970 (new Test("mpr033")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointRight(0).toString()).equals("5");
\r
3971 (new Test("mpr034")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointRight(-1).toString()).equals("0.5");
\r
3972 (new Test("mpr035")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointRight(-5).toString()).equals("0.00005");
\r
3973 (new Test("mpr036")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointRight(-10).toString()).equals("0.0000000005");
\r
3975 summary("movePointRight");
\r
3978 /* ----------------------------------------------------------------- */
\r
3980 /** Test the {@link com.ibm.icu.math.BigDecimal#scale} method. */
\r
3982 public void diagscale() {
\r
3983 (new Test("sca001")).ok=((new com.ibm.icu.math.BigDecimal("-1")).scale())==0;
\r
3984 (new Test("sca002")).ok=((new com.ibm.icu.math.BigDecimal("-10")).scale())==0;
\r
3985 (new Test("sca003")).ok=((new com.ibm.icu.math.BigDecimal("+1")).scale())==0;
\r
3986 (new Test("sca004")).ok=((new com.ibm.icu.math.BigDecimal("+10")).scale())==0;
\r
3987 (new Test("sca005")).ok=((new com.ibm.icu.math.BigDecimal("1E+10")).scale())==0;
\r
3988 (new Test("sca006")).ok=((new com.ibm.icu.math.BigDecimal("1E-10")).scale())==10;
\r
3989 (new Test("sca007")).ok=((new com.ibm.icu.math.BigDecimal("0E-10")).scale())==0;
\r
3990 (new Test("sca008")).ok=((new com.ibm.icu.math.BigDecimal("0.000")).scale())==3;
\r
3991 (new Test("sca009")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).scale())==2;
\r
3992 (new Test("sca010")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).scale())==1;
\r
3993 (new Test("sca011")).ok=((new com.ibm.icu.math.BigDecimal("0.1")).scale())==1;
\r
3994 (new Test("sca012")).ok=((new com.ibm.icu.math.BigDecimal("0.12")).scale())==2;
\r
3995 (new Test("sca013")).ok=((new com.ibm.icu.math.BigDecimal("0.123")).scale())==3;
\r
3996 (new Test("sca014")).ok=((new com.ibm.icu.math.BigDecimal("-0.0")).scale())==1;
\r
3997 (new Test("sca015")).ok=((new com.ibm.icu.math.BigDecimal("-0.1")).scale())==1;
\r
3998 (new Test("sca016")).ok=((new com.ibm.icu.math.BigDecimal("-0.12")).scale())==2;
\r
3999 (new Test("sca017")).ok=((new com.ibm.icu.math.BigDecimal("-0.123")).scale())==3;
\r
4003 /* ----------------------------------------------------------------- */
\r
4005 /** Test the {@link com.ibm.icu.math.BigDecimal#setScale} method. */
\r
4007 public void diagsetscale() {
\r
4008 boolean flag = false;
\r
4009 java.lang.RuntimeException e = null;
\r
4011 (new Test("ssc001")).ok=((new com.ibm.icu.math.BigDecimal("-1")).setScale(0).toString()).equals("-1");
\r
4012 (new Test("ssc002")).ok=((new com.ibm.icu.math.BigDecimal("-1")).setScale(1).toString()).equals("-1.0");
\r
4013 (new Test("ssc003")).ok=((new com.ibm.icu.math.BigDecimal("-1")).setScale(2).toString()).equals("-1.00");
\r
4014 (new Test("ssc004")).ok=((new com.ibm.icu.math.BigDecimal("0")).setScale(0).toString()).equals("0");
\r
4015 (new Test("ssc005")).ok=((new com.ibm.icu.math.BigDecimal("0")).setScale(1).toString()).equals("0.0");
\r
4016 (new Test("ssc006")).ok=((new com.ibm.icu.math.BigDecimal("0")).setScale(2).toString()).equals("0.00");
\r
4017 (new Test("ssc007")).ok=((new com.ibm.icu.math.BigDecimal("+1")).setScale(0).toString()).equals("1");
\r
4018 (new Test("ssc008")).ok=((new com.ibm.icu.math.BigDecimal("+1")).setScale(1).toString()).equals("1.0");
\r
4019 (new Test("ssc009")).ok=((new com.ibm.icu.math.BigDecimal("+1")).setScale(2).toString()).equals("1.00");
\r
4020 (new Test("ssc010")).ok=((new com.ibm.icu.math.BigDecimal("-1")).setScale(0,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("-1");
\r
4021 (new Test("ssc011")).ok=((new com.ibm.icu.math.BigDecimal("-1")).setScale(1,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("-1.0");
\r
4022 (new Test("ssc012")).ok=((new com.ibm.icu.math.BigDecimal("-1")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("-1.00");
\r
4023 (new Test("ssc013")).ok=((new com.ibm.icu.math.BigDecimal("0")).setScale(0,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0");
\r
4024 (new Test("ssc014")).ok=((new com.ibm.icu.math.BigDecimal("0")).setScale(1,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.0");
\r
4025 (new Test("ssc015")).ok=((new com.ibm.icu.math.BigDecimal("0")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.00");
\r
4026 (new Test("ssc016")).ok=((new com.ibm.icu.math.BigDecimal("+1")).setScale(0,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1");
\r
4027 (new Test("ssc017")).ok=((new com.ibm.icu.math.BigDecimal("+1")).setScale(1,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1.0");
\r
4028 (new Test("ssc018")).ok=((new com.ibm.icu.math.BigDecimal("+1")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1.00");
\r
4030 (new Test("ssc020")).ok=((new com.ibm.icu.math.BigDecimal("1.04")).setScale(3,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1.040");
\r
4031 (new Test("ssc021")).ok=((new com.ibm.icu.math.BigDecimal("1.04")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1.04");
\r
4032 (new Test("ssc022")).ok=((new com.ibm.icu.math.BigDecimal("1.04")).setScale(1,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1.0");
\r
4033 (new Test("ssc023")).ok=((new com.ibm.icu.math.BigDecimal("1.04")).setScale(0,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1");
\r
4034 (new Test("ssc024")).ok=((new com.ibm.icu.math.BigDecimal("1.05")).setScale(3,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1.050");
\r
4035 (new Test("ssc025")).ok=((new com.ibm.icu.math.BigDecimal("1.05")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1.05");
\r
4036 (new Test("ssc026")).ok=((new com.ibm.icu.math.BigDecimal("1.05")).setScale(1,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1.1");
\r
4037 (new Test("ssc027")).ok=((new com.ibm.icu.math.BigDecimal("1.05")).setScale(0,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1");
\r
4038 (new Test("ssc028")).ok=((new com.ibm.icu.math.BigDecimal("1.05")).setScale(3,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("1.050");
\r
4039 (new Test("ssc029")).ok=((new com.ibm.icu.math.BigDecimal("1.05")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("1.05");
\r
4040 (new Test("ssc030")).ok=((new com.ibm.icu.math.BigDecimal("1.05")).setScale(1,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("1.0");
\r
4041 (new Test("ssc031")).ok=((new com.ibm.icu.math.BigDecimal("1.05")).setScale(0,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("1");
\r
4042 (new Test("ssc032")).ok=((new com.ibm.icu.math.BigDecimal("1.06")).setScale(3,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1.060");
\r
4043 (new Test("ssc033")).ok=((new com.ibm.icu.math.BigDecimal("1.06")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1.06");
\r
4044 (new Test("ssc034")).ok=((new com.ibm.icu.math.BigDecimal("1.06")).setScale(1,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1.1");
\r
4045 (new Test("ssc035")).ok=((new com.ibm.icu.math.BigDecimal("1.06")).setScale(0,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1");
\r
4047 (new Test("ssc040")).ok=((new com.ibm.icu.math.BigDecimal("-10")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("-10.00");
\r
4048 (new Test("ssc041")).ok=((new com.ibm.icu.math.BigDecimal("+1")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1.00");
\r
4049 (new Test("ssc042")).ok=((new com.ibm.icu.math.BigDecimal("+10")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("10.00");
\r
4050 (new Test("ssc043")).ok=((new com.ibm.icu.math.BigDecimal("1E+10")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("10000000000.00");
\r
4051 (new Test("ssc044")).ok=((new com.ibm.icu.math.BigDecimal("1E-10")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.00");
\r
4052 (new Test("ssc045")).ok=((new com.ibm.icu.math.BigDecimal("1E-2")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.01");
\r
4053 (new Test("ssc046")).ok=((new com.ibm.icu.math.BigDecimal("0E-10")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.00");
\r
4056 (new Test("ssc050")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(2,com.ibm.icu.math.MathContext.ROUND_CEILING).toString()).equals("0.01");
\r
4057 (new Test("ssc051")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(1,com.ibm.icu.math.MathContext.ROUND_CEILING).toString()).equals("0.1");
\r
4058 (new Test("ssc052")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(0,com.ibm.icu.math.MathContext.ROUND_CEILING).toString()).equals("1");
\r
4059 (new Test("ssc053")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(2,com.ibm.icu.math.MathContext.ROUND_DOWN).toString()).equals("0.00");
\r
4060 (new Test("ssc054")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(1,com.ibm.icu.math.MathContext.ROUND_DOWN).toString()).equals("0.0");
\r
4061 (new Test("ssc055")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(0,com.ibm.icu.math.MathContext.ROUND_DOWN).toString()).equals("0");
\r
4062 (new Test("ssc056")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(2,com.ibm.icu.math.MathContext.ROUND_FLOOR).toString()).equals("0.00");
\r
4063 (new Test("ssc057")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(1,com.ibm.icu.math.MathContext.ROUND_FLOOR).toString()).equals("0.0");
\r
4064 (new Test("ssc058")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(0,com.ibm.icu.math.MathContext.ROUND_FLOOR).toString()).equals("0");
\r
4065 (new Test("ssc059")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("0.00");
\r
4066 (new Test("ssc060")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(1,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("0.0");
\r
4067 (new Test("ssc061")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(0,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("0");
\r
4068 (new Test("ssc062")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0.00");
\r
4069 (new Test("ssc063")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0.0");
\r
4070 (new Test("ssc064")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(0,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0");
\r
4071 (new Test("ssc065")).ok=((new com.ibm.icu.math.BigDecimal("0.015")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0.02");
\r
4072 (new Test("ssc066")).ok=((new com.ibm.icu.math.BigDecimal("0.015")).setScale(1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0.0");
\r
4073 (new Test("ssc067")).ok=((new com.ibm.icu.math.BigDecimal("0.015")).setScale(0,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0");
\r
4074 (new Test("ssc068")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.01");
\r
4075 (new Test("ssc069")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(1,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.0");
\r
4076 (new Test("ssc070")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(0,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0");
\r
4077 (new Test("ssc071")).ok=((new com.ibm.icu.math.BigDecimal("0.095")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.10");
\r
4078 (new Test("ssc072")).ok=((new com.ibm.icu.math.BigDecimal("0.095")).setScale(1,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.1");
\r
4079 (new Test("ssc073")).ok=((new com.ibm.icu.math.BigDecimal("0.095")).setScale(0,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0");
\r
4080 (new Test("ssc074")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(2,com.ibm.icu.math.MathContext.ROUND_UP).toString()).equals("0.01");
\r
4081 (new Test("ssc075")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(1,com.ibm.icu.math.MathContext.ROUND_UP).toString()).equals("0.1");
\r
4082 (new Test("ssc076")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(0,com.ibm.icu.math.MathContext.ROUND_UP).toString()).equals("1");
\r
4085 (new com.ibm.icu.math.BigDecimal(1)).setScale(-8);
\r
4087 } catch (java.lang.RuntimeException $117) {
\r
4089 flag = (e.getMessage()).equals("Negative scale: -8");
\r
4091 (new Test("ssc100")).ok = flag;
\r
4093 (new com.ibm.icu.math.BigDecimal(1.0001D)).setScale(3);
\r
4095 } catch (java.lang.RuntimeException $118) {
\r
4097 flag = (e.getMessage()).equals("Rounding necessary");
\r
4099 (new Test("ssc101")).ok = flag;
\r
4101 (new com.ibm.icu.math.BigDecimal(1E-8D)).setScale(3);
\r
4103 } catch (java.lang.RuntimeException $119) {
\r
4105 flag = (e.getMessage()).equals("Rounding necessary");
\r
4107 (new Test("ssc102")).ok = flag;
\r
4108 summary("setScale");
\r
4111 /* ----------------------------------------------------------------- */
\r
4113 /** Test the <code>BigDecimal.shortValue()</code> method. */
\r
4115 public void diagshortvalue() {
\r
4116 boolean flag = false;
\r
4117 java.lang.String v = null;
\r
4118 java.lang.ArithmeticException ae = null;
\r
4119 java.lang.String badstrings[];
\r
4121 java.lang.String norm = null;
\r
4123 (new Test("shv002")).ok=(((short)0))==((new com.ibm.icu.math.BigDecimal("0")).shortValue());
\r
4124 (new Test("shv003")).ok=(((short)1))==((new com.ibm.icu.math.BigDecimal("1")).shortValue());
\r
4125 (new Test("shv004")).ok=(((short)99))==((new com.ibm.icu.math.BigDecimal("99")).shortValue());
\r
4126 (new Test("shv006")).ok=((smax))==((new com.ibm.icu.math.BigDecimal(smax)).shortValue());
\r
4127 (new Test("shv007")).ok=((smin))==((new com.ibm.icu.math.BigDecimal(smin)).shortValue());
\r
4128 (new Test("shv008")).ok=((sneg))==((new com.ibm.icu.math.BigDecimal(sneg)).shortValue());
\r
4129 (new Test("shv009")).ok=((szer))==((new com.ibm.icu.math.BigDecimal(szer)).shortValue());
\r
4130 (new Test("shv010")).ok=((spos))==((new com.ibm.icu.math.BigDecimal(spos)).shortValue());
\r
4131 (new Test("shv011")).ok=((smin))==((new com.ibm.icu.math.BigDecimal(smax+1)).shortValue());
\r
4132 (new Test("shv012")).ok=((smax))==((new com.ibm.icu.math.BigDecimal(smin-1)).shortValue());
\r
4134 (new Test("shv022")).ok=(((short)0))==((new com.ibm.icu.math.BigDecimal("0")).shortValueExact());
\r
4135 (new Test("shv023")).ok=(((short)1))==((new com.ibm.icu.math.BigDecimal("1")).shortValueExact());
\r
4136 (new Test("shv024")).ok=(((short)99))==((new com.ibm.icu.math.BigDecimal("99")).shortValueExact());
\r
4137 (new Test("shv026")).ok=((smax))==((new com.ibm.icu.math.BigDecimal(smax)).shortValueExact());
\r
4138 (new Test("shv027")).ok=((smin))==((new com.ibm.icu.math.BigDecimal(smin)).shortValueExact());
\r
4139 (new Test("shv028")).ok=((sneg))==((new com.ibm.icu.math.BigDecimal(sneg)).shortValueExact());
\r
4140 (new Test("shv029")).ok=((szer))==((new com.ibm.icu.math.BigDecimal(szer)).shortValueExact());
\r
4141 (new Test("shv030")).ok=((spos))==((new com.ibm.icu.math.BigDecimal(spos)).shortValueExact());
\r
4143 v = "-88888888888";
\r
4144 (new com.ibm.icu.math.BigDecimal(v)).shortValueExact();
\r
4146 } catch (java.lang.ArithmeticException $120) {
\r
4148 flag = (ae.getMessage()).equals("Conversion overflow:" + " " + v);
\r
4150 (new Test("shv100")).ok = flag;
\r
4152 v = "88888888888";
\r
4153 (new com.ibm.icu.math.BigDecimal(v)).shortValueExact();
\r
4155 } catch (java.lang.ArithmeticException $121) {
\r
4157 flag = (ae.getMessage()).equals("Conversion overflow:" + " " + v);
\r
4159 (new Test("shv101")).ok = flag;
\r
4162 (new com.ibm.icu.math.BigDecimal(v)).shortValueExact();
\r
4164 } catch (java.lang.ArithmeticException $122) {
\r
4166 flag = (ae.getMessage()).equals("Decimal part non-zero:" + " " + v);
\r
4168 (new Test("shv102")).ok = flag;
\r
4170 badstrings = new java.lang.String[] {
\r
4172 (new com.ibm.icu.math.BigDecimal(smax)).add(one).toString(),
\r
4173 (new com.ibm.icu.math.BigDecimal(smin)).subtract(one)
\r
4181 (new com.ibm.icu.math.BigDecimal(smin)).multiply(two)
\r
4183 (new com.ibm.icu.math.BigDecimal(smax)).multiply(two)
\r
4185 (new com.ibm.icu.math.BigDecimal(smin)).multiply(ten)
\r
4187 (new com.ibm.icu.math.BigDecimal(smax)).multiply(ten)
\r
4188 .toString(), "-123456" }; // 220
\r
4203 int $123 = badstrings.length;
\r
4205 for (; $123 > 0; $123--, i++) {
\r
4207 v = badstrings[i];
\r
4208 (new com.ibm.icu.math.BigDecimal(v)).shortValueExact();
\r
4210 } catch (java.lang.ArithmeticException $124) {
\r
4212 norm = (new com.ibm.icu.math.BigDecimal(v)).toString();
\r
4213 flag = (ae.getMessage()).equals("Conversion overflow:"
\r
4216 (new Test("shv" + (220 + i))).ok = flag;
\r
4220 summary("shortValue+");
\r
4223 /* ----------------------------------------------------------------- */
\r
4225 /** Test the {@link com.ibm.icu.math.BigDecimal#signum} method. */
\r
4227 public void diagsignum() {
\r
4228 // necessarily checks some obscure constructions, too
\r
4229 (new Test("sig001")).ok=(-1)==((new com.ibm.icu.math.BigDecimal("-1")).signum());
\r
4230 (new Test("sig002")).ok=(-1)==((new com.ibm.icu.math.BigDecimal("-0.0010")).signum());
\r
4231 (new Test("sig003")).ok=(-1)==((new com.ibm.icu.math.BigDecimal("-0.001")).signum());
\r
4232 (new Test("sig004")).ok=0==((new com.ibm.icu.math.BigDecimal("-0.00")).signum());
\r
4233 (new Test("sig005")).ok=0==((new com.ibm.icu.math.BigDecimal("-0")).signum());
\r
4234 (new Test("sig006")).ok=0==((new com.ibm.icu.math.BigDecimal("0")).signum());
\r
4235 (new Test("sig007")).ok=0==((new com.ibm.icu.math.BigDecimal("00")).signum());
\r
4236 (new Test("sig008")).ok=0==((new com.ibm.icu.math.BigDecimal("00.0")).signum());
\r
4237 (new Test("sig009")).ok=1==((new com.ibm.icu.math.BigDecimal("00.01")).signum());
\r
4238 (new Test("sig010")).ok=1==((new com.ibm.icu.math.BigDecimal("00.01")).signum());
\r
4239 (new Test("sig011")).ok=1==((new com.ibm.icu.math.BigDecimal("00.010")).signum());
\r
4240 (new Test("sig012")).ok=1==((new com.ibm.icu.math.BigDecimal("01.01")).signum());
\r
4241 (new Test("sig013")).ok=1==((new com.ibm.icu.math.BigDecimal("+0.01")).signum());
\r
4242 (new Test("sig014")).ok=1==((new com.ibm.icu.math.BigDecimal("+0.001")).signum());
\r
4243 (new Test("sig015")).ok=1==((new com.ibm.icu.math.BigDecimal("1")).signum());
\r
4244 (new Test("sig016")).ok=1==((new com.ibm.icu.math.BigDecimal("1e+12")).signum());
\r
4245 (new Test("sig017")).ok=0==((new com.ibm.icu.math.BigDecimal("00e+12")).signum());
\r
4246 summary("signum");
\r
4249 /* ----------------------------------------------------------------- */
\r
4251 /** Test the {@link com.ibm.icu.math.BigDecimal#toBigDecimal} method. */
\r
4253 public void diagtobigdecimal() {
\r
4254 (new Test("tbd001")).ok=((new com.ibm.icu.math.BigDecimal("0")).toBigDecimal().toString()).equals("0");
\r
4255 (new Test("tbd002")).ok=((new com.ibm.icu.math.BigDecimal("-1")).toBigDecimal().toString()).equals("-1");
\r
4256 (new Test("tbd003")).ok=((new com.ibm.icu.math.BigDecimal("+1")).toBigDecimal().toString()).equals("1");
\r
4257 (new Test("tbd004")).ok=((new com.ibm.icu.math.BigDecimal("1")).toBigDecimal().toString()).equals("1");
\r
4258 (new Test("tbd005")).ok=((new com.ibm.icu.math.BigDecimal("1E+2")).toBigDecimal().toString()).equals("100");
\r
4259 (new Test("tbd006")).ok=((new com.ibm.icu.math.BigDecimal("1E-2")).toBigDecimal().toString()).equals("0.01");
\r
4260 if (!isJDK15OrLater) {
\r
4261 (new Test("tbd007")).ok=((new com.ibm.icu.math.BigDecimal("1E-8")).toBigDecimal().toString()).equals("0.00000001");
\r
4263 if (!isJDK15OrLater) {
\r
4264 (new Test("tbd008")).ok=((new com.ibm.icu.math.BigDecimal("1E-9")).toBigDecimal().toString()).equals("0.000000001");
\r
4266 (new Test("tbd009")).ok=((new com.ibm.icu.math.BigDecimal("1E10")).toBigDecimal().toString()).equals("10000000000");
\r
4267 (new Test("tbd010")).ok=((new com.ibm.icu.math.BigDecimal("1E12")).toBigDecimal().toString()).equals("1000000000000");
\r
4268 summary("toBigDecimal");
\r
4271 /* ----------------------------------------------------------------- */
\r
4273 /** Test the {@link com.ibm.icu.math.BigDecimal#toBigInteger} method. */
\r
4275 public void diagtobiginteger() {
\r
4276 boolean flag = false;
\r
4277 java.lang.String badstrings[];
\r
4279 (new Test("tbi001")).ok=((new com.ibm.icu.math.BigDecimal("-1")).toBigInteger().toString()).equals("-1");
\r
4280 (new Test("tbi002")).ok=((new com.ibm.icu.math.BigDecimal("0")).toBigInteger().toString()).equals("0");
\r
4281 (new Test("tbi003")).ok=((new com.ibm.icu.math.BigDecimal("+1")).toBigInteger().toString()).equals("1");
\r
4282 (new Test("tbi004")).ok=((new com.ibm.icu.math.BigDecimal("10")).toBigInteger().toString()).equals("10");
\r
4283 (new Test("tbi005")).ok=((new com.ibm.icu.math.BigDecimal("1000")).toBigInteger().toString()).equals("1000");
\r
4284 (new Test("tbi006")).ok=((new com.ibm.icu.math.BigDecimal("-1E+0")).toBigInteger().toString()).equals("-1");
\r
4285 (new Test("tbi007")).ok=((new com.ibm.icu.math.BigDecimal("0E+0")).toBigInteger().toString()).equals("0");
\r
4286 (new Test("tbi008")).ok=((new com.ibm.icu.math.BigDecimal("+1E+0")).toBigInteger().toString()).equals("1");
\r
4287 (new Test("tbi009")).ok=((new com.ibm.icu.math.BigDecimal("10E+0")).toBigInteger().toString()).equals("10");
\r
4288 (new Test("tbi010")).ok=((new com.ibm.icu.math.BigDecimal("1E+3")).toBigInteger().toString()).equals("1000");
\r
4289 (new Test("tbi011")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).toBigInteger().toString()).equals("0");
\r
4290 (new Test("tbi012")).ok=((new com.ibm.icu.math.BigDecimal("0.01")).toBigInteger().toString()).equals("0");
\r
4291 (new Test("tbi013")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).toBigInteger().toString()).equals("0");
\r
4292 (new Test("tbi014")).ok=((new com.ibm.icu.math.BigDecimal("0.1")).toBigInteger().toString()).equals("0");
\r
4293 (new Test("tbi015")).ok=((new com.ibm.icu.math.BigDecimal("-0.00")).toBigInteger().toString()).equals("0");
\r
4294 (new Test("tbi016")).ok=((new com.ibm.icu.math.BigDecimal("-0.01")).toBigInteger().toString()).equals("0");
\r
4295 (new Test("tbi017")).ok=((new com.ibm.icu.math.BigDecimal("-0.0")).toBigInteger().toString()).equals("0");
\r
4296 (new Test("tbi018")).ok=((new com.ibm.icu.math.BigDecimal("-0.1")).toBigInteger().toString()).equals("0");
\r
4297 (new Test("tbi019")).ok=((new com.ibm.icu.math.BigDecimal("1.00")).toBigInteger().toString()).equals("1");
\r
4298 (new Test("tbi020")).ok=((new com.ibm.icu.math.BigDecimal("1.01")).toBigInteger().toString()).equals("1");
\r
4299 (new Test("tbi021")).ok=((new com.ibm.icu.math.BigDecimal("1.0")).toBigInteger().toString()).equals("1");
\r
4300 (new Test("tbi022")).ok=((new com.ibm.icu.math.BigDecimal("1.1")).toBigInteger().toString()).equals("1");
\r
4301 (new Test("tbi023")).ok=((new com.ibm.icu.math.BigDecimal("-1.00")).toBigInteger().toString()).equals("-1");
\r
4302 (new Test("tbi024")).ok=((new com.ibm.icu.math.BigDecimal("-1.01")).toBigInteger().toString()).equals("-1");
\r
4303 (new Test("tbi025")).ok=((new com.ibm.icu.math.BigDecimal("-1.0")).toBigInteger().toString()).equals("-1");
\r
4304 (new Test("tbi026")).ok=((new com.ibm.icu.math.BigDecimal("-1.1")).toBigInteger().toString()).equals("-1");
\r
4305 (new Test("tbi027")).ok=((new com.ibm.icu.math.BigDecimal("-111.111")).toBigInteger().toString()).equals("-111");
\r
4306 (new Test("tbi028")).ok=((new com.ibm.icu.math.BigDecimal("+111.111")).toBigInteger().toString()).equals("111");
\r
4307 (new Test("tbi029")).ok=((new com.ibm.icu.math.BigDecimal("0.09")).toBigInteger().toString()).equals("0");
\r
4308 (new Test("tbi030")).ok=((new com.ibm.icu.math.BigDecimal("0.9")).toBigInteger().toString()).equals("0");
\r
4309 (new Test("tbi031")).ok=((new com.ibm.icu.math.BigDecimal("1.09")).toBigInteger().toString()).equals("1");
\r
4310 (new Test("tbi032")).ok=((new com.ibm.icu.math.BigDecimal("1.05")).toBigInteger().toString()).equals("1");
\r
4311 (new Test("tbi033")).ok=((new com.ibm.icu.math.BigDecimal("1.04")).toBigInteger().toString()).equals("1");
\r
4312 (new Test("tbi034")).ok=((new com.ibm.icu.math.BigDecimal("1.99")).toBigInteger().toString()).equals("1");
\r
4313 (new Test("tbi034")).ok=((new com.ibm.icu.math.BigDecimal("1.9")).toBigInteger().toString()).equals("1");
\r
4314 (new Test("tbi035")).ok=((new com.ibm.icu.math.BigDecimal("1.5")).toBigInteger().toString()).equals("1");
\r
4315 (new Test("tbi036")).ok=((new com.ibm.icu.math.BigDecimal("1.4")).toBigInteger().toString()).equals("1");
\r
4316 (new Test("tbi037")).ok=((new com.ibm.icu.math.BigDecimal("-1.09")).toBigInteger().toString()).equals("-1");
\r
4317 (new Test("tbi038")).ok=((new com.ibm.icu.math.BigDecimal("-1.05")).toBigInteger().toString()).equals("-1");
\r
4318 (new Test("tbi039")).ok=((new com.ibm.icu.math.BigDecimal("-1.04")).toBigInteger().toString()).equals("-1");
\r
4319 (new Test("tbi040")).ok=((new com.ibm.icu.math.BigDecimal("-1.99")).toBigInteger().toString()).equals("-1");
\r
4320 (new Test("tbi041")).ok=((new com.ibm.icu.math.BigDecimal("-1.9")).toBigInteger().toString()).equals("-1");
\r
4321 (new Test("tbi042")).ok=((new com.ibm.icu.math.BigDecimal("-1.5")).toBigInteger().toString()).equals("-1");
\r
4322 (new Test("tbi043")).ok=((new com.ibm.icu.math.BigDecimal("-1.4")).toBigInteger().toString()).equals("-1");
\r
4323 (new Test("tbi044")).ok=((new com.ibm.icu.math.BigDecimal("1E-1000")).toBigInteger().toString()).equals("0");
\r
4324 (new Test("tbi045")).ok=((new com.ibm.icu.math.BigDecimal("-1E-1000")).toBigInteger().toString()).equals("0");
\r
4326 // Exact variety --
\r
4327 (new Test("tbi101")).ok=((new com.ibm.icu.math.BigDecimal("-1")).toBigIntegerExact().toString()).equals("-1");
\r
4328 (new Test("tbi102")).ok=((new com.ibm.icu.math.BigDecimal("0")).toBigIntegerExact().toString()).equals("0");
\r
4329 (new Test("tbi103")).ok=((new com.ibm.icu.math.BigDecimal("+1")).toBigIntegerExact().toString()).equals("1");
\r
4330 (new Test("tbi104")).ok=((new com.ibm.icu.math.BigDecimal("10")).toBigIntegerExact().toString()).equals("10");
\r
4331 (new Test("tbi105")).ok=((new com.ibm.icu.math.BigDecimal("1000")).toBigIntegerExact().toString()).equals("1000");
\r
4332 (new Test("tbi106")).ok=((new com.ibm.icu.math.BigDecimal("-1E+0")).toBigIntegerExact().toString()).equals("-1");
\r
4333 (new Test("tbi107")).ok=((new com.ibm.icu.math.BigDecimal("0E+0")).toBigIntegerExact().toString()).equals("0");
\r
4334 (new Test("tbi108")).ok=((new com.ibm.icu.math.BigDecimal("+1E+0")).toBigIntegerExact().toString()).equals("1");
\r
4335 (new Test("tbi109")).ok=((new com.ibm.icu.math.BigDecimal("10E+0")).toBigIntegerExact().toString()).equals("10");
\r
4336 (new Test("tbi110")).ok=((new com.ibm.icu.math.BigDecimal("1E+3")).toBigIntegerExact().toString()).equals("1000");
\r
4337 (new Test("tbi111")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).toBigIntegerExact().toString()).equals("0");
\r
4338 (new Test("tbi112")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).toBigIntegerExact().toString()).equals("0");
\r
4339 (new Test("tbi113")).ok=((new com.ibm.icu.math.BigDecimal("-0.00")).toBigIntegerExact().toString()).equals("0");
\r
4340 (new Test("tbi114")).ok=((new com.ibm.icu.math.BigDecimal("-0.0")).toBigIntegerExact().toString()).equals("0");
\r
4341 (new Test("tbi115")).ok=((new com.ibm.icu.math.BigDecimal("1.00")).toBigIntegerExact().toString()).equals("1");
\r
4342 (new Test("tbi116")).ok=((new com.ibm.icu.math.BigDecimal("1.0")).toBigIntegerExact().toString()).equals("1");
\r
4343 (new Test("tbi117")).ok=((new com.ibm.icu.math.BigDecimal("-1.00")).toBigIntegerExact().toString()).equals("-1");
\r
4344 (new Test("tbi118")).ok=((new com.ibm.icu.math.BigDecimal("-1.0")).toBigIntegerExact().toString()).equals("-1");
\r
4345 (new Test("tbi119")).ok=((new com.ibm.icu.math.BigDecimal("1.00000000000000000000000000000")).toBigIntegerExact().toString()).equals("1");
\r
4348 // the following should all raise exceptions
\r
4350 badstrings = new java.lang.String[] { "0.09", "0.9", "0.01", "0.1",
\r
4351 "-0.01", "-0.1", "1.01", "-1.01", "-1.1", "-111.111",
\r
4352 "+111.111", "1.09", "1.05", "1.04", "1.99", "1.9", "1.5",
\r
4353 "1.4", "-1.09", "-1.05", "-1.04", "-1.99", "-1.9", "-1.5",
\r
4354 "-1.4", "1E-1000", "-1E-1000", "11E-1", "1.1",
\r
4355 "127623156123656561356123512315631231551312356.000001",
\r
4356 "0.000000000000000000000000000000000000000000000001" }; // 300-303
\r
4367 int $125 = badstrings.length;
\r
4369 for (; $125 > 0; $125--, i++) {
\r
4371 (new com.ibm.icu.math.BigDecimal(badstrings[i]))
\r
4372 .toBigIntegerExact();
\r
4374 } catch (java.lang.ArithmeticException $126) {
\r
4377 (new Test("tbi" + (300 + i))).ok = flag;
\r
4381 summary("toBigInteger+");
\r
4384 /* ----------------------------------------------------------------- */
\r
4386 /** Test the {@link com.ibm.icu.math.BigDecimal#toCharArray} method. */
\r
4388 public void diagtochararray() {
\r
4389 java.lang.String str;
\r
4391 com.ibm.icu.math.BigDecimal d;
\r
4393 // the function of this has been tested above, this is simply an
\r
4394 // existence proof and type-check
\r
4396 car = (str).toCharArray();
\r
4397 d = new com.ibm.icu.math.BigDecimal(str);
\r
4398 ca = d.toCharArray();
\r
4399 (new Test("tca001")).ok = ca.length == car.length;
\r
4400 (new Test("tca002")).ok = (new java.lang.String(ca))
\r
4401 .equals((java.lang.Object) (new java.lang.String(car)));
\r
4402 (new Test("tca003")).ok = (d.toCharArray() instanceof char[]);
\r
4403 (new Test("tca004")).ok = (ca instanceof char[]);
\r
4404 summary("toCharArray");
\r
4407 /* ----------------------------------------------------------------- */
\r
4409 /** Test the {@link com.ibm.icu.math.BigDecimal#toString} method. */
\r
4411 public void diagtostring() {
\r
4412 java.lang.String str;
\r
4414 com.ibm.icu.math.BigDecimal d;
\r
4416 java.lang.String cs;
\r
4417 // the function of this has been tested above, this is simply an
\r
4418 // existence proof and type-check
\r
4420 car = (str).toCharArray();
\r
4421 d = new com.ibm.icu.math.BigDecimal(car, 0, car.length);
\r
4422 ca = d.toCharArray();
\r
4423 cs = d.toString();
\r
4424 (new Test("tos001")).ok = (str.toCharArray().length) == ca.length;
\r
4425 (new Test("tos002")).ok = (str.length()) == (cs.length());
\r
4426 (new Test("tos003")).ok = str
\r
4427 .equals((java.lang.Object) (new java.lang.String(ca)));
\r
4428 (new Test("tos004")).ok = str.equals((java.lang.Object) cs);
\r
4429 (new Test("tos005")).ok = (cs instanceof java.lang.String);
\r
4430 (new Test("tos006")).ok = (d.toString() instanceof java.lang.String);
\r
4431 summary("toString");
\r
4434 /* ----------------------------------------------------------------- */
\r
4436 /** Test the {@link com.ibm.icu.math.BigDecimal#unscaledValue} method. */
\r
4438 public void diagunscaledvalue() {
\r
4439 // just like toBigInteger, but scaly bits are preserved [without dots]
\r
4440 (new Test("uns001")).ok=((new com.ibm.icu.math.BigDecimal("-1")).unscaledValue().toString()).equals("-1");
\r
4441 (new Test("uns002")).ok=((new com.ibm.icu.math.BigDecimal("0")).unscaledValue().toString()).equals("0");
\r
4442 (new Test("uns003")).ok=((new com.ibm.icu.math.BigDecimal("+1")).unscaledValue().toString()).equals("1");
\r
4443 (new Test("uns004")).ok=((new com.ibm.icu.math.BigDecimal("10")).unscaledValue().toString()).equals("10");
\r
4444 (new Test("uns005")).ok=((new com.ibm.icu.math.BigDecimal("1000")).unscaledValue().toString()).equals("1000");
\r
4445 (new Test("uns006")).ok=((new com.ibm.icu.math.BigDecimal("-1E+0")).unscaledValue().toString()).equals("-1");
\r
4446 (new Test("uns007")).ok=((new com.ibm.icu.math.BigDecimal("0E+0")).unscaledValue().toString()).equals("0");
\r
4447 (new Test("uns008")).ok=((new com.ibm.icu.math.BigDecimal("+1E+0")).unscaledValue().toString()).equals("1");
\r
4448 (new Test("uns009")).ok=((new com.ibm.icu.math.BigDecimal("10E+0")).unscaledValue().toString()).equals("10");
\r
4449 (new Test("uns010")).ok=((new com.ibm.icu.math.BigDecimal("1E+3")).unscaledValue().toString()).equals("1000");
\r
4450 (new Test("uns011")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).unscaledValue().toString()).equals("0");
\r
4451 (new Test("uns012")).ok=((new com.ibm.icu.math.BigDecimal("0.01")).unscaledValue().toString()).equals("1");
\r
4452 (new Test("uns013")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).unscaledValue().toString()).equals("0");
\r
4453 (new Test("uns014")).ok=((new com.ibm.icu.math.BigDecimal("0.1")).unscaledValue().toString()).equals("1");
\r
4454 (new Test("uns015")).ok=((new com.ibm.icu.math.BigDecimal("-0.00")).unscaledValue().toString()).equals("0");
\r
4455 (new Test("uns016")).ok=((new com.ibm.icu.math.BigDecimal("-0.01")).unscaledValue().toString()).equals("-1");
\r
4456 (new Test("uns017")).ok=((new com.ibm.icu.math.BigDecimal("-0.0")).unscaledValue().toString()).equals("0");
\r
4457 (new Test("uns018")).ok=((new com.ibm.icu.math.BigDecimal("-0.1")).unscaledValue().toString()).equals("-1");
\r
4458 (new Test("uns019")).ok=((new com.ibm.icu.math.BigDecimal("1.00")).unscaledValue().toString()).equals("100");
\r
4459 (new Test("uns020")).ok=((new com.ibm.icu.math.BigDecimal("1.01")).unscaledValue().toString()).equals("101");
\r
4460 (new Test("uns021")).ok=((new com.ibm.icu.math.BigDecimal("1.0")).unscaledValue().toString()).equals("10");
\r
4461 (new Test("uns022")).ok=((new com.ibm.icu.math.BigDecimal("1.1")).unscaledValue().toString()).equals("11");
\r
4462 (new Test("uns023")).ok=((new com.ibm.icu.math.BigDecimal("-1.00")).unscaledValue().toString()).equals("-100");
\r
4463 (new Test("uns024")).ok=((new com.ibm.icu.math.BigDecimal("-1.01")).unscaledValue().toString()).equals("-101");
\r
4464 (new Test("uns025")).ok=((new com.ibm.icu.math.BigDecimal("-1.0")).unscaledValue().toString()).equals("-10");
\r
4465 (new Test("uns026")).ok=((new com.ibm.icu.math.BigDecimal("-1.1")).unscaledValue().toString()).equals("-11");
\r
4466 (new Test("uns027")).ok=((new com.ibm.icu.math.BigDecimal("-111.111")).unscaledValue().toString()).equals("-111111");
\r
4467 (new Test("uns028")).ok=((new com.ibm.icu.math.BigDecimal("+111.111")).unscaledValue().toString()).equals("111111");
\r
4468 summary("unscaledValue");
\r
4471 /* ----------------------------------------------------------------- */
\r
4474 * Test the {@link com.ibm.icu.math.BigDecimal#valueOf} method [long and
\r
4478 public void diagvalueof() {
\r
4479 boolean flag = false;
\r
4480 java.lang.NumberFormatException e = null;
\r
4490 // valueOf(long [,scale]) --
\r
4492 (new Test("val001")).ok=(com.ibm.icu.math.BigDecimal.valueOf((long)((byte)-2)).toString()).equals("-2");
\r
4493 (new Test("val002")).ok=(com.ibm.icu.math.BigDecimal.valueOf((long)((byte)-1)).toString()).equals("-1");
\r
4494 (new Test("val003")).ok=(com.ibm.icu.math.BigDecimal.valueOf((long)((byte)-0)).toString()).equals("0");
\r
4495 (new Test("val004")).ok=(com.ibm.icu.math.BigDecimal.valueOf((long)((byte)+1)).toString()).equals("1");
\r
4496 (new Test("val005")).ok=(com.ibm.icu.math.BigDecimal.valueOf((long)((byte)+2)).toString()).equals("2");
\r
4497 (new Test("val006")).ok=(com.ibm.icu.math.BigDecimal.valueOf((long)((byte)10)).toString()).equals("10");
\r
4498 (new Test("val007")).ok=(com.ibm.icu.math.BigDecimal.valueOf((long)((byte)11)).toString()).equals("11");
\r
4499 (new Test("val008")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lmin).toString()).equals("-9223372036854775808");
\r
4500 (new Test("val009")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lmax).toString()).equals("9223372036854775807");
\r
4501 (new Test("val010")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lneg).toString()).equals("-1");
\r
4502 (new Test("val011")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lzer).toString()).equals("0");
\r
4503 (new Test("val012")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lpos).toString()).equals("1");
\r
4504 (new Test("val013")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lmin,0).toString()).equals("-9223372036854775808");
\r
4505 (new Test("val014")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lmax,0).toString()).equals("9223372036854775807");
\r
4506 (new Test("val015")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lneg,0).toString()).equals("-1");
\r
4507 (new Test("val016")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lpos,0).toString()).equals("1");
\r
4509 (new Test("val017")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lzer,0).toString()).equals("0");
\r
4510 (new Test("val018")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lzer,1).toString()).equals("0.0");
\r
4511 (new Test("val019")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lzer,2).toString()).equals("0.00");
\r
4512 (new Test("val020")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lzer,3).toString()).equals("0.000");
\r
4513 (new Test("val021")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lzer,10).toString()).equals("0.0000000000");
\r
4515 (new Test("val022")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lmin,7).toString()).equals("-922337203685.4775808");
\r
4516 (new Test("val023")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lmax,11).toString()).equals("92233720.36854775807");
\r
4519 com.ibm.icu.math.BigDecimal.valueOf((long) 23, -8);
\r
4521 } catch (java.lang.NumberFormatException $127) {
\r
4523 flag = (e.getMessage()).equals("Negative scale: -8");
\r
4525 (new Test("val100")).ok = flag;
\r
4527 // valueOf(double) --
\r
4529 dzer = (double) 0;
\r
4530 dpos = (double) 1;
\r
4531 dpos = dpos / ((double) 10);
\r
4532 dneg = (double) -dpos;
\r
4533 (new Test("val201")).ok=(com.ibm.icu.math.BigDecimal.valueOf(dneg).toString()).equals("-0.1");
\r
4534 (new Test("val202")).ok=(com.ibm.icu.math.BigDecimal.valueOf(dzer).toString()).equals("0.0"); // cf. constructor
\r
4535 (new Test("val203")).ok=(com.ibm.icu.math.BigDecimal.valueOf(dpos).toString()).equals("0.1");
\r
4536 dpos5 = (double) 0.5D;
\r
4537 dneg5 = (double) -dpos5;
\r
4538 (new Test("val204")).ok=(com.ibm.icu.math.BigDecimal.valueOf(dneg5).toString()).equals("-0.5");
\r
4539 (new Test("val205")).ok=(com.ibm.icu.math.BigDecimal.valueOf(dpos5).toString()).equals("0.5");
\r
4540 dmin = java.lang.Double.MIN_VALUE;
\r
4541 dmax = java.lang.Double.MAX_VALUE;
\r
4542 (new Test("val206")).ok=(com.ibm.icu.math.BigDecimal.valueOf(dmin).toString()).equals("4.9E-324");
\r
4543 (new Test("val207")).ok=(com.ibm.icu.math.BigDecimal.valueOf(dmax).toString()).equals("1.7976931348623157E+308");
\r
4547 d = d / ((double) 10);
\r
4548 (new Test("val210")).ok = (com.ibm.icu.math.BigDecimal.valueOf(d).toString()).equals("0.9");
\r
4549 d = d / ((double) 10);
\r
4550 (new Test("val211")).ok = (com.ibm.icu.math.BigDecimal.valueOf(d).toString()).equals("0.09");
\r
4551 d = d / ((double) 10);
\r
4552 // The primitive double 0.009 is different in java 7. In java <= 6, there is a trailing 0 (e.g 0.0090).
\r
4553 if (System.getProperty("java.version").charAt(2) >= '7') {
\r
4554 (new Test("val212")).ok = (com.ibm.icu.math.BigDecimal.valueOf(d).toString()).equals("0.009");
\r
4556 (new Test("val212")).ok = (com.ibm.icu.math.BigDecimal.valueOf(d).toString()).equals("0.0090");
\r
4558 d = d / ((double) 10);
\r
4559 (new Test("val213")).ok = (com.ibm.icu.math.BigDecimal.valueOf(d).toString()).equals("9.0E-4");
\r
4560 d = d / ((double) 10);
\r
4561 (new Test("val214")).ok = (com.ibm.icu.math.BigDecimal.valueOf(d).toString()).equals("8.999999999999999E-5");
\r
4562 d = d / ((double) 10);
\r
4563 (new Test("val215")).ok = (com.ibm.icu.math.BigDecimal.valueOf(d).toString()).equals("8.999999999999999E-6");
\r
4564 d = d / ((double) 10);
\r
4565 (new Test("val216")).ok = (com.ibm.icu.math.BigDecimal.valueOf(d).toString()).equals("8.999999999999999E-7");
\r
4566 d = d / ((double) 10);
\r
4567 (new Test("val217")).ok = (com.ibm.icu.math.BigDecimal.valueOf(d).toString()).equals("8.999999999999999E-8");
\r
4568 d = d / ((double) 10);
\r
4569 (new Test("val218")).ok = (com.ibm.icu.math.BigDecimal.valueOf(d).toString()).equals("8.999999999999998E-9");
\r
4572 com.ibm.icu.math.BigDecimal
\r
4573 .valueOf(java.lang.Double.POSITIVE_INFINITY);
\r
4575 } catch (java.lang.NumberFormatException $128) {
\r
4578 (new Test("val301")).ok = flag;
\r
4580 com.ibm.icu.math.BigDecimal
\r
4581 .valueOf(java.lang.Double.NEGATIVE_INFINITY);
\r
4583 } catch (java.lang.NumberFormatException $129) {
\r
4586 (new Test("val302")).ok = flag;
\r
4588 com.ibm.icu.math.BigDecimal.valueOf(java.lang.Double.NaN);
\r
4590 } catch (java.lang.NumberFormatException $130) {
\r
4593 (new Test("val303")).ok = flag;
\r
4595 summary("valueOf");
\r
4598 /* ----------------------------------------------------------------- */
\r
4600 /** Test the {@link com.ibm.icu.math.MathContext} class. */
\r
4602 public void diagmathcontext() {
\r
4603 com.ibm.icu.math.MathContext mccon1;
\r
4604 com.ibm.icu.math.MathContext mccon2;
\r
4605 com.ibm.icu.math.MathContext mccon3;
\r
4606 com.ibm.icu.math.MathContext mccon4;
\r
4607 com.ibm.icu.math.MathContext mcrmc;
\r
4608 com.ibm.icu.math.MathContext mcrmd;
\r
4609 com.ibm.icu.math.MathContext mcrmf;
\r
4610 com.ibm.icu.math.MathContext mcrmhd;
\r
4611 com.ibm.icu.math.MathContext mcrmhe;
\r
4612 com.ibm.icu.math.MathContext mcrmhu;
\r
4613 com.ibm.icu.math.MathContext mcrmun;
\r
4614 com.ibm.icu.math.MathContext mcrmu;
\r
4615 boolean flag = false;
\r
4616 java.lang.IllegalArgumentException e = null;
\r
4617 // these tests are mostly existence checks
\r
4618 (new Test("mcn001")).ok=(com.ibm.icu.math.MathContext.DEFAULT.getDigits())==9;
\r
4619 (new Test("mcn002")).ok=(com.ibm.icu.math.MathContext.DEFAULT.getForm())==com.ibm.icu.math.MathContext.SCIENTIFIC;
\r
4620 (new Test("mcn003")).ok=(com.ibm.icu.math.MathContext.DEFAULT.getForm())!=com.ibm.icu.math.MathContext.ENGINEERING;
\r
4621 (new Test("mcn004")).ok=(com.ibm.icu.math.MathContext.DEFAULT.getForm())!=com.ibm.icu.math.MathContext.PLAIN;
\r
4622 (new Test("mcn005")).ok=(com.ibm.icu.math.MathContext.DEFAULT.getLostDigits()?1:0)==0;
\r
4623 (new Test("mcn006")).ok=(com.ibm.icu.math.MathContext.DEFAULT.getRoundingMode())==com.ibm.icu.math.MathContext.ROUND_HALF_UP;
\r
4625 (new Test("mcn010")).ok=com.ibm.icu.math.MathContext.ROUND_CEILING>=0;
\r
4626 (new Test("mcn011")).ok=com.ibm.icu.math.MathContext.ROUND_DOWN>=0;
\r
4627 (new Test("mcn012")).ok=com.ibm.icu.math.MathContext.ROUND_FLOOR>=0;
\r
4628 (new Test("mcn013")).ok=com.ibm.icu.math.MathContext.ROUND_HALF_DOWN>=0;
\r
4629 (new Test("mcn014")).ok=com.ibm.icu.math.MathContext.ROUND_HALF_EVEN>=0;
\r
4630 (new Test("mcn015")).ok=com.ibm.icu.math.MathContext.ROUND_HALF_UP>=0;
\r
4631 (new Test("mcn016")).ok=com.ibm.icu.math.MathContext.ROUND_UNNECESSARY>=0;
\r
4632 (new Test("mcn017")).ok=com.ibm.icu.math.MathContext.ROUND_UP>=0;
\r
4634 mccon1=new com.ibm.icu.math.MathContext(111);
\r
4635 (new Test("mcn021")).ok=(mccon1.getDigits())==111;
\r
4636 (new Test("mcn022")).ok=(mccon1.getForm())==com.ibm.icu.math.MathContext.SCIENTIFIC;
\r
4637 (new Test("mcn023")).ok=(mccon1.getLostDigits()?1:0)==0;
\r
4638 (new Test("mcn024")).ok=(mccon1.getRoundingMode())==com.ibm.icu.math.MathContext.ROUND_HALF_UP;
\r
4640 mccon2=new com.ibm.icu.math.MathContext(78,com.ibm.icu.math.MathContext.ENGINEERING);
\r
4641 (new Test("mcn031")).ok=(mccon2.getDigits())==78;
\r
4642 (new Test("mcn032")).ok=(mccon2.getForm())==com.ibm.icu.math.MathContext.ENGINEERING;
\r
4643 (new Test("mcn033")).ok=(mccon2.getLostDigits()?1:0)==0;
\r
4644 (new Test("mcn034")).ok=(mccon2.getRoundingMode())==com.ibm.icu.math.MathContext.ROUND_HALF_UP;
\r
4646 mccon3=new com.ibm.icu.math.MathContext(5,com.ibm.icu.math.MathContext.PLAIN,true);
\r
4647 (new Test("mcn041")).ok=(mccon3.getDigits())==5;
\r
4648 (new Test("mcn042")).ok=(mccon3.getForm())==com.ibm.icu.math.MathContext.PLAIN;
\r
4649 (new Test("mcn043")).ok=(mccon3.getLostDigits()?1:0)==1;
\r
4650 (new Test("mcn044")).ok=(mccon3.getRoundingMode())==com.ibm.icu.math.MathContext.ROUND_HALF_UP;
\r
4652 mccon4=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.SCIENTIFIC,false,com.ibm.icu.math.MathContext.ROUND_FLOOR);
\r
4653 (new Test("mcn051")).ok = (mccon4.getDigits()) == 0;
\r
4654 (new Test("mcn052")).ok = (mccon4.getForm()) == com.ibm.icu.math.MathContext.SCIENTIFIC;
\r
4655 (new Test("mcn053")).ok = (mccon4.getLostDigits() ? 1 : 0) == 0;
\r
4656 (new Test("mcn054")).ok = (mccon4.getRoundingMode()) == com.ibm.icu.math.MathContext.ROUND_FLOOR;
\r
4658 (new Test("mcn061")).ok=(mccon1.toString()).equals("digits=111 form=SCIENTIFIC lostDigits=0 roundingMode=ROUND_HALF_UP");
\r
4660 (new Test("mcn062")).ok=(mccon2.toString()).equals("digits=78 form=ENGINEERING lostDigits=0 roundingMode=ROUND_HALF_UP");
\r
4662 (new Test("mcn063")).ok=(mccon3.toString()).equals("digits=5 form=PLAIN lostDigits=1 roundingMode=ROUND_HALF_UP");
\r
4664 (new Test("mcn064")).ok=(mccon4.toString()).equals("digits=0 form=SCIENTIFIC lostDigits=0 roundingMode=ROUND_FLOOR");
\r
4666 // complete testing rounding modes round trips
\r
4667 mcrmc=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN,false,com.ibm.icu.math.MathContext.ROUND_CEILING);
\r
4668 mcrmd=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN,false,com.ibm.icu.math.MathContext.ROUND_DOWN);
\r
4669 mcrmf=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN,false,com.ibm.icu.math.MathContext.ROUND_FLOOR);
\r
4670 mcrmhd=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN,false,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN);
\r
4671 mcrmhe=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN,false,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN);
\r
4672 mcrmhu=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN,false,com.ibm.icu.math.MathContext.ROUND_HALF_UP);
\r
4673 mcrmun=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN,false,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY);
\r
4674 mcrmu=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN,false,com.ibm.icu.math.MathContext.ROUND_UP);
\r
4676 (new Test("mcn071")).ok = (mcrmc.toString()).equals("digits=0 form=PLAIN lostDigits=0 roundingMode=ROUND_CEILING");
\r
4678 (new Test("mcn072")).ok = (mcrmd.toString()).equals("digits=0 form=PLAIN lostDigits=0 roundingMode=ROUND_DOWN");
\r
4680 (new Test("mcn073")).ok = (mcrmf.toString()).equals("digits=0 form=PLAIN lostDigits=0 roundingMode=ROUND_FLOOR");
\r
4682 (new Test("mcn074")).ok = (mcrmhd.toString()).equals("digits=0 form=PLAIN lostDigits=0 roundingMode=ROUND_HALF_DOWN");
\r
4684 (new Test("mcn075")).ok = (mcrmhe.toString()).equals("digits=0 form=PLAIN lostDigits=0 roundingMode=ROUND_HALF_EVEN");
\r
4686 (new Test("mcn076")).ok = (mcrmhu.toString()).equals("digits=0 form=PLAIN lostDigits=0 roundingMode=ROUND_HALF_UP");
\r
4688 (new Test("mcn077")).ok = (mcrmun.toString()).equals("digits=0 form=PLAIN lostDigits=0 roundingMode=ROUND_UNNECESSARY");
\r
4690 (new Test("mcn078")).ok = (mcrmu.toString()).equals("digits=0 form=PLAIN lostDigits=0 roundingMode=ROUND_UP");
\r
4692 // [get methods tested already]
\r
4697 new com.ibm.icu.math.MathContext(-1);
\r
4699 } catch (java.lang.IllegalArgumentException $131) {
\r
4701 flag = (e.getMessage()).equals("Digits too small: -1");
\r
4703 (new Test("mcn101")).ok = flag;
\r
4705 new com.ibm.icu.math.MathContext(1000000000);
\r
4707 } catch (java.lang.IllegalArgumentException $132) {
\r
4709 flag = (e.getMessage()).equals("Digits too large: 1000000000");
\r
4710 }/* checkdigbig */
\r
4711 (new Test("mcn102")).ok = flag;
\r
4714 new com.ibm.icu.math.MathContext(0, 5);
\r
4716 } catch (java.lang.IllegalArgumentException $133) {
\r
4718 flag = (e.getMessage()).equals("Bad form value: 5");
\r
4720 (new Test("mcn111")).ok = flag;
\r
4722 new com.ibm.icu.math.MathContext(0, -1);
\r
4724 } catch (java.lang.IllegalArgumentException $134) {
\r
4726 flag = (e.getMessage()).equals("Bad form value: -1");
\r
4727 }/* checkformneg */
\r
4728 (new Test("mcn112")).ok = flag;
\r
4730 // [lostDigits cannot be invalid]
\r
4733 new com.ibm.icu.math.MathContext(0,
\r
4734 com.ibm.icu.math.MathContext.PLAIN, false, 12);
\r
4736 } catch (java.lang.IllegalArgumentException $135) {
\r
4738 flag = (e.getMessage()).equals("Bad roundingMode value: 12");
\r
4740 (new Test("mcn121")).ok = flag;
\r
4742 new com.ibm.icu.math.MathContext(0,
\r
4743 com.ibm.icu.math.MathContext.PLAIN, false, -1);
\r
4745 } catch (java.lang.IllegalArgumentException $136) {
\r
4747 flag = (e.getMessage()).equals("Bad roundingMode value: -1");
\r
4748 }/* checkroundneg */
\r
4749 (new Test("mcn122")).ok = flag;
\r
4751 summary("MathContext");
\r
4754 /* ----------------------------------------------------------------- */
\r
4757 * Test general arithmetic (base operators).
\r
4759 * Unlike the specific method tests, these tests were randomly generated by
\r
4760 * an IBM Object Rexx procedure, then manually corrected for known
\r
4761 * differences from ANSI X3-274. These differences are:
\r
4763 * <li>the trigger point in exponential notation is fixed in ANSI X3-274
\r
4764 * but varies with DIGITS in Classic and Object Rexx
\r
4765 * <li>some trailing zeros were missing (e.g., 1.3 + 1E-60 should show
\r
4766 * seven trailing zeros)
\r
4767 * <li>the power operator is less accurate in Object Rexx
\r
4768 * <li>ANSI X3-274 [errata 1999] rounds input numbers to DIGITS (rather
\r
4769 * than truncating to DIGITS+1).
\r
4773 public void diagmath() {
\r
4774 com.ibm.icu.math.MathContext def;
\r
4775 def = com.ibm.icu.math.MathContext.DEFAULT;
\r
4776 mathtest(1,def,"-9375284.42","5516.99832E+27276984","5.51699832E+27276987","-5.51699832E+27276987","-5.17234284E+27276994","-1.69934516E-27276981","0","-9375284.42","6.79057752E+41");
\r
4777 mathtest(2,def,"-410.832710","99.3588243E-502740862","-410.832710","-410.832710","-4.08198550E-502740858","-4.13483868E+502740862","","","1.36977786E+26");
\r
4778 mathtest(3,def,"80025.2340","-8.03097581","80017.2030","80033.2650","-642680.718","-9964.57167","-9964","4.59102916","5.94544517E-40");
\r
4779 mathtest(4,def,"81052020.2","-464525495","-383473475","545577515","-3.76507298E+16","-0.17448347","0","81052020.2","");
\r
4780 mathtest(5,def,"715.069294E-26923151","85.4404128E+796388557","8.54404128E+796388558","-8.54404128E+796388558","6.10958157E+769465410","8.36921628E-823311708","0","7.15069294E-26923149","4.88802213E-242308334");
\r
4781 mathtest(6,def,"-21971575.0E+31454441","-70944960.3E+111238221","-7.09449603E+111238228","7.09449603E+111238228","1.55877252E+142692677","3.09698884E-79783781","0","-2.19715750E+31454448","-4.04549502E-220181139");
\r
4782 mathtest(7,def,"682.25316","54470185.6","54470867.9","-54469503.4","3.71624563E+10","0.0000125252586","0","682.25316","3.48578699E+154365541");
\r
4783 mathtest(8,def,"-257586757.","2082888.71","-255503868","-259669646","-5.36524548E+14","-123.668036","-123","-1391445.67","-1.26879515E+17519020");
\r
4784 mathtest(9,def,"319577540.E+242599761","60.7124561","3.19577540E+242599769","3.19577540E+242599769","1.94023374E+242599771","5.26378869E+242599767","","","");
\r
4785 mathtest(10,def,"-13769977.0","24371.3381","-13745605.7","-13794348.3","-3.35592765E+11","-565.007015","-565","-170.9735","-8.73734001E+173982");
\r
4786 mathtest(11,def,"-475.434972E-725464311","-3.22214066E-865476836","-4.75434972E-725464309","-4.75434972E-725464309","","1.47552519E+140012527","","","");
\r
4787 mathtest(12,def,"842.01250","197199893","197200735","-197199051","1.66044775E+11","0.00000426984258","0","842.01250","7.00674164E+576872502");
\r
4788 mathtest(13,def,"572.173103E+280128428","-7140.19428","5.72173103E+280128430","5.72173103E+280128430","-4.08542712E+280128434","-8.01341085E+280128426","","","");
\r
4789 mathtest(14,def,"674235.954E+476135291","9684.82245","6.74235954E+476135296","6.74235954E+476135296","6.52985550E+476135300","6.96177919E+476135292","","","");
\r
4790 mathtest(15,def,"-360557.921E+437116514","930428850","-3.60557921E+437116519","-3.60557921E+437116519","-3.35473492E+437116528","-3.87517993E+437116510","","","");
\r
4791 mathtest(16,def,"957165918E-394595705","1676.59073E-829618944","9.57165918E-394595697","9.57165918E-394595697","","5.70900161E+435023244","","","9.16166595E-789191393");
\r
4792 mathtest(17,def,"-2610864.40","31245912.7","28635048.3","-33856777.1","-8.15788411E+13","-0.0835585897","0","-2610864.40","-3.12008905E+200498284");
\r
4793 mathtest(18,def,"959.548461","98.994577E+776775426","9.89945770E+776775427","-9.89945770E+776775427","9.49900940E+776775430","9.69293965E-776775426","0","959.548461","6.61712185E+29");
\r
4794 mathtest(19,def,"-41085.0268","3115477.61","3074392.58","-3156562.64","-1.27999481E+11","-0.0131873927","0","-41085.0268","4.73844173E+14373829");
\r
4795 mathtest(20,def,"-723420285.","2681660.35","-720738625","-726101945","-1.93996749E+15","-269.765813","-269","-2053650.85","4.14324113E+23757873");
\r
4796 mathtest(21,def,"63542018.0E-817732230","-8836243.22","-8836243.22","8836243.22","-5.61472726E-817732216","-7.19106711E-817732230","0","6.35420180E-817732223","");
\r
4797 mathtest(22,def,"-96051.7108","-291201.955","-387253.666","195150.244","2.79704460E+10","0.329845694","0","-96051.7108","3.53617153E-1450916");
\r
4798 mathtest(23,def,"108490.853","91685996.5","91794487.4","-91577505.7","9.94709197E+12","0.00118328706","0","108490.853","6.98124265E+461675038");
\r
4799 mathtest(24,def,"-27489.1735","-9835835.4E-506411649","-27489.1735","-27489.1735","2.70378986E-506411638","2.79479804E+506411646","","","4.05866472E-45");
\r
4800 mathtest(25,def,"-89220406.6","993391.008E-611041175","-89220406.6","-89220406.6","-8.86307496E-611041162","-8.98139865E+611041176","","","3.19625913E+79");
\r
4801 mathtest(26,def,"4.75502020","-17089144.9","-17089140.2","17089149.7","-81259229.2","-2.78247989E-7","0","4.75502020","1.0630191E-11571955");
\r
4802 mathtest(27,def,"68027916.2","-796883.839","67231032.4","68824800.0","-5.42103470E+13","-85.3674185","-85","292789.885","8.29415374E-6241744");
\r
4803 mathtest(28,def,"-8.01969439E+788605478","92154156.0","-8.01969439E+788605478","-8.01969439E+788605478","-7.39048168E+788605486","-8.70247717E+788605470","","","");
\r
4804 mathtest(29,def,"-8012.98341","96188.8651","88175.8817","-104201.849","-770759780","-0.0833046881","0","-8012.98341","-1.16010156E+375502");
\r
4805 mathtest(30,def,"21761476E+592330677","-9.70744506","2.17614760E+592330684","2.17614760E+592330684","-2.11248333E+592330685","-2.24173053E+592330683","","","");
\r
4806 mathtest(31,def,"-9840778.51","-17907.219","-9858685.73","-9822871.29","1.76220976E+11","549.542534","549","-9715.279","-6.62997437E-125225");
\r
4807 mathtest(32,def,"-4.1097614","-819.225776E-145214751","-4.10976140","-4.10976140","3.36682247E-145214748","5.01664074E+145214748","","","0.0000122876018");
\r
4808 mathtest(33,def,"-448.880985","-394.087374E-442511435","-448.880985","-448.880985","1.76898329E-442511430","1.13903925E+442511435","","","2.46306099E-11");
\r
4809 mathtest(34,def,"779.445304E+882688544","-797868519","7.79445304E+882688546","7.79445304E+882688546","-6.21894870E+882688555","-9.7690946E+882688537","","","");
\r
4810 mathtest(35,def,"799995477","-6.23675208E+156309440","-6.23675208E+156309440","6.23675208E+156309440","-4.98937346E+156309449","-1.28271169E-156309432","0","799995477","3.81482667E-54");
\r
4811 mathtest(36,def,"-51932.8170","591840275E-278480289","-51932.8170","-51932.8170","-3.07359327E-278480276","-8.7748028E+278480284","","","1.96178443E+28");
\r
4812 mathtest(37,def,"70.3552392","-4228656.73","-4228586.38","4228727.09","-297508156","-0.0000166377277","0","70.3552392","9.14742382E-7811584");
\r
4813 mathtest(38,def,"1588359.34","-12232799.2","-10644439.9","13821158.5","-1.94300809E+13","-0.129844307","0","1588359.34","1.56910086E-75854960");
\r
4814 mathtest(39,def,"2842.16206","-3.23234345","2838.92972","2845.39440","-9186.84392","-879.288388","-879","0.93216745","4.35565514E-11");
\r
4815 mathtest(40,def,"29960.2305","45.2735747E-95205475","29960.2305","29960.2305","1.35640673E-95205469","6.61759773E+95205477","","","2.413936E+22");
\r
4816 mathtest(41,def,"2916565.77","1151935.43E-787118724","2916565.77","2916565.77","3.35969544E-787118712","2.53188303E+787118724","","","2916565.77");
\r
4817 mathtest(42,def,"-52723012.9E-967143787","79.4088237","79.4088237","-79.4088237","-4.18667244E-967143778","-6.63944011E-967143782","0","-5.27230129E-967143780","");
\r
4818 mathtest(43,def,"-167473465","793646.597","-166679819","-168267112","-1.32914746E+14","-211.017682","-211","-14033.033","-1.19053789E+6526910");
\r
4819 mathtest(44,def,"-31769071.0","133.4360","-31768937.6","-31769204.4","-4.23913776E+9","-238084.707","-238084","-94.3760","-5.84252432E+997");
\r
4820 mathtest(45,def,"45960.6383","-93352.7468","-47392.1085","139313.385","-4.29055183E+9","-0.492333004","0","45960.6383","1.88335323E-435248");
\r
4821 mathtest(46,def,"606.175648","5.28528458E-981983620","606.175648","606.175648","3.20381081E-981983617","1.14691203E+981983622","","","8.18450516E+13");
\r
4822 mathtest(47,def,"171578.617E+643006110","-407774.293","1.71578617E+643006115","1.71578617E+643006115","-6.99653492E+643006120","-4.20768597E+643006109","","","");
\r
4823 mathtest(48,def,"-682286332.","-464.871699","-682286797","-682285867","3.17175606E+11","1467687.39","1467687","-182.709787","-1.6050843E-4108");
\r
4824 mathtest(49,def,"492088.428","653.72170","492742.150","491434.706","321688884","752.74911","752","489.70960","3.94658596E+3722");
\r
4825 mathtest(50,def,"74303782.5","1141.68058","74304924.2","74302640.8","8.48311855E+10","65082.812","65082","926.99244","4.94849869E+8988");
\r
4826 mathtest(51,def,"74.7794084E+119375329","-34799355.6","7.47794084E+119375330","7.47794084E+119375330","-2.60227522E+119375338","-2.14887337E+119375323","","","");
\r
4827 mathtest(52,def,"-9432.08369","33735.5058","24303.4221","-43167.5895","-318196114","-0.279589218","0","-9432.08369","2.309567E+134087");
\r
4828 mathtest(53,def,"4249198.78E-112433155","418673051.","418673051","-418673051","1.77902502E-112433140","1.01492054E-112433157","0","4.24919878E-112433149","");
\r
4829 mathtest(54,def,"-2960933.02","-207933.38","-3168866.40","-2752999.64","6.15676811E+11","14.2398158","14","-49865.70","-2.75680397E-1345624");
\r
4830 mathtest(55,def,"29317.7519E+945600035","1.43555750","2.93177519E+945600039","2.93177519E+945600039","4.20873186E+945600039","2.04225549E+945600039","","","2.93177519E+945600039");
\r
4831 mathtest(56,def,"-51.1693770","-638055.414","-638106.583","638004.245","32648898.0","0.0000801958198","0","-51.1693770","-3.48266075E-1090443");
\r
4832 mathtest(57,def,"-756343055.","-68.9248344E+217100975","-6.89248344E+217100976","6.89248344E+217100976","5.21308198E+217100985","1.09734475E-217100968","0","-756343055","-7.06265897E-63");
\r
4833 mathtest(58,def,"2538.80406E+694185197","-3386499.65","2.53880406E+694185200","2.53880406E+694185200","-8.59765906E+694185206","-7.49683839E+694185193","","","");
\r
4834 mathtest(59,def,"-54344.0672","-8086.45235","-62430.5196","-46257.6149","439450710","6.72038427","6","-5825.35310","3.62916861E-38289");
\r
4835 mathtest(60,def,"3.31600054","217481648","217481651","-217481645","721169262","1.5247266E-8","0","3.31600054","3.73134969E+113224119");
\r
4836 mathtest(61,def,"681832.671","320341.161E+629467560","3.20341161E+629467565","-3.20341161E+629467565","2.18419069E+629467571","2.12845789E-629467560","0","681832.671","3.16981139E+17");
\r
4837 mathtest(62,def,"832689481","348040024E-882122501","832689481","832689481","2.89809267E-882122484","2.3925107E+882122501","","","5.77363381E+26");
\r
4838 mathtest(63,def,"14.5512326E+257500811","60.9979577E-647314724","1.45512326E+257500812","1.45512326E+257500812","8.87595471E-389813911","2.38552784E+904815534","","","");
\r
4839 mathtest(64,def,"-901.278844","449461667.","449460766","-449462568","-4.05090292E+11","-0.00000200524074","0","-901.278844","");
\r
4840 mathtest(65,def,"-5.32627675","-738860216E-238273224","-5.32627675","-5.32627675","3.93537399E-238273215","7.20877459E+238273215","","","-0.00000822306838");
\r
4841 mathtest(66,def,"-505383463.","3.18756328","-505383460","-505383466","-1.61094177E+9","-158548527","-158548527","-0.23671144","-1.29081226E+26");
\r
4842 mathtest(67,def,"769241.44E-720927320","-145382631.","-145382631","145382631","-1.11834344E-720927306","-5.29115091E-720927323","0","7.6924144E-720927315","");
\r
4843 mathtest(68,def,"-6.45038910","56736.4411E+440937167","5.67364411E+440937171","-5.67364411E+440937171","-3.65972121E+440937172","-1.13690407E-440937171","0","-6.45038910","72030.3421");
\r
4844 mathtest(69,def,"58.4721075","-712186829","-712186771","712186887","-4.16430648E+10","-8.21022028E-8","0","58.4721075","");
\r
4845 mathtest(70,def,"8244.08357","245.302828E+652007959","2.45302828E+652007961","-2.45302828E+652007961","2.02229701E+652007965","3.36077804E-652007958","0","8244.08357","67964913.9");
\r
4846 mathtest(71,def,"45.5361397","-76579063.9","-76579018.4","76579109.4","-3.48711495E+9","-5.94629098E-7","0","45.5361397","3.98335374E-126995367");
\r
4847 mathtest(72,def,"594420.54E+685263039","-952420.179","5.94420540E+685263044","5.94420540E+685263044","-5.66138117E+685263050","-6.24115861E+685263038","","","");
\r
4848 mathtest(73,def,"-841310701.","9398110.4","-831912591","-850708811","-7.90673085E+15","-89.5191337","-89","-4878875.4","1.30001466E+83877722");
\r
4849 mathtest(74,def,"904392146E-140100276","168116093.","168116093","-168116093","1.52042874E-140100259","5.37956914E-140100276","0","9.04392146E-140100268","");
\r
4850 mathtest(75,def,"-907324792E+685539670","-15.6902171","-9.07324792E+685539678","-9.07324792E+685539678","1.42361230E+685539680","5.78274211E+685539677","","","");
\r
4851 mathtest(76,def,"987013606.","-26818.3572E+560907442","-2.68183572E+560907446","2.68183572E+560907446","-2.64700834E+560907455","-3.68036565E-560907438","0","987013606","1.0399934E-27");
\r
4852 mathtest(77,def,"-741317564","630.241530E-212782946","-741317564","-741317564","-4.67209116E-212782935","-1.1762436E+212782952","","","1.65968527E+53");
\r
4853 mathtest(78,def,"61867907.2","-139204670","-77336763","201072577","-8.61230161E+15","-0.444438446","0","61867907.2","");
\r
4854 mathtest(79,def,"-273.622743E+531282717","-4543.68684","-2.73622743E+531282719","-2.73622743E+531282719","1.24325606E+531282723","6.02204229E+531282715","","","");
\r
4855 mathtest(80,def,"-383588949.","-428640583.","-812229532","45051634","1.64421791E+17","0.89489648","0","-383588949","");
\r
4856 mathtest(81,def,"-56182.2686","32.7741649","-56149.4944","-56215.0428","-1841326.94","-1714.22426","-1714","-7.3499614","-5.45476402E+156");
\r
4857 mathtest(82,def,"-6366384.30","332014.980","-6034369.32","-6698399.28","-2.11373496E+12","-19.1749911","-19","-58099.680","-3.05392399E+2258994");
\r
4858 mathtest(83,def,"-1.27897702","-8213776.03E-686519123","-1.27897702","-1.27897702","1.05052308E-686519116","1.55711212E+686519116","","","0.139668371");
\r
4859 mathtest(84,def,"65.4059036","401162145E+884155506","4.01162145E+884155514","-4.01162145E+884155514","2.62383726E+884155516","1.63041066E-884155513","0","65.4059036","18300704.1");
\r
4860 mathtest(85,def,"-20630916.8","158987411.E-480500612","-20630916.8","-20630916.8","-3.28005605E-480500597","-1.29764468E+480500611","","","4.25634728E+14");
\r
4861 mathtest(86,def,"-4.72705853","-97626742.4","-97626747.1","97626737.7","461487325","4.84197097E-8","0","-4.72705853","2.92654449E-65858120");
\r
4862 mathtest(87,def,"8.43528169","-4573.45752","-4565.02224","4581.89280","-38578.4025","-0.00184439927","0","8.43528169","8.84248688E-4236");
\r
4863 mathtest(88,def,"1.91075189","-704247089.","-704247087","704247091","-1.34564146E+9","-2.71318394E-9","0","1.91075189","6.84547494E-198037309");
\r
4864 mathtest(89,def,"31997198E-551746308","326.892584","326.892584","-326.892584","1.04596467E-551746298","9.78829119E-551746304","0","3.1997198E-551746301","");
\r
4865 mathtest(90,def,"127589.213","84184304.","84311893.2","-84056714.8","1.07410091E+13","0.00151559385","0","127589.213","2.87917042E+429829394");
\r
4866 mathtest(91,def,"714494248","-7025063.59","707469185","721519312","-5.01936753E+15","-101.706446","-101","4962825.41","1.65018516E-62199908");
\r
4867 mathtest(92,def,"-52987680.2E+279533503","-42014114.8","-5.29876802E+279533510","-5.29876802E+279533510","2.22623048E+279533518","1.26118759E+279533503","","","");
\r
4868 mathtest(93,def,"-8795.0513","-225294.394E-884414238","-8795.05130","-8795.05130","1.98147575E-884414229","3.90380388E+884414236","","","1.2927759E-8");
\r
4869 mathtest(94,def,"83280.1394","161566354.","161649634","-161483074","1.34552685E+13","0.000515454718","0","83280.1394","5.30774809E+794993940");
\r
4870 mathtest(95,def,"112.877897","-9.96481666","102.913080","122.842714","-1124.80755","-11.3276441","-11","3.26491374","2.97790545E-21");
\r
4871 mathtest(96,def,"-572542.121E+847487397","433.843420","-5.72542121E+847487402","-5.72542121E+847487402","-2.48393632E+847487405","-1.3196976E+847487400","","","");
\r
4872 mathtest(97,def,"4709649.89","20949266.4","25658916.3","-16239616.5","9.86637102E+13","0.224812163","0","4709649.89","4.85293644E+139794213");
\r
4873 mathtest(98,def,"-9475.19322","-30885.2475E+584487341","-3.08852475E+584487345","3.08852475E+584487345","2.92643688E+584487349","3.06787026E-584487342","0","-9475.19322","-1.17553557E-12");
\r
4874 mathtest(99,def,"-213230447.","864.815822E+127783046","8.64815822E+127783048","-8.64815822E+127783048","-1.84405064E+127783057","-2.46561686E-127783041","0","-213230447","-9.11261361E+74");
\r
4875 mathtest(100,def,"-89.1168786E+403375873","6464.05744","-8.91168786E+403375874","-8.91168786E+403375874","-5.76056622E+403375878","-1.37865233E+403375871","","","");
\r
4876 mathtest(101,def,"61774.4958","-14000.7706","47773.7252","75775.2664","-864890545","-4.41222112","-4","5771.4134","7.59030407E-67077");
\r
4877 mathtest(102,def,"1.60731414","7.04330293E-427033419","1.60731414","1.60731414","1.13208004E-427033418","2.28204602E+427033418","","","27.7143921");
\r
4878 mathtest(103,def,"7955012.51","-230117662.","-222162650","238072675","-1.83058888E+15","-0.0345693261","0","7955012.51","");
\r
4879 mathtest(104,def,"4086661.08","1.77621994","4086662.86","4086659.30","7258808.90","2300762.98","2300762","1.73840572","1.67007988E+13");
\r
4880 mathtest(105,def,"-610.076931","-207.658306","-817.735237","-402.418625","126687.542","2.93788841","2","-194.760319","4.36518377E-580");
\r
4881 mathtest(106,def,"-98.6353697","-99253.3899E-716309653","-98.6353697","-98.6353697","9.78989481E-716309647","9.93773309E+716309649","","","1.14729007E-20");
\r
4882 mathtest(107,def,"-959923730","409.125542E-900295528","-959923730","-959923730","-3.92729316E-900295517","-2.3462816E+900295534","","","8.49076677E+35");
\r
4883 mathtest(108,def,"379965133","-8.15869657","379965125","379965141","-3.10002023E+9","-46571793.6","-46571793","5.19214999","2.30170697E-69");
\r
4884 mathtest(109,def,"833.646797","1389499.46E-443407251","833.646797","833.646797","1.15835177E-443407242","5.99961944E+443407247","","","833.646797");
\r
4885 mathtest(110,def,"2314933.4E-646489194","-7401538.17","-7401538.17","7401538.17","-1.71340679E-646489181","-3.12763826E-646489195","0","2.3149334E-646489188","");
\r
4886 mathtest(111,def,"808525347","-5959.74667E+58232168","-5.95974667E+58232171","5.95974667E+58232171","-4.81860624E+58232180","-1.35664382E-58232163","0","808525347","3.5796302E-54");
\r
4887 mathtest(112,def,"-17220490.6E+726428704","19.9855688","-1.72204906E+726428711","-1.72204906E+726428711","-3.44161300E+726428712","-8.61646259E+726428709","","","");
\r
4888 mathtest(113,def,"59015.9705","-72070405.4E+322957279","-7.20704054E+322957286","7.20704054E+322957286","-4.25330492E+322957291","-8.18865527E-322957283","0","59015.9705","4.01063488E-34");
\r
4889 mathtest(114,def,"16411470E+578192008","497470.005E-377473621","1.64114700E+578192015","1.64114700E+578192015","8.16421406E+200718399","3.29898684E+955665630","","","");
\r
4890 mathtest(115,def,"-107.353544E+609689808","-659.50136E-456711743","-1.07353544E+609689810","-1.07353544E+609689810","7.07998083E+152978069","","","","");
\r
4891 mathtest(116,def,"786.134163","-53.0292275E-664419768","786.134163","786.134163","-4.16880874E-664419764","-1.48245449E+664419769","","","3.33055532E-15");
\r
4892 mathtest(117,def,"23.5414714","5000786.91","5000810.45","-5000763.37","117725882","0.0000047075534","0","23.5414714","4.4895618E+6860247");
\r
4893 mathtest(118,def,"-69775.6113","561292120.","561222344","-561361896","-3.91645008E+13","-0.000124312473","0","-69775.6113","");
\r
4894 mathtest(119,def,"919043.871","-71606613.7","-70687569.8","72525657.6","-6.58096194E+13","-0.0128346227","0","919043.871","3.05862429E-427014317");
\r
4895 mathtest(120,def,"-27667.1915","-293455.107E-789181924","-27667.1915","-27667.1915","8.11907864E-789181915","9.42808315E+789181922","","","-4.72176938E-14");
\r
4896 mathtest(121,def,"-908603625.","-982.409273E+449441134","-9.82409273E+449441136","9.82409273E+449441136","8.92620627E+449441145","9.2487281E-449441129","0","-908603625","2.60768632E-90");
\r
4897 mathtest(122,def,"847.113351","5.71511268","852.828464","841.398238","4841.34825","148.223386","148","1.27667436","3.69529538E+17");
\r
4898 mathtest(123,def,"-992140475","3.82918218","-992140471","-992140479","-3.79908663E+9","-259099836","-259099836","-0.14787752","9.68930595E+35");
\r
4899 mathtest(124,def,"-12606437.5","268123145E+362798858","2.68123145E+362798866","-2.68123145E+362798866","-3.38007767E+362798873","-4.70173416E-362798860","0","-12606437.5","-2.00344362E+21");
\r
4900 mathtest(125,def,"3799470.64","-264.703992","3799205.94","3799735.34","-1.00573505E+9","-14353.6583","-14353","174.242824","2.3625466E-1744");
\r
4901 mathtest(126,def,"-8.11070247","-931284056.E-654288974","-8.11070247","-8.11070247","7.55336789E-654288965","8.70916067E+654288965","","","-6.58375662E-9");
\r
4902 mathtest(127,def,"-242660177.","-6.09832715E-943742415","-242660177","-242660177","1.47982115E-943742406","3.97912692E+943742422","","","4.89788901E-51");
\r
4903 mathtest(128,def,"76.1463803","-45.6758006E-636907996","76.1463803","76.1463803","-3.47804688E-636907993","-1.66710554E+636907996","","","3.90619287E-10");
\r
4904 mathtest(129,def,"761185.862","-70878470.9E+221214712","-7.08784709E+221214719","7.08784709E+221214719","-5.39516900E+221214725","-1.07393099E-221214714","0","761185.862","6.75406144E-42");
\r
4905 mathtest(130,def,"6203606.54","-195.92748E-833512061","6203606.54","6203606.54","-1.21545700E-833512052","-3.1662769E+833512065","","","2.59843292E-14");
\r
4906 mathtest(131,def,"-163274837.","95.0448550E+887876533","9.50448550E+887876534","-9.50448550E+887876534","-1.55184332E+887876543","-1.71787139E-887876527","0","-163274837","1.34645731E+82");
\r
4907 mathtest(132,def,"2.38638190","-807986179.","-807986177","807986181","-1.92816359E+9","-2.95349347E-9","0","2.38638190","1.19029305E-305208656");
\r
4908 mathtest(133,def,"-109022296E-811981158","7.19685680","7.19685680","-7.19685680","-7.84617852E-811981150","-1.51485988E-811981151","0","-1.09022296E-811981150","");
\r
4909 mathtest(134,def,"-559250.780E-273710421","-393780811.","-393780811","393780811","2.20222226E-273710407","1.42020831E-273710424","0","-5.59250780E-273710416","");
\r
4910 mathtest(135,def,"-88021.9966E+555334642","7599686.64E+818884053","7.59968664E+818884059","-7.59968664E+818884059","","-1.15823192E-263549413","0","-8.80219966E+555334646","");
\r
4911 mathtest(136,def,"194.317648E-197450009","-930.979064","-930.979064","930.979064","-1.80905662E-197450004","-2.08723972E-197450010","0","1.94317648E-197450007","");
\r
4912 mathtest(137,def,"9495479.65","7405697.96","16901177.6","2089781.69","7.03206543E+13","1.28218565","1","2089781.69","1.0135446E+51673383");
\r
4913 mathtest(138,def,"-1656.28925","-163050511E-682882380","-1656.28925","-1656.28925","2.70058809E-682882369","1.01581359E+682882375","","","3.64525265E-7");
\r
4914 mathtest(139,def,"95581.3784E+64262149","-99.2879365","9.55813784E+64262153","9.55813784E+64262153","-9.49007783E+64262155","-9.62668596E+64262151","","","");
\r
4915 mathtest(140,def,"643761.452","3.73446939","643765.186","643757.718","2404107.44","172383.647","172383","2.41514363","1.71751236E+23");
\r
4916 mathtest(141,def,"7960.49866E-129827423","3220.22850","3220.22850","-3220.22850","2.56346247E-129827416","2.47202913E-129827423","0","7.96049866E-129827420","");
\r
4917 mathtest(142,def,"-6356.64112E-707203818","1805054.98","1805054.98","-1805054.98","-1.14740867E-707203808","-3.52157756E-707203821","0","-6.35664112E-707203815","");
\r
4918 mathtest(143,def,"2.3904042","8476.52006","8478.91046","-8474.12966","20262.3092","0.000282003013","0","2.3904042","2.00251752E+3208");
\r
4919 mathtest(144,def,"-713298.658","-957.782729","-714256.441","-712340.875","683185135","744.739528","744","-708.307624","3.68122321E-5608");
\r
4920 mathtest(145,def,"607779233.E-820497365","-20.1188742E-857318323","6.07779233E-820497357","6.07779233E-820497357","","-3.02094057E+36820965","","","");
\r
4921 mathtest(146,def,"-205888251","-908.792922E+250680613","-9.08792922E+250680615","9.08792922E+250680615","1.87109785E+250680624","2.26551336E-250680608","0","-205888251","-1.5042358E-75");
\r
4922 mathtest(147,def,"51542399.1","-23212.2414","51519186.9","51565611.3","-1.19641461E+12","-2220.4835","-2220","11223.1920","1.71641348E-179015");
\r
4923 mathtest(148,def,"4.44287230","158923023","158923027","-158923019","706074697","2.79561275E-8","0","4.44287230","7.12573416E+102928693");
\r
4924 mathtest(149,def,"-79123682.6","-3.8571770","-79123686.5","-79123678.8","305194049","20513365.8","20513365","-2.9293950","2.55137345E-32");
\r
4925 mathtest(150,def,"-80.3324347E-569715030","883142.351","883142.351","-883142.351","-7.09449752E-569715023","-9.09620455E-569715035","0","-8.03324347E-569715029","");
\r
4926 mathtest(151,def,"13637.483","-52798.5631","-39161.0801","66436.0461","-720039507","-0.258292692","0","13637.483","1.47163791E-218310");
\r
4927 mathtest(152,def,"6.42934843E-276476458","84057440.0E-388039782","6.42934843E-276476458","6.42934843E-276476458","5.40434570E-664516232","7.64875593E+111563316","","","");
\r
4928 mathtest(153,def,"-5.64133087","-17401297.","-17401302.6","17401291.4","98166473.9","3.24190253E-7","0","-5.64133087","-1.25908916E-13075014");
\r
4929 mathtest(154,def,"95469.7057E+865733824","198.829749","9.54697057E+865733828","9.54697057E+865733828","1.89822176E+865733831","4.80158056E+865733826","","","");
\r
4930 mathtest(155,def,"-416466.209","-930153427","-930569893","929736961","3.87377472E+14","0.000447739262","0","-416466.209","");
\r
4931 mathtest(156,def,"-1541733.85","-1.99208708","-1541735.84","-1541731.86","3071268.08","773928.944","773928","-1.88034976","4.20708401E-13");
\r
4932 mathtest(157,def,"-39152691.8","-645131748.","-684284440","605979056","2.52586445E+16","0.0606894513","0","-39152691.8","");
\r
4933 mathtest(158,def,"113.939979","-58282550.4","-58282436.5","58282664.3","-6.64071257E+9","-0.0000019549587","0","113.939979","2.106557E-119868330");
\r
4934 mathtest(159,def,"-324971.736","-9517.15154","-334488.888","-315454.585","3.09280526E+9","34.1459033","34","-1388.58364","-5.82795263E-52457");
\r
4935 mathtest(160,def,"-76.9436744","-9548122.75E-273599728","-76.9436744","-76.9436744","7.34667648E-273599720","8.05851332E+273599722","","","1.37489895E-19");
\r
4936 mathtest(161,def,"-430393.282","-70.2551505","-430463.537","-430323.027","30237344.8","6126.14561","6126","-10.2300370","4.26006409E-395");
\r
4937 mathtest(162,def,"-3308051.90","-349433799.E+397813188","-3.49433799E+397813196","3.49433799E+397813196","1.15594514E+397813203","9.46689161E-397813191","0","-3308051.90","-2.76237768E-20");
\r
4938 mathtest(163,def,"23.1543212E-655822712","5848.20853","5848.20853","-5848.20853","1.35411299E-655822707","3.95921607E-655822715","0","2.31543212E-655822711","");
\r
4939 mathtest(164,def,"-174.261308E-82902077","-200096204.","-200096204","200096204","3.48690262E-82902067","8.70887626E-82902084","0","-1.74261308E-82902075","");
\r
4940 mathtest(165,def,"-50669105.2","9105789.01E+609889700","9.10578901E+609889706","-9.10578901E+609889706","-4.61382181E+609889714","-5.56449366E-609889700","0","-50669105.2","-2.20135008E+69");
\r
4941 mathtest(166,def,"424768856.","-971.71757","424767884","424769828","-4.12755361E+11","-437132.012","-437132","11.19076","2.72651473E-8387");
\r
4942 mathtest(167,def,"7181.2767","999117.918","1006299.19","-991936.641","7.17494223E+9","0.00718761677","0","7181.2767","3.09655124E+3852800");
\r
4943 mathtest(168,def,"8096417.07E-433694528","-68.4863363","-68.4863363","68.4863363","-5.54493942E-433694520","-1.18219451E-433694523","0","8.09641707E-433694522","");
\r
4944 mathtest(169,def,"1236287.5","-7119.97299E-176200498","1236287.50","1236287.50","-8.80233361E-176200489","-1.73636544E+176200500","","","2.26549784E-43");
\r
4945 mathtest(170,def,"-752995833E-654401067","-15.2736930E+803939983","-1.52736930E+803939984","1.52736930E+803939984","1.15010272E+149538926","","0","-7.52995833E-654401059","");
\r
4946 mathtest(171,def,"702992.459","-312.689474","702679.770","703305.148","-219818342","-2248.21274","-2248","66.521448","8.02493322E-1831");
\r
4947 mathtest(172,def,"-4414.38805","-17680.4630E-584364536","-4414.38805","-4414.38805","7.80484246E-584364529","2.49676044E+584364535","","","5.13167312E-8");
\r
4948 mathtest(173,def,"9.46350807","7826.65424","7836.11775","-7817.19073","74067.6056","0.00120913839","0","9.46350807","3.63271495E+7639");
\r
4949 mathtest(174,def,"2078153.7","-16934607.3E+233594439","-1.69346073E+233594446","1.69346073E+233594446","-3.51927168E+233594452","-1.2271638E-233594440","0","2078153.7","2.31549939E-13");
\r
4950 mathtest(175,def,"-9359.74629","7.07761788E+252457696","7.07761788E+252457696","-7.07761788E+252457696","-6.62447077E+252457700","-1.32244301E-252457693","0","-9359.74629","-6.29286677E+27");
\r
4951 mathtest(176,def,"66.2319284E+730468479","25.9391685E+221147044","6.62319284E+730468480","6.62319284E+730468480","1.71800115E+951615526","2.55335588E+509321435","","","");
\r
4952 mathtest(177,def,"317997088.E-90968742","-977426.461","-977426.461","977426.461","-3.10818768E-90968728","-3.2534119E-90968740","0","3.17997088E-90968734","");
\r
4953 mathtest(178,def,"227473386","-6759.61390","227466626","227480146","-1.53763226E+12","-33651.8312","-33651","5618.65110","1.40992627E-56493");
\r
4954 mathtest(179,def,"-392019.462","-245456.503","-637475.965","-146562.959","9.62237263E+10","1.59710359","1","-146562.959","-3.08656533E-1372917");
\r
4955 mathtest(180,def,"-3619556.28E+587673583","-3.45236972","-3.61955628E+587673589","-3.61955628E+587673589","1.24960465E+587673590","1.04842661E+587673589","","","");
\r
4956 mathtest(181,def,"-249.400704E-923930848","831102.919","831102.919","-831102.919","-2.07277653E-923930840","-3.00084019E-923930852","0","-2.49400704E-923930846","");
\r
4957 mathtest(182,def,"65234.2739E+154949914","-694581895","6.52342739E+154949918","6.52342739E+154949918","-4.53105456E+154949927","-9.39187652E+154949909","","","");
\r
4958 mathtest(183,def,"45.2316213","-88775083.4","-88775038.2","88775128.6","-4.01544095E+9","-5.09508069E-7","0","45.2316213","1.92314254E-146962015");
\r
4959 mathtest(184,def,"331100375.","442.343378","331100817","331099933","1.46460058E+11","748514.37","748514","163.759708","6.64011043E+3765");
\r
4960 mathtest(185,def,"81.8162765","5.61239515E+467372163","5.61239515E+467372163","-5.61239515E+467372163","4.59185273E+467372165","1.45777826E-467372162","0","81.8162765","2.99942677E+11");
\r
4961 mathtest(186,def,"-5738.13069E+789464078","33969715.0","-5.73813069E+789464081","-5.73813069E+789464081","-1.94922664E+789464089","-1.68919012E+789464074","","","");
\r
4962 mathtest(187,def,"-7413.03911","2.70630320E-254858264","-7413.03911","-7413.03911","-2.00619315E-254858260","-2.73917539E+254858267","","","-4.07369842E+11");
\r
4963 mathtest(188,def,"-417696.182","27400.6002","-390295.582","-445096.782","-1.14451261E+10","-15.2440523","-15","-6687.1790","-1.58020334E+154017");
\r
4964 mathtest(189,def,"68.8538735E+655647287","3198.17933E-132454826","6.88538735E+655647288","6.88538735E+655647288","2.20207035E+523192466","2.15290846E+788102111","","","");
\r
4965 mathtest(190,def,"-6817.04246","434420.439","427603.397","-441237.481","-2.96146258E+9","-0.0156922692","0","-6817.04246","5.94143518E+1665390");
\r
4966 mathtest(191,def,"8578.27511","647042.341E-490924334","8578.27511","8578.27511","5.55050721E-490924325","1.3257672E+490924332","","","3.98473846E+23");
\r
4967 mathtest(192,def,"4124.11615E+733109424","597385828E+375928745","4.12411615E+733109427","4.12411615E+733109427","","6.9036056E+357180673","","","");
\r
4968 mathtest(193,def,"102.714400","-919017.468","-918914.754","919120.182","-94396327.8","-0.000111765449","0","102.714400","4.04295689E-1848724");
\r
4969 mathtest(194,def,"-4614.33015E+996778733","-433.560812E+22860599","-4.61433015E+996778736","-4.61433015E+996778736","","1.06428672E+973918135","","","");
\r
4970 mathtest(195,def,"457455170.","3709230.48E+677010879","3.70923048E+677010885","-3.70923048E+677010885","1.69680666E+677010894","1.23328861E-677010877","0","457455170","4.37919376E+34");
\r
4971 mathtest(196,def,"-2522468.15","-48482043.5","-51004511.7","45959575.4","1.22294411E+14","0.0520289156","0","-2522468.15","1.42348178E-310373595");
\r
4972 mathtest(197,def,"-659811384","62777.6118","-659748606","-659874162","-4.14213829E+13","-10510.2976","-10510","-18683.9820","3.4393524E+553665");
\r
4973 mathtest(198,def,"4424.94176","-825848.20","-821423.258","830273.142","-3.65433019E+9","-0.00535805704","0","4424.94176","3.42152775E-3010966");
\r
4974 mathtest(199,def,"43.6441884","-6509.89663E-614169377","43.6441884","43.6441884","-2.84119155E-614169372","-6.70428286E+614169374","","","3.31524056E-12");
\r
4975 mathtest(200,def,"897.388381E-843864876","84195.1369","84195.1369","-84195.1369","7.55557376E-843864869","1.06584348E-843864878","0","8.97388381E-843864874","");
\r
4976 mathtest(201,def,"796199825","496.76834","796200322","796199328","3.95526865E+11","1602758.79","1602758","393.91828","6.42647264E+4423");
\r
4977 mathtest(202,def,"573583582","1598.69521","573585181","573581983","9.16985325E+11","358782.323","358782","517.16578","9.91156302E+14004");
\r
4978 mathtest(203,def,"-783144270.","6347.71496","-783137922","-783150618","-4.97117660E+12","-123374.202","-123374","-1284.52496","1.28110803E+56458");
\r
4979 mathtest(204,def,"26909234.7","52411.5081","26961646.2","26856823.2","1.41035357E+12","513.422255","513","22131.0447","9.75836528E+389415");
\r
4980 mathtest(205,def,"8.21915282","24859.7841E-843282959","8.21915282","8.21915282","2.04326365E-843282954","3.30620443E+843282955","","","67.5544731");
\r
4981 mathtest(206,def,"-688.387710","82783.5207E-831870858","-688.387710","-688.387710","-5.69871582E-831870851","-8.31551623E+831870855","","","5.04272012E+22");
\r
4982 mathtest(207,def,"-9792232.","-1749.01166","-9793981.01","-9790482.99","1.71267279E+10","5598.72311","5598","-1264.72732","-8.86985674E-12228");
\r
4983 mathtest(208,def,"-130.765600","8.67437427","-122.091226","-139.439974","-1134.30976","-15.0749317","-15","-0.64998595","-1.11799947E+19");
\r
4984 mathtest(209,def,"917.259102","-368640.426","-367723.167","369557.685","-338138786","-0.00248822169","0","917.259102","8.67104255E-1092094");
\r
4985 mathtest(210,def,"-4.9725631","-294563717.","-294563722","294563712","1.46473667E+9","1.6881112E-8","0","-4.9725631","-6.27962584E-205187284");
\r
4986 mathtest(211,def,"-60962887.2E-514249661","-243021.407","-243021.407","243021.407","1.48152866E-514249648","2.5085398E-514249659","0","-6.09628872E-514249654","");
\r
4987 mathtest(212,def,"-55389219.8","-3772200E+981866393","-3.77220000E+981866399","3.77220000E+981866399","2.08939215E+981866407","1.46835321E-981866392","0","-55389219.8","1.06242678E-31");
\r
4988 mathtest(213,def,"681.666010","626886700","626887382","-626886018","4.27327356E+11","0.00000108738311","0","681.666010","");
\r
4989 mathtest(214,def,"6.42652138","53465894.5","53465900.9","-53465888.1","343599714","1.2019852E-7","0","6.42652138","4.61155532E+43199157");
\r
4990 mathtest(215,def,"561546656","651408.476","562198064","560895248","3.65796251E+14","862.049968","862","32549.688","8.6052377E+5699419");
\r
4991 mathtest(216,def,"7845778.36E-79951139","9.45859047","9.45859047","-9.45859047","7.42100044E-79951132","8.29487056E-79951134","0","7.84577836E-79951133","1.12648216E-719560189");
\r
4992 mathtest(217,def,"54486.2112","10.7565078","54496.9677","54475.4547","586081.356","5065.41828","5065","4.4991930","1.25647168E+52");
\r
4993 mathtest(218,def,"16576482.5","-2217720.83","14358761.7","18794203.3","-3.67620105E+13","-7.47455779","-7","1052436.69","1.38259374E-16010820");
\r
4994 mathtest(219,def,"61.2793787E-392070111","6.22575651","6.22575651","-6.22575651","3.81510491E-392070109","9.84288072E-392070111","0","6.12793787E-392070110","");
\r
4995 mathtest(220,def,"5115136.39","-653674372.","-648559236","658789508","-3.34363357E+15","-0.00782520565","0","5115136.39","");
\r
4996 mathtest(221,def,"-7.84238366E-416477339","-37432758.9E+97369393","-3.74327589E+97369400","3.74327589E+97369400","2.93562057E-319107938","2.09505895E-513846739","0","-7.84238366E-416477339","");
\r
4997 mathtest(222,def,"-387781.3E+284108380","-218085.592","-3.87781300E+284108385","-3.87781300E+284108385","8.45695144E+284108390","1.77811517E+284108380","","","");
\r
4998 mathtest(223,def,"-5353.17736","3.39332346E+546685359","3.39332346E+546685359","-3.39332346E+546685359","-1.81650623E+546685363","-1.57756177E-546685356","0","-5353.17736","-1.53403369E+11");
\r
4999 mathtest(224,def,"-20837.2900E-168652772","-8236.78305E-712819173","-2.08372900E-168652768","-2.08372900E-168652768","1.71632237E-881471937","2.52978497E+544166401","","","");
\r
5000 mathtest(225,def,"-98573.8722E+829022366","309011.007","-9.85738722E+829022370","-9.85738722E+829022370","-3.04604115E+829022376","-3.18997932E+829022365","","","");
\r
5001 mathtest(226,def,"49730750.7","-5315.10636E-299586991","49730750.7","49730750.7","-2.64324229E-299586980","-9.35649211E+299586994","","","3.28756936E-39");
\r
5002 mathtest(227,def,"1539523.40","-962388.581","577134.82","2501911.98","-1.48161974E+12","-1.59969001","-1","577134.819","3.10144834E-5954673");
\r
5003 mathtest(228,def,"81596.2121","-37600.9653","43995.2468","119197.177","-3.06809634E+9","-2.17005631","-2","6394.2815","1.97878299E-184684");
\r
5004 mathtest(229,def,"590146199","-1425404.61","588720794","591571604","-8.41197113E+14","-414.020128","-414","28690.46","2.04650994E-12502170");
\r
5005 mathtest(230,def,"196.05543","505.936305","701.991735","-309.880875","99191.5598","0.387510104","0","196.05543","8.78437397E+1159");
\r
5006 mathtest(231,def,"77.8058449","-642.275274","-564.469429","720.081119","-49972.7704","-0.121140963","0","77.8058449","9.33582626E-1215");
\r
5007 mathtest(232,def,"1468.60684","10068.138","11536.7448","-8599.5312","14786136.3","0.145866777","0","1468.60684","2.54122484E+31884");
\r
5008 mathtest(233,def,"4.98774767E-387968632","4.41731439E-578812376","4.98774767E-387968632","4.98774767E-387968632","2.20324496E-966781007","1.12913577E+190843744","","","");
\r
5009 mathtest(234,def,"981.091059","-92238.9930","-91257.9020","93220.0841","-90494851.3","-0.0106364025","0","981.091059","5.29943342E-275953");
\r
5010 mathtest(235,def,"-3606.24992","8290224.70","8286618.45","-8293830.95","-2.98966222E+10","-0.000435000262","0","-3606.24992","-1.23747107E+29488793");
\r
5011 mathtest(236,def,"-8978571.35","92243.4796","-8886327.87","-9070814.83","-8.28214663E+11","-97.3355666","-97","-30953.8288","-4.95762813E+641384");
\r
5012 mathtest(237,def,"-61968.1992E+810060478","474294671.E+179263414","-6.19681992E+810060482","-6.19681992E+810060482","-2.93911867E+989323905","-1.30653374E+630797060","","","");
\r
5013 mathtest(238,def,"61298431.6E-754429041","-2584862.79","-2584862.79","2584862.79","-1.58448035E-754429027","-2.37143851E-754429040","0","6.12984316E-754429034","");
\r
5014 mathtest(239,def,"621039.064","-5351539.62","-4730500.56","5972578.68","-3.32351516E+12","-0.116048672","0","621039.064","2.41163312E-31002108");
\r
5015 mathtest(240,def,"-19.6007605","-57905696.","-57905715.6","57905676.4","1.13499568E+9","3.38494515E-7","0","-19.6007605","1.05663646E-74829963");
\r
5016 mathtest(241,def,"3626.13109E+687030346","189.896004","3.62613109E+687030349","3.62613109E+687030349","6.88587804E+687030351","1.90953523E+687030347","","","");
\r
5017 mathtest(242,def,"-249334.026","-7.54735834E-14137188","-249334.026","-249334.026","1.88181324E-14137182","3.30359332E+14137192","","","6.69495408E-44");
\r
5018 mathtest(243,def,"417613928.","-925213.216","416688715","418539141","-3.86381925E+14","-451.370474","-451","342767.584","8.38430085E-7976054");
\r
5019 mathtest(244,def,"23.8320309","-50074996.1","-50074972.3","50075019.9","-1.19338885E+9","-4.75926765E-7","0","23.8320309","5.81466387E-68961335");
\r
5020 mathtest(245,def,"49789677.7","-131827812E+156412534","-1.31827812E+156412542","1.31827812E+156412542","-6.56366427E+156412549","-3.77687204E-156412535","0","49789677.7","2.00844843E-8");
\r
5021 mathtest(246,def,"-8907163.61E-741867246","773651.288E-472033282","7.73651288E-472033277","-7.73651288E-472033277","","-1.15131504E-269833963","0","-8.90716361E-741867240","");
\r
5022 mathtest(247,def,"514021711.E+463536646","617441659.","5.14021711E+463536654","5.14021711E+463536654","3.17378418E+463536663","8.32502478E+463536645","","","");
\r
5023 mathtest(248,def,"998175750","2.39285478","998175752","998175748","2.38848961E+9","417148487","417148486","1.30513692","9.96354828E+17");
\r
5024 mathtest(249,def,"873575426.","647853.152E+497450781","6.47853152E+497450786","-6.47853152E+497450786","5.65948593E+497450795","1.3484158E-497450778","0","873575426","4.44429064E+53");
\r
5025 mathtest(250,def,"4352626.8","-130338048.E-744560911","4352626.80","4352626.80","-5.67312881E-744560897","-3.33949055E+744560909","","","2.29746322E-7");
\r
5026 mathtest(251,def,"437.286960","7.37560835","444.662568","429.911352","3225.25735","59.2882565","59","2.12606735","3.05749452E+18");
\r
5027 mathtest(252,def,"8498280.45E+220511522","588617612","8.49828045E+220511528","8.49828045E+220511528","5.00223754E+220511537","1.44376931E+220511520","","","");
\r
5028 mathtest(253,def,"-5320387.77","-7673237.46","-12993625.2","2352849.69","4.08245987E+13","0.693369363","0","-5320387.77","-1.30113745E-51609757");
\r
5029 mathtest(254,def,"587655375","-4.9748366","587655370","587655380","-2.92348947E+9","-118125563","-118125563","0.7919942","1.42687667E-44");
\r
5030 mathtest(255,def,"1266098.44","-2661.64904E-642601142","1266098.44","1266098.44","-3.36990970E-642601133","-4.75681963E+642601144","","","4.92717036E-19");
\r
5031 mathtest(256,def,"3.92737463E+482873483","-685.522747","3.92737463E+482873483","3.92737463E+482873483","-2.69230464E+482873486","-5.72902161E+482873480","","","");
\r
5032 mathtest(257,def,"22826494.1","986189474.","1.00901597E+9","-963362980","2.25112482E+16","0.0231461547","0","22826494.1","");
\r
5033 mathtest(258,def,"-647342.380","-498816386","-499463728","498169044","3.22904986E+14","0.00129775685","0","-647342.380","");
\r
5034 mathtest(259,def,"393092373.","-25.7226822","393092347","393092399","-1.01113902E+10","-15281935.6","-15281935","15.5939430","3.49252839E-224");
\r
5035 mathtest(260,def,"2.96253492","20.7444888","23.7070237","-17.7819539","61.4562725","0.142810698","0","2.96253492","8.03402246E+9");
\r
5036 mathtest(261,def,"53553.3750E+386955423","-732470876","5.35533750E+386955427","5.35533750E+386955427","-3.92262875E+386955436","-7.31133165E+386955418","","","");
\r
5037 mathtest(262,def,"-696451.406E-286535917","-73086090.8","-73086090.8","73086090.8","5.09009107E-286535904","9.52919219E-286535920","0","-6.96451406E-286535912","");
\r
5038 mathtest(263,def,"1551.29957","-580358622.E+117017265","-5.80358622E+117017273","5.80358622E+117017273","-9.00310081E+117017276","-2.67300168E-117017271","0","1551.29957","7.17506711E-20");
\r
5039 mathtest(264,def,"-205123006.E-213752799","-78638468.6","-78638468.6","78638468.6","1.61305591E-213752783","2.60843083E-213752799","0","-2.05123006E-213752791","");
\r
5040 mathtest(265,def,"77632.8073","-3378542.88E+677441319","-3.37854288E+677441325","3.37854288E+677441325","-2.62285768E+677441330","-2.29781921E-677441321","0","77632.8073","2.13729331E-15");
\r
5041 mathtest(266,def,"3068999.37","2.21006212","3069001.58","3068997.16","6782679.25","1388648.46","1388648","1.02718624","9.41875713E+12");
\r
5042 mathtest(267,def,"625524274.","55.2468624","625524329","625524219","3.45582535E+10","11322349.3","11322349","16.7522224","6.21482943E+483");
\r
5043 mathtest(268,def,"61269134.9","-845761303.","-784492168","907030438","-5.18190634E+16","-0.0724425848","0","61269134.9","");
\r
5044 mathtest(269,def,"-2840.12099","-2856.76731E-82743650","-2840.12099","-2840.12099","8.11356480E-82743644","9.94173022E+82743649","","","-4.36505254E-11");
\r
5045 mathtest(270,def,"8.9538781","-7.56603391","1.38784419","16.5199120","-67.7453453","-1.18343087","-1","1.38784419","2.42053061E-8");
\r
5046 mathtest(271,def,"-56233547.2","509752530","453518983","-565986077","-2.86651930E+16","-0.110315386","0","-56233547.2","");
\r
5047 mathtest(272,def,"-3167.47853E-854859497","-110852115","-110852115","110852115","3.51121694E-854859486","2.85739116E-854859502","0","-3.16747853E-854859494","");
\r
5048 mathtest(273,def,"-5652.52092","-632243244.","-632248897","632237592","3.57376816E+12","0.00000894042123","0","-5652.52092","");
\r
5049 mathtest(274,def,"-946.009928","820090.66E-589278015","-946.009928","-946.009928","-7.75813906E-589278007","-1.15354311E+589278012","","","6.41454053E+23");
\r
5050 mathtest(275,def,"-367.757758","-959.626016","-1327.38377","591.868258","352909.912","0.383230292","0","-367.757758","1.14982199E-2463");
\r
5051 mathtest(276,def,"809926721.E-744611554","-67.6560549","-67.6560549","67.6560549","-5.47964467E-744611544","-1.19712378E-744611547","0","8.09926721E-744611546","");
\r
5052 mathtest(277,def,"-1725.08555","75586.3031","73861.2176","-77311.3887","-130392839","-0.0228227269","0","-1725.08555","3.70540587E+244657");
\r
5053 mathtest(278,def,"2659.84191E+29314492","-74372.4551E+518196680","-7.43724551E+518196684","7.43724551E+518196684","-1.97818973E+547511180","-3.5763804E-488882190","0","2.65984191E+29314495","1.06171811E-205201468");
\r
5054 mathtest(279,def,"-91.1431113","12147507.0","12147415.9","-12147598.1","-1.10716158E+9","-0.00000750303015","0","-91.1431113","-1.52417006E+23805759");
\r
5055 mathtest(280,def,"-1136778.91E+697783878","-801552569.","-1.13677891E+697783884","-1.13677891E+697783884","9.11188056E+697783892","1.41822128E+697783875","","","");
\r
5056 mathtest(281,def,"73123773.0E+433334149","63.3548930","7.31237730E+433334156","7.31237730E+433334156","4.63274881E+433334158","1.15419298E+433334155","","","");
\r
5057 mathtest(282,def,"-9765484.8","7979.90802E-234029715","-9765484.80","-9765484.80","-7.79276705E-234029705","-1.22375907E+234029718","","","8.27085614E+55");
\r
5058 mathtest(283,def,"-695010288","-8.26582820","-695010296","-695010280","5.74483564E+9","84082353.4","84082353","-3.45024540","1.83683495E-71");
\r
5059 mathtest(284,def,"23975643.3E-155955264","-505547.692E+137258948","-5.05547692E+137258953","5.05547692E+137258953","-1.21208311E-18696303","-4.7425087E-293214211","0","2.39756433E-155955257","1.26225952E+779776283");
\r
5060 mathtest(285,def,"2862.95921","-32601248.6E-605861333","2862.95921","2862.95921","-9.33360449E-605861323","-8.78174712E+605861328","","","4.26142175E-11");
\r
5061 mathtest(286,def,"-13.133518E+246090516","-8.71269925E-945092108","-1.31335180E+246090517","-1.31335180E+246090517","1.14428392E-699001590","","","","");
\r
5062 mathtest(287,def,"-34671.2232","817710.762","783039.539","-852381.985","-2.83510323E+10","-0.0424003508","0","-34671.2232","-5.30788828E+3712382");
\r
5063 mathtest(288,def,"-22464769","62.4366060","-22464706.6","-22464831.4","-1.40262393E+9","-359801.252","-359801","-15.7245940","6.21042536E+455");
\r
5064 mathtest(289,def,"-9458.60887E-563051963","5676056.01","5676056.01","-5676056.01","-5.36875937E-563051953","-1.66640513E-563051966","0","-9.45860887E-563051960","");
\r
5065 mathtest(290,def,"-591.924123E-95331874","-134.596188","-134.596188","134.596188","7.96707305E-95331870","4.39777777E-95331874","0","-5.91924123E-95331872","");
\r
5066 mathtest(291,def,"-182566085.E+68870646","-960345993.","-1.82566085E+68870654","-1.82566085E+68870654","1.75326608E+68870663","1.9010449E+68870645","","","");
\r
5067 mathtest(292,def,"8232.54893","-99822004E+891979845","-9.98220040E+891979852","9.98220040E+891979852","-8.21789532E+891979856","-8.24722867E-891979850","0","8232.54893","6.99289156E-40");
\r
5068 mathtest(293,def,"-4336.94317","-819373.601E+563233430","-8.19373601E+563233435","8.19373601E+563233435","3.55357674E+563233439","5.29299841E-563233433","0","-4336.94317","7.98969405E-30");
\r
5069 mathtest(294,def,"-2.09044362E-876527908","-6515463.33","-6515463.33","6515463.33","1.36202087E-876527901","3.20843433E-876527915","0","-2.09044362E-876527908","");
\r
5070 mathtest(295,def,"-194343.344","1.95929977","-194341.385","-194345.303","-380776.869","-99190.2041","-99190","-0.39981370","3.77693354E+10");
\r
5071 mathtest(296,def,"-326002.927","4215.99030","-321786.937","-330218.917","-1.37442518E+9","-77.3253503","-77","-1371.67390","5.51875821E+23243");
\r
5072 mathtest(297,def,"-12037.8590E+876429044","314.81827","-1.20378590E+876429048","-1.20378590E+876429048","-3.78973794E+876429050","-3.82374854E+876429045","","","");
\r
5073 mathtest(298,def,"21036045.4E-162804809","-91.7149219","-91.7149219","91.7149219","-1.92931926E-162804800","-2.2936339E-162804804","0","2.10360454E-162804802","");
\r
5074 mathtest(299,def,"-947019.534","9916.29280","-937103.241","-956935.827","-9.39092299E+9","-95.5013686","-95","-4971.71800","3.76029022E+59261");
\r
5075 mathtest(300,def,"-5985.84136","-12.4090184E-12364204","-5985.84136","-5985.84136","7.42784156E-12364200","4.82378313E+12364206","","","-0.000167060893");
\r
5076 mathtest(301,def,"-85344379.4","-6783.08669E+218840215","-6.78308669E+218840218","6.78308669E+218840218","5.78898324E+218840226","1.25819385E-218840211","0","-85344379.4","-3.03232347E-56");
\r
5077 mathtest(302,def,"-94.1947070E-938257103","15003.240","15003.2400","-15003.2400","-1.41322580E-938257097","-6.27829102E-938257106","0","-9.41947070E-938257102","");
\r
5078 mathtest(303,def,"-4846233.6","-8289769.76","-13136003.4","3443536.16","4.01741607E+13","0.584604125","0","-4846233.6","4.25077524E-55420465");
\r
5079 mathtest(304,def,"67.9147198","-108373645.E+291715415","-1.08373645E+291715423","1.08373645E+291715423","-7.36016573E+291715424","-6.26671916E-291715422","0","67.9147198","0.0147243485");
\r
5080 mathtest(305,def,"1958.77994","5.57285137E+690137826","5.57285137E+690137826","-5.57285137E+690137826","1.09159895E+690137830","3.51486126E-690137824","0","1958.77994","5.64824968E+19");
\r
5081 mathtest(306,def,"22780314.3","8805279.83","31585594.1","13975034.5","2.00587042E+14","2.58711986","2","5169754.64","2.39132169E+64785373");
\r
5082 mathtest(307,def,"596745.184","197602423.","198199168","-197005678","1.17918294E+14","0.00301992848","0","596745.184","");
\r
5083 mathtest(308,def,"171.340497","-480349.924","-480178.584","480521.264","-82303394.7","-0.000356699332","0","171.340497","2.17914102E-1073035");
\r
5084 mathtest(309,def,"824.65555","-379287.530","-378462.875","380112.186","-312781567","-0.00217422268","0","824.65555","6.35829256E-1106108");
\r
5085 mathtest(310,def,"19.3164031","-9207644.24E+988115069","-9.20764424E+988115075","9.20764424E+988115075","-1.77858568E+988115077","-2.09786592E-988115075","0","19.3164031","2.67093711E-12");
\r
5086 mathtest(311,def,"-3123.77646E+177814265","973284435.E+383256112","9.73284435E+383256120","-9.73284435E+383256120","-3.04032301E+561070389","-3.20952062E-205441853","0","-3.12377646E+177814268","");
\r
5087 mathtest(312,def,"-850.123915E+662955309","6774849.81E-846576865","-8.50123915E+662955311","-8.50123915E+662955311","-5.75946184E-183621547","","","","");
\r
5088 mathtest(313,def,"-23349.7724","2921.35355","-20428.4189","-26271.1260","-68212940.5","-7.99279238","-7","-2900.29755","-5.6705546E+12759");
\r
5089 mathtest(314,def,"18886653.3","568707476.","587594129","-549820823","1.07409809E+16","0.0332097855","0","18886653.3","");
\r
5090 mathtest(315,def,"-90552818.0","-542.03563E-986606878","-90552818.0","-90552818.0","4.90828538E-986606868","1.67060638E+986606883","","","-1.64244241E-40");
\r
5091 mathtest(316,def,"41501126.1E+791838765","-69.6651675E+204268348","4.15011261E+791838772","4.15011261E+791838772","-2.89118290E+996107122","-5.95722763E+587570422","","","");
\r
5092 mathtest(317,def,"76783193.3E-271488154","3765.01829E-520346003","7.67831933E-271488147","7.67831933E-271488147","2.89090127E-791834146","2.03938434E+248857853","","","");
\r
5093 mathtest(318,def,"4192.9928","987822007E-146560989","4192.99280","4192.99280","4.14193056E-146560977","4.24468454E+146560983","","","1.67973653E+36");
\r
5094 mathtest(319,def,"-891845.629","48277955.","47386109.4","-49169800.6","-4.30564831E+13","-0.0184731443","0","-891845.629","-6.32964147E+287267817");
\r
5095 mathtest(320,def,"334.901176","-7609296.55E+447340228","-7.60929655E+447340234","7.60929655E+447340234","-2.54836236E+447340237","-4.40121073E-447340233","0","334.901176","6.31926575E-21");
\r
5096 mathtest(321,def,"4.49868636","-341880896E-447251873","4.49868636","4.49868636","-1.53801492E-447251864","-1.31586363E+447251865","","","0.010983553");
\r
5097 mathtest(322,def,"807615.58","-314286480","-313478865","315094096","-2.53822658E+14","-0.00256967968","0","807615.58","");
\r
5098 mathtest(323,def,"-37.7457954","53277.8129E-859225538","-37.7457954","-37.7457954","-2.01101343E-859225532","-7.08471188E+859225534","","","-76620134.1");
\r
5099 mathtest(324,def,"-28671081.","98.8819623","-28670982.1","-28671179.9","-2.83505275E+9","-289952.589","-289952","-58.2671904","-1.93625566E+738");
\r
5100 mathtest(325,def,"-89752.2106E-469496896","99.9879961","99.9879961","-99.9879961","-8.97414368E-469496890","-8.97629857E-469496894","0","-8.97522106E-469496892","");
\r
5101 mathtest(326,def,"-497983567E-13538052","39.4578742","39.4578742","-39.4578742","-1.96493729E-13538042","-1.26206385E-13538045","0","-4.97983567E-13538044","-1.55376543E-527983689");
\r
5102 mathtest(327,def,"845739221E-654202565","-33313.1551","-33313.1551","33313.1551","-2.81742418E-654202552","-2.53875449E-654202561","0","8.45739221E-654202557","");
\r
5103 mathtest(328,def,"742.332067E+537827843","-4532.70023E-855387414","7.42332067E+537827845","7.42332067E+537827845","-3.36476873E-317559565","","","","");
\r
5104 mathtest(329,def,"-893.48654","670389960","670389067","-670390853","-5.98984406E+11","-0.00000133278628","0","-893.48654","");
\r
5105 mathtest(330,def,"1.37697162","-915.737474E-351578724","1.37697162","1.37697162","-1.26094451E-351578721","-1.50367508E+351578721","","","0.0561920784");
\r
5106 mathtest(331,def,"-65.2839808E+550288403","-121389.306","-6.52839808E+550288404","-6.52839808E+550288404","7.92477712E+550288409","5.37806689E+550288399","","","");
\r
5107 mathtest(332,def,"-30346603.E+346067390","792661.544","-3.03466030E+346067397","-3.03466030E+346067397","-2.40545852E+346067403","-3.82844396E+346067391","","","");
\r
5108 mathtest(333,def,"-61170.7065","-453731131.","-453792302","453669960","2.77550538E+13","0.000134817081","0","-61170.7065","");
\r
5109 mathtest(334,def,"6569.51133","13.8706351E+399434914","1.38706351E+399434915","-1.38706351E+399434915","9.11232944E+399434918","4.73627291E-399434912","0","6569.51133","6569.51133");
\r
5110 mathtest(335,def,"300703925.","-3156736.8","297547188","303860662","-9.49243146E+14","-95.2578387","-95","813929.0","4.18609114E-26763256");
\r
5111 mathtest(336,def,"192138216E+353011592","-473.080633","1.92138216E+353011600","1.92138216E+353011600","-9.08968688E+353011602","-4.06142637E+353011597","","","");
\r
5112 mathtest(337,def,"8607.64794","-34740.3367","-26132.6888","43347.9846","-299032588","-0.247770999","0","8607.64794","1.29604519E-136698");
\r
5113 mathtest(338,def,"-67913.8241","-93815.4229","-161729.247","25901.5988","6.37136413E+9","0.723908948","0","-67913.8241","-6.96355203E-453311");
\r
5114 mathtest(339,def,"34.5559455","-998799398.","-998799364","998799433","-3.45144576E+10","-3.45974833E-8","0","34.5559455","");
\r
5115 mathtest(340,def,"387995.328","990199543.E-124623607","387995.328","387995.328","3.84192796E-124623593","3.91835495E+124623603","","","7.73152138E+55");
\r
5116 mathtest(341,def,"-471.09166E-83521919","-441222368","-441222368","441222368","2.07856178E-83521908","1.06769669E-83521925","0","-4.7109166E-83521917","");
\r
5117 mathtest(342,def,"-97834.3858","70779789.8E+502166065","7.07797898E+502166072","-7.07797898E+502166072","-6.92469726E+502166077","-1.38223617E-502166068","0","-97834.3858","-8.57907886E+34");
\r
5118 mathtest(343,def,"7732331.06","-952719.482E+115325505","-9.52719482E+115325510","9.52719482E+115325510","-7.36674244E+115325517","-8.11606271E-115325505","0","7732331.06","1.30886724E-69");
\r
5119 mathtest(344,def,"23.2745547","2.23194245E-221062592","23.2745547","23.2745547","5.19474666E-221062591","1.04279368E+221062593","","","541.704896");
\r
5120 mathtest(345,def,"671.083363E-218324205","-787150031","-787150031","787150031","-5.28243290E-218324194","-8.52548227E-218324212","0","6.71083363E-218324203","");
\r
5121 mathtest(346,def,"365167.80","-80263.6516","284904.148","445431.452","-2.93097011E+10","-4.54960362","-4","44113.1936","1.27052227E-446468");
\r
5122 mathtest(347,def,"-1.43297604E-65129780","56.598733E-135581942","-1.43297604E-65129780","-1.43297604E-65129780","-8.11046283E-200711721","-2.53181646E+70452160","","","8.65831881E-390778680");
\r
5123 mathtest(348,def,"416998859.","260.220323E-349285593","416998859","416998859","1.08511578E-349285582","1.60248383E+349285599","","","7.25111178E+25");
\r
5124 mathtest(349,def,"7267.17611E+862630607","4021.56861","7.26717611E+862630610","7.26717611E+862630610","2.92254473E+862630614","1.80705014E+862630607","","","");
\r
5125 mathtest(350,def,"12.2142434E+593908740","5.27236571E-396050748","1.22142434E+593908741","1.22142434E+593908741","6.43979581E+197857993","2.3166533E+989959488","","","");
\r
5126 mathtest(351,def,"-28.591932","-1.79153238E-817064576","-28.5919320","-28.5919320","5.12233720E-817064575","1.59594838E+817064577","","","0.00122324372");
\r
5127 mathtest(352,def,"590.849666","753424.306E+277232744","7.53424306E+277232749","-7.53424306E+277232749","4.45160500E+277232752","7.84219014E-277232748","0","590.849666","1.48530607E+22");
\r
5128 mathtest(353,def,"1.7270628","-1325026.67","-1325024.94","1325028.40","-2288404.27","-0.00000130341739","0","1.7270628","2.09260036E-314440");
\r
5129 mathtest(354,def,"33402118.","-5534.83745","33396583.2","33407652.8","-1.84875294E+11","-6034.8869","-6034","4908.82670","8.14473913E-41645");
\r
5130 mathtest(355,def,"-439842.506","-775110.807","-1214953.31","335268.301","3.40926680E+11","0.567457584","0","-439842.506","-1.84678472E-4374182");
\r
5131 mathtest(356,def,"-248664.779","-440890.44E+666433944","-4.40890440E+666433949","4.40890440E+666433949","1.09633924E+666433955","5.64005831E-666433945","0","-248664.779","2.61542877E-22");
\r
5132 mathtest(357,def,"-14161.9142","8306.49493","-5855.4193","-22468.4091","-117635869","-1.70492059","-1","-5855.41927","1.65573372E+34479");
\r
5133 mathtest(358,def,"-6417227.13","16679.8842","-6400547.25","-6433907.01","-1.07038605E+11","-384.728518","-384","-12151.5972","3.58767978E+113546");
\r
5134 mathtest(359,def,"514825024.","-25.0446345E-103809457","514825024","514825024","-1.28936046E-103809447","-2.05563002E+103809464","","","7.32860062E-27");
\r
5135 mathtest(360,def,"525948196","219450390","745398586","306497806","1.15419537E+17","2.39666102","2","87047416","");
\r
5136 mathtest(361,def,"-638509.181","45580189.0E+269212559","4.55801890E+269212566","-4.55801890E+269212566","-2.91033691E+269212572","-1.40084803E-269212561","0","-638509.181","-1.06129405E+29");
\r
5137 mathtest(362,def,"330590422","74.359928E+535377965","7.43599280E+535377966","-7.43599280E+535377966","2.45826800E+535377975","4.44581418E-535377959","0","330590422","4.31550742E+59");
\r
5138 mathtest(363,def,"-3.48593871E-940579904","-20265.9640E-322988987","-2.02659640E-322988983","2.02659640E-322988983","","1.72009519E-617590921","0","-3.48593871E-940579904","");
\r
5139 mathtest(364,def,"-328103480.","-721.949371E-923938665","-328103480","-328103480","2.36874101E-923938654","4.54468822E+923938670","","","-2.4430038E-60");
\r
5140 mathtest(365,def,"-1857.01448","19081578.1","19079721.1","-19083435.1","-3.54347668E+10","-0.0000973197537","0","-1857.01448","8.44397087E+62374153");
\r
5141 mathtest(366,def,"347.28720E+145930771","-62821.9906E-676564106","3.47287200E+145930773","3.47287200E+145930773","-2.18172732E-530633328","-5.52811518E+822494874","","","5.69990135E-875584642");
\r
5142 mathtest(367,def,"-643.211399E+441807003","-50733419.2","-6.43211399E+441807005","-6.43211399E+441807005","3.26323135E+441807013","1.26782584E+441806998","","","");
\r
5143 mathtest(368,def,"-53991661.4E-843339554","20718.7346","20718.7346","-20718.7346","-1.11863890E-843339542","-2.60593431E-843339551","0","-5.39916614E-843339547","");
\r
5144 mathtest(369,def,"-900181424","-105763982.","-1.00594541E+9","-794417442","9.52067719E+16","8.51122856","8","-54069568","1.32627061E-947045602");
\r
5145 mathtest(370,def,"94218.7462E+563233951","19262.6382E+765263890","1.92626382E+765263894","-1.92626382E+765263894","","4.89126906E-202029939","0","9.42187462E+563233955","");
\r
5146 mathtest(371,def,"28549.271E+921331828","-2150590.40","2.85492710E+921331832","2.85492710E+921331832","-6.13977881E+921331838","-1.32750853E+921331826","","","");
\r
5147 mathtest(372,def,"810.7080E+779625763","5957.94044","8.10708000E+779625765","8.10708000E+779625765","4.83014998E+779625769","1.36071854E+779625762","","","");
\r
5148 mathtest(373,def,"-23.7357549E+77116908","351.100649E+864348022","3.51100649E+864348024","-3.51100649E+864348024","-8.33363895E+941464933","-6.7603848E-787231116","0","-2.37357549E+77116909","3.17403853E+308467637");
\r
5149 mathtest(374,def,"40216102.2E+292724544","661.025962","4.02161022E+292724551","4.02161022E+292724551","2.65838876E+292724554","6.08389148E+292724548","","","");
\r
5150 mathtest(375,def,"22785024.3E+783719168","399.505989E+137478666","2.27850243E+783719175","2.27850243E+783719175","9.10275367E+921197843","5.70329981E+646240506","","","");
\r
5151 mathtest(376,def,"515.591819E+821371364","-692137914.E-149498690","5.15591819E+821371366","5.15591819E+821371366","-3.56860646E+671872685","-7.44926421E+970870047","","","");
\r
5152 mathtest(377,def,"-536883072E+477911251","624996.301","-5.36883072E+477911259","-5.36883072E+477911259","-3.35549934E+477911265","-8.59017999E+477911253","","","");
\r
5153 mathtest(378,def,"-399492.914E-334369192","5202119.87E+442442258","5.20211987E+442442264","-5.20211987E+442442264","-2.07821003E+108073078","-7.67942539E-776811452","0","-3.99492914E-334369187","");
\r
5154 mathtest(379,def,"762.071184","9851631.37","9852393.44","-9850869.30","7.50764438E+9","0.0000773548213","0","762.071184","4.02198436E+28392356");
\r
5155 mathtest(380,def,"5626.12471","72989818.3","72995444.4","-72984192.2","4.10649820E+11","0.0000770809524","0","5626.12471","1.79814757E+273727098");
\r
5156 mathtest(381,def,"-47207260.1","-2073.3152","-47209333.4","-47205186.8","9.78755299E+10","22768.9741","22768","-2019.6264","-6.02238319E-15909");
\r
5157 mathtest(382,def,"207.740860","-51.0390090","156.701851","258.779869","-10602.8876","-4.07023694","-4","3.5848240","6.40297515E-119");
\r
5158 mathtest(383,def,"-572.812464E-745934021","-182805872.E+604508681","-1.82805872E+604508689","1.82805872E+604508689","1.04713482E-141425329","","0","-5.72812464E-745934019","");
\r
5159 mathtest(384,def,"-6418504E+3531407","8459416.1","-6.41850400E+3531413","-6.41850400E+3531413","-5.42967961E+3531420","-7.58740784E+3531406","","","");
\r
5160 mathtest(385,def,"280689.531","-128212543","-127931854","128493233","-3.59879186E+13","-0.00218925173","0","280689.531","1.42173809E-698530938");
\r
5161 mathtest(386,def,"15.803551E-783422793","239108038E-489186308","2.39108038E-489186300","-2.39108038E-489186300","","6.60937672E-294236493","0","1.5803551E-783422792","");
\r
5162 mathtest(387,def,"26.515922","-9418242.96E-105481628","26.5159220","26.5159220","-2.49733396E-105481620","-2.81537885E+105481622","","","1.54326108E-13");
\r
5163 mathtest(388,def,"-88.1094557","-54029934.1","-54030022.2","54029846.0","4.76054809E+9","0.0000016307526","0","-88.1094557","5.05289826E-105089439");
\r
5164 mathtest(389,def,"6770.68602E-498420397","-6.11248908E-729616908","6.77068602E-498420394","6.77068602E-498420394","","-1.10768067E+231196514","","","");
\r
5165 mathtest(390,def,"-892973818.E-781904441","555201299.","555201299","-555201299","-4.95780224E-781904424","-1.60837847E-781904441","0","-8.92973818E-781904433","");
\r
5166 mathtest(391,def,"670175802E+135430680","27355195.4","6.70175802E+135430688","6.70175802E+135430688","1.83327900E+135430696","2.44990318E+135430681","","","");
\r
5167 mathtest(392,def,"-440950.26","205.477469E-677345561","-440950.260","-440950.260","-9.06053434E-677345554","-2.14597864E+677345564","","","1.94437132E+11");
\r
5168 mathtest(393,def,"-8.2335779","573665010E+742722075","5.73665010E+742722083","-5.73665010E+742722083","-4.72331555E+742722084","-1.43525886E-742722083","0","-8.2335779","311552.753");
\r
5169 mathtest(394,def,"452943.863","7022.23629","459966.099","445921.627","3.18067883E+9","64.5013703","64","3520.74044","5.54158976E+39716");
\r
5170 mathtest(395,def,"62874.1079","-52719654.1","-52656780.0","52782528.2","-3.31470122E+12","-0.0011926123","0","62874.1079","1.18819936E-252973775");
\r
5171 mathtest(396,def,"-7428.41741E+609772037","-46024819.3","-7.42841741E+609772040","-7.42841741E+609772040","3.41891569E+609772048","1.61400251E+609772033","","","");
\r
5172 mathtest(397,def,"2.27959297","41937.019","41939.2986","-41934.7394","95599.3337","0.0000543575348","0","2.27959297","2.89712423E+15007");
\r
5173 mathtest(398,def,"508692408E-671967782","8491989.20","8491989.20","-8491989.20","4.31981043E-671967767","5.99026207E-671967781","0","5.08692408E-671967774","");
\r
5174 mathtest(399,def,"940.533705E-379310421","-4.01176961E+464620037","-4.01176961E+464620037","4.01176961E+464620037","-3.77320453E+85309619","-2.34443599E-843930456","0","9.40533705E-379310419","");
\r
5175 mathtest(400,def,"97.0649652","-92.4485649E-151989098","97.0649652","97.0649652","-8.97351673E-151989095","-1.0499348E+151989098","","","1.30748728E-18");
\r
5176 mathtest(401,def,"297544.536E+360279473","8.80275007","2.97544536E+360279478","2.97544536E+360279478","2.61921019E+360279479","3.38013159E+360279477","","","");
\r
5177 mathtest(402,def,"-28861028.","82818.820E+138368758","8.28188200E+138368762","-8.28188200E+138368762","-2.39023628E+138368770","-3.48483932E-138368756","0","-28861028","4.81387013E+59");
\r
5178 mathtest(403,def,"36.2496238E+68828039","49243.00","3.62496238E+68828040","3.62496238E+68828040","1.78504022E+68828045","7.36137599E+68828035","","","");
\r
5179 mathtest(404,def,"22.447828E-476014683","-56067.5520","-56067.5520","56067.5520","-1.25859476E-476014677","-4.00371109E-476014687","0","2.2447828E-476014682","");
\r
5180 mathtest(405,def,"282688.791E+75011952","5.99789051","2.82688791E+75011957","2.82688791E+75011957","1.69553642E+75011958","4.7131369E+75011956","","","5.10330507E+450071744");
\r
5181 mathtest(406,def,"-981.860310E-737387002","-994046289","-994046289","994046289","9.76014597E-737386991","9.87741035E-737387009","0","-9.81860310E-737387000","");
\r
5182 mathtest(407,def,"-702.91210","-6444903.55","-6445606.46","6444200.64","4.53020069E+9","0.000109064797","0","-702.91210","1.70866703E-18348004");
\r
5183 mathtest(408,def,"972456720E-17536823","16371.2590","16371.2590","-16371.2590","1.59203408E-17536810","5.94002404E-17536819","0","9.72456720E-17536815","");
\r
5184 mathtest(409,def,"71471.2045","-74303278.4","-74231807.2","74374749.6","-5.31054481E+12","-0.00096188494","0","71471.2045","2.14535374E-360677853");
\r
5185 mathtest(410,def,"643.103951E+439708441","788251925.","6.43103951E+439708443","6.43103951E+439708443","5.06927927E+439708452","8.15860933E+439708434","","","");
\r
5186 mathtest(411,def,"4.30838663","-7.43110827","-3.12272164","11.7394949","-32.0160875","-0.579777131","0","4.30838663","0.0000362908645");
\r
5187 mathtest(412,def,"823.678025","-513.581840E-324453141","823.678025","823.678025","-4.23026076E-324453136","-1.60379118E+324453141","","","2.63762228E-15");
\r
5188 mathtest(413,def,"4461.81162","3.22081680","4465.03244","4458.59080","14370.6778","1385.30438","1385","0.98035200","8.8824688E+10");
\r
5189 mathtest(414,def,"-4458527.10","-99072605","-103531132","94614077.9","4.41717894E+14","0.0450026231","0","-4458527.10","-6.23928099E-658752715");
\r
5190 mathtest(415,def,"-577964618","487424368.","-90540250","-1.06538899E+9","-2.81714039E+17","-1.18575241","-1","-90540250","");
\r
5191 mathtest(416,def,"-867.036184","-57.1768608","-924.213045","-809.859323","49574.4072","15.1641096","15","-9.3832720","-3.40312837E-168");
\r
5192 mathtest(417,def,"771871921E-330504770","5.34285236","5.34285236","-5.34285236","4.12399771E-330504761","1.44468136E-330504762","0","7.71871921E-330504762","");
\r
5193 mathtest(418,def,"-338683.062E-728777518","166441931","166441931","-166441931","-5.63710628E-728777505","-2.03484218E-728777521","0","-3.38683062E-728777513","");
\r
5194 mathtest(419,def,"-512568743","-416376887.E-965945295","-512568743","-512568743","2.13421778E-965945278","1.23102112E+965945295","","","1.44874358E-35");
\r
5195 mathtest(420,def,"7447181.99","5318438.52","12765620.5","2128743.47","3.96073796E+13","1.40025723","1","2128743.47","1.21634782E+36548270");
\r
5196 mathtest(421,def,"54789.8207","93165435.2","93220225.0","-93110645.4","5.10451749E+12","0.000588091716","0","54789.8207","3.80769825E+441483035");
\r
5197 mathtest(422,def,"41488.5960","146.797094","41635.3931","41341.7989","6090405.33","282.625459","282","91.815492","6.84738153E+678");
\r
5198 mathtest(423,def,"785741.663E+56754529","-461.531732","7.85741663E+56754534","7.85741663E+56754534","-3.62644711E+56754537","-1.70246509E+56754532","","","");
\r
5199 mathtest(424,def,"-4.95436786","-3132.4233","-3137.37767","3127.46893","15519.1773","0.0015816406","0","-4.95436786","1.98062422E-2177");
\r
5200 mathtest(425,def,"77321.8478E+404626874","82.4797688","7.73218478E+404626878","7.73218478E+404626878","6.37748813E+404626880","9.3746441E+404626876","","","");
\r
5201 mathtest(426,def,"-7.99307725","-29153.7273","-29161.7204","29145.7342","233027.994","0.000274169994","0","-7.99307725","1.88688028E-26318");
\r
5202 mathtest(427,def,"-61.6337401E+474999517","5254.87092","-6.16337401E+474999518","-6.16337401E+474999518","-3.23877349E+474999522","-1.1728878E+474999515","","","");
\r
5203 mathtest(428,def,"-16.4043088","35.0064812","18.6021724","-51.4107900","-574.257128","-0.468607762","0","-16.4043088","-3.33831843E+42");
\r
5204 mathtest(429,def,"-8.41156520","-56508958.9","-56508967.3","56508950.5","475328792","1.48853657E-7","0","-8.41156520","-8.86365458E-52263827");
\r
5205 mathtest(430,def,"-360165.79E+503559835","-196688.515","-3.60165790E+503559840","-3.60165790E+503559840","7.08404744E+503559845","1.83114805E+503559835","","","");
\r
5206 mathtest(431,def,"-653236480.E+565648495","-930.445274","-6.53236480E+565648503","-6.53236480E+565648503","6.07800796E+565648506","7.02068674E+565648500","","","");
\r
5207 mathtest(432,def,"-3.73342903","855.029289","851.295860","-858.762718","-3192.19117","-0.00436643408","0","-3.73342903","-1.41988961E+489");
\r
5208 mathtest(433,def,"-5.14890532E+562048011","10847127.8E-390918910","-5.14890532E+562048011","-5.14890532E+562048011","-5.58508340E+171129108","-4.74679142E+952966914","","","-5.14890532E+562048011");
\r
5209 mathtest(434,def,"653311907","-810.036965E+744537823","-8.10036965E+744537825","8.10036965E+744537825","-5.29206794E+744537834","-8.06521104E-744537818","0","653311907","3.01325171E-71");
\r
5210 mathtest(435,def,"-1.31557907","98.9139300E-579281802","-1.31557907","-1.31557907","-1.30129096E-579281800","-1.33002406E+579281800","","","15.529932");
\r
5211 mathtest(436,def,"-875192389","-72071565.6","-947263955","-803120823","6.30764857E+16","12.1433797","12","-10333601.8","1.25564408E-644471405");
\r
5212 mathtest(437,def,"-72838078.8","-391.398423","-72838470.2","-72837687.4","2.85087092E+10","186097.017","186097","-6.474969","-6.574057E-3075");
\r
5213 mathtest(438,def,"29186560.9","-79.7419988","29186481.2","29186640.6","-2.32739470E+9","-366012.407","-366012","32.4352144","6.10050869E-598");
\r
5214 mathtest(439,def,"-329801660E-730249465","-6489.9256","-6489.92560","6489.92560","2.14038824E-730249453","5.08174793E-730249461","0","-3.29801660E-730249457","");
\r
5215 mathtest(440,def,"91.8429117E+103164883","7131455.16","9.18429117E+103164884","9.18429117E+103164884","6.54973607E+103164891","1.28785654E+103164878","","","");
\r
5216 mathtest(441,def,"3943866.38E+150855113","-31927007.3","3.94386638E+150855119","3.94386638E+150855119","-1.25915851E+150855127","-1.23527594E+150855112","","","");
\r
5217 mathtest(442,def,"-7002.0468E-795962156","-5937891.05","-5937891.05","5937891.05","4.15773910E-795962146","1.17921443E-795962159","0","-7.0020468E-795962153","");
\r
5218 mathtest(443,def,"696504605.","54506.4617","696559111","696450099","3.79640016E+13","12778.386","12778","21037.3974","2.6008532E+481992");
\r
5219 mathtest(444,def,"-5115.76467","690.960979E+815126701","6.90960979E+815126703","-6.90960979E+815126703","-3.53479376E+815126707","-7.4038402E-815126701","0","-5115.76467","-9.17009655E+25");
\r
5220 mathtest(445,def,"-261.279392","-613.079357","-874.358749","351.799965","160185.002","0.426175484","0","-261.279392","-2.06318841E-1482");
\r
5221 mathtest(446,def,"-591407763","-80145822.8","-671553586","-511261940","4.73988618E+16","7.37914644","7","-30387003.4","-2.79334522E-703030105");
\r
5222 mathtest(447,def,"615630407","-69.4661869","615630338","615630476","-4.27654969E+10","-8862303.15","-8862303","10.4375693","3.44283102E-607");
\r
5223 mathtest(448,def,"1078757.50","27402569.0E-713742082","1078757.50","1078757.50","2.95607268E-713742069","3.93670207E+713742080","","","1.25536924E+18");
\r
5224 mathtest(449,def,"-4865.60358E-401116515","66952.5315","66952.5315","-66952.5315","-3.25764477E-401116507","-7.26724363E-401116517","0","-4.86560358E-401116512","");
\r
5225 mathtest(450,def,"-87805.3921E-934896690","-1875.14745","-1875.14745","1875.14745","1.64648057E-934896682","4.68258601E-934896689","0","-8.78053921E-934896686","");
\r
5226 mathtest(451,def,"-232540609.E+602702520","68.0834223","-2.32540609E+602702528","-2.32540609E+602702528","-1.58321605E+602702530","-3.41552468E+602702526","","","");
\r
5227 mathtest(452,def,"-320610803.","-863871235.","-1.18448204E+9","543260432","2.76966450E+17","0.37113263","0","-320610803","");
\r
5228 mathtest(453,def,"-303956364E+278139979","229537.920E+479603725","2.29537920E+479603730","-2.29537920E+479603730","-6.97695116E+757743717","-1.3242098E-201463743","0","-3.03956364E+278139987","9.23894712E+556279974");
\r
5229 mathtest(454,def,"-439.747348","74.9494457E-353117582","-439.747348","-439.747348","-3.29588200E-353117578","-5.86725284E+353117582","","","-3.17996693E+18");
\r
5230 mathtest(455,def,"-89702231.9","1.28993993","-89702230.6","-89702233.2","-115710491","-69539852.1","-69539852","-0.07890964","-89702231.9");
\r
5231 mathtest(456,def,"-5856939.14","-6743375.34","-12600314.5","886436.20","3.94955390E+13","0.868547107","0","-5856939.14","-3.29213248E-45636942");
\r
5232 mathtest(457,def,"733317.669E+100381349","-13832.6792E+174055607","-1.38326792E+174055611","1.38326792E+174055611","-1.01437481E+274436966","-5.30134227E-73674257","0","7.33317669E+100381354","1.36366549E-100381355");
\r
5233 mathtest(458,def,"87.4798787E-80124704","108497.32","108497.320","-108497.320","9.49133239E-80124698","8.06286079E-80124708","0","8.74798787E-80124703","");
\r
5234 mathtest(459,def,"-694562052","310681.319E+549445264","3.10681319E+549445269","-3.10681319E+549445269","-2.15787454E+549445278","-2.23560932E-549445261","0","-694562052","-3.35068155E+26");
\r
5235 mathtest(460,def,"-9744135.85","1797016.04","-7947119.81","-11541151.9","-1.75103684E+13","-5.42239782","-5","-759055.65","3.83848006E+12558883");
\r
5236 mathtest(461,def,"3625.87308","-50.2208536E+658627487","-5.02208536E+658627488","5.02208536E+658627488","-1.82094441E+658627492","-7.21985554E-658627486","0","3625.87308","1.5956477E-18");
\r
5237 mathtest(462,def,"365347.52","-3655414.47","-3290066.95","4020761.99","-1.33549661E+12","-0.099946948","0","365347.52","1.02663257E-20333994");
\r
5238 mathtest(463,def,"-19706333.6E-816923050","-383858032.","-383858032","383858032","7.56443443E-816923035","5.1337557E-816923052","0","-1.97063336E-816923043","");
\r
5239 mathtest(464,def,"-86346.2616","-98.8063785","-86445.0680","-86247.4552","8531561.41","873.893598","873","-88.2931695","-2.05064086E-489");
\r
5240 mathtest(465,def,"-445588.160E-496592215","328.822976","328.822976","-328.822976","-1.46519625E-496592207","-1.35510044E-496592212","0","-4.45588160E-496592210","");
\r
5241 mathtest(466,def,"-9709213.71","-34.6690137","-9709248.38","-9709179.04","336608863","280054.512","280054","-17.7472602","-2.80903974E-245");
\r
5242 mathtest(467,def,"742395536.","-43533.6889","742352002","742439070","-3.23192163E+13","-17053.3569","-17053","15539.1883","5.7622734E-386175");
\r
5243 mathtest(468,def,"-878849193.","-5842982.47E-972537342","-878849193","-878849193","5.13510043E-972537327","1.50411061E+972537344","","","2.17027042E-54");
\r
5244 mathtest(469,def,"-78014142.1","-624658.522","-78638800.6","-77389483.6","4.87321987E+13","124.890863","124","-556485.372","-7.86063865E-4929918");
\r
5245 mathtest(470,def,"857039.371","454.379672","857493.751","856584.991","389421268","1886.17454","1886","79.309608","3.82253101E+2693");
\r
5246 mathtest(471,def,"166534010.","-173.012236","166533837","166534183","-2.88124214E+10","-962556.255","-962556","44.164784","4.78620664E-1423");
\r
5247 mathtest(472,def,"-810.879063","43776.610","42965.7309","-44587.4891","-35497536.5","-0.0185231123","0","-810.879063","-2.34758691E+127345");
\r
5248 mathtest(473,def,"-327.127935","93458944","93458616.9","-93459271.1","-3.05730314E+10","-0.00000350023145","0","-327.127935","2.29323021E+235022854");
\r
5249 mathtest(474,def,"539295218.","-9587941.10E-309643098","539295218","539295218","-5.17073079E-309643083","-5.62472394E+309643099","","","4.80545269E-88");
\r
5250 mathtest(475,def,"-3862702.65","879616.733","-2983085.92","-4742319.38","-3.39769789E+12","-4.3913474","-4","-344235.718","-3.50650167E+5793941");
\r
5251 mathtest(476,def,"-8.25290500","992.091584E+256070257","9.92091584E+256070259","-9.92091584E+256070259","-8.18763759E+256070260","-8.31869268E-256070260","0","-8.25290500","1.46577888E+9");
\r
5252 mathtest(477,def,"546875205.","447.52857E+557357101","4.47528570E+557357103","-4.47528570E+557357103","2.44742278E+557357112","1.22198948E-557357095","0","546875205","8.94443542E+34");
\r
5253 mathtest(478,def,"177623437","-7779116.14","169844321","185402553","-1.38175335E+15","-22.83337","-22","6482881.92","2.90085309E-64173820");
\r
5254 mathtest(479,def,"377204735.","13768.1401","377218503","377190967","5.19340764E+12","27396.9274","27396","12768.8204","2.06065297E+118082");
\r
5255 mathtest(480,def,"-2435.49239","-11732.0640E-23331504","-2435.49239","-2435.49239","2.85733526E-23331497","2.07592832E+23331503","","","-0.00041059459");
\r
5256 mathtest(481,def,"-6128465.14E-137123294","-5742264.27","-5742264.27","5742264.27","3.51912664E-137123281","1.06725585E-137123294","0","-6.12846514E-137123288","");
\r
5257 mathtest(482,def,"-2898065.44","-5.11638105","-2898070.56","-2898060.32","14827607.1","566428.773","566428","-3.95461060","-4.89169151E-33");
\r
5258 mathtest(483,def,"1851395.31E+594383160","-550301.475","1.85139531E+594383166","1.85139531E+594383166","-1.01882557E+594383172","-3.36432918E+594383160","","","");
\r
5259 mathtest(484,def,"536412589.E+379583977","899.601161","5.36412589E+379583985","5.36412589E+379583985","4.82557388E+379583988","5.96278231E+379583982","","","");
\r
5260 mathtest(485,def,"185.85297","867419480.","867419666","-867419294","1.61212487E+11","2.14259622E-7","0","185.85297","");
\r
5261 mathtest(486,def,"-5.26631053","-3815941.35E+183291763","-3.81594135E+183291769","3.81594135E+183291769","2.00959321E+183291770","1.38008162E-183291769","0","-5.26631053","0.00130009218");
\r
5262 mathtest(487,def,"-8.11587021E-245942806","4553.06753E+943412048","4.55306753E+943412051","-4.55306753E+943412051","-3.69521051E+697469246","","0","-8.11587021E-245942806","");
\r
5263 mathtest(488,def,"-405765.352","854963231","854557466","-855368996","-3.46914456E+14","-0.000474599769","0","-405765.352","");
\r
5264 mathtest(489,def,"-159.609757","-43356.7567","-43516.3665","43197.1470","6920161.40","0.00368131219","0","-159.609757","-8.95397849E-95519");
\r
5265 mathtest(490,def,"-564240.241E-501316672","-557.781977","-557.781977","557.781977","3.14723037E-501316664","1.01157847E-501316669","0","-5.64240241E-501316667","");
\r
5266 mathtest(491,def,"318847.270","582107878.E+399633412","5.82107878E+399633420","-5.82107878E+399633420","1.85603508E+399633426","5.47746014E-399633416","0","318847.270","1.0507423E+33");
\r
5267 mathtest(492,def,"-4426.59663","95.1096765","-4331.48695","-4521.70631","-421012.173","-46.5420217","-46","-51.5515110","-2.38037379E+346");
\r
5268 mathtest(493,def,"6037.28310","578264.105","584301.388","-572226.822","3.49114411E+9","0.010440356","0","6037.28310","3.57279483E+2186324");
\r
5269 mathtest(494,def,"-66.9556692","-53.8519404","-120.807610","-13.1037288","3605.69271","1.24332881","1","-13.1037288","2.55554086E-99");
\r
5270 mathtest(495,def,"-92486.0222","-59935.8544","-152421.877","-32550.1678","5.54322876E+9","1.5430834","1","-32550.1678","1.83152656E-297647");
\r
5271 mathtest(496,def,"852136219.E+917787351","9246221.91","8.52136219E+917787359","8.52136219E+917787359","7.87904058E+917787366","9.21604767E+917787352","","","");
\r
5272 mathtest(497,def,"-2120096.16E-269253718","9437.00514","9437.00514","-9437.00514","-2.00073584E-269253708","-2.24657731E-269253716","0","-2.12009616E-269253712","");
\r
5273 mathtest(498,def,"-524653.169E-865784226","228054.698","228054.698","-228054.698","-1.19649620E-865784215","-2.30055848E-865784226","0","-5.24653169E-865784221","");
\r
5274 mathtest(499,def,"-288193133","-312268737.","-600461870","24075604","8.99937057E+16","0.922901011","0","-288193133","");
\r
5275 mathtest(500,def,"-373484759E-113589964","844101958E-852538240","-3.73484759E-113589956","-3.73484759E-113589956","-3.15259216E-966128187","-4.42464036E+738948275","","","3.78602147E-908719644");
\r
5277 summary("Arithmetic");
\r
5280 /* mathtest -- general arithmetic test routine
\r
5281 Arg1 is test number
\r
5282 Arg2 is MathContext
\r
5283 Arg3 is left hand side (LHS)
\r
5284 Arg4 is right hand side (RHS)
\r
5285 Arg5 is the expected result for add
\r
5286 Arg6 is the expected result for subtract
\r
5287 Arg7 is the expected result for multiply
\r
5288 Arg8 is the expected result for divide
\r
5289 Arg9 is the expected result for integerDivide
\r
5290 Arg10 is the expected result for remainder
\r
5291 Arg11 is the expected result for power
\r
5293 For power RHS, 0 is added to the number, any exponent is removed and
\r
5294 the number is then rounded to an integer, using format(rhs+0,,0)
\r
5296 If an error should result for an operation, the 'expected result' is
\r
5300 private void mathtest(int test, com.ibm.icu.math.MathContext mc,
\r
5301 java.lang.String slhs, java.lang.String srhs, java.lang.String add,
\r
5302 java.lang.String sub, java.lang.String mul, java.lang.String div,
\r
5303 java.lang.String idv, java.lang.String rem, java.lang.String pow) {
\r
5304 com.ibm.icu.math.BigDecimal lhs;
\r
5305 com.ibm.icu.math.BigDecimal rhs;
\r
5306 java.lang.String res = null;
\r
5307 java.lang.String sn = null;
\r
5310 lhs = new com.ibm.icu.math.BigDecimal(slhs);
\r
5311 rhs = new com.ibm.icu.math.BigDecimal(srhs);
\r
5314 res = lhs.add(rhs, mc).toString();
\r
5315 } catch (java.lang.ArithmeticException $137) {
\r
5318 mathtestcheck(test, lhs, rhs, "add", res, add);
\r
5321 res = lhs.subtract(rhs, mc).toString();
\r
5322 } catch (java.lang.ArithmeticException $138) {
\r
5325 mathtestcheck(test, lhs, rhs, "sub", res, sub);
\r
5328 res = lhs.multiply(rhs, mc).toString();
\r
5329 } catch (java.lang.ArithmeticException $139) {
\r
5332 mathtestcheck(test, lhs, rhs, "mul", res, mul);
\r
5335 res = lhs.divide(rhs, mc).toString();
\r
5336 } catch (java.lang.ArithmeticException $140) {
\r
5339 mathtestcheck(test, lhs, rhs, "div", res, div);
\r
5342 res = lhs.divideInteger(rhs, mc).toString();
\r
5343 } catch (java.lang.ArithmeticException $141) {
\r
5346 mathtestcheck(test, lhs, rhs, "idv", res, idv);
\r
5349 res = lhs.remainder(rhs, mc).toString();
\r
5350 } catch (java.lang.ArithmeticException $142) {
\r
5353 mathtestcheck(test, lhs, rhs, "rem", res, rem);
\r
5356 // prepare an integer from the rhs
\r
5360 // if e>0 then n=left(n,e-1)
\r
5363 sn = rhs.plus(mc).toString();
\r
5364 e = sn.indexOf("E", 0);
\r
5366 sn = sn.substring(0, e);
\r
5367 sn = (new com.ibm.icu.math.BigDecimal(sn)).format(-1, 0);
\r
5369 res = lhs.pow(new com.ibm.icu.math.BigDecimal(sn), mc).toString();
\r
5370 } catch (java.lang.ArithmeticException $143) {
\r
5373 mathtestcheck(test, lhs, rhs, "pow", res, pow);
\r
5377 /* mathtestcheck -- check for general mathtest error
\r
5378 Arg1 is test number
\r
5379 Arg2 is left hand side (LHS)
\r
5380 Arg3 is right hand side (RHS)
\r
5381 Arg4 is the operation
\r
5382 Arg5 is the actual result
\r
5383 Arg6 is the expected result
\r
5384 Show error message if a problem, otherwise return quietly
\r
5387 private void mathtestcheck(int test, com.ibm.icu.math.BigDecimal lhs,
\r
5388 com.ibm.icu.math.BigDecimal rhs, java.lang.String op,
\r
5389 java.lang.String got, java.lang.String want) {
\r
5391 java.lang.String testnum;
\r
5393 flag = want.equals((java.lang.Object) got);
\r
5396 say(">" + test + ">" + " " + lhs.toString() + " " + op + " "
\r
5397 + rhs.toString() + " " + "=" + " " + want + " " + "[got"
\r
5398 + " " + got + "]");
\r
5401 + right((new com.ibm.icu.math.BigDecimal(test + 1000))
\r
5404 (new Test(testnum)).ok = flag;
\r
5408 /* ------------------------------------------------------------------ */
\r
5409 /* Support routines and minor classes follow */
\r
5410 /* ------------------------------------------------------------------ */
\r
5412 /* ----------------------------------------------------------------- */
\r
5413 /* Method called to summarise pending tests */
\r
5414 /* ----------------------------------------------------------------- */
\r
5415 /* Arg1 is section name */
\r
5417 private void summary(java.lang.String section) {
\r
5423 count = Tests.size();
\r
5427 for (; $144 > 0; $144--, i++) {
\r
5428 item = (Test) (Tests.elementAt(i));
\r
5432 errln("Failed:" + " " + item.name);
\r
5436 totalcount = totalcount + count;
\r
5437 Tests = new java.util.Vector(100); // reinitialize
\r
5439 say("OK" + " " + left(section, 14) + " "
\r
5440 + right("[" + count + " " + "tests]", 12));
\r
5442 throw new DiagException(section + " " + "[failed" + " " + bad + " "
\r
5443 + "of" + " " + count + " " + "tests]", bad);
\r
5446 /* ----------------------------------------------------------------- */
\r
5447 /* right - Utility to do a 'right' on a Java String */
\r
5448 /* ----------------------------------------------------------------- */
\r
5449 /* Arg1 is string to right-justify */
\r
5450 /* Arg2 is desired length */
\r
5452 private static java.lang.String right(java.lang.String s, int len) {
\r
5454 slen = s.length();
\r
5456 return s; // length just right
\r
5458 return s.substring(slen - len); // truncate on left
\r
5460 return (new java.lang.String(new char[len - slen]))
\r
5461 .replace('\000', ' ').concat(s);
\r
5464 /* ----------------------------------------------------------------- */
\r
5465 /* left - Utility to do a 'left' on a Java String */
\r
5466 /* ----------------------------------------------------------------- */
\r
5467 /* Arg1 is string to left-justify */
\r
5468 /* Arg2 is desired length */
\r
5470 private static java.lang.String left(java.lang.String s, int len) {
\r
5472 slen = s.length();
\r
5474 return s; // length just right
\r
5476 return s.substring(0, len); // truncate on right
\r
5478 return s.concat((new java.lang.String(new char[len - slen])).replace(
\r
5482 /* ----------------------------------------------------------------- */
\r
5483 /* say - Utility to do a display */
\r
5484 /* ----------------------------------------------------------------- */
\r
5485 /* Arg1 is string to display, omitted if none */
\r
5486 /* [null or omitted gives blank line] */
\r
5487 // this version doesn't heed continuation final character
\r
5488 private void say() {
\r
5489 say((java.lang.String) null);
\r
5493 private void say(java.lang.String s) {
\r
5499 /* ----------------------------------------------------------------- */
\r
5500 /* Scaffolding for stand-alone run */
\r
5501 /* ----------------------------------------------------------------- */
\r
5502 /** Entry point for stand-alone run. It constructs a
\r
5503 * <code>DiagBigDecimal</code> object and then invokes its
\r
5504 * {@link #diagrun(boolean)} method to run the test
\r
5507 * @param args The command line argument string array.
\r
5508 * if the first word is '<code>continue</code>' then try and run
\r
5509 * all tests, otherwise stop after the first failing test group.
\r
5511 public static void main(String[] args) throws Exception {
\r
5512 new DiagBigDecimal().run(args);
\r
5515 public void TestBigDecimal() {
\r
5516 boolean $continue;
\r
5518 $continue = false;
\r
5519 fails = diagrun($continue); // and run the tests
\r
5521 errln("Diagnostic Tests for math failed. Number of errors: "
\r
5526 /* ------------------------------------------------------------------ */
\r
5527 /* Test -- represents a test and its status */
\r
5528 /* ------------------------------------------------------------------ */
\r
5529 /* Copyright IBM Corporation 1998, 2000. All rights reserved. */
\r
5530 /* Author: Mike Cowlishaw */
\r
5531 /* ------------------------------------------------------------------ */
\r
5532 /* 1998.07.15 Initial version */
\r
5533 /* 2000.03.27 Change to javadoc comments */
\r
5536 * The <code>Test</code> class is used to record a specific test.
\r
5537 * When constructed, it notes the name of the test and adds the test
\r
5538 * to the list of tests held by the parent.
\r
5540 * Its <code>ok</flag> is assigned directly to record whether the
\r
5541 * test succeeded (1) or failed (0).
\r
5543 * @see com.ibm.icu.math.BigDecimal
\r
5544 * @version 1.00 2000.03.27
\r
5545 * @author Mike Cowlishaw
\r
5548 public class Test {
\r
5549 //private final transient java.lang.String $0 = "DiagBigDecimal.nrx";
\r
5551 /* properties shared transient */
\r
5552 /** The name of the test. */
\r
5553 transient java.lang.String name;
\r
5555 /** Success flag; will be set to 1 (true) if the test succeeded, or 0
\r
5556 * (false) if the test failed.
\r
5558 transient boolean ok;
\r
5561 * Constructs a new <code>Test</code> with a specified name.
\r
5563 * @param testname The <code>String</code> naming the test.
\r
5566 public Test(java.lang.String testname) {
\r
5568 name = testname; // save the name
\r
5569 DiagBigDecimal.this.Tests.addElement((java.lang.Object) this); // and add to parent's list
\r
5573 /* ------------------------------------------------------------------ */
\r
5574 /* DiagException */
\r
5575 /* ------------------------------------------------------------------ */
\r
5576 /* Copyright IBM Corporation 1996, 2000. All rights reserved. */
\r
5577 /* Author: Mike Cowlishaw */
\r
5578 /* ------------------------------------------------------------------ */
\r
5579 /* 1996.05.27 Initial version in NetRexx (as DiagX) */
\r
5580 /* 1998.06.25 Copied from NetRexx test suite */
\r
5581 /* 1999.07.03 Add fail count */
\r
5582 /* 2000.03.27 Change to javadoc comments */
\r
5585 * The <code>DiagException</code> class is used to signal the failure
\r
5586 * of a test group. It records the number of failures in the group.
\r
5588 * @see com.ibm.icu.math.BigDecimal
\r
5589 * @version 1.00 2000.03.27
\r
5590 * @author Mike Cowlishaw
\r
5593 public static class DiagException extends java.lang.RuntimeException {
\r
5594 //private final transient java.lang.String $0 = "DiagBigDecimal.nrx";
\r
5597 * For serialization
\r
5599 private static final long serialVersionUID = 755873172220249188L;
\r
5600 /* properties shared transient */
\r
5601 /** the count of failed tests in the group which signalled this
\r
5604 transient int failcount = 0;
\r
5606 // number of tests which failed
\r
5609 * Constructs a new <code>DiagException</code> with a message and
\r
5610 * failure count. This is thrown when a group of tests fails.
\r
5612 * @param message The <code>String</code> message describing the group.
\r
5613 * @param fails The <code>int</code> number of failed tests in the group.
\r
5616 public DiagException(java.lang.String message, int fails) {
\r
5618 failcount = fails;
\r