This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Questions about the Floating Point math library...

Other Parts Discussed in Thread: OMAP-L138, TMS570LS20216

I am develiping code for an aircraft and am testing some of our math routines.  I am coming to find out that simple things like division by 0 oddly enough return 0 along with other strange issues.

My main question is that while sqrtf(-1.0) does return NAN, sqrt(-1.0) returns:  1.261340072242732e-157 which is not expected.

Here is the Variable dump:

test_number double 0x1F5BB55347BB24DC (Hex) 0xC30014F0 

and here is the code

test_number = sqrt(-1.0); // NAN

How I got in this situation is that  I am testing a wrapper for _Dclass and testing each return paramater.  I was trying to force NAN into the test_number and couldn't.  I couldn't even set it to the raw value of 0x7FF8000000000000.  I finally poked memory with the value and got _DClass to return FP_NAN.

 

We are developing for the OMAP-L138

Code Composer Studio, Version: 5.1.0.09000

ARM compiler 4.9.4

  • Hello Mike,

    there was another interesting discussion about floating point:

    http://e2e.ti.com/support/development_tools/compiler/f/343/t/186149.aspx

    Try to run the Embedded System Paranoia test tool mentioned in subsequent posts.

    Christian

  • The TI compilers do not correctly handle NaN, Inf, negative zero, or denormal numbers in all cases.  This is particularly noticeable when compiling for a device with no native floating-point instructions.  There is presently no documentation of exactly where the compiler doesn't do what IEEE-754 requires.

  • Here is the output of Parinoia in SINGLE mode on the ARM.  I will attache Double and DSP as I get them...

    Hmmmmm - If you buy the test, it does not look good for small numbers.


     

    [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 <stdio.h>

    [ARM9_0] COMMENT: This version uses <setjmp.h>

    [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 <stdio.h>
    [ARM9_0] COMMENT: This version uses <setjmp.h>
    [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 <stdio.h>
    [ARM9_0] COMMENT: This version uses <setjmp.h>
    [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 <stdio.h>
    [C674X_0] COMMENT: This version uses <setjmp.h>
    [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 <stdio.h>
    [C674X_0] COMMENT: This version uses <setjmp.h>
    [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 <stdio.h>
    COMMENT: This version uses <signal.h>
    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 <stdio.h>
    COMMENT: This version uses <signal.h>
    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: =========================================
    
    

    So here are the "Embedded System Paranoia" results and I have to say I am rather disapointed in Texas Instruments.  I would never have guessed they would be this sloppy especially on a DSP.

    OMAP-L138   ARM9/DSP C674x and for a base line  X68x (Visual Studio 2010 Express)

    ARM9/SINGLE   -  Unacceptable [Serious Defect=1, FLAWS =2]

    ARM9/DOUBLE - Good [FLAWS=4]

    DSP/SINGLE   - Good [FLASWS=1]

    DSP/DOUBLE - Acceptable [Defects=2,FLAWS=2]

    (Visual Studio 2010 Express)

    X68x/SINGLE - Excelent []

    X68x/DOUBLE - Excelent[]

     

     

  • The "Embedded System Paranoia" results produced when running on TMS570LS20216, compiled using TMS470 Code Generation Tools v4.9.4, produced a summary of  "Excelent" for both single and double:

    [CortexR4] COMMENT: =========================================
    [CortexR4] COMMENT: Welcome to ESP - Embedded System Paranoia
    [CortexR4] COMMENT: Please let me know your experiences
    [CortexR4] COMMENT: and suggestions at lesh@oakcomp.co.uk or
    [CortexR4] COMMENT: L.Hatton@kent.ac.uk
    [CortexR4] COMMENT: 
    [CortexR4] COMMENT: $Revision: 1.9 $ $Date: 2004/04/13 14:21:53 $
    [CortexR4] COMMENT: This version will attempt divide by zero.
    [CortexR4] COMMENT: This version uses <stdio.h>
    [CortexR4] COMMENT: This version uses <signal.h>
    [CortexR4] COMMENT: This version uses <setjmp.h>
    [CortexR4] COMMENT: This version uses double precision. nbits=64
    [CortexR4] COMMENT: =========================================
    [CortexR4] -------> Diagnosis resuming after Milestone 0, Page 1
    [CortexR4] COMMENT: -1, 0, 1/2, 1, 2, 3, 4, 5, 9, 27, 32 & 240
    [CortexR4] PASSED : small integer tests are all OK.
    [CortexR4] COMMENT: Searching for Radix and Precision.
    [CortexR4] COMMENT: Radix = 2.00000000000000000e+00
    [CortexR4] COMMENT: Closest relative separation found is U1 = 1.11022302462515654e-16
    [CortexR4] COMMENT: Recalculating radix and precision
    [CortexR4] COMMENT: confirms closest relative separation U1.
    [CortexR4] COMMENT: Checking U1 for sanity...
    [CortexR4] COMMENT: U1 is a sensible value
    [CortexR4] COMMENT: Radix confirmed.
    [CortexR4] -------> Diagnosis resuming after Milestone 10, Page 2
    [CortexR4] -------> Diagnosis resuming after Milestone 20, Page 3
    [CortexR4] COMMENT: The number of significant digits of the 
    [CortexR4] COMMENT: Radix is 5.29999999999999982e+01
    [CortexR4] -------> Diagnosis resuming after Milestone 25, Page 4
    [CortexR4] -------> Diagnosis resuming after Milestone 30, Page 5
    [CortexR4] COMMENT: Subtraction appears to be normalized, as it should be.
    [CortexR4] COMMENT: Checking for guard digit in *, / and -.
    [CortexR4] PASSED : *, /, and - appear to have guard digits, as they should.
    [CortexR4] -------> Diagnosis resuming after Milestone 35, Page 6
    [CortexR4] COMMENT: Checking rounding on multiply, divide and add/subtract.
    [CortexR4] PASSED : Multiplication appears to round correctly.
    [CortexR4] -------> Diagnosis resuming after Milestone 40, Page 7
    [CortexR4] PASSED : Division appears to round correctly.
    [CortexR4] -------> Diagnosis resuming after Milestone 45, Page 8
    [CortexR4] PASSED : Addition/Subtraction appears to round correctly.
    [CortexR4] COMMENT: Checking for sticky bit.
    [CortexR4] 
    [CortexR4] PASSED : Sticky bit apparently used correctly.
    [CortexR4] -------> Diagnosis resuming after Milestone 50, Page 9
    [CortexR4] COMMENT: Testing multiplicative commutation 
    [CortexR4] COMMENT: with random pairs, trials = 20
    [CortexR4] PASSED : No failures found during these trials.
    [CortexR4] -------> Diagnosis resuming after Milestone 60, Page 10
    [CortexR4] COMMENT: Running test of exp(log)).
    [CortexR4] COMMENT: random X, (exp(log(x)) - x) trials = 20
    [CortexR4] -------> Diagnosis resuming after Milestone 64, Page 11
    [CortexR4] COMMENT: Running test of difference of two squares).
    [CortexR4] COMMENT: integer X, (X**2-Y**2) - (X-Y)(X+Y) trials = 20
    [CortexR4] -------> Diagnosis resuming after Milestone 65, Page 12
    [CortexR4] COMMENT: Running transcendental test 1.
    [CortexR4] COMMENT: random X, (sin(X)**2+cos(X)**2) - 1.0 trials = 20
    [CortexR4] -------> Diagnosis resuming after Milestone 66, Page 13
    [CortexR4] COMMENT: Running transcendental test 2.
    [CortexR4] COMMENT: random X, sin(4X) identity trials = 20
    [CortexR4] -------> Diagnosis resuming after Milestone 67, Page 14
    [CortexR4] COMMENT: Running hyperbolic test 1.
    [CortexR4] COMMENT: random X, (cosh(X)**2-sinh(X)**2) - 1.0 trials = 20
    [CortexR4] -------> Diagnosis resuming after Milestone 68, Page 15
    [CortexR4] COMMENT: Running test of square root(x).
    [CortexR4] COMMENT: Testing integer X, sqrt(X * X) = X, trials = 20
    [CortexR4] COMMENT: Test for sqrt monotonicity.
    [CortexR4] PASSED : sqrt has passed a test for Monotonicity.
    [CortexR4] -------> Diagnosis resuming after Milestone 70, Page 16
    [CortexR4] -------> Diagnosis resuming after Milestone 80, Page 17
    [CortexR4] COMMENT: Testing whether sqrt is rounded or chopped.
    [CortexR4] PASSED : Square root appears to be correctly rounded.
    [CortexR4] -------> Diagnosis resuming after Milestone 85, Page 18
    [CortexR4] -------> Diagnosis resuming after Milestone 90, Page 19
    [CortexR4] COMMENT: Testing powers Z^i for small Integers Z and i.
    [CortexR4] -------> Diagnosis resuming after Milestone 91, Page 20
    [CortexR4] PASSED : ... no discrepancies found.
    [CortexR4] -------> Diagnosis resuming after Milestone 100, Page 21
    [CortexR4] COMMENT: Seeking Underflow thresholds UfThold and E0.
    [CortexR4] -------> Diagnosis resuming after Milestone 110, Page 22
    [CortexR4] COMMENT: Smallest strictly positive number found
    [CortexR4] COMMENT: is E0 = 4.94065645841246592e-324
    [CortexR4] COMMENT: Since comparison denies Z = 0, evaluating 
    [CortexR4] COMMENT: (Z + Z) / Z should be safe.
    [CortexR4] COMMENT: (Z+Z)/Z is OK provided Over/Underflow
    [CortexR4] COMMENT: has NOT just been signaled.
    [CortexR4] COMMENT: Underflow is gradual; Absolute roundoff error in UfThold < E0.
    [CortexR4] COMMENT: The Underflow threshold is 2.22507385850720096e-308
    [CortexR4] COMMENT: Below this, a calculation may suffer larger Relative 
    [CortexR4] COMMENT: error than merely roundoff.
    [CortexR4] -------> Diagnosis resuming after Milestone 120, Page 23
    [CortexR4] COMMENT: Since underflow occurs below the threshold
    [CortexR4] COMMENT: UfThold = 2.00000000000000000e+00 ^ -1.02200000000000002e+03
    [CortexR4] COMMENT: only underflow could affect this expression.
    [CortexR4] COMMENT: calculating yields: 0.00000000000000000e+00
    [CortexR4] PASSED : This computed value is O.K.
    [CortexR4] -------> Diagnosis resuming after Milestone 130, Page 24
    [CortexR4] COMMENT: As X -> 1, Testing X^((X + 1) / (X - 1)) against exp(2).
    [CortexR4] COMMENT: exp(2) = 7.38905609893065218e+00
    [CortexR4] PASSED : Accuracy seems adequate.
    [CortexR4] -------> Diagnosis resuming after Milestone 140, Page 25
    [CortexR4] COMMENT: Testing powers Z^Q at four nearly extreme values.
    [CortexR4] PASSED : ... no discrepancies found.
    [CortexR4] -------> Diagnosis resuming after Milestone 150, Page 26
    [CortexR4] -------> Diagnosis resuming after Milestone 160, Page 27
    [CortexR4] COMMENT: Searching for Overflow threshold:
    [CortexR4] COMMENT: This may generate an error.
    [CortexR4] COMMENT: Can `Z = -Y' overflow?
    [CortexR4] COMMENT: Trying it on Y = -Inf
    [CortexR4] PASSED : Seems O.K.
    [CortexR4] COMMENT: Overflow threshold is V = 1.79769313486231646e+308
    [CortexR4] COMMENT: Overflow saturates at V0 = +Inf
    [CortexR4] COMMENT: No overflow should be signalled for V*1 = 1.79769313486231646e+308
    [CortexR4] COMMENT: No overflow should be signalled for V/1 = 1.79769313486231646e+308
    [CortexR4] COMMENT: Any overflow separating V*1 from 
    [CortexR4] COMMENT: V above is a DEFECT.
    [CortexR4] -------> Diagnosis resuming after Milestone 161, Page 28
    [CortexR4] -------> Diagnosis resuming after Milestone 170, Page 29
    [CortexR4] -------> Diagnosis resuming after Milestone 175, Page 30
    [CortexR4] -------> Diagnosis resuming after Milestone 180, Page 31
    [CortexR4] -------> Diagnosis resuming after Milestone 190, Page 32
    [CortexR4] -------> Diagnosis resuming after Milestone 191, Page 33
    [CortexR4] -------> Diagnosis resuming after Milestone 200, Page 34
    [CortexR4] COMMENT: Trying to compute 1/0 gives +Inf
    [CortexR4] COMMENT: Trying to compute 0/0 gives Nan
    [CortexR4] -------> Diagnosis resuming after Milestone 210, Page 35
    [CortexR4] COMMENT: =========================================
    [CortexR4] COMMENT:     Embedded System Paranoia SUMMARY
    [CortexR4] COMMENT:         DOUBLE PRECISION 64 bits
    [CortexR4] COMMENT: Closest separation = 1.11022302462515654e-16
    [CortexR4] COMMENT:
    [CortexR4] COMMENT: Number of FAILUREs encountered       = 0
    [CortexR4] COMMENT: Number of SERIOUS DEFECTs discovered = 0
    [CortexR4] COMMENT: Number of DEFECTs discovered         = 0
    [CortexR4] COMMENT: Number of FLAWs discovered           = 0
    [CortexR4] COMMENT:
    [CortexR4] PASSED : No failures, defects nor flaws have been discovered.
    [CortexR4] COMMENT: Rounding appears to conform to IEEE standard P754
    [CortexR4] .
    [CortexR4] PASSED : The arithmetic diagnosed seems Excellent.
    [CortexR4] COMMENT:
    [CortexR4] COMMENT: Rating ...
    [CortexR4] COMMENT:
    [CortexR4] COMMENT:         =====> Excellent
    [CortexR4] COMMENT:                Very good
    [CortexR4] COMMENT:                Good
    [CortexR4] COMMENT:                Acceptable
    [CortexR4] COMMENT:                Unacceptable
    [CortexR4] COMMENT:                Broken
    [CortexR4] COMMENT:
    [CortexR4] COMMENT: -----------------------------------------
    [CortexR4] COMMENT:           MATHS LIBRARY TESTS
    [CortexR4] COMMENT:         (should all give zero)
    [CortexR4] COMMENT:
    [CortexR4] COMMENT: Basic identities
    [CortexR4] COMMENT: ln(1.0) = 
    [CortexR4] COMMENT:     0.00000000000000000e+00
    [CortexR4] COMMENT: exp(0.0) - 2.718281828459045235360287 = 
    [CortexR4] COMMENT:     0.00000000000000000e+00
    [CortexR4] COMMENT: Basic tests (Random over range 0<=X<=1)
    [CortexR4] COMMENT: Test, exp(log(X)) - X = 
    [CortexR4] COMMENT:     -1.11022302462515654e-16 -> 1.11022302462515654e-16
    [CortexR4] COMMENT:
    [CortexR4] COMMENT: Transcendental identities
    [CortexR4] COMMENT: Test, sin(1.0) - 0.84147098480789650665250 = 
    [CortexR4] COMMENT:     0.00000000000000000e+00
    [CortexR4] COMMENT: Test, cos(1.0) - 0.54030230586813971740094 = 
    [CortexR4] COMMENT:     0.00000000000000000e+00
    [CortexR4] COMMENT: Test, asin(1.0) - (pi/2) = 
    [CortexR4] COMMENT:     0.00000000000000000e+00
    [CortexR4] COMMENT: Test, acos(0.0) - (pi/2) = 
    [CortexR4] COMMENT:     0.00000000000000000e+00
    [CortexR4] COMMENT: Test, atan(1.0) - (pi/4) = 
    [CortexR4] COMMENT:     0.00000000000000000e+00
    [CortexR4] COMMENT: Transcendental tests (Random over range 0<=X<=1)
    [CortexR4] COMMENT: Test, sin**2(X)+cos**2(X)-1.0 = 
    [CortexR4] COMMENT:     0.00000000000000000e+00 -> 2.22044604925031308e-16
    [CortexR4] COMMENT: Test, sin(4X)-(8.0*cos**4(X)*tan(X))+(4.0*cos(X)*sin(X)) = 
    [CortexR4] COMMENT:     -8.88178419700125232e-16 -> 6.66133814775093924e-16
    [CortexR4] COMMENT:
    [CortexR4] COMMENT: Hyperbolic identities
    [CortexR4] COMMENT: Test, sinh(0.0)  = 
    [CortexR4] COMMENT:     0.00000000000000000e+00
    [CortexR4] COMMENT: Test, cosh(0.0) - 1.0  = 
    [CortexR4] COMMENT:     0.00000000000000000e+00
    [CortexR4] COMMENT: Hyperbolic tests (Random over range 0<=X<=1)
    [CortexR4] COMMENT: Test, cosh**2(X)-sinh**2(X)-1.0 = 
    [CortexR4] COMMENT:     -6.66133814775093924e-16 -> 4.44089209850062616e-16
    [CortexR4] COMMENT:
    [CortexR4] COMMENT: END OF TEST.
    [CortexR4] COMMENT: =========================================
    

    [CortexR4] COMMENT: =========================================
    [CortexR4] COMMENT: Welcome to ESP - Embedded System Paranoia
    [CortexR4] COMMENT: Please let me know your experiences
    [CortexR4] COMMENT: and suggestions at lesh@oakcomp.co.uk or
    [CortexR4] COMMENT: L.Hatton@kent.ac.uk
    [CortexR4] COMMENT: 
    [CortexR4] COMMENT: $Revision: 1.9 $ $Date: 2004/04/13 14:21:53 $
    [CortexR4] COMMENT: This version will attempt divide by zero.
    [CortexR4] COMMENT: This version uses <stdio.h>
    [CortexR4] COMMENT: This version uses <signal.h>
    [CortexR4] COMMENT: This version uses <setjmp.h>
    [CortexR4] COMMENT: This version uses single precision, nbits=32
    [CortexR4] COMMENT: =========================================
    [CortexR4] -------> Diagnosis resuming after Milestone 0, Page 1
    [CortexR4] COMMENT: -1, 0, 1/2, 1, 2, 3, 4, 5, 9, 27, 32 & 240
    [CortexR4] PASSED : small integer tests are all OK.
    [CortexR4] COMMENT: Searching for Radix and Precision.
    [CortexR4] COMMENT: Radix = 2.0000000e+00
    [CortexR4] COMMENT: Closest relative separation found is U1 = 5.9604645e-08
    [CortexR4] COMMENT: Recalculating radix and precision
    [CortexR4] COMMENT: confirms closest relative separation U1.
    [CortexR4] COMMENT: Checking U1 for sanity...
    [CortexR4] COMMENT: U1 is a sensible value
    [CortexR4] COMMENT: Radix confirmed.
    [CortexR4] -------> Diagnosis resuming after Milestone 10, Page 2
    [CortexR4] -------> Diagnosis resuming after Milestone 20, Page 3
    [CortexR4] COMMENT: The number of significant digits of the 
    [CortexR4] COMMENT: Radix is 2.4000000e+01
    [CortexR4] -------> Diagnosis resuming after Milestone 25, Page 4
    [CortexR4] -------> Diagnosis resuming after Milestone 30, Page 5
    [CortexR4] COMMENT: Subtraction appears to be normalized, as it should be.
    [CortexR4] COMMENT: Checking for guard digit in *, / and -.
    [CortexR4] PASSED : *, /, and - appear to have guard digits, as they should.
    [CortexR4] -------> Diagnosis resuming after Milestone 35, Page 6
    [CortexR4] COMMENT: Checking rounding on multiply, divide and add/subtract.
    [CortexR4] PASSED : Multiplication appears to round correctly.
    [CortexR4] -------> Diagnosis resuming after Milestone 40, Page 7
    [CortexR4] PASSED : Division appears to round correctly.
    [CortexR4] -------> Diagnosis resuming after Milestone 45, Page 8
    [CortexR4] PASSED : Addition/Subtraction appears to round correctly.
    [CortexR4] COMMENT: Checking for sticky bit.
    [CortexR4] 
    [CortexR4] PASSED : Sticky bit apparently used correctly.
    [CortexR4] -------> Diagnosis resuming after Milestone 50, Page 9
    [CortexR4] COMMENT: Testing multiplicative commutation 
    [CortexR4] COMMENT: with random pairs, trials = 20
    [CortexR4] PASSED : No failures found during these trials.
    [CortexR4] -------> Diagnosis resuming after Milestone 60, Page 10
    [CortexR4] COMMENT: Running test of exp(log)).
    [CortexR4] COMMENT: random X, (exp(log(x)) - x) trials = 20
    [CortexR4] -------> Diagnosis resuming after Milestone 64, Page 11
    [CortexR4] COMMENT: Running test of difference of two squares).
    [CortexR4] COMMENT: integer X, (X**2-Y**2) - (X-Y)(X+Y) trials = 20
    [CortexR4] -------> Diagnosis resuming after Milestone 65, Page 12
    [CortexR4] COMMENT: Running transcendental test 1.
    [CortexR4] COMMENT: random X, (sin(X)**2+cos(X)**2) - 1.0 trials = 20
    [CortexR4] -------> Diagnosis resuming after Milestone 66, Page 13
    [CortexR4] COMMENT: Running transcendental test 2.
    [CortexR4] COMMENT: random X, sin(4X) identity trials = 20
    [CortexR4] -------> Diagnosis resuming after Milestone 67, Page 14
    [CortexR4] COMMENT: Running hyperbolic test 1.
    [CortexR4] COMMENT: random X, (cosh(X)**2-sinh(X)**2) - 1.0 trials = 20
    [CortexR4] -------> Diagnosis resuming after Milestone 68, Page 15
    [CortexR4] COMMENT: Running test of square root(x).
    [CortexR4] COMMENT: Testing integer X, sqrt(X * X) = X, trials = 20
    [CortexR4] COMMENT: Test for sqrt monotonicity.
    [CortexR4] PASSED : sqrt has passed a test for Monotonicity.
    [CortexR4] -------> Diagnosis resuming after Milestone 70, Page 16
    [CortexR4] -------> Diagnosis resuming after Milestone 80, Page 17
    [CortexR4] COMMENT: Testing whether sqrt is rounded or chopped.
    [CortexR4] PASSED : Square root appears to be correctly rounded.
    [CortexR4] -------> Diagnosis resuming after Milestone 85, Page 18
    [CortexR4] -------> Diagnosis resuming after Milestone 90, Page 19
    [CortexR4] COMMENT: Testing powers Z^i for small Integers Z and i.
    [CortexR4] -------> Diagnosis resuming after Milestone 91, Page 20
    [CortexR4] PASSED : ... no discrepancies found.
    [CortexR4] -------> Diagnosis resuming after Milestone 100, Page 21
    [CortexR4] COMMENT: Seeking Underflow thresholds UfThold and E0.
    [CortexR4] -------> Diagnosis resuming after Milestone 110, Page 22
    [CortexR4] COMMENT: Smallest strictly positive number found
    [CortexR4] COMMENT: is E0 = 1.4012985e-45
    [CortexR4] COMMENT: Since comparison denies Z = 0, evaluating 
    [CortexR4] COMMENT: (Z + Z) / Z should be safe.
    [CortexR4] COMMENT: (Z+Z)/Z is OK provided Over/Underflow
    [CortexR4] COMMENT: has NOT just been signaled.
    [CortexR4] COMMENT: Underflow is gradual; Absolute roundoff error in UfThold < E0.
    [CortexR4] COMMENT: The Underflow threshold is 1.1754945e-38
    [CortexR4] COMMENT: Below this, a calculation may suffer larger Relative 
    [CortexR4] COMMENT: error than merely roundoff.
    [CortexR4] -------> Diagnosis resuming after Milestone 120, Page 23
    [CortexR4] COMMENT: Since underflow occurs below the threshold
    [CortexR4] COMMENT: UfThold = 2.0000000e+00 ^ -1.2600000e+02
    [CortexR4] COMMENT: only underflow could affect this expression.
    [CortexR4] COMMENT: calculating yields: 0.0000000e+00
    [CortexR4] PASSED : This computed value is O.K.
    [CortexR4] -------> Diagnosis resuming after Milestone 130, Page 24
    [CortexR4] COMMENT: As X -> 1, Testing X^((X + 1) / (X - 1)) against exp(2).
    [CortexR4] COMMENT: exp(2) = 7.3890557e+00
    [CortexR4] PASSED : Accuracy seems adequate.
    [CortexR4] -------> Diagnosis resuming after Milestone 140, Page 25
    [CortexR4] COMMENT: Testing powers Z^Q at four nearly extreme values.
    [CortexR4] PASSED : ... no discrepancies found.
    [CortexR4] -------> Diagnosis resuming after Milestone 150, Page 26
    [CortexR4] -------> Diagnosis resuming after Milestone 160, Page 27
    [CortexR4] COMMENT: Searching for Overflow threshold:
    [CortexR4] COMMENT: This may generate an error.
    [CortexR4] COMMENT: Can `Z = -Y' overflow?
    [CortexR4] COMMENT: Trying it on Y = -Inf
    [CortexR4] PASSED : Seems O.K.
    [CortexR4] COMMENT: Overflow threshold is V = 3.4028235e+38
    [CortexR4] COMMENT: Overflow saturates at V0 = +Inf
    [CortexR4] COMMENT: No overflow should be signalled for V*1 = 3.4028235e+38
    [CortexR4] COMMENT: No overflow should be signalled for V/1 = 3.4028235e+38
    [CortexR4] COMMENT: Any overflow separating V*1 from 
    [CortexR4] COMMENT: V above is a DEFECT.
    [CortexR4] -------> Diagnosis resuming after Milestone 161, Page 28
    [CortexR4] -------> Diagnosis resuming after Milestone 170, Page 29
    [CortexR4] -------> Diagnosis resuming after Milestone 175, Page 30
    [CortexR4] -------> Diagnosis resuming after Milestone 180, Page 31
    [CortexR4] -------> Diagnosis resuming after Milestone 190, Page 32
    [CortexR4] -------> Diagnosis resuming after Milestone 191, Page 33
    [CortexR4] -------> Diagnosis resuming after Milestone 200, Page 34
    [CortexR4] COMMENT: Trying to compute 1/0 gives +Inf
    [CortexR4] COMMENT: Trying to compute 0/0 gives Nan
    [CortexR4] -------> Diagnosis resuming after Milestone 210, Page 35
    [CortexR4] COMMENT: =========================================
    [CortexR4] COMMENT:     Embedded System Paranoia SUMMARY
    [CortexR4] COMMENT:         SINGLE PRECISION 32 bits
    [CortexR4] COMMENT: Closest separation = 5.9604645e-08
    [CortexR4] COMMENT:
    [CortexR4] COMMENT: Number of FAILUREs encountered       = 0
    [CortexR4] COMMENT: Number of SERIOUS DEFECTs discovered = 0
    [CortexR4] COMMENT: Number of DEFECTs discovered         = 0
    [CortexR4] COMMENT: Number of FLAWs discovered           = 0
    [CortexR4] COMMENT:
    [CortexR4] PASSED : No failures, defects nor flaws have been discovered.
    [CortexR4] COMMENT: Rounding appears to conform to IEEE standard P754
    [CortexR4] .
    [CortexR4] PASSED : The arithmetic diagnosed seems Excellent.
    [CortexR4] COMMENT:
    [CortexR4] COMMENT: Rating ...
    [CortexR4] COMMENT:
    [CortexR4] COMMENT:         =====> Excellent
    [CortexR4] COMMENT:                Very good
    [CortexR4] COMMENT:                Good
    [CortexR4] COMMENT:                Acceptable
    [CortexR4] COMMENT:                Unacceptable
    [CortexR4] COMMENT:                Broken
    [CortexR4] COMMENT:
    [CortexR4] COMMENT: -----------------------------------------
    [CortexR4] COMMENT:           MATHS LIBRARY TESTS
    [CortexR4] COMMENT:         (should all give zero)
    [CortexR4] COMMENT:
    [CortexR4] COMMENT: Basic identities
    [CortexR4] COMMENT: ln(1.0) = 
    [CortexR4] COMMENT:     0.0000000e+00
    [CortexR4] COMMENT: exp(0.0) - 2.718281828459045235360287 = 
    [CortexR4] COMMENT:     0.0000000e+00
    [CortexR4] COMMENT: Basic tests (Random over range 0<=X<=1)
    [CortexR4] COMMENT: Test, exp(log(X)) - X = 
    [CortexR4] COMMENT:     -2.9802322e-08 -> 3.7252903e-09
    [CortexR4] COMMENT:
    [CortexR4] COMMENT: Transcendental identities
    [CortexR4] COMMENT: Test, sin(1.0) - 0.84147098480789650665250 = 
    [CortexR4] COMMENT:     0.0000000e+00
    [CortexR4] COMMENT: Test, cos(1.0) - 0.54030230586813971740094 = 
    [CortexR4] COMMENT:     0.0000000e+00
    [CortexR4] COMMENT: Test, asin(1.0) - (pi/2) = 
    [CortexR4] COMMENT:     0.0000000e+00
    [CortexR4] COMMENT: Test, acos(0.0) - (pi/2) = 
    [CortexR4] COMMENT:     0.0000000e+00
    [CortexR4] COMMENT: Test, atan(1.0) - (pi/4) = 
    [CortexR4] COMMENT:     0.0000000e+00
    [CortexR4] COMMENT: Transcendental tests (Random over range 0<=X<=1)
    [CortexR4] COMMENT: Test, sin**2(X)+cos**2(X)-1.0 = 
    [CortexR4] COMMENT:     -5.9604645e-08 -> 1.1920929e-07
    [CortexR4] COMMENT: Test, sin(4X)-(8.0*cos**4(X)*tan(X))+(4.0*cos(X)*sin(X)) = 
    [CortexR4] COMMENT:     -4.7683716e-07 -> 4.7683716e-07
    [CortexR4] COMMENT:
    [CortexR4] COMMENT: Hyperbolic identities
    [CortexR4] COMMENT: Test, sinh(0.0)  = 
    [CortexR4] COMMENT:     0.0000000e+00
    [CortexR4] COMMENT: Test, cosh(0.0) - 1.0  = 
    [CortexR4] COMMENT:     0.0000000e+00
    [CortexR4] COMMENT: Hyperbolic tests (Random over range 0<=X<=1)
    [CortexR4] COMMENT: Test, cosh**2(X)-sinh**2(X)-1.0 = 
    [CortexR4] COMMENT:     -1.1920929e-07 -> 1.1920929e-07
    [CortexR4] COMMENT:
    [CortexR4] COMMENT: END OF TEST.
    [CortexR4] COMMENT: =========================================
    
     

    Guess that since the TMS570LS series has been certified for use in IEC 61508 SIL3 safety systems means that more effort has been placed in floating-point conformance compared to other devices.

  • That device has native floating-point support, which is the only reason it fares better on that test.  The compiler is exactly the same, and for operations which cannot be done natively, there will still be some gaps here and there, particularly with constants like Inf and NaN.