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