cpython/Lib/test/decimaltestdata/inexact.decTest
Guido van Rossum 0d3fb8a944 Merged revisions 59107-59186 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk

(Note: some conflicts in the PCbuild9 directory reverted.  Sorry Christian!)

........
  r59120 | christian.heimes | 2007-11-22 03:21:16 -0800 (Thu, 22 Nov 2007) | 3 lines

  Backport of the PCbuild9 directory from the py3k branch.
  I've finished the last task for the PCbuild9 directory today. I don't think there is much left to do. Now you can all play around with the shiny new VS 2008 and try the PGO builds. I was able to get a speed improvement of about 10% on py3k.
  Have fun! :)
........
  r59126 | brett.cannon | 2007-11-22 16:06:51 -0800 (Thu, 22 Nov 2007) | 2 lines

  Fix a bug in the test for using __loader__.get_data().
........
  r59131 | christian.heimes | 2007-11-22 23:05:03 -0800 (Thu, 22 Nov 2007) | 1 line

  Backport of PCbuild9 fixes from py3k r59130
........
  r59132 | christian.heimes | 2007-11-23 01:10:36 -0800 (Fri, 23 Nov 2007) | 2 lines

  Applied patch #1754273 and #1754271 from Thomas Glee
  The patches are adding deprecation warnings for back ticks and <>
........
  r59133 | christian.heimes | 2007-11-23 04:12:02 -0800 (Fri, 23 Nov 2007) | 2 lines

  Fixed problems in the last commit. Filenames and line numbers weren't reported correctly.
  Backquotes still don't report the correct file. The AST nodes only contain the line number but not the file name.
........
  r59134 | christian.heimes | 2007-11-23 04:16:35 -0800 (Fri, 23 Nov 2007) | 1 line

  How did the comment get there?
........
  r59135 | christian.heimes | 2007-11-23 05:25:31 -0800 (Fri, 23 Nov 2007) | 1 line

  And yet another fix for the patch. Paul Moore has send me a note that I've missed a declaration. The additional code has moved the declaration in the middle of the block.
........
  r59136 | andrew.kuchling | 2007-11-23 05:37:39 -0800 (Fri, 23 Nov 2007) | 1 line

  Add item
........
  r59137 | skip.montanaro | 2007-11-23 09:08:35 -0800 (Fri, 23 Nov 2007) | 2 lines

  Make trace and doctest play nice together (issue 1429818).  Will backport.
........
  r59139 | skip.montanaro | 2007-11-23 09:12:47 -0800 (Fri, 23 Nov 2007) | 1 line

  issue 1429818
........
  r59144 | facundo.batista | 2007-11-23 09:59:00 -0800 (Fri, 23 Nov 2007) | 10 lines


  Major change in the internal structure of the Decimal
  number: now it does not store the mantissa as a tuple
  of numbers, but as a string.

  This avoids a lot of conversions, and achieves a
  speedup of 40%. The API remains intact.

  Thanks Mark Dickinson.
........
  r59146 | facundo.batista | 2007-11-23 10:14:50 -0800 (Fri, 23 Nov 2007) | 3 lines


  Test cases from Cowlishaw, v2.57. All are pased cleanly.
........
  r59156 | christian.heimes | 2007-11-23 17:36:02 -0800 (Fri, 23 Nov 2007) | 2 lines

  Added filename to compiling struct based on Martin's suggestion.
  I'm wonder why I was trying to add the filename to the node all the time. The compiling struct is more obvious.
........
  r59158 | christian.heimes | 2007-11-23 17:53:59 -0800 (Fri, 23 Nov 2007) | 2 lines

  Backport of fixes from py3k branch
  svn merge -r59131:HEAD ../../py3k/PCbuild9/ .
........
  r59159 | skip.montanaro | 2007-11-23 20:29:08 -0800 (Fri, 23 Nov 2007) | 1 line

  revert change that breaks test_doctest (which I forgot to run - sorry)
........
  r59162 | skip.montanaro | 2007-11-23 20:31:15 -0800 (Fri, 23 Nov 2007) | 1 line

  revert
