17db96d56Sopenharmony_ci------------------------------------------------------------------------
27db96d56Sopenharmony_ci-- plus.decTest -- decimal monadic addition                           --
37db96d56Sopenharmony_ci-- Copyright (c) IBM Corporation, 1981, 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 primarily tests the existence of the operator.
237db96d56Sopenharmony_ci-- Addition and rounding, and most overflows, are tested elsewhere.
247db96d56Sopenharmony_ci
257db96d56Sopenharmony_ciextended:    1
267db96d56Sopenharmony_ciprecision:   9
277db96d56Sopenharmony_cirounding:    half_up
287db96d56Sopenharmony_cimaxExponent: 384
297db96d56Sopenharmony_ciminexponent: -383
307db96d56Sopenharmony_ci
317db96d56Sopenharmony_ciplux001 plus '1'      -> '1'
327db96d56Sopenharmony_ciplux002 plus '-1'     -> '-1'
337db96d56Sopenharmony_ciplux003 plus '1.00'   -> '1.00'
347db96d56Sopenharmony_ciplux004 plus '-1.00'  -> '-1.00'
357db96d56Sopenharmony_ciplux005 plus '0'      -> '0'
367db96d56Sopenharmony_ciplux006 plus '0.00'   -> '0.00'
377db96d56Sopenharmony_ciplux007 plus '00.0'   -> '0.0'
387db96d56Sopenharmony_ciplux008 plus '00.00'  -> '0.00'
397db96d56Sopenharmony_ciplux009 plus '00'     -> '0'
407db96d56Sopenharmony_ci
417db96d56Sopenharmony_ciplux010 plus '-2'     -> '-2'
427db96d56Sopenharmony_ciplux011 plus '2'      -> '2'
437db96d56Sopenharmony_ciplux012 plus '-2.00'  -> '-2.00'
447db96d56Sopenharmony_ciplux013 plus '2.00'   -> '2.00'
457db96d56Sopenharmony_ciplux014 plus '-0'     -> '0'
467db96d56Sopenharmony_ciplux015 plus '-0.00'  -> '0.00'
477db96d56Sopenharmony_ciplux016 plus '-00.0'  -> '0.0'
487db96d56Sopenharmony_ciplux017 plus '-00.00' -> '0.00'
497db96d56Sopenharmony_ciplux018 plus '-00'    -> '0'
507db96d56Sopenharmony_ci
517db96d56Sopenharmony_ciplux020 plus '-2000000' -> '-2000000'
527db96d56Sopenharmony_ciplux021 plus '2000000'  -> '2000000'
537db96d56Sopenharmony_ciprecision: 7
547db96d56Sopenharmony_ciplux022 plus '-2000000' -> '-2000000'
557db96d56Sopenharmony_ciplux023 plus '2000000'  -> '2000000'
567db96d56Sopenharmony_ciprecision: 6
577db96d56Sopenharmony_ciplux024 plus '-2000000' -> '-2.00000E+6' Rounded
587db96d56Sopenharmony_ciplux025 plus '2000000'  -> '2.00000E+6' Rounded
597db96d56Sopenharmony_ciprecision: 3
607db96d56Sopenharmony_ciplux026 plus '-2000000' -> '-2.00E+6' Rounded
617db96d56Sopenharmony_ciplux027 plus '2000000'  -> '2.00E+6' Rounded
627db96d56Sopenharmony_ci
637db96d56Sopenharmony_ci-- more fixed, potential LHS swaps if done by add 0
647db96d56Sopenharmony_ciprecision: 9
657db96d56Sopenharmony_ciplux060 plus '56267E-10'   -> '0.0000056267'
667db96d56Sopenharmony_ciplux061 plus '56267E-5'    -> '0.56267'
677db96d56Sopenharmony_ciplux062 plus '56267E-2'    -> '562.67'
687db96d56Sopenharmony_ciplux063 plus '56267E-1'    -> '5626.7'
697db96d56Sopenharmony_ciplux065 plus '56267E-0'    -> '56267'
707db96d56Sopenharmony_ciplux066 plus '56267E+0'    -> '56267'
717db96d56Sopenharmony_ciplux067 plus '56267E+1'    -> '5.6267E+5'
727db96d56Sopenharmony_ciplux068 plus '56267E+2'    -> '5.6267E+6'
737db96d56Sopenharmony_ciplux069 plus '56267E+3'    -> '5.6267E+7'
747db96d56Sopenharmony_ciplux070 plus '56267E+4'    -> '5.6267E+8'
757db96d56Sopenharmony_ciplux071 plus '56267E+5'    -> '5.6267E+9'
767db96d56Sopenharmony_ciplux072 plus '56267E+6'    -> '5.6267E+10'
777db96d56Sopenharmony_ciplux080 plus '-56267E-10'  -> '-0.0000056267'
787db96d56Sopenharmony_ciplux081 plus '-56267E-5'   -> '-0.56267'
797db96d56Sopenharmony_ciplux082 plus '-56267E-2'   -> '-562.67'
807db96d56Sopenharmony_ciplux083 plus '-56267E-1'   -> '-5626.7'
817db96d56Sopenharmony_ciplux085 plus '-56267E-0'   -> '-56267'
827db96d56Sopenharmony_ciplux086 plus '-56267E+0'   -> '-56267'
837db96d56Sopenharmony_ciplux087 plus '-56267E+1'   -> '-5.6267E+5'
847db96d56Sopenharmony_ciplux088 plus '-56267E+2'   -> '-5.6267E+6'
857db96d56Sopenharmony_ciplux089 plus '-56267E+3'   -> '-5.6267E+7'
867db96d56Sopenharmony_ciplux090 plus '-56267E+4'   -> '-5.6267E+8'
877db96d56Sopenharmony_ciplux091 plus '-56267E+5'   -> '-5.6267E+9'
887db96d56Sopenharmony_ciplux092 plus '-56267E+6'   -> '-5.6267E+10'
897db96d56Sopenharmony_ci
907db96d56Sopenharmony_ci-- "lhs" zeros in plus and minus have exponent = operand
917db96d56Sopenharmony_ciplux120 plus '-0E3'   -> '0E+3'
927db96d56Sopenharmony_ciplux121 plus '-0E2'   -> '0E+2'
937db96d56Sopenharmony_ciplux122 plus '-0E1'   -> '0E+1'
947db96d56Sopenharmony_ciplux123 plus '-0E0'   -> '0'
957db96d56Sopenharmony_ciplux124 plus '+0E0'   -> '0'
967db96d56Sopenharmony_ciplux125 plus '+0E1'   -> '0E+1'
977db96d56Sopenharmony_ciplux126 plus '+0E2'   -> '0E+2'
987db96d56Sopenharmony_ciplux127 plus '+0E3'   -> '0E+3'
997db96d56Sopenharmony_ci
1007db96d56Sopenharmony_ciplux130 plus '-5E3'   -> '-5E+3'
1017db96d56Sopenharmony_ciplux131 plus '-5E8'   -> '-5E+8'
1027db96d56Sopenharmony_ciplux132 plus '-5E13'  -> '-5E+13'
1037db96d56Sopenharmony_ciplux133 plus '-5E18'  -> '-5E+18'
1047db96d56Sopenharmony_ciplux134 plus '+5E3'   -> '5E+3'
1057db96d56Sopenharmony_ciplux135 plus '+5E8'   -> '5E+8'
1067db96d56Sopenharmony_ciplux136 plus '+5E13'  -> '5E+13'
1077db96d56Sopenharmony_ciplux137 plus '+5E18'  -> '5E+18'
1087db96d56Sopenharmony_ci
1097db96d56Sopenharmony_ci-- specials
1107db96d56Sopenharmony_ciplux150 plus 'Inf'    -> 'Infinity'
1117db96d56Sopenharmony_ciplux151 plus '-Inf'   -> '-Infinity'
1127db96d56Sopenharmony_ciplux152 plus   NaN    ->  NaN
1137db96d56Sopenharmony_ciplux153 plus  sNaN    ->  NaN   Invalid_operation
1147db96d56Sopenharmony_ciplux154 plus   NaN77  ->  NaN77
1157db96d56Sopenharmony_ciplux155 plus  sNaN88  ->  NaN88 Invalid_operation
1167db96d56Sopenharmony_ciplux156 plus  -NaN    -> -NaN
1177db96d56Sopenharmony_ciplux157 plus -sNaN    -> -NaN   Invalid_operation
1187db96d56Sopenharmony_ciplux158 plus  -NaN77  -> -NaN77
1197db96d56Sopenharmony_ciplux159 plus -sNaN88  -> -NaN88 Invalid_operation
1207db96d56Sopenharmony_ci
1217db96d56Sopenharmony_ci-- overflow tests
1227db96d56Sopenharmony_cimaxexponent: 999999999
1237db96d56Sopenharmony_ciminexponent: -999999999
1247db96d56Sopenharmony_ciprecision: 3
1257db96d56Sopenharmony_ciplux160 plus 9.999E+999999999  ->  Infinity Inexact Overflow Rounded
1267db96d56Sopenharmony_ciplux161 plus -9.999E+999999999 -> -Infinity Inexact Overflow Rounded
1277db96d56Sopenharmony_ci
1287db96d56Sopenharmony_ci-- subnormals and underflow
1297db96d56Sopenharmony_ciprecision: 3
1307db96d56Sopenharmony_cimaxexponent: 999
1317db96d56Sopenharmony_ciminexponent: -999
1327db96d56Sopenharmony_ciplux210 plus  1.00E-999        ->   1.00E-999
1337db96d56Sopenharmony_ciplux211 plus  0.1E-999         ->   1E-1000   Subnormal
1347db96d56Sopenharmony_ciplux212 plus  0.10E-999        ->   1.0E-1000 Subnormal
1357db96d56Sopenharmony_ciplux213 plus  0.100E-999       ->   1.0E-1000 Subnormal Rounded
1367db96d56Sopenharmony_ciplux214 plus  0.01E-999        ->   1E-1001   Subnormal
1377db96d56Sopenharmony_ci-- next is rounded to Emin
1387db96d56Sopenharmony_ciplux215 plus  0.999E-999       ->   1.00E-999 Inexact Rounded Subnormal Underflow
1397db96d56Sopenharmony_ciplux216 plus  0.099E-999       ->   1.0E-1000 Inexact Rounded Subnormal Underflow
1407db96d56Sopenharmony_ciplux217 plus  0.009E-999       ->   1E-1001   Inexact Rounded Subnormal Underflow
1417db96d56Sopenharmony_ciplux218 plus  0.001E-999       ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped
1427db96d56Sopenharmony_ciplux219 plus  0.0009E-999      ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped
1437db96d56Sopenharmony_ciplux220 plus  0.0001E-999      ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped
1447db96d56Sopenharmony_ci
1457db96d56Sopenharmony_ciplux230 plus -1.00E-999        ->  -1.00E-999
1467db96d56Sopenharmony_ciplux231 plus -0.1E-999         ->  -1E-1000   Subnormal
1477db96d56Sopenharmony_ciplux232 plus -0.10E-999        ->  -1.0E-1000 Subnormal
1487db96d56Sopenharmony_ciplux233 plus -0.100E-999       ->  -1.0E-1000 Subnormal Rounded
1497db96d56Sopenharmony_ciplux234 plus -0.01E-999        ->  -1E-1001   Subnormal
1507db96d56Sopenharmony_ci-- next is rounded to Emin
1517db96d56Sopenharmony_ciplux235 plus -0.999E-999       ->  -1.00E-999 Inexact Rounded Subnormal Underflow
1527db96d56Sopenharmony_ciplux236 plus -0.099E-999       ->  -1.0E-1000 Inexact Rounded Subnormal Underflow
1537db96d56Sopenharmony_ciplux237 plus -0.009E-999       ->  -1E-1001   Inexact Rounded Subnormal Underflow
1547db96d56Sopenharmony_ciplux238 plus -0.001E-999       ->  -0E-1001   Inexact Rounded Subnormal Underflow Clamped
1557db96d56Sopenharmony_ciplux239 plus -0.0009E-999      ->  -0E-1001   Inexact Rounded Subnormal Underflow Clamped
1567db96d56Sopenharmony_ciplux240 plus -0.0001E-999      ->  -0E-1001   Inexact Rounded Subnormal Underflow Clamped
1577db96d56Sopenharmony_ci
1587db96d56Sopenharmony_ci-- subnormals clamped to 0-Etiny
1597db96d56Sopenharmony_ciprecision:   16
1607db96d56Sopenharmony_cimaxExponent: 384
1617db96d56Sopenharmony_ciminExponent: -383
1627db96d56Sopenharmony_ciplux251 plus 7E-398     -> 7E-398 Subnormal
1637db96d56Sopenharmony_ciplux252 plus 0E-398     -> 0E-398
1647db96d56Sopenharmony_ciplux253 plus 7E-399     -> 1E-398 Subnormal Underflow Inexact Rounded
1657db96d56Sopenharmony_ciplux254 plus 4E-399     -> 0E-398 Clamped Subnormal Underflow Inexact Rounded
1667db96d56Sopenharmony_ciplux255 plus 7E-400     -> 0E-398 Clamped Subnormal Underflow Inexact Rounded
1677db96d56Sopenharmony_ciplux256 plus 7E-401     -> 0E-398 Clamped Subnormal Underflow Inexact Rounded
1687db96d56Sopenharmony_ciplux257 plus 0E-399     -> 0E-398 Clamped
1697db96d56Sopenharmony_ciplux258 plus 0E-400     -> 0E-398 Clamped
1707db96d56Sopenharmony_ciplux259 plus 0E-401     -> 0E-398 Clamped
1717db96d56Sopenharmony_ci
1727db96d56Sopenharmony_ci-- long operand checks
1737db96d56Sopenharmony_cimaxexponent: 999
1747db96d56Sopenharmony_ciminexponent: -999
1757db96d56Sopenharmony_ciprecision: 9
1767db96d56Sopenharmony_ciplux301 plus 12345678000  -> 1.23456780E+10 Rounded
1777db96d56Sopenharmony_ciplux302 plus 1234567800   -> 1.23456780E+9 Rounded
1787db96d56Sopenharmony_ciplux303 plus 1234567890   -> 1.23456789E+9 Rounded
1797db96d56Sopenharmony_ciplux304 plus 1234567891   -> 1.23456789E+9 Inexact Rounded
1807db96d56Sopenharmony_ciplux305 plus 12345678901  -> 1.23456789E+10 Inexact Rounded
1817db96d56Sopenharmony_ciplux306 plus 1234567896   -> 1.23456790E+9 Inexact Rounded
1827db96d56Sopenharmony_ci
1837db96d56Sopenharmony_ci-- still checking
1847db96d56Sopenharmony_ciprecision: 15
1857db96d56Sopenharmony_ciplux321 plus 12345678000  -> 12345678000
1867db96d56Sopenharmony_ciplux322 plus 1234567800   -> 1234567800
1877db96d56Sopenharmony_ciplux323 plus 1234567890   -> 1234567890
1887db96d56Sopenharmony_ciplux324 plus 1234567891   -> 1234567891
1897db96d56Sopenharmony_ciplux325 plus 12345678901  -> 12345678901
1907db96d56Sopenharmony_ciplux326 plus 1234567896   -> 1234567896
1917db96d56Sopenharmony_ciprecision: 9
1927db96d56Sopenharmony_ci
1937db96d56Sopenharmony_ci-- Null tests
1947db96d56Sopenharmony_ciplu900 plus  # -> NaN Invalid_operation
1957db96d56Sopenharmony_ci
196