You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			675 lines
		
	
	
		
			34 KiB
		
	
	
	
		
			Plaintext
		
	
			
		
		
	
	
			675 lines
		
	
	
		
			34 KiB
		
	
	
	
		
			Plaintext
		
	
------------------------------------------------------------------------
 | 
						|
-- subtract0.decTest -- decimal subtraction (simplified)              --
 | 
						|
-- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
 | 
						|
------------------------------------------------------------------------
 | 
						|
-- Please see the document "General Decimal Arithmetic Testcases"     --
 | 
						|
-- at http://www2.hursley.ibm.com/decimal for the description of      --
 | 
						|
-- these testcases.                                                   --
 | 
						|
--                                                                    --
 | 
						|
-- These testcases are experimental ('beta' versions), and they       --
 | 
						|
-- may contain errors.  They are offered on an as-is basis.  In       --
 | 
						|
-- particular, achieving the same results as the tests here is not    --
 | 
						|
-- a guarantee that an implementation complies with any Standard      --
 | 
						|
-- or specification.  The tests are not exhaustive.                   --
 | 
						|
--                                                                    --
 | 
						|
-- Please send comments, suggestions, and corrections to the author:  --
 | 
						|
--   Mike Cowlishaw, IBM Fellow                                       --
 | 
						|
--   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
 | 
						|
--   mfc@uk.ibm.com                                                   --
 | 
						|
------------------------------------------------------------------------
 | 
						|
version: 2.58
 | 
						|
 | 
						|
extended:    0
 | 
						|
precision:   9
 | 
						|
rounding:    half_up
 | 
						|
maxExponent: 999
 | 
						|
minexponent: -999
 | 
						|
 | 
						|
-- [first group are 'quick confidence check']
 | 
						|
sub001 subtract  0   0  -> '0'
 | 
						|
sub002 subtract  1   1  -> '0'
 | 
						|
sub003 subtract  1   2  -> '-1'
 | 
						|
sub004 subtract  2   1  -> '1'
 | 
						|
sub005 subtract  2   2  -> '0'
 | 
						|
sub006 subtract  3   2  -> '1'
 | 
						|
sub007 subtract  2   3  -> '-1'
 | 
						|
 | 
						|
sub011 subtract -0   0  -> '0'
 | 
						|
sub012 subtract -1   1  -> '-2'
 | 
						|
sub013 subtract -1   2  -> '-3'
 | 
						|
sub014 subtract -2   1  -> '-3'
 | 
						|
sub015 subtract -2   2  -> '-4'
 | 
						|
sub016 subtract -3   2  -> '-5'
 | 
						|
sub017 subtract -2   3  -> '-5'
 | 
						|
 | 
						|
sub021 subtract  0  -0  -> '0'
 | 
						|
sub022 subtract  1  -1  -> '2'
 | 
						|
sub023 subtract  1  -2  -> '3'
 | 
						|
sub024 subtract  2  -1  -> '3'
 | 
						|
sub025 subtract  2  -2  -> '4'
 | 
						|
sub026 subtract  3  -2  -> '5'
 | 
						|
sub027 subtract  2  -3  -> '5'
 | 
						|
 | 
						|
sub030 subtract  11  1  -> 10
 | 
						|
sub031 subtract  10  1  ->  9
 | 
						|
sub032 subtract  9   1  ->  8
 | 
						|
sub033 subtract  1   1  ->  0
 | 
						|
sub034 subtract  0   1  -> -1
 | 
						|
sub035 subtract -1   1  -> -2
 | 
						|
sub036 subtract -9   1  -> -10
 | 
						|
sub037 subtract -10  1  -> -11
 | 
						|
sub038 subtract -11  1  -> -12
 | 
						|
 | 
						|
sub040 subtract '5.75' '3.3'  -> '2.45'
 | 
						|
sub041 subtract '5'    '-3'   -> '8'
 | 
						|
sub042 subtract '-5'   '-3'   -> '-2'
 | 
						|
sub043 subtract '-7'   '2.5'  -> '-9.5'
 | 
						|
sub044 subtract '0.7'  '0.3'  -> '0.4'
 | 
						|
sub045 subtract '1.3'  '0.3'  -> '1.0'
 | 
						|
sub046 subtract '1.25' '1.25' -> '0'
 | 
						|
 | 
						|
sub050 subtract '1.23456789'    '1.00000000' -> '0.23456789'
 | 
						|
sub051 subtract '1.23456789'    '1.00000089' -> '0.23456700'
 | 
						|
sub052 subtract '0.5555555559'    '0.0000000001' -> '0.555555556' Inexact Lost_digits Rounded
 | 
						|
sub053 subtract '0.5555555559'    '0.0000000005' -> '0.555555556' Inexact Lost_digits Rounded
 | 
						|
sub054 subtract '0.4444444444'    '0.1111111111' -> '0.333333333' Inexact Lost_digits Rounded
 | 
						|
sub055 subtract '1.0000000000'    '0.00000001' -> '0.99999999' Rounded
 | 
						|
sub056 subtract '0.4444444444999'    '0' -> '0.444444444' Inexact Lost_digits Rounded
 | 
						|
sub057 subtract '0.4444444445000'    '0' -> '0.444444445' Inexact Lost_digits Rounded
 | 
						|
 | 
						|
sub060 subtract '70'    '10000e+9' -> '-1.00000000E+13' Inexact Rounded
 | 
						|
sub061 subtract '700'    '10000e+9' -> '-1.00000000E+13' Inexact Rounded
 | 
						|
sub062 subtract '7000'    '10000e+9' -> '-1.00000000E+13' Inexact Rounded
 | 
						|
sub063 subtract '70000'    '10000e+9' -> '-9.9999999E+12' Inexact Rounded
 | 
						|
sub064 subtract '700000'    '10000e+9' -> '-9.9999993E+12' Rounded
 | 
						|
  -- symmetry:
 | 
						|
sub065 subtract '10000e+9'    '70' -> '1.00000000E+13' Inexact Rounded
 | 
						|
sub066 subtract '10000e+9'    '700' -> '1.00000000E+13' Inexact Rounded
 | 
						|
sub067 subtract '10000e+9'    '7000' -> '1.00000000E+13' Inexact Rounded
 | 
						|
sub068 subtract '10000e+9'    '70000' -> '9.9999999E+12' Inexact Rounded
 | 
						|
sub069 subtract '10000e+9'    '700000' -> '9.9999993E+12' Rounded
 | 
						|
 | 
						|
  -- change precision
 | 
						|
sub080 subtract '10000e+9'    '70000' -> '9.9999999E+12' Inexact Rounded
 | 
						|
precision: 6
 | 
						|
sub081 subtract '10000e+9'    '70000' -> '1.00000E+13' Inexact Rounded
 | 
						|
precision: 9
 | 
						|
 | 
						|
  -- some of the next group are really constructor tests
 | 
						|
sub090 subtract '00.0'    '0.0'  -> '0'
 | 
						|
sub091 subtract '00.0'    '0.00' -> '0'
 | 
						|
sub092 subtract '0.00'    '00.0' -> '0'
 | 
						|
