• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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