summaryrefslogtreecommitdiffstats
path: root/Lib/test/decimaltestdata/power.decTest
blob: 748d66a3e0a0c05b1901e374352a986987811c7d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
----------------------------------------------------------------------
-- power.decTest -- decimal exponentiation                            --
-- Copyright (c) IBM Corporation, 1981, 2003.  All rights reserved.   --
------------------------------------------------------------------------
-- Please see the document "General Decimal Arithmetic Testcases"     --
-- at http://www2.hursley.ibm.com/decimal for the description of      --
-- these testcases.                                                   --
--                                                                    --
-- These testcases are experimental ('beta' versions), and they       --
-- may contain errors.  They are offered on an as-is basis.  In       --
-- particular, achieving the same results as the tests here is not    --
-- a guarantee that an implementation complies with any Standard      --
-- or specification.  The tests are not exhaustive.                   --
--                                                                    --
-- Please send comments, suggestions, and corrections to the author:  --
--   Mike Cowlishaw, IBM Fellow                                       --
--   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
--   mfc@uk.ibm.com                                                   --
------------------------------------------------------------------------
version: 2.39

-- This set of testcases tests raising numbers to an integer power only.
-- If arbitrary powers were supported, 1 ulp differences would be
-- permitted.

extended:    1
precision:   9
rounding:    half_up
maxExponent: 999
minexponent: -999

-- base checks.  Note 0**0 is an error.
powx001 power    '0'  '0'         -> NaN Invalid_operation
powx002 power    '0'  '1'         -> '0'
powx003 power    '0'  '2'         -> '0'
powx004 power    '1'  '0'         -> '1'
powx005 power    '1'  '1'         -> '1'
powx006 power    '1'  '2'         -> '1'

powx010 power    '2'  '0'         -> '1'
powx011 power    '2'  '1'         -> '2'
powx012 power    '2'  '2'         -> '4'
powx013 power    '2'  '3'         -> '8'
powx014 power    '2'  '4'         -> '16'
powx015 power    '2'  '5'         -> '32'
powx016 power    '2'  '6'         -> '64'
powx017 power    '2'  '7'         -> '128'
powx018 power    '2'  '8'         -> '256'
powx019 power    '2'  '9'         -> '512'
powx020 power    '2'  '10'        -> '1024'
powx021 power    '2'  '11'        -> '2048'
powx022 power    '2'  '12'        -> '4096'
powx023 power    '2'  '15'        -> '32768'
powx024 power    '2'  '16'        -> '65536'
powx025 power    '2'  '31'        -> '2.14748365E+9' Inexact Rounded
-- NB 0 not stripped in next
powx026 power    '2'  '32'        -> '4.29496730E+9' Inexact Rounded
precision: 10
powx027 power    '2'  '31'        -> '2147483648'
powx028 power    '2'  '32'        -> '4294967296'
precision: 9

powx030 power    '3'  '2'         -> 9
powx031 power    '4'  '2'         -> 16
powx032 power    '5'  '2'         -> 25
powx033 power    '6'  '2'         -> 36
powx034 power    '7'  '2'         -> 49
powx035 power    '8'  '2'         -> 64
powx036 power    '9'  '2'         -> 81
powx037 power    '10' '2'         -> 100
powx038 power    '11' '2'         -> 121
powx039 power    '12' '2'         -> 144

powx040 power    '3'  '3'         -> 27
powx041 power    '4'  '3'         -> 64
powx042 power    '5'  '3'         -> 125
powx043 power    '6'  '3'         -> 216
powx044 power    '7'  '3'         -> 343

powx050 power   '10'  '0'         -> 1
powx051 power   '10'  '1'         -> 10
powx052 power   '10'  '2'         -> 100
powx053 power   '10'  '3'         -> 1000
powx054 power   '10'  '4'         -> 10000
powx055 power   '10'  '5'         -> 100000
powx056 power   '10'  '6'         -> 1000000
powx057 power   '10'  '7'         -> 10000000
powx058 power   '10'  '8'         -> 100000000
powx059 power   '10'  '9'         -> 1.00000000E+9 Rounded
powx060 power   '10'  '22'        -> 1.00000000E+22 Rounded
powx061 power   '10'  '77'        -> 1.00000000E+77 Rounded
powx062 power   '10'  '99'        -> 1.00000000E+99 Rounded

maxexponent: 999999999
minexponent: -999999999
powx063 power   '10'  '999999999' -> '1.00000000E+999999999' Rounded
powx064 power   '10'  '999999998' -> '1.00000000E+999999998' Rounded
powx065 power   '10'  '999999997' -> '1.00000000E+999999997' Rounded
powx066 power   '10'  '333333333' -> '1.00000000E+333333333' Rounded

powx070 power  '0.3'  '0'           -> '1'
powx071 power  '0.3'  '1'           -> '0.3'
powx072 power  '0.3'  '1.00'        -> '0.3'
powx073 power  '0.3'  '2.00'        -> '0.09'
powx074 power  '0.3'  '2.000000000' -> '0.09'
powx075 power  '6.0'  '1'           -> '6.0'     -- NB zeros not stripped
powx076 power  '6.0'  '2'           -> '36.00'   -- ..
powx077 power   '-3'  '2'           -> '9'       -- from NetRexx book
powx078 power    '4'  '3'           -> '64'      -- .. (sort of)

powx080 power   0.1    0            -> 1
powx081 power   0.1    1            -> 0.1
powx082 power   0.1    2            -> 0.01
powx083 power   0.1    3            -> 0.001
powx084 power   0.1    4            -> 0.0001
powx085 power   0.1    5            -> 0.00001
powx086 power   0.1    6            -> 0.000001
powx087 power   0.1    7            -> 1E-7
powx088 power   0.1    8            -> 1E-8
powx089 power   0.1    9            -> 1E-9

powx090 power   101    2            -> 10201
powx091 power   101    3            -> 1030301
powx092 power   101    4            -> 104060401
powx093 power   101    5            -> 1.05101005E+10 Inexact Rounded
powx094 power   101    6            -> 1.06152015E+12 Inexact Rounded
powx095 power   101    7            -> 1.07213535E+14 Inexact Rounded

-- negative powers
powx101 power  '2'  '-1'  -> 0.5
powx102 power  '2'  '-2'  -> 0.25
powx103 power  '2'  '-4'  -> 0.0625
powx104 power  '2'  '-8'  -> 0.00390625
powx105 power  '2'  '-16' -> 0.0000152587891 Inexact Rounded
powx106 power  '2'  '-32' -> 2.32830644E-10 Inexact Rounded
powx108 power  '2'  '-64' -> 5.42101086E-20 Inexact Rounded
powx110 power  '10'  '-8' -> 1E-8
powx111 power  '10'  '-7' -> 1E-7
powx112 power  '10'  '-6' -> 0.000001
powx113 power  '10'  '-5' -> 0.00001
powx114 power  '10'  '-4' -> 0.0001
powx115 power  '10'  '-3' -> 0.001
powx116 power  '10'  '-2' -> 0.01
powx117 power  '10'  '-1' -> 0.1

powx118 power  '10'  '-333333333'   -> 1E-333333333
powx119 power  '10'  '-999999998'   -> 1E-999999998
powx120 power  '10'  '-999999999'   -> 1E-999999999
powx121 power  '10'  '-77'          -> '1E-77'
powx122 power  '10'  '-22'          -> '1E-22'

powx123 power   '2'  '-1'           -> '0.5'
powx124 power   '2'  '-2'           -> '0.25'
powx125 power   '2'  '-4'           -> '0.0625'
powx126 power   '0'  '-1'           -> Infinity Division_by_zero
powx127 power   '0'  '-2'           -> Infinity Division_by_zero
powx128 power   -0   '-1'           -> -Infinity Division_by_zero
powx129 power   -0   '-2'           -> Infinity Division_by_zero

-- out-of-range edge cases
powx181 power   '7'   '999999998'   -> 2.10892313E+845098038 Inexact Rounded
powx182 power   '7'   '999999999'   -> 1.47624619E+845098039 Inexact Rounded
powx183 power   '7'   '1000000000'  -> NaN Invalid_operation
powx184 power   '7'   '1000000001'  -> NaN Invalid_operation
powx185 power   '7'   '10000000000' -> NaN Invalid_operation
powx186 power   '7'   '-1000000001' -> NaN Invalid_operation
powx187 power   '7'   '-1000000000' -> NaN Invalid_operation
powx189 power   '7'   '-999999999'  -> 6.77393787E-845098040 Inexact Rounded
powx190 power   '7'   '-999999998'  -> 4.74175651E-845098039 Inexact Rounded

-- some baddies [more below]
powx191 power   '2'   '2.000001'     -> NaN Invalid_operation
powx192 power   '2'   '2.00000000'   -> 4
powx193 power   '2'   '2.000000001'  -> NaN Invalid_operation
powx194 power   '2'   '2.0000000001' -> NaN Invalid_operation

