1-- Selected test cases to reduce both the archive size and runtime. For the 2-- large test suite, download the separate mpdecimal-testdata distribution and 3-- replace the testdata_dist directory. 4 5precision: MAX_PREC 6rounding: half_up 7maxExponent: MAX_EMAX 8minexponent: MIN_EMIN 9 10-- basics 11sqtx001 squareroot 1 -> 1 12sqtx002 squareroot -1 -> NaN Invalid_operation 13sqtx003 squareroot 1.00 -> 1.0 14sqtx004 squareroot -1.00 -> NaN Invalid_operation 15sqtx005 squareroot 0 -> 0 16sqtx006 squareroot 00.0 -> 0.0 17sqtx007 squareroot 0.00 -> 0.0 18sqtx008 squareroot 00.00 -> 0.0 19sqtx009 squareroot 00.000 -> 0.00 20sqtx010 squareroot 00.0000 -> 0.00 21 22sqtx012 squareroot -2 -> NaN Invalid_operation 23sqtx014 squareroot -2.00 -> NaN Invalid_operation 24sqtx016 squareroot -0 -> -0 25sqtx017 squareroot -0.0 -> -0.0 26sqtx018 squareroot -00.00 -> -0.0 27sqtx019 squareroot -00.000 -> -0.00 28sqtx020 squareroot -0.0000 -> -0.00 29sqtx021 squareroot -0E+9 -> -0E+4 30sqtx022 squareroot -0E+10 -> -0E+5 31sqtx023 squareroot -0E+11 -> -0E+5 32sqtx024 squareroot -0E+12 -> -0E+6 33sqtx025 squareroot -00 -> -0 34sqtx026 squareroot 0E+5 -> 0E+2 35sqtx027 squareroot 4.0 -> 2.0 36sqtx028 squareroot 4.00 -> 2.0 37 38sqtx031 squareroot -0.1 -> NaN Invalid_operation 39sqtx032 squareroot +0.01 -> 0.1 40sqtx033 squareroot -0.01 -> NaN Invalid_operation 41sqtx035 squareroot -0.001 -> NaN Invalid_operation 42sqtx036 squareroot +0.000001 -> 0.001 43sqtx037 squareroot -0.000001 -> NaN Invalid_operation 44sqtx038 squareroot +0.000000000001 -> 0.000001 45sqtx039 squareroot -0.000000000001 -> NaN Invalid_operation 46 47sqtx045 squareroot -1.1 -> NaN Invalid_operation 48sqtx046 squareroot -1.10 -> NaN Invalid_operation 49sqtx047 squareroot -1.100 -> NaN Invalid_operation 50sqtx048 squareroot -1.110 -> NaN Invalid_operation 51sqtx053 squareroot -9.9 -> NaN Invalid_operation 52sqtx054 squareroot -9.90 -> NaN Invalid_operation 53sqtx055 squareroot -9.900 -> NaN Invalid_operation 54sqtx056 squareroot -9.990 -> NaN Invalid_operation 55 56sqtx060 squareroot 1 -> 1 57sqtx061 squareroot 1.0 -> 1.0 58sqtx062 squareroot 1.00 -> 1.0 59sqtx067 squareroot 100 -> 10 60sqtx068 squareroot 100.0 -> 10.0 61sqtx069 squareroot 100.00 -> 10.0 62sqtx072 squareroot -10.0 -> NaN Invalid_operation 63sqtx073 squareroot -10.00 -> NaN Invalid_operation 64sqtx074 squareroot -100.0 -> NaN Invalid_operation 65sqtx075 squareroot -100.00 -> NaN Invalid_operation 66sqtx076 squareroot -1.1000E+3 -> NaN Invalid_operation 67sqtx077 squareroot -1.10000E+3 -> NaN Invalid_operation 68sqtx078 squareroot 1.000 -> 1.00 69sqtx079 squareroot 1.0000 -> 1.00 70 71---- famous squares 72sqtx080 squareroot 1 -> 1 73sqtx081 squareroot 4 -> 2 74sqtx082 squareroot 9 -> 3 75sqtx083 squareroot 16 -> 4 76sqtx084 squareroot 25 -> 5 77sqtx085 squareroot 36 -> 6 78sqtx086 squareroot 49 -> 7 79sqtx087 squareroot 64 -> 8 80sqtx088 squareroot 81 -> 9 81sqtx089 squareroot 100 -> 10 82sqtx090 squareroot 121 -> 11 83sqtx091 squareroot 144 -> 12 84sqtx092 squareroot 169 -> 13 85sqtx093 squareroot 256 -> 16 86sqtx094 squareroot 1024 -> 32 87sqtx095 squareroot 4096 -> 64 88sqtx100 squareroot 0.01 -> 0.1 89sqtx101 squareroot 0.04 -> 0.2 90sqtx102 squareroot 0.09 -> 0.3 91sqtx103 squareroot 0.16 -> 0.4 92sqtx104 squareroot 0.25 -> 0.5 93sqtx105 squareroot 0.36 -> 0.6 94sqtx106 squareroot 0.49 -> 0.7 95sqtx107 squareroot 0.64 -> 0.8 96sqtx108 squareroot 0.81 -> 0.9 97sqtx109 squareroot 1.00 -> 1.0 98sqtx110 squareroot 1.21 -> 1.1 99sqtx111 squareroot 1.44 -> 1.2 100sqtx112 squareroot 1.69 -> 1.3 101sqtx113 squareroot 2.56 -> 1.6 102sqtx114 squareroot 10.24 -> 3.2 103sqtx115 squareroot 40.96 -> 6.4 104 105---- Precision 1 squareroot tests [exhaustive, plus exponent adjusts] 106sqtx1202 squareroot 0.01 -> 0.1 107sqtx1204 squareroot 1.00E-2 -> 0.10 108sqtx1207 squareroot 1E+2 -> 1E+1 109sqtx1226 squareroot 0.04 -> 0.2 110sqtx1228 squareroot 4.00E-2 -> 0.20 111sqtx1231 squareroot 4E+2 -> 2E+1 112sqtx1266 squareroot 0.09 -> 0.3 113sqtx1268 squareroot 9.00E-2 -> 0.30 114sqtx1271 squareroot 9E+2 -> 3E+1 115 116---- Precision 2 squareroot tests [exhaustive, plus exponent adjusts] 117sqtx2202 squareroot 0.01 -> 0.1 118sqtx2204 squareroot 1.00E-2 -> 0.10 119sqtx2207 squareroot 1E+2 -> 1E+1 120sqtx2226 squareroot 0.04 -> 0.2 121sqtx2228 squareroot 4.00E-2 -> 0.20 122--sqtx2231 squareroot 4E+2 -> 2E+1 123sqtx2266 squareroot 0.09 -> 0.3 124sqtx2268 squareroot 9.00E-2 -> 0.30 125sqtx2271 squareroot 9E+2 -> 3E+1 126sqtx2274 squareroot 0.010 -> 0.10 127sqtx2275 squareroot 10.0E-1 -> 1.0 128sqtx2277 squareroot 10E-3 -> 0.10 129sqtx2278 squareroot 10E+1 -> 10 130sqtx2280 squareroot 10E+3 -> 1.0E+2 131sqtx2321 squareroot 0.16 -> 0.4 132sqtx2324 squareroot 16.00E-2 -> 0.40 133sqtx2327 squareroot 16E+2 -> 4E+1 134sqtx2399 squareroot 25E+2 -> 5E+1 135sqtx2484 squareroot 36.00E-2 -> 0.60 136sqtx2487 squareroot 36E+2 -> 6E+1 137sqtx2514 squareroot 0.040 -> 0.20 138sqtx2515 squareroot 40.0E-1 -> 2.0 139sqtx2517 squareroot 40E-3 -> 0.20 140sqtx2518 squareroot 40E+1 -> 20 141sqtx2520 squareroot 40E+3 -> 2.0E+2 142sqtx2585 squareroot 0.49 -> 0.7 143sqtx2588 squareroot 49.00E-2 -> 0.70 144sqtx2591 squareroot 49E+2 -> 7E+1 145sqtx2705 squareroot 0.64 -> 0.8 146sqtx2708 squareroot 64.00E-2 -> 0.80 147sqtx2711 squareroot 64E+2 -> 8E+1 148sqtx2841 squareroot 0.81 -> 0.9 149sqtx2844 squareroot 81.00E-2 -> 0.90 150sqtx2847 squareroot 81E+2 -> 9E+1 151sqtx2914 squareroot 0.090 -> 0.30 152sqtx2915 squareroot 90.0E-1 -> 3.0 153sqtx2917 squareroot 90E-3 -> 0.30 154sqtx2918 squareroot 90E+1 -> 30 155sqtx2920 squareroot 90E+3 -> 3.0E+2 156 157sqtx3002 squareroot 0.01 -> 0.1 158sqtx3008 squareroot 0.04 -> 0.2 159 160precision: MAX_PREC 161rounding: half_up 162maxExponent: MAX_EMAX 163minexponent: MIN_EMIN 164 165divx001 divide 1 1 -> 1 166divx002 divide 2 1 -> 2 167divx003 divide 1 2 -> 0.5 168divx004 divide 2 2 -> 1 169divx005 divide 0 1 -> 0 170divx006 divide 0 2 -> 0 171divx009 divide 3 3 -> 1 172 173divx010 divide 2.4 1 -> 2.4 174divx011 divide 2.4 -1 -> -2.4 175divx012 divide -2.4 1 -> -2.4 176divx013 divide -2.4 -1 -> 2.4 177divx014 divide 2.40 1 -> 2.40 178divx015 divide 2.400 1 -> 2.400 179divx016 divide 2.4 2 -> 1.2 180divx017 divide 2.400 2 -> 1.200 181divx018 divide 2. 2 -> 1 182divx019 divide 20 20 -> 1 183 184divx020 divide 187 187 -> 1 185divx021 divide 5 2 -> 2.5 186divx022 divide 50 20 -> 2.5 187divx023 divide 500 200 -> 2.5 188divx024 divide 50.0 20.0 -> 2.5 189divx025 divide 5.00 2.00 -> 2.5 190divx026 divide 5 2.0 -> 2.5 191divx027 divide 5 2.000 -> 2.5 192divx028 divide 5 0.20 -> 25 193divx029 divide 5 0.200 -> 25 194divx030 divide 10 1 -> 10 195divx031 divide 100 1 -> 100 196divx032 divide 1000 1 -> 1000 197divx033 divide 1000 100 -> 10 198 199divx035 divide 1 2 -> 0.5 200divx036 divide 1 4 -> 0.25 201divx037 divide 1 8 -> 0.125 202divx038 divide 1 16 -> 0.0625 203divx039 divide 1 32 -> 0.03125 204divx040 divide 1 64 -> 0.015625 205divx041 divide 1 -2 -> -0.5 206divx042 divide 1 -4 -> -0.25 207divx043 divide 1 -8 -> -0.125 208divx044 divide 1 -16 -> -0.0625 209divx045 divide 1 -32 -> -0.03125 210divx046 divide 1 -64 -> -0.015625 211divx047 divide -1 2 -> -0.5 212divx048 divide -1 4 -> -0.25 213divx049 divide -1 8 -> -0.125 214divx050 divide -1 16 -> -0.0625 215divx051 divide -1 32 -> -0.03125 216divx052 divide -1 64 -> -0.015625 217divx053 divide -1 -2 -> 0.5 218divx054 divide -1 -4 -> 0.25 219divx055 divide -1 -8 -> 0.125 220divx056 divide -1 -16 -> 0.0625 221divx057 divide -1 -32 -> 0.03125 222divx058 divide -1 -64 -> 0.015625 223 224divx070 divide 999999999 1 -> 999999999 225 226divx083 divide 999999 1 -> 999999 227divx084 divide 99999 1 -> 99999 228divx085 divide 9999 1 -> 9999 229divx086 divide 999 1 -> 999 230divx087 divide 99 1 -> 99 231divx088 divide 9 1 -> 9 232 233divx090 divide 0. 1 -> 0 234divx091 divide .0 1 -> 0.0 235divx092 divide 0.00 1 -> 0.00 236divx093 divide 0.00E+9 1 -> 0E+7 237divx094 divide 0.0000E-50 1 -> 0E-54 238 239divx095 divide 1 1E-8 -> 1E+8 240divx096 divide 1 1E-9 -> 1E+9 241divx097 divide 1 1E-10 -> 1E+10 242divx098 divide 1 1E-11 -> 1E+11 243divx099 divide 1 1E-12 -> 1E+12 244 245divx100 divide 1 1 -> 1 246divx101 divide 1 2 -> 0.5 247divx103 divide 1 4 -> 0.25 248divx104 divide 1 5 -> 0.2 249divx107 divide 1 8 -> 0.125 250divx109 divide 1 10 -> 0.1 251divx110 divide 1 1 -> 1 252divx111 divide 2 1 -> 2 253divx112 divide 3 1 -> 3 254divx113 divide 4 1 -> 4 255divx114 divide 5 1 -> 5 256divx115 divide 6 1 -> 6 257divx116 divide 7 1 -> 7 258divx117 divide 8 1 -> 8 259divx118 divide 9 1 -> 9 260divx119 divide 10 1 -> 10 261 262divx120 divide 3E+1 0.001 -> 3E+4 263divx121 divide 2.200 2 -> 1.100 264 265divx133 divide 12345 5 -> 2469 266 267 268divx301 divide 0 7 -> 0 269divx302 divide 0 7E-5 -> 0E+5 270divx303 divide 0 7E-1 -> 0E+1 271divx304 divide 0 7E+1 -> 0.0 272divx305 divide 0 7E+5 -> 0.00000 273divx306 divide 0 7E+6 -> 0.000000 274divx307 divide 0 7E+7 -> 0E-7 275divx308 divide 0 70E-5 -> 0E+5 276divx309 divide 0 70E-1 -> 0E+1 277divx310 divide 0 70E+0 -> 0 278divx311 divide 0 70E+1 -> 0.0 279divx312 divide 0 70E+5 -> 0.00000 280divx313 divide 0 70E+6 -> 0.000000 281divx314 divide 0 70E+7 -> 0E-7 282divx315 divide 0 700E-5 -> 0E+5 283divx316 divide 0 700E-1 -> 0E+1 284divx317 divide 0 700E+0 -> 0 285divx318 divide 0 700E+1 -> 0.0 286divx319 divide 0 700E+5 -> 0.00000 287divx320 divide 0 700E+6 -> 0.000000 288divx321 divide 0 700E+7 -> 0E-7 289divx322 divide 0 700E+77 -> 0E-77 290 291divx351 divide 0E-92 7E-1 -> 0E-91 292divx352 divide 0E-92 7E+1 -> 0E-93 293divx353 divide 0E-92 7E+5 -> 0E-97 294divx354 divide 0E-92 7E+6 -> 0E-98 295divx356 divide 0E-92 777E-1 -> 0E-91 296divx357 divide 0E-92 777E+1 -> 0E-93 297divx358 divide 0E-92 777E+3 -> 0E-95 298divx359 divide 0E-92 777E+4 -> 0E-96 299divx360 divide 0E-92 777E+5 -> 0E-97 300divx361 divide 0E-92 777E+6 -> 0E-98 301 302divx386 divide 0E+90 777E-2 -> 0E+92 303 304divx391 divide 0E+90 700E+1 -> 0E+89 305divx392 divide 0E+90 700E-1 -> 0E+91 306divx393 divide 0E+90 700E-2 -> 0E+92 307 308divx441 divide 12345678000 1 -> 12345678000 309divx443 divide 1234567800 1 -> 1234567800 310divx445 divide 1234567890 1 -> 1234567890 311divx447 divide 1234567891 1 -> 1234567891 312divx449 divide 12345678901 1 -> 12345678901 313divx451 divide 1234567896 1 -> 1234567896 314 315divx453 divide 1e+1 1 -> 1E+1 316divx454 divide 1e+1 1.0 -> 1E+1 317divx455 divide 1e+1 1.00 -> 1E+1 318divx456 divide 1e+2 2 -> 5E+1 319divx457 divide 1e+2 2.0 -> 5E+1 320divx458 divide 1e+2 2.00 -> 5E+1 321 322divx460 divide 3e0 2e0 -> 1.5 323divx461 divide 30e-1 2e0 -> 1.5 324divx462 divide 300e-2 2e0 -> 1.50 325divx464 divide 3000e-3 2e0 -> 1.500 326divx465 divide 3e0 20e-1 -> 1.5 327divx466 divide 30e-1 20e-1 -> 1.5 328divx467 divide 300e-2 20e-1 -> 1.5 329divx468 divide 3000e-3 20e-1 -> 1.50 330divx469 divide 3e0 200e-2 -> 1.5 331divx470 divide 30e-1 200e-2 -> 1.5 332divx471 divide 300e-2 200e-2 -> 1.5 333divx472 divide 3000e-3 200e-2 -> 1.5 334divx473 divide 3e0 2000e-3 -> 1.5 335divx474 divide 30e-1 2000e-3 -> 1.5 336divx475 divide 300e-2 2000e-3 -> 1.5 337divx476 divide 3000e-3 2000e-3 -> 1.5 338 339divx480 divide 1 1.0E+33 -> 1E-33 340divx481 divide 1 10E+33 -> 1E-34 341divx482 divide 1 1.0E-33 -> 1E+33 342divx483 divide 1 10E-33 -> 1E+32 343 344divx484 divide 0e5 1e3 -> 0E+2 345divx485 divide 0e5 2e3 -> 0E+2 346divx486 divide 0e5 10e2 -> 0E+3 347divx487 divide 0e5 20e2 -> 0E+3 348divx488 divide 0e5 100e1 -> 0E+4 349divx489 divide 0e5 200e1 -> 0E+4 350 351divx491 divide 1e5 1e3 -> 1E+2 352divx492 divide 1e5 2e3 -> 5E+1 353divx493 divide 1e5 10e2 -> 1E+2 354divx494 divide 1e5 20e2 -> 5E+1 355divx495 divide 1e5 100e1 -> 1E+2 356divx496 divide 1e5 200e1 -> 5E+1 357 358divx511 divide 1 2 -> 0.5 359divx512 divide 1.0 2 -> 0.5 360divx513 divide 1.00 2 -> 0.50 361divx514 divide 1.000 2 -> 0.500 362divx515 divide 1.0000 2 -> 0.5000 363divx516 divide 1.00000 2 -> 0.50000 364divx517 divide 1.000000 2 -> 0.500000 365divx518 divide 1.0000000 2 -> 0.5000000 366divx519 divide 1.00 2.00 -> 0.5 367 368divx521 divide 2 1 -> 2 369divx522 divide 2 1.0 -> 2 370divx523 divide 2 1.00 -> 2 371divx524 divide 2 1.000 -> 2 372divx525 divide 2 1.0000 -> 2 373divx526 divide 2 1.00000 -> 2 374divx527 divide 2 1.000000 -> 2 375divx528 divide 2 1.0000000 -> 2 376divx529 divide 2.00 1.00 -> 2 377 378divx530 divide 2.40 2 -> 1.20 379divx531 divide 2.40 4 -> 0.60 380divx532 divide 2.40 10 -> 0.24 381divx533 divide 2.40 2.0 -> 1.2 382divx534 divide 2.40 4.0 -> 0.6 383divx535 divide 2.40 10.0 -> 0.24 384divx536 divide 2.40 2.00 -> 1.2 385divx537 divide 2.40 4.00 -> 0.6 386divx538 divide 2.40 10.00 -> 0.24 387divx539 divide 0.9 0.1 -> 9 388divx540 divide 0.9 0.01 -> 9E+1 389divx541 divide 0.9 0.001 -> 9E+2 390divx542 divide 5 2 -> 2.5 391divx543 divide 5 2.0 -> 2.5 392divx544 divide 5 2.00 -> 2.5 393divx545 divide 5 20 -> 0.25 394divx546 divide 5 20.0 -> 0.25 395divx547 divide 2.400 2 -> 1.200 396divx548 divide 2.400 2.0 -> 1.20 397divx549 divide 2.400 2.400 -> 1 398 399divx550 divide 240 1 -> 240 400divx551 divide 240 10 -> 24 401divx552 divide 240 100 -> 2.4 402divx553 divide 240 1000 -> 0.24 403divx554 divide 2400 1 -> 2400 404divx555 divide 2400 10 -> 240 405divx556 divide 2400 100 -> 24 406divx557 divide 2400 1000 -> 2.4 407 408divx570 divide 2.4E+6 2 -> 1.2E+6 409divx571 divide 2.40E+6 2 -> 1.20E+6 410divx572 divide 2.400E+6 2 -> 1.200E+6 411divx573 divide 2.4000E+6 2 -> 1.2000E+6 412divx574 divide 24E+5 2 -> 1.2E+6 413divx575 divide 240E+4 2 -> 1.20E+6 414divx576 divide 2400E+3 2 -> 1.200E+6 415divx577 divide 24000E+2 2 -> 1.2000E+6 416divx580 divide 2.4E+6 2 -> 1.2E+6 417divx581 divide 2.40E+6 2 -> 1.20E+6 418divx582 divide 2.400E+6 2 -> 1.200E+6 419divx583 divide 2.4000E+6 2 -> 1.2000E+6 420divx584 divide 24E+5 2 -> 1.2E+6 421divx585 divide 240E+4 2 -> 1.20E+6 422divx586 divide 2400E+3 2 -> 1.200E+6 423divx587 divide 24000E+2 2 -> 1.2000E+6 424divx590 divide 2.4E+6 2 -> 1.2E+6 425divx591 divide 2.40E+6 2 -> 1.20E+6 426divx592 divide 2.400E+6 2 -> 1.200E+6 427divx593 divide 2.4000E+6 2 -> 1.2000E+6 428divx594 divide 24E+5 2 -> 1.2E+6 429divx595 divide 240E+4 2 -> 1.20E+6 430divx596 divide 2400E+3 2 -> 1.200E+6 431divx597 divide 24000E+2 2 -> 1.2000E+6 432divx600 divide 2.4E+9 2 -> 1.2E+9 433divx601 divide 2.40E+9 2 -> 1.20E+9 434divx602 divide 2.400E+9 2 -> 1.200E+9 435divx603 divide 2.4000E+9 2 -> 1.2000E+9 436divx604 divide 24E+8 2 -> 1.2E+9 437divx605 divide 240E+7 2 -> 1.20E+9 438divx606 divide 2400E+6 2 -> 1.200E+9 439divx607 divide 24000E+5 2 -> 1.2000E+9 440 441divx731 divide 5.00 1E-3 -> 5.00E+3 442 443divx768 divide 1 -0.0 -> -Infinity Division_by_zero 444 445divx771 divide 0.0 -1.0 -> -0 446divx772 divide -0.0 -1.0 -> 0 447divx773 divide 0.0 1.0 -> 0 448divx774 divide -0.0 1.0 -> -0 449divx775 divide -1.0 0.0 -> -Infinity Division_by_zero 450divx776 divide -1.0 -0.0 -> Infinity Division_by_zero 451divx777 divide 1.0 0.0 -> Infinity Division_by_zero 452divx778 divide 1.0 -0.0 -> -Infinity Division_by_zero 453 454divx1021 divide 1E0 1E0 -> 1 455divx1022 divide 1E0 2E0 -> 0.5 456divx1024 divide 100E-2 1000E-3 -> 1 457divx1025 divide 24E-1 2E0 -> 1.2 458divx1026 divide 2400E-3 2E0 -> 1.200 459divx1027 divide 5E0 2E0 -> 2.5 460divx1028 divide 5E0 20E-1 -> 2.5 461divx1029 divide 5E0 2000E-3 -> 2.5 462divx1030 divide 5E0 2E-1 -> 25 463divx1031 divide 5E0 20E-2 -> 25 464divx1032 divide 480E-2 3E0 -> 1.60 465divx1033 divide 47E-1 2E0 -> 2.35 466 467precision: MAX_PREC 468rounding: floor 469maxExponent: MAX_EMAX 470minexponent: MIN_EMIN 471 472covx10101 divide 99960 -8.4E+2 -> -119.0 473