diff options
author | tma <tma@edf5b092-35ff-0310-97b2-ce42778d08ea> | 2005-10-04 15:18:22 +0000 |
---|---|---|
committer | tma <tma@edf5b092-35ff-0310-97b2-ce42778d08ea> | 2005-10-04 15:18:22 +0000 |
commit | 1c7864f6d4380797b07c7149111066b61f69f689 (patch) | |
tree | 59057c26f97fdf846b0193e852eeea7e707a9e20 /code/tools/lcc/x86/win32/tst/paranoia.1bk | |
parent | 91db83f0cc7c564ff6c853eeb4e790732dae81cd (diff) | |
download | ioquake3-aero-1c7864f6d4380797b07c7149111066b61f69f689.tar.gz ioquake3-aero-1c7864f6d4380797b07c7149111066b61f69f689.zip |
* Moved lcc and q3asm into code/tools
git-svn-id: svn://svn.icculus.org/quake3/trunk@134 edf5b092-35ff-0310-97b2-ce42778d08ea
Diffstat (limited to 'code/tools/lcc/x86/win32/tst/paranoia.1bk')
-rw-r--r-- | code/tools/lcc/x86/win32/tst/paranoia.1bk | 179 |
1 files changed, 179 insertions, 0 deletions
diff --git a/code/tools/lcc/x86/win32/tst/paranoia.1bk b/code/tools/lcc/x86/win32/tst/paranoia.1bk new file mode 100644 index 0000000..5d8432b --- /dev/null +++ b/code/tools/lcc/x86/win32/tst/paranoia.1bk @@ -0,0 +1,179 @@ +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-016 . + +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+000 . +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+000) ^ (-1.02200000000000000e+003) +only underflow should afflict the expression + (2.00000000000000000e+000) ^ (-1.02200000000000000e+003); +actually calculating yields: 0.00000000000000000e+000 . +This computed value is O.K. + +Testing X^((X + 1) / (X - 1)) vs. exp(2) = 7.38905609893065220e+000 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 = -1.#INF0000000000000e+000 . +Seems O.K. +Overflow threshold is V = 1.79769313486231570e+308 . +Overflow saturates at V0 = 1.#INF0000000000000e+000 . +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 ... 1.#INF000e+000 . + + Trying to compute 0 / 0 produces ... -1.#IND000e+000 . + +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, +except for possibly Double Rounding during Gradual Underflow. +The arithmetic diagnosed appears to be Excellent! +END OF TEST. |