sub093 subtract '00.0'    '0.00' -> '0'
 | 
						|
sub094 subtract '0.00'    '00.0' -> '0'
 | 
						|
sub095 subtract '3'    '.3'   -> '2.7'
 | 
						|
sub096 subtract '3.'   '.3'   -> '2.7'
 | 
						|
sub097 subtract '3.0'  '.3'   -> '2.7'
 | 
						|
sub098 subtract '3.00' '.3'   -> '2.70'
 | 
						|
sub099 subtract '3'    '3'    -> '0'
 | 
						|
sub100 subtract '3'    '+3'   -> '0'
 | 
						|
sub101 subtract '3'    '-3'   -> '6'
 | 
						|
sub102 subtract '3'    '0.3'  -> '2.7'
 | 
						|
sub103 subtract '3.'   '0.3'  -> '2.7'
 | 
						|
sub104 subtract '3.0'  '0.3'  -> '2.7'
 | 
						|
sub105 subtract '3.00' '0.3'  -> '2.70'
 | 
						|
sub106 subtract '3'    '3.0'  -> '0'
 | 
						|
sub107 subtract '3'    '+3.0' -> '0'
 | 
						|
sub108 subtract '3'    '-3.0' -> '6.0'
 | 
						|
 | 
						|
-- the above all from add; massaged and extended.  Now some new ones...
 | 
						|
-- [particularly important for comparisons]
 | 
						|
-- NB: -1E-7 below were non-exponents pre-ANSI X3-274
 | 
						|
sub120 subtract  '10.23456784'    '10.23456789'  -> '-1E-7' Inexact Lost_digits Rounded
 | 
						|
sub121 subtract  '10.23456785'    '10.23456789'  -> 0 Inexact Lost_digits Rounded
 | 
						|
sub122 subtract  '10.23456786'    '10.23456789'  -> 0 Inexact Lost_digits Rounded
 | 
						|
sub123 subtract  '10.23456787'    '10.23456789'  -> 0 Inexact Lost_digits Rounded
 | 
						|
sub124 subtract  '10.23456788'    '10.23456789'  -> 0 Inexact Lost_digits Rounded
 | 
						|
sub125 subtract  '10.23456789'    '10.23456789'  -> 0 Inexact Lost_digits Rounded
 | 
						|
sub126 subtract  '10.23456790'    '10.23456789'  -> 0 Inexact Lost_digits Rounded
 | 
						|
sub127 subtract  '10.23456791'    '10.23456789'  -> 0 Inexact Lost_digits Rounded
 | 
						|
sub128 subtract  '10.23456792'    '10.23456789'  -> 0 Inexact Lost_digits Rounded
 | 
						|
sub129 subtract  '10.23456793'    '10.23456789'  -> 0 Inexact Lost_digits Rounded
 | 
						|
sub130 subtract  '10.23456794'    '10.23456789'  -> 0 Inexact Lost_digits Rounded
 | 
						|
sub131 subtract  '10.23456781'    '10.23456786'  -> '-1E-7' Inexact Lost_digits Rounded
 | 
						|
sub132 subtract  '10.23456782'    '10.23456786'  -> '-1E-7' Inexact Lost_digits Rounded
 | 
						|
sub133 subtract  '10.23456783'    '10.23456786'  -> '-1E-7' Inexact Lost_digits Rounded
 | 
						|
sub134 subtract  '10.23456784'    '10.23456786'  -> '-1E-7' Inexact Lost_digits Rounded
 | 
						|
sub135 subtract  '10.23456785'    '10.23456786'  -> 0 Inexact Lost_digits Rounded
 | 
						|
sub136 subtract  '10.23456786'    '10.23456786'  -> 0 Inexact Lost_digits Rounded
 | 
						|
sub137 subtract  '10.23456787'    '10.23456786'  -> 0 Inexact Lost_digits Rounded
 | 
						|
sub138 subtract  '10.23456788'    '10.23456786'  -> 0 Inexact Lost_digits Rounded
 | 
						|
sub139 subtract  '10.23456789'    '10.23456786'  -> 0 Inexact Lost_digits Rounded
 | 
						|
sub140 subtract  '10.23456790'    '10.23456786'  -> 0 Inexact Lost_digits Rounded
 | 
						|
sub141 subtract  '10.23456791'    '10.23456786'  -> 0 Inexact Lost_digits Rounded
 | 
						|
sub142 subtract  '1'              '0.999999999'  -> 0 Inexact Rounded
 | 
						|
sub143 subtract  '0.999999999'    '1'            -> 0 Inexact Rounded
 | 
						|
 | 
						|
 | 
						|
precision: 3
 | 
						|
sub150 subtract '12345678900000' '9999999999999'  -> 2.3E+12 Inexact Lost_digits Rounded
 | 
						|
sub151 subtract '9999999999999'  '12345678900000' -> -2.3E+12 Inexact Lost_digits Rounded
 | 
						|
precision: 6
 | 
						|
sub152 subtract '12345678900000' '9999999999999'  -> 2.3457E+12 Inexact Lost_digits Rounded
 | 
						|
sub153 subtract '9999999999999'  '12345678900000' -> -2.3457E+12 Inexact Lost_digits Rounded
 | 
						|
precision: 9
 | 
						|
sub154 subtract '12345678900000' '9999999999999'  -> 2.3456789E+12 Inexact Lost_digits Rounded
 | 
						|
sub155 subtract '9999999999999'  '12345678900000' -> -2.3456789E+12 Inexact Lost_digits Rounded
 | 
						|
precision: 12
 | 
						|
sub156 subtract '12345678900000' '9999999999999'  -> 2.3456789000E+12 Inexact Lost_digits Rounded
 | 
						|
sub157 subtract '9999999999999'  '12345678900000' -> -2.3456789000E+12 Inexact Lost_digits Rounded
 | 
						|
precision: 15
 | 
						|
sub158 subtract '12345678900000' '9999999999999'  -> 2345678900001
 | 
						|
sub159 subtract '9999999999999'  '12345678900000' -> -2345678900001
 | 
						|
precision: 9
 | 
						|
 | 
						|
-- additional scaled arithmetic tests [0.97 problem]
 | 
						|
sub160 subtract '0'     '.1'      -> '-0.1'
 | 
						|
sub161 subtract '00'    '.97983'  -> '-0.97983'
 | 
						|
sub162 subtract '0'     '.9'      -> '-0.9'
 | 
						|
sub163 subtract '0'     '0.102'   -> '-0.102'
 | 
						|
sub164 subtract '0'     '.4'      -> '-0.4'
 | 
						|
sub165 subtract '0'     '.307'    -> '-0.307'
 | 
						|
sub166 subtract '0'     '.43822'  -> '-0.43822'
 | 
						|
sub167 subtract '0'     '.911'    -> '-0.911'
 | 
						|
sub168 subtract '.0'    '.02'     -> '-0.02'
 | 
						|
sub169 subtract '00'    '.392'    -> '-0.392'
 | 
						|
sub170 subtract '0'     '.26'     -> '-0.26'
 | 
						|
sub171 subtract '0'     '0.51'    -> '-0.51'
 | 
						|
