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.
		
		
		
		
		
			
		
			
				
	
	
		
			278 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			Plaintext
		
	
			
		
		
	
	
			278 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			Plaintext
		
	
------------------------------------------------------------------------
 | 
						|
-- multiply0.decTest -- decimal multiplication (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
 | 
						|
 | 
						|
mul000 multiply 2      2 -> 4
 | 
						|
mul001 multiply 2      3 -> 6
 | 
						|
mul002 multiply 5      1 -> 5
 | 
						|
mul003 multiply 5      2 -> 10
 | 
						|
mul004 multiply 1.20   2 -> 2.40
 | 
						|
mul005 multiply 1.20   0 -> 0
 | 
						|
mul006 multiply 1.20  -2 -> -2.40
 | 
						|
mul007 multiply -1.20  2 -> -2.40
 | 
						|
mul008 multiply -1.20  0 -> 0
 | 
						|
mul009 multiply -1.20 -2 -> 2.40
 | 
						|
mul010 multiply 5.09 7.1 -> 36.139
 | 
						|
mul011 multiply 2.5    4 -> 10.0
 | 
						|
mul012 multiply 2.50   4 -> 10.00
 | 
						|
mul013 multiply 1.23456789 1.00000000 -> 1.23456789 Rounded
 | 
						|
mul014 multiply 9.999999999 9.999999999 -> 100.000000 Inexact Lost_digits Rounded
 | 
						|
mul015 multiply 2.50   4 -> 10.00
 | 
						|
 | 
						|
precision: 6
 | 
						|
mul016 multiply 2.50   4 -> 10.00
 | 
						|
mul017 multiply 9.999999999 9.999999999 -> 100.000 Inexact Lost_digits Rounded
 | 
						|
 | 
						|
precision: 9
 | 
						|
mul031 multiply 5.00 1E-3    -> 0.00500
 | 
						|
mul032 multiply 00.00 0.000  -> 0
 | 
						|
mul033 multiply 00.00 0E-3   -> 0            -- rhs is 0
 | 
						|
mul034 multiply 0E-3  00.00  -> 0            -- lhs is 0
 | 
						|
 | 
						|
-- 1999.12.21: next one is a edge case if intermediate longs are used
 | 
						|
precision: 15
 | 
						|
mul039 multiply 999999999999 9765625 -> 9.76562499999023E+18 Inexact Rounded
 | 
						|
precision: 9
 | 
						|
 | 
						|
mul050 multiply 123.45 1e7  ->  1.2345E+9
 | 
						|
mul051 multiply 123.45 1e8  ->  1.2345E+10
 | 
						|
mul052 multiply 123.45 1e+9 ->  1.2345E+11
 | 
						|
mul053 multiply 123.45 1e10 ->  1.2345E+12
 | 
						|
mul054 multiply 123.45 1e11 ->  1.2345E+13
 | 
						|
mul055 multiply 123.45 1e12 ->  1.2345E+14
 | 
						|
mul056 multiply 123.45 1e13 ->  1.2345E+15
 | 
						|
 | 
						|
 | 
						|
-- test some intermediate lengths
 | 
						|
precision: 9
 | 
						|
mul080 multiply 0.1 123456789           -> 12345678.9
 | 
						|
mul081 multiply 0.1 1234567891          -> 123456789 Inexact Lost_digits Rounded
 | 
						|
mul082 multiply 0.1 12345678912         -> 1.23456789E+9 Inexact Lost_digits Rounded
 | 
						|
mul083 multiply 0.1 12345678912345      -> 1.23456789E+12 Inexact Lost_digits Rounded
 | 
						|
mul084 multiply 0.1 123456789           -> 12345678.9
 | 
						|
precision: 8
 | 
						|
mul085 multiply 0.1 12345678912         -> 1.2345679E+9 Inexact Lost_digits Rounded
 | 
						|
mul086 multiply 0.1 12345678912345      -> 1.2345679E+12 Inexact Lost_digits Rounded
 | 
						|
precision: 7
 | 
						|
mul087 multiply 0.1 12345678912         -> 1.234568E+9 Inexact Lost_digits Rounded
 | 
						|
mul088 multiply 0.1 12345678912345      -> 1.234568E+12 Inexact Lost_digits Rounded
 | 
						|
 | 
						|
precision: 9
 | 
						|
mul090 multiply 123456789          0.1 -> 12345678.9
 | 
						|
mul091 multiply 1234567891         0.1 -> 123456789 Inexact Lost_digits Rounded
 | 
						|
mul092 multiply 12345678912        0.1 -> 1.23456789E+9 Inexact Lost_digits Rounded
 | 
						|
mul093 multiply 12345678912345     0.1 -> 1.23456789E+12 Inexact Lost_digits Rounded
 | 
						|
mul094 multiply 123456789          0.1 -> 12345678.9
 | 
						|
precision: 8
 | 
						|
mul095 multiply 12345678912        0.1 -> 1.2345679E+9 Inexact Lost_digits Rounded
 | 
						|
mul096 multiply 12345678912345     0.1 -> 1.2345679E+12 Inexact Lost_digits Rounded
 | 
						|
precision: 7
 | 
						|
mul097 multiply 12345678912        0.1 -> 1.234568E+9 Inexact Lost_digits Rounded
 | 
						|
mul098 multiply 12345678912345     0.1 -> 1.234568E+12 Inexact Lost_digits Rounded
 | 
						|
 | 
						|
-- test some more edge cases and carries
 | 
						|
maxexponent: 9999
 | 
						|
minexponent: -9999
 | 
						|
precision: 33
 | 
						|
mul101 multiply 9 9   -> 81
 | 
						|
mul102 multiply 9 90   -> 810
 | 
						|
mul103 multiply 9 900   -> 8100
 | 
						|
mul104 multiply 9 9000   -> 81000
 | 
						|
mul105 multiply 9 90000   -> 810000
 | 
						|
mul106 multiply 9 900000   -> 8100000
 | 
						|
mul107 multiply 9 9000000   -> 81000000
 | 
						|
mul108 multiply 9 90000000   -> 810000000
 | 
						|
mul109 multiply 9 900000000   -> 8100000000
 | 
						|
mul110 multiply 9 9000000000   -> 81000000000
 | 
						|
mul111 multiply 9 90000000000   -> 810000000000
 | 
						|
mul112 multiply 9 900000000000   -> 8100000000000
 | 
						|
mul113 multiply 9 9000000000000   -> 81000000000000
 | 
						|
mul114 multiply 9 90000000000000   -> 810000000000000
 | 
						|
mul115 multiply 9 900000000000000   -> 8100000000000000
 | 
						|
mul116 multiply 9 9000000000000000   -> 81000000000000000
 | 
						|
mul117 multiply 9 90000000000000000   -> 810000000000000000
 | 
						|
mul118 multiply 9 900000000000000000   -> 8100000000000000000
 | 
						|
mul119 multiply 9 9000000000000000000   -> 81000000000000000000
 | 
						|
mul120 multiply 9 90000000000000000000   -> 810000000000000000000
 | 
						|
mul121 multiply 9 900000000000000000000   -> 8100000000000000000000
 | 
						|
mul122 multiply 9 9000000000000000000000   -> 81000000000000000000000
 | 
						|
mul123 multiply 9 90000000000000000000000   -> 810000000000000000000000
 | 
						|
-- test some more edge cases without carries
 | 
						|
mul131 multiply 3 3   -> 9
 | 
						|
mul132 multiply 3 30   -> 90
 | 
						|
mul133 multiply 3 300   -> 900
 | 
						|
mul134 multiply 3 3000   -> 9000
 | 
						|
mul135 multiply 3 30000   -> 90000
 | 
						|
mul136 multiply 3 300000   -> 900000
 | 
						|
mul137 multiply 3 3000000   -> 9000000
 | 
						|
mul138 multiply 3 30000000   -> 90000000
 | 
						|
mul139 multiply 3 300000000   -> 900000000
 | 
						|
mul140 multiply 3 3000000000   -> 9000000000
 | 
						|
mul141 multiply 3 30000000000   -> 90000000000
 | 
						|
mul142 multiply 3 300000000000   -> 900000000000
 | 
						|
mul143 multiply 3 3000000000000   -> 9000000000000
 | 
						|
mul144 multiply 3 30000000000000   -> 90000000000000
 | 
						|
mul145 multiply 3 300000000000000   -> 900000000000000
 | 
						|
mul146 multiply 3 3000000000000000   -> 9000000000000000
 | 
						|
mul147 multiply 3 30000000000000000   -> 90000000000000000
 | 
						|
mul148 multiply 3 300000000000000000   -> 900000000000000000
 | 
						|
mul149 multiply 3 3000000000000000000   -> 9000000000000000000
 | 
						|
mul150 multiply 3 30000000000000000000   -> 90000000000000000000
 | 
						|
mul151 multiply 3 300000000000000000000   -> 900000000000000000000
 | 
						|
mul152 multiply 3 3000000000000000000000   -> 9000000000000000000000
 | 
						|
mul153 multiply 3 30000000000000000000000   -> 90000000000000000000000
 | 
						|
 | 
						|
-- 1999.12.21: next one is a edge case if intermediate longs are used
 | 
						|
precision: 30
 | 
						|
mul160 multiply 999999999999 9765625 -> 9765624999990234375
 | 
						|
precision: 9
 | 
						|
-----
 | 
						|
 | 
						|
maxexponent: 999999999
 | 
						|
minexponent: -999999999
 | 
						|
-- test some cases that are close to exponent overflow/underflow
 | 
						|
mul170 multiply 1 9e999999999    -> 9E+999999999
 | 
						|
mul171 multiply 1 9.9e999999999  -> 9.9E+999999999
 | 
						|
mul172 multiply 1 9.99e999999999 -> 9.99E+999999999
 | 
						|
mul173 multiply 9e999999999    1 -> 9E+999999999
 | 
						|
mul174 multiply 9.9e999999999  1 -> 9.9E+999999999
 | 
						|
mul176 multiply 9.99e999999999 1 -> 9.99E+999999999
 | 
						|
mul177 multiply 1 9.99999999e999999999 -> 9.99999999E+999999999
 | 
						|
mul178 multiply 9.99999999e999999999 1 -> 9.99999999E+999999999
 | 
						|
 | 
						|
mul180 multiply 0.1 9e-999999998   -> 9E-999999999
 | 
						|
mul181 multiply 0.1 99e-999999998  -> 9.9E-999999998
 | 
						|
mul182 multiply 0.1 999e-999999998 -> 9.99E-999999997
 | 
						|
 | 
						|
mul183 multiply 0.1 9e-999999998     -> 9E-999999999
 | 
						|
mul184 multiply 0.1 99e-999999998    -> 9.9E-999999998
 | 
						|
mul185 multiply 0.1 999e-999999998   -> 9.99E-999999997
 | 
						|
mul186 multiply 0.1 999e-999999997   -> 9.99E-999999996
 | 
						|
mul187 multiply 0.1 9999e-999999997  -> 9.999E-999999995
 | 
						|
mul188 multiply 0.1 99999e-999999997 -> 9.9999E-999999994
 | 
						|
 | 
						|
mul190 multiply 1 9e-999999998   -> 9E-999999998
 | 
						|
mul191 multiply 1 99e-999999998  -> 9.9E-999999997
 | 
						|
mul192 multiply 1 999e-999999998 -> 9.99E-999999996
 | 
						|
mul193 multiply 9e-999999998   1 -> 9E-999999998
 | 
						|
mul194 multiply 99e-999999998  1 -> 9.9E-999999997
 | 
						|
mul195 multiply 999e-999999998 1 -> 9.99E-999999996
 | 
						|
 | 
						|
mul196 multiply 1e-599999999 1e-400000000 -> 1E-999999999
 | 
						|
mul197 multiply 1e-600000000 1e-399999999 -> 1E-999999999
 | 
						|
mul198 multiply 1.2e-599999999 1.2e-400000000 -> 1.44E-999999999
 | 
						|
mul199 multiply 1.2e-600000000 1.2e-399999999 -> 1.44E-999999999
 | 
						|
 | 
						|
mul201 multiply 1e599999999 1e400000000 -> 1E+999999999
 | 
						|
mul202 multiply 1e600000000 1e399999999 -> 1E+999999999
 | 
						|
mul203 multiply 1.2e599999999 1.2e400000000 -> 1.44E+999999999
 | 
						|
mul204 multiply 1.2e600000000 1.2e399999999 -> 1.44E+999999999
 | 
						|
 | 
						|
-- overflow and underflow tests
 | 
						|
maxexponent: 999999999
 | 
						|
minexponent: -999999999
 | 
						|
mul230 multiply +1.23456789012345E-0 9E+999999999 -> ? Inexact Lost_digits Overflow Rounded
 | 
						|
mul231 multiply 9E+999999999 +1.23456789012345E-0 -> ? Inexact Lost_digits Overflow Rounded
 | 
						|
mul232 multiply +0.100 9E-999999999 -> ? Underflow Subnormal Inexact Rounded
 | 
						|
mul233 multiply 9E-999999999 +0.100 -> ? Underflow Subnormal Inexact Rounded
 | 
						|
mul235 multiply -1.23456789012345E-0 9E+999999999 -> ? Inexact Lost_digits Overflow Rounded
 | 
						|
mul236 multiply 9E+999999999 -1.23456789012345E-0 -> ? Inexact Lost_digits Overflow Rounded
 | 
						|
mul237 multiply -0.100 9E-999999999 -> ? Underflow Subnormal Inexact Rounded
 | 
						|
mul238 multiply 9E-999999999 -0.100 -> ? Underflow Subnormal Inexact Rounded
 | 
						|
 | 
						|
mul239 multiply 1e-599999999 1e-400000001 -> ? Underflow Subnormal Inexact Rounded
 | 
						|
mul240 multiply 1e-599999999 1e-400000000 -> 1E-999999999
 | 
						|
mul241 multiply 1e-600000000 1e-400000000 -> ? Underflow Subnormal Inexact Rounded
 | 
						|
mul242 multiply 9e-999999998 0.01 -> ? Underflow Subnormal Inexact Rounded
 | 
						|
mul243 multiply 9e-999999998 0.1  -> 9E-999999999
 | 
						|
mul244 multiply 0.01 9e-999999998 -> ? Underflow Subnormal Inexact Rounded
 | 
						|
mul245 multiply 1e599999999 1e400000001 -> ? Overflow Inexact Rounded
 | 
						|
mul246 multiply 1e599999999 1e400000000 -> 1E+999999999
 | 
						|
mul247 multiply 1e600000000 1e400000000 -> ? Overflow Inexact Rounded
 | 
						|
mul248 multiply 9e999999998 100  -> ? Overflow Inexact Rounded
 | 
						|
mul249 multiply 9e999999998 10   -> 9.0E+999999999
 | 
						|
mul250 multiply 100  9e999999998 -> ? Overflow Inexact Rounded
 | 
						|
 | 
						|
-- 'subnormal' results (all underflow or overflow in base arithemtic)
 | 
						|
precision: 9
 | 
						|
mul260 multiply 1e-600000000 1e-400000001 -> ? Underflow Subnormal Inexact Rounded
 | 
						|
mul261 multiply 1e-600000000 1e-400000002 -> ? Underflow Subnormal Inexact Rounded
 | 
						|
mul262 multiply 1e-600000000 1e-400000003 -> ? Underflow Subnormal Inexact Rounded
 | 
						|
mul263 multiply 1e-600000000 1e-400000004 -> ? Underflow Subnormal Inexact Rounded
 | 
						|
mul264 multiply 1e-600000000 1e-400000005 -> ? Underflow Subnormal Inexact Rounded
 | 
						|
mul265 multiply 1e-600000000 1e-400000006 -> ? Underflow Subnormal Inexact Rounded
 | 
						|
mul266 multiply 1e-600000000 1e-400000007 -> ? Underflow Subnormal Inexact Rounded
 | 
						|
mul267 multiply 1e-600000000 1e-400000008 -> ? Underflow Subnormal Inexact Rounded
 | 
						|
mul268 multiply 1e-600000000 1e-400000009 -> ? Underflow Subnormal Inexact Rounded
 | 
						|
mul269 multiply 1e-600000000 1e-400000010 -> ? Underflow Subnormal Inexact Rounded
 | 
						|
mul270 multiply 1e+600000000 1e+400000001 -> ? Overflow Inexact Rounded
 | 
						|
mul271 multiply 1e+600000000 1e+400000002 -> ? Overflow Inexact Rounded
 | 
						|
mul272 multiply 1e+600000000 1e+400000003 -> ? Overflow Inexact Rounded
 | 
						|
mul273 multiply 1e+600000000 1e+400000004 -> ? Overflow Inexact Rounded
 | 
						|
mul274 multiply 1e+600000000 1e+400000005 -> ? Overflow Inexact Rounded
 | 
						|
mul275 multiply 1e+600000000 1e+400000006 -> ? Overflow Inexact Rounded
 | 
						|
mul276 multiply 1e+600000000 1e+400000007 -> ? Overflow Inexact Rounded
 | 
						|
mul277 multiply 1e+600000000 1e+400000008 -> ? Overflow Inexact Rounded
 | 
						|
mul278 multiply 1e+600000000 1e+400000009 -> ? Overflow Inexact Rounded
 | 
						|
mul279 multiply 1e+600000000 1e+400000010 -> ? Overflow Inexact Rounded
 | 
						|
 | 
						|
-- lostDigits checks
 | 
						|
maxexponent: 999
 | 
						|
minexponent: -999
 | 
						|
precision: 9
 | 
						|
mul301 multiply 12345678000 1 -> 1.23456780E+10 Rounded
 | 
						|
mul302 multiply 1 12345678000 -> 1.23456780E+10 Rounded
 | 
						|
mul303 multiply 1234567800  1 -> 1.23456780E+9 Rounded
 | 
						|
mul304 multiply 1 1234567800  -> 1.23456780E+9 Rounded
 | 
						|
mul305 multiply 1234567890  1 -> 1.23456789E+9 Rounded
 | 
						|
mul306 multiply 1 1234567890  -> 1.23456789E+9 Rounded
 | 
						|
mul307 multiply 1234567891  1 -> 1.23456789E+9 Inexact Lost_digits Rounded
 | 
						|
mul308 multiply 1 1234567891  -> 1.23456789E+9 Inexact Lost_digits Rounded
 | 
						|
mul309 multiply 12345678901 1 -> 1.23456789E+10 Inexact Lost_digits Rounded
 | 
						|
mul310 multiply 1 12345678901 -> 1.23456789E+10 Inexact Lost_digits Rounded
 | 
						|
mul311 multiply 1234567896  1 -> 1.23456790E+9 Inexact Lost_digits Rounded
 | 
						|
mul312 multiply 1 1234567896  -> 1.23456790E+9 Inexact Lost_digits Rounded
 | 
						|
 | 
						|
precision: 15
 | 
						|
-- still checking for [no] lostDigits
 | 
						|
mul341 multiply 12345678000 1 -> 12345678000
 | 
						|
mul342 multiply 1 12345678000 -> 12345678000
 | 
						|
mul343 multiply 1234567800  1 -> 1234567800
 | 
						|
mul344 multiply 1 1234567800  -> 1234567800
 | 
						|
mul345 multiply 1234567890  1 -> 1234567890
 | 
						|
mul346 multiply 1 1234567890  -> 1234567890
 | 
						|
mul347 multiply 1234567891  1 -> 1234567891
 | 
						|
mul348 multiply 1 1234567891  -> 1234567891
 | 
						|
mul349 multiply 12345678901 1 -> 12345678901
 | 
						|
mul350 multiply 1 12345678901 -> 12345678901
 | 
						|
mul351 multiply 1234567896  1 -> 1234567896
 | 
						|
mul352 multiply 1 1234567896  -> 1234567896
 | 
						|
 | 
						|
-- Null tests
 | 
						|
mul400 multiply 10  # -> ? Invalid_operation
 | 
						|
mul401 multiply  # 10 -> ? Invalid_operation
 | 
						|
 |