github.com/cockroachdb/apd/v3@v3.2.0/testdata/abs.decTest (about)

     1  ------------------------------------------------------------------------
     2  -- abs.decTest -- decimal absolute value                              --
     3  -- Copyright (c) Mike Cowlishaw,  1981, 2010.  All rights reserved.   --
     4  -- Parts copyright (c) IBM Corporation, 1981, 2008.                   --
     5  ------------------------------------------------------------------------
     6  -- Please see the document "General Decimal Arithmetic Testcases"     --
     7  -- at http://speleotrove.com/decimal for the description of           --
     8  -- these testcases.                                                   --
     9  --                                                                    --
    10  -- These testcases are experimental ('beta' versions), and they       --
    11  -- may contain errors.  They are offered on an as-is basis.  In       --
    12  -- particular, achieving the same results as the tests here is not    --
    13  -- a guarantee that an implementation complies with any Standard      --
    14  -- or specification.  The tests are not exhaustive.                   --
    15  --                                                                    --
    16  -- Please send comments, suggestions, and corrections to the author:  --
    17  --   Mike Cowlishaw, mfc@speleotrove.com                              --
    18  ------------------------------------------------------------------------
    19  version: 2.62
    20  
    21  -- This set of tests primarily tests the existence of the operator.
    22  -- Additon, subtraction, rounding, and more overflows are tested
    23  -- elsewhere.
    24  
    25  precision:   9
    26  rounding:    half_up
    27  maxExponent: 384
    28  minexponent: -383
    29  extended: 1
    30  
    31  absx001 abs '1'      -> '1'
    32  absx002 abs '-1'     -> '1'
    33  absx003 abs '1.00'   -> '1.00'
    34  absx004 abs '-1.00'  -> '1.00'
    35  absx005 abs '0'      -> '0'
    36  absx006 abs '0.00'   -> '0.00'
    37  absx007 abs '00.0'   -> '0.0'
    38  absx008 abs '00.00'  -> '0.00'
    39  absx009 abs '00'     -> '0'
    40  
    41  absx010 abs '-2'     -> '2'
    42  absx011 abs '2'      -> '2'
    43  absx012 abs '-2.00'  -> '2.00'
    44  absx013 abs '2.00'   -> '2.00'
    45  absx014 abs '-0'     -> '0'
    46  absx015 abs '-0.00'  -> '0.00'
    47  absx016 abs '-00.0'  -> '0.0'
    48  absx017 abs '-00.00' -> '0.00'
    49  absx018 abs '-00'    -> '0'
    50  
    51  absx020 abs '-2000000' -> '2000000'
    52  absx021 abs '2000000'  -> '2000000'
    53  precision: 7
    54  absx022 abs '-2000000' -> '2000000'
    55  absx023 abs '2000000'  -> '2000000'
    56  precision: 6
    57  absx024 abs '-2000000' -> '2.00000E+6' Rounded
    58  absx025 abs '2000000'  -> '2.00000E+6' Rounded
    59  precision: 3
    60  absx026 abs '-2000000' -> '2.00E+6' Rounded
    61  absx027 abs '2000000'  -> '2.00E+6' Rounded
    62  
    63  absx030 abs '+0.1'            -> '0.1'
    64  absx031 abs '-0.1'            -> '0.1'
    65  absx032 abs '+0.01'           -> '0.01'
    66  absx033 abs '-0.01'           -> '0.01'
    67  absx034 abs '+0.001'          -> '0.001'
    68  absx035 abs '-0.001'          -> '0.001'
    69  absx036 abs '+0.000001'       -> '0.000001'
    70  absx037 abs '-0.000001'       -> '0.000001'
    71  absx038 abs '+0.000000000001' -> '1E-12'
    72  absx039 abs '-0.000000000001' -> '1E-12'
    73  
    74  -- examples from decArith
    75  precision: 9
    76  absx040 abs '2.1'     ->  '2.1'
    77  absx041 abs '-100'    ->  '100'
    78  absx042 abs '101.5'   ->  '101.5'
    79  absx043 abs '-101.5'  ->  '101.5'
    80  
    81  -- more fixed, potential LHS swaps/overlays if done by subtract 0
    82  precision: 9
    83  absx060 abs '-56267E-10'  -> '0.0000056267'
    84  absx061 abs '-56267E-5'   -> '0.56267'
    85  absx062 abs '-56267E-2'   -> '562.67'
    86  absx063 abs '-56267E-1'   -> '5626.7'
    87  absx065 abs '-56267E-0'   -> '56267'
    88  
    89  -- overflow tests
    90  maxexponent: 999999999
    91  minexponent: -999999999
    92  precision: 3
    93  absx120 abs 9.999E+999999999 -> Infinity Inexact Overflow Rounded
    94  
    95  -- subnormals and underflow
    96  precision: 3
    97  maxexponent: 999
    98  minexponent: -999
    99  absx210 abs  1.00E-999        ->   1.00E-999
   100  absx211 abs  0.1E-999         ->   1E-1000   Subnormal
   101  absx212 abs  0.10E-999        ->   1.0E-1000 Subnormal
   102  absx213 abs  0.100E-999       ->   1.0E-1000 Subnormal Rounded
   103  absx214 abs  0.01E-999        ->   1E-1001   Subnormal
   104  -- next is rounded to Emin
   105  absx215 abs  0.999E-999       ->   1.00E-999 Inexact Rounded Subnormal Underflow
   106  absx216 abs  0.099E-999       ->   1.0E-1000 Inexact Rounded Subnormal Underflow
   107  absx217 abs  0.009E-999       ->   1E-1001   Inexact Rounded Subnormal Underflow
   108  absx218 abs  0.001E-999       ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped
   109  absx219 abs  0.0009E-999      ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped
   110  absx220 abs  0.0001E-999      ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped
   111  
   112  absx230 abs -1.00E-999        ->   1.00E-999
   113  absx231 abs -0.1E-999         ->   1E-1000   Subnormal
   114  absx232 abs -0.10E-999        ->   1.0E-1000 Subnormal
   115  absx233 abs -0.100E-999       ->   1.0E-1000 Subnormal Rounded
   116  absx234 abs -0.01E-999        ->   1E-1001   Subnormal
   117  -- next is rounded to Emin
   118  absx235 abs -0.999E-999       ->   1.00E-999 Inexact Rounded Subnormal Underflow
   119  absx236 abs -0.099E-999       ->   1.0E-1000 Inexact Rounded Subnormal Underflow
   120  absx237 abs -0.009E-999       ->   1E-1001   Inexact Rounded Subnormal Underflow
   121  absx238 abs -0.001E-999       ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped
   122  absx239 abs -0.0009E-999      ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped
   123  absx240 abs -0.0001E-999      ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped
   124  
   125  -- long operand tests
   126  maxexponent: 999
   127  minexponent: -999
   128  precision: 9
   129  absx301 abs 12345678000  -> 1.23456780E+10 Rounded
   130  absx302 abs 1234567800   -> 1.23456780E+9 Rounded
   131  absx303 abs 1234567890   -> 1.23456789E+9 Rounded
   132  absx304 abs 1234567891   -> 1.23456789E+9 Inexact Rounded
   133  absx305 abs 12345678901  -> 1.23456789E+10 Inexact Rounded
   134  absx306 abs 1234567896   -> 1.23456790E+9 Inexact Rounded
   135  
   136  precision: 15
   137  absx321 abs 12345678000  -> 12345678000
   138  absx322 abs 1234567800   -> 1234567800
   139  absx323 abs 1234567890   -> 1234567890
   140  absx324 abs 1234567891   -> 1234567891
   141  absx325 abs 12345678901  -> 12345678901
   142  absx326 abs 1234567896   -> 1234567896
   143  
   144  
   145  -- Specials
   146  precision:   9
   147  
   148  -- specials
   149  absx520 abs 'Inf'    -> 'Infinity'
   150  absx521 abs '-Inf'   -> 'Infinity'
   151  absx522 abs   NaN    ->  NaN
   152  absx523 abs  sNaN    ->  NaN   Invalid_operation
   153  absx524 abs   NaN22  ->  NaN22
   154  absx525 abs  sNaN33  ->  NaN33 Invalid_operation
   155  absx526 abs  -NaN22  -> -NaN22
   156  absx527 abs -sNaN33  -> -NaN33 Invalid_operation
   157  
   158  -- Null tests
   159  absx900 abs  # -> NaN Invalid_operation
   160