sub172 subtract '0'     '.2234'   -> '-0.2234'
 | 
						|
sub173 subtract '0'     '.2'      -> '-0.2'
 | 
						|
sub174 subtract '.0'    '.0008'   -> '-0.0008'
 | 
						|
-- 0. on left
 | 
						|
sub180 subtract '0.0'     '-.1'      -> '0.1'
 | 
						|
sub181 subtract '0.00'    '-.97983'  -> '0.97983'
 | 
						|
sub182 subtract '0.0'     '-.9'      -> '0.9'
 | 
						|
sub183 subtract '0.0'     '-0.102'   -> '0.102'
 | 
						|
sub184 subtract '0.0'     '-.4'      -> '0.4'
 | 
						|
sub185 subtract '0.0'     '-.307'    -> '0.307'
 | 
						|
sub186 subtract '0.0'     '-.43822'  -> '0.43822'
 | 
						|
sub187 subtract '0.0'     '-.911'    -> '0.911'
 | 
						|
sub188 subtract '0.0'     '-.02'     -> '0.02'
 | 
						|
sub189 subtract '0.00'    '-.392'    -> '0.392'
 | 
						|
sub190 subtract '0.0'     '-.26'     -> '0.26'
 | 
						|
sub191 subtract '0.0'     '-0.51'    -> '0.51'
 | 
						|
sub192 subtract '0.0'     '-.2234'   -> '0.2234'
 | 
						|
sub193 subtract '0.0'     '-.2'      -> '0.2'
 | 
						|
sub194 subtract '0.0'     '-.0008'   -> '0.0008'
 | 
						|
-- negatives of same
 | 
						|
sub200 subtract '0'     '-.1'      -> '0.1'
 | 
						|
sub201 subtract '00'    '-.97983'  -> '0.97983'
 | 
						|
sub202 subtract '0'     '-.9'      -> '0.9'
 | 
						|
sub203 subtract '0'     '-0.102'   -> '0.102'
 | 
						|
sub204 subtract '0'     '-.4'      -> '0.4'
 | 
						|
sub205 subtract '0'     '-.307'    -> '0.307'
 | 
						|
sub206 subtract '0'     '-.43822'  -> '0.43822'
 | 
						|
sub207 subtract '0'     '-.911'    -> '0.911'
 | 
						|
sub208 subtract '.0'    '-.02'     -> '0.02'
 | 
						|
sub209 subtract '00'    '-.392'    -> '0.392'
 | 
						|
sub210 subtract '0'     '-.26'     -> '0.26'
 | 
						|
sub211 subtract '0'     '-0.51'    -> '0.51'
 | 
						|
sub212 subtract '0'     '-.2234'   -> '0.2234'
 | 
						|
sub213 subtract '0'     '-.2'      -> '0.2'
 | 
						|
sub214 subtract '.0'    '-.0008'   -> '0.0008'
 | 
						|
 | 
						|
-- more fixed, LHS swaps [really the same as testcases under add]
 | 
						|
sub220 subtract '-56267E-12' 0  -> '-5.6267E-8'
 | 
						|
sub221 subtract '-56267E-11' 0  -> '-5.6267E-7'
 | 
						|
sub222 subtract '-56267E-10' 0  -> '-0.0000056267'
 | 
						|
sub223 subtract '-56267E-9'  0  -> '-0.000056267'
 | 
						|
sub224 subtract '-56267E-8'  0  -> '-0.00056267'
 | 
						|
sub225 subtract '-56267E-7'  0  -> '-0.0056267'
 | 
						|
sub226 subtract '-56267E-6'  0  -> '-0.056267'
 | 
						|
sub227 subtract '-56267E-5'  0  -> '-0.56267'
 | 
						|
sub228 subtract '-56267E-2'  0  -> '-562.67'
 | 
						|
sub229 subtract '-56267E-1'  0  -> '-5626.7'
 | 
						|
sub230 subtract '-56267E-0'  0  -> '-56267'
 | 
						|
-- symmetry ...
 | 
						|
sub240 subtract 0 '-56267E-12'  -> '5.6267E-8'
 | 
						|
sub241 subtract 0 '-56267E-11'  -> '5.6267E-7'
 | 
						|
sub242 subtract 0 '-56267E-10'  -> '0.0000056267'
 | 
						|
sub243 subtract 0 '-56267E-9'   -> '0.000056267'
 | 
						|
sub244 subtract 0 '-56267E-8'   -> '0.00056267'
 | 
						|
sub245 subtract 0 '-56267E-7'   -> '0.0056267'
 | 
						|
sub246 subtract 0 '-56267E-6'   -> '0.056267'
 | 
						|
sub247 subtract 0 '-56267E-5'   -> '0.56267'
 | 
						|
sub248 subtract 0 '-56267E-2'   -> '562.67'
 | 
						|
sub249 subtract 0 '-56267E-1'   -> '5626.7'
 | 
						|
sub250 subtract 0 '-56267E-0'   -> '56267'
 | 
						|
 | 
						|
-- now some more from the 'new' add
 | 
						|
precision: 9
 | 
						|
sub301 subtract '1.23456789'  '1.00000000' -> '0.23456789'
 | 
						|
sub302 subtract '1.23456789'  '1.00000011' -> '0.23456778'
 | 
						|
 | 
						|
sub311 subtract '0.4444444444'  '0.5555555555' -> '-0.111111112' Inexact Lost_digits Rounded
 | 
						|
sub312 subtract '0.4444444440'  '0.5555555555' -> '-0.111111112' Inexact Lost_digits Rounded
 | 
						|
sub313 subtract '0.4444444444'  '0.5555555550' -> '-0.111111111' Inexact Lost_digits Rounded
 | 
						|
sub314 subtract '0.44444444449'    '0' -> '0.444444444' Inexact Lost_digits Rounded
 | 
						|
sub315 subtract '0.444444444499'   '0' -> '0.444444444' Inexact Lost_digits Rounded
 | 
						|
sub316 subtract '0.4444444444999'  '0' -> '0.444444444' Inexact Lost_digits Rounded
 | 
						|
sub317 subtract '0.4444444445000'  '0' -> '0.444444445' Inexact Lost_digits Rounded
 | 
						|
sub318 subtract '0.4444444445001'  '0' -> '0.444444445' Inexact Lost_digits Rounded
 | 
						|
sub319 subtract '0.444444444501'   '0' -> '0.444444445' Inexact Lost_digits Rounded
 | 
						|
sub320 subtract '0.44444444451'    '0' -> '0.444444445' Inexact Lost_digits Rounded
 | 
						|
 | 
						|
-- some carrying effects
 | 
						|
sub321 subtract '0.9998'  '0.0000' -> '0.9998'
 | 
						|
sub322 subtract '0.9998'  '0.0001' -> '0.9997'
 | 
						|
sub323 subtract '0.9998'  '0.0002' -> '0.9996'
 | 
						|
sub324 subtract '0.9998'  '0.0003' -> '0.9995'
 | 
						|
sub325 subtract '0.9998'  '-0.0000' -> '0.9998'
 | 
						|
