17db96d56Sopenharmony_ci------------------------------------------------------------------------ 27db96d56Sopenharmony_ci-- clamp.decTest -- clamped exponent tests (format-independent) -- 37db96d56Sopenharmony_ci-- Copyright (c) IBM Corporation, 2000, 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_ci-- This set of tests uses the same limits as the 8-byte concrete 237db96d56Sopenharmony_ci-- representation, but applies clamping without using format-specific 247db96d56Sopenharmony_ci-- conversions. 257db96d56Sopenharmony_ci 267db96d56Sopenharmony_ciextended: 1 277db96d56Sopenharmony_ciprecision: 16 287db96d56Sopenharmony_cirounding: half_even 297db96d56Sopenharmony_cimaxExponent: 384 307db96d56Sopenharmony_ciminExponent: -383 317db96d56Sopenharmony_ciclamp: 1 327db96d56Sopenharmony_ci 337db96d56Sopenharmony_ci-- General testcases 347db96d56Sopenharmony_ci 357db96d56Sopenharmony_ci-- Normality 367db96d56Sopenharmony_ciclam010 apply 1234567890123456 -> 1234567890123456 377db96d56Sopenharmony_ciclam011 apply 1234567890123456.0 -> 1234567890123456 Rounded 387db96d56Sopenharmony_ciclam012 apply 1234567890123456.1 -> 1234567890123456 Rounded Inexact 397db96d56Sopenharmony_ciclam013 apply -1234567890123456 -> -1234567890123456 407db96d56Sopenharmony_ciclam014 apply -1234567890123456.0 -> -1234567890123456 Rounded 417db96d56Sopenharmony_ciclam015 apply -1234567890123456.1 -> -1234567890123456 Rounded Inexact 427db96d56Sopenharmony_ci 437db96d56Sopenharmony_ci 447db96d56Sopenharmony_ci-- Nmax and similar 457db96d56Sopenharmony_ciclam022 apply 9.999999999999999E+384 -> 9.999999999999999E+384 467db96d56Sopenharmony_ciclam024 apply 1.234567890123456E+384 -> 1.234567890123456E+384 477db96d56Sopenharmony_ci-- fold-downs (more below) 487db96d56Sopenharmony_ciclam030 apply 1.23E+384 -> 1.230000000000000E+384 Clamped 497db96d56Sopenharmony_ciclam032 apply 1E+384 -> 1.000000000000000E+384 Clamped 507db96d56Sopenharmony_ci 517db96d56Sopenharmony_ciclam051 apply 12345 -> 12345 527db96d56Sopenharmony_ciclam053 apply 1234 -> 1234 537db96d56Sopenharmony_ciclam055 apply 123 -> 123 547db96d56Sopenharmony_ciclam057 apply 12 -> 12 557db96d56Sopenharmony_ciclam059 apply 1 -> 1 567db96d56Sopenharmony_ciclam061 apply 1.23 -> 1.23 577db96d56Sopenharmony_ciclam063 apply 123.45 -> 123.45 587db96d56Sopenharmony_ci 597db96d56Sopenharmony_ci-- Nmin and below 607db96d56Sopenharmony_ciclam071 apply 1E-383 -> 1E-383 617db96d56Sopenharmony_ciclam073 apply 1.000000000000000E-383 -> 1.000000000000000E-383 627db96d56Sopenharmony_ciclam075 apply 1.000000000000001E-383 -> 1.000000000000001E-383 637db96d56Sopenharmony_ci 647db96d56Sopenharmony_ciclam077 apply 0.100000000000000E-383 -> 1.00000000000000E-384 Subnormal 657db96d56Sopenharmony_ciclam079 apply 0.000000000000010E-383 -> 1.0E-397 Subnormal 667db96d56Sopenharmony_ciclam081 apply 0.00000000000001E-383 -> 1E-397 Subnormal 677db96d56Sopenharmony_ciclam083 apply 0.000000000000001E-383 -> 1E-398 Subnormal 687db96d56Sopenharmony_ci 697db96d56Sopenharmony_ci-- underflows 707db96d56Sopenharmony_ciclam090 apply 1e-398 -> #0000000000000001 Subnormal 717db96d56Sopenharmony_ciclam091 apply 1.9e-398 -> #0000000000000002 Subnormal Underflow Inexact Rounded 727db96d56Sopenharmony_ciclam092 apply 1.1e-398 -> #0000000000000001 Subnormal Underflow Inexact Rounded 737db96d56Sopenharmony_ciclam093 apply 1.00000000001e-398 -> #0000000000000001 Subnormal Underflow Inexact Rounded 747db96d56Sopenharmony_ciclam094 apply 1.00000000000001e-398 -> #0000000000000001 Subnormal Underflow Inexact Rounded 757db96d56Sopenharmony_ciclam095 apply 1.000000000000001e-398 -> #0000000000000001 Subnormal Underflow Inexact Rounded 767db96d56Sopenharmony_ciclam096 apply 0.1e-398 -> #0000000000000000 Subnormal Underflow Inexact Rounded Clamped 777db96d56Sopenharmony_ciclam097 apply 0.00000000001e-398 -> #0000000000000000 Subnormal Underflow Inexact Rounded Clamped 787db96d56Sopenharmony_ciclam098 apply 0.00000000000001e-398 -> #0000000000000000 Subnormal Underflow Inexact Rounded Clamped 797db96d56Sopenharmony_ciclam099 apply 0.000000000000001e-398 -> #0000000000000000 Subnormal Underflow Inexact Rounded Clamped 807db96d56Sopenharmony_ci 817db96d56Sopenharmony_ci-- Same again, negatives 827db96d56Sopenharmony_ci-- Nmax and similar 837db96d56Sopenharmony_ciclam122 apply -9.999999999999999E+384 -> -9.999999999999999E+384 847db96d56Sopenharmony_ciclam124 apply -1.234567890123456E+384 -> -1.234567890123456E+384 857db96d56Sopenharmony_ci-- fold-downs (more below) 867db96d56Sopenharmony_ciclam130 apply -1.23E+384 -> -1.230000000000000E+384 Clamped 877db96d56Sopenharmony_ciclam132 apply -1E+384 -> -1.000000000000000E+384 Clamped 887db96d56Sopenharmony_ci 897db96d56Sopenharmony_ciclam151 apply -12345 -> -12345 907db96d56Sopenharmony_ciclam153 apply -1234 -> -1234 917db96d56Sopenharmony_ciclam155 apply -123 -> -123 927db96d56Sopenharmony_ciclam157 apply -12 -> -12 937db96d56Sopenharmony_ciclam159 apply -1 -> -1 947db96d56Sopenharmony_ciclam161 apply -1.23 -> -1.23 957db96d56Sopenharmony_ciclam163 apply -123.45 -> -123.45 967db96d56Sopenharmony_ci 977db96d56Sopenharmony_ci-- Nmin and below 987db96d56Sopenharmony_ciclam171 apply -1E-383 -> -1E-383 997db96d56Sopenharmony_ciclam173 apply -1.000000000000000E-383 -> -1.000000000000000E-383 1007db96d56Sopenharmony_ciclam175 apply -1.000000000000001E-383 -> -1.000000000000001E-383 1017db96d56Sopenharmony_ci 1027db96d56Sopenharmony_ciclam177 apply -0.100000000000000E-383 -> -1.00000000000000E-384 Subnormal 1037db96d56Sopenharmony_ciclam179 apply -0.000000000000010E-383 -> -1.0E-397 Subnormal 1047db96d56Sopenharmony_ciclam181 apply -0.00000000000001E-383 -> -1E-397 Subnormal 1057db96d56Sopenharmony_ciclam183 apply -0.000000000000001E-383 -> -1E-398 Subnormal 1067db96d56Sopenharmony_ci 1077db96d56Sopenharmony_ci-- underflows 1087db96d56Sopenharmony_ciclam189 apply -1e-398 -> #8000000000000001 Subnormal 1097db96d56Sopenharmony_ciclam190 apply -1.0e-398 -> #8000000000000001 Subnormal Rounded 1107db96d56Sopenharmony_ciclam191 apply -1.9e-398 -> #8000000000000002 Subnormal Underflow Inexact Rounded 1117db96d56Sopenharmony_ciclam192 apply -1.1e-398 -> #8000000000000001 Subnormal Underflow Inexact Rounded 1127db96d56Sopenharmony_ciclam193 apply -1.00000000001e-398 -> #8000000000000001 Subnormal Underflow Inexact Rounded 1137db96d56Sopenharmony_ciclam194 apply -1.00000000000001e-398 -> #8000000000000001 Subnormal Underflow Inexact Rounded 1147db96d56Sopenharmony_ciclam195 apply -1.000000000000001e-398 -> #8000000000000001 Subnormal Underflow Inexact Rounded 1157db96d56Sopenharmony_ciclam196 apply -0.1e-398 -> #8000000000000000 Subnormal Underflow Inexact Rounded Clamped 1167db96d56Sopenharmony_ciclam197 apply -0.00000000001e-398 -> #8000000000000000 Subnormal Underflow Inexact Rounded Clamped 1177db96d56Sopenharmony_ciclam198 apply -0.00000000000001e-398 -> #8000000000000000 Subnormal Underflow Inexact Rounded Clamped 1187db96d56Sopenharmony_ciclam199 apply -0.000000000000001e-398 -> #8000000000000000 Subnormal Underflow Inexact Rounded Clamped 1197db96d56Sopenharmony_ci 1207db96d56Sopenharmony_ci-- zeros 1217db96d56Sopenharmony_ciclam401 apply 0E-500 -> 0E-398 Clamped 1227db96d56Sopenharmony_ciclam402 apply 0E-400 -> 0E-398 Clamped 1237db96d56Sopenharmony_ciclam403 apply 0E-398 -> 0E-398 1247db96d56Sopenharmony_ciclam404 apply 0.000000000000000E-383 -> 0E-398 1257db96d56Sopenharmony_ciclam405 apply 0E-2 -> 0.00 1267db96d56Sopenharmony_ciclam406 apply 0 -> 0 1277db96d56Sopenharmony_ciclam407 apply 0E+3 -> 0E+3 1287db96d56Sopenharmony_ciclam408 apply 0E+369 -> 0E+369 1297db96d56Sopenharmony_ci-- clamped zeros... 1307db96d56Sopenharmony_ciclam410 apply 0E+370 -> 0E+369 Clamped 1317db96d56Sopenharmony_ciclam411 apply 0E+384 -> 0E+369 Clamped 1327db96d56Sopenharmony_ciclam412 apply 0E+400 -> 0E+369 Clamped 1337db96d56Sopenharmony_ciclam413 apply 0E+500 -> 0E+369 Clamped 1347db96d56Sopenharmony_ci 1357db96d56Sopenharmony_ci-- negative zeros 1367db96d56Sopenharmony_ciclam420 apply -0E-500 -> -0E-398 Clamped 1377db96d56Sopenharmony_ciclam421 apply -0E-400 -> -0E-398 Clamped 1387db96d56Sopenharmony_ciclam422 apply -0E-398 -> -0E-398 1397db96d56Sopenharmony_ciclam423 apply -0.000000000000000E-383 -> -0E-398 1407db96d56Sopenharmony_ciclam424 apply -0E-2 -> -0.00 1417db96d56Sopenharmony_ciclam425 apply -0 -> -0 1427db96d56Sopenharmony_ciclam426 apply -0E+3 -> -0E+3 1437db96d56Sopenharmony_ciclam427 apply -0E+369 -> -0E+369 1447db96d56Sopenharmony_ci-- clamped zeros... 1457db96d56Sopenharmony_ciclam431 apply -0E+370 -> -0E+369 Clamped 1467db96d56Sopenharmony_ciclam432 apply -0E+384 -> -0E+369 Clamped 1477db96d56Sopenharmony_ciclam433 apply -0E+400 -> -0E+369 Clamped 1487db96d56Sopenharmony_ciclam434 apply -0E+500 -> -0E+369 Clamped 1497db96d56Sopenharmony_ci 1507db96d56Sopenharmony_ci-- fold-down full sequence 1517db96d56Sopenharmony_ciclam601 apply 1E+384 -> 1.000000000000000E+384 Clamped 1527db96d56Sopenharmony_ciclam603 apply 1E+383 -> 1.00000000000000E+383 Clamped 1537db96d56Sopenharmony_ciclam605 apply 1E+382 -> 1.0000000000000E+382 Clamped 1547db96d56Sopenharmony_ciclam607 apply 1E+381 -> 1.000000000000E+381 Clamped 1557db96d56Sopenharmony_ciclam609 apply 1E+380 -> 1.00000000000E+380 Clamped 1567db96d56Sopenharmony_ciclam611 apply 1E+379 -> 1.0000000000E+379 Clamped 1577db96d56Sopenharmony_ciclam613 apply 1E+378 -> 1.000000000E+378 Clamped 1587db96d56Sopenharmony_ciclam615 apply 1E+377 -> 1.00000000E+377 Clamped 1597db96d56Sopenharmony_ciclam617 apply 1E+376 -> 1.0000000E+376 Clamped 1607db96d56Sopenharmony_ciclam619 apply 1E+375 -> 1.000000E+375 Clamped 1617db96d56Sopenharmony_ciclam621 apply 1E+374 -> 1.00000E+374 Clamped 1627db96d56Sopenharmony_ciclam623 apply 1E+373 -> 1.0000E+373 Clamped 1637db96d56Sopenharmony_ciclam625 apply 1E+372 -> 1.000E+372 Clamped 1647db96d56Sopenharmony_ciclam627 apply 1E+371 -> 1.00E+371 Clamped 1657db96d56Sopenharmony_ciclam629 apply 1E+370 -> 1.0E+370 Clamped 1667db96d56Sopenharmony_ciclam631 apply 1E+369 -> 1E+369 1677db96d56Sopenharmony_ciclam633 apply 1E+368 -> 1E+368 1687db96d56Sopenharmony_ci-- same with 9s 1697db96d56Sopenharmony_ciclam641 apply 9E+384 -> 9.000000000000000E+384 Clamped 1707db96d56Sopenharmony_ciclam643 apply 9E+383 -> 9.00000000000000E+383 Clamped 1717db96d56Sopenharmony_ciclam645 apply 9E+382 -> 9.0000000000000E+382 Clamped 1727db96d56Sopenharmony_ciclam647 apply 9E+381 -> 9.000000000000E+381 Clamped 1737db96d56Sopenharmony_ciclam649 apply 9E+380 -> 9.00000000000E+380 Clamped 1747db96d56Sopenharmony_ciclam651 apply 9E+379 -> 9.0000000000E+379 Clamped 1757db96d56Sopenharmony_ciclam653 apply 9E+378 -> 9.000000000E+378 Clamped 1767db96d56Sopenharmony_ciclam655 apply 9E+377 -> 9.00000000E+377 Clamped 1777db96d56Sopenharmony_ciclam657 apply 9E+376 -> 9.0000000E+376 Clamped 1787db96d56Sopenharmony_ciclam659 apply 9E+375 -> 9.000000E+375 Clamped 1797db96d56Sopenharmony_ciclam661 apply 9E+374 -> 9.00000E+374 Clamped 1807db96d56Sopenharmony_ciclam663 apply 9E+373 -> 9.0000E+373 Clamped 1817db96d56Sopenharmony_ciclam665 apply 9E+372 -> 9.000E+372 Clamped 1827db96d56Sopenharmony_ciclam667 apply 9E+371 -> 9.00E+371 Clamped 1837db96d56Sopenharmony_ciclam669 apply 9E+370 -> 9.0E+370 Clamped 1847db96d56Sopenharmony_ciclam671 apply 9E+369 -> 9E+369 1857db96d56Sopenharmony_ciclam673 apply 9E+368 -> 9E+368 1867db96d56Sopenharmony_ci 1877db96d56Sopenharmony_ci-- subnormals clamped to 0-Etiny 1887db96d56Sopenharmony_ciprecision: 16 1897db96d56Sopenharmony_cimaxExponent: 384 1907db96d56Sopenharmony_ciminExponent: -383 1917db96d56Sopenharmony_ciclam681 apply 7E-398 -> 7E-398 Subnormal 1927db96d56Sopenharmony_ciclam682 apply 0E-398 -> 0E-398 1937db96d56Sopenharmony_ciclam683 apply 7E-399 -> 1E-398 Subnormal Underflow Inexact Rounded 1947db96d56Sopenharmony_ciclam684 apply 4E-399 -> 0E-398 Clamped Subnormal Underflow Inexact Rounded 1957db96d56Sopenharmony_ciclam685 apply 7E-400 -> 0E-398 Clamped Subnormal Underflow Inexact Rounded 1967db96d56Sopenharmony_ciclam686 apply 7E-401 -> 0E-398 Clamped Subnormal Underflow Inexact Rounded 1977db96d56Sopenharmony_ciclam687 apply 0E-399 -> 0E-398 Clamped 1987db96d56Sopenharmony_ciclam688 apply 0E-400 -> 0E-398 Clamped 1997db96d56Sopenharmony_ciclam689 apply 0E-401 -> 0E-398 Clamped 2007db96d56Sopenharmony_ci 2017db96d56Sopenharmony_ci-- example from documentation 2027db96d56Sopenharmony_ciprecision: 7 2037db96d56Sopenharmony_cirounding: half_even 2047db96d56Sopenharmony_cimaxExponent: +96 2057db96d56Sopenharmony_ciminExponent: -95 2067db96d56Sopenharmony_ci 2077db96d56Sopenharmony_ciclamp: 0 2087db96d56Sopenharmony_ciclam700 apply 1.23E+96 -> 1.23E+96 2097db96d56Sopenharmony_ci 2107db96d56Sopenharmony_ciclamp: 1 2117db96d56Sopenharmony_ciclam701 apply 1.23E+96 -> 1.230000E+96 Clamped 212