11.1Sross 21.1SrossKnown Floating-point Bugs Detected by TestFloat 31.1Sross 41.1SrossJohn R. Hauser 51.1Sross1997 December 15 61.1Sross 71.1Sross 81.1Sross------------------------------------------------------------------------------- 91.1SrossIntroduction 101.1Sross 111.1SrossSeveral popular systems have bugs that TestFloat is very likely to run 121.1Srossacross. The ones I know of are documented here. First off, TestFloat finds 131.1Srossno errors in the following processors/machines: 141.1Sross 151.1Sross AMD 486 DX4's 161.1Sross Sun UltraSPARC 1's and 2's 171.1Sross 181.1SrossOn the other hand, bugs are found in these processors/machines: 191.1Sross 201.1Sross Older Intel Pentiums (with the divide bug) 211.1Sross Intel Pentium Pros 221.1Sross Sun SPARCstation 1's and IPX's 231.1Sross Sun SPARCstation 10's 241.1Sross HP Precision Architecture processors, with HP-UX prior to version 10.10 251.1Sross 261.1SrossFor some reason, most of the bugs found involve conversions from floating- 271.1Srosspoint to integer formats. 281.1Sross 291.1SrossThe bugs are shown as actual TestFloat error lines, along with a brief 301.1Srossexplanation. The error lines given are not necesarily exhaustive and were 311.1Srossnot necessarily output in the order shown. 321.1Sross 331.1SrossThis document does not pretend to be an authoritative bug listing for all 341.1Srosscommercial processors. The vast majority of processors are absent from this 351.1Srosslist because I have never run TestFloat on such machines and I thus have no 361.1Srossknowledge of what bugs TestFloat might find in them. 371.1Sross 381.1SrossThe latest version of this file can be found at the Web page `http:// 391.1Srosshttp.cs.berkeley.edu/~jhauser/arithmetic/testfloat.html'. 401.1Sross 411.1Sross 421.1Sross------------------------------------------------------------------------------- 431.1SrossOlder Intel Pentiums (with the divide bug) 441.1Sross 451.1SrossThe following conversion problems are found on Pentiums that also suffer 461.1Srossfrom the infamous floating-point divide bug. These bugs have been fixed on 471.1Srossnewer Pentiums. (TestFloat does not find the divide bug.) 481.1Sross 491.1Sross- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 501.1Srossfloatx80_to_int32 511.1Sross 521.1Sross-- A few small fractions are treated as though they were zero. 531.1Sross 541.1Sross Errors found in floatx80_to_int32, rounding nearest_even: 551.1Sross 3FFB.8000000000000000 soft: 00000000 ....x syst: 00000000 ..... 561.1Sross 3FFC.8000000000000000 soft: 00000000 ....x syst: 00000000 ..... 571.1Sross 3FFC.C000000000000000 soft: 00000000 ....x syst: 00000000 ..... 581.1Sross BFFB.8000000000000000 soft: 00000000 ....x syst: 00000000 ..... 591.1Sross BFFC.8000000000000000 soft: 00000000 ....x syst: 00000000 ..... 601.1Sross Errors found in floatx80_to_int32, rounding to_zero: 611.1Sross 3FFB.8000000000000000 soft: 00000000 ....x syst: 00000000 ..... 621.1Sross 3FFC.8000000000000000 soft: 00000000 ....x syst: 00000000 ..... 631.1Sross 3FFC.C000000000000000 soft: 00000000 ....x syst: 00000000 ..... 641.1Sross BFFB.8000000000000000 soft: 00000000 ....x syst: 00000000 ..... 651.1Sross BFFC.8000000000000000 soft: 00000000 ....x syst: 00000000 ..... 661.1Sross BFFC.C000000000000000 soft: 00000000 ....x syst: 00000000 ..... 671.1Sross Errors found in floatx80_to_int32, rounding down: 681.1Sross 3FFB.8000000000000000 soft: 00000000 ....x syst: 00000000 ..... 691.1Sross 3FFC.8000000000000000 soft: 00000000 ....x syst: 00000000 ..... 701.1Sross 3FFC.C000000000000000 soft: 00000000 ....x syst: 00000000 ..... 711.1Sross BFFB.8000000000000000 soft: FFFFFFFF ....x syst: 00000000 ..... 721.1Sross BFFC.8000000000000000 soft: FFFFFFFF ....x syst: 00000000 ..... 731.1Sross BFFC.C000000000000000 soft: FFFFFFFF ....x syst: 00000000 ..... 741.1Sross Errors found in floatx80_to_int32, rounding up: 751.1Sross 3FFB.8000000000000000 soft: 00000001 ....x syst: 00000000 ..... 761.1Sross 3FFC.8000000000000000 soft: 00000001 ....x syst: 00000000 ..... 771.1Sross 3FFC.C000000000000000 soft: 00000001 ....x syst: 00000000 ..... 781.1Sross BFFB.8000000000000000 soft: 00000000 ....x syst: 00000000 ..... 791.1Sross BFFC.8000000000000000 soft: 00000000 ....x syst: 00000000 ..... 801.1Sross 811.1Sross 3FFB.8000000000000000 is the fraction 1/16; 3FFC.8000000000000000 is 1/8; 821.1Sross and 3FFC.C000000000000000 is 3/16. Both positive and negative inputs are 831.1Sross affected. 841.1Sross 851.1Sross-- Some (all?) positive floating-point values between 2^32 - 1/2 861.1Sross (401E.FFFFFFFF00000000) and 2^32 (401F.0000000000000000) are rounded to 871.1Sross zero when the rounding mode is nearest/even or up. 881.1Sross 891.1Sross Errors found in floatx80_to_int32, rounding nearest_even: 901.1Sross 401E.FFFFFFFF80000000 soft: 7FFFFFFF v.... syst: 00000000 ....x 911.1Sross 401E.FFFFFFFFC00001FE soft: 7FFFFFFF v.... syst: 00000000 ....x 921.1Sross 401E.FFFFFFFFF8000000 soft: 7FFFFFFF v.... syst: 00000000 ....x 931.1Sross 401E.FFFFFFFFFEC00000 soft: 7FFFFFFF v.... syst: 00000000 ....x 941.1Sross 401E.FFFFFFFFFF002000 soft: 7FFFFFFF v.... syst: 00000000 ....x 951.1Sross 401E.FFFFFFFFFFC00000 soft: 7FFFFFFF v.... syst: 00000000 ....x 961.1Sross 401E.FFFFFFFFFFE00000 soft: 7FFFFFFF v.... syst: 00000000 ....x 971.1Sross 401E.FFFFFFFFFFFD7FFE soft: 7FFFFFFF v.... syst: 00000000 ....x 981.1Sross 401E.FFFFFFFFFFFFFFFE soft: 7FFFFFFF v.... syst: 00000000 ....x 991.1Sross 401E.FFFFFFFFFFFFFFFF soft: 7FFFFFFF v.... syst: 00000000 ....x 1001.1Sross Errors found in floatx80_to_int32, rounding up: 1011.1Sross 401E.FFFFFFFF00800000 soft: 7FFFFFFF v.... syst: 00000000 ....x 1021.1Sross 401E.FFFFFFFF80000000 soft: 7FFFFFFF v.... syst: 00000000 ....x 1031.1Sross 401E.FFFFFFFFEFFFC000 soft: 7FFFFFFF v.... syst: 00000000 ....x 1041.1Sross 401E.FFFFFFFFFC000000 soft: 7FFFFFFF v.... syst: 00000000 ....x 1051.1Sross 401E.FFFFFFFFFE7FFFFF soft: 7FFFFFFF v.... syst: 00000000 ....x 1061.1Sross 401E.FFFFFFFFFFF00000 soft: 7FFFFFFF v.... syst: 00000000 ....x 1071.1Sross 401E.FFFFFFFFFFFE0800 soft: 7FFFFFFF v.... syst: 00000000 ....x 1081.1Sross 401E.FFFFFFFFFFFF7FFB soft: 7FFFFFFF v.... syst: 00000000 ....x 1091.1Sross 401E.FFFFFFFFFFFFFFFE soft: 7FFFFFFF v.... syst: 00000000 ....x 1101.1Sross 401E.FFFFFFFFFFFFFFFF soft: 7FFFFFFF v.... syst: 00000000 ....x 1111.1Sross 1121.1Sross- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1131.1Sross 1141.1Sross 1151.1Sross------------------------------------------------------------------------------- 1161.1SrossIntel Pentium Pros 1171.1Sross 1181.1Sross- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1191.1Srossfloatx80_to_int32 1201.1Sross 1211.1Sross-- The inexact flag is sometimes raised instead of the invalid flag for 1221.1Sross floating-point inputs under -(2^32) (C01F.0000000000000000). This bug is 1231.1Sross sporadic. It appears to be deterministic but dependent on the sequence 1241.1Sross of operations executed. 1251.1Sross 1261.1Sross Errors found in floatx80_to_int32, rounding nearest_even: 1271.1Sross C01F.C000000000000002 soft: 80000000 v.... syst: 80000000 ....x 1281.1Sross C021.F00000000000003F soft: 80000000 v.... syst: 80000000 ....x 1291.1Sross Errors found in floatx80_to_int32, rounding to_zero: 1301.1Sross C021.F00000000000003F soft: 80000000 v.... syst: 80000000 ....x 1311.1Sross Errors found in floatx80_to_int32, rounding up: 1321.1Sross C01F.C000000000000007 soft: 80000000 v.... syst: 80000000 ....x 1331.1Sross C01F.C000000000001000 soft: 80000000 v.... syst: 80000000 ....x 1341.1Sross 1351.1Sross- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1361.1Sross 1371.1Sross 1381.1Sross------------------------------------------------------------------------------- 1391.1SrossSun SPARCstation 1's and IPX's 1401.1Sross 1411.1SrossSome older SPARCstations appear confused about whether underflow tininess is 1421.1Srossdetected before or after rounding. For conversions from double precision 1431.1Srossto single precision, tininess is detected after rounding, while for all 1441.1Srossquadruple-precision operations it is detected before rounding. Single- and 1451.2Sandvardouble-precision multiplies go both ways: 1461.1Sross 1471.1Sross- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1481.1Srossfloat32_mul, float64_mul 1491.1Sross 1501.1Sross-- For multiplies, underflow tininess is detected _before_ rounding if one 1511.1Sross of the inputs is subnormal, and _after_ rounding otherwise. If tininess 1521.1Sross is assumed to be detected before rounding, the following errors are 1531.1Sross generated: 1541.1Sross 1551.1Sross Errors found in float32_mul, rounding nearest_even: 1561.1Sross 001.000001 07E.7FFFFE soft: 001.000000 ...ux syst: 001.000000 ....x 1571.1Sross 001.000001 87E.7FFFFE soft: 801.000000 ...ux syst: 801.000000 ....x 1581.1Sross 001.000002 07E.7FFFFC soft: 001.000000 ...ux syst: 001.000000 ....x 1591.1Sross 001.000002 87E.7FFFFC soft: 801.000000 ...ux syst: 801.000000 ....x 1601.1Sross 001.000004 07E.7FFFF8 soft: 001.000000 ...ux syst: 001.000000 ....x 1611.1Sross Errors found in float32_mul, rounding down: 1621.1Sross 001.000001 87E.7FFFFE soft: 801.000000 ...ux syst: 801.000000 ....x 1631.1Sross 001.000002 87E.7FFFFC soft: 801.000000 ...ux syst: 801.000000 ....x 1641.1Sross 001.000004 87E.7FFFF8 soft: 801.000000 ...ux syst: 801.000000 ....x 1651.1Sross 001.000008 87E.7FFFF0 soft: 801.000000 ...ux syst: 801.000000 ....x 1661.1Sross 001.000010 87E.7FFFE0 soft: 801.000000 ...ux syst: 801.000000 ....x 1671.1Sross Errors found in float32_mul, rounding up: 1681.1Sross 001.000001 07E.7FFFFE soft: 001.000000 ...ux syst: 001.000000 ....x 1691.1Sross 001.000002 07E.7FFFFC soft: 001.000000 ...ux syst: 001.000000 ....x 1701.1Sross 001.000004 07E.7FFFF8 soft: 001.000000 ...ux syst: 001.000000 ....x 1711.1Sross 001.000008 07E.7FFFF0 soft: 001.000000 ...ux syst: 001.000000 ....x 1721.1Sross 001.000010 07E.7FFFE0 soft: 001.000000 ...ux syst: 001.000000 ....x 1731.1Sross Errors found in float64_mul, rounding nearest_even: 1741.1Sross 001.0000000000001 3FE.FFFFFFFFFFFFE 1751.1Sross soft: 001.0000000000000 ...ux syst: 001.0000000000000 ....x 1761.1Sross 001.0000000000001 BFE.FFFFFFFFFFFFE 1771.1Sross soft: 801.0000000000000 ...ux syst: 801.0000000000000 ....x 1781.1Sross 001.0000000000002 3FE.FFFFFFFFFFFFC 1791.1Sross soft: 001.0000000000000 ...ux syst: 001.0000000000000 ....x 1801.1Sross 001.0000000000002 BFE.FFFFFFFFFFFFC 1811.1Sross soft: 801.0000000000000 ...ux syst: 801.0000000000000 ....x 1821.1Sross 001.0000000000004 3FE.FFFFFFFFFFFF8 1831.1Sross soft: 001.0000000000000 ...ux syst: 001.0000000000000 ....x 1841.1Sross Errors found in float64_mul, rounding down: 1851.1Sross 001.0000000000001 BFE.FFFFFFFFFFFFE 1861.1Sross soft: 801.0000000000000 ...ux syst: 801.0000000000000 ....x 1871.1Sross 001.0000000000002 BFE.FFFFFFFFFFFFC 1881.1Sross soft: 801.0000000000000 ...ux syst: 801.0000000000000 ....x 1891.1Sross 001.0000000000004 BFE.FFFFFFFFFFFF8 1901.1Sross soft: 801.0000000000000 ...ux syst: 801.0000000000000 ....x 1911.1Sross 001.0000000000008 BFE.FFFFFFFFFFFF0 1921.1Sross soft: 801.0000000000000 ...ux syst: 801.0000000000000 ....x 1931.1Sross 001.0000000000010 BFE.FFFFFFFFFFFE0 1941.1Sross soft: 801.0000000000000 ...ux syst: 801.0000000000000 ....x 1951.1Sross Errors found in float64_mul, rounding up: 1961.1Sross 001.0000000000001 3FE.FFFFFFFFFFFFE 1971.1Sross soft: 001.0000000000000 ...ux syst: 001.0000000000000 ....x 1981.1Sross 001.0000000000002 3FE.FFFFFFFFFFFFC 1991.1Sross soft: 001.0000000000000 ...ux syst: 001.0000000000000 ....x 2001.1Sross 001.0000000000004 3FE.FFFFFFFFFFFF8 2011.1Sross soft: 001.0000000000000 ...ux syst: 001.0000000000000 ....x 2021.1Sross 001.0000000000008 3FE.FFFFFFFFFFFF0 2031.1Sross soft: 001.0000000000000 ...ux syst: 001.0000000000000 ....x 2041.1Sross 001.0000000000010 3FE.FFFFFFFFFFFE0 2051.1Sross soft: 001.0000000000000 ...ux syst: 001.0000000000000 ....x 2061.1Sross 2071.1Sross If we assume tininess should be detected after rounding, we get the 2081.1Sross following errors: 2091.1Sross 2101.1Sross Errors found in float32_mul, rounding nearest_even: 2111.1Sross 000.7FFC00 07F.000400 soft: 001.000000 ....x syst: 001.000000 ...ux 2121.1Sross 000.7FFC00 87F.000400 soft: 801.000000 ....x syst: 801.000000 ...ux 2131.1Sross 000.7FFE00 07F.000200 soft: 001.000000 ....x syst: 001.000000 ...ux 2141.1Sross 000.7FFE00 87F.000200 soft: 801.000000 ....x syst: 801.000000 ...ux 2151.1Sross 000.7FFF00 07F.000100 soft: 001.000000 ....x syst: 001.000000 ...ux 2161.1Sross Errors found in float32_mul, rounding down: 2171.1Sross 000.7FFC00 87F.000400 soft: 801.000000 ....x syst: 801.000000 ...ux 2181.1Sross 000.7FFE00 87F.000200 soft: 801.000000 ....x syst: 801.000000 ...ux 2191.1Sross 000.7FFF00 87F.000100 soft: 801.000000 ....x syst: 801.000000 ...ux 2201.1Sross 000.7FFF80 87F.000080 soft: 801.000000 ....x syst: 801.000000 ...ux 2211.1Sross 000.7FFFC0 87F.000040 soft: 801.000000 ....x syst: 801.000000 ...ux 2221.1Sross Errors found in float32_mul, rounding up: 2231.1Sross 000.7FFC00 07F.000400 soft: 001.000000 ....x syst: 001.000000 ...ux 2241.1Sross 000.7FFE00 07F.000200 soft: 001.000000 ....x syst: 001.000000 ...ux 2251.1Sross 000.7FFF00 07F.000100 soft: 001.000000 ....x syst: 001.000000 ...ux 2261.1Sross 000.7FFF80 07F.000080 soft: 001.000000 ....x syst: 001.000000 ...ux 2271.1Sross 000.7FFFC0 07F.000040 soft: 001.000000 ....x syst: 001.000000 ...ux 2281.1Sross Errors found in float64_mul, rounding nearest_even: 2291.1Sross 000.FFFFFFE000000 3FF.0000002000000 2301.1Sross soft: 001.0000000000000 ....x syst: 001.0000000000000 ...ux 2311.1Sross 000.FFFFFFE000000 BFF.0000002000000 2321.1Sross soft: 801.0000000000000 ....x syst: 801.0000000000000 ...ux 2331.1Sross 000.FFFFFFF000000 3FF.0000001000000 2341.1Sross soft: 001.0000000000000 ....x syst: 001.0000000000000 ...ux 2351.1Sross 000.FFFFFFF000000 BFF.0000001000000 2361.1Sross soft: 801.0000000000000 ....x syst: 801.0000000000000 ...ux 2371.1Sross 000.FFFFFFF800000 3FF.0000000800000 2381.1Sross soft: 001.0000000000000 ....x syst: 001.0000000000000 ...ux 2391.1Sross Errors found in float64_mul, rounding down: 2401.1Sross 000.FFFFFFE000000 BFF.0000002000000 2411.1Sross soft: 801.0000000000000 ....x syst: 801.0000000000000 ...ux 2421.1Sross 000.FFFFFFF000000 BFF.0000001000000 2431.1Sross soft: 801.0000000000000 ....x syst: 801.0000000000000 ...ux 2441.1Sross 000.FFFFFFF800000 BFF.0000000800000 2451.1Sross soft: 801.0000000000000 ....x syst: 801.0000000000000 ...ux 2461.1Sross 000.FFFFFFFC00000 BFF.0000000400000 2471.1Sross soft: 801.0000000000000 ....x syst: 801.0000000000000 ...ux 2481.1Sross 000.FFFFFFFE00000 BFF.0000000200000 2491.1Sross soft: 801.0000000000000 ....x syst: 801.0000000000000 ...ux 2501.1Sross Errors found in float64_mul, rounding up: 2511.1Sross 000.FFFFFFE000000 3FF.0000002000000 2521.1Sross soft: 001.0000000000000 ....x syst: 001.0000000000000 ...ux 2531.1Sross 000.FFFFFFF000000 3FF.0000001000000 2541.1Sross soft: 001.0000000000000 ....x syst: 001.0000000000000 ...ux 2551.1Sross 000.FFFFFFF800000 3FF.0000000800000 2561.1Sross soft: 001.0000000000000 ....x syst: 001.0000000000000 ...ux 2571.1Sross 000.FFFFFFFC00000 3FF.0000000400000 2581.1Sross soft: 001.0000000000000 ....x syst: 001.0000000000000 ...ux 2591.1Sross 000.FFFFFFFE00000 3FF.0000000200000 2601.1Sross soft: 001.0000000000000 ....x syst: 001.0000000000000 ...ux 2611.1Sross 2621.1Sross- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 2631.1Sross 2641.1Sross 2651.1Sross------------------------------------------------------------------------------- 2661.1SrossSun SPARCstation 10's 2671.1Sross 2681.1SrossLike other SPARCstations, some SPARCstation 10's are inconsistent regarding 2691.1Srossunderflow tininess, detecting it after rounding for single- and double- 2701.1Srossprecision operations and before rounding for quadruple-precision operations. 2711.1SrossThe following bug has also been observed. 2721.1Sross 2731.1Sross- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 2741.1Srossfloat32_to_int32_round_to_zero, float64_to_int32_round_to_zero 2751.1Sross 2761.1Sross-- Single- and double-precision NaNs are converted to the integer zero. 2771.1Sross (The invalid exception flag is raised correctly.) 2781.1Sross 2791.1Sross Errors found in float32_to_int32_round_to_zero: 2801.1Sross 8FF.5D36AC soft: 7FFFFFFF v.... syst: 00000000 v.... 2811.1Sross 0FF.7FFFC0 soft: 7FFFFFFF v.... syst: 00000000 v.... 2821.1Sross 8FF.7C0000 soft: 7FFFFFFF v.... syst: 00000000 v.... 2831.1Sross 0FF.2AB7ED soft: 7FFFFFFF v.... syst: 00000000 v.... 2841.1Sross 0FF.03FFFF soft: 7FFFFFFF v.... syst: 00000000 v.... 2851.1Sross Errors found in float64_to_int32_round_to_zero: 2861.1Sross 7FF.45AD84DB2524A soft: 7FFFFFFF v.... syst: 00000000 v.... 2871.1Sross 7FF.CFEE063EE0512 soft: 7FFFFFFF v.... syst: 00000000 v.... 2881.1Sross 7FF.89FF03AB7DBA2 soft: 7FFFFFFF v.... syst: 00000000 v.... 2891.1Sross 7FF.FFFFFFFFFF800 soft: 7FFFFFFF v.... syst: 00000000 v.... 2901.1Sross FFF.68A6410E91BF6 soft: 7FFFFFFF v.... syst: 00000000 v.... 2911.1Sross 2921.1Sross- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 2931.1Sross 2941.1Sross 2951.1Sross------------------------------------------------------------------------------- 2961.1SrossHP Precision Architecture processors, with HP-UX prior to version 10.10 2971.1Sross 2981.1Sross- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 2991.1Srossfloat32_to_int32_round_to_zero, float64_to_int32_round_to_zero 3001.1Sross 3011.1Sross-- When the floating-point value is too large, the overflow and inexact 3021.1Sross exception flags are raised instead of the invalid flag. 3031.1Sross 3041.1Sross Errors found in float32_to_int32_round_to_zero: 3051.1Sross 89E.000007 soft: 80000000 v.... syst: 80000000 ..o.x 3061.1Sross 0A2.000020 soft: 7FFFFFFF v.... syst: 7FFFFFFF ..o.x 3071.1Sross 8FA.7C0000 soft: 80000000 v.... syst: 80000000 ..o.x 3081.1Sross Errors found in float64_to_int32_round_to_zero: 3091.1Sross 7FD.0448700002F1C soft: 7FFFFFFF v.... syst: 7FFFFFFF ..o.x 3101.1Sross DAA.F000000000000 soft: 80000000 v.... syst: 80000000 ..o.x 3111.1Sross 41E.063DA00005E65 soft: 7FFFFFFF v.... syst: 7FFFFFFF ..o.x 3121.1Sross 47E.FFFF800000000 soft: 7FFFFFFF v.... syst: 7FFFFFFF ..o.x 3131.1Sross 51F.0000000000004 soft: 7FFFFFFF v.... syst: 7FFFFFFF ..o.x 3141.1Sross DDA.0000001FFFFFF soft: 80000000 v.... syst: 80000000 ..o.x 3151.1Sross D70.00000000003FF soft: 80000000 v.... syst: 80000000 ..o.x 3161.1Sross C7E.0000100000000 soft: 80000000 v.... syst: 80000000 ..o.x 3171.1Sross 47E.000000000007F soft: 7FFFFFFF v.... syst: 7FFFFFFF ..o.x 3181.1Sross D57.000000000FFFF soft: 80000000 v.... syst: 80000000 ..o.x 3191.1Sross 3201.1Sross 3211.1Sross- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 3221.1Sross 3231.1Sross 324