sub326 subtract '0.9998'  '-0.0001' -> '0.9999'
 | 
						|
sub327 subtract '0.9998'  '-0.0002' -> '1.0000'
 | 
						|
sub328 subtract '0.9998'  '-0.0003' -> '1.0001'
 | 
						|
 | 
						|
sub330 subtract '70'  '10000e+9' -> '-1.00000000E+13' Inexact Rounded
 | 
						|
sub331 subtract '700'  '10000e+9' -> '-1.00000000E+13' Inexact Rounded
 | 
						|
sub332 subtract '7000'  '10000e+9' -> '-1.00000000E+13' Inexact Rounded
 | 
						|
sub333 subtract '70000'  '10000e+9' -> '-9.9999999E+12' Inexact Rounded
 | 
						|
sub334 subtract '700000'  '10000e+9' -> '-9.9999993E+12' Rounded
 | 
						|
sub335 subtract '7000000'  '10000e+9' -> '-9.9999930E+12' Rounded
 | 
						|
-- symmetry:
 | 
						|
sub340 subtract '10000e+9'  '70' -> '1.00000000E+13' Inexact Rounded
 | 
						|
sub341 subtract '10000e+9'  '700' -> '1.00000000E+13' Inexact Rounded
 | 
						|
sub342 subtract '10000e+9'  '7000' -> '1.00000000E+13' Inexact Rounded
 | 
						|
sub343 subtract '10000e+9'  '70000' -> '9.9999999E+12' Inexact Rounded
 | 
						|
sub344 subtract '10000e+9'  '700000' -> '9.9999993E+12' Rounded
 | 
						|
sub345 subtract '10000e+9'  '7000000' -> '9.9999930E+12' Rounded
 | 
						|
 | 
						|
-- same, higher precision
 | 
						|
precision: 15
 | 
						|
sub346 subtract '10000e+9'  '7' -> '9999999999993'
 | 
						|
sub347 subtract '10000e+9'  '70' -> '9999999999930'
 | 
						|
sub348 subtract '10000e+9'  '700' -> '9999999999300'
 | 
						|
sub349 subtract '10000e+9'  '7000' -> '9999999993000'
 | 
						|
sub350 subtract '10000e+9'  '70000' -> '9999999930000'
 | 
						|
sub351 subtract '10000e+9'  '700000' -> '9999999300000'
 | 
						|
sub352 subtract '7' '10000e+9'   -> '-9999999999993'
 | 
						|
sub353 subtract '70' '10000e+9'   -> '-9999999999930'
 | 
						|
sub354 subtract '700' '10000e+9'   -> '-9999999999300'
 | 
						|
sub355 subtract '7000' '10000e+9'   -> '-9999999993000'
 | 
						|
sub356 subtract '70000' '10000e+9'   -> '-9999999930000'
 | 
						|
sub357 subtract '700000' '10000e+9'   -> '-9999999300000'
 | 
						|
 | 
						|
-- zero preservation
 | 
						|
precision: 6
 | 
						|
sub360 subtract '10000e+9'  '70000' -> '1.00000E+13' Inexact Rounded
 | 
						|
sub361 subtract 1 '0.0001' -> '0.9999'
 | 
						|
sub362 subtract 1 '0.00001' -> '0.99999'
 | 
						|
sub363 subtract 1 '0.000001' -> '1.00000' Inexact Rounded
 | 
						|
sub364 subtract 1 '0.0000001' -> '1.00000' Inexact Rounded
 | 
						|
sub365 subtract 1 '0.00000001' -> '1.00000' Inexact Rounded
 | 
						|
 | 
						|
-- some funny zeros [in case of bad signum]
 | 
						|
sub370 subtract 1  0  -> 1
 | 
						|
sub371 subtract 1 0.  -> 1
 | 
						|
sub372 subtract 1  .0 -> 1
 | 
						|
sub373 subtract 1 0.0 -> 1
 | 
						|
sub374 subtract  0  1 -> -1
 | 
						|
sub375 subtract 0.  1 -> -1
 | 
						|
sub376 subtract  .0 1 -> -1
 | 
						|
sub377 subtract 0.0 1 -> -1
 | 
						|
 | 
						|
precision: 9
 | 
						|
 | 
						|
-- leading 0 digit before round
 | 
						|
sub910 subtract -103519362 -51897955.3 -> -51621407 Inexact Rounded
 | 
						|
sub911 subtract 159579.444 89827.5229 -> 69751.921 Inexact Rounded
 | 
						|
 | 
						|
sub920 subtract 333.123456 33.1234566 -> 299.999999 Inexact Rounded
 | 
						|
sub921 subtract 333.123456 33.1234565 -> 300.000000 Inexact Rounded
 | 
						|
sub922 subtract 133.123456 33.1234565 -> 100.000000 Inexact Rounded
 | 
						|
sub923 subtract 133.123456 33.1234564 -> 100.000000 Inexact Rounded
 | 
						|
sub924 subtract 133.123456 33.1234540 -> 100.000002 Rounded
 | 
						|
sub925 subtract 133.123456 43.1234560 ->  90.000000 Rounded
 | 
						|
sub926 subtract 133.123456 43.1234561 ->  90.000000 Inexact Rounded
 | 
						|
sub927 subtract 133.123456 43.1234566 ->  89.999999 Inexact Rounded
 | 
						|
sub928 subtract 101.123456 91.1234566 ->   9.999999 Inexact Rounded
 | 
						|
sub929 subtract 101.123456 99.1234566 ->   1.999999 Inexact Rounded
 | 
						|
 | 
						|
-- more of the same; probe for cluster boundary problems
 | 
						|
precision: 1
 | 
						|
sub930 subtract  11 2           -> 1E+1 Inexact Lost_digits Rounded
 | 
						|
precision: 2
 | 
						|
sub932 subtract 101 2           -> 1.0E+2 Inexact Lost_digits Rounded
 | 
						|
precision: 3
 | 
						|
sub934 subtract 101 2.1         -> 99 Inexact Rounded
 | 
						|
sub935 subtract 101 92.01       ->  9 Inexact Lost_digits Rounded
 | 
						|
precision: 4
 | 
						|
sub936 subtract 101 2.01        -> 99.0 Inexact Rounded
 | 
						|
sub937 subtract 101 92.01       ->  9.0 Inexact Rounded
 | 
						|
precision: 5
 | 
						|
sub938 subtract 101 2.001       -> 99.00 Inexact Rounded
 | 
						|
sub939 subtract 101 92.001      ->  9.00 Inexact Rounded
 | 
						|
precision: 6
 | 
						|
sub940 subtract 101 2.0001      -> 99.000 Inexact Rounded
 | 
						|
sub941 subtract 101 92.0001     ->  9.000 Inexact Rounded
 | 
						|
precision: 7
 | 
						|
sub942 subtract 101 2.00001     -> 99.0000 Inexact Rounded
 | 
						|
sub943 subtract 101 92.00001    ->  9.0000 Inexact Rounded
 | 
						|
precision: 8
 | 
						|
sub944 subtract 101 2.000001    -> 99.00000 Inexact Rounded
 | 
						|
sub945 subtract 101 92.000001   ->  9.00000 Inexact Rounded
 | 
						|
precision: 9
 | 
						|
sub946 subtract 101 2.0000001   -> 99.000000 Inexact Rounded
 | 
						|
sub947 subtract 101 92.0000001  ->  9.000000 Inexact Rounded
 | 
						|
 | 
						|
precision: 9
 | 
						|
 | 
						|
-- more LHS swaps [were fixed]
 | 
						|
sub390 subtract '-56267E-10'   0 ->  '-0.0000056267'
 | 
						|
sub391 subtract '-56267E-6'    0 ->  '-0.056267'
 | 
						|
sub392 subtract '-56267E-5'    0 ->  '-0.56267'
 | 
						|
sub393 subtract '-56267E-4'    0 ->  '-5.6267'
 | 
						|
sub394 subtract '-56267E-3'    0 ->  '-56.267'
 | 
						|
sub395 subtract '-56267E-2'    0 ->  '-562.67'
 | 
						|
sub396 subtract '-56267E-1'    0 ->  '-5626.7'
 | 
						|
sub397 subtract '-56267E-0'    0 ->  '-56267'
 | 
						|
sub398 subtract '-5E-10'       0 ->  '-5E-10'
 | 
						|
sub399 subtract '-5E-7'        0 ->  '-5E-7'
 | 
						|
sub400 subtract '-5E-6'        0 ->  '-0.000005'
 | 
						|
sub401 subtract '-5E-5'        0 ->  '-0.00005'
 | 
						|
sub402 subtract '-5E-4'        0 ->  '-0.0005'
 | 
						|
sub403 subtract '-5E-1'        0 ->  '-0.5'
 | 
						|
sub404 subtract '-5E0'         0 ->  '-5'
 | 
						|
sub405 subtract '-5E1'         0 ->  '-50'
 | 
						|
sub406 subtract '-5E5'         0 ->  '-500000'
 | 
						|
sub407 subtract '-5E8'         0 ->  '-500000000'
 | 
						|
sub408 subtract '-5E9'         0 ->  '-5E+9'
 | 
						|
sub409 subtract '-5E10'        0 ->  '-5E+10'
 | 
						|
sub410 subtract '-5E11'        0 ->  '-5E+11'
 | 
						|
sub411 subtract '-5E100'       0 ->  '-5E+100'
 | 
						|
 | 
						|
-- more RHS swaps [were fixed]
 | 
						|
sub420 subtract 0  '-56267E-10' ->  '0.0000056267'
 | 
						|
sub421 subtract 0  '-56267E-6'  ->  '0.056267'
 | 
						|
sub422 subtract 0  '-56267E-5'  ->  '0.56267'
 | 
						|
sub423 subtract 0  '-56267E-4'  ->  '5.6267'
 | 
						|
sub424 subtract 0  '-56267E-3'  ->  '56.267'
 | 
						|
sub425 subtract 0  '-56267E-2'  ->  '562.67'
 | 
						|
sub426 subtract 0  '-56267E-1'  ->  '5626.7'
 | 
						|
sub427 subtract 0  '-56267E-0'  ->  '56267'
 | 
						|
sub428 subtract 0  '-5E-10'     ->  '5E-10'
 | 
						|
sub429 subtract 0  '-5E-7'      ->  '5E-7'
 | 
						|
sub430 subtract 0  '-5E-6'      ->  '0.000005'
 | 
						|
sub431 subtract 0  '-5E-5'      ->  '0.00005'
 | 
						|
sub432 subtract 0  '-5E-4'      ->  '0.0005'
 | 
						|
sub433 subtract 0  '-5E-1'      ->  '0.5'
 | 
						|
sub434 subtract 0  '-5E0'       ->  '5'
 | 
						|
sub435 subtract 0  '-5E1'       ->  '50'
 | 
						|
sub436 subtract 0  '-5E5'       ->  '500000'
 | 
						|
sub437 subtract 0  '-5E8'       ->  '500000000'
 | 
						|
sub438 subtract 0  '-5E9'       ->  '5E+9'
 | 
						|
sub439 subtract 0  '-5E10'      ->  '5E+10'
 | 
						|
sub440 subtract 0  '-5E11'      ->  '5E+11'
 | 
						|
sub441 subtract 0  '-5E100'     ->  '5E+100'
 | 
						|
 | 
						|
 | 
						|
-- try borderline precision, with carries, etc.
 | 
						|
precision: 15
 | 
						|
sub461 subtract '1E+12' '1'       -> '999999999999'
 | 
						|
sub462 subtract '1E+12' '-1.11'   -> '1000000000001.11'
 | 
						|
sub463 subtract '1.11'  '-1E+12'  -> '1000000000001.11'
 | 
						|
sub464 subtract '-1'    '-1E+12'  -> '999999999999'
 | 
						|
sub465 subtract '7E+12' '1'       -> '6999999999999'
 | 
						|
sub466 subtract '7E+12' '-1.11'   -> '7000000000001.11'
 | 
						|
sub467 subtract '1.11'  '-7E+12'  -> '7000000000001.11'
 | 
						|
sub468 subtract '-1'    '-7E+12'  -> '6999999999999'
 | 
						|
 | 
						|
--                 123456789012345       123456789012345      1 23456789012345
 | 
						|
sub470 subtract '0.444444444444444'  '-0.555555555555563' -> '1.00000000000001' Inexact Rounded
 | 
						|
sub471 subtract '0.444444444444444'  '-0.555555555555562' -> '1.00000000000001' Inexact Rounded
 | 
						|
sub472 subtract '0.444444444444444'  '-0.555555555555561' -> '1.00000000000001' Inexact Rounded
 | 
						|
sub473 subtract '0.444444444444444'  '-0.555555555555560' -> '1.00000000000000' Inexact Rounded
 | 
						|
sub474 subtract '0.444444444444444'  '-0.555555555555559' -> '1.00000000000000' Inexact Rounded
 | 
						|
sub475 subtract '0.444444444444444'  '-0.555555555555558' -> '1.00000000000000' Inexact Rounded
 | 
						|
sub476 subtract '0.444444444444444'  '-0.555555555555557' -> '1.00000000000000' Inexact Rounded
 | 
						|
sub477 subtract '0.444444444444444'  '-0.555555555555556' -> '1.00000000000000' Rounded
 | 
						|
sub478 subtract '0.444444444444444'  '-0.555555555555555' -> '0.999999999999999'
 | 
						|
sub479 subtract '0.444444444444444'  '-0.555555555555554' -> '0.999999999999998'
 | 
						|
sub480 subtract '0.444444444444444'  '-0.555555555555553' -> '0.999999999999997'
 | 
						|
sub481 subtract '0.444444444444444'  '-0.555555555555552' -> '0.999999999999996'
 | 
						|
sub482 subtract '0.444444444444444'  '-0.555555555555551' -> '0.999999999999995'
 | 
						|
sub483 subtract '0.444444444444444'  '-0.555555555555550' -> '0.999999999999994'
 | 
						|
 | 
						|
-- and some more, including residue effects and different roundings
 | 
						|
precision: 9
 | 
						|
rounding: half_up
 | 
						|
sub500 subtract '123456789' 0             -> '123456789'
 | 
						|
sub501 subtract '123456789' 0.000000001   -> '123456789' Inexact Rounded
 | 
						|
sub502 subtract '123456789' 0.000001      -> '123456789' Inexact Rounded
 | 
						|
sub503 subtract '123456789' 0.1           -> '123456789' Inexact Rounded
 | 
						|
sub504 subtract '123456789' 0.4           -> '123456789' Inexact Rounded
 | 
						|
sub505 subtract '123456789' 0.49          -> '123456789' Inexact Rounded
 | 
						|
sub506 subtract '123456789' 0.499999      -> '123456789' Inexact Rounded
 | 
						|
sub507 subtract '123456789' 0.499999999   -> '123456789' Inexact Rounded
 | 
						|
sub508 subtract '123456789' 0.5           -> '123456789' Inexact Rounded
 | 
						|
sub509 subtract '123456789' 0.500000001   -> '123456788' Inexact Rounded
 | 
						|
sub510 subtract '123456789' 0.500001      -> '123456788' Inexact Rounded
 | 
						|
sub511 subtract '123456789' 0.51          -> '123456788' Inexact Rounded
 | 
						|
sub512 subtract '123456789' 0.6           -> '123456788' Inexact Rounded
 | 
						|
sub513 subtract '123456789' 0.9           -> '123456788' Inexact Rounded
 | 
						|
sub514 subtract '123456789' 0.99999       -> '123456788' Inexact Rounded
 | 
						|
sub515 subtract '123456789' 0.999999999   -> '123456788' Inexact Rounded
 | 
						|
sub516 subtract '123456789' 1             -> '123456788'
 | 
						|
sub517 subtract '123456789' 1.000000001   -> '123456788' Inexact Lost_digits Rounded
 | 
						|
sub518 subtract '123456789' 1.00001       -> '123456788' Inexact Rounded
 | 
						|
sub519 subtract '123456789' 1.1           -> '123456788' Inexact Rounded
 | 
						|
 | 
						|
rounding: half_even
 | 
						|
sub520 subtract '123456789' 0             -> '123456789'
 | 
						|
sub521 subtract '123456789' 0.000000001   -> '123456789' Inexact Rounded
 | 
						|
sub522 subtract '123456789' 0.000001      -> '123456789' Inexact Rounded
 | 
						|
sub523 subtract '123456789' 0.1           -> '123456789' Inexact Rounded
 | 
						|
sub524 subtract '123456789' 0.4           -> '123456789' Inexact Rounded
 | 
						|
sub525 subtract '123456789' 0.49          -> '123456789' Inexact Rounded
 | 
						|
sub526 subtract '123456789' 0.499999      -> '123456789' Inexact Rounded
 | 
						|
sub527 subtract '123456789' 0.499999999   -> '123456789' Inexact Rounded
 | 
						|
sub528 subtract '123456789' 0.5           -> '123456788' Inexact Rounded
 | 
						|
sub529 subtract '123456789' 0.500000001   -> '123456788' Inexact Rounded
 | 
						|
sub530 subtract '123456789' 0.500001      -> '123456788' Inexact Rounded
 | 
						|
sub531 subtract '123456789' 0.51          -> '123456788' Inexact Rounded
 | 
						|
sub532 subtract '123456789' 0.6           -> '123456788' Inexact Rounded
 | 
						|
sub533 subtract '123456789' 0.9           -> '123456788' Inexact Rounded
 | 
						|
sub534 subtract '123456789' 0.99999       -> '123456788' Inexact Rounded
 | 
						|
sub535 subtract '123456789' 0.999999999   -> '123456788' Inexact Rounded
 | 
						|
sub536 subtract '123456789' 1             -> '123456788'
 | 
						|
sub537 subtract '123456789' 1.00000001    -> '123456788' Inexact Rounded
 | 
						|
sub538 subtract '123456789' 1.00001       -> '123456788' Inexact Rounded
 | 
						|
sub539 subtract '123456789' 1.1           -> '123456788' Inexact Rounded
 | 
						|
-- critical few with even bottom digit...
 | 
						|
sub540 subtract '123456788' 0.499999999   -> '123456788' Inexact Rounded
 | 
						|
sub541 subtract '123456788' 0.5           -> '123456788' Inexact Rounded
 | 
						|
sub542 subtract '123456788' 0.500000001   -> '123456787' Inexact Rounded
 | 
						|
 | 
						|
rounding: down
 | 
						|
sub550 subtract '123456789' 0             -> '123456789'
 | 
						|
sub551 subtract '123456789' 0.000000001   -> '123456788' Inexact Rounded
 | 
						|
sub552 subtract '123456789' 0.000001      -> '123456788' Inexact Rounded
 | 
						|
sub553 subtract '123456789' 0.1           -> '123456788' Inexact Rounded
 | 
						|
sub554 subtract '123456789' 0.4           -> '123456788' Inexact Rounded
 | 
						|
sub555 subtract '123456789' 0.49          -> '123456788' Inexact Rounded
 | 
						|
sub556 subtract '123456789' 0.499999      -> '123456788' Inexact Rounded
 | 
						|
sub557 subtract '123456789' 0.499999999   -> '123456788' Inexact Rounded
 | 
						|
sub558 subtract '123456789' 0.5           -> '123456788' Inexact Rounded
 | 
						|
sub559 subtract '123456789' 0.500000001   -> '123456788' Inexact Rounded
 | 
						|
sub560 subtract '123456789' 0.500001      -> '123456788' Inexact Rounded
 | 
						|
sub561 subtract '123456789' 0.51          -> '123456788' Inexact Rounded
 | 
						|
sub562 subtract '123456789' 0.6           -> '123456788' Inexact Rounded
 | 
						|
sub563 subtract '123456789' 0.9           -> '123456788' Inexact Rounded
 | 
						|
sub564 subtract '123456789' 0.99999       -> '123456788' Inexact Rounded
 | 
						|
sub565 subtract '123456789' 0.999999999   -> '123456788' Inexact Rounded
 | 
						|
sub566 subtract '123456789' 1             -> '123456788'
 | 
						|
sub567 subtract '123456789' 1.00000001    -> '123456787' Inexact Rounded
 | 
						|
sub568 subtract '123456789' 1.00001       -> '123456787' Inexact Rounded
 | 
						|
sub569 subtract '123456789' 1.1           -> '123456787' Inexact Rounded
 | 
						|
 | 
						|
-- symmetry...
 | 
						|
rounding: half_up
 | 
						|
sub600 subtract 0             '123456789' -> '-123456789'
 | 
						|
sub601 subtract 0.000000001   '123456789' -> '-123456789' Inexact Rounded
 | 
						|
sub602 subtract 0.000001      '123456789' -> '-123456789' Inexact Rounded
 | 
						|
sub603 subtract 0.1           '123456789' -> '-123456789' Inexact Rounded
 | 
						|
sub604 subtract 0.4           '123456789' -> '-123456789' Inexact Rounded
 | 
						|
