aboutsummaryrefslogtreecommitdiffstats
path: root/lcc/mips/irix/tst/paranoia.1bk
diff options
context:
space:
mode:
Diffstat (limited to 'lcc/mips/irix/tst/paranoia.1bk')
-rwxr-xr-xlcc/mips/irix/tst/paranoia.1bk178
1 files changed, 178 insertions, 0 deletions
diff --git a/lcc/mips/irix/tst/paranoia.1bk b/lcc/mips/irix/tst/paranoia.1bk
new file mode 100755
index 0000000..6842a77
--- /dev/null
+++ b/lcc/mips/irix/tst/paranoia.1bk
@@ -0,0 +1,178 @@
+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).
+
+
+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:
+
+Diagnosis resumes after milestone Number 1 Page: 2
+
+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.
+
+Diagnosis resumes after milestone Number 2 Page: 3
+
+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.
+
+Diagnosis resumes after milestone Number 3 Page: 4
+
+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 .
+
+Diagnosis resumes after milestone Number 30 Page: 5
+
+Subtraction appears to be normalized, as it should be.
+Checking for guard digit in *, /, and -.
+ *, /, and - appear to have guard digits, as they should.
+
+Diagnosis resumes after milestone Number 40 Page: 6
+
+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.
+
+Diagnosis resumes after milestone Number 90 Page: 7
+
+Testing powers Z^i for small Integers Z and i.
+... no discrepancis 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.22507385850720190e-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) ^ (-1.02200000000000000e+03);
+actually calculating yields: 0.00000000000000000e+00 .
+This computed value is O.K.
+
+Testing X^((X + 1) / (X - 1)) vs. exp(2) = 7.38905609893065220e+00 as X -> 1.
+Accuracy seems adequate.
+Testing powers Z^Q at four nearly extreme values.
+ ... no discrepancies found.
+
+
+Diagnosis resumes after milestone Number 160 Page: 8
+
+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.79769313486231570e+308 .
+Overflow saturates at V0 = inf .
+No Overflow should be signaled for V * 1 = 1.79769313486231570e+308
+ nor for V / 1 = 1.79769313486231570e+308 .
+Any overflow signal separating this * from the one
+above is a DEFECT.
+
+
+Diagnosis resumes after milestone Number 190 Page: 9
+
+
+What message and/or values does Division by Zero produce?
+ Trying to compute 1 / 0 produces ... inf .
+
+ Trying to compute 0 / 0 produces ... nan .
+
+Diagnosis resumes after milestone Number 220 Page: 10
+
+
+
+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!
+END OF TEST.