⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subtract.dectest

📁 eda is an estimation of distributions algorithm
💻 DECTEST
📖 第 1 页 / 共 3 页
字号:
------------------------------------------------------------------------
-- 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 + -