sub605 subtract 0.49          '123456789' -> '-123456789' Inexact Rounded
 | 
						|
sub606 subtract 0.499999      '123456789' -> '-123456789' Inexact Rounded
 | 
						|
sub607 subtract 0.499999999   '123456789' -> '-123456789' Inexact Rounded
 | 
						|
sub608 subtract 0.5           '123456789' -> '-123456789' Inexact Rounded
 | 
						|
sub609 subtract 0.500000001   '123456789' -> '-123456788' Inexact Rounded
 | 
						|
sub610 subtract 0.500001      '123456789' -> '-123456788' Inexact Rounded
 | 
						|
sub611 subtract 0.51          '123456789' -> '-123456788' Inexact Rounded
 | 
						|
sub612 subtract 0.6           '123456789' -> '-123456788' Inexact Rounded
 | 
						|
sub613 subtract 0.9           '123456789' -> '-123456788' Inexact Rounded
 | 
						|
sub614 subtract 0.99999       '123456789' -> '-123456788' Inexact Rounded
 | 
						|
sub615 subtract 0.999999999   '123456789' -> '-123456788' Inexact Rounded
 | 
						|
sub616 subtract 1             '123456789' -> '-123456788'
 | 
						|
sub617 subtract 1.000000001   '123456789' -> '-123456788' Inexact Lost_digits Rounded
 | 
						|
sub618 subtract 1.00001       '123456789' -> '-123456788' Inexact Rounded
 | 
						|
sub619 subtract 1.1           '123456789' -> '-123456788' Inexact Rounded
 | 
						|
 | 
						|
rounding: half_even
 | 
						|
sub620 subtract 0             '123456789' -> '-123456789'
 | 
						|
sub621 subtract 0.000000001   '123456789' -> '-123456789' Inexact Rounded
 | 
						|
sub622 subtract 0.000001      '123456789' -> '-123456789' Inexact Rounded
 | 
						|
sub623 subtract 0.1           '123456789' -> '-123456789' Inexact Rounded
 | 
						|
sub624 subtract 0.4           '123456789' -> '-123456789' Inexact Rounded
 | 
						|
sub625 subtract 0.49          '123456789' -> '-123456789' Inexact Rounded
 | 
						|
sub626 subtract 0.499999      '123456789' -> '-123456789' Inexact Rounded
 | 
						|
sub627 subtract 0.499999999   '123456789' -> '-123456789' Inexact Rounded
 | 
						|
sub628 subtract 0.5           '123456789' -> '-123456788' Inexact Rounded
 | 
						|
sub629 subtract 0.500000001   '123456789' -> '-123456788' Inexact Rounded
 | 
						|
sub630 subtract 0.500001      '123456789' -> '-123456788' Inexact Rounded
 | 
						|
sub631 subtract 0.51          '123456789' -> '-123456788' Inexact Rounded
 | 
						|
sub632 subtract 0.6           '123456789' -> '-123456788' Inexact Rounded
 | 
						|
sub633 subtract 0.9           '123456789' -> '-123456788' Inexact Rounded
 | 
						|
sub634 subtract 0.99999       '123456789' -> '-123456788' Inexact Rounded
 | 
						|
sub635 subtract 0.999999999   '123456789' -> '-123456788' Inexact Rounded
 | 
						|
sub636 subtract 1             '123456789' -> '-123456788'
 | 
						|
sub637 subtract 1.00000001    '123456789' -> '-123456788' Inexact Rounded
 | 
						|
sub638 subtract 1.00001       '123456789' -> '-123456788' Inexact Rounded
 | 
						|
sub639 subtract 1.1           '123456789' -> '-123456788' Inexact Rounded
 | 
						|
-- critical few with even bottom digit...
 | 
						|
sub640 subtract 0.499999999   '123456788' -> '-123456788' Inexact Rounded
 | 
						|
sub641 subtract 0.5           '123456788' -> '-123456788' Inexact Rounded
 | 
						|
sub642 subtract 0.500000001   '123456788' -> '-123456787' Inexact Rounded
 | 
						|
 | 
						|
rounding: down
 | 
						|
sub650 subtract 0             '123456789' -> '-123456789'
 | 
						|
sub651 subtract 0.000000001   '123456789' -> '-123456788' Inexact Rounded
 | 
						|
sub652 subtract 0.000001      '123456789' -> '-123456788' Inexact Rounded
 | 
						|
sub653 subtract 0.1           '123456789' -> '-123456788' Inexact Rounded
 | 
						|
sub654 subtract 0.4           '123456789' -> '-123456788' Inexact Rounded
 | 
						|
sub655 subtract 0.49          '123456789' -> '-123456788' Inexact Rounded
 | 
						|
sub656 subtract 0.499999      '123456789' -> '-123456788' Inexact Rounded
 | 
						|
sub657 subtract 0.499999999   '123456789' -> '-123456788' Inexact Rounded
 | 
						|
sub658 subtract 0.5           '123456789' -> '-123456788' Inexact Rounded
 | 
						|
sub659 subtract 0.500000001   '123456789' -> '-123456788' Inexact Rounded
 | 
						|
sub660 subtract 0.500001      '123456789' -> '-123456788' Inexact Rounded
 | 
						|
sub661 subtract 0.51          '123456789' -> '-123456788' Inexact Rounded
 | 
						|
sub662 subtract 0.6           '123456789' -> '-123456788' Inexact Rounded
 | 
						|
sub663 subtract 0.9           '123456789' -> '-123456788' Inexact Rounded
 | 
						|
sub664 subtract 0.99999       '123456789' -> '-123456788' Inexact Rounded
 | 
						|
sub665 subtract 0.999999999   '123456789' -> '-123456788' Inexact Rounded
 | 
						|
sub666 subtract 1             '123456789' -> '-123456788'
 | 
						|
sub667 subtract 1.00000001    '123456789' -> '-123456787' Inexact Rounded
 | 
						|
sub668 subtract 1.00001       '123456789' -> '-123456787' Inexact Rounded
 | 
						|
sub669 subtract 1.1           '123456789' -> '-123456787' Inexact Rounded
 | 
						|
 | 
						|
-- lots of leading zeros in intermediate result, and showing effects of
 | 
						|
-- input rounding
 | 
						|
precision: 9
 | 
						|
rounding: half_up
 | 
						|
sub670 subtract '123456789' '123456788.1' -> 1 Inexact Lost_digits Rounded
 | 
						|
sub671 subtract '123456789' '123456788.9' -> 0 Inexact Lost_digits Rounded
 | 
						|
sub672 subtract '123456789' '123456789.1' -> 0 Inexact Lost_digits Rounded
 | 
						|
sub673 subtract '123456789' '123456789.5' -> -1 Inexact Lost_digits Rounded
 | 
						|
sub674 subtract '123456789' '123456789.9' -> -1 Inexact Lost_digits Rounded
 | 
						|
 | 
						|
rounding: half_even
 | 
						|
sub680 subtract '123456789' '123456788.1' -> 1 Inexact Lost_digits Rounded
 | 
						|
sub681 subtract '123456789' '123456788.9' -> 0 Inexact Lost_digits Rounded
 | 
						|
