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

     1  ------------------------------------------------------------------------
     2  -- compare.decTest -- decimal comparison that allows quiet NaNs       --
     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  -- Note that we cannot assume add/subtract tests cover paths adequately,
    22  -- here, because the code might be quite different (comparison cannot
    23  -- overflow or underflow, so actual subtractions are not necessary).
    24  
    25  extended: 1
    26  
    27  precision:   9
    28  rounding:    half_up
    29  maxExponent: 999
    30  minexponent: -999
    31  
    32  -- sanity checks
    33  comx001 compare  -2  -2  -> 0
    34  comx002 compare  -2  -1  -> -1
    35  comx003 compare  -2   0  -> -1
    36  comx004 compare  -2   1  -> -1
    37  comx005 compare  -2   2  -> -1
    38  comx006 compare  -1  -2  -> 1
    39  comx007 compare  -1  -1  -> 0
    40  comx008 compare  -1   0  -> -1
    41  comx009 compare  -1   1  -> -1
    42  comx010 compare  -1   2  -> -1
    43  comx011 compare   0  -2  -> 1
    44  comx012 compare   0  -1  -> 1
    45  comx013 compare   0   0  -> 0
    46  comx014 compare   0   1  -> -1
    47  comx015 compare   0   2  -> -1
    48  comx016 compare   1  -2  -> 1
    49  comx017 compare   1  -1  -> 1
    50  comx018 compare   1   0  -> 1
    51  comx019 compare   1   1  -> 0
    52  comx020 compare   1   2  -> -1
    53  comx021 compare   2  -2  -> 1
    54  comx022 compare   2  -1  -> 1
    55  comx023 compare   2   0  -> 1
    56  comx025 compare   2   1  -> 1
    57  comx026 compare   2   2  -> 0
    58  
    59  comx031 compare  -20  -20  -> 0
    60  comx032 compare  -20  -10  -> -1
    61  comx033 compare  -20   00  -> -1
    62  comx034 compare  -20   10  -> -1
    63  comx035 compare  -20   20  -> -1
    64  comx036 compare  -10  -20  -> 1
    65  comx037 compare  -10  -10  -> 0
    66  comx038 compare  -10   00  -> -1
    67  comx039 compare  -10   10  -> -1
    68  comx040 compare  -10   20  -> -1
    69  comx041 compare   00  -20  -> 1
    70  comx042 compare   00  -10  -> 1
    71  comx043 compare   00   00  -> 0
    72  comx044 compare   00   10  -> -1
    73  comx045 compare   00   20  -> -1
    74  comx046 compare   10  -20  -> 1
    75  comx047 compare   10  -10  -> 1
    76  comx048 compare   10   00  -> 1
    77  comx049 compare   10   10  -> 0
    78  comx050 compare   10   20  -> -1
    79  comx051 compare   20  -20  -> 1
    80  comx052 compare   20  -10  -> 1
    81  comx053 compare   20   00  -> 1
    82  comx055 compare   20   10  -> 1
    83  comx056 compare   20   20  -> 0
    84  
    85  comx061 compare  -2.0  -2.0  -> 0
    86  comx062 compare  -2.0  -1.0  -> -1
    87  comx063 compare  -2.0   0.0  -> -1
    88  comx064 compare  -2.0   1.0  -> -1
    89  comx065 compare  -2.0   2.0  -> -1
    90  comx066 compare  -1.0  -2.0  -> 1
    91  comx067 compare  -1.0  -1.0  -> 0
    92  comx068 compare  -1.0   0.0  -> -1
    93  comx069 compare  -1.0   1.0  -> -1
    94  comx070 compare  -1.0   2.0  -> -1
    95  comx071 compare   0.0  -2.0  -> 1
    96  comx072 compare   0.0  -1.0  -> 1
    97  comx073 compare   0.0   0.0  -> 0
    98  comx074 compare   0.0   1.0  -> -1
    99  comx075 compare   0.0   2.0  -> -1
   100  comx076 compare   1.0  -2.0  -> 1
   101  comx077 compare   1.0  -1.0  -> 1
   102  comx078 compare   1.0   0.0  -> 1
   103  comx079 compare   1.0   1.0  -> 0
   104  comx080 compare   1.0   2.0  -> -1
   105  comx081 compare   2.0  -2.0  -> 1
   106  comx082 compare   2.0  -1.0  -> 1
   107  comx083 compare   2.0   0.0  -> 1
   108  comx085 compare   2.0   1.0  -> 1
   109  comx086 compare   2.0   2.0  -> 0
   110  
   111  -- now some cases which might overflow if subtract were used
   112  maxexponent: 999999999
   113  minexponent: -999999999
   114  comx095 compare  9.99999999E+999999999 9.99999999E+999999999  -> 0
   115  comx096 compare -9.99999999E+999999999 9.99999999E+999999999  -> -1
   116  comx097 compare  9.99999999E+999999999 -9.99999999E+999999999 -> 1
   117  comx098 compare -9.99999999E+999999999 -9.99999999E+999999999 -> 0
   118  
   119  -- some differing length/exponent cases
   120  comx100 compare   7.0    7.0    -> 0
   121  comx101 compare   7.0    7      -> 0
   122  comx102 compare   7      7.0    -> 0
   123  comx103 compare   7E+0   7.0    -> 0
   124  comx104 compare   70E-1  7.0    -> 0
   125  comx105 compare   0.7E+1 7      -> 0
   126  comx106 compare   70E-1  7      -> 0
   127  comx107 compare   7.0    7E+0   -> 0
   128  comx108 compare   7.0    70E-1  -> 0
   129  comx109 compare   7      0.7E+1 -> 0
   130  comx110 compare   7      70E-1  -> 0
   131  
   132  comx120 compare   8.0    7.0    -> 1
   133  comx121 compare   8.0    7      -> 1
   134  comx122 compare   8      7.0    -> 1
   135  comx123 compare   8E+0   7.0    -> 1
   136  comx124 compare   80E-1  7.0    -> 1
   137  comx125 compare   0.8E+1 7      -> 1
   138  comx126 compare   80E-1  7      -> 1
   139  comx127 compare   8.0    7E+0   -> 1
   140  comx128 compare   8.0    70E-1  -> 1
   141  comx129 compare   8      0.7E+1  -> 1
   142  comx130 compare   8      70E-1  -> 1
   143  
   144  comx140 compare   8.0    9.0    -> -1
   145  comx141 compare   8.0    9      -> -1
   146  comx142 compare   8      9.0    -> -1
   147  comx143 compare   8E+0   9.0    -> -1
   148  comx144 compare   80E-1  9.0    -> -1
   149  comx145 compare   0.8E+1 9      -> -1
   150  comx146 compare   80E-1  9      -> -1
   151  comx147 compare   8.0    9E+0   -> -1
   152  comx148 compare   8.0    90E-1  -> -1
   153  comx149 compare   8      0.9E+1 -> -1
   154  comx150 compare   8      90E-1  -> -1
   155  
   156  -- and again, with sign changes -+ ..
   157  comx200 compare  -7.0    7.0    -> -1
   158  comx201 compare  -7.0    7      -> -1
   159  comx202 compare  -7      7.0    -> -1
   160  comx203 compare  -7E+0   7.0    -> -1
   161  comx204 compare  -70E-1  7.0    -> -1
   162  comx205 compare  -0.7E+1 7      -> -1
   163  comx206 compare  -70E-1  7      -> -1
   164  comx207 compare  -7.0    7E+0   -> -1
   165  comx208 compare  -7.0    70E-1  -> -1
   166  comx209 compare  -7      0.7E+1 -> -1
   167  comx210 compare  -7      70E-1  -> -1
   168  
   169  comx220 compare  -8.0    7.0    -> -1
   170  comx221 compare  -8.0    7      -> -1
   171  comx222 compare  -8      7.0    -> -1
   172  comx223 compare  -8E+0   7.0    -> -1
   173  comx224 compare  -80E-1  7.0    -> -1
   174  comx225 compare  -0.8E+1 7      -> -1
   175  comx226 compare  -80E-1  7      -> -1
   176  comx227 compare  -8.0    7E+0   -> -1
   177  comx228 compare  -8.0    70E-1  -> -1
   178  comx229 compare  -8      0.7E+1 -> -1
   179  comx230 compare  -8      70E-1  -> -1
   180  
   181  comx240 compare  -8.0    9.0    -> -1
   182  comx241 compare  -8.0    9      -> -1
   183  comx242 compare  -8      9.0    -> -1
   184  comx243 compare  -8E+0   9.0    -> -1
   185  comx244 compare  -80E-1  9.0    -> -1
   186  comx245 compare  -0.8E+1 9      -> -1
   187  comx246 compare  -80E-1  9      -> -1
   188  comx247 compare  -8.0    9E+0   -> -1
   189  comx248 compare  -8.0    90E-1  -> -1
   190  comx249 compare  -8      0.9E+1 -> -1
   191  comx250 compare  -8      90E-1  -> -1
   192  
   193  -- and again, with sign changes +- ..
   194  comx300 compare   7.0    -7.0    -> 1
   195  comx301 compare   7.0    -7      -> 1
   196  comx302 compare   7      -7.0    -> 1
   197  comx303 compare   7E+0   -7.0    -> 1
   198  comx304 compare   70E-1  -7.0    -> 1
   199  comx305 compare   .7E+1  -7      -> 1
   200  comx306 compare   70E-1  -7      -> 1
   201  comx307 compare   7.0    -7E+0   -> 1
   202  comx308 compare   7.0    -70E-1  -> 1
   203  comx309 compare   7      -.7E+1  -> 1
   204  comx310 compare   7      -70E-1  -> 1
   205  
   206  comx320 compare   8.0    -7.0    -> 1
   207  comx321 compare   8.0    -7      -> 1
   208  comx322 compare   8      -7.0    -> 1
   209  comx323 compare   8E+0   -7.0    -> 1
   210  comx324 compare   80E-1  -7.0    -> 1
   211  comx325 compare   .8E+1  -7      -> 1
   212  comx326 compare   80E-1  -7      -> 1
   213  comx327 compare   8.0    -7E+0   -> 1
   214  comx328 compare   8.0    -70E-1  -> 1
   215  comx329 compare   8      -.7E+1  -> 1
   216  comx330 compare   8      -70E-1  -> 1
   217  
   218  comx340 compare   8.0    -9.0    -> 1
   219  comx341 compare   8.0    -9      -> 1
   220  comx342 compare   8      -9.0    -> 1
   221  comx343 compare   8E+0   -9.0    -> 1
   222  comx344 compare   80E-1  -9.0    -> 1
   223  comx345 compare   .8E+1  -9      -> 1
   224  comx346 compare   80E-1  -9      -> 1
   225  comx347 compare   8.0    -9E+0   -> 1
   226  comx348 compare   8.0    -90E-1  -> 1
   227  comx349 compare   8      -.9E+1  -> 1
   228  comx350 compare   8      -90E-1  -> 1
   229  
   230  -- and again, with sign changes -- ..
   231  comx400 compare   -7.0    -7.0    -> 0
   232  comx401 compare   -7.0    -7      -> 0
   233  comx402 compare   -7      -7.0    -> 0
   234  comx403 compare   -7E+0   -7.0    -> 0
   235  comx404 compare   -70E-1  -7.0    -> 0
   236  comx405 compare   -.7E+1  -7      -> 0
   237  comx406 compare   -70E-1  -7      -> 0
   238  comx407 compare   -7.0    -7E+0   -> 0
   239  comx408 compare   -7.0    -70E-1  -> 0
   240  comx409 compare   -7      -.7E+1  -> 0
   241  comx410 compare   -7      -70E-1  -> 0
   242  
   243  comx420 compare   -8.0    -7.0    -> -1
   244  comx421 compare   -8.0    -7      -> -1
   245  comx422 compare   -8      -7.0    -> -1
   246  comx423 compare   -8E+0   -7.0    -> -1
   247  comx424 compare   -80E-1  -7.0    -> -1
   248  comx425 compare   -.8E+1  -7      -> -1
   249  comx426 compare   -80E-1  -7      -> -1
   250  comx427 compare   -8.0    -7E+0   -> -1
   251  comx428 compare   -8.0    -70E-1  -> -1
   252  comx429 compare   -8      -.7E+1  -> -1
   253  comx430 compare   -8      -70E-1  -> -1
   254  
   255  comx440 compare   -8.0    -9.0    -> 1
   256  comx441 compare   -8.0    -9      -> 1
   257  comx442 compare   -8      -9.0    -> 1
   258  comx443 compare   -8E+0   -9.0    -> 1
   259  comx444 compare   -80E-1  -9.0    -> 1
   260  comx445 compare   -.8E+1  -9      -> 1
   261  comx446 compare   -80E-1  -9      -> 1
   262  comx447 compare   -8.0    -9E+0   -> 1
   263  comx448 compare   -8.0    -90E-1  -> 1
   264  comx449 compare   -8      -.9E+1  -> 1
   265  comx450 compare   -8      -90E-1  -> 1
   266  
   267  -- misalignment traps for little-endian
   268  comx451 compare      1.0       0.1  -> 1
   269  comx452 compare      0.1       1.0  -> -1
   270  comx453 compare     10.0       0.1  -> 1
   271  comx454 compare      0.1      10.0  -> -1
   272  comx455 compare      100       1.0  -> 1
   273  comx456 compare      1.0       100  -> -1
   274  comx457 compare     1000      10.0  -> 1
   275  comx458 compare     10.0      1000  -> -1
   276  comx459 compare    10000     100.0  -> 1
   277  comx460 compare    100.0     10000  -> -1
   278  comx461 compare   100000    1000.0  -> 1
   279  comx462 compare   1000.0    100000  -> -1
   280  comx463 compare  1000000   10000.0  -> 1
   281  comx464 compare  10000.0   1000000  -> -1
   282  
   283  -- testcases that subtract to lots of zeros at boundaries [pgr]
   284  precision: 40
   285  comx470 compare 123.4560000000000000E789 123.456E789 -> 0
   286  comx471 compare 123.456000000000000E-89 123.456E-89 -> 0
   287  comx472 compare 123.45600000000000E789 123.456E789 -> 0
   288  comx473 compare 123.4560000000000E-89 123.456E-89 -> 0
   289  comx474 compare 123.456000000000E789 123.456E789 -> 0
   290  comx475 compare 123.45600000000E-89 123.456E-89 -> 0
   291  comx476 compare 123.4560000000E789 123.456E789 -> 0
   292  comx477 compare 123.456000000E-89 123.456E-89 -> 0
   293  comx478 compare 123.45600000E789 123.456E789 -> 0
   294  comx479 compare 123.4560000E-89 123.456E-89 -> 0
   295  comx480 compare 123.456000E789 123.456E789 -> 0
   296  comx481 compare 123.45600E-89 123.456E-89 -> 0
   297  comx482 compare 123.4560E789 123.456E789 -> 0
   298  comx483 compare 123.456E-89 123.456E-89 -> 0
   299  comx484 compare 123.456E-89 123.4560000000000000E-89 -> 0
   300  comx485 compare 123.456E789 123.456000000000000E789 -> 0
   301  comx486 compare 123.456E-89 123.45600000000000E-89 -> 0
   302  comx487 compare 123.456E789 123.4560000000000E789 -> 0
   303  comx488 compare 123.456E-89 123.456000000000E-89 -> 0
   304  comx489 compare 123.456E789 123.45600000000E789 -> 0
   305  comx490 compare 123.456E-89 123.4560000000E-89 -> 0
   306  comx491 compare 123.456E789 123.456000000E789 -> 0
   307  comx492 compare 123.456E-89 123.45600000E-89 -> 0
   308  comx493 compare 123.456E789 123.4560000E789 -> 0
   309  comx494 compare 123.456E-89 123.456000E-89 -> 0
   310  comx495 compare 123.456E789 123.45600E789 -> 0
   311  comx496 compare 123.456E-89 123.4560E-89 -> 0
   312  comx497 compare 123.456E789 123.456E789 -> 0
   313  
   314  -- wide-ranging, around precision; signs equal
   315  precision: 9
   316  comx500 compare    1     1E-15    -> 1
   317  comx501 compare    1     1E-14    -> 1
   318  comx502 compare    1     1E-13    -> 1
   319  comx503 compare    1     1E-12    -> 1
   320  comx504 compare    1     1E-11    -> 1
   321  comx505 compare    1     1E-10    -> 1
   322  comx506 compare    1     1E-9     -> 1
   323  comx507 compare    1     1E-8     -> 1
   324  comx508 compare    1     1E-7     -> 1
   325  comx509 compare    1     1E-6     -> 1
   326  comx510 compare    1     1E-5     -> 1
   327  comx511 compare    1     1E-4     -> 1
   328  comx512 compare    1     1E-3     -> 1
   329  comx513 compare    1     1E-2     -> 1
   330  comx514 compare    1     1E-1     -> 1
   331  comx515 compare    1     1E-0     -> 0
   332  comx516 compare    1     1E+1     -> -1
   333  comx517 compare    1     1E+2     -> -1
   334  comx518 compare    1     1E+3     -> -1
   335  comx519 compare    1     1E+4     -> -1
   336  comx521 compare    1     1E+5     -> -1
   337  comx522 compare    1     1E+6     -> -1
   338  comx523 compare    1     1E+7     -> -1
   339  comx524 compare    1     1E+8     -> -1
   340  comx525 compare    1     1E+9     -> -1
   341  comx526 compare    1     1E+10    -> -1
   342  comx527 compare    1     1E+11    -> -1
   343  comx528 compare    1     1E+12    -> -1
   344  comx529 compare    1     1E+13    -> -1
   345  comx530 compare    1     1E+14    -> -1
   346  comx531 compare    1     1E+15    -> -1
   347  -- LR swap
   348  comx540 compare    1E-15  1       -> -1
   349  comx541 compare    1E-14  1       -> -1
   350  comx542 compare    1E-13  1       -> -1
   351  comx543 compare    1E-12  1       -> -1
   352  comx544 compare    1E-11  1       -> -1
   353  comx545 compare    1E-10  1       -> -1
   354  comx546 compare    1E-9   1       -> -1
   355  comx547 compare    1E-8   1       -> -1
   356  comx548 compare    1E-7   1       -> -1
   357  comx549 compare    1E-6   1       -> -1
   358  comx550 compare    1E-5   1       -> -1
   359  comx551 compare    1E-4   1       -> -1
   360  comx552 compare    1E-3   1       -> -1
   361  comx553 compare    1E-2   1       -> -1
   362  comx554 compare    1E-1   1       -> -1
   363  comx555 compare    1E-0   1       ->  0
   364  comx556 compare    1E+1   1       ->  1
   365  comx557 compare    1E+2   1       ->  1
   366  comx558 compare    1E+3   1       ->  1
   367  comx559 compare    1E+4   1       ->  1
   368  comx561 compare    1E+5   1       ->  1
   369  comx562 compare    1E+6   1       ->  1
   370  comx563 compare    1E+7   1       ->  1
   371  comx564 compare    1E+8   1       ->  1
   372  comx565 compare    1E+9   1       ->  1
   373  comx566 compare    1E+10  1       ->  1
   374  comx567 compare    1E+11  1       ->  1
   375  comx568 compare    1E+12  1       ->  1
   376  comx569 compare    1E+13  1       ->  1
   377  comx570 compare    1E+14  1       ->  1
   378  comx571 compare    1E+15  1       ->  1
   379  -- similar with a useful coefficient, one side only
   380  comx580 compare  0.000000987654321     1E-15    -> 1
   381  comx581 compare  0.000000987654321     1E-14    -> 1
   382  comx582 compare  0.000000987654321     1E-13    -> 1
   383  comx583 compare  0.000000987654321     1E-12    -> 1
   384  comx584 compare  0.000000987654321     1E-11    -> 1
   385  comx585 compare  0.000000987654321     1E-10    -> 1
   386  comx586 compare  0.000000987654321     1E-9     -> 1
   387  comx587 compare  0.000000987654321     1E-8     -> 1
   388  comx588 compare  0.000000987654321     1E-7     -> 1
   389  comx589 compare  0.000000987654321     1E-6     -> -1
   390  comx590 compare  0.000000987654321     1E-5     -> -1
   391  comx591 compare  0.000000987654321     1E-4     -> -1
   392  comx592 compare  0.000000987654321     1E-3     -> -1
   393  comx593 compare  0.000000987654321     1E-2     -> -1
   394  comx594 compare  0.000000987654321     1E-1     -> -1
   395  comx595 compare  0.000000987654321     1E-0     -> -1
   396  comx596 compare  0.000000987654321     1E+1     -> -1
   397  comx597 compare  0.000000987654321     1E+2     -> -1
   398  comx598 compare  0.000000987654321     1E+3     -> -1
   399  comx599 compare  0.000000987654321     1E+4     -> -1
   400  
   401  -- check some unit-y traps
   402  precision: 20
   403  comx600 compare   12            12.2345 -> -1
   404  comx601 compare   12.0          12.2345 -> -1
   405  comx602 compare   12.00         12.2345 -> -1
   406  comx603 compare   12.000        12.2345 -> -1
   407  comx604 compare   12.0000       12.2345 -> -1
   408  comx605 compare   12.00000      12.2345 -> -1
   409  comx606 compare   12.000000     12.2345 -> -1
   410  comx607 compare   12.0000000    12.2345 -> -1
   411  comx608 compare   12.00000000   12.2345 -> -1
   412  comx609 compare   12.000000000  12.2345 -> -1
   413  comx610 compare   12.1234 12            ->  1
   414  comx611 compare   12.1234 12.0          ->  1
   415  comx612 compare   12.1234 12.00         ->  1
   416  comx613 compare   12.1234 12.000        ->  1
   417  comx614 compare   12.1234 12.0000       ->  1
   418  comx615 compare   12.1234 12.00000      ->  1
   419  comx616 compare   12.1234 12.000000     ->  1
   420  comx617 compare   12.1234 12.0000000    ->  1
   421  comx618 compare   12.1234 12.00000000   ->  1
   422  comx619 compare   12.1234 12.000000000  ->  1
   423  comx620 compare  -12           -12.2345 ->  1
   424  comx621 compare  -12.0         -12.2345 ->  1
   425  comx622 compare  -12.00        -12.2345 ->  1
   426  comx623 compare  -12.000       -12.2345 ->  1
   427  comx624 compare  -12.0000      -12.2345 ->  1
   428  comx625 compare  -12.00000     -12.2345 ->  1
   429  comx626 compare  -12.000000    -12.2345 ->  1
   430  comx627 compare  -12.0000000   -12.2345 ->  1
   431  comx628 compare  -12.00000000  -12.2345 ->  1
   432  comx629 compare  -12.000000000 -12.2345 ->  1
   433  comx630 compare  -12.1234 -12           -> -1
   434  comx631 compare  -12.1234 -12.0         -> -1
   435  comx632 compare  -12.1234 -12.00        -> -1
   436  comx633 compare  -12.1234 -12.000       -> -1
   437  comx634 compare  -12.1234 -12.0000      -> -1
   438  comx635 compare  -12.1234 -12.00000     -> -1
   439  comx636 compare  -12.1234 -12.000000    -> -1
   440  comx637 compare  -12.1234 -12.0000000   -> -1
   441  comx638 compare  -12.1234 -12.00000000  -> -1
   442  comx639 compare  -12.1234 -12.000000000 -> -1
   443  precision: 9
   444  
   445  -- extended zeros
   446  comx640 compare   0     0   -> 0
   447  comx641 compare   0    -0   -> 0
   448  comx642 compare   0    -0.0 -> 0
   449  comx643 compare   0     0.0 -> 0
   450  comx644 compare  -0     0   -> 0
   451  comx645 compare  -0    -0   -> 0
   452  comx646 compare  -0    -0.0 -> 0
   453  comx647 compare  -0     0.0 -> 0
   454  comx648 compare   0.0   0   -> 0
   455  comx649 compare   0.0  -0   -> 0
   456  comx650 compare   0.0  -0.0 -> 0
   457  comx651 compare   0.0   0.0 -> 0
   458  comx652 compare  -0.0   0   -> 0
   459  comx653 compare  -0.0  -0   -> 0
   460  comx654 compare  -0.0  -0.0 -> 0
   461  comx655 compare  -0.0   0.0 -> 0
   462  
   463  comx656 compare  -0E1   0.0 -> 0
   464  comx657 compare  -0E2   0.0 -> 0
   465  comx658 compare   0E1   0.0 -> 0
   466  comx659 compare   0E2   0.0 -> 0
   467  comx660 compare  -0E1   0   -> 0
   468  comx661 compare  -0E2   0   -> 0
   469  comx662 compare   0E1   0   -> 0
   470  comx663 compare   0E2   0   -> 0
   471  comx664 compare  -0E1  -0E1 -> 0
   472  comx665 compare  -0E2  -0E1 -> 0
   473  comx666 compare   0E1  -0E1 -> 0
   474  comx667 compare   0E2  -0E1 -> 0
   475  comx668 compare  -0E1  -0E2 -> 0
   476  comx669 compare  -0E2  -0E2 -> 0
   477  comx670 compare   0E1  -0E2 -> 0
   478  comx671 compare   0E2  -0E2 -> 0
   479  comx672 compare  -0E1   0E1 -> 0
   480  comx673 compare  -0E2   0E1 -> 0
   481  comx674 compare   0E1   0E1 -> 0
   482  comx675 compare   0E2   0E1 -> 0
   483  comx676 compare  -0E1   0E2 -> 0
   484  comx677 compare  -0E2   0E2 -> 0
   485  comx678 compare   0E1   0E2 -> 0
   486  comx679 compare   0E2   0E2 -> 0
   487  
   488  -- trailing zeros; unit-y
   489  precision: 20
   490  comx680 compare   12    12           -> 0
   491  comx681 compare   12    12.0         -> 0
   492  comx682 compare   12    12.00        -> 0
   493  comx683 compare   12    12.000       -> 0
   494  comx684 compare   12    12.0000      -> 0
   495  comx685 compare   12    12.00000     -> 0
   496  comx686 compare   12    12.000000    -> 0
   497  comx687 compare   12    12.0000000   -> 0
   498  comx688 compare   12    12.00000000  -> 0
   499  comx689 compare   12    12.000000000 -> 0
   500  comx690 compare   12              12 -> 0
   501  comx691 compare   12.0            12 -> 0
   502  comx692 compare   12.00           12 -> 0
   503  comx693 compare   12.000          12 -> 0
   504  comx694 compare   12.0000         12 -> 0
   505  comx695 compare   12.00000        12 -> 0
   506  comx696 compare   12.000000       12 -> 0
   507  comx697 compare   12.0000000      12 -> 0
   508  comx698 compare   12.00000000     12 -> 0
   509  comx699 compare   12.000000000    12 -> 0
   510  
   511  -- long operand checks
   512  maxexponent: 999
   513  minexponent: -999
   514  precision: 9
   515  comx701 compare 12345678000  1 ->  1
   516  comx702 compare 1 12345678000  -> -1
   517  comx703 compare 1234567800   1 ->  1
   518  comx704 compare 1 1234567800   -> -1
   519  comx705 compare 1234567890   1 ->  1
   520  comx706 compare 1 1234567890   -> -1
   521  comx707 compare 1234567891   1 ->  1
   522  comx708 compare 1 1234567891   -> -1
   523  comx709 compare 12345678901  1 ->  1
   524  comx710 compare 1 12345678901  -> -1
   525  comx711 compare 1234567896   1 ->  1
   526  comx712 compare 1 1234567896   -> -1
   527  comx713 compare -1234567891  1 -> -1
   528  comx714 compare 1 -1234567891  ->  1
   529  comx715 compare -12345678901 1 -> -1
   530  comx716 compare 1 -12345678901 ->  1
   531  comx717 compare -1234567896  1 -> -1
   532  comx718 compare 1 -1234567896  ->  1
   533  
   534  precision: 15
   535  -- same with plenty of precision
   536  comx721 compare 12345678000 1 -> 1
   537  comx722 compare 1 12345678000 -> -1
   538  comx723 compare 1234567800  1 -> 1
   539  comx724 compare 1 1234567800  -> -1
   540  comx725 compare 1234567890  1 -> 1
   541  comx726 compare 1 1234567890  -> -1
   542  comx727 compare 1234567891  1 -> 1
   543  comx728 compare 1 1234567891  -> -1
   544  comx729 compare 12345678901 1 -> 1
   545  comx730 compare 1 12345678901 -> -1
   546  comx731 compare 1234567896  1 -> 1
   547  comx732 compare 1 1234567896  -> -1
   548  
   549  -- residue cases
   550  precision: 5
   551  comx740 compare  1  0.9999999  -> 1
   552  comx741 compare  1  0.999999   -> 1
   553  comx742 compare  1  0.99999    -> 1
   554  comx743 compare  1  1.0000     -> 0
   555  comx744 compare  1  1.00001    -> -1
   556  comx745 compare  1  1.000001   -> -1
   557  comx746 compare  1  1.0000001  -> -1
   558  comx750 compare  0.9999999  1  -> -1
   559  comx751 compare  0.999999   1  -> -1
   560  comx752 compare  0.99999    1  -> -1
   561  comx753 compare  1.0000     1  -> 0
   562  comx754 compare  1.00001    1  -> 1
   563  comx755 compare  1.000001   1  -> 1
   564  comx756 compare  1.0000001  1  -> 1
   565  
   566  -- a selection of longies
   567  comx760 compare -36852134.84194296250843579428931 -5830629.8347085025808756560357940 -> -1
   568  comx761 compare -36852134.84194296250843579428931 -36852134.84194296250843579428931  -> 0
   569  comx762 compare -36852134.94194296250843579428931 -36852134.84194296250843579428931  -> -1
   570  comx763 compare -36852134.84194296250843579428931 -36852134.94194296250843579428931  -> 1
   571  -- precisions above or below the difference should have no effect
   572  precision:   11
   573  comx764 compare -36852134.84194296250843579428931 -36852134.94194296250843579428931  -> 1
   574  precision:   10
   575  comx765 compare -36852134.84194296250843579428931 -36852134.94194296250843579428931  -> 1
   576  precision:    9
   577  comx766 compare -36852134.84194296250843579428931 -36852134.94194296250843579428931  -> 1
   578  precision:    8
   579  comx767 compare -36852134.84194296250843579428931 -36852134.94194296250843579428931  -> 1
   580  precision:    7
   581  comx768 compare -36852134.84194296250843579428931 -36852134.94194296250843579428931  -> 1
   582  precision:    6
   583  comx769 compare -36852134.84194296250843579428931 -36852134.94194296250843579428931  -> 1
   584  precision:    5
   585  comx770 compare -36852134.84194296250843579428931 -36852134.94194296250843579428931  -> 1
   586  precision:    4
   587  comx771 compare -36852134.84194296250843579428931 -36852134.94194296250843579428931  -> 1
   588  precision:    3
   589  comx772 compare -36852134.84194296250843579428931 -36852134.94194296250843579428931  -> 1
   590  precision:    2
   591  comx773 compare -36852134.84194296250843579428931 -36852134.94194296250843579428931  -> 1
   592  precision:    1
   593  comx774 compare -36852134.84194296250843579428931 -36852134.94194296250843579428931  -> 1
   594  
   595  -- Specials
   596  precision:   9
   597  comx780 compare  Inf  -Inf   ->  1
   598  comx781 compare  Inf  -1000  ->  1
   599  comx782 compare  Inf  -1     ->  1
   600  comx783 compare  Inf  -0     ->  1
   601  comx784 compare  Inf   0     ->  1
   602  comx785 compare  Inf   1     ->  1
   603  comx786 compare  Inf   1000  ->  1
   604  comx787 compare  Inf   Inf   ->  0
   605  comx788 compare -1000  Inf   -> -1
   606  comx789 compare -Inf   Inf   -> -1
   607  comx790 compare -1     Inf   -> -1
   608  comx791 compare -0     Inf   -> -1
   609  comx792 compare  0     Inf   -> -1
   610  comx793 compare  1     Inf   -> -1
   611  comx794 compare  1000  Inf   -> -1
   612  comx795 compare  Inf   Inf   ->  0
   613  
   614  comx800 compare -Inf  -Inf   ->  0
   615  comx801 compare -Inf  -1000  -> -1
   616  comx802 compare -Inf  -1     -> -1
   617  comx803 compare -Inf  -0     -> -1
   618  comx804 compare -Inf   0     -> -1
   619  comx805 compare -Inf   1     -> -1
   620  comx806 compare -Inf   1000  -> -1
   621  comx807 compare -Inf   Inf   -> -1
   622  comx808 compare -Inf  -Inf   ->  0
   623  comx809 compare -1000 -Inf   ->  1
   624  comx810 compare -1    -Inf   ->  1
   625  comx811 compare -0    -Inf   ->  1
   626  comx812 compare  0    -Inf   ->  1
   627  comx813 compare  1    -Inf   ->  1
   628  comx814 compare  1000 -Inf   ->  1
   629  comx815 compare  Inf  -Inf   ->  1
   630  
   631  comx821 compare  NaN -Inf    ->  NaN
   632  comx822 compare  NaN -1000   ->  NaN
   633  comx823 compare  NaN -1      ->  NaN
   634  comx824 compare  NaN -0      ->  NaN
   635  comx825 compare  NaN  0      ->  NaN
   636  comx826 compare  NaN  1      ->  NaN
   637  comx827 compare  NaN  1000   ->  NaN
   638  comx828 compare  NaN  Inf    ->  NaN
   639  comx829 compare  NaN  NaN    ->  NaN
   640  comx830 compare -Inf  NaN    ->  NaN
   641  comx831 compare -1000 NaN    ->  NaN
   642  comx832 compare -1    NaN    ->  NaN
   643  comx833 compare -0    NaN    ->  NaN
   644  comx834 compare  0    NaN    ->  NaN
   645  comx835 compare  1    NaN    ->  NaN
   646  comx836 compare  1000 NaN    ->  NaN
   647  comx837 compare  Inf  NaN    ->  NaN
   648  comx838 compare -NaN -NaN    -> -NaN
   649  comx839 compare +NaN -NaN    ->  NaN
   650  comx840 compare -NaN +NaN    -> -NaN
   651  
   652  comx841 compare  sNaN -Inf   ->  NaN  Invalid_operation
   653  comx842 compare  sNaN -1000  ->  NaN  Invalid_operation
   654  comx843 compare  sNaN -1     ->  NaN  Invalid_operation
   655  comx844 compare  sNaN -0     ->  NaN  Invalid_operation
   656  comx845 compare  sNaN  0     ->  NaN  Invalid_operation
   657  comx846 compare  sNaN  1     ->  NaN  Invalid_operation
   658  comx847 compare  sNaN  1000  ->  NaN  Invalid_operation
   659  comx848 compare  sNaN  NaN   ->  NaN  Invalid_operation
   660  comx849 compare  sNaN sNaN   ->  NaN  Invalid_operation
   661  comx850 compare  NaN  sNaN   ->  NaN  Invalid_operation
   662  comx851 compare -Inf  sNaN   ->  NaN  Invalid_operation
   663  comx852 compare -1000 sNaN   ->  NaN  Invalid_operation
   664  comx853 compare -1    sNaN   ->  NaN  Invalid_operation
   665  comx854 compare -0    sNaN   ->  NaN  Invalid_operation
   666  comx855 compare  0    sNaN   ->  NaN  Invalid_operation
   667  comx856 compare  1    sNaN   ->  NaN  Invalid_operation
   668  comx857 compare  1000 sNaN   ->  NaN  Invalid_operation
   669  comx858 compare  Inf  sNaN   ->  NaN  Invalid_operation
   670  comx859 compare  NaN  sNaN   ->  NaN  Invalid_operation
   671  
   672  -- propagating NaNs
   673  comx860 compare  NaN9 -Inf   ->  NaN9
   674  comx861 compare  NaN8  999   ->  NaN8
   675  comx862 compare  NaN77 Inf   ->  NaN77
   676  comx863 compare -NaN67 NaN5  -> -NaN67
   677  comx864 compare -Inf  -NaN4  -> -NaN4
   678  comx865 compare -999  -NaN33 -> -NaN33
   679  comx866 compare  Inf   NaN2  ->  NaN2
   680  comx867 compare -NaN41 -NaN42 -> -NaN41
   681  comx868 compare +NaN41 -NaN42 ->  NaN41
   682  comx869 compare -NaN41 +NaN42 -> -NaN41
   683  comx870 compare +NaN41 +NaN42 ->  NaN41
   684  
   685  comx871 compare -sNaN99 -Inf    -> -NaN99 Invalid_operation
   686  comx872 compare  sNaN98 -11     ->  NaN98 Invalid_operation
   687  comx873 compare  sNaN97  NaN    ->  NaN97 Invalid_operation
   688  comx874 compare  sNaN16 sNaN94  ->  NaN16 Invalid_operation
   689  comx875 compare  NaN85  sNaN83  ->  NaN83 Invalid_operation
   690  comx876 compare -Inf    sNaN92  ->  NaN92 Invalid_operation
   691  comx877 compare  088    sNaN81  ->  NaN81 Invalid_operation
   692  comx878 compare  Inf    sNaN90  ->  NaN90 Invalid_operation
   693  comx879 compare  NaN   -sNaN89  -> -NaN89 Invalid_operation
   694  
   695  -- overflow and underflow tests .. subnormal results now allowed
   696  maxExponent: 999999999
   697  minexponent: -999999999
   698  comx880 compare +1.23456789012345E-0 9E+999999999 -> -1
   699  comx881 compare 9E+999999999 +1.23456789012345E-0 ->  1
   700  comx882 compare +0.100 9E-999999999               ->  1
   701  comx883 compare 9E-999999999 +0.100               -> -1
   702  comx885 compare -1.23456789012345E-0 9E+999999999 -> -1
   703  comx886 compare 9E+999999999 -1.23456789012345E-0 ->  1
   704  comx887 compare -0.100 9E-999999999               -> -1
   705  comx888 compare 9E-999999999 -0.100               ->  1
   706  
   707  comx889 compare 1e-599999999 1e-400000001   -> -1
   708  comx890 compare 1e-599999999 1e-400000000   -> -1
   709  comx891 compare 1e-600000000 1e-400000000   -> -1
   710  comx892 compare 9e-999999998 0.01           -> -1
   711  comx893 compare 9e-999999998 0.1            -> -1
   712  comx894 compare 0.01 9e-999999998           ->  1
   713  comx895 compare 1e599999999 1e400000001     ->  1
   714  comx896 compare 1e599999999 1e400000000     ->  1
   715  comx897 compare 1e600000000 1e400000000     ->  1
   716  comx898 compare 9e999999998 100             ->  1
   717  comx899 compare 9e999999998 10              ->  1
   718  comx900 compare 100  9e999999998            -> -1
   719  -- signs
   720  comx901 compare  1e+777777777  1e+411111111 ->  1
   721  comx902 compare  1e+777777777 -1e+411111111 ->  1
   722  comx903 compare -1e+777777777  1e+411111111 -> -1
   723  comx904 compare -1e+777777777 -1e+411111111 -> -1
   724  comx905 compare  1e-777777777  1e-411111111 -> -1
   725  comx906 compare  1e-777777777 -1e-411111111 ->  1
   726  comx907 compare -1e-777777777  1e-411111111 -> -1
   727  comx908 compare -1e-777777777 -1e-411111111 ->  1
   728  
   729  -- spread zeros
   730  comx910 compare   0E-383  0       ->  0
   731  comx911 compare   0E-383 -0       ->  0
   732  comx912 compare  -0E-383  0       ->  0
   733  comx913 compare  -0E-383 -0       ->  0
   734  comx914 compare   0E-383  0E+384  ->  0
   735  comx915 compare   0E-383 -0E+384  ->  0
   736  comx916 compare  -0E-383  0E+384  ->  0
   737  comx917 compare  -0E-383 -0E+384  ->  0
   738  comx918 compare   0       0E+384  ->  0
   739  comx919 compare   0      -0E+384  ->  0
   740  comx920 compare  -0       0E+384  ->  0
   741  comx921 compare  -0      -0E+384  ->  0
   742  comx930 compare   0E+384  0       ->  0
   743  comx931 compare   0E+384 -0       ->  0
   744  comx932 compare  -0E+384  0       ->  0
   745  comx933 compare  -0E+384 -0       ->  0
   746  comx934 compare   0E+384  0E-383  ->  0
   747  comx935 compare   0E+384 -0E-383  ->  0
   748  comx936 compare  -0E+384  0E-383  ->  0
   749  comx937 compare  -0E+384 -0E-383  ->  0
   750  comx938 compare   0       0E-383  ->  0
   751  comx939 compare   0      -0E-383  ->  0
   752  comx940 compare  -0       0E-383  ->  0
   753  comx941 compare  -0      -0E-383  ->  0
   754  
   755  -- Null tests
   756  comx990 compare 10  # -> NaN Invalid_operation
   757  comx991 compare  # 10 -> NaN Invalid_operation