17db96d56Sopenharmony_ci------------------------------------------------------------------------
27db96d56Sopenharmony_ci-- ddInvert.decTest -- digitwise logical INVERT for decDoubles        --
37db96d56Sopenharmony_ci-- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
47db96d56Sopenharmony_ci------------------------------------------------------------------------
57db96d56Sopenharmony_ci-- Please see the document "General Decimal Arithmetic Testcases"     --
67db96d56Sopenharmony_ci-- at http://www2.hursley.ibm.com/decimal for the description of      --
77db96d56Sopenharmony_ci-- these testcases.                                                   --
87db96d56Sopenharmony_ci--                                                                    --
97db96d56Sopenharmony_ci-- These testcases are experimental ('beta' versions), and they       --
107db96d56Sopenharmony_ci-- may contain errors.  They are offered on an as-is basis.  In       --
117db96d56Sopenharmony_ci-- particular, achieving the same results as the tests here is not    --
127db96d56Sopenharmony_ci-- a guarantee that an implementation complies with any Standard      --
137db96d56Sopenharmony_ci-- or specification.  The tests are not exhaustive.                   --
147db96d56Sopenharmony_ci--                                                                    --
157db96d56Sopenharmony_ci-- Please send comments, suggestions, and corrections to the author:  --
167db96d56Sopenharmony_ci--   Mike Cowlishaw, IBM Fellow                                       --
177db96d56Sopenharmony_ci--   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
187db96d56Sopenharmony_ci--   mfc@uk.ibm.com                                                   --
197db96d56Sopenharmony_ci------------------------------------------------------------------------
207db96d56Sopenharmony_civersion: 2.59
217db96d56Sopenharmony_ci
227db96d56Sopenharmony_ciprecision:   16
237db96d56Sopenharmony_cimaxExponent: 384
247db96d56Sopenharmony_ciminExponent: -383
257db96d56Sopenharmony_ciextended:    1
267db96d56Sopenharmony_ciclamp:       1
277db96d56Sopenharmony_cirounding:    half_even
287db96d56Sopenharmony_ci
297db96d56Sopenharmony_ci-- Sanity check (truth table)
307db96d56Sopenharmony_ciddinv001 invert             0 -> 1111111111111111
317db96d56Sopenharmony_ciddinv002 invert             1 -> 1111111111111110
327db96d56Sopenharmony_ciddinv003 invert            10 -> 1111111111111101
337db96d56Sopenharmony_ciddinv004 invert     111111111 -> 1111111000000000
347db96d56Sopenharmony_ciddinv005 invert     000000000 -> 1111111111111111
357db96d56Sopenharmony_ci-- and at msd and msd-1
367db96d56Sopenharmony_ciddinv007 invert 0000000000000000 ->   1111111111111111
377db96d56Sopenharmony_ciddinv008 invert 1000000000000000 ->    111111111111111
387db96d56Sopenharmony_ciddinv009 invert 0000000000000000 ->   1111111111111111
397db96d56Sopenharmony_ciddinv010 invert 0100000000000000 ->   1011111111111111
407db96d56Sopenharmony_ciddinv011 invert 0111111111111111 ->   1000000000000000
417db96d56Sopenharmony_ciddinv012 invert 1111111111111111 ->                  0
427db96d56Sopenharmony_ciddinv013 invert 0011111111111111 ->   1100000000000000
437db96d56Sopenharmony_ciddinv014 invert 0111111111111111 ->   1000000000000000
447db96d56Sopenharmony_ci
457db96d56Sopenharmony_ci-- Various lengths
467db96d56Sopenharmony_ci--             123456789         1234567890123456
477db96d56Sopenharmony_ciddinv021 invert 111111111     ->  1111111000000000
487db96d56Sopenharmony_ciddinv022 invert 111111111111  ->  1111000000000000
497db96d56Sopenharmony_ciddinv023 invert  11111111     ->  1111111100000000
507db96d56Sopenharmony_ciddinv025 invert   1111111     ->  1111111110000000
517db96d56Sopenharmony_ciddinv026 invert    111111     ->  1111111111000000
527db96d56Sopenharmony_ciddinv027 invert     11111     ->  1111111111100000
537db96d56Sopenharmony_ciddinv028 invert      1111     ->  1111111111110000
547db96d56Sopenharmony_ciddinv029 invert       111     ->  1111111111111000
557db96d56Sopenharmony_ciddinv031 invert        11     ->  1111111111111100
567db96d56Sopenharmony_ciddinv032 invert         1     ->  1111111111111110
577db96d56Sopenharmony_ciddinv033 invert 111111111111  ->  1111000000000000
587db96d56Sopenharmony_ciddinv034 invert 11111111111   ->  1111100000000000
597db96d56Sopenharmony_ciddinv035 invert 1111111111    ->  1111110000000000
607db96d56Sopenharmony_ciddinv036 invert 111111111     ->  1111111000000000
617db96d56Sopenharmony_ci
627db96d56Sopenharmony_ciddinv040 invert 011111111   ->  1111111100000000
637db96d56Sopenharmony_ciddinv041 invert 101111111   ->  1111111010000000
647db96d56Sopenharmony_ciddinv042 invert 110111111   ->  1111111001000000
657db96d56Sopenharmony_ciddinv043 invert 111011111   ->  1111111000100000
667db96d56Sopenharmony_ciddinv044 invert 111101111   ->  1111111000010000
677db96d56Sopenharmony_ciddinv045 invert 111110111   ->  1111111000001000
687db96d56Sopenharmony_ciddinv046 invert 111111011   ->  1111111000000100
697db96d56Sopenharmony_ciddinv047 invert 111111101   ->  1111111000000010
707db96d56Sopenharmony_ciddinv048 invert 111111110   ->  1111111000000001
717db96d56Sopenharmony_ciddinv049 invert 011111011   ->  1111111100000100
727db96d56Sopenharmony_ciddinv050 invert 101111101   ->  1111111010000010
737db96d56Sopenharmony_ciddinv051 invert 110111110   ->  1111111001000001
747db96d56Sopenharmony_ciddinv052 invert 111011101   ->  1111111000100010
757db96d56Sopenharmony_ciddinv053 invert 111101011   ->  1111111000010100
767db96d56Sopenharmony_ciddinv054 invert 111110111   ->  1111111000001000
777db96d56Sopenharmony_ciddinv055 invert 111101011   ->  1111111000010100
787db96d56Sopenharmony_ciddinv056 invert 111011101   ->  1111111000100010
797db96d56Sopenharmony_ciddinv057 invert 110111110   ->  1111111001000001
807db96d56Sopenharmony_ciddinv058 invert 101111101   ->  1111111010000010
817db96d56Sopenharmony_ciddinv059 invert 011111011   ->  1111111100000100
827db96d56Sopenharmony_ci
837db96d56Sopenharmony_ciddinv080 invert 1000000011111111   ->   111111100000000
847db96d56Sopenharmony_ciddinv081 invert 0100000101111111   ->  1011111010000000
857db96d56Sopenharmony_ciddinv082 invert 0010000110111111   ->  1101111001000000
867db96d56Sopenharmony_ciddinv083 invert 0001000111011111   ->  1110111000100000
877db96d56Sopenharmony_ciddinv084 invert 0000100111101111   ->  1111011000010000
887db96d56Sopenharmony_ciddinv085 invert 0000010111110111   ->  1111101000001000
897db96d56Sopenharmony_ciddinv086 invert 0000001111111011   ->  1111110000000100
907db96d56Sopenharmony_ciddinv087 invert 0000010111111101   ->  1111101000000010
917db96d56Sopenharmony_ciddinv088 invert 0000100111111110   ->  1111011000000001
927db96d56Sopenharmony_ciddinv089 invert 0001000011111011   ->  1110111100000100
937db96d56Sopenharmony_ciddinv090 invert 0010000101111101   ->  1101111010000010
947db96d56Sopenharmony_ciddinv091 invert 0100000110111110   ->  1011111001000001
957db96d56Sopenharmony_ciddinv092 invert 1000000111011101   ->   111111000100010
967db96d56Sopenharmony_ciddinv093 invert 0100000111101011   ->  1011111000010100
977db96d56Sopenharmony_ciddinv094 invert 0010000111110111   ->  1101111000001000
987db96d56Sopenharmony_ciddinv095 invert 0001000111101011   ->  1110111000010100
997db96d56Sopenharmony_ciddinv096 invert 0000100111011101   ->  1111011000100010
1007db96d56Sopenharmony_ciddinv097 invert 0000010110111110   ->  1111101001000001
1017db96d56Sopenharmony_ciddinv098 invert 0000001101111101   ->  1111110010000010
1027db96d56Sopenharmony_ciddinv099 invert 0000010011111011   ->  1111101100000100
1037db96d56Sopenharmony_ci
1047db96d56Sopenharmony_ci-- non-0/1 should not be accepted, nor should signs
1057db96d56Sopenharmony_ciddinv220 invert 111111112   ->  NaN Invalid_operation
1067db96d56Sopenharmony_ciddinv221 invert 333333333   ->  NaN Invalid_operation
1077db96d56Sopenharmony_ciddinv222 invert 555555555   ->  NaN Invalid_operation
1087db96d56Sopenharmony_ciddinv223 invert 777777777   ->  NaN Invalid_operation
1097db96d56Sopenharmony_ciddinv224 invert 999999999   ->  NaN Invalid_operation
1107db96d56Sopenharmony_ciddinv225 invert 222222222   ->  NaN Invalid_operation
1117db96d56Sopenharmony_ciddinv226 invert 444444444   ->  NaN Invalid_operation
1127db96d56Sopenharmony_ciddinv227 invert 666666666   ->  NaN Invalid_operation
1137db96d56Sopenharmony_ciddinv228 invert 888888888   ->  NaN Invalid_operation
1147db96d56Sopenharmony_ciddinv229 invert 999999999   ->  NaN Invalid_operation
1157db96d56Sopenharmony_ciddinv230 invert 999999999   ->  NaN Invalid_operation
1167db96d56Sopenharmony_ciddinv231 invert 999999999   ->  NaN Invalid_operation
1177db96d56Sopenharmony_ciddinv232 invert 999999999   ->  NaN Invalid_operation
1187db96d56Sopenharmony_ci-- a few randoms
1197db96d56Sopenharmony_ciddinv240 invert  567468689  ->  NaN Invalid_operation
1207db96d56Sopenharmony_ciddinv241 invert  567367689  ->  NaN Invalid_operation
1217db96d56Sopenharmony_ciddinv242 invert -631917772  ->  NaN Invalid_operation
1227db96d56Sopenharmony_ciddinv243 invert -756253257  ->  NaN Invalid_operation
1237db96d56Sopenharmony_ciddinv244 invert  835590149  ->  NaN Invalid_operation
1247db96d56Sopenharmony_ci-- test MSD
1257db96d56Sopenharmony_ciddinv250 invert  2000000000000000  ->  NaN Invalid_operation
1267db96d56Sopenharmony_ciddinv251 invert  3000000000000000  ->  NaN Invalid_operation
1277db96d56Sopenharmony_ciddinv252 invert  4000000000000000  ->  NaN Invalid_operation
1287db96d56Sopenharmony_ciddinv253 invert  5000000000000000  ->  NaN Invalid_operation
1297db96d56Sopenharmony_ciddinv254 invert  6000000000000000  ->  NaN Invalid_operation
1307db96d56Sopenharmony_ciddinv255 invert  7000000000000000  ->  NaN Invalid_operation
1317db96d56Sopenharmony_ciddinv256 invert  8000000000000000  ->  NaN Invalid_operation
1327db96d56Sopenharmony_ciddinv257 invert  9000000000000000  ->  NaN Invalid_operation
1337db96d56Sopenharmony_ci-- test MSD-1
1347db96d56Sopenharmony_ciddinv270 invert  0200001000000000  ->  NaN Invalid_operation
1357db96d56Sopenharmony_ciddinv271 invert  0300000100000000  ->  NaN Invalid_operation
1367db96d56Sopenharmony_ciddinv272 invert  0400000010000000  ->  NaN Invalid_operation
1377db96d56Sopenharmony_ciddinv273 invert  0500000001000000  ->  NaN Invalid_operation
1387db96d56Sopenharmony_ciddinv274 invert  1600000000100000  ->  NaN Invalid_operation
1397db96d56Sopenharmony_ciddinv275 invert  1700000000010000  ->  NaN Invalid_operation
1407db96d56Sopenharmony_ciddinv276 invert  1800000000001000  ->  NaN Invalid_operation
1417db96d56Sopenharmony_ciddinv277 invert  1900000000000100  ->  NaN Invalid_operation
1427db96d56Sopenharmony_ci-- test LSD
1437db96d56Sopenharmony_ciddinv280 invert  0010000000000002  ->  NaN Invalid_operation
1447db96d56Sopenharmony_ciddinv281 invert  0001000000000003  ->  NaN Invalid_operation
1457db96d56Sopenharmony_ciddinv282 invert  0000100000000004  ->  NaN Invalid_operation
1467db96d56Sopenharmony_ciddinv283 invert  0000010000000005  ->  NaN Invalid_operation
1477db96d56Sopenharmony_ciddinv284 invert  1000001000000006  ->  NaN Invalid_operation
1487db96d56Sopenharmony_ciddinv285 invert  1000000100000007  ->  NaN Invalid_operation
1497db96d56Sopenharmony_ciddinv286 invert  1000000010000008  ->  NaN Invalid_operation
1507db96d56Sopenharmony_ciddinv287 invert  1000000001000009  ->  NaN Invalid_operation
1517db96d56Sopenharmony_ci-- test Middie
1527db96d56Sopenharmony_ciddinv288 invert  0010000020000000  ->  NaN Invalid_operation
1537db96d56Sopenharmony_ciddinv289 invert  0001000030000001  ->  NaN Invalid_operation
1547db96d56Sopenharmony_ciddinv290 invert  0000100040000010  ->  NaN Invalid_operation
1557db96d56Sopenharmony_ciddinv291 invert  0000010050000100  ->  NaN Invalid_operation
1567db96d56Sopenharmony_ciddinv292 invert  1000001060001000  ->  NaN Invalid_operation
1577db96d56Sopenharmony_ciddinv293 invert  1000000170010000  ->  NaN Invalid_operation
1587db96d56Sopenharmony_ciddinv294 invert  1000000080100000  ->  NaN Invalid_operation
1597db96d56Sopenharmony_ciddinv295 invert  1000000091000000  ->  NaN Invalid_operation
1607db96d56Sopenharmony_ci-- sign
1617db96d56Sopenharmony_ciddinv296 invert -1000000001000000  ->  NaN Invalid_operation
1627db96d56Sopenharmony_ciddinv299 invert  1000000001000000  ->  111111110111111
1637db96d56Sopenharmony_ci
1647db96d56Sopenharmony_ci
1657db96d56Sopenharmony_ci-- Nmax, Nmin, Ntiny-like
1667db96d56Sopenharmony_ciddinv341 invert  9.99999999E+299   -> NaN Invalid_operation
1677db96d56Sopenharmony_ciddinv342 invert  1E-299            -> NaN Invalid_operation
1687db96d56Sopenharmony_ciddinv343 invert  1.00000000E-299   -> NaN Invalid_operation
1697db96d56Sopenharmony_ciddinv344 invert  1E-207            -> NaN Invalid_operation
1707db96d56Sopenharmony_ciddinv345 invert  -1E-207           -> NaN Invalid_operation
1717db96d56Sopenharmony_ciddinv346 invert  -1.00000000E-299  -> NaN Invalid_operation
1727db96d56Sopenharmony_ciddinv347 invert  -1E-299           -> NaN Invalid_operation
1737db96d56Sopenharmony_ciddinv348 invert  -9.99999999E+299  -> NaN Invalid_operation
1747db96d56Sopenharmony_ci
1757db96d56Sopenharmony_ci-- A few other non-integers
1767db96d56Sopenharmony_ciddinv361 invert  1.0               -> NaN Invalid_operation
1777db96d56Sopenharmony_ciddinv362 invert  1E+1              -> NaN Invalid_operation
1787db96d56Sopenharmony_ciddinv363 invert  0.0               -> NaN Invalid_operation
1797db96d56Sopenharmony_ciddinv364 invert  0E+1              -> NaN Invalid_operation
1807db96d56Sopenharmony_ciddinv365 invert  9.9               -> NaN Invalid_operation
1817db96d56Sopenharmony_ciddinv366 invert  9E+1              -> NaN Invalid_operation
1827db96d56Sopenharmony_ci
1837db96d56Sopenharmony_ci-- All Specials are in error
1847db96d56Sopenharmony_ciddinv788 invert -Inf     -> NaN  Invalid_operation
1857db96d56Sopenharmony_ciddinv794 invert  Inf     -> NaN  Invalid_operation
1867db96d56Sopenharmony_ciddinv821 invert  NaN     -> NaN  Invalid_operation
1877db96d56Sopenharmony_ciddinv841 invert  sNaN    -> NaN  Invalid_operation
1887db96d56Sopenharmony_ci-- propagating NaNs
1897db96d56Sopenharmony_ciddinv861 invert  NaN1    -> NaN Invalid_operation
1907db96d56Sopenharmony_ciddinv862 invert +NaN2    -> NaN Invalid_operation
1917db96d56Sopenharmony_ciddinv863 invert  NaN3    -> NaN Invalid_operation
1927db96d56Sopenharmony_ciddinv864 invert  NaN4    -> NaN Invalid_operation
1937db96d56Sopenharmony_ciddinv865 invert  NaN5    -> NaN Invalid_operation
1947db96d56Sopenharmony_ciddinv871 invert  sNaN11  -> NaN Invalid_operation
1957db96d56Sopenharmony_ciddinv872 invert  sNaN12  -> NaN Invalid_operation
1967db96d56Sopenharmony_ciddinv873 invert  sNaN13  -> NaN Invalid_operation
1977db96d56Sopenharmony_ciddinv874 invert  sNaN14  -> NaN Invalid_operation
1987db96d56Sopenharmony_ciddinv875 invert  sNaN15  -> NaN Invalid_operation
1997db96d56Sopenharmony_ciddinv876 invert  NaN16   -> NaN Invalid_operation
2007db96d56Sopenharmony_ciddinv881 invert +NaN25   -> NaN Invalid_operation
2017db96d56Sopenharmony_ciddinv882 invert -NaN26   -> NaN Invalid_operation
2027db96d56Sopenharmony_ciddinv883 invert -sNaN27  -> NaN Invalid_operation
203