........
  r59164 | georg.brandl | 2007-11-24 03:31:46 -0800 (Sat, 24 Nov 2007) | 3 lines

  #1344: document that you need to open std{in,out,err} with PIPE if you want
  communicate() to work as described.
........
  r59165 | georg.brandl | 2007-11-24 03:39:13 -0800 (Sat, 24 Nov 2007) | 2 lines

  #1467: fix documentation for TestResult.add{Error,Failure}.
........
  r59166 | georg.brandl | 2007-11-24 03:42:14 -0800 (Sat, 24 Nov 2007) | 2 lines

  #1355: remove mention of PyXML from xml.dom docs.
........
  r59169 | amaury.forgeotdarc | 2007-11-24 05:20:22 -0800 (Sat, 24 Nov 2007) | 2 lines

  Warning "<> not supported in 3.x" should be enabled only when the -3 option is set.
........
  r59170 | amaury.forgeotdarc | 2007-11-24 05:44:17 -0800 (Sat, 24 Nov 2007) | 3 lines

  Issue #1445: Fix a SystemError when accessing the ``cell_contents``
  attribute of an empty cell object.  Now a ValueError is raised.
........
  r59172 | georg.brandl | 2007-11-24 05:56:09 -0800 (Sat, 24 Nov 2007) | 3 lines

  #1735632: add O_NOATIME constant to os module.
  Also document a few other O_ constants that were missing from documentation.
........
  r59173 | skip.montanaro | 2007-11-24 06:30:47 -0800 (Sat, 24 Nov 2007) | 1 line

  back in these go - thanks to Titus Brown for the fix
........
  r59176 | martin.v.loewis | 2007-11-24 10:33:40 -0800 (Sat, 24 Nov 2007) | 2 lines

  Bug #1494: Document that appendChild removes first.
........
  r59186 | guido.van.rossum | 2007-11-26 14:16:49 -0800 (Mon, 26 Nov 2007) | 2 lines

  A thread-less variant of brownian.py, submitted by Michele Simoniato.
........
2007-11-26 23:23:18 +00:00

215 lines
10 KiB
Text

