📄 subtract.dectest
字号:
------------------------------------------------------------------------
-- subtract.decTest -- decimal subtraction --
-- Copyright (c) IBM Corporation, 1981, 2003. 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.15
extended: 1
precision: 9
rounding: half_up
maxExponent: 999
-- [first group are 'quick confidence check']
subx001 subtract 0 0 -> '0'
subx002 subtract 1 1 -> '0'
subx003 subtract 1 2 -> '-1'
subx004 subtract 2 1 -> '1'
subx005 subtract 2 2 -> '0'
subx006 subtract 3 2 -> '1'
subx007 subtract 2 3 -> '-1'
subx011 subtract -0 0 -> '-0'
subx012 subtract -1 1 -> '-2'
subx013 subtract -1 2 -> '-3'
subx014 subtract -2 1 -> '-3'
subx015 subtract -2 2 -> '-4'
subx016 subtract -3 2 -> '-5'
subx017 subtract -2 3 -> '-5'
subx021 subtract 0 -0 -> '0'
subx022 subtract 1 -1 -> '2'
subx023 subtract 1 -2 -> '3'
subx024 subtract 2 -1 -> '3'
subx025 subtract 2 -2 -> '4'
subx026 subtract 3 -2 -> '5'
subx027 subtract 2 -3 -> '5'
subx030 subtract 11 1 -> 10
subx031 subtract 10 1 -> 9
subx032 subtract 9 1 -> 8
subx033 subtract 1 1 -> 0
subx034 subtract 0 1 -> -1
subx035 subtract -1 1 -> -2
subx036 subtract -9 1 -> -10
subx037 subtract -10 1 -> -11
subx038 subtract -11 1 -> -12
subx040 subtract '5.75' '3.3' -> '2.45'
subx041 subtract '5' '-3' -> '8'
subx042 subtract '-5' '-3' -> '-2'
subx043 subtract '-7' '2.5' -> '-9.5'
subx044 subtract '0.7' '0.3' -> '0.4'
subx045 subtract '1.3' '0.3' -> '1.0'
subx046 subtract '1.25' '1.25' -> '0.00'
subx050 subtract '1.23456789' '1.00000000' -> '0.23456789'
subx051 subtract '1.23456789' '1.00000089' -> '0.23456700'
subx052 subtract '0.5555555559' '0.0000000001' -> '0.555555556' Inexact Rounded
subx053 subtract '0.5555555559' '0.0000000005' -> '0.555555555' Inexact Rounded
subx054 subtract '0.4444444444' '0.1111111111' -> '0.333333333' Inexact Rounded
subx055 subtract '1.0000000000' '0.00000001' -> '0.999999990' Rounded
subx056 subtract '0.4444444444999' '0' -> '0.444444444' Inexact Rounded
subx057 subtract '0.4444444445000' '0' -> '0.444444445' Inexact Rounded
subx060 subtract '70' '10000e+9' -> '-1.00000000E+13' Inexact Rounded
subx061 subtract '700' '10000e+9' -> '-1.00000000E+13' Inexact Rounded
subx062 subtract '7000' '10000e+9' -> '-9.99999999E+12' Inexact Rounded
subx063 subtract '70000' '10000e+9' -> '-9.99999993E+12' Rounded
subx064 subtract '700000' '10000e+9' -> '-9.99999930E+12' Rounded
-- symmetry:
subx065 subtract '10000e+9' '70' -> '1.00000000E+13' Inexact Rounded
subx066 subtract '10000e+9' '700' -> '1.00000000E+13' Inexact Rounded
subx067 subtract '10000e+9' '7000' -> '9.99999999E+12' Inexact Rounded
subx068 subtract '10000e+9' '70000' -> '9.99999993E+12' Rounded
subx069 subtract '10000e+9' '700000' -> '9.99999930E+12' Rounded
-- change precision
subx080 subtract '10000e+9' '70000' -> '9.99999993E+12' Rounded
precision: 6
subx081 subtract '10000e+9' '70000' -> '1.00000E+13' Inexact Rounded
precision: 9
-- some of the next group are really constructor tests
subx090 subtract '00.0' '0.0' -> '0.0'
subx091 subtract '00.0' '0.00' -> '0.00'
subx092 subtract '0.00' '00.0' -> '0.00'
subx093 subtract '00.0' '0.00' -> '0.00'
subx094 subtract '0.00' '00.0' -> '0.00'
subx095 subtract '3' '.3' -> '2.7'
subx096 subtract '3.' '.3' -> '2.7'
subx097 subtract '3.0' '.3' -> '2.7'
subx098 subtract '3.00' '.3' -> '2.70'
subx099 subtract '3' '3' -> '0'
subx100 subtract '3' '+3' -> '0'
subx101 subtract '3' '-3' -> '6'
subx102 subtract '3' '0.3' -> '2.7'
subx103 subtract '3.' '0.3' -> '2.7'
subx104 subtract '3.0' '0.3' -> '2.7'
subx105 subtract '3.00' '0.3' -> '2.70'
subx106 subtract '3' '3.0' -> '0.0'
subx107 subtract '3' '+3.0' -> '0.0'
subx108 subtract '3' '-3.0' -> '6.0'
-- the above all from add; massaged and extended. Now some new ones...
-- [particularly important for comparisons]
-- NB: -xE-8 below were non-exponents pre-ANSI X3-274, and -1E-7 or 0E-7
-- with input rounding.
subx120 subtract '10.23456784' '10.23456789' -> '-5E-8'
subx121 subtract '10.23456785' '10.23456789' -> '-4E-8'
subx122 subtract '10.23456786' '10.23456789' -> '-3E-8'
subx123 subtract '10.23456787' '10.23456789' -> '-2E-8'
subx124 subtract '10.23456788' '10.23456789' -> '-1E-8'
subx125 subtract '10.23456789' '10.23456789' -> '0E-8'
subx126 subtract '10.23456790' '10.23456789' -> '1E-8'
subx127 subtract '10.23456791' '10.23456789' -> '2E-8'
subx128 subtract '10.23456792' '10.23456789' -> '3E-8'
subx129 subtract '10.23456793' '10.23456789' -> '4E-8'
subx130 subtract '10.23456794' '10.23456789' -> '5E-8'
subx131 subtract '10.23456781' '10.23456786' -> '-5E-8'
subx132 subtract '10.23456782' '10.23456786' -> '-4E-8'
subx133 subtract '10.23456783' '10.23456786' -> '-3E-8'
subx134 subtract '10.23456784' '10.23456786' -> '-2E-8'
subx135 subtract '10.23456785' '10.23456786' -> '-1E-8'
subx136 subtract '10.23456786' '10.23456786' -> '0E-8'
subx137 subtract '10.23456787' '10.23456786' -> '1E-8'
subx138 subtract '10.23456788' '10.23456786' -> '2E-8'
subx139 subtract '10.23456789' '10.23456786' -> '3E-8'
subx140 subtract '10.23456790' '10.23456786' -> '4E-8'
subx141 subtract '10.23456791' '10.23456786' -> '5E-8'
subx142 subtract '1' '0.999999999' -> '1E-9'
subx143 subtract '0.999999999' '1' -> '-1E-9'
subx144 subtract '-10.23456780' '-10.23456786' -> '6E-8'
subx145 subtract '-10.23456790' '-10.23456786' -> '-4E-8'
subx146 subtract '-10.23456791' '-10.23456786' -> '-5E-8'
precision: 3
subx150 subtract '12345678900000' '9999999999999' -> 2.35E+12 Inexact Rounded
subx151 subtract '9999999999999' '12345678900000' -> -2.35E+12 Inexact Rounded
precision: 6
subx152 subtract '12345678900000' '9999999999999' -> 2.34568E+12 Inexact Rounded
subx153 subtract '9999999999999' '12345678900000' -> -2.34568E+12 Inexact Rounded
precision: 9
subx154 subtract '12345678900000' '9999999999999' -> 2.34567890E+12 Inexact Rounded
subx155 subtract '9999999999999' '12345678900000' -> -2.34567890E+12 Inexact Rounded
precision: 12
subx156 subtract '12345678900000' '9999999999999' -> 2.34567890000E+12 Inexact Rounded
subx157 subtract '9999999999999' '12345678900000' -> -2.34567890000E+12 Inexact Rounded
precision: 15
subx158 subtract '12345678900000' '9999999999999' -> 2345678900001
subx159 subtract '9999999999999' '12345678900000' -> -2345678900001
precision: 9
-- additional scaled arithmetic tests [0.97 problem]
subx160 subtract '0' '.1' -> '-0.1'
subx161 subtract '00' '.97983' -> '-0.97983'
subx162 subtract '0' '.9' -> '-0.9'
subx163 subtract '0' '0.102' -> '-0.102'
subx164 subtract '0' '.4' -> '-0.4'
subx165 subtract '0' '.307' -> '-0.307'
subx166 subtract '0' '.43822' -> '-0.43822'
subx167 subtract '0' '.911' -> '-0.911'
subx168 subtract '.0' '.02' -> '-0.02'
subx169 subtract '00' '.392' -> '-0.392'
subx170 subtract '0' '.26' -> '-0.26'
subx171 subtract '0' '0.51' -> '-0.51'
subx172 subtract '0' '.2234' -> '-0.2234'
subx173 subtract '0' '.2' -> '-0.2'
subx174 subtract '.0' '.0008' -> '-0.0008'
-- 0. on left
subx180 subtract '0.0' '-.1' -> '0.1'
subx181 subtract '0.00' '-.97983' -> '0.97983'
subx182 subtract '0.0' '-.9' -> '0.9'
subx183 subtract '0.0' '-0.102' -> '0.102'
subx184 subtract '0.0' '-.4' -> '0.4'
subx185 subtract '0.0' '-.307' -> '0.307'
subx186 subtract '0.0' '-.43822' -> '0.43822'
subx187 subtract '0.0' '-.911' -> '0.911'
subx188 subtract '0.0' '-.02' -> '0.02'
subx189 subtract '0.00' '-.392' -> '0.392'
subx190 subtract '0.0' '-.26' -> '0.26'
subx191 subtract '0.0' '-0.51' -> '0.51'
subx192 subtract '0.0' '-.2234' -> '0.2234'
subx193 subtract '0.0' '-.2' -> '0.2'
subx194 subtract '0.0' '-.0008' -> '0.0008'
-- negatives of same
subx200 subtract '0' '-.1' -> '0.1'
subx201 subtract '00' '-.97983' -> '0.97983'
subx202 subtract '0' '-.9' -> '0.9'
subx203 subtract '0' '-0.102' -> '0.102'
subx204 subtract '0' '-.4' -> '0.4'
subx205 subtract '0' '-.307' -> '0.307'
subx206 subtract '0' '-.43822' -> '0.43822'
subx207 subtract '0' '-.911' -> '0.911'
subx208 subtract '.0' '-.02' -> '0.02'
subx209 subtract '00' '-.392' -> '0.392'
subx210 subtract '0' '-.26' -> '0.26'
subx211 subtract '0' '-0.51' -> '0.51'
subx212 subtract '0' '-.2234' -> '0.2234'
subx213 subtract '0' '-.2' -> '0.2'
subx214 subtract '.0' '-.0008' -> '0.0008'
-- more fixed, LHS swaps [really the same as testcases under add]
subx220 subtract '-56267E-12' 0 -> '-5.6267E-8'
subx221 subtract '-56267E-11' 0 -> '-5.6267E-7'
subx222 subtract '-56267E-10' 0 -> '-0.0000056267'
subx223 subtract '-56267E-9' 0 -> '-0.000056267'
subx224 subtract '-56267E-8' 0 -> '-0.00056267'
subx225 subtract '-56267E-7' 0 -> '-0.0056267'
subx226 subtract '-56267E-6' 0 -> '-0.056267'
subx227 subtract '-56267E-5' 0 -> '-0.56267'
subx228 subtract '-56267E-2' 0 -> '-562.67'
subx229 subtract '-56267E-1' 0 -> '-5626.7'
subx230 subtract '-56267E-0' 0 -> '-56267'
-- symmetry ...
subx240 subtract 0 '-56267E-12' -> '5.6267E-8'
subx241 subtract 0 '-56267E-11' -> '5.6267E-7'
subx242 subtract 0 '-56267E-10' -> '0.0000056267'
subx243 subtract 0 '-56267E-9' -> '0.000056267'
subx244 subtract 0 '-56267E-8' -> '0.00056267'
subx245 subtract 0 '-56267E-7' -> '0.0056267'
subx246 subtract 0 '-56267E-6' -> '0.056267'
subx247 subtract 0 '-56267E-5' -> '0.56267'
subx248 subtract 0 '-56267E-2' -> '562.67'
subx249 subtract 0 '-56267E-1' -> '5626.7'
subx250 subtract 0 '-56267E-0' -> '56267'
-- now some more from the 'new' add
precision: 9
subx301 subtract '1.23456789' '1.00000000' -> '0.23456789'
subx302 subtract '1.23456789' '1.00000011' -> '0.23456778'
subx311 subtract '0.4444444444' '0.5555555555' -> '-0.111111111' Inexact Rounded
subx312 subtract '0.4444444440' '0.5555555555' -> '-0.111111112' Inexact Rounded
subx313 subtract '0.4444444444' '0.5555555550' -> '-0.111111111' Inexact Rounded
subx314 subtract '0.44444444449' '0' -> '0.444444444' Inexact Rounded
subx315 subtract '0.444444444499' '0' -> '0.444444444' Inexact Rounded
subx316 subtract '0.4444444444999' '0' -> '0.444444444' Inexact Rounded
subx317 subtract '0.4444444445000' '0' -> '0.444444445' Inexact Rounded
subx318 subtract '0.4444444445001' '0' -> '0.444444445' Inexact Rounded
subx319 subtract '0.444444444501' '0' -> '0.444444445' Inexact Rounded
subx320 subtract '0.44444444451' '0' -> '0.444444445' Inexact Rounded
-- some carrying effects
subx321 subtract '0.9998' '0.0000' -> '0.9998'
subx322 subtract '0.9998' '0.0001' -> '0.9997'
subx323 subtract '0.9998' '0.0002' -> '0.9996'
subx324 subtract '0.9998' '0.0003' -> '0.9995'
subx325 subtract '0.9998' '-0.0000' -> '0.9998'
subx326 subtract '0.9998' '-0.0001' -> '0.9999'
subx327 subtract '0.9998' '-0.0002' -> '1.0000'
subx328 subtract '0.9998' '-0.0003' -> '1.0001'
subx330 subtract '70' '10000e+9' -> '-1.00000000E+13' Inexact Rounded
subx331 subtract '700' '10000e+9' -> '-1.00000000E+13' Inexact Rounded
subx332 subtract '7000' '10000e+9' -> '-9.99999999E+12' Inexact Rounded
subx333 subtract '70000' '10000e+9' -> '-9.99999993E+12' Rounded
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -