17db96d56Sopenharmony_ci------------------------------------------------------------------------
27db96d56Sopenharmony_ci-- clamp.decTest -- clamped exponent tests (format-independent)       --
37db96d56Sopenharmony_ci-- Copyright (c) IBM Corporation, 2000, 2008.  All rights reserved.   --
47db96d56Sopenharmony_ci------------------------------------------------------------------------
57db96d56Sopenharmony_ci-- Please see the document "General Decimal Arithmetic Testcases"     --
67db96d56Sopenharmony_ci-- at http://www2.hursley.ibm.com/decimal for the description of      --
77db96d56Sopenharmony_ci-- these testcases.                                                   --
87db96d56Sopenharmony_ci--                                                                    --
97db96d56Sopenharmony_ci-- These testcases are experimental ('beta' versions), and they       --
107db96d56Sopenharmony_ci-- may contain errors.  They are offered on an as-is basis.  In       --
117db96d56Sopenharmony_ci-- particular, achieving the same results as the tests here is not    --
127db96d56Sopenharmony_ci-- a guarantee that an implementation complies with any Standard      --
137db96d56Sopenharmony_ci-- or specification.  The tests are not exhaustive.                   --
147db96d56Sopenharmony_ci--                                                                    --
157db96d56Sopenharmony_ci-- Please send comments, suggestions, and corrections to the author:  --
167db96d56Sopenharmony_ci--   Mike Cowlishaw, IBM Fellow                                       --
177db96d56Sopenharmony_ci--   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
187db96d56Sopenharmony_ci--   mfc@uk.ibm.com                                                   --
197db96d56Sopenharmony_ci------------------------------------------------------------------------
207db96d56Sopenharmony_civersion: 2.59
217db96d56Sopenharmony_ci
227db96d56Sopenharmony_ci-- This set of tests uses the same limits as the 8-byte concrete
237db96d56Sopenharmony_ci-- representation, but applies clamping without using format-specific
247db96d56Sopenharmony_ci-- conversions.
257db96d56Sopenharmony_ci
267db96d56Sopenharmony_ciextended:    1
277db96d56Sopenharmony_ciprecision:   16
287db96d56Sopenharmony_cirounding:    half_even
297db96d56Sopenharmony_cimaxExponent: 384
307db96d56Sopenharmony_ciminExponent: -383
317db96d56Sopenharmony_ciclamp:       1
327db96d56Sopenharmony_ci
337db96d56Sopenharmony_ci-- General testcases
347db96d56Sopenharmony_ci
357db96d56Sopenharmony_ci-- Normality
367db96d56Sopenharmony_ciclam010 apply   1234567890123456   ->  1234567890123456
377db96d56Sopenharmony_ciclam011 apply   1234567890123456.0 ->  1234567890123456 Rounded
387db96d56Sopenharmony_ciclam012 apply   1234567890123456.1 ->  1234567890123456 Rounded Inexact
397db96d56Sopenharmony_ciclam013 apply  -1234567890123456   -> -1234567890123456
407db96d56Sopenharmony_ciclam014 apply  -1234567890123456.0 -> -1234567890123456 Rounded
417db96d56Sopenharmony_ciclam015 apply  -1234567890123456.1 -> -1234567890123456 Rounded Inexact
427db96d56Sopenharmony_ci
437db96d56Sopenharmony_ci
447db96d56Sopenharmony_ci-- Nmax and similar
457db96d56Sopenharmony_ciclam022 apply   9.999999999999999E+384  -> 9.999999999999999E+384
467db96d56Sopenharmony_ciclam024 apply   1.234567890123456E+384  -> 1.234567890123456E+384
477db96d56Sopenharmony_ci-- fold-downs (more below)
487db96d56Sopenharmony_ciclam030 apply   1.23E+384               -> 1.230000000000000E+384 Clamped
497db96d56Sopenharmony_ciclam032 apply   1E+384                  -> 1.000000000000000E+384 Clamped
507db96d56Sopenharmony_ci
517db96d56Sopenharmony_ciclam051 apply   12345                   -> 12345
527db96d56Sopenharmony_ciclam053 apply   1234                    -> 1234
537db96d56Sopenharmony_ciclam055 apply   123                     -> 123
547db96d56Sopenharmony_ciclam057 apply   12                      -> 12
557db96d56Sopenharmony_ciclam059 apply   1                       -> 1
567db96d56Sopenharmony_ciclam061 apply   1.23                    -> 1.23
577db96d56Sopenharmony_ciclam063 apply   123.45                  -> 123.45
587db96d56Sopenharmony_ci
597db96d56Sopenharmony_ci-- Nmin and below
607db96d56Sopenharmony_ciclam071 apply   1E-383                  -> 1E-383
617db96d56Sopenharmony_ciclam073 apply   1.000000000000000E-383  -> 1.000000000000000E-383
627db96d56Sopenharmony_ciclam075 apply   1.000000000000001E-383  -> 1.000000000000001E-383
637db96d56Sopenharmony_ci
647db96d56Sopenharmony_ciclam077 apply   0.100000000000000E-383  -> 1.00000000000000E-384  Subnormal
657db96d56Sopenharmony_ciclam079 apply   0.000000000000010E-383  -> 1.0E-397               Subnormal
667db96d56Sopenharmony_ciclam081 apply   0.00000000000001E-383   -> 1E-397                 Subnormal
677db96d56Sopenharmony_ciclam083 apply   0.000000000000001E-383  -> 1E-398                 Subnormal
687db96d56Sopenharmony_ci
697db96d56Sopenharmony_ci-- underflows
707db96d56Sopenharmony_ciclam090 apply   1e-398                  -> #0000000000000001  Subnormal
717db96d56Sopenharmony_ciclam091 apply   1.9e-398                -> #0000000000000002  Subnormal Underflow Inexact Rounded
727db96d56Sopenharmony_ciclam092 apply   1.1e-398                -> #0000000000000001  Subnormal Underflow Inexact Rounded
737db96d56Sopenharmony_ciclam093 apply   1.00000000001e-398      -> #0000000000000001  Subnormal Underflow Inexact Rounded
747db96d56Sopenharmony_ciclam094 apply   1.00000000000001e-398   -> #0000000000000001  Subnormal Underflow Inexact Rounded
757db96d56Sopenharmony_ciclam095 apply   1.000000000000001e-398  -> #0000000000000001  Subnormal Underflow Inexact Rounded
767db96d56Sopenharmony_ciclam096 apply   0.1e-398                -> #0000000000000000  Subnormal Underflow Inexact Rounded Clamped
777db96d56Sopenharmony_ciclam097 apply   0.00000000001e-398      -> #0000000000000000  Subnormal Underflow Inexact Rounded Clamped
787db96d56Sopenharmony_ciclam098 apply   0.00000000000001e-398   -> #0000000000000000  Subnormal Underflow Inexact Rounded Clamped
797db96d56Sopenharmony_ciclam099 apply   0.000000000000001e-398  -> #0000000000000000  Subnormal Underflow Inexact Rounded Clamped
807db96d56Sopenharmony_ci
817db96d56Sopenharmony_ci-- Same again, negatives
827db96d56Sopenharmony_ci-- Nmax and similar
837db96d56Sopenharmony_ciclam122 apply  -9.999999999999999E+384  -> -9.999999999999999E+384
847db96d56Sopenharmony_ciclam124 apply  -1.234567890123456E+384  -> -1.234567890123456E+384
857db96d56Sopenharmony_ci-- fold-downs (more below)
867db96d56Sopenharmony_ciclam130 apply  -1.23E+384               -> -1.230000000000000E+384 Clamped
877db96d56Sopenharmony_ciclam132 apply  -1E+384                  -> -1.000000000000000E+384 Clamped
887db96d56Sopenharmony_ci
897db96d56Sopenharmony_ciclam151 apply  -12345                   -> -12345
907db96d56Sopenharmony_ciclam153 apply  -1234                    -> -1234
917db96d56Sopenharmony_ciclam155 apply  -123                     -> -123
927db96d56Sopenharmony_ciclam157 apply  -12                      -> -12
937db96d56Sopenharmony_ciclam159 apply  -1                       -> -1
947db96d56Sopenharmony_ciclam161 apply  -1.23                    -> -1.23
957db96d56Sopenharmony_ciclam163 apply  -123.45                  -> -123.45
967db96d56Sopenharmony_ci
977db96d56Sopenharmony_ci-- Nmin and below
987db96d56Sopenharmony_ciclam171 apply  -1E-383                  -> -1E-383
997db96d56Sopenharmony_ciclam173 apply  -1.000000000000000E-383  -> -1.000000000000000E-383
1007db96d56Sopenharmony_ciclam175 apply  -1.000000000000001E-383  -> -1.000000000000001E-383
1017db96d56Sopenharmony_ci
1027db96d56Sopenharmony_ciclam177 apply  -0.100000000000000E-383  -> -1.00000000000000E-384  Subnormal
1037db96d56Sopenharmony_ciclam179 apply  -0.000000000000010E-383  -> -1.0E-397               Subnormal
1047db96d56Sopenharmony_ciclam181 apply  -0.00000000000001E-383   -> -1E-397                 Subnormal
1057db96d56Sopenharmony_ciclam183 apply  -0.000000000000001E-383  -> -1E-398                 Subnormal
1067db96d56Sopenharmony_ci
1077db96d56Sopenharmony_ci-- underflows
1087db96d56Sopenharmony_ciclam189 apply   -1e-398                 -> #8000000000000001  Subnormal
1097db96d56Sopenharmony_ciclam190 apply   -1.0e-398               -> #8000000000000001  Subnormal Rounded
1107db96d56Sopenharmony_ciclam191 apply   -1.9e-398               -> #8000000000000002  Subnormal Underflow Inexact Rounded
1117db96d56Sopenharmony_ciclam192 apply   -1.1e-398               -> #8000000000000001  Subnormal Underflow Inexact Rounded
1127db96d56Sopenharmony_ciclam193 apply   -1.00000000001e-398     -> #8000000000000001  Subnormal Underflow Inexact Rounded
1137db96d56Sopenharmony_ciclam194 apply   -1.00000000000001e-398  -> #8000000000000001  Subnormal Underflow Inexact Rounded
1147db96d56Sopenharmony_ciclam195 apply   -1.000000000000001e-398 -> #8000000000000001  Subnormal Underflow Inexact Rounded
1157db96d56Sopenharmony_ciclam196 apply   -0.1e-398               -> #8000000000000000  Subnormal Underflow Inexact Rounded Clamped
1167db96d56Sopenharmony_ciclam197 apply   -0.00000000001e-398     -> #8000000000000000  Subnormal Underflow Inexact Rounded Clamped
1177db96d56Sopenharmony_ciclam198 apply   -0.00000000000001e-398  -> #8000000000000000  Subnormal Underflow Inexact Rounded Clamped
1187db96d56Sopenharmony_ciclam199 apply   -0.000000000000001e-398 -> #8000000000000000  Subnormal Underflow Inexact Rounded Clamped
1197db96d56Sopenharmony_ci
1207db96d56Sopenharmony_ci-- zeros
1217db96d56Sopenharmony_ciclam401 apply   0E-500                  -> 0E-398  Clamped
1227db96d56Sopenharmony_ciclam402 apply   0E-400                  -> 0E-398  Clamped
1237db96d56Sopenharmony_ciclam403 apply   0E-398                  -> 0E-398
1247db96d56Sopenharmony_ciclam404 apply   0.000000000000000E-383  -> 0E-398
1257db96d56Sopenharmony_ciclam405 apply   0E-2                    ->  0.00
1267db96d56Sopenharmony_ciclam406 apply   0                       -> 0
1277db96d56Sopenharmony_ciclam407 apply   0E+3                    -> 0E+3
1287db96d56Sopenharmony_ciclam408 apply   0E+369                  -> 0E+369
1297db96d56Sopenharmony_ci-- clamped zeros...
1307db96d56Sopenharmony_ciclam410 apply   0E+370                  -> 0E+369 Clamped
1317db96d56Sopenharmony_ciclam411 apply   0E+384                  -> 0E+369 Clamped
1327db96d56Sopenharmony_ciclam412 apply   0E+400                  -> 0E+369 Clamped
1337db96d56Sopenharmony_ciclam413 apply   0E+500                  -> 0E+369 Clamped
1347db96d56Sopenharmony_ci
1357db96d56Sopenharmony_ci-- negative zeros
1367db96d56Sopenharmony_ciclam420 apply   -0E-500                 -> -0E-398 Clamped
1377db96d56Sopenharmony_ciclam421 apply   -0E-400                 -> -0E-398 Clamped
1387db96d56Sopenharmony_ciclam422 apply   -0E-398                 -> -0E-398
1397db96d56Sopenharmony_ciclam423 apply   -0.000000000000000E-383 -> -0E-398
1407db96d56Sopenharmony_ciclam424 apply   -0E-2                   -> -0.00
1417db96d56Sopenharmony_ciclam425 apply   -0                      -> -0
1427db96d56Sopenharmony_ciclam426 apply   -0E+3                   -> -0E+3
1437db96d56Sopenharmony_ciclam427 apply   -0E+369                 -> -0E+369
1447db96d56Sopenharmony_ci-- clamped zeros...
1457db96d56Sopenharmony_ciclam431 apply   -0E+370                 -> -0E+369 Clamped
1467db96d56Sopenharmony_ciclam432 apply   -0E+384                 -> -0E+369 Clamped
1477db96d56Sopenharmony_ciclam433 apply   -0E+400                 -> -0E+369 Clamped
1487db96d56Sopenharmony_ciclam434 apply   -0E+500                 -> -0E+369 Clamped
1497db96d56Sopenharmony_ci
1507db96d56Sopenharmony_ci-- fold-down full sequence
1517db96d56Sopenharmony_ciclam601 apply   1E+384                  -> 1.000000000000000E+384 Clamped
1527db96d56Sopenharmony_ciclam603 apply   1E+383                  -> 1.00000000000000E+383 Clamped
1537db96d56Sopenharmony_ciclam605 apply   1E+382                  -> 1.0000000000000E+382 Clamped
1547db96d56Sopenharmony_ciclam607 apply   1E+381                  -> 1.000000000000E+381 Clamped
1557db96d56Sopenharmony_ciclam609 apply   1E+380                  -> 1.00000000000E+380 Clamped
1567db96d56Sopenharmony_ciclam611 apply   1E+379                  -> 1.0000000000E+379 Clamped
1577db96d56Sopenharmony_ciclam613 apply   1E+378                  -> 1.000000000E+378 Clamped
1587db96d56Sopenharmony_ciclam615 apply   1E+377                  -> 1.00000000E+377 Clamped
1597db96d56Sopenharmony_ciclam617 apply   1E+376                  -> 1.0000000E+376 Clamped
1607db96d56Sopenharmony_ciclam619 apply   1E+375                  -> 1.000000E+375 Clamped
1617db96d56Sopenharmony_ciclam621 apply   1E+374                  -> 1.00000E+374 Clamped
1627db96d56Sopenharmony_ciclam623 apply   1E+373                  -> 1.0000E+373 Clamped
1637db96d56Sopenharmony_ciclam625 apply   1E+372                  -> 1.000E+372 Clamped
1647db96d56Sopenharmony_ciclam627 apply   1E+371                  -> 1.00E+371 Clamped
1657db96d56Sopenharmony_ciclam629 apply   1E+370                  -> 1.0E+370 Clamped
1667db96d56Sopenharmony_ciclam631 apply   1E+369                  -> 1E+369
1677db96d56Sopenharmony_ciclam633 apply   1E+368                  -> 1E+368
1687db96d56Sopenharmony_ci-- same with 9s
1697db96d56Sopenharmony_ciclam641 apply   9E+384                  -> 9.000000000000000E+384 Clamped
1707db96d56Sopenharmony_ciclam643 apply   9E+383                  -> 9.00000000000000E+383 Clamped
1717db96d56Sopenharmony_ciclam645 apply   9E+382                  -> 9.0000000000000E+382 Clamped
1727db96d56Sopenharmony_ciclam647 apply   9E+381                  -> 9.000000000000E+381 Clamped
1737db96d56Sopenharmony_ciclam649 apply   9E+380                  -> 9.00000000000E+380 Clamped
1747db96d56Sopenharmony_ciclam651 apply   9E+379                  -> 9.0000000000E+379 Clamped
1757db96d56Sopenharmony_ciclam653 apply   9E+378                  -> 9.000000000E+378 Clamped
1767db96d56Sopenharmony_ciclam655 apply   9E+377                  -> 9.00000000E+377 Clamped
1777db96d56Sopenharmony_ciclam657 apply   9E+376                  -> 9.0000000E+376 Clamped
1787db96d56Sopenharmony_ciclam659 apply   9E+375                  -> 9.000000E+375 Clamped
1797db96d56Sopenharmony_ciclam661 apply   9E+374                  -> 9.00000E+374 Clamped
1807db96d56Sopenharmony_ciclam663 apply   9E+373                  -> 9.0000E+373 Clamped
1817db96d56Sopenharmony_ciclam665 apply   9E+372                  -> 9.000E+372 Clamped
1827db96d56Sopenharmony_ciclam667 apply   9E+371                  -> 9.00E+371 Clamped
1837db96d56Sopenharmony_ciclam669 apply   9E+370                  -> 9.0E+370 Clamped
1847db96d56Sopenharmony_ciclam671 apply   9E+369                  -> 9E+369
1857db96d56Sopenharmony_ciclam673 apply   9E+368                  -> 9E+368
1867db96d56Sopenharmony_ci
1877db96d56Sopenharmony_ci-- subnormals clamped to 0-Etiny
1887db96d56Sopenharmony_ciprecision:   16
1897db96d56Sopenharmony_cimaxExponent: 384
1907db96d56Sopenharmony_ciminExponent: -383
1917db96d56Sopenharmony_ciclam681 apply 7E-398     -> 7E-398 Subnormal
1927db96d56Sopenharmony_ciclam682 apply 0E-398     -> 0E-398
1937db96d56Sopenharmony_ciclam683 apply 7E-399     -> 1E-398 Subnormal Underflow Inexact Rounded
1947db96d56Sopenharmony_ciclam684 apply 4E-399     -> 0E-398 Clamped Subnormal Underflow Inexact Rounded
1957db96d56Sopenharmony_ciclam685 apply 7E-400     -> 0E-398 Clamped Subnormal Underflow Inexact Rounded
1967db96d56Sopenharmony_ciclam686 apply 7E-401     -> 0E-398 Clamped Subnormal Underflow Inexact Rounded
1977db96d56Sopenharmony_ciclam687 apply 0E-399     -> 0E-398 Clamped
1987db96d56Sopenharmony_ciclam688 apply 0E-400     -> 0E-398 Clamped
1997db96d56Sopenharmony_ciclam689 apply 0E-401     -> 0E-398 Clamped
2007db96d56Sopenharmony_ci
2017db96d56Sopenharmony_ci-- example from documentation
2027db96d56Sopenharmony_ciprecision:   7
2037db96d56Sopenharmony_cirounding:    half_even
2047db96d56Sopenharmony_cimaxExponent: +96
2057db96d56Sopenharmony_ciminExponent: -95
2067db96d56Sopenharmony_ci
2077db96d56Sopenharmony_ciclamp:       0
2087db96d56Sopenharmony_ciclam700 apply   1.23E+96                -> 1.23E+96
2097db96d56Sopenharmony_ci
2107db96d56Sopenharmony_ciclamp:       1
2117db96d56Sopenharmony_ciclam701 apply   1.23E+96                -> 1.230000E+96 Clamped
212