------------------------------------------------------------------------
-- inexact.decTest -- decimal inexact and rounded edge cases --
-- Copyright (c) IBM Corporation, 1981, 2007. 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.57
extended: 1
precision: 9
rounding: half_up
maxExponent: 999
minexponent: -999
inx001 add 1 1 -> 2
inx002 add 123456789 0 -> 123456789
inx003 add 123456789 0.0 -> 123456789 Rounded
inx004 add 123456789 0.00 -> 123456789 Rounded
inx005 add 123456789 1 -> 123456790
inx006 add 123456789 0.1 -> 123456789 Inexact Rounded
inx007 add 123456789 0.01 -> 123456789 Inexact Rounded
inx008 add 123456789 0.001 -> 123456789 Inexact Rounded
inx009 add 123456789 0.000001 -> 123456789 Inexact Rounded
inx010 add 123456789 0.000000001 -> 123456789 Inexact Rounded
inx011 add 123456789 0.000000000001 -> 123456789 Inexact Rounded
inx012 add 123456789 0.9 -> 123456790 Inexact Rounded
inx013 add 123456789 0.09 -> 123456789 Inexact Rounded
inx014 add 123456789 0.009 -> 123456789 Inexact Rounded
inx015 add 123456789 0.000009 -> 123456789 Inexact Rounded
inx016 add 123456789 0.000000009 -> 123456789 Inexact Rounded
inx017 add 123456789 0.000000000009 -> 123456789 Inexact Rounded
inx021 add 1 -1 -> 0
inx022 add 123456789 -0 -> 123456789
inx023 add 123456789 -0.0 -> 123456789 Rounded
inx024 add 123456789 -0.00 -> 123456789 Rounded
inx025 add 123456789 -1 -> 123456788
inx026 add 123456789 -0.1 -> 123456789 Inexact Rounded
inx027 add 123456789 -0.01 -> 123456789 Inexact Rounded
inx028 add 123456789 -0.001 -> 123456789 Inexact Rounded
inx029 add 123456789 -0.000001 -> 123456789 Inexact Rounded
inx030 add 123456789 -0.000000001 -> 123456789 Inexact Rounded
inx031 add 123456789 -0.000000000001 -> 123456789 Inexact Rounded
inx032 add 123456789 -0.9 -> 123456788 Inexact Rounded
inx033 add 123456789 -0.09 -> 123456789 Inexact Rounded
inx034 add 123456789 -0.009 -> 123456789 Inexact Rounded
inx035 add 123456789 -0.000009 -> 123456789 Inexact Rounded
inx036 add 123456789 -0.000000009 -> 123456789 Inexact Rounded
inx037 add 123456789 -0.000000000009 -> 123456789 Inexact Rounded
inx042 add 0 123456789 -> 123456789
inx043 add 0.0 123456789 -> 123456789 Rounded
inx044 add 0.00 123456789 -> 123456789 Rounded
inx045 add 1 123456789 -> 123456790
inx046 add 0.1 123456789 -> 123456789 Inexact Rounded
inx047 add 0.01 123456789 -> 123456789 Inexact Rounded
inx048 add 0.001 123456789 -> 123456789 Inexact Rounded
inx049 add 0.000001 123456789 -> 123456789 Inexact Rounded
inx050 add 0.000000001 123456789 -> 123456789 Inexact Rounded
inx051 add 0.000000000001 123456789 -> 123456789 Inexact Rounded
inx052 add 0.9 123456789 -> 123456790 Inexact Rounded
inx053 add 0.09 123456789 -> 123456789 Inexact Rounded
inx054 add 0.009 123456789 -> 123456789 Inexact Rounded
inx055 add 0.000009 123456789 -> 123456789 Inexact Rounded
inx056 add 0.000000009 123456789 -> 123456789 Inexact Rounded
inx057 add 0.000000000009 123456789 -> 123456789 Inexact Rounded
inx062 add -0 123456789 -> 123456789
inx063 add -0.0 123456789 -> 123456789 Rounded
inx064 add -0.00 123456789 -> 123456789 Rounded
inx065 add -1 123456789 -> 123456788
inx066 add -0.1 123456789 -> 123456789 Inexact Rounded
inx067 add -0.01 123456789 -> 123456789 Inexact Rounded
inx068 add -0.001 123456789 -> 123456789 Inexact Rounded
inx069 add -0.000001 123456789 -> 123456789 Inexact Rounded
inx070 add -0.000000001 123456789 -> 123456789 Inexact Rounded
inx071 add -0.000000000001 123456789 -> 123456789 Inexact Rounded
inx072 add -0.9 123456789 -> 123456788 Inexact Rounded
inx073 add -0.09 123456789 -> 123456789 Inexact Rounded
inx074 add -0.009 123456789 -> 123456789 Inexact Rounded
inx075 add -0.000009 123456789 -> 123456789 Inexact Rounded
inx076 add -0.000000009 123456789 -> 123456789 Inexact Rounded
inx077 add -0.000000000009 123456789 -> 123456789 Inexact Rounded
-- some boundaries
inx081 add 999999999 0 -> 999999999
inx082 add 0.999999999 0.000000000 -> 0.999999999
inx083 add 999999999 1 -> 1.00000000E+9 Rounded
inx084 add 0.999999999 0.000000001 -> 1.00000000 Rounded
inx085 add 999999999 2 -> 1.00000000E+9 Inexact Rounded
inx086 add 0.999999999 0.000000002 -> 1.00000000 Inexact Rounded
inx087 add 999999999 3 -> 1.00000000E+9 Inexact Rounded
inx089 add 0.999999999 0.000000003 -> 1.00000000 Inexact Rounded
-- minus, plus, and subtract all assumed to work like add.
-- multiply
precision: 8
inx101 multiply 1000 1000 -> 1000000
inx102 multiply 9000 9000 -> 81000000
inx103 multiply 9999 9999 -> 99980001
inx104 multiply 1000 10000 -> 10000000
inx105 multiply 10000 10000 -> 1.0000000E+8 Rounded
inx106 multiply 10001 10000 -> 1.0001000E+8 Rounded
inx107 multiply 10001 10001 -> 1.0002000E+8 Inexact Rounded
inx108 multiply 10101 10001 -> 1.0102010E+8 Inexact Rounded
inx109 multiply 10001 10101 -> 1.0102010E+8 Inexact Rounded
-- divide
precision: 4
inx201 divide 1000 1000 -> 1
inx202 divide 1000 1 -> 1000
inx203 divide 1000 2 -> 500
inx204 divide 1000 3 -> 333.3 Inexact Rounded
inx205 divide 1000 4 -> 250
inx206 divide 1000 5 -> 200
inx207 divide 1000 6 -> 166.7 Inexact Rounded
inx208 divide 1000 7 -> 142.9 Inexact Rounded
inx209 divide 1000 8 -> 125
inx210 divide 1000 9 -> 111.1 Inexact Rounded
inx211 divide 1000 10 -> 100
inx220 divide 1 1 -> 1
inx221 divide 1 2 -> 0.5
inx222 divide 1 4 -> 0.25
inx223 divide 1 8 -> 0.125
inx224 divide 1 16 -> 0.0625
inx225 divide 1 32 -> 0.03125
inx226 divide 1 64 -> 0.01563 Inexact Rounded
inx227 divide 1 128 -> 0.007813 Inexact Rounded
precision: 5
inx230 divide 1 1 -> 1
inx231 divide 1 2 -> 0.5
inx232 divide 1 4 -> 0.25
inx233 divide 1 8 -> 0.125
inx234 divide 1 16 -> 0.0625
inx235 divide 1 32 -> 0.03125
inx236 divide 1 64 -> 0.015625
inx237 divide 1 128 -> 0.0078125
precision: 3
inx240 divide 1 1 -> 1
inx241 divide 1 2 -> 0.5
inx242 divide 1 4 -> 0.25
inx243 divide 1 8 -> 0.125
inx244 divide 1 16 -> 0.0625
inx245 divide 1 32 -> 0.0313 Inexact Rounded
inx246 divide 1 64 -> 0.0156 Inexact Rounded
inx247 divide 1 128 -> 0.00781 Inexact Rounded
precision: 2
inx250 divide 1 1 -> 1
inx251 divide 1 2 -> 0.5
inx252 divide 1 4 -> 0.25
inx253 divide 1 8 -> 0.13 Inexact Rounded
inx254 divide 1 16 -> 0.063 Inexact Rounded
inx255 divide 1 32 -> 0.031 Inexact Rounded
inx256 divide 1 64 -> 0.016 Inexact Rounded
inx257 divide 1 128 -> 0.0078 Inexact Rounded
precision: 1
inx260 divide 1 1 -> 1
inx261 divide 1 2 -> 0.5
inx262 divide 1 4 -> 0.3 Inexact Rounded
inx263 divide 1 8 -> 0.1 Inexact Rounded
inx264 divide 1 16 -> 0.06 Inexact Rounded
inx265 divide 1 32 -> 0.03 Inexact Rounded
inx266 divide 1 64 -> 0.02 Inexact Rounded
inx267 divide 1 128 -> 0.008 Inexact Rounded
-- power
precision: 4
inx301 power 0.5 2 -> 0.25
inx302 power 0.5 4 -> 0.0625
inx303 power 0.5 8 -> 0.003906 Inexact Rounded
inx304 power 0.5 16 -> 0.00001526 Inexact Rounded
inx305 power 0.5 32 -> 2.328E-10 Inexact Rounded
-- compare, divideInteger, and remainder are always exact
-- rescale
precision: 4
inx401 rescale 0 0 -> 0
inx402 rescale 1 0 -> 1
inx403 rescale 0.1 +2 -> 0E+2 Inexact Rounded
inx404 rescale 0.1 +1 -> 0E+1 Inexact Rounded
inx405 rescale 0.1 0 -> 0 Inexact Rounded
inx406 rescale 0.1 -1 -> 0.1
inx407 rescale 0.1 -2 -> 0.10
-- long operands cause rounding too
precision: 9
inx801 plus 123456789 -> 123456789
inx802 plus 1234567890 -> 1.23456789E+9 Rounded
inx803 plus 1234567891 -> 1.23456789E+9 Inexact Rounded
inx804 plus 1234567892 -> 1.23456789E+9 Inexact Rounded
inx805 plus 1234567899 -> 1.23456790E+9 Inexact Rounded
inx806 plus 1234567900 -> 1.23456790E+9 Rounded