Paranoia Results on PowerPC
Joel Sherrill
joel.sherrill at oarcorp.com
Mon Jul 23 20:16:31 UTC 2007
Eric Norum wrote:
> Looks like this may be a compiler issue (!)
Which version of gcc are you using natively?
>
>
> With no optimizations I see no problems:
> norume at ctlstrmvid0 215> gcc
> /usr/local/rtems/src/4.7.1/www.rtems.org/ftp/pub/rtems/4.7.1/rtems-4.7.1/testsuites/samples/paranoia/paranoia.c
>
> norume at ctlstrmvid0 216> yes | ./a.out
> a.out version 1.1 [cygnus]
> Lest this program stop prematurely, i.e. before displaying
>
> `END OF TEST',
>
> try to persuade the computer NOT to terminate execution when an
> error like Over/Underflow or Division by Zero occurs, but rather
> to persevere with a surrogate value after, perhaps, displaying some
> warning. If persuasion avails naught, don't despair but run this
> program anyway to see how many milestones it passes, and then
> amend it to make further progress.
>
> Answer questions with Y, y, N or n (unless otherwise indicated).
>
>
> To continue, press RETURN
> Diagnosis resumes after milestone Number 0 Page: 1
>
> Users are invited to help debug and augment this program so it will
> cope with unanticipated and newly uncovered arithmetic pathologies.
>
> Please send suggestions and interesting results to
> Richard Karpinski
> Computer Center U-76
> University of California
> San Francisco, CA 94143-0704, USA
>
> In doing so, please include the following information:
> Precision: double;
> Version: 10 February 1989;
> Computer:
>
> Compiler:
>
> Optimization level:
>
> Other relevant compiler options:
> Lest this program stop prematurely, i.e. before displaying
>
> `END OF TEST',
>
> try to persuade the computer NOT to terminate execution when an
> error like Over/Underflow or Division by Zero occurs, but rather
> to persevere with a surrogate value after, perhaps, displaying some
> warning. If persuasion avails naught, don't despair but run this
> program anyway to see how many milestones it passes, and then
> amend it to make further progress.
>
> Answer questions with Y, y, N or n (unless otherwise indicated).
>
>
> To continue, press RETURN
> Diagnosis resumes after milestone Number 1 Page: 2
>
> Users are invited to help debug and augment this program so it will
> cope with unanticipated and newly uncovered arithmetic pathologies.
>
> Please send suggestions and interesting results to
> Richard Karpinski
> Computer Center U-76
> University of California
> San Francisco, CA 94143-0704, USA
>
> In doing so, please include the following information:
> Precision: double;
> Version: 10 February 1989;
> Computer:
>
> Compiler:
>
> Optimization level:
>
> Other relevant compiler options:
>
> To continue, press RETURN
> Diagnosis resumes after milestone Number 2 Page: 3
>
> Running this program should reveal these characteristics:
> Radix = 1, 2, 4, 8, 10, 16, 100, 256 ...
> Precision = number of significant digits carried.
> U2 = Radix/Radix^Precision = One Ulp
> (OneUlpnit in the Last Place) of 1.000xxx .
> U1 = 1/Radix^Precision = One Ulp of numbers a little less than 1.0 .
> Adequacy of guard digits for Mult., Div. and Subt.
> Whether arithmetic is chopped, correctly rounded, or something else
> for Mult., Div., Add/Subt. and Sqrt.
> Whether a Sticky Bit used correctly for rounding.
> UnderflowThreshold = an underflow threshold.
> E0 and PseudoZero tell whether underflow is abrupt, gradual, or
> fuzzy.
> V = an overflow threshold, roughly.
> V0 tells, roughly, whether Infinity is represented.
> Comparisions are checked for consistency with subtraction
> and for contamination with pseudo-zeros.
> Sqrt is tested. Y^X is not tested.
> Extra-precise subexpressions are revealed but NOT YET tested.
> Decimal-Binary conversion is NOT YET tested for accuracy.
>
> To continue, press RETURN
> Diagnosis resumes after milestone Number 3 Page: 4
>
> The program attempts to discriminate among
> FLAWs, like lack of a sticky bit,
> Serious DEFECTs, like lack of a guard digit, and
> FAILUREs, like 2+2 == 5 .
> Failures may confound subsequent diagnoses.
>
> The diagnostic capabilities of this program go beyond an earlier
> program called `MACHAR', which can be found at the end of the
> book `Software Manual for the Elementary Functions' (1980) by
> W. J. Cody and W. Waite. Although both programs try to discover
> the Radix, Precision and range (over/underflow thresholds)
> of the arithmetic, this program tries to cope with a wider variety
> of pathologies, and to say how well the arithmetic is implemented.
>
> The program is based upon a conventional radix representation for
> floating-point numbers, but also allows logarithmic encoding
> as used by certain early WANG machines.
>
> BASIC version of this program (C) 1983 by Prof. W. M. Kahan;
> see source comments for more history.
>
> To continue, press RETURN
> Diagnosis resumes after milestone Number 4 Page: 5
>
> Program is now RUNNING tests on small integers:
> -1, 0, 1/2, 1, 2, 3, 4, 5, 9, 27, 32 & 240 are O.K.
>
> Searching for Radix and Precision.
> Radix = 2.000000 .
> Closest relative separation found is U1 = 1.1102230e-16 .
>
> Recalculating radix and precision
> confirms closest relative separation U1 .
> Radix confirmed.
> The number of significant digits of the Radix is 53.000000 .
>
> To continue, press RETURN
> Diagnosis resumes after milestone Number 30 Page: 6
>
> Subtraction appears to be normalized, as it should be.
> Checking for guard digit in *, /, and -.
> *, /, and - appear to have guard digits, as they should.
>
> To continue, press RETURN
> Diagnosis resumes after milestone Number 40 Page: 7
>
> Checking rounding on multiply, divide and add/subtract.
> Multiplication appears to round correctly.
> Division appears to round correctly.
> Addition/Subtraction appears to round correctly.
> Checking for sticky bit.
> Sticky bit apparently used correctly.
>
> Does Multiplication commute? Testing on 20 random pairs.
> No failures found in 20 integer pairs.
>
> Running test of square root(x).
> Testing if sqrt(X * X) == X for 20 Integers X.
> Test for sqrt monotonicity.
> sqrt has passed a test for Monotonicity.
> Testing whether sqrt is rounded or chopped.
> Square root appears to be correctly rounded.
>
> To continue, press RETURN
> Diagnosis resumes after milestone Number 90 Page: 8
>
> Testing powers Z^i for small Integers Z and i.
> ... no discrepancies found.
>
> Seeking Underflow thresholds UfThold and E0.
> Smallest strictly positive number found is E0 = 4.94066e-324 .
> Since comparison denies Z = 0, evaluating (Z + Z) / Z should be safe.
> What the machine gets for (Z + Z) / Z is 2.00000000000000000e+00 .
> This is O.K., provided Over/Underflow has NOT just been signaled.
> Underflow is gradual; it incurs Absolute Error =
> (roundoff in UfThold) < E0.
> The Underflow threshold is 2.22507385850720188e-308, below which
> calculation may suffer larger Relative error than merely roundoff.
> Since underflow occurs below the threshold
> UfThold = (2.00000000000000000e+00) ^ (-1.02200000000000000e+03)
> only underflow should afflict the expression
> (2.00000000000000000e+00) ^ (-2.04400000000000000e+03);
> actually calculating yields: 0.00000000000000000e+00 .
> This computed value is O.K.
>
> Testing X^((X + 1) / (X - 1)) vs. exp(2) = 7.38905609893065218e+00 as
> X -> 1.
> Accuracy seems adequate.
> Testing powers Z^Q at four nearly extreme values.
> ... no discrepancies found.
>
>
> To continue, press RETURN
> Diagnosis resumes after milestone Number 160 Page: 9
>
> Searching for Overflow threshold:
> This may generate an error.
> Can `Z = -Y' overflow?
> Trying it on Y = -inf .
> Seems O.K.
> Overflow threshold is V = 1.79769313486231571e+308 .
> Overflow saturates at V0 = inf .
> No Overflow should be signaled for V * 1 = 1.79769313486231571e+308
> nor for V / 1 = 1.79769313486231571e+308 .
> Any overflow signal separating this * from the one
> above is a DEFECT.
>
>
> To continue, press RETURN
> Diagnosis resumes after milestone Number 190 Page: 10
>
>
> What message and/or values does Division by Zero produce?
> This can interupt your program. You can skip this part if you wish.
> Do you wish to compute 1 / 0? Trying to compute 1 / 0 produces
> ... inf .
>
> Do you wish to compute 0 / 0?
> Trying to compute 0 / 0 produces ... nan .
>
> To continue, press RETURN
> Diagnosis resumes after milestone Number 220 Page: 11
>
>
>
> No failures, defects nor flaws have been discovered.
> Rounding appears to conform to the proposed IEEE standard P754.
> The arithmetic diagnosed appears to be Excellent!
>
> A total of 2030729482 floating point exceptions were registered.
> END OF TEST.
> norume at ctlstrmvid0 217>
>
>
>
>
> However, with -O2 optimization (sic) I get the FLAW which you reported:
>
> norume at ctlstrmvid0 206> gcc -O2
> /usr/local/rtems/src/4.7.1/www.rtems.org/ftp/pub/rtems/4.7.1/rtems-4.7.1/testsuites/samples/paranoia/paranoia.c
>
> norume at ctlstrmvid0 207> ./a.out
> a.out version 1.1 [cygnus]
> Lest this program stop prematurely, i.e. before displaying
>
> `END OF TEST',
>
> try to persuade the computer NOT to terminate execution when an
> error like Over/Underflow or Division by Zero occurs, but rather
> to persevere with a surrogate value after, perhaps, displaying some
> warning. If persuasion avails naught, don't despair but run this
> program anyway to see how many milestones it passes, and then
> amend it to make further progress.
>
> Answer questions with Y, y, N or n (unless otherwise indicated).
>
>
> To continue, press RETURN
>
> Diagnosis resumes after milestone Number 0 Page: 1
>
> Users are invited to help debug and augment this program so it will
> cope with unanticipated and newly uncovered arithmetic pathologies.
>
> Please send suggestions and interesting results to
> Richard Karpinski
> Computer Center U-76
> University of California
> San Francisco, CA 94143-0704, USA
>
> In doing so, please include the following information:
> Precision: double;
> Version: 10 February 1989;
> Computer:
>
> Compiler:
>
> Optimization level:
>
> Other relevant compiler options:
> Lest this program stop prematurely, i.e. before displaying
>
> `END OF TEST',
>
> try to persuade the computer NOT to terminate execution when an
> error like Over/Underflow or Division by Zero occurs, but rather
> to persevere with a surrogate value after, perhaps, displaying some
> warning. If persuasion avails naught, don't despair but run this
> program anyway to see how many milestones it passes, and then
> amend it to make further progress.
>
> Answer questions with Y, y, N or n (unless otherwise indicated).
>
>
> To continue, press RETURN
>
> Diagnosis resumes after milestone Number 1 Page: 2
>
> Users are invited to help debug and augment this program so it will
> cope with unanticipated and newly uncovered arithmetic pathologies.
>
> Please send suggestions and interesting results to
> Richard Karpinski
> Computer Center U-76
> University of California
> San Francisco, CA 94143-0704, USA
>
> In doing so, please include the following information:
> Precision: double;
> Version: 10 February 1989;
> Computer:
>
> Compiler:
>
> Optimization level:
>
> Other relevant compiler options:
>
> To continue, press RETURN
>
> Diagnosis resumes after milestone Number 2 Page: 3
>
> Running this program should reveal these characteristics:
> Radix = 1, 2, 4, 8, 10, 16, 100, 256 ...
> Precision = number of significant digits carried.
> U2 = Radix/Radix^Precision = One Ulp
> (OneUlpnit in the Last Place) of 1.000xxx .
> U1 = 1/Radix^Precision = One Ulp of numbers a little less than 1.0 .
> Adequacy of guard digits for Mult., Div. and Subt.
> Whether arithmetic is chopped, correctly rounded, or something else
> for Mult., Div., Add/Subt. and Sqrt.
> Whether a Sticky Bit used correctly for rounding.
> UnderflowThreshold = an underflow threshold.
> E0 and PseudoZero tell whether underflow is abrupt, gradual, or
> fuzzy.
> V = an overflow threshold, roughly.
> V0 tells, roughly, whether Infinity is represented.
> Comparisions are checked for consistency with subtraction
> and for contamination with pseudo-zeros.
> Sqrt is tested. Y^X is not tested.
> Extra-precise subexpressions are revealed but NOT YET tested.
> Decimal-Binary conversion is NOT YET tested for accuracy.
>
> To continue, press RETURN
>
> Diagnosis resumes after milestone Number 3 Page: 4
>
> The program attempts to discriminate among
> FLAWs, like lack of a sticky bit,
> Serious DEFECTs, like lack of a guard digit, and
> FAILUREs, like 2+2 == 5 .
> Failures may confound subsequent diagnoses.
>
> The diagnostic capabilities of this program go beyond an earlier
> program called `MACHAR', which can be found at the end of the
> book `Software Manual for the Elementary Functions' (1980) by
> W. J. Cody and W. Waite. Although both programs try to discover
> the Radix, Precision and range (over/underflow thresholds)
> of the arithmetic, this program tries to cope with a wider variety
> of pathologies, and to say how well the arithmetic is implemented.
>
> The program is based upon a conventional radix representation for
> floating-point numbers, but also allows logarithmic encoding
> as used by certain early WANG machines.
>
> BASIC version of this program (C) 1983 by Prof. W. M. Kahan;
> see source comments for more history.
>
> To continue, press RETURN
>
> Diagnosis resumes after milestone Number 4 Page: 5
>
> Program is now RUNNING tests on small integers:
> -1, 0, 1/2, 1, 2, 3, 4, 5, 9, 27, 32 & 240 are O.K.
>
> Searching for Radix and Precision.
> Radix = 2.000000 .
> Closest relative separation found is U1 = 1.1102230e-16 .
>
> Recalculating radix and precision
> confirms closest relative separation U1 .
> Radix confirmed.
> The number of significant digits of the Radix is 53.000000 .
>
> To continue, press RETURN
>
> Diagnosis resumes after milestone Number 30 Page: 6
>
> Subtraction appears to be normalized, as it should be.
> Checking for guard digit in *, /, and -.
> *, /, and - appear to have guard digits, as they should.
>
> To continue, press RETURN
>
> Diagnosis resumes after milestone Number 40 Page: 7
>
> Checking rounding on multiply, divide and add/subtract.
> * is neither chopped nor correctly rounded.
> Division appears to round correctly.
> Addition/Subtraction appears to round correctly.
> Sticky bit used incorrectly or not at all.
> FLAW: lack(s) of guard digits or failure(s) to correctly round or chop
> (noted above) count as one flaw in the final tally below.
>
> Does Multiplication commute? Testing on 20 random pairs.
> No failures found in 20 integer pairs.
>
> Running test of square root(x).
> Testing if sqrt(X * X) == X for 20 Integers X.
> Test for sqrt monotonicity.
> sqrt has passed a test for Monotonicity.
> Testing whether sqrt is rounded or chopped.
> Square root appears to be correctly rounded.
>
> To continue, press RETURN
>
> Diagnosis resumes after milestone Number 90 Page: 8
>
> Testing powers Z^i for small Integers Z and i.
> ... no discrepancies found.
>
> Seeking Underflow thresholds UfThold and E0.
> Smallest strictly positive number found is E0 = 4.94066e-324 .
> Since comparison denies Z = 0, evaluating (Z + Z) / Z should be safe.
> What the machine gets for (Z + Z) / Z is 2.00000000000000000e+00 .
> This is O.K., provided Over/Underflow has NOT just been signaled.
> Underflow is gradual; it incurs Absolute Error =
> (roundoff in UfThold) < E0.
> The Underflow threshold is 2.22507385850720188e-308, below which
> calculation may suffer larger Relative error than merely roundoff.
> Since underflow occurs below the threshold
> UfThold = (2.00000000000000000e+00) ^ (-1.02200000000000000e+03)
> only underflow should afflict the expression
> (2.00000000000000000e+00) ^ (-2.04400000000000000e+03);
> actually calculating yields: 0.00000000000000000e+00 .
> This computed value is O.K.
>
> Testing X^((X + 1) / (X - 1)) vs. exp(2) = 7.38905609893065218e+00 as
> X -> 1.
> Accuracy seems adequate.
> Testing powers Z^Q at four nearly extreme values.
> ... no discrepancies found.
>
>
> To continue, press RETURN
>
> Diagnosis resumes after milestone Number 160 Page: 9
>
> Searching for Overflow threshold:
> This may generate an error.
> Can `Z = -Y' overflow?
> Trying it on Y = -inf .
> Seems O.K.
> Overflow threshold is V = 1.79769313486231571e+308 .
> Overflow saturates at V0 = inf .
> No Overflow should be signaled for V * 1 = 1.79769313486231571e+308
> nor for V / 1 = 1.79769313486231571e+308 .
> Any overflow signal separating this * from the one
> above is a DEFECT.
>
>
> To continue, press RETURN
>
> Diagnosis resumes after milestone Number 190 Page: 10
>
>
> What message and/or values does Division by Zero produce?
> This can interupt your program. You can skip this part if you wish.
> Do you wish to compute 1 / 0?
> O.K.
>
> Do you wish to compute 0 / 0?
> O.K.
>
> To continue, press RETURN
>
> Diagnosis resumes after milestone Number 220 Page: 11
>
>
> The number of FLAWs discovered = 1.
>
> The arithmetic diagnosed seems Satisfactory though flawed.
> END OF TEST.
> norume at ctlstrmvid0 208>
> norume at ctlstrmvid0 208>
>
>
>
>
>
>
>
> norume at ctlstrmvid0 208> uname -a
> Darwin ctlstrmvid0.aps.anl.gov 8.9.0 Darwin Kernel Version 8.9.0: Thu
> Feb 22 20:54:07 PST 2007; root:xnu-792.17.14~1/RELEASE_PPC Power
> Macintosh powerpc RackMac1,2 Darwin
> norume at ctlstrmvid0 209>
>
> On Jul 23, 2007, at 2:42 PM, Joel Sherrill wrote:
>
>> Hi,
>>
>> I have been running paranoia on psim and the gen5200
>> BSP. Both report the following as a minor flaw:;;;;
>>
>> Addition/Subtraction neither rounds nor chops.
>> Sticky bit used incorrectly or not at all.
>> TEST: lack(s) of guard digits or failure(s) to correctly round or chop
>> (noted above) count as one flaw in the final tally below
>> ERROR: Severity: FLAW: lack(s) of guard digits or failure(s) to
>> correctly round or chop
>> (noted above) count as one flaw in the final tally below.
>> PASS: lack(s) of guard digits or failure(s) to correctly round or chop
>> (noted above) count as one flaw in the final tally below
>>
>> Is this as good at the PowerPC gets? Is it possible the
>> FPSCR isn't initialized such that the results are better?
>>
>> I spotted one online result from a non-GCC compiler which
>> had the same result on the PowerPC. So I am suspicious this
>> is just the way it is.
>>
>> Does anyone have a PowerPC system to compare against? I
>> am especially interested in results from a PowerPC Mac or
>> UNIX based system.
>>
>> Thanks.
>>
>> --joel
>> _______________________________________________
>> rtems-users mailing list
>> rtems-users at rtems.com
>> http://rtems.rtems.org/mailman/listinfo/rtems-users
>
> --Eric Norum <norume at aps.anl.gov>
> Advanced Photon Source
> Argonne National Laboratory
> (630) 252-4793
>
>
More information about the users
mailing list