sub682 subtract '123456789' '123456789.1' -> 0 Inexact Lost_digits Rounded
 | 
						|
sub683 subtract '123456789' '123456789.5' -> -1 Inexact Lost_digits Rounded
 | 
						|
sub684 subtract '123456789' '123456789.9' -> -1 Inexact Lost_digits Rounded
 | 
						|
 | 
						|
sub685 subtract '123456788' '123456787.1' -> 1 Inexact Lost_digits Rounded
 | 
						|
sub686 subtract '123456788' '123456787.9' -> 0 Inexact Lost_digits Rounded
 | 
						|
sub687 subtract '123456788' '123456788.1' -> 0 Inexact Lost_digits Rounded
 | 
						|
sub688 subtract '123456788' '123456788.5' -> 0 Inexact Lost_digits Rounded
 | 
						|
sub689 subtract '123456788' '123456788.9' -> -1 Inexact Lost_digits Rounded
 | 
						|
 | 
						|
rounding: down
 | 
						|
sub690 subtract '123456789' '123456788.1' -> 1 Inexact Lost_digits Rounded
 | 
						|
sub691 subtract '123456789' '123456788.9' -> 1 Inexact Lost_digits Rounded
 | 
						|
sub692 subtract '123456789' '123456789.1' -> 0 Inexact Lost_digits Rounded
 | 
						|
sub693 subtract '123456789' '123456789.5' -> 0 Inexact Lost_digits Rounded
 | 
						|
sub694 subtract '123456789' '123456789.9' -> 0 Inexact Lost_digits Rounded
 | 
						|
 | 
						|
 | 
						|
-- input preparation tests
 | 
						|
rounding: half_up
 | 
						|
precision: 3
 | 
						|
 | 
						|
sub700 subtract '12345678900000'  -9999999999999 ->  '2.23E+13' Inexact Lost_digits Rounded
 | 
						|
sub701 subtract  '9999999999999' -12345678900000 ->  '2.23E+13' Inexact Lost_digits Rounded
 | 
						|
sub702 subtract '12E+3'  '-3456' ->  '1.55E+4' Inexact Lost_digits Rounded
 | 
						|
-- next was 1.54E+4 under old [truncate to digits+1] rules
 | 
						|
sub703 subtract '12E+3'  '-3446' ->  '1.55E+4' Inexact Lost_digits Rounded
 | 
						|
sub704 subtract '12E+3'  '-3454' ->  '1.55E+4' Inexact Lost_digits Rounded
 | 
						|
sub705 subtract '12E+3'  '-3444' ->  '1.54E+4' Inexact Lost_digits Rounded
 | 
						|
 | 
						|
sub706 subtract '3456'  '-12E+3' ->  '1.55E+4' Inexact Lost_digits Rounded
 | 
						|
-- next was 1.54E+4 under old [truncate to digits+1] rules
 | 
						|
sub707 subtract '3446'  '-12E+3' ->  '1.55E+4' Inexact Lost_digits Rounded
 | 
						|
sub708 subtract '3454'  '-12E+3' ->  '1.55E+4' Inexact Lost_digits Rounded
 | 
						|
sub709 subtract '3444'  '-12E+3' ->  '1.54E+4' Inexact Lost_digits Rounded
 | 
						|
 | 
						|
-- overflow and underflow tests
 | 
						|
maxexponent: 999999999
 | 
						|
minexponent: -999999999
 | 
						|
sub730 subtract 1E+999999999    -9E+999999999   -> ? Overflow Inexact Rounded
 | 
						|
sub731 subtract 9E+999999999    -1E+999999999   -> ? Overflow Inexact Rounded
 | 
						|
sub732 subtract -1.1E-999999999 -1E-999999999   -> ? Underflow Subnormal Inexact Rounded
 | 
						|
sub733 subtract 1E-999999999     1.1e-999999999 -> ? Underflow Subnormal Inexact Rounded
 | 
						|
sub734 subtract -1E+999999999    9E+999999999   -> ? Overflow Inexact Rounded
 | 
						|
sub735 subtract -9E+999999999    1E+999999999   -> ? Overflow Inexact Rounded
 | 
						|
sub736 subtract +1.1E-999999999  1E-999999999   -> ? Underflow Subnormal Inexact Rounded
 | 
						|
sub737 subtract -1E-999999999   -1.1e-999999999 -> ? Underflow Subnormal Inexact Rounded
 | 
						|
 | 
						|
-- lostDigits checks
 | 
						|
maxexponent: 999
 | 
						|
minexponent: -999
 | 
						|
precision: 9
 | 
						|
sub801 subtract 12345678000 0 ->  1.23456780E+10 Rounded
 | 
						|
sub802 subtract 0 12345678000 -> -1.23456780E+10 Rounded
 | 
						|
sub803 subtract 1234567800  0 ->  1.23456780E+9 Rounded
 | 
						|
sub804 subtract 0 1234567800  -> -1.23456780E+9 Rounded
 | 
						|
sub805 subtract 1234567890  0 ->  1.23456789E+9 Rounded
 | 
						|
sub806 subtract 0 1234567890  -> -1.23456789E+9 Rounded
 | 
						|
sub807 subtract 1234567891  0 ->  1.23456789E+9 Inexact Lost_digits Rounded
 | 
						|
sub808 subtract 0 1234567891  -> -1.23456789E+9 Inexact Lost_digits Rounded
 | 
						|
sub809 subtract 12345678901 0 ->  1.23456789E+10 Inexact Lost_digits Rounded
 | 
						|
sub810 subtract 0 12345678901 -> -1.23456789E+10 Inexact Lost_digits Rounded
 | 
						|
sub811 subtract 1234567896  0 ->  1.23456790E+9 Inexact Lost_digits Rounded
 | 
						|
sub812 subtract 0 1234567896  -> -1.23456790E+9 Inexact Lost_digits Rounded
 | 
						|
 | 
						|
precision: 15
 | 
						|
-- still checking for [no] lostDigits
 | 
						|
sub841 subtract 12345678000 0 ->  12345678000
 | 
						|
sub842 subtract 0 12345678000 -> -12345678000
 | 
						|
sub843 subtract 1234567800  0 ->  1234567800
 | 
						|
sub844 subtract 0 1234567800  -> -1234567800
 | 
						|
sub845 subtract 1234567890  0 ->  1234567890
 | 
						|
sub846 subtract 0 1234567890  -> -1234567890
 | 
						|
sub847 subtract 1234567891  0 ->  1234567891
 | 
						|
sub848 subtract 0 1234567891  -> -1234567891
 | 
						|
sub849 subtract 12345678901 0 ->  12345678901
 | 
						|
sub850 subtract 0 12345678901 -> -12345678901
 | 
						|
sub851 subtract 1234567896  0 ->  1234567896
 | 
						|
sub852 subtract 0 1234567896  -> -1234567896
 | 
						|
 | 
						|
-- Null tests
 | 
						|
sub900 subtract 10  # -> ? Invalid_operation
 | 
						|
sub901 subtract  # 10 -> ? Invalid_operation
 | 
						|
 |