-- "0.5" tests from original Rexx diagnostics [loop unrolled]
powx200 power   0.5    0            -> 1
powx201 power   0.5    1            -> 0.5
powx202 power   0.5    2            -> 0.25
powx203 power   0.5    3            -> 0.125
powx204 power   0.5    4            -> 0.0625
powx205 power   0.5    5            -> 0.03125
powx206 power   0.5    6            -> 0.015625
powx207 power   0.5    7            -> 0.0078125
powx208 power   0.5    8            -> 0.00390625
powx209 power   0.5    9            -> 0.001953125
powx210 power   0.5   10            -> 0.0009765625

-- A (rare) case where the last digit is not within 0.5 ULP
precision: 9
powx215 power "-21971575.0E+31454441" "-7" -> "-4.04549503E-220181139" Inexact Rounded
precision: 20
powx216 power "-21971575.0E+31454441" "-7" -> "-4.0454950249324891788E-220181139" Inexact Rounded

-- The Vienna case.  Checks both setup and 1/acc working precision
-- Modified 1998.12.14 as RHS no longer rounded before use (must fit)
-- Modified 1990.02.04 as LHS is now rounded (instead of truncated to guard)
--    '123456789E+10'    -- lhs .. rounded to 1.23E+18
--    '-1.23000e+2'      -- rhs .. [was: -1.23455e+2, rounds to -123]
-- Modified 2002.10.06 -- finally, no input rounding
-- With input rounding, result would be 8.74E-2226
precision: 3
powx219 power '123456789E+10' '-1.23000e+2' -> '5.54E-2226' Inexact Rounded

-- whole number checks
precision: 9
powx221 power 1 1234 -> 1
precision: 4
powx222 power 1 1234 -> 1
precision: 3
powx223 power 1 1234     -> 1
powx224 power 1 12.34e+2 -> 1
powx225 power 1 12.3     -> NaN Invalid_operation
powx226 power 1 12.0     -> 1
powx227 power 1 1.01     -> NaN Invalid_operation
powx228 power 2 1.00     -> 2
powx229 power 2 2.00     -> 4
precision: 9
powx230 power 1 1.0001           -> NaN Invalid_operation
powx231 power 1 1.0000001        -> NaN Invalid_operation
powx232 power 1 1.0000000001     -> NaN Invalid_operation
powx233 power 1 1.0000000000001  -> NaN Invalid_operation
precision: 5
powx234 power 1 1.0001           -> NaN Invalid_operation
powx235 power 1 1.0000001        -> NaN Invalid_operation
powx236 power 1 1.0000000001     -> NaN Invalid_operation
powx237 power 1 1.0000000000001  -> NaN Invalid_operation
powx238 power 1 1.0000000000001  -> NaN Invalid_operation

maxexponent: 999999999
minexponent: -999999999
powx239 power 1 5.67E-987654321  -> NaN Invalid_operation

powx240 power 1  100000000 -> 1
powx241 power 1  999999998 -> 1
powx242 power 1  999999999 -> 1
powx243 power 1 1000000000 -> NaN Invalid_operation
powx244 power 1 9999999999 -> NaN Invalid_operation

-- Checks for 'Too much precision needed'
-- For x^12, digits+elength+1 = digits+3
precision: 999999999
powx249 add 1 1 -> 2   -- check basic operation at this precision
powx250 power          2 12  -> Infinity Overflow
precision: 999999998
powx251 power          2 12  -> Infinity Overflow
precision: 999999997
powx252 power          2 12  -> Infinity Overflow
precision: 999999996
powx253 power          2 12  -> 4096
precision: 999999995
powx254 power          2 12  -> 4096

-- zeros
maxexponent: +96
minexponent: -95
precision: 7
powx260 power          0E-34 3  ->  0E-101 Clamped
powx261 power          0E-33 3  ->  0E-99
powx262 power          0E-32 3  ->  0E-96
powx263 power          0E-30 3  ->  0E-90
powx264 power          0E-10 3  ->  0E-30
powx265 power          0E-1  3  ->  0.000
powx266 power          0E+0  3  ->  0
powx267 power          0     3  ->  0
powx268 power          0E+1  3  ->  0E+3
powx269 power          0E+10 3  ->  0E+30
powx270 power          0E+30 3  ->  0E+90
powx271 power          0E+32 3  ->  0E+96
powx272 power          0E+33 3  ->  0E+96  Clamped

