17db96d56Sopenharmony_ci------------------------------------------------------------------------
27db96d56Sopenharmony_ci-- subtract.decTest -- decimal subtraction                            --
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_ciextended:    1
237db96d56Sopenharmony_ciprecision:   9
247db96d56Sopenharmony_cirounding:    half_up
257db96d56Sopenharmony_cimaxExponent: 384
267db96d56Sopenharmony_ciminexponent: -383
277db96d56Sopenharmony_ci
287db96d56Sopenharmony_ci-- [first group are 'quick confidence check']
297db96d56Sopenharmony_cisubx001 subtract  0   0  -> '0'
307db96d56Sopenharmony_cisubx002 subtract  1   1  -> '0'
317db96d56Sopenharmony_cisubx003 subtract  1   2  -> '-1'
327db96d56Sopenharmony_cisubx004 subtract  2   1  -> '1'
337db96d56Sopenharmony_cisubx005 subtract  2   2  -> '0'
347db96d56Sopenharmony_cisubx006 subtract  3   2  -> '1'
357db96d56Sopenharmony_cisubx007 subtract  2   3  -> '-1'
367db96d56Sopenharmony_ci
377db96d56Sopenharmony_cisubx011 subtract -0   0  -> '-0'
387db96d56Sopenharmony_cisubx012 subtract -1   1  -> '-2'
397db96d56Sopenharmony_cisubx013 subtract -1   2  -> '-3'
407db96d56Sopenharmony_cisubx014 subtract -2   1  -> '-3'
417db96d56Sopenharmony_cisubx015 subtract -2   2  -> '-4'
427db96d56Sopenharmony_cisubx016 subtract -3   2  -> '-5'
437db96d56Sopenharmony_cisubx017 subtract -2   3  -> '-5'
447db96d56Sopenharmony_ci
457db96d56Sopenharmony_cisubx021 subtract  0  -0  -> '0'
467db96d56Sopenharmony_cisubx022 subtract  1  -1  -> '2'
477db96d56Sopenharmony_cisubx023 subtract  1  -2  -> '3'
487db96d56Sopenharmony_cisubx024 subtract  2  -1  -> '3'
497db96d56Sopenharmony_cisubx025 subtract  2  -2  -> '4'
507db96d56Sopenharmony_cisubx026 subtract  3  -2  -> '5'
517db96d56Sopenharmony_cisubx027 subtract  2  -3  -> '5'
527db96d56Sopenharmony_ci
537db96d56Sopenharmony_cisubx030 subtract  11  1  -> 10
547db96d56Sopenharmony_cisubx031 subtract  10  1  ->  9
557db96d56Sopenharmony_cisubx032 subtract  9   1  ->  8
567db96d56Sopenharmony_cisubx033 subtract  1   1  ->  0
577db96d56Sopenharmony_cisubx034 subtract  0   1  -> -1
587db96d56Sopenharmony_cisubx035 subtract -1   1  -> -2
597db96d56Sopenharmony_cisubx036 subtract -9   1  -> -10
607db96d56Sopenharmony_cisubx037 subtract -10  1  -> -11
617db96d56Sopenharmony_cisubx038 subtract -11  1  -> -12
627db96d56Sopenharmony_ci
637db96d56Sopenharmony_cisubx040 subtract '5.75' '3.3'  -> '2.45'
647db96d56Sopenharmony_cisubx041 subtract '5'    '-3'   -> '8'
657db96d56Sopenharmony_cisubx042 subtract '-5'   '-3'   -> '-2'
667db96d56Sopenharmony_cisubx043 subtract '-7'   '2.5'  -> '-9.5'
677db96d56Sopenharmony_cisubx044 subtract '0.7'  '0.3'  -> '0.4'
687db96d56Sopenharmony_cisubx045 subtract '1.3'  '0.3'  -> '1.0'
697db96d56Sopenharmony_cisubx046 subtract '1.25' '1.25' -> '0.00'
707db96d56Sopenharmony_ci
717db96d56Sopenharmony_cisubx050 subtract '1.23456789'    '1.00000000' -> '0.23456789'
727db96d56Sopenharmony_cisubx051 subtract '1.23456789'    '1.00000089' -> '0.23456700'
737db96d56Sopenharmony_cisubx052 subtract '0.5555555559'    '0.0000000001' -> '0.555555556' Inexact Rounded
747db96d56Sopenharmony_cisubx053 subtract '0.5555555559'    '0.0000000005' -> '0.555555555' Inexact Rounded
757db96d56Sopenharmony_cisubx054 subtract '0.4444444444'    '0.1111111111' -> '0.333333333' Inexact Rounded
767db96d56Sopenharmony_cisubx055 subtract '1.0000000000'    '0.00000001' -> '0.999999990' Rounded
777db96d56Sopenharmony_cisubx056 subtract '0.4444444444999'    '0' -> '0.444444444' Inexact Rounded
787db96d56Sopenharmony_cisubx057 subtract '0.4444444445000'    '0' -> '0.444444445' Inexact Rounded
797db96d56Sopenharmony_ci
807db96d56Sopenharmony_cisubx060 subtract '70'    '10000e+9' -> '-1.00000000E+13' Inexact Rounded
817db96d56Sopenharmony_cisubx061 subtract '700'    '10000e+9' -> '-1.00000000E+13' Inexact Rounded
827db96d56Sopenharmony_cisubx062 subtract '7000'    '10000e+9' -> '-9.99999999E+12' Inexact Rounded
837db96d56Sopenharmony_cisubx063 subtract '70000'    '10000e+9' -> '-9.99999993E+12' Rounded
847db96d56Sopenharmony_cisubx064 subtract '700000'    '10000e+9' -> '-9.99999930E+12' Rounded
857db96d56Sopenharmony_ci  -- symmetry:
867db96d56Sopenharmony_cisubx065 subtract '10000e+9'    '70' -> '1.00000000E+13' Inexact Rounded
877db96d56Sopenharmony_cisubx066 subtract '10000e+9'    '700' -> '1.00000000E+13' Inexact Rounded
887db96d56Sopenharmony_cisubx067 subtract '10000e+9'    '7000' -> '9.99999999E+12' Inexact Rounded
897db96d56Sopenharmony_cisubx068 subtract '10000e+9'    '70000' -> '9.99999993E+12' Rounded
907db96d56Sopenharmony_cisubx069 subtract '10000e+9'    '700000' -> '9.99999930E+12' Rounded
917db96d56Sopenharmony_ci
927db96d56Sopenharmony_ci  -- change precision
937db96d56Sopenharmony_cisubx080 subtract '10000e+9'    '70000' -> '9.99999993E+12' Rounded
947db96d56Sopenharmony_ciprecision: 6
957db96d56Sopenharmony_cisubx081 subtract '10000e+9'    '70000' -> '1.00000E+13' Inexact Rounded
967db96d56Sopenharmony_ciprecision: 9
977db96d56Sopenharmony_ci
987db96d56Sopenharmony_ci  -- some of the next group are really constructor tests
997db96d56Sopenharmony_cisubx090 subtract '00.0'    '0.0'  -> '0.0'
1007db96d56Sopenharmony_cisubx091 subtract '00.0'    '0.00' -> '0.00'
1017db96d56Sopenharmony_cisubx092 subtract '0.00'    '00.0' -> '0.00'
1027db96d56Sopenharmony_cisubx093 subtract '00.0'    '0.00' -> '0.00'
1037db96d56Sopenharmony_cisubx094 subtract '0.00'    '00.0' -> '0.00'
1047db96d56Sopenharmony_cisubx095 subtract '3'    '.3'   -> '2.7'
1057db96d56Sopenharmony_cisubx096 subtract '3.'   '.3'   -> '2.7'
1067db96d56Sopenharmony_cisubx097 subtract '3.0'  '.3'   -> '2.7'
1077db96d56Sopenharmony_cisubx098 subtract '3.00' '.3'   -> '2.70'
1087db96d56Sopenharmony_cisubx099 subtract '3'    '3'    -> '0'
1097db96d56Sopenharmony_cisubx100 subtract '3'    '+3'   -> '0'
1107db96d56Sopenharmony_cisubx101 subtract '3'    '-3'   -> '6'
1117db96d56Sopenharmony_cisubx102 subtract '3'    '0.3'  -> '2.7'
1127db96d56Sopenharmony_cisubx103 subtract '3.'   '0.3'  -> '2.7'
1137db96d56Sopenharmony_cisubx104 subtract '3.0'  '0.3'  -> '2.7'
1147db96d56Sopenharmony_cisubx105 subtract '3.00' '0.3'  -> '2.70'
1157db96d56Sopenharmony_cisubx106 subtract '3'    '3.0'  -> '0.0'
1167db96d56Sopenharmony_cisubx107 subtract '3'    '+3.0' -> '0.0'
1177db96d56Sopenharmony_cisubx108 subtract '3'    '-3.0' -> '6.0'
1187db96d56Sopenharmony_ci
1197db96d56Sopenharmony_ci-- the above all from add; massaged and extended.  Now some new ones...
1207db96d56Sopenharmony_ci-- [particularly important for comparisons]
1217db96d56Sopenharmony_ci-- NB: -xE-8 below were non-exponents pre-ANSI X3-274, and -1E-7 or 0E-7
1227db96d56Sopenharmony_ci-- with input rounding.
1237db96d56Sopenharmony_cisubx120 subtract  '10.23456784'    '10.23456789'  -> '-5E-8'
1247db96d56Sopenharmony_cisubx121 subtract  '10.23456785'    '10.23456789'  -> '-4E-8'
1257db96d56Sopenharmony_cisubx122 subtract  '10.23456786'    '10.23456789'  -> '-3E-8'
1267db96d56Sopenharmony_cisubx123 subtract  '10.23456787'    '10.23456789'  -> '-2E-8'
1277db96d56Sopenharmony_cisubx124 subtract  '10.23456788'    '10.23456789'  -> '-1E-8'
1287db96d56Sopenharmony_cisubx125 subtract  '10.23456789'    '10.23456789'  -> '0E-8'
1297db96d56Sopenharmony_cisubx126 subtract  '10.23456790'    '10.23456789'  -> '1E-8'
1307db96d56Sopenharmony_cisubx127 subtract  '10.23456791'    '10.23456789'  -> '2E-8'
1317db96d56Sopenharmony_cisubx128 subtract  '10.23456792'    '10.23456789'  -> '3E-8'
1327db96d56Sopenharmony_cisubx129 subtract  '10.23456793'    '10.23456789'  -> '4E-8'
1337db96d56Sopenharmony_cisubx130 subtract  '10.23456794'    '10.23456789'  -> '5E-8'
1347db96d56Sopenharmony_cisubx131 subtract  '10.23456781'    '10.23456786'  -> '-5E-8'
1357db96d56Sopenharmony_cisubx132 subtract  '10.23456782'    '10.23456786'  -> '-4E-8'
1367db96d56Sopenharmony_cisubx133 subtract  '10.23456783'    '10.23456786'  -> '-3E-8'
1377db96d56Sopenharmony_cisubx134 subtract  '10.23456784'    '10.23456786'  -> '-2E-8'
1387db96d56Sopenharmony_cisubx135 subtract  '10.23456785'    '10.23456786'  -> '-1E-8'
1397db96d56Sopenharmony_cisubx136 subtract  '10.23456786'    '10.23456786'  -> '0E-8'
1407db96d56Sopenharmony_cisubx137 subtract  '10.23456787'    '10.23456786'  -> '1E-8'
1417db96d56Sopenharmony_cisubx138 subtract  '10.23456788'    '10.23456786'  -> '2E-8'
1427db96d56Sopenharmony_cisubx139 subtract  '10.23456789'    '10.23456786'  -> '3E-8'
1437db96d56Sopenharmony_cisubx140 subtract  '10.23456790'    '10.23456786'  -> '4E-8'
1447db96d56Sopenharmony_cisubx141 subtract  '10.23456791'    '10.23456786'  -> '5E-8'
1457db96d56Sopenharmony_cisubx142 subtract  '1'              '0.999999999'  -> '1E-9'
1467db96d56Sopenharmony_cisubx143 subtract  '0.999999999'    '1'            -> '-1E-9'
1477db96d56Sopenharmony_cisubx144 subtract  '-10.23456780'   '-10.23456786' -> '6E-8'
1487db96d56Sopenharmony_cisubx145 subtract  '-10.23456790'   '-10.23456786' -> '-4E-8'
1497db96d56Sopenharmony_cisubx146 subtract  '-10.23456791'   '-10.23456786' -> '-5E-8'
1507db96d56Sopenharmony_ci
1517db96d56Sopenharmony_ciprecision: 3
1527db96d56Sopenharmony_cisubx150 subtract '12345678900000' '9999999999999'  -> 2.35E+12 Inexact Rounded
1537db96d56Sopenharmony_cisubx151 subtract '9999999999999'  '12345678900000' -> -2.35E+12 Inexact Rounded
1547db96d56Sopenharmony_ciprecision: 6
1557db96d56Sopenharmony_cisubx152 subtract '12345678900000' '9999999999999'  -> 2.34568E+12 Inexact Rounded
1567db96d56Sopenharmony_cisubx153 subtract '9999999999999'  '12345678900000' -> -2.34568E+12 Inexact Rounded
1577db96d56Sopenharmony_ciprecision: 9
1587db96d56Sopenharmony_cisubx154 subtract '12345678900000' '9999999999999'  -> 2.34567890E+12 Inexact Rounded
1597db96d56Sopenharmony_cisubx155 subtract '9999999999999'  '12345678900000' -> -2.34567890E+12 Inexact Rounded
1607db96d56Sopenharmony_ciprecision: 12
1617db96d56Sopenharmony_cisubx156 subtract '12345678900000' '9999999999999'  -> 2.34567890000E+12 Inexact Rounded
1627db96d56Sopenharmony_cisubx157 subtract '9999999999999'  '12345678900000' -> -2.34567890000E+12 Inexact Rounded
1637db96d56Sopenharmony_ciprecision: 15
1647db96d56Sopenharmony_cisubx158 subtract '12345678900000' '9999999999999'  -> 2345678900001
1657db96d56Sopenharmony_cisubx159 subtract '9999999999999'  '12345678900000' -> -2345678900001
1667db96d56Sopenharmony_ciprecision: 9
1677db96d56Sopenharmony_ci
1687db96d56Sopenharmony_ci-- additional scaled arithmetic tests [0.97 problem]
1697db96d56Sopenharmony_cisubx160 subtract '0'     '.1'      -> '-0.1'
1707db96d56Sopenharmony_cisubx161 subtract '00'    '.97983'  -> '-0.97983'
1717db96d56Sopenharmony_cisubx162 subtract '0'     '.9'      -> '-0.9'
1727db96d56Sopenharmony_cisubx163 subtract '0'     '0.102'   -> '-0.102'
1737db96d56Sopenharmony_cisubx164 subtract '0'     '.4'      -> '-0.4'
1747db96d56Sopenharmony_cisubx165 subtract '0'     '.307'    -> '-0.307'
1757db96d56Sopenharmony_cisubx166 subtract '0'     '.43822'  -> '-0.43822'
1767db96d56Sopenharmony_cisubx167 subtract '0'     '.911'    -> '-0.911'
1777db96d56Sopenharmony_cisubx168 subtract '.0'    '.02'     -> '-0.02'
1787db96d56Sopenharmony_cisubx169 subtract '00'    '.392'    -> '-0.392'
1797db96d56Sopenharmony_cisubx170 subtract '0'     '.26'     -> '-0.26'
1807db96d56Sopenharmony_cisubx171 subtract '0'     '0.51'    -> '-0.51'
1817db96d56Sopenharmony_cisubx172 subtract '0'     '.2234'   -> '-0.2234'
1827db96d56Sopenharmony_cisubx173 subtract '0'     '.2'      -> '-0.2'
1837db96d56Sopenharmony_cisubx174 subtract '.0'    '.0008'   -> '-0.0008'
1847db96d56Sopenharmony_ci-- 0. on left
1857db96d56Sopenharmony_cisubx180 subtract '0.0'     '-.1'      -> '0.1'
1867db96d56Sopenharmony_cisubx181 subtract '0.00'    '-.97983'  -> '0.97983'
1877db96d56Sopenharmony_cisubx182 subtract '0.0'     '-.9'      -> '0.9'
1887db96d56Sopenharmony_cisubx183 subtract '0.0'     '-0.102'   -> '0.102'
1897db96d56Sopenharmony_cisubx184 subtract '0.0'     '-.4'      -> '0.4'
1907db96d56Sopenharmony_cisubx185 subtract '0.0'     '-.307'    -> '0.307'
1917db96d56Sopenharmony_cisubx186 subtract '0.0'     '-.43822'  -> '0.43822'
1927db96d56Sopenharmony_cisubx187 subtract '0.0'     '-.911'    -> '0.911'
1937db96d56Sopenharmony_cisubx188 subtract '0.0'     '-.02'     -> '0.02'
1947db96d56Sopenharmony_cisubx189 subtract '0.00'    '-.392'    -> '0.392'
1957db96d56Sopenharmony_cisubx190 subtract '0.0'     '-.26'     -> '0.26'
1967db96d56Sopenharmony_cisubx191 subtract '0.0'     '-0.51'    -> '0.51'
1977db96d56Sopenharmony_cisubx192 subtract '0.0'     '-.2234'   -> '0.2234'
1987db96d56Sopenharmony_cisubx193 subtract '0.0'     '-.2'      -> '0.2'
1997db96d56Sopenharmony_cisubx194 subtract '0.0'     '-.0008'   -> '0.0008'
2007db96d56Sopenharmony_ci-- negatives of same
2017db96d56Sopenharmony_cisubx200 subtract '0'     '-.1'      -> '0.1'
2027db96d56Sopenharmony_cisubx201 subtract '00'    '-.97983'  -> '0.97983'
2037db96d56Sopenharmony_cisubx202 subtract '0'     '-.9'      -> '0.9'
2047db96d56Sopenharmony_cisubx203 subtract '0'     '-0.102'   -> '0.102'
2057db96d56Sopenharmony_cisubx204 subtract '0'     '-.4'      -> '0.4'
2067db96d56Sopenharmony_cisubx205 subtract '0'     '-.307'    -> '0.307'
2077db96d56Sopenharmony_cisubx206 subtract '0'     '-.43822'  -> '0.43822'
2087db96d56Sopenharmony_cisubx207 subtract '0'     '-.911'    -> '0.911'
2097db96d56Sopenharmony_cisubx208 subtract '.0'    '-.02'     -> '0.02'
2107db96d56Sopenharmony_cisubx209 subtract '00'    '-.392'    -> '0.392'
2117db96d56Sopenharmony_cisubx210 subtract '0'     '-.26'     -> '0.26'
2127db96d56Sopenharmony_cisubx211 subtract '0'     '-0.51'    -> '0.51'
2137db96d56Sopenharmony_cisubx212 subtract '0'     '-.2234'   -> '0.2234'
2147db96d56Sopenharmony_cisubx213 subtract '0'     '-.2'      -> '0.2'
2157db96d56Sopenharmony_cisubx214 subtract '.0'    '-.0008'   -> '0.0008'
2167db96d56Sopenharmony_ci
2177db96d56Sopenharmony_ci-- more fixed, LHS swaps [really the same as testcases under add]
2187db96d56Sopenharmony_cisubx220 subtract '-56267E-12' 0  -> '-5.6267E-8'
2197db96d56Sopenharmony_cisubx221 subtract '-56267E-11' 0  -> '-5.6267E-7'
2207db96d56Sopenharmony_cisubx222 subtract '-56267E-10' 0  -> '-0.0000056267'
2217db96d56Sopenharmony_cisubx223 subtract '-56267E-9'  0  -> '-0.000056267'
2227db96d56Sopenharmony_cisubx224 subtract '-56267E-8'  0  -> '-0.00056267'
2237db96d56Sopenharmony_cisubx225 subtract '-56267E-7'  0  -> '-0.0056267'
2247db96d56Sopenharmony_cisubx226 subtract '-56267E-6'  0  -> '-0.056267'
2257db96d56Sopenharmony_cisubx227 subtract '-56267E-5'  0  -> '-0.56267'
2267db96d56Sopenharmony_cisubx228 subtract '-56267E-2'  0  -> '-562.67'
2277db96d56Sopenharmony_cisubx229 subtract '-56267E-1'  0  -> '-5626.7'
2287db96d56Sopenharmony_cisubx230 subtract '-56267E-0'  0  -> '-56267'
2297db96d56Sopenharmony_ci-- symmetry ...
2307db96d56Sopenharmony_cisubx240 subtract 0 '-56267E-12'  -> '5.6267E-8'
2317db96d56Sopenharmony_cisubx241 subtract 0 '-56267E-11'  -> '5.6267E-7'
2327db96d56Sopenharmony_cisubx242 subtract 0 '-56267E-10'  -> '0.0000056267'
2337db96d56Sopenharmony_cisubx243 subtract 0 '-56267E-9'   -> '0.000056267'
2347db96d56Sopenharmony_cisubx244 subtract 0 '-56267E-8'   -> '0.00056267'
2357db96d56Sopenharmony_cisubx245 subtract 0 '-56267E-7'   -> '0.0056267'
2367db96d56Sopenharmony_cisubx246 subtract 0 '-56267E-6'   -> '0.056267'
2377db96d56Sopenharmony_cisubx247 subtract 0 '-56267E-5'   -> '0.56267'
2387db96d56Sopenharmony_cisubx248 subtract 0 '-56267E-2'   -> '562.67'
2397db96d56Sopenharmony_cisubx249 subtract 0 '-56267E-1'   -> '5626.7'
2407db96d56Sopenharmony_cisubx250 subtract 0 '-56267E-0'   -> '56267'
2417db96d56Sopenharmony_ci
2427db96d56Sopenharmony_ci-- now some more from the 'new' add
2437db96d56Sopenharmony_ciprecision: 9
2447db96d56Sopenharmony_cisubx301 subtract '1.23456789'  '1.00000000' -> '0.23456789'
2457db96d56Sopenharmony_cisubx302 subtract '1.23456789'  '1.00000011' -> '0.23456778'
2467db96d56Sopenharmony_ci
2477db96d56Sopenharmony_cisubx311 subtract '0.4444444444'  '0.5555555555' -> '-0.111111111' Inexact Rounded
2487db96d56Sopenharmony_cisubx312 subtract '0.4444444440'  '0.5555555555' -> '-0.111111112' Inexact Rounded
2497db96d56Sopenharmony_cisubx313 subtract '0.4444444444'  '0.5555555550' -> '-0.111111111' Inexact Rounded
2507db96d56Sopenharmony_cisubx314 subtract '0.44444444449'    '0' -> '0.444444444' Inexact Rounded
2517db96d56Sopenharmony_cisubx315 subtract '0.444444444499'   '0' -> '0.444444444' Inexact Rounded
2527db96d56Sopenharmony_cisubx316 subtract '0.4444444444999'  '0' -> '0.444444444' Inexact Rounded
2537db96d56Sopenharmony_cisubx317 subtract '0.4444444445000'  '0' -> '0.444444445' Inexact Rounded
2547db96d56Sopenharmony_cisubx318 subtract '0.4444444445001'  '0' -> '0.444444445' Inexact Rounded
2557db96d56Sopenharmony_cisubx319 subtract '0.444444444501'   '0' -> '0.444444445' Inexact Rounded
2567db96d56Sopenharmony_cisubx320 subtract '0.44444444451'    '0' -> '0.444444445' Inexact Rounded
2577db96d56Sopenharmony_ci
2587db96d56Sopenharmony_ci-- some carrying effects
2597db96d56Sopenharmony_cisubx321 subtract '0.9998'  '0.0000' -> '0.9998'
2607db96d56Sopenharmony_cisubx322 subtract '0.9998'  '0.0001' -> '0.9997'
2617db96d56Sopenharmony_cisubx323 subtract '0.9998'  '0.0002' -> '0.9996'
2627db96d56Sopenharmony_cisubx324 subtract '0.9998'  '0.0003' -> '0.9995'
2637db96d56Sopenharmony_cisubx325 subtract '0.9998'  '-0.0000' -> '0.9998'
2647db96d56Sopenharmony_cisubx326 subtract '0.9998'  '-0.0001' -> '0.9999'
2657db96d56Sopenharmony_cisubx327 subtract '0.9998'  '-0.0002' -> '1.0000'
2667db96d56Sopenharmony_cisubx328 subtract '0.9998'  '-0.0003' -> '1.0001'
2677db96d56Sopenharmony_ci
2687db96d56Sopenharmony_cisubx330 subtract '70'  '10000e+9' -> '-1.00000000E+13' Inexact Rounded
2697db96d56Sopenharmony_cisubx331 subtract '700'  '10000e+9' -> '-1.00000000E+13' Inexact Rounded
2707db96d56Sopenharmony_cisubx332 subtract '7000'  '10000e+9' -> '-9.99999999E+12' Inexact Rounded
2717db96d56Sopenharmony_cisubx333 subtract '70000'  '10000e+9' -> '-9.99999993E+12' Rounded
2727db96d56Sopenharmony_cisubx334 subtract '700000'  '10000e+9' -> '-9.99999930E+12' Rounded
2737db96d56Sopenharmony_cisubx335 subtract '7000000'  '10000e+9' -> '-9.99999300E+12' Rounded
2747db96d56Sopenharmony_ci-- symmetry:
2757db96d56Sopenharmony_cisubx340 subtract '10000e+9'  '70' -> '1.00000000E+13' Inexact Rounded
2767db96d56Sopenharmony_cisubx341 subtract '10000e+9'  '700' -> '1.00000000E+13' Inexact Rounded
2777db96d56Sopenharmony_cisubx342 subtract '10000e+9'  '7000' -> '9.99999999E+12' Inexact Rounded
2787db96d56Sopenharmony_cisubx343 subtract '10000e+9'  '70000' -> '9.99999993E+12' Rounded
2797db96d56Sopenharmony_cisubx344 subtract '10000e+9'  '700000' -> '9.99999930E+12' Rounded
2807db96d56Sopenharmony_cisubx345 subtract '10000e+9'  '7000000' -> '9.99999300E+12' Rounded
2817db96d56Sopenharmony_ci
2827db96d56Sopenharmony_ci-- same, higher precision
2837db96d56Sopenharmony_ciprecision: 15
2847db96d56Sopenharmony_cisubx346 subtract '10000e+9'  '7'   -> '9999999999993'
2857db96d56Sopenharmony_cisubx347 subtract '10000e+9'  '70'   -> '9999999999930'
2867db96d56Sopenharmony_cisubx348 subtract '10000e+9'  '700'   -> '9999999999300'
2877db96d56Sopenharmony_cisubx349 subtract '10000e+9'  '7000'   -> '9999999993000'
2887db96d56Sopenharmony_cisubx350 subtract '10000e+9'  '70000'   -> '9999999930000'
2897db96d56Sopenharmony_cisubx351 subtract '10000e+9'  '700000'   -> '9999999300000'
2907db96d56Sopenharmony_cisubx352 subtract '7' '10000e+9'   -> '-9999999999993'
2917db96d56Sopenharmony_cisubx353 subtract '70' '10000e+9'   -> '-9999999999930'
2927db96d56Sopenharmony_cisubx354 subtract '700' '10000e+9'   -> '-9999999999300'
2937db96d56Sopenharmony_cisubx355 subtract '7000' '10000e+9'   -> '-9999999993000'
2947db96d56Sopenharmony_cisubx356 subtract '70000' '10000e+9'   -> '-9999999930000'
2957db96d56Sopenharmony_cisubx357 subtract '700000' '10000e+9'   -> '-9999999300000'
2967db96d56Sopenharmony_ci
2977db96d56Sopenharmony_ci-- zero preservation
2987db96d56Sopenharmony_ciprecision: 6
2997db96d56Sopenharmony_cisubx360 subtract '10000e+9'  '70000' -> '1.00000E+13' Inexact Rounded
3007db96d56Sopenharmony_cisubx361 subtract 1 '0.0001' -> '0.9999'
3017db96d56Sopenharmony_cisubx362 subtract 1 '0.00001' -> '0.99999'
3027db96d56Sopenharmony_cisubx363 subtract 1 '0.000001' -> '0.999999'
3037db96d56Sopenharmony_cisubx364 subtract 1 '0.0000001' -> '1.00000' Inexact Rounded
3047db96d56Sopenharmony_cisubx365 subtract 1 '0.00000001' -> '1.00000' Inexact Rounded
3057db96d56Sopenharmony_ci
3067db96d56Sopenharmony_ci-- some funny zeros [in case of bad signum]
3077db96d56Sopenharmony_cisubx370 subtract 1  0  -> 1
3087db96d56Sopenharmony_cisubx371 subtract 1 0.  -> 1
3097db96d56Sopenharmony_cisubx372 subtract 1  .0 -> 1.0
3107db96d56Sopenharmony_cisubx373 subtract 1 0.0 -> 1.0
3117db96d56Sopenharmony_cisubx374 subtract  0  1 -> -1
3127db96d56Sopenharmony_cisubx375 subtract 0.  1 -> -1
3137db96d56Sopenharmony_cisubx376 subtract  .0 1 -> -1.0
3147db96d56Sopenharmony_cisubx377 subtract 0.0 1 -> -1.0
3157db96d56Sopenharmony_ci
3167db96d56Sopenharmony_ciprecision: 9
3177db96d56Sopenharmony_ci
3187db96d56Sopenharmony_ci-- leading 0 digit before round
3197db96d56Sopenharmony_cisubx910 subtract -103519362 -51897955.3 -> -51621406.7
3207db96d56Sopenharmony_cisubx911 subtract 159579.444 89827.5229 -> 69751.9211
3217db96d56Sopenharmony_ci
3227db96d56Sopenharmony_cisubx920 subtract 333.123456 33.1234566 -> 299.999999 Inexact Rounded
3237db96d56Sopenharmony_cisubx921 subtract 333.123456 33.1234565 -> 300.000000 Inexact Rounded
3247db96d56Sopenharmony_cisubx922 subtract 133.123456 33.1234565 ->  99.9999995
3257db96d56Sopenharmony_cisubx923 subtract 133.123456 33.1234564 ->  99.9999996
3267db96d56Sopenharmony_cisubx924 subtract 133.123456 33.1234540 -> 100.000002 Rounded
3277db96d56Sopenharmony_cisubx925 subtract 133.123456 43.1234560 ->  90.0000000
3287db96d56Sopenharmony_cisubx926 subtract 133.123456 43.1234561 ->  89.9999999
3297db96d56Sopenharmony_cisubx927 subtract 133.123456 43.1234566 ->  89.9999994
3307db96d56Sopenharmony_cisubx928 subtract 101.123456 91.1234566 ->   9.9999994
3317db96d56Sopenharmony_cisubx929 subtract 101.123456 99.1234566 ->   1.9999994
3327db96d56Sopenharmony_ci
3337db96d56Sopenharmony_ci-- more of the same; probe for cluster boundary problems
3347db96d56Sopenharmony_ciprecision: 1
3357db96d56Sopenharmony_cisubx930 subtract  11 2           -> 9
3367db96d56Sopenharmony_ciprecision: 2
3377db96d56Sopenharmony_cisubx932 subtract 101 2           -> 99
3387db96d56Sopenharmony_ciprecision: 3
3397db96d56Sopenharmony_cisubx934 subtract 101 2.1         -> 98.9
3407db96d56Sopenharmony_cisubx935 subtract 101 92.01       ->  8.99
3417db96d56Sopenharmony_ciprecision: 4
3427db96d56Sopenharmony_cisubx936 subtract 101 2.01        -> 98.99
3437db96d56Sopenharmony_cisubx937 subtract 101 92.01       ->  8.99
3447db96d56Sopenharmony_cisubx938 subtract 101 92.006      ->  8.994
3457db96d56Sopenharmony_ciprecision: 5
3467db96d56Sopenharmony_cisubx939 subtract 101 2.001       -> 98.999
3477db96d56Sopenharmony_cisubx940 subtract 101 92.001      ->  8.999
3487db96d56Sopenharmony_cisubx941 subtract 101 92.0006     ->  8.9994
3497db96d56Sopenharmony_ciprecision: 6
3507db96d56Sopenharmony_cisubx942 subtract 101 2.0001      -> 98.9999
3517db96d56Sopenharmony_cisubx943 subtract 101 92.0001     ->  8.9999
3527db96d56Sopenharmony_cisubx944 subtract 101 92.00006    ->  8.99994
3537db96d56Sopenharmony_ciprecision: 7
3547db96d56Sopenharmony_cisubx945 subtract 101 2.00001     -> 98.99999
3557db96d56Sopenharmony_cisubx946 subtract 101 92.00001    ->  8.99999
3567db96d56Sopenharmony_cisubx947 subtract 101 92.000006   ->  8.999994
3577db96d56Sopenharmony_ciprecision: 8
3587db96d56Sopenharmony_cisubx948 subtract 101 2.000001    -> 98.999999
3597db96d56Sopenharmony_cisubx949 subtract 101 92.000001   ->  8.999999
3607db96d56Sopenharmony_cisubx950 subtract 101 92.0000006  ->  8.9999994
3617db96d56Sopenharmony_ciprecision: 9
3627db96d56Sopenharmony_cisubx951 subtract 101 2.0000001   -> 98.9999999
3637db96d56Sopenharmony_cisubx952 subtract 101 92.0000001  ->  8.9999999
3647db96d56Sopenharmony_cisubx953 subtract 101 92.00000006 ->  8.99999994
3657db96d56Sopenharmony_ci
3667db96d56Sopenharmony_ciprecision: 9
3677db96d56Sopenharmony_ci
3687db96d56Sopenharmony_ci-- more LHS swaps [were fixed]
3697db96d56Sopenharmony_cisubx390 subtract '-56267E-10'   0 ->  '-0.0000056267'
3707db96d56Sopenharmony_cisubx391 subtract '-56267E-6'    0 ->  '-0.056267'
3717db96d56Sopenharmony_cisubx392 subtract '-56267E-5'    0 ->  '-0.56267'
3727db96d56Sopenharmony_cisubx393 subtract '-56267E-4'    0 ->  '-5.6267'
3737db96d56Sopenharmony_cisubx394 subtract '-56267E-3'    0 ->  '-56.267'
3747db96d56Sopenharmony_cisubx395 subtract '-56267E-2'    0 ->  '-562.67'
3757db96d56Sopenharmony_cisubx396 subtract '-56267E-1'    0 ->  '-5626.7'
3767db96d56Sopenharmony_cisubx397 subtract '-56267E-0'    0 ->  '-56267'
3777db96d56Sopenharmony_cisubx398 subtract '-5E-10'       0 ->  '-5E-10'
3787db96d56Sopenharmony_cisubx399 subtract '-5E-7'        0 ->  '-5E-7'
3797db96d56Sopenharmony_cisubx400 subtract '-5E-6'        0 ->  '-0.000005'
3807db96d56Sopenharmony_cisubx401 subtract '-5E-5'        0 ->  '-0.00005'
3817db96d56Sopenharmony_cisubx402 subtract '-5E-4'        0 ->  '-0.0005'
3827db96d56Sopenharmony_cisubx403 subtract '-5E-1'        0 ->  '-0.5'
3837db96d56Sopenharmony_cisubx404 subtract '-5E0'         0 ->  '-5'
3847db96d56Sopenharmony_cisubx405 subtract '-5E1'         0 ->  '-50'
3857db96d56Sopenharmony_cisubx406 subtract '-5E5'         0 ->  '-500000'
3867db96d56Sopenharmony_cisubx407 subtract '-5E8'         0 ->  '-500000000'
3877db96d56Sopenharmony_cisubx408 subtract '-5E9'         0 ->  '-5.00000000E+9'   Rounded
3887db96d56Sopenharmony_cisubx409 subtract '-5E10'        0 ->  '-5.00000000E+10'  Rounded
3897db96d56Sopenharmony_cisubx410 subtract '-5E11'        0 ->  '-5.00000000E+11'  Rounded
3907db96d56Sopenharmony_cisubx411 subtract '-5E100'       0 ->  '-5.00000000E+100' Rounded
3917db96d56Sopenharmony_ci
3927db96d56Sopenharmony_ci-- more RHS swaps [were fixed]
3937db96d56Sopenharmony_cisubx420 subtract 0  '-56267E-10' ->  '0.0000056267'
3947db96d56Sopenharmony_cisubx421 subtract 0  '-56267E-6'  ->  '0.056267'
3957db96d56Sopenharmony_cisubx422 subtract 0  '-56267E-5'  ->  '0.56267'
3967db96d56Sopenharmony_cisubx423 subtract 0  '-56267E-4'  ->  '5.6267'
3977db96d56Sopenharmony_cisubx424 subtract 0  '-56267E-3'  ->  '56.267'
3987db96d56Sopenharmony_cisubx425 subtract 0  '-56267E-2'  ->  '562.67'
3997db96d56Sopenharmony_cisubx426 subtract 0  '-56267E-1'  ->  '5626.7'
4007db96d56Sopenharmony_cisubx427 subtract 0  '-56267E-0'  ->  '56267'
4017db96d56Sopenharmony_cisubx428 subtract 0  '-5E-10'     ->  '5E-10'
4027db96d56Sopenharmony_cisubx429 subtract 0  '-5E-7'      ->  '5E-7'
4037db96d56Sopenharmony_cisubx430 subtract 0  '-5E-6'      ->  '0.000005'
4047db96d56Sopenharmony_cisubx431 subtract 0  '-5E-5'      ->  '0.00005'
4057db96d56Sopenharmony_cisubx432 subtract 0  '-5E-4'      ->  '0.0005'
4067db96d56Sopenharmony_cisubx433 subtract 0  '-5E-1'      ->  '0.5'
4077db96d56Sopenharmony_cisubx434 subtract 0  '-5E0'       ->  '5'
4087db96d56Sopenharmony_cisubx435 subtract 0  '-5E1'       ->  '50'
4097db96d56Sopenharmony_cisubx436 subtract 0  '-5E5'       ->  '500000'
4107db96d56Sopenharmony_cisubx437 subtract 0  '-5E8'       ->  '500000000'
4117db96d56Sopenharmony_cisubx438 subtract 0  '-5E9'       ->  '5.00000000E+9'    Rounded
4127db96d56Sopenharmony_cisubx439 subtract 0  '-5E10'      ->  '5.00000000E+10'   Rounded
4137db96d56Sopenharmony_cisubx440 subtract 0  '-5E11'      ->  '5.00000000E+11'   Rounded
4147db96d56Sopenharmony_cisubx441 subtract 0  '-5E100'     ->  '5.00000000E+100'  Rounded
4157db96d56Sopenharmony_ci
4167db96d56Sopenharmony_ci
4177db96d56Sopenharmony_ci-- try borderline precision, with carries, etc.
4187db96d56Sopenharmony_ciprecision: 15
4197db96d56Sopenharmony_cisubx461 subtract '1E+12' '1'       -> '999999999999'
4207db96d56Sopenharmony_cisubx462 subtract '1E+12' '-1.11'   -> '1000000000001.11'
4217db96d56Sopenharmony_cisubx463 subtract '1.11'  '-1E+12'  -> '1000000000001.11'
4227db96d56Sopenharmony_cisubx464 subtract '-1'    '-1E+12'  -> '999999999999'
4237db96d56Sopenharmony_cisubx465 subtract '7E+12' '1'       -> '6999999999999'
4247db96d56Sopenharmony_cisubx466 subtract '7E+12' '-1.11'   -> '7000000000001.11'
4257db96d56Sopenharmony_cisubx467 subtract '1.11'  '-7E+12'  -> '7000000000001.11'
4267db96d56Sopenharmony_cisubx468 subtract '-1'    '-7E+12'  -> '6999999999999'
4277db96d56Sopenharmony_ci
4287db96d56Sopenharmony_ci--                 123456789012345       123456789012345      1 23456789012345
4297db96d56Sopenharmony_cisubx470 subtract '0.444444444444444'  '-0.555555555555563' -> '1.00000000000001' Inexact Rounded
4307db96d56Sopenharmony_cisubx471 subtract '0.444444444444444'  '-0.555555555555562' -> '1.00000000000001' Inexact Rounded
4317db96d56Sopenharmony_cisubx472 subtract '0.444444444444444'  '-0.555555555555561' -> '1.00000000000001' Inexact Rounded
4327db96d56Sopenharmony_cisubx473 subtract '0.444444444444444'  '-0.555555555555560' -> '1.00000000000000' Inexact Rounded
4337db96d56Sopenharmony_cisubx474 subtract '0.444444444444444'  '-0.555555555555559' -> '1.00000000000000' Inexact Rounded
4347db96d56Sopenharmony_cisubx475 subtract '0.444444444444444'  '-0.555555555555558' -> '1.00000000000000' Inexact Rounded
4357db96d56Sopenharmony_cisubx476 subtract '0.444444444444444'  '-0.555555555555557' -> '1.00000000000000' Inexact Rounded
4367db96d56Sopenharmony_cisubx477 subtract '0.444444444444444'  '-0.555555555555556' -> '1.00000000000000' Rounded
4377db96d56Sopenharmony_cisubx478 subtract '0.444444444444444'  '-0.555555555555555' -> '0.999999999999999'
4387db96d56Sopenharmony_cisubx479 subtract '0.444444444444444'  '-0.555555555555554' -> '0.999999999999998'
4397db96d56Sopenharmony_cisubx480 subtract '0.444444444444444'  '-0.555555555555553' -> '0.999999999999997'
4407db96d56Sopenharmony_cisubx481 subtract '0.444444444444444'  '-0.555555555555552' -> '0.999999999999996'
4417db96d56Sopenharmony_cisubx482 subtract '0.444444444444444'  '-0.555555555555551' -> '0.999999999999995'
4427db96d56Sopenharmony_cisubx483 subtract '0.444444444444444'  '-0.555555555555550' -> '0.999999999999994'
4437db96d56Sopenharmony_ci
4447db96d56Sopenharmony_ci-- and some more, including residue effects and different roundings
4457db96d56Sopenharmony_ciprecision: 9
4467db96d56Sopenharmony_cirounding: half_up
4477db96d56Sopenharmony_cisubx500 subtract '123456789' 0             -> '123456789'
4487db96d56Sopenharmony_cisubx501 subtract '123456789' 0.000000001   -> '123456789' Inexact Rounded
4497db96d56Sopenharmony_cisubx502 subtract '123456789' 0.000001      -> '123456789' Inexact Rounded
4507db96d56Sopenharmony_cisubx503 subtract '123456789' 0.1           -> '123456789' Inexact Rounded
4517db96d56Sopenharmony_cisubx504 subtract '123456789' 0.4           -> '123456789' Inexact Rounded
4527db96d56Sopenharmony_cisubx505 subtract '123456789' 0.49          -> '123456789' Inexact Rounded
4537db96d56Sopenharmony_cisubx506 subtract '123456789' 0.499999      -> '123456789' Inexact Rounded
4547db96d56Sopenharmony_cisubx507 subtract '123456789' 0.499999999   -> '123456789' Inexact Rounded
4557db96d56Sopenharmony_cisubx508 subtract '123456789' 0.5           -> '123456789' Inexact Rounded
4567db96d56Sopenharmony_cisubx509 subtract '123456789' 0.500000001   -> '123456788' Inexact Rounded
4577db96d56Sopenharmony_cisubx510 subtract '123456789' 0.500001      -> '123456788' Inexact Rounded
4587db96d56Sopenharmony_cisubx511 subtract '123456789' 0.51          -> '123456788' Inexact Rounded
4597db96d56Sopenharmony_cisubx512 subtract '123456789' 0.6           -> '123456788' Inexact Rounded
4607db96d56Sopenharmony_cisubx513 subtract '123456789' 0.9           -> '123456788' Inexact Rounded
4617db96d56Sopenharmony_cisubx514 subtract '123456789' 0.99999       -> '123456788' Inexact Rounded
4627db96d56Sopenharmony_cisubx515 subtract '123456789' 0.999999999   -> '123456788' Inexact Rounded
4637db96d56Sopenharmony_cisubx516 subtract '123456789' 1             -> '123456788'
4647db96d56Sopenharmony_cisubx517 subtract '123456789' 1.000000001   -> '123456788' Inexact Rounded
4657db96d56Sopenharmony_cisubx518 subtract '123456789' 1.00001       -> '123456788' Inexact Rounded
4667db96d56Sopenharmony_cisubx519 subtract '123456789' 1.1           -> '123456788' Inexact Rounded
4677db96d56Sopenharmony_ci
4687db96d56Sopenharmony_cirounding: half_even
4697db96d56Sopenharmony_cisubx520 subtract '123456789' 0             -> '123456789'
4707db96d56Sopenharmony_cisubx521 subtract '123456789' 0.000000001   -> '123456789' Inexact Rounded
4717db96d56Sopenharmony_cisubx522 subtract '123456789' 0.000001      -> '123456789' Inexact Rounded
4727db96d56Sopenharmony_cisubx523 subtract '123456789' 0.1           -> '123456789' Inexact Rounded
4737db96d56Sopenharmony_cisubx524 subtract '123456789' 0.4           -> '123456789' Inexact Rounded
4747db96d56Sopenharmony_cisubx525 subtract '123456789' 0.49          -> '123456789' Inexact Rounded
4757db96d56Sopenharmony_cisubx526 subtract '123456789' 0.499999      -> '123456789' Inexact Rounded
4767db96d56Sopenharmony_cisubx527 subtract '123456789' 0.499999999   -> '123456789' Inexact Rounded
4777db96d56Sopenharmony_cisubx528 subtract '123456789' 0.5           -> '123456788' Inexact Rounded
4787db96d56Sopenharmony_cisubx529 subtract '123456789' 0.500000001   -> '123456788' Inexact Rounded
4797db96d56Sopenharmony_cisubx530 subtract '123456789' 0.500001      -> '123456788' Inexact Rounded
4807db96d56Sopenharmony_cisubx531 subtract '123456789' 0.51          -> '123456788' Inexact Rounded
4817db96d56Sopenharmony_cisubx532 subtract '123456789' 0.6           -> '123456788' Inexact Rounded
4827db96d56Sopenharmony_cisubx533 subtract '123456789' 0.9           -> '123456788' Inexact Rounded
4837db96d56Sopenharmony_cisubx534 subtract '123456789' 0.99999       -> '123456788' Inexact Rounded
4847db96d56Sopenharmony_cisubx535 subtract '123456789' 0.999999999   -> '123456788' Inexact Rounded
4857db96d56Sopenharmony_cisubx536 subtract '123456789' 1             -> '123456788'
4867db96d56Sopenharmony_cisubx537 subtract '123456789' 1.00000001    -> '123456788' Inexact Rounded
4877db96d56Sopenharmony_cisubx538 subtract '123456789' 1.00001       -> '123456788' Inexact Rounded
4887db96d56Sopenharmony_cisubx539 subtract '123456789' 1.1           -> '123456788' Inexact Rounded
4897db96d56Sopenharmony_ci-- critical few with even bottom digit...
4907db96d56Sopenharmony_cisubx540 subtract '123456788' 0.499999999   -> '123456788' Inexact Rounded
4917db96d56Sopenharmony_cisubx541 subtract '123456788' 0.5           -> '123456788' Inexact Rounded
4927db96d56Sopenharmony_cisubx542 subtract '123456788' 0.500000001   -> '123456787' Inexact Rounded
4937db96d56Sopenharmony_ci
4947db96d56Sopenharmony_cirounding: down
4957db96d56Sopenharmony_cisubx550 subtract '123456789' 0             -> '123456789'
4967db96d56Sopenharmony_cisubx551 subtract '123456789' 0.000000001   -> '123456788' Inexact Rounded
4977db96d56Sopenharmony_cisubx552 subtract '123456789' 0.000001      -> '123456788' Inexact Rounded
4987db96d56Sopenharmony_cisubx553 subtract '123456789' 0.1           -> '123456788' Inexact Rounded
4997db96d56Sopenharmony_cisubx554 subtract '123456789' 0.4           -> '123456788' Inexact Rounded
5007db96d56Sopenharmony_cisubx555 subtract '123456789' 0.49          -> '123456788' Inexact Rounded
5017db96d56Sopenharmony_cisubx556 subtract '123456789' 0.499999      -> '123456788' Inexact Rounded
5027db96d56Sopenharmony_cisubx557 subtract '123456789' 0.499999999   -> '123456788' Inexact Rounded
5037db96d56Sopenharmony_cisubx558 subtract '123456789' 0.5           -> '123456788' Inexact Rounded
5047db96d56Sopenharmony_cisubx559 subtract '123456789' 0.500000001   -> '123456788' Inexact Rounded
5057db96d56Sopenharmony_cisubx560 subtract '123456789' 0.500001      -> '123456788' Inexact Rounded
5067db96d56Sopenharmony_cisubx561 subtract '123456789' 0.51          -> '123456788' Inexact Rounded
5077db96d56Sopenharmony_cisubx562 subtract '123456789' 0.6           -> '123456788' Inexact Rounded
5087db96d56Sopenharmony_cisubx563 subtract '123456789' 0.9           -> '123456788' Inexact Rounded
5097db96d56Sopenharmony_cisubx564 subtract '123456789' 0.99999       -> '123456788' Inexact Rounded
5107db96d56Sopenharmony_cisubx565 subtract '123456789' 0.999999999   -> '123456788' Inexact Rounded
5117db96d56Sopenharmony_cisubx566 subtract '123456789' 1             -> '123456788'
5127db96d56Sopenharmony_cisubx567 subtract '123456789' 1.00000001    -> '123456787' Inexact Rounded
5137db96d56Sopenharmony_cisubx568 subtract '123456789' 1.00001       -> '123456787' Inexact Rounded
5147db96d56Sopenharmony_cisubx569 subtract '123456789' 1.1           -> '123456787' Inexact Rounded
5157db96d56Sopenharmony_ci
5167db96d56Sopenharmony_ci-- symmetry...
5177db96d56Sopenharmony_cirounding: half_up
5187db96d56Sopenharmony_cisubx600 subtract 0             '123456789' -> '-123456789'
5197db96d56Sopenharmony_cisubx601 subtract 0.000000001   '123456789' -> '-123456789' Inexact Rounded
5207db96d56Sopenharmony_cisubx602 subtract 0.000001      '123456789' -> '-123456789' Inexact Rounded
5217db96d56Sopenharmony_cisubx603 subtract 0.1           '123456789' -> '-123456789' Inexact Rounded
5227db96d56Sopenharmony_cisubx604 subtract 0.4           '123456789' -> '-123456789' Inexact Rounded
5237db96d56Sopenharmony_cisubx605 subtract 0.49          '123456789' -> '-123456789' Inexact Rounded
5247db96d56Sopenharmony_cisubx606 subtract 0.499999      '123456789' -> '-123456789' Inexact Rounded
5257db96d56Sopenharmony_cisubx607 subtract 0.499999999   '123456789' -> '-123456789' Inexact Rounded
5267db96d56Sopenharmony_cisubx608 subtract 0.5           '123456789' -> '-123456789' Inexact Rounded
5277db96d56Sopenharmony_cisubx609 subtract 0.500000001   '123456789' -> '-123456788' Inexact Rounded
5287db96d56Sopenharmony_cisubx610 subtract 0.500001      '123456789' -> '-123456788' Inexact Rounded
5297db96d56Sopenharmony_cisubx611 subtract 0.51          '123456789' -> '-123456788' Inexact Rounded
5307db96d56Sopenharmony_cisubx612 subtract 0.6           '123456789' -> '-123456788' Inexact Rounded
5317db96d56Sopenharmony_cisubx613 subtract 0.9           '123456789' -> '-123456788' Inexact Rounded
5327db96d56Sopenharmony_cisubx614 subtract 0.99999       '123456789' -> '-123456788' Inexact Rounded
5337db96d56Sopenharmony_cisubx615 subtract 0.999999999   '123456789' -> '-123456788' Inexact Rounded
5347db96d56Sopenharmony_cisubx616 subtract 1             '123456789' -> '-123456788'
5357db96d56Sopenharmony_cisubx617 subtract 1.000000001   '123456789' -> '-123456788' Inexact Rounded
5367db96d56Sopenharmony_cisubx618 subtract 1.00001       '123456789' -> '-123456788' Inexact Rounded
5377db96d56Sopenharmony_cisubx619 subtract 1.1           '123456789' -> '-123456788' Inexact Rounded
5387db96d56Sopenharmony_ci
5397db96d56Sopenharmony_cirounding: half_even
5407db96d56Sopenharmony_cisubx620 subtract 0             '123456789' -> '-123456789'
5417db96d56Sopenharmony_cisubx621 subtract 0.000000001   '123456789' -> '-123456789' Inexact Rounded
5427db96d56Sopenharmony_cisubx622 subtract 0.000001      '123456789' -> '-123456789' Inexact Rounded
5437db96d56Sopenharmony_cisubx623 subtract 0.1           '123456789' -> '-123456789' Inexact Rounded
5447db96d56Sopenharmony_cisubx624 subtract 0.4           '123456789' -> '-123456789' Inexact Rounded
5457db96d56Sopenharmony_cisubx625 subtract 0.49          '123456789' -> '-123456789' Inexact Rounded
5467db96d56Sopenharmony_cisubx626 subtract 0.499999      '123456789' -> '-123456789' Inexact Rounded
5477db96d56Sopenharmony_cisubx627 subtract 0.499999999   '123456789' -> '-123456789' Inexact Rounded
5487db96d56Sopenharmony_cisubx628 subtract 0.5           '123456789' -> '-123456788' Inexact Rounded
5497db96d56Sopenharmony_cisubx629 subtract 0.500000001   '123456789' -> '-123456788' Inexact Rounded
5507db96d56Sopenharmony_cisubx630 subtract 0.500001      '123456789' -> '-123456788' Inexact Rounded
5517db96d56Sopenharmony_cisubx631 subtract 0.51          '123456789' -> '-123456788' Inexact Rounded
5527db96d56Sopenharmony_cisubx632 subtract 0.6           '123456789' -> '-123456788' Inexact Rounded
5537db96d56Sopenharmony_cisubx633 subtract 0.9           '123456789' -> '-123456788' Inexact Rounded
5547db96d56Sopenharmony_cisubx634 subtract 0.99999       '123456789' -> '-123456788' Inexact Rounded
5557db96d56Sopenharmony_cisubx635 subtract 0.999999999   '123456789' -> '-123456788' Inexact Rounded
5567db96d56Sopenharmony_cisubx636 subtract 1             '123456789' -> '-123456788'
5577db96d56Sopenharmony_cisubx637 subtract 1.00000001    '123456789' -> '-123456788' Inexact Rounded
5587db96d56Sopenharmony_cisubx638 subtract 1.00001       '123456789' -> '-123456788' Inexact Rounded
5597db96d56Sopenharmony_cisubx639 subtract 1.1           '123456789' -> '-123456788' Inexact Rounded
5607db96d56Sopenharmony_ci-- critical few with even bottom digit...
5617db96d56Sopenharmony_cisubx640 subtract 0.499999999   '123456788' -> '-123456788' Inexact Rounded
5627db96d56Sopenharmony_cisubx641 subtract 0.5           '123456788' -> '-123456788' Inexact Rounded
5637db96d56Sopenharmony_cisubx642 subtract 0.500000001   '123456788' -> '-123456787' Inexact Rounded
5647db96d56Sopenharmony_ci
5657db96d56Sopenharmony_cirounding: down
5667db96d56Sopenharmony_cisubx650 subtract 0             '123456789' -> '-123456789'
5677db96d56Sopenharmony_cisubx651 subtract 0.000000001   '123456789' -> '-123456788' Inexact Rounded
5687db96d56Sopenharmony_cisubx652 subtract 0.000001      '123456789' -> '-123456788' Inexact Rounded
5697db96d56Sopenharmony_cisubx653 subtract 0.1           '123456789' -> '-123456788' Inexact Rounded
5707db96d56Sopenharmony_cisubx654 subtract 0.4           '123456789' -> '-123456788' Inexact Rounded
5717db96d56Sopenharmony_cisubx655 subtract 0.49          '123456789' -> '-123456788' Inexact Rounded
5727db96d56Sopenharmony_cisubx656 subtract 0.499999      '123456789' -> '-123456788' Inexact Rounded
5737db96d56Sopenharmony_cisubx657 subtract 0.499999999   '123456789' -> '-123456788' Inexact Rounded
5747db96d56Sopenharmony_cisubx658 subtract 0.5           '123456789' -> '-123456788' Inexact Rounded
5757db96d56Sopenharmony_cisubx659 subtract 0.500000001   '123456789' -> '-123456788' Inexact Rounded
5767db96d56Sopenharmony_cisubx660 subtract 0.500001      '123456789' -> '-123456788' Inexact Rounded
5777db96d56Sopenharmony_cisubx661 subtract 0.51          '123456789' -> '-123456788' Inexact Rounded
5787db96d56Sopenharmony_cisubx662 subtract 0.6           '123456789' -> '-123456788' Inexact Rounded
5797db96d56Sopenharmony_cisubx663 subtract 0.9           '123456789' -> '-123456788' Inexact Rounded
5807db96d56Sopenharmony_cisubx664 subtract 0.99999       '123456789' -> '-123456788' Inexact Rounded
5817db96d56Sopenharmony_cisubx665 subtract 0.999999999   '123456789' -> '-123456788' Inexact Rounded
5827db96d56Sopenharmony_cisubx666 subtract 1             '123456789' -> '-123456788'
5837db96d56Sopenharmony_cisubx667 subtract 1.00000001    '123456789' -> '-123456787' Inexact Rounded
5847db96d56Sopenharmony_cisubx668 subtract 1.00001       '123456789' -> '-123456787' Inexact Rounded
5857db96d56Sopenharmony_cisubx669 subtract 1.1           '123456789' -> '-123456787' Inexact Rounded
5867db96d56Sopenharmony_ci
5877db96d56Sopenharmony_ci
5887db96d56Sopenharmony_ci-- lots of leading zeros in intermediate result, and showing effects of
5897db96d56Sopenharmony_ci-- input rounding would have affected the following
5907db96d56Sopenharmony_ciprecision: 9
5917db96d56Sopenharmony_cirounding: half_up
5927db96d56Sopenharmony_cisubx670 subtract '123456789' '123456788.1' -> 0.9
5937db96d56Sopenharmony_cisubx671 subtract '123456789' '123456788.9' -> 0.1
5947db96d56Sopenharmony_cisubx672 subtract '123456789' '123456789.1' -> -0.1
5957db96d56Sopenharmony_cisubx673 subtract '123456789' '123456789.5' -> -0.5
5967db96d56Sopenharmony_cisubx674 subtract '123456789' '123456789.9' -> -0.9
5977db96d56Sopenharmony_ci
5987db96d56Sopenharmony_cirounding: half_even
5997db96d56Sopenharmony_cisubx680 subtract '123456789' '123456788.1' -> 0.9
6007db96d56Sopenharmony_cisubx681 subtract '123456789' '123456788.9' -> 0.1
6017db96d56Sopenharmony_cisubx682 subtract '123456789' '123456789.1' -> -0.1
6027db96d56Sopenharmony_cisubx683 subtract '123456789' '123456789.5' -> -0.5
6037db96d56Sopenharmony_cisubx684 subtract '123456789' '123456789.9' -> -0.9
6047db96d56Sopenharmony_ci
6057db96d56Sopenharmony_cisubx685 subtract '123456788' '123456787.1' -> 0.9
6067db96d56Sopenharmony_cisubx686 subtract '123456788' '123456787.9' -> 0.1
6077db96d56Sopenharmony_cisubx687 subtract '123456788' '123456788.1' -> -0.1
6087db96d56Sopenharmony_cisubx688 subtract '123456788' '123456788.5' -> -0.5
6097db96d56Sopenharmony_cisubx689 subtract '123456788' '123456788.9' -> -0.9
6107db96d56Sopenharmony_ci
6117db96d56Sopenharmony_cirounding: down
6127db96d56Sopenharmony_cisubx690 subtract '123456789' '123456788.1' -> 0.9
6137db96d56Sopenharmony_cisubx691 subtract '123456789' '123456788.9' -> 0.1
6147db96d56Sopenharmony_cisubx692 subtract '123456789' '123456789.1' -> -0.1
6157db96d56Sopenharmony_cisubx693 subtract '123456789' '123456789.5' -> -0.5
6167db96d56Sopenharmony_cisubx694 subtract '123456789' '123456789.9' -> -0.9
6177db96d56Sopenharmony_ci
6187db96d56Sopenharmony_ci-- input preparation tests
6197db96d56Sopenharmony_cirounding: half_up
6207db96d56Sopenharmony_ciprecision: 3
6217db96d56Sopenharmony_ci
6227db96d56Sopenharmony_cisubx700 subtract '12345678900000'  -9999999999999 ->  '2.23E+13' Inexact Rounded
6237db96d56Sopenharmony_cisubx701 subtract  '9999999999999' -12345678900000 ->  '2.23E+13' Inexact Rounded
6247db96d56Sopenharmony_cisubx702 subtract '12E+3'  '-3456' ->  '1.55E+4' Inexact Rounded
6257db96d56Sopenharmony_cisubx703 subtract '12E+3'  '-3446' ->  '1.54E+4' Inexact Rounded
6267db96d56Sopenharmony_cisubx704 subtract '12E+3'  '-3454' ->  '1.55E+4' Inexact Rounded
6277db96d56Sopenharmony_cisubx705 subtract '12E+3'  '-3444' ->  '1.54E+4' Inexact Rounded
6287db96d56Sopenharmony_ci
6297db96d56Sopenharmony_cisubx706 subtract '3456'  '-12E+3' ->  '1.55E+4' Inexact Rounded
6307db96d56Sopenharmony_cisubx707 subtract '3446'  '-12E+3' ->  '1.54E+4' Inexact Rounded
6317db96d56Sopenharmony_cisubx708 subtract '3454'  '-12E+3' ->  '1.55E+4' Inexact Rounded
6327db96d56Sopenharmony_cisubx709 subtract '3444'  '-12E+3' ->  '1.54E+4' Inexact Rounded
6337db96d56Sopenharmony_ci
6347db96d56Sopenharmony_ci-- overflow and underflow tests [subnormals now possible]
6357db96d56Sopenharmony_cimaxexponent: 999999999
6367db96d56Sopenharmony_ciminexponent: -999999999
6377db96d56Sopenharmony_ciprecision: 9
6387db96d56Sopenharmony_cirounding: down
6397db96d56Sopenharmony_cisubx710 subtract 1E+999999999    -9E+999999999   -> 9.99999999E+999999999 Overflow Inexact Rounded
6407db96d56Sopenharmony_cisubx711 subtract 9E+999999999    -1E+999999999   -> 9.99999999E+999999999 Overflow Inexact Rounded
6417db96d56Sopenharmony_cirounding: half_up
6427db96d56Sopenharmony_cisubx712 subtract 1E+999999999    -9E+999999999   -> Infinity Overflow Inexact Rounded
6437db96d56Sopenharmony_cisubx713 subtract 9E+999999999    -1E+999999999   -> Infinity Overflow Inexact Rounded
6447db96d56Sopenharmony_cisubx714 subtract -1.1E-999999999 -1E-999999999   -> -1E-1000000000 Subnormal
6457db96d56Sopenharmony_cisubx715 subtract 1E-999999999    +1.1e-999999999 -> -1E-1000000000 Subnormal
6467db96d56Sopenharmony_cisubx716 subtract -1E+999999999   +9E+999999999   -> -Infinity Overflow Inexact Rounded
6477db96d56Sopenharmony_cisubx717 subtract -9E+999999999   +1E+999999999   -> -Infinity Overflow Inexact Rounded
6487db96d56Sopenharmony_cisubx718 subtract +1.1E-999999999 +1E-999999999   -> 1E-1000000000 Subnormal
6497db96d56Sopenharmony_cisubx719 subtract -1E-999999999   -1.1e-999999999 -> 1E-1000000000 Subnormal
6507db96d56Sopenharmony_ci
6517db96d56Sopenharmony_ciprecision: 3
6527db96d56Sopenharmony_cisubx720 subtract 1  9.999E+999999999   -> -Infinity Inexact Overflow Rounded
6537db96d56Sopenharmony_cisubx721 subtract 1 -9.999E+999999999   ->  Infinity Inexact Overflow Rounded
6547db96d56Sopenharmony_cisubx722 subtract    9.999E+999999999 1 ->  Infinity Inexact Overflow Rounded
6557db96d56Sopenharmony_cisubx723 subtract   -9.999E+999999999 1 -> -Infinity Inexact Overflow Rounded
6567db96d56Sopenharmony_cisubx724 subtract 1  9.999E+999999999   -> -Infinity Inexact Overflow Rounded
6577db96d56Sopenharmony_cisubx725 subtract 1 -9.999E+999999999   ->  Infinity Inexact Overflow Rounded
6587db96d56Sopenharmony_cisubx726 subtract    9.999E+999999999 1 ->  Infinity Inexact Overflow Rounded
6597db96d56Sopenharmony_cisubx727 subtract   -9.999E+999999999 1 -> -Infinity Inexact Overflow Rounded
6607db96d56Sopenharmony_ci
6617db96d56Sopenharmony_ci-- [more below]
6627db96d56Sopenharmony_ci
6637db96d56Sopenharmony_ci-- long operand checks
6647db96d56Sopenharmony_cimaxexponent: 999
6657db96d56Sopenharmony_ciminexponent: -999
6667db96d56Sopenharmony_ciprecision: 9
6677db96d56Sopenharmony_cisub731 subtract 12345678000 0 ->  1.23456780E+10 Rounded
6687db96d56Sopenharmony_cisub732 subtract 0 12345678000 -> -1.23456780E+10 Rounded
6697db96d56Sopenharmony_cisub733 subtract 1234567800  0 ->  1.23456780E+9 Rounded
6707db96d56Sopenharmony_cisub734 subtract 0 1234567800  -> -1.23456780E+9 Rounded
6717db96d56Sopenharmony_cisub735 subtract 1234567890  0 ->  1.23456789E+9 Rounded
6727db96d56Sopenharmony_cisub736 subtract 0 1234567890  -> -1.23456789E+9 Rounded
6737db96d56Sopenharmony_cisub737 subtract 1234567891  0 ->  1.23456789E+9 Inexact Rounded
6747db96d56Sopenharmony_cisub738 subtract 0 1234567891  -> -1.23456789E+9 Inexact Rounded
6757db96d56Sopenharmony_cisub739 subtract 12345678901 0 ->  1.23456789E+10 Inexact Rounded
6767db96d56Sopenharmony_cisub740 subtract 0 12345678901 -> -1.23456789E+10 Inexact Rounded
6777db96d56Sopenharmony_cisub741 subtract 1234567896  0 ->  1.23456790E+9 Inexact Rounded
6787db96d56Sopenharmony_cisub742 subtract 0 1234567896  -> -1.23456790E+9 Inexact Rounded
6797db96d56Sopenharmony_ci
6807db96d56Sopenharmony_ciprecision: 15
6817db96d56Sopenharmony_cisub751 subtract 12345678000 0 ->  12345678000
6827db96d56Sopenharmony_cisub752 subtract 0 12345678000 -> -12345678000
6837db96d56Sopenharmony_cisub753 subtract 1234567800  0 ->  1234567800
6847db96d56Sopenharmony_cisub754 subtract 0 1234567800  -> -1234567800
6857db96d56Sopenharmony_cisub755 subtract 1234567890  0 ->  1234567890
6867db96d56Sopenharmony_cisub756 subtract 0 1234567890  -> -1234567890
6877db96d56Sopenharmony_cisub757 subtract 1234567891  0 ->  1234567891
6887db96d56Sopenharmony_cisub758 subtract 0 1234567891  -> -1234567891
6897db96d56Sopenharmony_cisub759 subtract 12345678901 0 ->  12345678901
6907db96d56Sopenharmony_cisub760 subtract 0 12345678901 -> -12345678901
6917db96d56Sopenharmony_cisub761 subtract 1234567896  0 ->  1234567896
6927db96d56Sopenharmony_cisub762 subtract 0 1234567896  -> -1234567896
6937db96d56Sopenharmony_ci
6947db96d56Sopenharmony_ci-- Specials
6957db96d56Sopenharmony_cisubx780 subtract -Inf   Inf   -> -Infinity
6967db96d56Sopenharmony_cisubx781 subtract -Inf   1000  -> -Infinity
6977db96d56Sopenharmony_cisubx782 subtract -Inf   1     -> -Infinity
6987db96d56Sopenharmony_cisubx783 subtract -Inf  -0     -> -Infinity
6997db96d56Sopenharmony_cisubx784 subtract -Inf  -1     -> -Infinity
7007db96d56Sopenharmony_cisubx785 subtract -Inf  -1000  -> -Infinity
7017db96d56Sopenharmony_cisubx787 subtract -1000  Inf   -> -Infinity
7027db96d56Sopenharmony_cisubx788 subtract -Inf   Inf   -> -Infinity
7037db96d56Sopenharmony_cisubx789 subtract -1     Inf   -> -Infinity
7047db96d56Sopenharmony_cisubx790 subtract  0     Inf   -> -Infinity
7057db96d56Sopenharmony_cisubx791 subtract  1     Inf   -> -Infinity
7067db96d56Sopenharmony_cisubx792 subtract  1000  Inf   -> -Infinity
7077db96d56Sopenharmony_ci
7087db96d56Sopenharmony_cisubx800 subtract  Inf   Inf   ->  NaN  Invalid_operation
7097db96d56Sopenharmony_cisubx801 subtract  Inf   1000  ->  Infinity
7107db96d56Sopenharmony_cisubx802 subtract  Inf   1     ->  Infinity
7117db96d56Sopenharmony_cisubx803 subtract  Inf   0     ->  Infinity
7127db96d56Sopenharmony_cisubx804 subtract  Inf  -0     ->  Infinity
7137db96d56Sopenharmony_cisubx805 subtract  Inf  -1     ->  Infinity
7147db96d56Sopenharmony_cisubx806 subtract  Inf  -1000  ->  Infinity
7157db96d56Sopenharmony_cisubx807 subtract  Inf  -Inf   ->  Infinity
7167db96d56Sopenharmony_cisubx808 subtract -1000 -Inf   ->  Infinity
7177db96d56Sopenharmony_cisubx809 subtract -Inf  -Inf   ->  NaN  Invalid_operation
7187db96d56Sopenharmony_cisubx810 subtract -1    -Inf   ->  Infinity
7197db96d56Sopenharmony_cisubx811 subtract -0    -Inf   ->  Infinity
7207db96d56Sopenharmony_cisubx812 subtract  0    -Inf   ->  Infinity
7217db96d56Sopenharmony_cisubx813 subtract  1    -Inf   ->  Infinity
7227db96d56Sopenharmony_cisubx814 subtract  1000 -Inf   ->  Infinity
7237db96d56Sopenharmony_cisubx815 subtract  Inf  -Inf   ->  Infinity
7247db96d56Sopenharmony_ci
7257db96d56Sopenharmony_cisubx821 subtract  NaN   Inf   ->  NaN
7267db96d56Sopenharmony_cisubx822 subtract -NaN   1000  -> -NaN
7277db96d56Sopenharmony_cisubx823 subtract  NaN   1     ->  NaN
7287db96d56Sopenharmony_cisubx824 subtract  NaN   0     ->  NaN
7297db96d56Sopenharmony_cisubx825 subtract  NaN  -0     ->  NaN
7307db96d56Sopenharmony_cisubx826 subtract  NaN  -1     ->  NaN
7317db96d56Sopenharmony_cisubx827 subtract  NaN  -1000  ->  NaN
7327db96d56Sopenharmony_cisubx828 subtract  NaN  -Inf   ->  NaN
7337db96d56Sopenharmony_cisubx829 subtract -NaN   NaN   -> -NaN
7347db96d56Sopenharmony_cisubx830 subtract -Inf   NaN   ->  NaN
7357db96d56Sopenharmony_cisubx831 subtract -1000  NaN   ->  NaN
7367db96d56Sopenharmony_cisubx832 subtract -1     NaN   ->  NaN
7377db96d56Sopenharmony_cisubx833 subtract -0     NaN   ->  NaN
7387db96d56Sopenharmony_cisubx834 subtract  0     NaN   ->  NaN
7397db96d56Sopenharmony_cisubx835 subtract  1     NaN   ->  NaN
7407db96d56Sopenharmony_cisubx836 subtract  1000 -NaN   -> -NaN
7417db96d56Sopenharmony_cisubx837 subtract  Inf   NaN   ->  NaN
7427db96d56Sopenharmony_ci
7437db96d56Sopenharmony_cisubx841 subtract  sNaN  Inf   ->  NaN  Invalid_operation
7447db96d56Sopenharmony_cisubx842 subtract -sNaN  1000  -> -NaN  Invalid_operation
7457db96d56Sopenharmony_cisubx843 subtract  sNaN  1     ->  NaN  Invalid_operation
7467db96d56Sopenharmony_cisubx844 subtract  sNaN  0     ->  NaN  Invalid_operation
7477db96d56Sopenharmony_cisubx845 subtract  sNaN -0     ->  NaN  Invalid_operation
7487db96d56Sopenharmony_cisubx846 subtract  sNaN -1     ->  NaN  Invalid_operation
7497db96d56Sopenharmony_cisubx847 subtract  sNaN -1000  ->  NaN  Invalid_operation
7507db96d56Sopenharmony_cisubx848 subtract  sNaN  NaN   ->  NaN  Invalid_operation
7517db96d56Sopenharmony_cisubx849 subtract  sNaN sNaN   ->  NaN  Invalid_operation
7527db96d56Sopenharmony_cisubx850 subtract  NaN  sNaN   ->  NaN  Invalid_operation
7537db96d56Sopenharmony_cisubx851 subtract -Inf -sNaN   -> -NaN  Invalid_operation
7547db96d56Sopenharmony_cisubx852 subtract -1000 sNaN   ->  NaN  Invalid_operation
7557db96d56Sopenharmony_cisubx853 subtract -1    sNaN   ->  NaN  Invalid_operation
7567db96d56Sopenharmony_cisubx854 subtract -0    sNaN   ->  NaN  Invalid_operation
7577db96d56Sopenharmony_cisubx855 subtract  0    sNaN   ->  NaN  Invalid_operation
7587db96d56Sopenharmony_cisubx856 subtract  1    sNaN   ->  NaN  Invalid_operation
7597db96d56Sopenharmony_cisubx857 subtract  1000 sNaN   ->  NaN  Invalid_operation
7607db96d56Sopenharmony_cisubx858 subtract  Inf  sNaN   ->  NaN  Invalid_operation
7617db96d56Sopenharmony_cisubx859 subtract  NaN  sNaN   ->  NaN  Invalid_operation
7627db96d56Sopenharmony_ci
7637db96d56Sopenharmony_ci-- propagating NaNs
7647db96d56Sopenharmony_cisubx861 subtract  NaN01   -Inf     ->  NaN1
7657db96d56Sopenharmony_cisubx862 subtract -NaN02   -1000    -> -NaN2
7667db96d56Sopenharmony_cisubx863 subtract  NaN03    1000    ->  NaN3
7677db96d56Sopenharmony_cisubx864 subtract  NaN04    Inf     ->  NaN4
7687db96d56Sopenharmony_cisubx865 subtract  NaN05    NaN61   ->  NaN5
7697db96d56Sopenharmony_cisubx866 subtract -Inf     -NaN71   -> -NaN71
7707db96d56Sopenharmony_cisubx867 subtract -1000     NaN81   ->  NaN81
7717db96d56Sopenharmony_cisubx868 subtract  1000     NaN91   ->  NaN91
7727db96d56Sopenharmony_cisubx869 subtract  Inf      NaN101  ->  NaN101
7737db96d56Sopenharmony_cisubx871 subtract  sNaN011  -Inf    ->  NaN11  Invalid_operation
7747db96d56Sopenharmony_cisubx872 subtract  sNaN012  -1000   ->  NaN12  Invalid_operation
7757db96d56Sopenharmony_cisubx873 subtract -sNaN013   1000   -> -NaN13  Invalid_operation
7767db96d56Sopenharmony_cisubx874 subtract  sNaN014   NaN171 ->  NaN14  Invalid_operation
7777db96d56Sopenharmony_cisubx875 subtract  sNaN015  sNaN181 ->  NaN15  Invalid_operation
7787db96d56Sopenharmony_cisubx876 subtract  NaN016   sNaN191 ->  NaN191 Invalid_operation
7797db96d56Sopenharmony_cisubx877 subtract -Inf      sNaN201 ->  NaN201 Invalid_operation
7807db96d56Sopenharmony_cisubx878 subtract -1000     sNaN211 ->  NaN211 Invalid_operation
7817db96d56Sopenharmony_cisubx879 subtract  1000    -sNaN221 -> -NaN221 Invalid_operation
7827db96d56Sopenharmony_cisubx880 subtract  Inf      sNaN231 ->  NaN231 Invalid_operation
7837db96d56Sopenharmony_cisubx881 subtract  NaN025   sNaN241 ->  NaN241 Invalid_operation
7847db96d56Sopenharmony_ci
7857db96d56Sopenharmony_ci-- edge case spills
7867db96d56Sopenharmony_cisubx901 subtract  2.E-3  1.002  -> -1.000
7877db96d56Sopenharmony_cisubx902 subtract  2.0E-3  1.002  -> -1.0000
7887db96d56Sopenharmony_cisubx903 subtract  2.00E-3  1.0020  -> -1.00000
7897db96d56Sopenharmony_cisubx904 subtract  2.000E-3  1.00200  -> -1.000000
7907db96d56Sopenharmony_cisubx905 subtract  2.0000E-3  1.002000  -> -1.0000000
7917db96d56Sopenharmony_cisubx906 subtract  2.00000E-3  1.0020000  -> -1.00000000
7927db96d56Sopenharmony_cisubx907 subtract  2.000000E-3  1.00200000  -> -1.000000000
7937db96d56Sopenharmony_cisubx908 subtract  2.0000000E-3  1.002000000  -> -1.0000000000
7947db96d56Sopenharmony_ci
7957db96d56Sopenharmony_ci-- subnormals and underflows
7967db96d56Sopenharmony_ciprecision: 3
7977db96d56Sopenharmony_cimaxexponent: 999
7987db96d56Sopenharmony_ciminexponent: -999
7997db96d56Sopenharmony_cisubx1010 subtract  0  1.00E-999       ->  -1.00E-999
8007db96d56Sopenharmony_cisubx1011 subtract  0  0.1E-999        ->  -1E-1000   Subnormal
8017db96d56Sopenharmony_cisubx1012 subtract  0  0.10E-999       ->  -1.0E-1000 Subnormal
8027db96d56Sopenharmony_cisubx1013 subtract  0  0.100E-999      ->  -1.0E-1000 Subnormal Rounded
8037db96d56Sopenharmony_cisubx1014 subtract  0  0.01E-999       ->  -1E-1001   Subnormal
8047db96d56Sopenharmony_ci-- next is rounded to Emin
8057db96d56Sopenharmony_cisubx1015 subtract  0  0.999E-999      ->  -1.00E-999 Inexact Rounded Subnormal Underflow
8067db96d56Sopenharmony_cisubx1016 subtract  0  0.099E-999      ->  -1.0E-1000 Inexact Rounded Subnormal Underflow
8077db96d56Sopenharmony_cisubx1017 subtract  0  0.009E-999      ->  -1E-1001   Inexact Rounded Subnormal Underflow
8087db96d56Sopenharmony_cisubx1018 subtract  0  0.001E-999      ->  -0E-1001   Inexact Rounded Subnormal Underflow Clamped
8097db96d56Sopenharmony_cisubx1019 subtract  0  0.0009E-999     ->  -0E-1001   Inexact Rounded Subnormal Underflow Clamped
8107db96d56Sopenharmony_cisubx1020 subtract  0  0.0001E-999     ->  -0E-1001   Inexact Rounded Subnormal Underflow Clamped
8117db96d56Sopenharmony_ci
8127db96d56Sopenharmony_cisubx1030 subtract  0 -1.00E-999       ->   1.00E-999
8137db96d56Sopenharmony_cisubx1031 subtract  0 -0.1E-999        ->   1E-1000   Subnormal
8147db96d56Sopenharmony_cisubx1032 subtract  0 -0.10E-999       ->   1.0E-1000 Subnormal
8157db96d56Sopenharmony_cisubx1033 subtract  0 -0.100E-999      ->   1.0E-1000 Subnormal Rounded
8167db96d56Sopenharmony_cisubx1034 subtract  0 -0.01E-999       ->   1E-1001   Subnormal
8177db96d56Sopenharmony_ci-- next is rounded to Emin
8187db96d56Sopenharmony_cisubx1035 subtract  0 -0.999E-999      ->   1.00E-999 Inexact Rounded Subnormal Underflow
8197db96d56Sopenharmony_cisubx1036 subtract  0 -0.099E-999      ->   1.0E-1000 Inexact Rounded Subnormal Underflow
8207db96d56Sopenharmony_cisubx1037 subtract  0 -0.009E-999      ->   1E-1001   Inexact Rounded Subnormal Underflow
8217db96d56Sopenharmony_cisubx1038 subtract  0 -0.001E-999      ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped
8227db96d56Sopenharmony_cisubx1039 subtract  0 -0.0009E-999     ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped
8237db96d56Sopenharmony_cisubx1040 subtract  0 -0.0001E-999     ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped
8247db96d56Sopenharmony_ci
8257db96d56Sopenharmony_ci-- some non-zero subnormal subtracts
8267db96d56Sopenharmony_ci-- subx1056 is a tricky case
8277db96d56Sopenharmony_cirounding: half_up
8287db96d56Sopenharmony_cisubx1050 subtract  1.00E-999   0.1E-999  ->   9.0E-1000  Subnormal
8297db96d56Sopenharmony_cisubx1051 subtract  0.1E-999    0.1E-999  ->   0E-1000
8307db96d56Sopenharmony_cisubx1052 subtract  0.10E-999   0.1E-999  ->   0E-1001
8317db96d56Sopenharmony_cisubx1053 subtract  0.100E-999  0.1E-999  ->   0E-1001    Clamped
8327db96d56Sopenharmony_cisubx1054 subtract  0.01E-999   0.1E-999  ->   -9E-1001   Subnormal
8337db96d56Sopenharmony_cisubx1055 subtract  0.999E-999  0.1E-999  ->   9.0E-1000  Inexact Rounded Subnormal Underflow
8347db96d56Sopenharmony_cisubx1056 subtract  0.099E-999  0.1E-999  ->   -0E-1001   Inexact Rounded Subnormal Underflow Clamped
8357db96d56Sopenharmony_cisubx1057 subtract  0.009E-999  0.1E-999  ->   -9E-1001   Inexact Rounded Subnormal Underflow
8367db96d56Sopenharmony_cisubx1058 subtract  0.001E-999  0.1E-999  ->   -1.0E-1000 Inexact Rounded Subnormal Underflow
8377db96d56Sopenharmony_cisubx1059 subtract  0.0009E-999 0.1E-999  ->   -1.0E-1000 Inexact Rounded Subnormal Underflow
8387db96d56Sopenharmony_cisubx1060 subtract  0.0001E-999 0.1E-999  ->   -1.0E-1000 Inexact Rounded Subnormal Underflow
8397db96d56Sopenharmony_ci
8407db96d56Sopenharmony_ci
8417db96d56Sopenharmony_ci-- check for double-rounded subnormals
8427db96d56Sopenharmony_ciprecision:   5
8437db96d56Sopenharmony_cimaxexponent: 79
8447db96d56Sopenharmony_ciminexponent: -79
8457db96d56Sopenharmony_cisubx1101 subtract  0 1.52444E-80 -> -1.524E-80 Inexact Rounded Subnormal Underflow
8467db96d56Sopenharmony_cisubx1102 subtract  0 1.52445E-80 -> -1.524E-80 Inexact Rounded Subnormal Underflow
8477db96d56Sopenharmony_cisubx1103 subtract  0 1.52446E-80 -> -1.524E-80 Inexact Rounded Subnormal Underflow
8487db96d56Sopenharmony_cisubx1104 subtract  1.52444E-80 0 ->  1.524E-80 Inexact Rounded Subnormal Underflow
8497db96d56Sopenharmony_cisubx1105 subtract  1.52445E-80 0 ->  1.524E-80 Inexact Rounded Subnormal Underflow
8507db96d56Sopenharmony_cisubx1106 subtract  1.52446E-80 0 ->  1.524E-80 Inexact Rounded Subnormal Underflow
8517db96d56Sopenharmony_ci
8527db96d56Sopenharmony_cisubx1111 subtract  1.2345678E-80  1.2345671E-80 ->  0E-83 Inexact Rounded Subnormal Underflow Clamped
8537db96d56Sopenharmony_cisubx1112 subtract  1.2345678E-80  1.2345618E-80 ->  0E-83 Inexact Rounded Subnormal Underflow Clamped
8547db96d56Sopenharmony_cisubx1113 subtract  1.2345678E-80  1.2345178E-80 ->  0E-83 Inexact Rounded Subnormal Underflow Clamped
8557db96d56Sopenharmony_cisubx1114 subtract  1.2345678E-80  1.2341678E-80 ->  0E-83 Inexact Rounded Subnormal Underflow Clamped
8567db96d56Sopenharmony_cisubx1115 subtract  1.2345678E-80  1.2315678E-80 ->  3E-83         Rounded Subnormal
8577db96d56Sopenharmony_cisubx1116 subtract  1.2345678E-80  1.2145678E-80 ->  2.0E-82       Rounded Subnormal
8587db96d56Sopenharmony_cisubx1117 subtract  1.2345678E-80  1.1345678E-80 ->  1.00E-81      Rounded Subnormal
8597db96d56Sopenharmony_cisubx1118 subtract  1.2345678E-80  0.2345678E-80 ->  1.000E-80     Rounded Subnormal
8607db96d56Sopenharmony_ci
8617db96d56Sopenharmony_ciprecision:   34
8627db96d56Sopenharmony_cirounding:    half_up
8637db96d56Sopenharmony_cimaxExponent: 6144
8647db96d56Sopenharmony_ciminExponent: -6143
8657db96d56Sopenharmony_ci-- Examples from SQL proposal (Krishna Kulkarni)
8667db96d56Sopenharmony_cisubx1125  subtract 130E-2  120E-2 -> 0.10
8677db96d56Sopenharmony_cisubx1126  subtract 130E-2  12E-1  -> 0.10
8687db96d56Sopenharmony_cisubx1127  subtract 130E-2  1E0    -> 0.30
8697db96d56Sopenharmony_cisubx1128  subtract 1E2     1E4    -> -9.9E+3
8707db96d56Sopenharmony_ci
8717db96d56Sopenharmony_ci-- Null tests
8727db96d56Sopenharmony_cisubx9990 subtract 10  # -> NaN Invalid_operation
8737db96d56Sopenharmony_cisubx9991 subtract  # 10 -> NaN Invalid_operation
874