[ARM9_0] COMMENT: ========================================= [ARM9_0] COMMENT: Welcome to ESP - Embedded System Paranoia [ARM9_0] COMMENT: Please let me know your experiences [ARM9_0] COMMENT: and suggestions at lesh@oakcomp.co.uk or [ARM9_0] COMMENT: L.Hatton@kent.ac.uk [ARM9_0] COMMENT: [ARM9_0] COMMENT: $Revision: 1.9 $ $Date: 2004/04/13 14:21:53 $ [ARM9_0] COMMENT: This version will attempt divide by zero. [ARM9_0] COMMENT: This version uses [ARM9_0] COMMENT: This version uses [ARM9_0] COMMENT: This version uses single precision, nbits=32 [ARM9_0] COMMENT: ========================================= [ARM9_0] -------> Diagnosis resuming after Milestone 0, Page 1 [ARM9_0] COMMENT: -1, 0, 1/2, 1, 2, 3, 4, 5, 9, 27, 32 & 240 [ARM9_0] PASSED : small integer tests are all OK. [ARM9_0] COMMENT: Searching for Radix and Precision. [ARM9_0] COMMENT: Radix = 2.0000000e+00 [ARM9_0] COMMENT: Closest relative separation found is U1 = 5.9604645e-08 [ARM9_0] COMMENT: Recalculating radix and precision [ARM9_0] COMMENT: confirms closest relative separation U1. [ARM9_0] COMMENT: Checking U1 for sanity... [ARM9_0] COMMENT: U1 is a sensible value [ARM9_0] COMMENT: Radix confirmed. [ARM9_0] -------> Diagnosis resuming after Milestone 10, Page 2 [ARM9_0] -------> Diagnosis resuming after Milestone 20, Page 3 [ARM9_0] COMMENT: The number of significant digits of the [ARM9_0] COMMENT: Radix is 2.4000000e+01 [ARM9_0] -------> Diagnosis resuming after Milestone 25, Page 4 [ARM9_0] -------> Diagnosis resuming after Milestone 30, Page 5 [ARM9_0] COMMENT: Subtraction appears to be normalized, as it should be. [ARM9_0] COMMENT: Checking for guard digit in *, / and -. [ARM9_0] PASSED : *, /, and - appear to have guard digits, as they should. [ARM9_0] -------> Diagnosis resuming after Milestone 35, Page 6 [ARM9_0] COMMENT: Checking rounding on multiply, divide and add/subtract. [ARM9_0] PASSED : Multiplication appears to round correctly. [ARM9_0] -------> Diagnosis resuming after Milestone 40, Page 7 [ARM9_0] PASSED : Division appears to round correctly. [ARM9_0] -------> Diagnosis resuming after Milestone 45, Page 8 [ARM9_0] COMMENT: Addition/Subtraction neither rounds nor chops. [ARM9_0] COMMENT: Sticky bit used incorrectly or not at all. [ARM9_0] FLAW : Flaws are present due to lack of guard digits or round/chop failures [ARM9_0] -------> Diagnosis resuming after Milestone 50, Page 9 [ARM9_0] COMMENT: Testing multiplicative commutation [ARM9_0] COMMENT: with random pairs, trials = 20 [ARM9_0] PASSED : No failures found during these trials. [ARM9_0] -------> Diagnosis resuming after Milestone 60, Page 10 [ARM9_0] COMMENT: Running test of exp(log)). [ARM9_0] COMMENT: random X, (exp(log(x)) - x) trials = 20 [ARM9_0] -------> Diagnosis resuming after Milestone 64, Page 11 [ARM9_0] COMMENT: Running test of difference of two squares). [ARM9_0] COMMENT: integer X, (X**2-Y**2) - (X-Y)(X+Y) trials = 20 [ARM9_0] -------> Diagnosis resuming after Milestone 65, Page 12 [ARM9_0] COMMENT: Running transcendental test 1. [ARM9_0] COMMENT: random X, (sin(X)**2+cos(X)**2) - 1.0 trials = 20 [ARM9_0] -------> Diagnosis resuming after Milestone 66, Page 13 [ARM9_0] COMMENT: Running transcendental test 2. [ARM9_0] COMMENT: random X, sin(4X) identity trials = 20 [ARM9_0] -------> Diagnosis resuming after Milestone 67, Page 14 [ARM9_0] COMMENT: Running hyperbolic test 1. [ARM9_0] COMMENT: random X, (cosh(X)**2-sinh(X)**2) - 1.0 trials = 20 [ARM9_0] -------> Diagnosis resuming after Milestone 68, Page 15 [ARM9_0] COMMENT: Running test of square root(x). [ARM9_0] COMMENT: Testing integer X, sqrt(X * X) = X, trials = 20 [ARM9_0] COMMENT: Test for sqrt monotonicity. [ARM9_0] PASSED : sqrt has passed a test for Monotonicity. [ARM9_0] -------> Diagnosis resuming after Milestone 70, Page 16 [ARM9_0] -------> Diagnosis resuming after Milestone 80, Page 17 [ARM9_0] COMMENT: Testing whether sqrt is rounded or chopped. [ARM9_0] PASSED : Square root appears to be correctly rounded. [ARM9_0] -------> Diagnosis resuming after Milestone 85, Page 18 [ARM9_0] -------> Diagnosis resuming after Milestone 90, Page 19 [ARM9_0] COMMENT: Testing powers Z^i for small Integers Z and i. [ARM9_0] -------> Diagnosis resuming after Milestone 91, Page 20 [ARM9_0] PASSED : ... no discrepancies found. [ARM9_0] -------> Diagnosis resuming after Milestone 100, Page 21 [ARM9_0] COMMENT: Seeking Underflow thresholds UfThold and E0. [ARM9_0] -------> Diagnosis resuming after Milestone 110, Page 22 [ARM9_0] COMMENT: Smallest strictly positive number found [ARM9_0] COMMENT: is E0 = 1.1754944e-38 [ARM9_0] COMMENT: Since comparison denies Z = 0, evaluating [ARM9_0] COMMENT: (Z + Z) / Z should be safe. [ARM9_0] COMMENT: (Z+Z)/Z is OK provided Over/Underflow [ARM9_0] COMMENT: has NOT just been signaled. [ARM9_0] -------> Diagnosis resuming after Milestone 120, Page 23 [ARM9_0] FLAW : [ARM9_0] COMMENT: X != Z but X - Z = Zero [ARM9_0] COMMENT: X = 1.6163047e-38, Z = 1.1754944e-38 [ARM9_0] COMMENT: This is OK only if underflow signalled. [ARM9_0] COMMENT: X / Z = 1 + 3.7500000e-01 [ARM9_0] COMMENT: The Underflow threshold is 1.1754944e-38 [ARM9_0] COMMENT: Below this, a calculation may suffer larger Relative [ARM9_0] COMMENT: error than merely roundoff. [ARM9_0] -------> Diagnosis resuming after Milestone 121, Page 24 [ARM9_0] COMMENT: Since underflow occurs below the threshold [ARM9_0] COMMENT: UfThold = 2.0000000e+00 ^ -1.2600000e+02 [ARM9_0] COMMENT: only underflow could affect this expression. [ARM9_0] COMMENT: calculating yields: 1.4240473e-306 [ARM9_0] SDEFECT: this is not between 0 and underflow [ARM9_0] [ARM9_0] COMMENT: threshold = 1.1754944e-38 [ARM9_0] -------> Diagnosis resuming after Milestone 130, Page 25 [ARM9_0] COMMENT: As X -> 1, Testing X^((X + 1) / (X - 1)) against exp(2). [ARM9_0] COMMENT: exp(2) = 7.3890557e+00 [ARM9_0] PASSED : Accuracy seems adequate. [ARM9_0] -------> Diagnosis resuming after Milestone 140, Page 26 [ARM9_0] COMMENT: Testing powers Z^Q at four nearly extreme values. [ARM9_0] PASSED : ... no discrepancies found. [ARM9_0] -------> Diagnosis resuming after Milestone 150, Page 27 [ARM9_0] -------> Diagnosis resuming after Milestone 160, Page 28 [ARM9_0] COMMENT: Searching for Overflow threshold: [ARM9_0] COMMENT: This may generate an error. [ARM9_0] COMMENT: Can `Z = -Y' overflow? [ARM9_0] COMMENT: Trying it on Y = 1.4240473e-306 [ARM9_0] PASSED : Seems O.K. [ARM9_0] COMMENT: Overflow threshold is V = 3.4028235e+38 [ARM9_0] COMMENT: Overflow saturates at V0 = 1.4240473e-306 [ARM9_0] COMMENT: No overflow should be signalled for V*1 = 3.4028235e+38 [ARM9_0] COMMENT: No overflow should be signalled for V/1 = 3.4028235e+38 [ARM9_0] COMMENT: Any overflow separating V*1 from [ARM9_0] COMMENT: V above is a DEFECT. [ARM9_0] -------> Diagnosis resuming after Milestone 161, Page 29 [ARM9_0] -------> Diagnosis resuming after Milestone 170, Page 30 [ARM9_0] -------> Diagnosis resuming after Milestone 175, Page 31 [ARM9_0] -------> Diagnosis resuming after Milestone 180, Page 32 [ARM9_0] -------> Diagnosis resuming after Milestone 190, Page 33 [ARM9_0] -------> Diagnosis resuming after Milestone 191, Page 34 [ARM9_0] -------> Diagnosis resuming after Milestone 200, Page 35 [ARM9_0] COMMENT: Trying to compute 1/0 gives 0.0000000e+00 [ARM9_0] COMMENT: Trying to compute 0/0 gives 0.0000000e+00 [ARM9_0] -------> Diagnosis resuming after Milestone 210, Page 36 [ARM9_0] COMMENT: ========================================= [ARM9_0] COMMENT: Embedded System Paranoia SUMMARY [ARM9_0] COMMENT: SINGLE PRECISION 32 bits [ARM9_0] COMMENT: Closest separation = 5.9604645e-08 [ARM9_0] COMMENT: [ARM9_0] COMMENT: Number of FAILUREs encountered = 0 [ARM9_0] COMMENT: Number of SERIOUS DEFECTs discovered = 1 [ARM9_0] COMMENT: Number of DEFECTs discovered = 0 [ARM9_0] COMMENT: Number of FLAWs discovered = 2 [ARM9_0] COMMENT: [ARM9_0] FAILED : The arithmetic diagnosed has unacceptable [ARM9_0] COMMENT: Serious DEFECT. [ARM9_0] COMMENT: [ARM9_0] COMMENT: Rating ... [ARM9_0] COMMENT: [ARM9_0] COMMENT: Excellent [ARM9_0] COMMENT: Very good [ARM9_0] COMMENT: Good [ARM9_0] COMMENT: Acceptable [ARM9_0] COMMENT: =====> Unacceptable [ARM9_0] COMMENT: Broken [ARM9_0] COMMENT: [ARM9_0] COMMENT: ----------------------------------------- [ARM9_0] COMMENT: MATHS LIBRARY TESTS [ARM9_0] COMMENT: (should all give zero) [ARM9_0] COMMENT: [ARM9_0] COMMENT: Basic identities [ARM9_0] COMMENT: ln(1.0) = [ARM9_0] COMMENT: 0.0000000e+00 [ARM9_0] COMMENT: exp(0.0) - 2.718281828459045235360287 = [ARM9_0] COMMENT: 0.0000000e+00 [ARM9_0] COMMENT: Basic tests (Random over range 0<=X<=1) [ARM9_0] COMMENT: Test, exp(log(X)) - X = [ARM9_0] COMMENT: -2.9802322e-08 -> 3.7252903e-09 [ARM9_0] COMMENT: [ARM9_0] COMMENT: Transcendental identities [ARM9_0] COMMENT: Test, sin(1.0) - 0.84147098480789650665250 = [ARM9_0] COMMENT: 0.0000000e+00 [ARM9_0] COMMENT: Test, cos(1.0) - 0.54030230586813971740094 = [ARM9_0] COMMENT: 0.0000000e+00 [ARM9_0] COMMENT: Test, asin(1.0) - (pi/2) = [ARM9_0] COMMENT: 0.0000000e+00 [ARM9_0] COMMENT: Test, acos(0.0) - (pi/2) = [ARM9_0] COMMENT: 0.0000000e+00 [ARM9_0] COMMENT: Test, atan(1.0) - (pi/4) = [ARM9_0] COMMENT: 0.0000000e+00 [ARM9_0] COMMENT: Transcendental tests (Random over range 0<=X<=1) [ARM9_0] COMMENT: Test, sin**2(X)+cos**2(X)-1.0 = [ARM9_0] COMMENT: -5.9604645e-08 -> 1.1920929e-07 [ARM9_0] COMMENT: Test, sin(4X)-(8.0*cos**4(X)*tan(X))+(4.0*cos(X)*sin(X)) = [ARM9_0] COMMENT: -4.7683716e-07 -> 4.7683716e-07 [ARM9_0] COMMENT: [ARM9_0] COMMENT: Hyperbolic identities [ARM9_0] COMMENT: Test, sinh(0.0) = [ARM9_0] COMMENT: 0.0000000e+00 [ARM9_0] COMMENT: Test, cosh(0.0) - 1.0 = [ARM9_0] COMMENT: 0.0000000e+00 [ARM9_0] COMMENT: Hyperbolic tests (Random over range 0<=X<=1) [ARM9_0] COMMENT: Test, cosh**2(X)-sinh**2(X)-1.0 = [ARM9_0] COMMENT: -1.1920929e-07 -> 1.1920929e-07 [ARM9_0] COMMENT: [ARM9_0] COMMENT: END OF TEST. [ARM9_0] COMMENT: ========================================= [ARM9_0] enter main() enter taskFxn() =========================================================================================================================== =========================================================================================================================== [ARM9_0] COMMENT: ========================================= [ARM9_0] COMMENT: Welcome to ESP - Embedded System Paranoia [ARM9_0] COMMENT: Please let me know your experiences [ARM9_0] COMMENT: and suggestions at lesh@oakcomp.co.uk or [ARM9_0] COMMENT: L.Hatton@kent.ac.uk [ARM9_0] COMMENT: [ARM9_0] COMMENT: $Revision: 1.9 $ $Date: 2004/04/13 14:21:53 $ [ARM9_0] COMMENT: This version will attempt divide by zero. [ARM9_0] COMMENT: This version uses [ARM9_0] COMMENT: This version uses [ARM9_0] COMMENT: This version uses double precision. nbits=64 [ARM9_0] COMMENT: ========================================= [ARM9_0] -------> Diagnosis resuming after Milestone 0, Page 1 [ARM9_0] COMMENT: -1, 0, 1/2, 1, 2, 3, 4, 5, 9, 27, 32 & 240 [ARM9_0] PASSED : small integer tests are all OK. [ARM9_0] COMMENT: Searching for Radix and Precision. [ARM9_0] COMMENT: Radix = 2.00000000000000000e+00 [ARM9_0] COMMENT: Closest relative separation found is U1 = 1.11022302462515654e-16 [ARM9_0] COMMENT: Recalculating radix and precision [ARM9_0] COMMENT: confirms closest relative separation U1. [ARM9_0] COMMENT: Checking U1 for sanity... [ARM9_0] COMMENT: U1 is a sensible value [ARM9_0] COMMENT: Radix confirmed. [ARM9_0] -------> Diagnosis resuming after Milestone 10, Page 2 [ARM9_0] -------> Diagnosis resuming after Milestone 20, Page 3 [ARM9_0] COMMENT: The number of significant digits of the [ARM9_0] COMMENT: Radix is 5.29999999999999982e+01 [ARM9_0] -------> Diagnosis resuming after Milestone 25, Page 4 [ARM9_0] -------> Diagnosis resuming after Milestone 30, Page 5 [ARM9_0] COMMENT: Subtraction appears to be normalized, as it should be. [ARM9_0] COMMENT: Checking for guard digit in *, / and -. [ARM9_0] PASSED : *, /, and - appear to have guard digits, as they should. [ARM9_0] -------> Diagnosis resuming after Milestone 35, Page 6 [ARM9_0] COMMENT: Checking rounding on multiply, divide and add/subtract. [ARM9_0] PASSED : Multiplication appears to round correctly. [ARM9_0] -------> Diagnosis resuming after Milestone 40, Page 7 [ARM9_0] FLAW : Division neither chopped nor correctly rounded. [ARM9_0] -------> Diagnosis resuming after Milestone 45, Page 8 [ARM9_0] COMMENT: Addition/Subtraction neither rounds nor chops. [ARM9_0] COMMENT: Sticky bit used incorrectly or not at all. [ARM9_0] FLAW : Flaws are present due to lack of guard digits or round/chop failures [ARM9_0] -------> Diagnosis resuming after Milestone 50, Page 9 [ARM9_0] COMMENT: Testing multiplicative commutation [ARM9_0] COMMENT: with random pairs, trials = 20 [ARM9_0] PASSED : No failures found during these trials. [ARM9_0] -------> Diagnosis resuming after Milestone 60, Page 10 [ARM9_0] COMMENT: Running test of exp(log)). [ARM9_0] COMMENT: random X, (exp(log(x)) - x) trials = 20 [ARM9_0] -------> Diagnosis resuming after Milestone 64, Page 11 [ARM9_0] COMMENT: Running test of difference of two squares). [ARM9_0] COMMENT: integer X, (X**2-Y**2) - (X-Y)(X+Y) trials = 20 [ARM9_0] -------> Diagnosis resuming after Milestone 65, Page 12 [ARM9_0] COMMENT: Running transcendental test 1. [ARM9_0] COMMENT: random X, (sin(X)**2+cos(X)**2) - 1.0 trials = 20 [ARM9_0] -------> Diagnosis resuming after Milestone 66, Page 13 [ARM9_0] COMMENT: Running transcendental test 2. [ARM9_0] COMMENT: random X, sin(4X) identity trials = 20 [ARM9_0] -------> Diagnosis resuming after Milestone 67, Page 14 [ARM9_0] COMMENT: Running hyperbolic test 1. [ARM9_0] COMMENT: random X, (cosh(X)**2-sinh(X)**2) - 1.0 trials = 20 [ARM9_0] -------> Diagnosis resuming after Milestone 68, Page 15 [ARM9_0] COMMENT: Running test of square root(x). [ARM9_0] COMMENT: Testing integer X, sqrt(X * X) = X, trials = 20 [ARM9_0] COMMENT: Test for sqrt monotonicity. [ARM9_0] PASSED : sqrt has passed a test for Monotonicity. [ARM9_0] -------> Diagnosis resuming after Milestone 70, Page 16 [ARM9_0] -------> Diagnosis resuming after Milestone 80, Page 17 [ARM9_0] COMMENT: Testing whether sqrt is rounded or chopped. [ARM9_0] FLAW : Square root is neither chopped nor correctly rounded. [ARM9_0] COMMENT: Observed errors run from [ARM9_0] COMMENT: -6.04938284196317166e-01 to 5.00000000000000000e-01 ulps. [ARM9_0] -------> Diagnosis resuming after Milestone 85, Page 18 [ARM9_0] -------> Diagnosis resuming after Milestone 90, Page 19 [ARM9_0] COMMENT: Testing powers Z^i for small Integers Z and i. [ARM9_0] -------> Diagnosis resuming after Milestone 91, Page 20 [ARM9_0] PASSED : ... no discrepancies found. [ARM9_0] -------> Diagnosis resuming after Milestone 100, Page 21 [ARM9_0] COMMENT: Seeking Underflow thresholds UfThold and E0. [ARM9_0] -------> Diagnosis resuming after Milestone 110, Page 22 [ARM9_0] COMMENT: Smallest strictly positive number found [ARM9_0] COMMENT: is E0 = 2.22507385850721384e-308 [ARM9_0] COMMENT: Since comparison denies Z = 0, evaluating [ARM9_0] COMMENT: (Z + Z) / Z should be safe. [ARM9_0] COMMENT: (Z+Z)/Z is OK provided Over/Underflow [ARM9_0] COMMENT: has NOT just been signaled. [ARM9_0] -------> Diagnosis resuming after Milestone 120, Page 23 [ARM9_0] FLAW : [ARM9_0] COMMENT: X != Z but X - Z = Zero [ARM9_0] COMMENT: X = 3.05947655544741171e-308, Z = 2.22507385850721384e-308 [ARM9_0] COMMENT: This is OK only if underflow signalled. [ARM9_0] COMMENT: X / Z = 1 + 3.75000000000000000e-01 [ARM9_0] COMMENT: The Underflow threshold is 2.22507385850721384e-308 [ARM9_0] COMMENT: Below this, a calculation may suffer larger Relative [ARM9_0] COMMENT: error than merely roundoff. [ARM9_0] -------> Diagnosis resuming after Milestone 121, Page 24 [ARM9_0] COMMENT: Since underflow occurs below the threshold [ARM9_0] COMMENT: UfThold = 2.00000000000000000e+00 ^ -1.02200000000000002e+03 [ARM9_0] COMMENT: only underflow could affect this expression. [ARM9_0] COMMENT: calculating yields: 0.00000000000000000e+00 [ARM9_0] PASSED : This computed value is O.K. [ARM9_0] -------> Diagnosis resuming after Milestone 130, Page 25 [ARM9_0] COMMENT: As X -> 1, Testing X^((X + 1) / (X - 1)) against exp(2). [ARM9_0] COMMENT: exp(2) = 7.38905609893065218e+00 [ARM9_0] PASSED : Accuracy seems adequate. [ARM9_0] -------> Diagnosis resuming after Milestone 140, Page 26 [ARM9_0] COMMENT: Testing powers Z^Q at four nearly extreme values. [ARM9_0] PASSED : ... no discrepancies found. [ARM9_0] -------> Diagnosis resuming after Milestone 150, Page 27 [ARM9_0] -------> Diagnosis resuming after Milestone 160, Page 28 [ARM9_0] COMMENT: Searching for Overflow threshold: [ARM9_0] COMMENT: This may generate an error. [ARM9_0] COMMENT: Can `Z = -Y' overflow? [ARM9_0] COMMENT: Trying it on Y = -Inf [ARM9_0] PASSED : Seems O.K. [ARM9_0] COMMENT: Overflow threshold is V = 1.79769313486230820e+308 [ARM9_0] COMMENT: Overflow saturates at V0 = +Inf [ARM9_0] COMMENT: No overflow should be signalled for V*1 = 1.79769313486230820e+308 [ARM9_0] COMMENT: No overflow should be signalled for V/1 = 1.79769313486230820e+308 [ARM9_0] COMMENT: Any overflow separating V*1 from [ARM9_0] COMMENT: V above is a DEFECT. [ARM9_0] -------> Diagnosis resuming after Milestone 161, Page 29 [ARM9_0] -------> Diagnosis resuming after Milestone 170, Page 30 [ARM9_0] -------> Diagnosis resuming after Milestone 175, Page 31 [ARM9_0] -------> Diagnosis resuming after Milestone 180, Page 32 [ARM9_0] -------> Diagnosis resuming after Milestone 190, Page 33 [ARM9_0] -------> Diagnosis resuming after Milestone 191, Page 34 [ARM9_0] -------> Diagnosis resuming after Milestone 200, Page 35 [ARM9_0] COMMENT: Trying to compute 1/0 gives 0.00000000000000000e+00 [ARM9_0] COMMENT: Trying to compute 0/0 gives 0.00000000000000000e+00 [ARM9_0] -------> Diagnosis resuming after Milestone 210, Page 36 [ARM9_0] COMMENT: ========================================= [ARM9_0] COMMENT: Embedded System Paranoia SUMMARY [ARM9_0] COMMENT: DOUBLE PRECISION 64 bits [ARM9_0] COMMENT: Closest separation = 1.11022302462515654e-16 [ARM9_0] COMMENT: [ARM9_0] COMMENT: Number of FAILUREs encountered = 0 [ARM9_0] COMMENT: Number of SERIOUS DEFECTs discovered = 0 [ARM9_0] COMMENT: Number of DEFECTs discovered = 0 [ARM9_0] COMMENT: Number of FLAWs discovered = 4 [ARM9_0] COMMENT: [ARM9_0] PASSED : The arithmetic diagnosed seems satisfactory [ARM9_0] COMMENT: though flawed. [ARM9_0] COMMENT: [ARM9_0] COMMENT: Rating ... [ARM9_0] COMMENT: [ARM9_0] COMMENT: Excellent [ARM9_0] COMMENT: Very good [ARM9_0] COMMENT: =====> Good [ARM9_0] COMMENT: Acceptable [ARM9_0] COMMENT: Unacceptable [ARM9_0] COMMENT: Broken [ARM9_0] COMMENT: [ARM9_0] COMMENT: ----------------------------------------- [ARM9_0] COMMENT: MATHS LIBRARY TESTS [ARM9_0] COMMENT: (should all give zero) [ARM9_0] COMMENT: [ARM9_0] COMMENT: Basic identities [ARM9_0] COMMENT: ln(1.0) = [ARM9_0] COMMENT: 0.00000000000000000e+00 [ARM9_0] COMMENT: exp(0.0) - 2.718281828459045235360287 = [ARM9_0] COMMENT: -4.44089209850062616e-16 [ARM9_0] COMMENT: Basic tests (Random over range 0<=X<=1) [ARM9_0] COMMENT: Test, exp(log(X)) - X = [ARM9_0] COMMENT: -1.11022302462515654e-16 -> 5.55111512312578270e-17 [ARM9_0] COMMENT: [ARM9_0] COMMENT: Transcendental identities [ARM9_0] COMMENT: Test, sin(1.0) - 0.84147098480789650665250 = [ARM9_0] COMMENT: 0.00000000000000000e+00 [ARM9_0] COMMENT: Test, cos(1.0) - 0.54030230586813971740094 = [ARM9_0] COMMENT: 0.00000000000000000e+00 [ARM9_0] COMMENT: Test, asin(1.0) - (pi/2) = [ARM9_0] COMMENT: 0.00000000000000000e+00 [ARM9_0] COMMENT: Test, acos(0.0) - (pi/2) = [ARM9_0] COMMENT: 0.00000000000000000e+00 [ARM9_0] COMMENT: Test, atan(1.0) - (pi/4) = [ARM9_0] COMMENT: 0.00000000000000000e+00 [ARM9_0] COMMENT: Transcendental tests (Random over range 0<=X<=1) [ARM9_0] COMMENT: Test, sin**2(X)+cos**2(X)-1.0 = [ARM9_0] COMMENT: 0.00000000000000000e+00 -> 2.22044604925031308e-16 [ARM9_0] COMMENT: Test, sin(4X)-(8.0*cos**4(X)*tan(X))+(4.0*cos(X)*sin(X)) = [ARM9_0] COMMENT: -4.44089209850062616e-16 -> 6.66133814775093924e-16 [ARM9_0] COMMENT: [ARM9_0] COMMENT: Hyperbolic identities [ARM9_0] COMMENT: Test, sinh(0.0) = [ARM9_0] COMMENT: 0.00000000000000000e+00 [ARM9_0] COMMENT: Test, cosh(0.0) - 1.0 = [ARM9_0] COMMENT: 0.00000000000000000e+00 [ARM9_0] COMMENT: Hyperbolic tests (Random over range 0<=X<=1) [ARM9_0] COMMENT: Test, cosh**2(X)-sinh**2(X)-1.0 = [ARM9_0] COMMENT: -4.44089209850062616e-16 -> 6.66133814775093924e-16 [ARM9_0] COMMENT: [ARM9_0] COMMENT: END OF TEST. [ARM9_0] COMMENT: ========================================= [ARM9_0] enter main() enter taskFxn() =========================================================================================================================== =========================================================================================================================== [C674X_0] COMMENT: ========================================= [C674X_0] COMMENT: Welcome to ESP - Embedded System Paranoia [C674X_0] COMMENT: Please let me know your experiences [C674X_0] COMMENT: and suggestions at lesh@oakcomp.co.uk or [C674X_0] COMMENT: L.Hatton@kent.ac.uk [C674X_0] COMMENT: [C674X_0] COMMENT: $Revision: 1.9 $ $Date: 2004/04/13 14:21:53 $ [C674X_0] COMMENT: This version will attempt divide by zero. [C674X_0] COMMENT: This version uses [C674X_0] COMMENT: This version uses [C674X_0] COMMENT: This version uses single precision, nbits=32 [C674X_0] COMMENT: ========================================= [C674X_0] -------> Diagnosis resuming after Milestone 0, Page 1 [C674X_0] COMMENT: -1, 0, 1/2, 1, 2, 3, 4, 5, 9, 27, 32 & 240 [C674X_0] PASSED : small integer tests are all OK. [C674X_0] COMMENT: Searching for Radix and Precision. [C674X_0] COMMENT: Radix = 2.0000000e+00 [C674X_0] COMMENT: Closest relative separation found is U1 = 5.9604645e-08 [C674X_0] COMMENT: Recalculating radix and precision [C674X_0] COMMENT: confirms closest relative separation U1. [C674X_0] COMMENT: Checking U1 for sanity... [C674X_0] COMMENT: U1 is a sensible value [C674X_0] COMMENT: Radix confirmed. [C674X_0] -------> Diagnosis resuming after Milestone 10, Page 2 [C674X_0] -------> Diagnosis resuming after Milestone 20, Page 3 [C674X_0] COMMENT: The number of significant digits of the [C674X_0] COMMENT: Radix is 2.4000000e+01 [C674X_0] -------> Diagnosis resuming after Milestone 25, Page 4 [C674X_0] -------> Diagnosis resuming after Milestone 30, Page 5 [C674X_0] COMMENT: Subtraction appears to be normalized, as it should be. [C674X_0] COMMENT: Checking for guard digit in *, / and -. [C674X_0] PASSED : *, /, and - appear to have guard digits, as they should. [C674X_0] -------> Diagnosis resuming after Milestone 35, Page 6 [C674X_0] COMMENT: Checking rounding on multiply, divide and add/subtract. [C674X_0] PASSED : Multiplication appears to round correctly. [C674X_0] -------> Diagnosis resuming after Milestone 40, Page 7 [C674X_0] PASSED : Division appears to round correctly. [C674X_0] -------> Diagnosis resuming after Milestone 45, Page 8 [C674X_0] PASSED : Addition/Subtraction appears to round correctly. [C674X_0] COMMENT: Checking for sticky bit. [C674X_0] [C674X_0] PASSED : Sticky bit apparently used correctly. [C674X_0] -------> Diagnosis resuming after Milestone 50, Page 9 [C674X_0] COMMENT: Testing multiplicative commutation [C674X_0] COMMENT: with random pairs, trials = 20 [C674X_0] PASSED : No failures found during these trials. [C674X_0] -------> Diagnosis resuming after Milestone 60, Page 10 [C674X_0] COMMENT: Running test of exp(log)). [C674X_0] COMMENT: random X, (exp(log(x)) - x) trials = 20 [C674X_0] -------> Diagnosis resuming after Milestone 64, Page 11 [C674X_0] COMMENT: Running test of difference of two squares). [C674X_0] COMMENT: integer X, (X**2-Y**2) - (X-Y)(X+Y) trials = 20 [C674X_0] -------> Diagnosis resuming after Milestone 65, Page 12 [C674X_0] COMMENT: Running transcendental test 1. [C674X_0] COMMENT: random X, (sin(X)**2+cos(X)**2) - 1.0 trials = 20 [C674X_0] -------> Diagnosis resuming after Milestone 66, Page 13 [C674X_0] COMMENT: Running transcendental test 2. [C674X_0] COMMENT: random X, sin(4X) identity trials = 20 [C674X_0] -------> Diagnosis resuming after Milestone 67, Page 14 [C674X_0] COMMENT: Running hyperbolic test 1. [C674X_0] COMMENT: random X, (cosh(X)**2-sinh(X)**2) - 1.0 trials = 20 [C674X_0] -------> Diagnosis resuming after Milestone 68, Page 15 [C674X_0] COMMENT: Running test of square root(x). [C674X_0] COMMENT: Testing integer X, sqrt(X * X) = X, trials = 20 [C674X_0] COMMENT: Test for sqrt monotonicity. [C674X_0] PASSED : sqrt has passed a test for Monotonicity. [C674X_0] -------> Diagnosis resuming after Milestone 70, Page 16 [C674X_0] -------> Diagnosis resuming after Milestone 80, Page 17 [C674X_0] COMMENT: Testing whether sqrt is rounded or chopped. [C674X_0] PASSED : Square root appears to be correctly rounded. [C674X_0] -------> Diagnosis resuming after Milestone 85, Page 18 [C674X_0] -------> Diagnosis resuming after Milestone 90, Page 19 [C674X_0] COMMENT: Testing powers Z^i for small Integers Z and i. [C674X_0] -------> Diagnosis resuming after Milestone 91, Page 20 [C674X_0] PASSED : ... no discrepancies found. [C674X_0] -------> Diagnosis resuming after Milestone 100, Page 21 [C674X_0] COMMENT: Seeking Underflow thresholds UfThold and E0. [C674X_0] -------> Diagnosis resuming after Milestone 110, Page 22 [C674X_0] COMMENT: Smallest strictly positive number found [C674X_0] COMMENT: is E0 = 1.1754944e-38 [C674X_0] COMMENT: Since comparison denies Z = 0, evaluating [C674X_0] COMMENT: (Z + Z) / Z should be safe. [C674X_0] COMMENT: (Z+Z)/Z is OK provided Over/Underflow [C674X_0] COMMENT: has NOT just been signaled. [C674X_0] -------> Diagnosis resuming after Milestone 120, Page 23 [C674X_0] FLAW : [C674X_0] COMMENT: X != Z but X - Z = Zero [C674X_0] COMMENT: X = 1.6163047e-38, Z = 1.1754944e-38 [C674X_0] COMMENT: This is OK only if underflow signalled. [C674X_0] COMMENT: X / Z = 1 + 3.7500000e-01 [C674X_0] COMMENT: The Underflow threshold is 1.1754944e-38 [C674X_0] COMMENT: Below this, a calculation may suffer larger Relative [C674X_0] COMMENT: error than merely roundoff. [C674X_0] -------> Diagnosis resuming after Milestone 121, Page 24 [C674X_0] COMMENT: Since underflow occurs below the threshold [C674X_0] COMMENT: UfThold = 2.0000000e+00 ^ -1.2600000e+02 [C674X_0] COMMENT: only underflow could affect this expression. [C674X_0] COMMENT: calculating yields: 0.0000000e+00 [C674X_0] PASSED : This computed value is O.K. [C674X_0] -------> Diagnosis resuming after Milestone 130, Page 25 [C674X_0] COMMENT: As X -> 1, Testing X^((X + 1) / (X - 1)) against exp(2). [C674X_0] COMMENT: exp(2) = 7.3890557e+00 [C674X_0] PASSED : Accuracy seems adequate. [C674X_0] -------> Diagnosis resuming after Milestone 140, Page 26 [C674X_0] COMMENT: Testing powers Z^Q at four nearly extreme values. [C674X_0] PASSED : ... no discrepancies found. [C674X_0] -------> Diagnosis resuming after Milestone 150, Page 27 [C674X_0] -------> Diagnosis resuming after Milestone 160, Page 28 [C674X_0] COMMENT: Searching for Overflow threshold: [C674X_0] COMMENT: This may generate an error. [C674X_0] COMMENT: Can `Z = -Y' overflow? [C674X_0] COMMENT: Trying it on Y = -Inf [C674X_0] PASSED : Seems O.K. [C674X_0] COMMENT: Overflow threshold is V = 3.4028235e+38 [C674X_0] COMMENT: Overflow saturates at V0 = +Inf [C674X_0] COMMENT: No overflow should be signalled for V*1 = 3.4028235e+38 [C674X_0] COMMENT: No overflow should be signalled for V/1 = 3.4028235e+38 [C674X_0] COMMENT: Any overflow separating V*1 from [C674X_0] COMMENT: V above is a DEFECT. [C674X_0] -------> Diagnosis resuming after Milestone 161, Page 29 [C674X_0] -------> Diagnosis resuming after Milestone 170, Page 30 [C674X_0] -------> Diagnosis resuming after Milestone 175, Page 31 [C674X_0] -------> Diagnosis resuming after Milestone 180, Page 32 [C674X_0] -------> Diagnosis resuming after Milestone 190, Page 33 [C674X_0] -------> Diagnosis resuming after Milestone 191, Page 34 [C674X_0] -------> Diagnosis resuming after Milestone 200, Page 35 [C674X_0] COMMENT: Trying to compute 1/0 gives +Inf [C674X_0] COMMENT: Trying to compute 0/0 gives Nan [C674X_0] -------> Diagnosis resuming after Milestone 210, Page 36 [C674X_0] COMMENT: ========================================= [C674X_0] COMMENT: Embedded System Paranoia SUMMARY [C674X_0] COMMENT: SINGLE PRECISION 32 bits [C674X_0] COMMENT: Closest separation = 5.9604645e-08 [C674X_0] COMMENT: [C674X_0] COMMENT: Number of FAILUREs encountered = 0 [C674X_0] COMMENT: Number of SERIOUS DEFECTs discovered = 0 [C674X_0] COMMENT: Number of DEFECTs discovered = 0 [C674X_0] COMMENT: Number of FLAWs discovered = 1 [C674X_0] COMMENT: [C674X_0] PASSED : The arithmetic diagnosed seems satisfactory [C674X_0] COMMENT: though flawed. [C674X_0] COMMENT: [C674X_0] COMMENT: Rating ... [C674X_0] COMMENT: [C674X_0] COMMENT: Excellent [C674X_0] COMMENT: Very good [C674X_0] COMMENT: =====> Good [C674X_0] COMMENT: Acceptable [C674X_0] COMMENT: Unacceptable [C674X_0] COMMENT: Broken [C674X_0] COMMENT: Total floating point exceptions registered = -1094795586 [C674X_0] COMMENT: [C674X_0] COMMENT: ----------------------------------------- [C674X_0] COMMENT: MATHS LIBRARY TESTS [C674X_0] COMMENT: (should all give zero) [C674X_0] COMMENT: [C674X_0] COMMENT: Basic identities [C674X_0] COMMENT: ln(1.0) = [C674X_0] COMMENT: 0.0000000e+00 [C674X_0] COMMENT: exp(0.0) - 2.718281828459045235360287 = [C674X_0] COMMENT: 0.0000000e+00 [C674X_0] COMMENT: Basic tests (Random over range 0<=X<=1) [C674X_0] COMMENT: Test, exp(log(X)) - X = [C674X_0] COMMENT: -2.9802322e-08 -> 3.7252903e-09 [C674X_0] COMMENT: [C674X_0] COMMENT: Transcendental identities [C674X_0] COMMENT: Test, sin(1.0) - 0.84147098480789650665250 = [C674X_0] COMMENT: 0.0000000e+00 [C674X_0] COMMENT: Test, cos(1.0) - 0.54030230586813971740094 = [C674X_0] COMMENT: 0.0000000e+00 [C674X_0] COMMENT: Test, asin(1.0) - (pi/2) = [C674X_0] COMMENT: 0.0000000e+00 [C674X_0] COMMENT: Test, acos(0.0) - (pi/2) = [C674X_0] COMMENT: 0.0000000e+00 [C674X_0] COMMENT: Test, atan(1.0) - (pi/4) = [C674X_0] COMMENT: 0.0000000e+00 [C674X_0] COMMENT: Transcendental tests (Random over range 0<=X<=1) [C674X_0] COMMENT: Test, sin**2(X)+cos**2(X)-1.0 = [C674X_0] COMMENT: -5.9604645e-08 -> 1.1920929e-07 [C674X_0] COMMENT: Test, sin(4X)-(8.0*cos**4(X)*tan(X))+(4.0*cos(X)*sin(X)) = [C674X_0] COMMENT: -4.7683716e-07 -> 4.7683716e-07 [C674X_0] COMMENT: [C674X_0] COMMENT: Hyperbolic identities [C674X_0] COMMENT: Test, sinh(0.0) = [C674X_0] COMMENT: 0.0000000e+00 [C674X_0] COMMENT: Test, cosh(0.0) - 1.0 = [C674X_0] COMMENT: 0.0000000e+00 [C674X_0] COMMENT: Hyperbolic tests (Random over range 0<=X<=1) [C674X_0] COMMENT: Test, cosh**2(X)-sinh**2(X)-1.0 = [C674X_0] COMMENT: -1.1920929e-07 -> 1.1920929e-07 [C674X_0] COMMENT: [C674X_0] COMMENT: END OF TEST. [C674X_0] COMMENT: ========================================= [C674X_0] enter main() enter taskFxn() =========================================================================================================================== =========================================================================================================================== [C674X_0] COMMENT: ========================================= [C674X_0] COMMENT: Welcome to ESP - Embedded System Paranoia [C674X_0] COMMENT: Please let me know your experiences [C674X_0] COMMENT: and suggestions at lesh@oakcomp.co.uk or [C674X_0] COMMENT: L.Hatton@kent.ac.uk [C674X_0] COMMENT: [C674X_0] COMMENT: $Revision: 1.9 $ $Date: 2004/04/13 14:21:53 $ [C674X_0] COMMENT: This version will attempt divide by zero. [C674X_0] COMMENT: This version uses [C674X_0] COMMENT: This version uses [C674X_0] COMMENT: This version uses double precision. nbits=64 [C674X_0] COMMENT: ========================================= [C674X_0] -------> Diagnosis resuming after Milestone 0, Page 1 [C674X_0] COMMENT: -1, 0, 1/2, 1, 2, 3, 4, 5, 9, 27, 32 & 240 [C674X_0] PASSED : small integer tests are all OK. [C674X_0] COMMENT: Searching for Radix and Precision. [C674X_0] COMMENT: Radix = 2.00000000000000000e+00 [C674X_0] COMMENT: Closest relative separation found is U1 = 1.11022302462515654e-16 [C674X_0] COMMENT: Recalculating radix and precision [C674X_0] COMMENT: confirms closest relative separation U1. [C674X_0] COMMENT: Checking U1 for sanity... [C674X_0] COMMENT: U1 is a sensible value [C674X_0] COMMENT: Radix confirmed. [C674X_0] -------> Diagnosis resuming after Milestone 10, Page 2 [C674X_0] -------> Diagnosis resuming after Milestone 20, Page 3 [C674X_0] COMMENT: The number of significant digits of the [C674X_0] COMMENT: Radix is 5.29999999999999982e+01 [C674X_0] -------> Diagnosis resuming after Milestone 25, Page 4 [C674X_0] -------> Diagnosis resuming after Milestone 30, Page 5 [C674X_0] COMMENT: Subtraction appears to be normalized, as it should be. [C674X_0] COMMENT: Checking for guard digit in *, / and -. [C674X_0] PASSED : *, /, and - appear to have guard digits, as they should. [C674X_0] -------> Diagnosis resuming after Milestone 35, Page 6 [C674X_0] COMMENT: Checking rounding on multiply, divide and add/subtract. [C674X_0] PASSED : Multiplication appears to round correctly. [C674X_0] -------> Diagnosis resuming after Milestone 40, Page 7 [C674X_0] PASSED : Division appears to round correctly. [C674X_0] -------> Diagnosis resuming after Milestone 45, Page 8 [C674X_0] PASSED : Addition/Subtraction appears to round correctly. [C674X_0] COMMENT: Checking for sticky bit. [C674X_0] [C674X_0] PASSED : Sticky bit apparently used correctly. [C674X_0] -------> Diagnosis resuming after Milestone 50, Page 9 [C674X_0] COMMENT: Testing multiplicative commutation [C674X_0] COMMENT: with random pairs, trials = 20 [C674X_0] PASSED : No failures found during these trials. [C674X_0] -------> Diagnosis resuming after Milestone 60, Page 10 [C674X_0] COMMENT: Running test of exp(log)). [C674X_0] COMMENT: random X, (exp(log(x)) - x) trials = 20 [C674X_0] -------> Diagnosis resuming after Milestone 64, Page 11 [C674X_0] COMMENT: Running test of difference of two squares). [C674X_0] COMMENT: integer X, (X**2-Y**2) - (X-Y)(X+Y) trials = 20 [C674X_0] -------> Diagnosis resuming after Milestone 65, Page 12 [C674X_0] COMMENT: Running transcendental test 1. [C674X_0] COMMENT: random X, (sin(X)**2+cos(X)**2) - 1.0 trials = 20 [C674X_0] -------> Diagnosis resuming after Milestone 66, Page 13 [C674X_0] COMMENT: Running transcendental test 2. [C674X_0] COMMENT: random X, sin(4X) identity trials = 20 [C674X_0] -------> Diagnosis resuming after Milestone 67, Page 14 [C674X_0] COMMENT: Running hyperbolic test 1. [C674X_0] COMMENT: random X, (cosh(X)**2-sinh(X)**2) - 1.0 trials = 20 [C674X_0] -------> Diagnosis resuming after Milestone 68, Page 15 [C674X_0] COMMENT: Running test of square root(x). [C674X_0] COMMENT: Testing integer X, sqrt(X * X) = X, trials = 20 [C674X_0] COMMENT: Test for sqrt monotonicity. [C674X_0] PASSED : sqrt has passed a test for Monotonicity. [C674X_0] -------> Diagnosis resuming after Milestone 70, Page 16 [C674X_0] -------> Diagnosis resuming after Milestone 80, Page 17 [C674X_0] COMMENT: Testing whether sqrt is rounded or chopped. [C674X_0] FLAW : Square root is neither chopped nor correctly rounded. [C674X_0] COMMENT: Observed errors run from [C674X_0] COMMENT: -5.00000000000000178e-01 to 3.95061715803682922e-01 ulps. [C674X_0] -------> Diagnosis resuming after Milestone 85, Page 18 [C674X_0] -------> Diagnosis resuming after Milestone 90, Page 19 [C674X_0] COMMENT: Testing powers Z^i for small Integers Z and i. [C674X_0] -------> Diagnosis resuming after Milestone 91, Page 20 [C674X_0] DEFECT : Power function [C674X_0] COMMENT: 3.00000000000000000e+00 ^ 1.19999999999999996e+01 = 5.31440999999999963e+05 [C674X_0] COMMENT: which differs from correct value by -1.16415321826934814e-10 [C674X_0] COMMENT: Errors like this may invalidate financial calculations [C674X_0] COMMENT: involving interest rates. [C674X_0] COMMENT: Number of similar discrepancies = 8 [C674X_0] -------> Diagnosis resuming after Milestone 100, Page 21 [C674X_0] COMMENT: Seeking Underflow thresholds UfThold and E0. [C674X_0] -------> Diagnosis resuming after Milestone 110, Page 22 [C674X_0] COMMENT: Smallest strictly positive number found [C674X_0] COMMENT: is E0 = 2.22507385850720096e-308 [C674X_0] COMMENT: Since comparison denies Z = 0, evaluating [C674X_0] COMMENT: (Z + Z) / Z should be safe. [C674X_0] COMMENT: (Z+Z)/Z is OK provided Over/Underflow [C674X_0] COMMENT: has NOT just been signaled. [C674X_0] -------> Diagnosis resuming after Milestone 120, Page 23 [C674X_0] FLAW : [C674X_0] COMMENT: X != Z but X - Z = Zero [C674X_0] COMMENT: X = 3.05947655544740460e-308, Z = 2.22507385850720096e-308 [C674X_0] COMMENT: This is OK only if underflow signalled. [C674X_0] COMMENT: X / Z = 1 + 3.75000000000000000e-01 [C674X_0] COMMENT: The Underflow threshold is 2.22507385850720096e-308 [C674X_0] COMMENT: Below this, a calculation may suffer larger Relative [C674X_0] COMMENT: error than merely roundoff. [C674X_0] -------> Diagnosis resuming after Milestone 121, Page 24 [C674X_0] COMMENT: Since underflow occurs below the threshold [C674X_0] COMMENT: UfThold = 2.00000000000000000e+00 ^ -1.02200000000000002e+03 [C674X_0] COMMENT: only underflow could affect this expression. [C674X_0] COMMENT: calculating yields: 0.00000000000000000e+00 [C674X_0] PASSED : This computed value is O.K. [C674X_0] -------> Diagnosis resuming after Milestone 130, Page 25 [C674X_0] COMMENT: As X -> 1, Testing X^((X + 1) / (X - 1)) against exp(2). [C674X_0] COMMENT: exp(2) = 7.38905609893065218e+00 [C674X_0] DEFECT : Power function pow(x,z): [C674X_0] COMMENT: (1 + -1.11022302462515654e-16) ^ -1.80143985094819854e+16 [C674X_0] COMMENT: differs from correct value by -6.61884776900936167e-01 [C674X_0] COMMENT: This may spoil financial calculations [C674X_0] COMMENT: involving tiny interest rates. [C674X_0] -------> Diagnosis resuming after Milestone 140, Page 26 [C674X_0] COMMENT: Testing powers Z^Q at four nearly extreme values. [C674X_0] PASSED : ... no discrepancies found. [C674X_0] -------> Diagnosis resuming after Milestone 150, Page 27 [C674X_0] -------> Diagnosis resuming after Milestone 160, Page 28 [C674X_0] COMMENT: Searching for Overflow threshold: [C674X_0] COMMENT: This may generate an error. [C674X_0] COMMENT: Can `Z = -Y' overflow? [C674X_0] COMMENT: Trying it on Y = -Inf [C674X_0] PASSED : Seems O.K. [C674X_0] COMMENT: Overflow threshold is V = 1.79769313486231646e+308 [C674X_0] COMMENT: Overflow saturates at V0 = +Inf [C674X_0] COMMENT: No overflow should be signalled for V*1 = 1.79769313486231646e+308 [C674X_0] COMMENT: No overflow should be signalled for V/1 = 1.79769313486231646e+308 [C674X_0] COMMENT: Any overflow separating V*1 from [C674X_0] COMMENT: V above is a DEFECT. [C674X_0] -------> Diagnosis resuming after Milestone 161, Page 29 [C674X_0] -------> Diagnosis resuming after Milestone 170, Page 30 [C674X_0] -------> Diagnosis resuming after Milestone 175, Page 31 [C674X_0] -------> Diagnosis resuming after Milestone 180, Page 32 [C674X_0] -------> Diagnosis resuming after Milestone 190, Page 33 [C674X_0] -------> Diagnosis resuming after Milestone 191, Page 34 [C674X_0] -------> Diagnosis resuming after Milestone 200, Page 35 [C674X_0] COMMENT: Trying to compute 1/0 gives +Inf [C674X_0] COMMENT: Trying to compute 0/0 gives Nan [C674X_0] -------> Diagnosis resuming after Milestone 210, Page 36 [C674X_0] COMMENT: ========================================= [C674X_0] COMMENT: Embedded System Paranoia SUMMARY [C674X_0] COMMENT: DOUBLE PRECISION 64 bits [C674X_0] COMMENT: Closest separation = 1.11022302462515654e-16 [C674X_0] COMMENT: [C674X_0] COMMENT: Number of FAILUREs encountered = 0 [C674X_0] COMMENT: Number of SERIOUS DEFECTs discovered = 0 [C674X_0] COMMENT: Number of DEFECTs discovered = 2 [C674X_0] COMMENT: Number of FLAWs discovered = 2 [C674X_0] COMMENT: [C674X_0] COMMENT: The arithmetic diagnosed may be Acceptable [C674X_0] COMMENT: despite inconvenient DEFECT. [C674X_0] COMMENT: [C674X_0] COMMENT: Rating ... [C674X_0] COMMENT: [C674X_0] COMMENT: Excellent [C674X_0] COMMENT: Very good [C674X_0] COMMENT: Good [C674X_0] COMMENT: =====> Acceptable [C674X_0] COMMENT: Unacceptable [C674X_0] COMMENT: Broken [C674X_0] COMMENT: Total floating point exceptions registered = -1023155632 [C674X_0] COMMENT: [C674X_0] COMMENT: ----------------------------------------- [C674X_0] COMMENT: MATHS LIBRARY TESTS [C674X_0] COMMENT: (should all give zero) [C674X_0] COMMENT: [C674X_0] COMMENT: Basic identities [C674X_0] COMMENT: ln(1.0) = [C674X_0] COMMENT: 0.00000000000000000e+00 [C674X_0] COMMENT: exp(0.0) - 2.718281828459045235360287 = [C674X_0] COMMENT: 4.44089209850062616e-16 [C674X_0] COMMENT: Basic tests (Random over range 0<=X<=1) [C674X_0] COMMENT: Test, exp(log(X)) - X = [C674X_0] COMMENT: -2.77555756156289135e-17 -> 5.55111512312578270e-17 [C674X_0] COMMENT: [C674X_0] COMMENT: Transcendental identities [C674X_0] COMMENT: Test, sin(1.0) - 0.84147098480789650665250 = [C674X_0] COMMENT: 0.00000000000000000e+00 [C674X_0] COMMENT: Test, cos(1.0) - 0.54030230586813971740094 = [C674X_0] COMMENT: -1.11022302462515654e-16 [C674X_0] COMMENT: Test, asin(1.0) - (pi/2) = [C674X_0] COMMENT: 0.00000000000000000e+00 [C674X_0] COMMENT: Test, acos(0.0) - (pi/2) = [C674X_0] COMMENT: 0.00000000000000000e+00 [C674X_0] COMMENT: Test, atan(1.0) - (pi/4) = [C674X_0] COMMENT: 0.00000000000000000e+00 [C674X_0] COMMENT: Transcendental tests (Random over range 0<=X<=1) [C674X_0] COMMENT: Test, sin**2(X)+cos**2(X)-1.0 = [C674X_0] COMMENT: -2.22044604925031308e-16 -> 2.22044604925031308e-16 [C674X_0] COMMENT: Test, sin(4X)-(8.0*cos**4(X)*tan(X))+(4.0*cos(X)*sin(X)) = [C674X_0] COMMENT: -6.66133814775093924e-16 -> 8.88178419700125232e-16 [C674X_0] COMMENT: [C674X_0] COMMENT: Hyperbolic identities [C674X_0] COMMENT: Test, sinh(0.0) = [C674X_0] COMMENT: 0.00000000000000000e+00 [C674X_0] COMMENT: Test, cosh(0.0) - 1.0 = [C674X_0] COMMENT: 0.00000000000000000e+00 [C674X_0] COMMENT: Hyperbolic tests (Random over range 0<=X<=1) [C674X_0] COMMENT: Test, cosh**2(X)-sinh**2(X)-1.0 = [C674X_0] COMMENT: -4.44089209850062616e-16 -> 6.66133814775093924e-16 [C674X_0] COMMENT: [C674X_0] COMMENT: END OF TEST. [C674X_0] COMMENT: ========================================= [C674X_0] enter main() enter taskFxn() =========================================================================================================================== =========================================================================================================================== COMMENT: ========================================= COMMENT: Welcome to ESP - Embedded System Paranoia COMMENT: Please let me know your experiences COMMENT: and suggestions at lesh@oakcomp.co.uk or COMMENT: L.Hatton@kent.ac.uk COMMENT: COMMENT: $Revision: 1.9 $ $Date: 2004/04/13 14:21:53 $ COMMENT: This version will attempt divide by zero. COMMENT: This version uses COMMENT: This version uses COMMENT: This version uses single precision, nbits=32 COMMENT: ========================================= -------> Diagnosis resuming after Milestone 0, Page 1 COMMENT: -1, 0, 1/2, 1, 2, 3, 4, 5, 9, 27, 32 & 240 PASSED : small integer tests are all OK. COMMENT: Searching for Radix and Precision. COMMENT: Radix = 2.0000000e+000 COMMENT: Closest relative separation found is U1 = 5.9604645e-008 COMMENT: Recalculating radix and precision COMMENT: confirms closest relative separation U1. COMMENT: Checking U1 for sanity... COMMENT: U1 is a sensible value COMMENT: Radix confirmed. -------> Diagnosis resuming after Milestone 10, Page 2 -------> Diagnosis resuming after Milestone 20, Page 3 COMMENT: The number of significant digits of the COMMENT: Radix is 2.4000000e+001 -------> Diagnosis resuming after Milestone 25, Page 4 COMMENT: Some subexpressions appear to be calculated extra precisely with COMMENT: about 8.7298698e+000 extra significant decimals. COMMENT: This is not tested further by this program. -------> Diagnosis resuming after Milestone 30, Page 5 COMMENT: Subtraction appears to be normalized, as it should be. COMMENT: Checking for guard digit in *, / and -. PASSED : *, /, and - appear to have guard digits, as they should. -------> Diagnosis resuming after Milestone 35, Page 6 COMMENT: Checking rounding on multiply, divide and add/subtract. PASSED : Multiplication appears to round correctly. -------> Diagnosis resuming after Milestone 40, Page 7 PASSED : Division appears to round correctly. -------> Diagnosis resuming after Milestone 45, Page 8 PASSED : Addition/Subtraction appears to round correctly. COMMENT: Checking for sticky bit. PASSED : Sticky bit apparently used correctly. -------> Diagnosis resuming after Milestone 50, Page 9 COMMENT: Testing multiplicative commutation COMMENT: with random pairs, trials = 20 PASSED : No failures found during these trials. -------> Diagnosis resuming after Milestone 60, Page 10 COMMENT: Running test of exp(log)). COMMENT: random X, (exp(log(x)) - x) trials = 20 -------> Diagnosis resuming after Milestone 64, Page 11 COMMENT: Running test of difference of two squares). COMMENT: integer X, (X**2-Y**2) - (X-Y)(X+Y) trials = 20 -------> Diagnosis resuming after Milestone 65, Page 12 COMMENT: Running transcendental test 1. COMMENT: random X, (sin(X)**2+cos(X)**2) - 1.0 trials = 20 -------> Diagnosis resuming after Milestone 66, Page 13 COMMENT: Running transcendental test 2. COMMENT: random X, sin(4X) identity trials = 20 -------> Diagnosis resuming after Milestone 67, Page 14 COMMENT: Running hyperbolic test 1. COMMENT: random X, (cosh(X)**2-sinh(X)**2) - 1.0 trials = 20 -------> Diagnosis resuming after Milestone 68, Page 15 COMMENT: Running test of square root(x). COMMENT: Testing integer X, sqrt(X * X) = X, trials = 20 COMMENT: Test for sqrt monotonicity. PASSED : sqrt has passed a test for Monotonicity. -------> Diagnosis resuming after Milestone 70, Page 16 -------> Diagnosis resuming after Milestone 80, Page 17 COMMENT: Testing whether sqrt is rounded or chopped. PASSED : Square root appears to be correctly rounded. -------> Diagnosis resuming after Milestone 85, Page 18 -------> Diagnosis resuming after Milestone 90, Page 19 COMMENT: Testing powers Z^i for small Integers Z and i. -------> Diagnosis resuming after Milestone 91, Page 20 PASSED : ... no discrepancies found. -------> Diagnosis resuming after Milestone 100, Page 21 COMMENT: Seeking Underflow thresholds UfThold and E0. -------> Diagnosis resuming after Milestone 110, Page 22 COMMENT: Smallest strictly positive number found COMMENT: is E0 = 1.4012985e-045 COMMENT: Since comparison denies Z = 0, evaluating COMMENT: (Z + Z) / Z should be safe. COMMENT: (Z+Z)/Z is OK but this installation cannot COMMENT: signal any Over/Underflow. COMMENT: Underflow is gradual; Absolute roundoff error in UfThold < E0. COMMENT: The Underflow threshold is 1.1754945e-038 COMMENT: Below this, a calculation may suffer larger Relative COMMENT: error than merely roundoff. -------> Diagnosis resuming after Milestone 120, Page 23 COMMENT: Since underflow occurs below the threshold COMMENT: UfThold = 2.0000000e+000 ^ -1.2600000e+002 COMMENT: only underflow could affect this expression. COMMENT: calculating yields: 0.0000000e+000 PASSED : This computed value is O.K. -------> Diagnosis resuming after Milestone 130, Page 24 COMMENT: As X -> 1, Testing X^((X + 1) / (X - 1)) against exp(2). COMMENT: exp(2) = 7.3890557e+000 PASSED : Accuracy seems adequate. -------> Diagnosis resuming after Milestone 140, Page 25 COMMENT: Testing powers Z^Q at four nearly extreme values. PASSED : ... no discrepancies found. -------> Diagnosis resuming after Milestone 150, Page 26 -------> Diagnosis resuming after Milestone 160, Page 27 COMMENT: Searching for Overflow threshold: COMMENT: This may generate an error. COMMENT: Can `Z = -Y' overflow? COMMENT: Trying it on Y = -1.#INF000e+000 PASSED : Seems O.K. COMMENT: Overflow threshold is V = 3.4028235e+038 COMMENT: Overflow saturates at V0 = 1.#INF000e+000 COMMENT: No overflow should be signalled for V*1 = 3.4028235e+038 COMMENT: No overflow should be signalled for V/1 = 3.4028235e+038 COMMENT: Any overflow separating V*1 from COMMENT: V above is a DEFECT. -------> Diagnosis resuming after Milestone 161, Page 28 -------> Diagnosis resuming after Milestone 170, Page 29 -------> Diagnosis resuming after Milestone 175, Page 30 -------> Diagnosis resuming after Milestone 180, Page 31 -------> Diagnosis resuming after Milestone 190, Page 32 -------> Diagnosis resuming after Milestone 191, Page 33 -------> Diagnosis resuming after Milestone 200, Page 34 COMMENT: Trying to compute 1/0 gives 1.#INF000e+000 COMMENT: Trying to compute 0/0 gives -1.#IND000e+000 -------> Diagnosis resuming after Milestone 210, Page 35 COMMENT: ========================================= COMMENT: Embedded System Paranoia SUMMARY COMMENT: SINGLE PRECISION 32 bits COMMENT: Closest separation = 5.9604645e-008 COMMENT: COMMENT: Number of FAILUREs encountered = 0 COMMENT: Number of SERIOUS DEFECTs discovered = 0 COMMENT: Number of DEFECTs discovered = 0 COMMENT: Number of FLAWs discovered = 0 COMMENT: PASSED : No failures, defects nor flaws have been discovered. COMMENT: Rounding appears to conform to IEEE standard P754 . PASSED : The arithmetic diagnosed seems Excellent. COMMENT: COMMENT: Rating ... COMMENT: COMMENT: =====> Excellent COMMENT: Very good COMMENT: Good COMMENT: Acceptable COMMENT: Unacceptable COMMENT: Broken COMMENT: COMMENT: ----------------------------------------- COMMENT: MATHS LIBRARY TESTS COMMENT: (should all give zero) COMMENT: COMMENT: Basic identities COMMENT: ln(1.0) = COMMENT: 0.0000000e+000 COMMENT: exp(0.0) - 2.718281828459045235360287 = COMMENT: 0.0000000e+000 COMMENT: Basic tests (Random over range 0<=X<=1) COMMENT: Test, exp(log(X)) - X = COMMENT: -2.9802322e-008 -> 3.7252903e-009 COMMENT: COMMENT: Transcendental identities COMMENT: Test, sin(1.0) - 0.84147098480789650665250 = COMMENT: 0.0000000e+000 COMMENT: Test, cos(1.0) - 0.54030230586813971740094 = COMMENT: 0.0000000e+000 COMMENT: Test, asin(1.0) - (pi/2) = COMMENT: 0.0000000e+000 COMMENT: Test, acos(0.0) - (pi/2) = COMMENT: 0.0000000e+000 COMMENT: Test, atan(1.0) - (pi/4) = COMMENT: 0.0000000e+000 COMMENT: Transcendental tests (Random over range 0<=X<=1) COMMENT: Test, sin**2(X)+cos**2(X)-1.0 = COMMENT: -4.7554380e-008 -> 7.1096267e-008 COMMENT: Test, sin(4X)-(8.0*cos**4(X)*tan(X))+(4.0*cos(X)*sin(X)) = COMMENT: -2.8737477e-007 -> 3.1743008e-007 COMMENT: COMMENT: Hyperbolic identities COMMENT: Test, sinh(0.0) = COMMENT: 0.0000000e+000 COMMENT: Test, cosh(0.0) - 1.0 = COMMENT: 0.0000000e+000 COMMENT: Hyperbolic tests (Random over range 0<=X<=1) COMMENT: Test, cosh**2(X)-sinh**2(X)-1.0 = COMMENT: -1.6386154e-007 -> 1.2705659e-007 COMMENT: COMMENT: END OF TEST. COMMENT: ========================================= =========================================================================================================================== =========================================================================================================================== COMMENT: ========================================= COMMENT: Welcome to ESP - Embedded System Paranoia COMMENT: Please let me know your experiences COMMENT: and suggestions at lesh@oakcomp.co.uk or COMMENT: L.Hatton@kent.ac.uk COMMENT: COMMENT: $Revision: 1.9 $ $Date: 2004/04/13 14:21:53 $ COMMENT: This version will attempt divide by zero. COMMENT: This version uses COMMENT: This version uses COMMENT: This version uses double precision. nbits=64 COMMENT: ========================================= -------> Diagnosis resuming after Milestone 0, Page 1 COMMENT: -1, 0, 1/2, 1, 2, 3, 4, 5, 9, 27, 32 & 240 PASSED : small integer tests are all OK. COMMENT: Searching for Radix and Precision. COMMENT: Radix = 2.00000000000000000e+000 COMMENT: Closest relative separation found is U1 = 1.11022302462515650e-016 COMMENT: Recalculating radix and precision COMMENT: confirms closest relative separation U1. COMMENT: Checking U1 for sanity... COMMENT: U1 is a sensible value COMMENT: Radix confirmed. -------> Diagnosis resuming after Milestone 10, Page 2 -------> Diagnosis resuming after Milestone 20, Page 3 COMMENT: The number of significant digits of the COMMENT: Radix is 5.30000000000000000e+001 -------> Diagnosis resuming after Milestone 25, Page 4 -------> Diagnosis resuming after Milestone 30, Page 5 COMMENT: Subtraction appears to be normalized, as it should be. COMMENT: Checking for guard digit in *, / and -. PASSED : *, /, and - appear to have guard digits, as they should. -------> Diagnosis resuming after Milestone 35, Page 6 COMMENT: Checking rounding on multiply, divide and add/subtract. PASSED : Multiplication appears to round correctly. -------> Diagnosis resuming after Milestone 40, Page 7 PASSED : Division appears to round correctly. -------> Diagnosis resuming after Milestone 45, Page 8 PASSED : Addition/Subtraction appears to round correctly. COMMENT: Checking for sticky bit. PASSED : Sticky bit apparently used correctly. -------> Diagnosis resuming after Milestone 50, Page 9 COMMENT: Testing multiplicative commutation COMMENT: with random pairs, trials = 20 PASSED : No failures found during these trials. -------> Diagnosis resuming after Milestone 60, Page 10 COMMENT: Running test of exp(log)). COMMENT: random X, (exp(log(x)) - x) trials = 20 -------> Diagnosis resuming after Milestone 64, Page 11 COMMENT: Running test of difference of two squares). COMMENT: integer X, (X**2-Y**2) - (X-Y)(X+Y) trials = 20 -------> Diagnosis resuming after Milestone 65, Page 12 COMMENT: Running transcendental test 1. COMMENT: random X, (sin(X)**2+cos(X)**2) - 1.0 trials = 20 -------> Diagnosis resuming after Milestone 66, Page 13 COMMENT: Running transcendental test 2. COMMENT: random X, sin(4X) identity trials = 20 -------> Diagnosis resuming after Milestone 67, Page 14 COMMENT: Running hyperbolic test 1. COMMENT: random X, (cosh(X)**2-sinh(X)**2) - 1.0 trials = 20 -------> Diagnosis resuming after Milestone 68, Page 15 COMMENT: Running test of square root(x). COMMENT: Testing integer X, sqrt(X * X) = X, trials = 20 COMMENT: Test for sqrt monotonicity. PASSED : sqrt has passed a test for Monotonicity. -------> Diagnosis resuming after Milestone 70, Page 16 -------> Diagnosis resuming after Milestone 80, Page 17 COMMENT: Testing whether sqrt is rounded or chopped. PASSED : Square root appears to be correctly rounded. -------> Diagnosis resuming after Milestone 85, Page 18 -------> Diagnosis resuming after Milestone 90, Page 19 COMMENT: Testing powers Z^i for small Integers Z and i. -------> Diagnosis resuming after Milestone 91, Page 20 PASSED : ... no discrepancies found. -------> Diagnosis resuming after Milestone 100, Page 21 COMMENT: Seeking Underflow thresholds UfThold and E0. -------> Diagnosis resuming after Milestone 110, Page 22 COMMENT: Smallest strictly positive number found COMMENT: is E0 = 4.94065645841246540e-324 COMMENT: Since comparison denies Z = 0, evaluating COMMENT: (Z + Z) / Z should be safe. COMMENT: (Z+Z)/Z is OK but this installation cannot COMMENT: signal any Over/Underflow. COMMENT: Underflow is gradual; Absolute roundoff error in UfThold < E0. COMMENT: The Underflow threshold is 2.22507385850720190e-308 COMMENT: Below this, a calculation may suffer larger Relative COMMENT: error than merely roundoff. -------> Diagnosis resuming after Milestone 120, Page 23 COMMENT: Since underflow occurs below the threshold COMMENT: UfThold = 2.00000000000000000e+000 ^ -1.02200000000000000e+003 COMMENT: only underflow could affect this expression. COMMENT: calculating yields: 0.00000000000000000e+000 PASSED : This computed value is O.K. -------> Diagnosis resuming after Milestone 130, Page 24 COMMENT: As X -> 1, Testing X^((X + 1) / (X - 1)) against exp(2). COMMENT: exp(2) = 7.38905609893065220e+000 PASSED : Accuracy seems adequate. -------> Diagnosis resuming after Milestone 140, Page 25 COMMENT: Testing powers Z^Q at four nearly extreme values. PASSED : ... no discrepancies found. -------> Diagnosis resuming after Milestone 150, Page 26 -------> Diagnosis resuming after Milestone 160, Page 27 COMMENT: Searching for Overflow threshold: COMMENT: This may generate an error. COMMENT: Can `Z = -Y' overflow? COMMENT: Trying it on Y = -1.#INF0000000000000e+000 PASSED : Seems O.K. COMMENT: Overflow threshold is V = 1.79769313486231570e+308 COMMENT: Overflow saturates at V0 = 1.#INF0000000000000e+000 COMMENT: No overflow should be signalled for V*1 = 1.79769313486231570e+308 COMMENT: No overflow should be signalled for V/1 = 1.79769313486231570e+308 COMMENT: Any overflow separating V*1 from COMMENT: V above is a DEFECT. -------> Diagnosis resuming after Milestone 161, Page 28 -------> Diagnosis resuming after Milestone 170, Page 29 -------> Diagnosis resuming after Milestone 175, Page 30 -------> Diagnosis resuming after Milestone 180, Page 31 -------> Diagnosis resuming after Milestone 190, Page 32 -------> Diagnosis resuming after Milestone 191, Page 33 -------> Diagnosis resuming after Milestone 200, Page 34 COMMENT: Trying to compute 1/0 gives 1.#INF0000000000000e+000 COMMENT: Trying to compute 0/0 gives -1.#IND0000000000000e+000 -------> Diagnosis resuming after Milestone 210, Page 35 COMMENT: ========================================= COMMENT: Embedded System Paranoia SUMMARY COMMENT: DOUBLE PRECISION 64 bits COMMENT: Closest separation = 1.11022302462515650e-016 COMMENT: COMMENT: Number of FAILUREs encountered = 0 COMMENT: Number of SERIOUS DEFECTs discovered = 0 COMMENT: Number of DEFECTs discovered = 0 COMMENT: Number of FLAWs discovered = 0 COMMENT: PASSED : No failures, defects nor flaws have been discovered. COMMENT: Rounding appears to conform to IEEE standard P754 COMMENT: , except for possibly Double Rounding COMMENT: during Gradual Underflow. PASSED : The arithmetic diagnosed seems Excellent. COMMENT: COMMENT: Rating ... COMMENT: COMMENT: =====> Excellent COMMENT: Very good COMMENT: Good COMMENT: Acceptable COMMENT: Unacceptable COMMENT: Broken COMMENT: COMMENT: ----------------------------------------- COMMENT: MATHS LIBRARY TESTS COMMENT: (should all give zero) COMMENT: COMMENT: Basic identities COMMENT: ln(1.0) = COMMENT: 0.00000000000000000e+000 COMMENT: exp(0.0) - 2.718281828459045235360287 = COMMENT: 0.00000000000000000e+000 COMMENT: Basic tests (Random over range 0<=X<=1) COMMENT: Test, exp(log(X)) - X = COMMENT: -5.55111512312578270e-017 -> 3.46944695195361420e-018 COMMENT: COMMENT: Transcendental identities COMMENT: Test, sin(1.0) - 0.84147098480789650665250 = COMMENT: 0.00000000000000000e+000 COMMENT: Test, cos(1.0) - 0.54030230586813971740094 = COMMENT: 0.00000000000000000e+000 COMMENT: Test, asin(1.0) - (pi/2) = COMMENT: 0.00000000000000000e+000 COMMENT: Test, acos(0.0) - (pi/2) = COMMENT: 0.00000000000000000e+000 COMMENT: Test, atan(1.0) - (pi/4) = COMMENT: 0.00000000000000000e+000 COMMENT: Transcendental tests (Random over range 0<=X<=1) COMMENT: Test, sin**2(X)+cos**2(X)-1.0 = COMMENT: -1.11022302462515650e-016 -> 2.22044604925031310e-016 COMMENT: Test, sin(4X)-(8.0*cos**4(X)*tan(X))+(4.0*cos(X)*sin(X)) = COMMENT: -4.44089209850062620e-016 -> 6.66133814775093920e-016 COMMENT: COMMENT: Hyperbolic identities COMMENT: Test, sinh(0.0) = COMMENT: 0.00000000000000000e+000 COMMENT: Test, cosh(0.0) - 1.0 = COMMENT: 0.00000000000000000e+000 COMMENT: Hyperbolic tests (Random over range 0<=X<=1) COMMENT: Test, cosh**2(X)-sinh**2(X)-1.0 = COMMENT: -4.44089209850062620e-016 -> 2.22044604925031310e-016 COMMENT: COMMENT: END OF TEST. COMMENT: =========================================