-- overflow and underflow tests
maxexponent: 999999999
minexponent: -999999999
precision: 9
powx280 power  9            999999999 -> 3.05550054E+954242508 Inexact Rounded
powx281 power 10            999999999 -> 1.00000000E+999999999 Rounded
powx282 power 10.0001       999999999 -> Infinity Overflow Inexact Rounded
powx283 power 10.1          999999999 -> Infinity Overflow Inexact Rounded
powx284 power 11            999999999 -> Infinity Overflow Inexact Rounded
powx285 power 12            999999999 -> Infinity Overflow Inexact Rounded
powx286 power 999           999999999 -> Infinity Overflow Inexact Rounded
powx287 power 999999        999999999 -> Infinity Overflow Inexact Rounded
powx288 power 999999999     999999999 -> Infinity Overflow Inexact Rounded
powx289 power 9.9E999999999 999999999 -> Infinity Overflow Inexact Rounded

powx290 power 0.5           999999999 -> 4.33559594E-301029996 Inexact Rounded
powx291 power 0.1           999999999 -> 1E-999999999  -- unrounded
powx292 power 0.09          999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
powx293 power 0.05          999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
powx294 power 0.01          999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
powx295 power 0.0001        999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
powx297 power 0.0000001     999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
powx298 power 0.0000000001  999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
powx299 power 1E-999999999  999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped

powx310 power -9             999999999 -> -3.05550054E+954242508 Inexact Rounded
powx311 power -10            999999999 -> -1.00000000E+999999999 Rounded
powx312 power -10.0001       999999999 -> -Infinity Overflow Inexact Rounded
powx313 power -10.1          999999999 -> -Infinity Overflow Inexact Rounded
powx314 power -11            999999999 -> -Infinity Overflow Inexact Rounded
powx315 power -12            999999999 -> -Infinity Overflow Inexact Rounded
powx316 power -999           999999999 -> -Infinity Overflow Inexact Rounded
powx317 power -999999        999999999 -> -Infinity Overflow Inexact Rounded
powx318 power -999999999     999999999 -> -Infinity Overflow Inexact Rounded
powx319 power -9.9E999999999 999999999 -> -Infinity Overflow Inexact Rounded

powx320 power -0.5           999999999 -> -4.33559594E-301029996 Inexact Rounded
powx321 power -0.1           999999999 -> -1E-999999999
powx322 power -0.09          999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
powx323 power -0.05          999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
powx324 power -0.01          999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
powx325 power -0.0001        999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
powx327 power -0.0000001     999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
powx328 power -0.0000000001  999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
powx329 power -1E-999999999  999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped

-- note no trim of next result
powx330 power -9             999999998 ->  3.39500060E+954242507 Inexact Rounded
powx331 power -10            999999998 ->  1.00000000E+999999998 Rounded
powx332 power -10.0001       999999998 ->  Infinity Overflow Inexact Rounded
powx333 power -10.1          999999998 ->  Infinity Overflow Inexact Rounded
powx334 power -11            999999998 ->  Infinity Overflow Inexact Rounded
powx335 power -12            999999998 ->  Infinity Overflow Inexact Rounded
powx336 power -999           999999998 ->  Infinity Overflow Inexact Rounded
powx337 power -999999        999999998 ->  Infinity Overflow Inexact Rounded
powx338 power -999999999     999999998 ->  Infinity Overflow Inexact Rounded
powx339 power -9.9E999999999 999999998 ->  Infinity Overflow Inexact Rounded

powx340 power -0.5           999999998 ->  8.67119187E-301029996 Inexact Rounded
powx341 power -0.1           999999998 ->  1E-999999998  -- NB exact unrounded
powx342 power -0.09          999999998 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
powx343 power -0.05          999999998 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
powx344 power -0.01          999999998 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
powx345 power -0.0001        999999998 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
powx347 power -0.0000001     999999998 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
powx348 power -0.0000000001  999999998 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
powx349 power -1E-999999999  999999998 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped

-- some subnormals
precision: 9
-- [precision is 9, so smallest exponent is -1000000007
powx350 power  1e-1          500000000 ->  1E-500000000
powx351 power  1e-2          999999999 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
powx352 power  1e-2          500000000 ->  1E-1000000000 Subnormal
powx353 power  1e-2          500000001 ->  1E-1000000002 Subnormal
powx354 power  1e-2          500000002 ->  1E-1000000004 Subnormal
powx355 power  1e-2          500000003 ->  1E-1000000006 Subnormal
powx356 power  1e-2          500000004 ->  0E-1000000007 Underflow Subnormal Inexact Rounded

powx360 power  0.010001      500000000 ->  4.34941988E-999978287 Inexact Rounded
powx361 power  0.010000001   500000000 ->  5.18469257E-999999979 Inexact Rounded
powx362 power  0.010000001   500000001 ->  5.18469309E-999999981 Inexact Rounded
powx363 power  0.0100000009  500000000 ->  3.49342003E-999999981 Inexact Rounded
powx364 power  0.0100000001  500000000 ->  1.48413155E-999999998 Inexact Rounded
powx365 power  0.01          500000000 ->  1E-1000000000 Subnormal
powx366 power  0.0099999999  500000000 ->  6.7379E-1000000003 Underflow Subnormal Inexact Rounded
powx367 power  0.0099999998  500000000 ->  4.54E-1000000005 Underflow Subnormal Inexact Rounded
powx368 power  0.0099999997  500000000 ->  3E-1000000007 Underflow Subnormal Inexact Rounded
powx369 power  0.0099999996  500000000 ->  0E-1000000007 Underflow Subnormal Inexact Rounded
powx370 power  0.009         500000000 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped

-- 1/subnormal -> overflow
powx371 power  1e-1         -500000000 ->  1E+500000000
powx372 power  1e-2         -999999999 ->  Infinity Overflow Inexact Rounded
powx373 power  1e-2         -500000000 ->  Infinity Overflow Inexact Rounded
powx374 power  1e-2         -500000001 ->  Infinity Overflow Inexact Rounded
powx375 power  1e-2         -500000002 ->  Infinity Overflow Inexact Rounded
powx376 power  1e-2         -500000003 ->  Infinity Overflow Inexact Rounded
powx377 power  1e-2         -500000004 ->  Infinity Overflow Inexact Rounded

powx381 power  0.010001     -500000000 ->  2.29915719E+999978286 Inexact Rounded
powx382 power  0.010000001  -500000000 ->  1.92875467E+999999978 Inexact Rounded
powx383 power  0.010000001  -500000001 ->  1.92875448E+999999980 Inexact Rounded
powx384 power  0.0100000009 -500000000 ->  2.86252438E+999999980 Inexact Rounded
powx385 power  0.0100000001 -500000000 ->  6.73794717E+999999997 Inexact Rounded
powx386 power  0.01         -500000000 ->  Infinity Overflow Inexact Rounded
powx387 power  0.009999     -500000000 ->  Infinity Overflow Inexact Rounded

-- negative power giving subnormal
powx388 power  100.000001   -500000000 ->  6.7379E-1000000003 Underflow Subnormal Inexact Rounded

-- some more edge cases
precision:   15
maxExponent: 999
minexponent: -999
powx391 power  0.1   999 -> 1E-999
powx392 power  0.099 999 -> 4.360732062E-1004 Underflow Subnormal Inexact Rounded
powx393 power  0.098 999 -> 1.71731E-1008 Underflow Subnormal Inexact Rounded
powx394 power  0.097 999 -> 6E-1013 Underflow Subnormal Inexact Rounded
powx395 power  0.096 999 -> 0E-1013 Underflow Subnormal Inexact Rounded
powx396 power  0.01  999 -> 0E-1013 Underflow Subnormal Inexact Rounded Clamped

-- multiply tests are here to aid checking and test for consistent handling
-- of underflow
precision: 5
maxexponent: 999
minexponent: -999

-- squares
mulx400 multiply  1E-502     1e-502 -> 0E-1003    Subnormal Inexact Underflow Rounded
mulx401 multiply  1E-501     1e-501 -> 1E-1002    Subnormal
mulx402 multiply  2E-501     2e-501 -> 4E-1002    Subnormal
mulx403 multiply  4E-501     4e-501 -> 1.6E-1001  Subnormal
mulx404 multiply 10E-501    10e-501 -> 1.00E-1000 Subnormal
mulx405 multiply 30E-501    30e-501 -> 9.00E-1000 Subnormal
mulx406 multiply 40E-501    40e-501 -> 1.600E-999

powx400 power     1E-502     2      -> 0E-1003    Underflow Subnormal Inexact Rounded
powx401 power     1E-501     2      -> 1E-1002    Subnormal
powx402 power     2E-501     2      -> 4E-1002    Subnormal
powx403 power     4E-501     2      -> 1.6E-1001  Subnormal
powx404 power    10E-501     2      -> 1.00E-1000 Subnormal
powx405 power    30E-501     2      -> 9.00E-1000 Subnormal
powx406 power    40E-501     2      -> 1.600E-999

-- cubes
mulx410 multiply  1E-670     1e-335 -> 0E-1003    Underflow Subnormal Inexact Rounded
mulx411 multiply  1E-668     1e-334 -> 1E-1002    Subnormal
mulx412 multiply  4E-668     2e-334 -> 8E-1002    Subnormal
mulx413 multiply  9E-668     3e-334 -> 2.7E-1001  Subnormal
mulx414 multiply 16E-668     4e-334 -> 6.4E-1001  Subnormal
mulx415 multiply 25E-668     5e-334 -> 1.25E-1000 Subnormal
mulx416 multiply 10E-668   100e-334 -> 1.000E-999

powx410 power     1E-335     3      -> 0E-1003    Underflow Subnormal Inexact Rounded
powx411 power     1E-334     3      -> 1E-1002    Subnormal
powx412 power     2E-334     3      -> 8E-1002    Subnormal
powx413 power     3E-334     3      -> 2.7E-1001  Subnormal
powx414 power     4E-334     3      -> 6.4E-1001  Subnormal
powx415 power     5E-334     3      -> 1.25E-1000 Subnormal
powx416 power    10E-334     3      -> 1.000E-999

-- negative powers, testing subnormals
precision:   5
maxExponent: 999
minexponent: -999
powx421 power  2.5E-501     -2         ->  Infinity Overflow Inexact Rounded
powx422 power  2.5E-500     -2         ->  1.6E+999

powx423 power  2.5E+499     -2         ->  1.6E-999
powx424 power  2.5E+500     -2         ->  1.6E-1001 Subnormal
powx425 power  2.5E+501     -2         ->    2E-1003 Underflow Subnormal Inexact Rounded
powx426 power  2.5E+502     -2         ->    0E-1003 Underflow Subnormal Inexact Rounded

powx427 power 0.25E+499     -2         ->  1.6E-997
powx428 power 0.25E+500     -2         ->  1.6E-999
powx429 power 0.25E+501     -2         ->  1.6E-1001 Subnormal
powx430 power 0.25E+502     -2         ->    2E-1003 Underflow Subnormal Inexact Rounded
powx431 power 0.25E+503     -2         ->    0E-1003 Underflow Subnormal Inexact Rounded

powx432 power 0.04E+499     -2         ->  6.25E-996
powx433 power 0.04E+500     -2         ->  6.25E-998
powx434 power 0.04E+501     -2         ->  6.25E-1000 Subnormal
powx435 power 0.04E+502     -2         ->   6.3E-1002 Underflow Subnormal Inexact Rounded
powx436 power 0.04E+503     -2         ->     1E-1003 Underflow Subnormal Inexact Rounded
powx437 power 0.04E+504     -2         ->     0E-1003 Underflow Subnormal Inexact Rounded

powx441 power 0.04E+334     -3         ->  1.5625E-998
powx442 power 0.04E+335     -3         ->    1.56E-1001 Underflow Subnormal Inexact Rounded
powx443 power 0.04E+336     -3         ->       0E-1003 Underflow Subnormal Inexact Rounded
powx444 power 0.25E+333     -3         ->     6.4E-998
powx445 power 0.25E+334     -3         ->     6.4E-1001 Subnormal
powx446 power 0.25E+335     -3         ->       1E-1003 Underflow Subnormal Inexact Rounded
powx447 power 0.25E+336     -3         ->       0E-1003 Underflow Subnormal Inexact Rounded Clamped
-- check sign for cubes  and a few squares
powx448 power -0.04E+334    -3         -> -1.5625E-998
powx449 power -0.04E+335    -3         ->   -1.56E-1001 Underflow Subnormal Inexact Rounded
powx450 power -0.04E+336    -3         ->      -0E-1003 Underflow Subnormal Inexact Rounded
powx451 power -0.25E+333    -3         ->    -6.4E-998
powx452 power -0.25E+334    -3         ->    -6.4E-1001 Subnormal
powx453 power -0.25E+335    -3         ->      -1E-1003 Underflow Subnormal Inexact Rounded
powx454 power -0.25E+336    -3         ->      -0E-1003 Underflow Subnormal Inexact Rounded Clamped
powx455 power -0.04E+499    -2         ->    6.25E-996
powx456 power -0.04E+500    -2         ->    6.25E-998
powx457 power -0.04E+501    -2         ->    6.25E-1000 Subnormal
powx458 power -0.04E+502    -2         ->     6.3E-1002 Underflow Subnormal Inexact Rounded

-- test -0s
precision: 9
powx560 power  0  0        ->  NaN Invalid_operation
powx561 power  0 -0        ->  NaN Invalid_operation
powx562 power -0  0        ->  NaN Invalid_operation
powx563 power -0 -0        ->  NaN Invalid_operation
powx564 power  1  0        ->  1
powx565 power  1 -0        ->  1
powx566 power -1  0        ->  1
powx567 power -1 -0        ->  1
powx568 power  0  1        ->  0
powx569 power  0 -1        ->  Infinity Division_by_zero
powx570 power -0  1        -> -0
powx571 power -0 -1        -> -Infinity Division_by_zero
powx572 power  0  2        ->  0
powx573 power  0 -2        ->  Infinity Division_by_zero
powx574 power -0  2        ->  0
powx575 power -0 -2        ->  Infinity Division_by_zero
powx576 power  0  3        ->  0
powx577 power  0 -3        ->  Infinity Division_by_zero
powx578 power -0  3        -> -0
powx579 power -0 -3        -> -Infinity Division_by_zero

-- Specials
powx580 power  Inf  -Inf   ->  NaN  Invalid_operation
powx581 power  Inf  -1000  ->  0
powx582 power  Inf  -1     ->  0
powx583 power  Inf  -0     ->  1
powx584 power  Inf   0     ->  1
powx585 power  Inf   1     ->  Infinity
powx586 power  Inf   1000  ->  Infinity
powx587 power  Inf   Inf   ->  NaN  Invalid_operation
powx588 power -1000  Inf   ->  NaN  Invalid_operation
powx589 power -Inf   Inf   ->  NaN  Invalid_operation
powx590 power -1     Inf   ->  NaN  Invalid_operation
powx591 power -0     Inf   ->  NaN  Invalid_operation
powx592 power  0     Inf   ->  NaN  Invalid_operation
powx593 power  1     Inf   ->  NaN  Invalid_operation
powx594 power  1000  Inf   ->  NaN  Invalid_operation
powx595 power  Inf   Inf   ->  NaN  Invalid_operation

powx600 power -Inf  -Inf   ->  NaN  Invalid_operation
powx601 power -Inf  -1000  ->  0
powx602 power -Inf  -1     -> -0
powx603 power -Inf  -0     ->  1
powx604 power -Inf   0     ->  1
powx605 power -Inf   1     -> -Infinity
powx606 power -Inf   1000  ->  Infinity
powx607 power -Inf   Inf   ->  NaN  Invalid_operation
powx608 power -1000  Inf   ->  NaN  Invalid_operation
powx609 power -Inf  -Inf   ->  NaN  Invalid_operation
powx610 power -1    -Inf   ->  NaN  Invalid_operation
powx611 power -0    -Inf   ->  NaN  Invalid_operation
powx612 power  0    -Inf   ->  NaN  Invalid_operation
powx613 power  1    -Inf   ->  NaN  Invalid_operation
powx614 power  1000 -Inf   ->  NaN  Invalid_operation
powx615 power  Inf  -Inf   ->  NaN  Invalid_operation

powx621 power  NaN -Inf    ->  NaN  Invalid_operation
powx622 power  NaN -1000   ->  NaN
powx623 power  NaN -1      ->  NaN
powx624 power  NaN -0      ->  NaN
powx625 power  NaN  0      ->  NaN
powx626 power  NaN  1      ->  NaN
powx627 power  NaN  1000   ->  NaN
powx628 power  NaN  Inf    ->  NaN  Invalid_operation
powx629 power  NaN  NaN    ->  NaN
powx630 power -Inf  NaN    ->  NaN
powx631 power -1000 NaN    ->  NaN
powx632 power -1    NaN    ->  NaN
powx633 power -0    NaN    ->  NaN
powx634 power  0    NaN    ->  NaN
powx635 power  1    NaN    ->  NaN
powx636 power  1000 NaN    ->  NaN
powx637 power  Inf  NaN    ->  NaN

powx641 power  sNaN -Inf   ->  NaN  Invalid_operation
powx642 power  sNaN -1000  ->  NaN  Invalid_operation
powx643 power  sNaN -1     ->  NaN  Invalid_operation
powx644 power  sNaN -0     ->  NaN  Invalid_operation
powx645 power  sNaN  0     ->  NaN  Invalid_operation
powx646 power  sNaN  1     ->  NaN  Invalid_operation
powx647 power  sNaN  1000  ->  NaN  Invalid_operation
powx648 power  sNaN  NaN   ->  NaN  Invalid_operation
powx649 power  sNaN sNaN   ->  NaN  Invalid_operation
powx650 power  NaN  sNaN   ->  NaN  Invalid_operation
powx651 power -Inf  sNaN   ->  NaN  Invalid_operation
powx652 power -1000 sNaN   ->  NaN  Invalid_operation
powx653 power -1    sNaN   ->  NaN  Invalid_operation
powx654 power -0    sNaN   ->  NaN  Invalid_operation
powx655 power  0    sNaN   ->  NaN  Invalid_operation
powx656 power  1    sNaN   ->  NaN  Invalid_operation
powx657 power  1000 sNaN   ->  NaN  Invalid_operation
powx658 power  Inf  sNaN   ->  NaN  Invalid_operation
powx659 power  NaN  sNaN   ->  NaN  Invalid_operation

-- NaN propagation
powx660 power  NaN3  sNaN7  ->  NaN7  Invalid_operation
powx661 power  sNaN8  NaN6  ->  NaN8  Invalid_operation
powx662 power  1     sNaN7  ->  NaN7  Invalid_operation
powx663 power  sNaN8  1     ->  NaN8  Invalid_operation
powx664 power  Inf   sNaN7  ->  NaN7  Invalid_operation
powx665 power  sNaN8  Inf   ->  NaN   Invalid_operation
powx666 power  Inf    NaN9  ->  NaN9
powx667 power  NaN6   Inf   ->  NaN   Invalid_operation
powx668 power  1      NaN5  ->  NaN5
powx669 power  NaN2   1     ->  NaN2
powx670 power  NaN2   Nan4  ->  NaN2
powx671 power  NaN    Nan4  ->  NaN
powx672 power  NaN345 Nan   ->  NaN345
powx673 power  Inf    -sNaN7 -> -NaN7 Invalid_operation
powx674 power  -sNaN8  Inf   -> NaN   Invalid_operation
powx675 power  Inf    -NaN9  -> -NaN9
powx676 power  -NaN6   Inf   -> NaN   Invalid_operation
powx677 power  -NaN2  -Nan4  -> -NaN2

-- Examples from extended specification
powx690 power  Inf  -2     ->  0
powx691 power  Inf  -1     ->  0
powx692 power  Inf   0     ->  1
powx693 power  Inf   1     ->  Infinity
powx694 power  Inf   2     ->  Infinity
powx695 power -Inf  -2     ->  0
powx696 power -Inf  -1     ->  -0
powx697 power -Inf   0     ->  1
powx698 power -Inf   1     ->  -Infinity
powx699 power -Inf   2     ->  Infinity
powx700 power    0   0     ->  NaN Invalid_operation

-- long operand and RHS range checks
maxexponent: 999
minexponent: -999
precision: 9
powx701 power 12345678000 1 -> 1.23456780E+10 Rounded
powx702 power 1234567800  1 -> 1.23456780E+9 Rounded
powx703 power 1234567890  1 -> 1.23456789E+9 Rounded
powx704 power 1234567891  1 -> 1.23456789E+9 Inexact Rounded
powx705 power 12345678901 1 -> 1.23456789E+10 Inexact Rounded
powx706 power 1234567896  1 -> 1.23456790E+9 Inexact Rounded
powx707 power 1 12345678000  -> NaN Invalid_operation
powx708 power 1 1234567800   -> NaN Invalid_operation
powx709 power 1 1234567890   -> NaN Invalid_operation
powx710 power 1 11234567891  -> NaN Invalid_operation
powx711 power 1 12345678901  -> NaN Invalid_operation
powx712 power 1 1234567896   -> NaN Invalid_operation
powx713 power 1 -1234567896  -> NaN Invalid_operation
powx714 power 1 1000000000   -> NaN Invalid_operation
powx715 power 1 -1000000000  -> NaN Invalid_operation

precision: 15
-- still checking
powx741 power 12345678000 1 -> 12345678000
powx742 power 1234567800  1 -> 1234567800
powx743 power 1234567890  1 -> 1234567890
powx744 power 1234567891  1 -> 1234567891
powx745 power 12345678901 1 -> 12345678901
powx746 power 1234567896  1 -> 1234567896
powx747 power 1 12345678000  -> NaN Invalid_operation
powx748 power 1 -1234567896  -> NaN Invalid_operation
powx749 power 1 1000000000   -> NaN Invalid_operation
powx740 power 1 -1000000000  -> NaN Invalid_operation

-- check for double-rounded subnormals
precision:   5
maxexponent: 79
minexponent: -79
powx750 power     1.2347E-40  2      ->  1.524E-80 Inexact Rounded Subnormal Underflow

-- Null tests
powx900 power  1 # -> NaN Invalid_operation
powx901 power  # 1 -> NaN Invalid_operation