Next: PASCAL Version Up: DEC Alpha 2000 Previous: C Version (gcc 2.6.3)

FORTRAN Version



 Diagnosis resumes after milestone  #    7,    ... page     5

 Program is now RUNNING tests on small integers:
 -1, 0, 1/2 , 1, 2, 3, 4, 5, 9, 27, 32 & 240 are O.K.

 Searching for radix and precision...
 Radix =   2.
 Closest relative separation found is   1.11022302E-16
 Recalculating radix and precision 
 confirms closest relative separation .
 Radix confirmed.
 The number of significant digits of radix   2. is  53.00
 Test for extra-precise subexpressions:
 Subexpressions do not appear to be calculated
  with extra precision.

 To continue diagnosis, press return.
 Diagnosis resumes after milestone  #   30,    ... page     6

 Subtraction appears to be normalized as it should.
 Checking for guard digits in multiply divide and subtract.
 These operations appear to have guard digits as they should.

 To continue diagnosis, press return.
 Diagnosis resumes after milestone  #   40,    ... page     7

 Checking for rounding in multiply, divide and add/subtract:
 Multiplication appears to be correctly rounded.
 Division appears to be correctly rounded.
 Add/subtract appears to be correctly rounded.
 checking for sticky bit:
 Sticky bit appears to be used correctly.

 Does multiplication commute? Testing if  x*y = y*x  for  20 random pairs:
 No failure found in   20 randomly chosen pairs.

 Running tests of square root...
 Testing if  sqrt(x*x)  =  x  for    20 integers  x.
 Found no discrepancies.
 Sqrt has passed a test for monotonicity.
 Testing whether  sqrt  is rounded or chopped:
 Square root appears to be correctly rounded.

 To continue diagnosis, press return.
 Diagnosis resumes after milestone  #   90,    ... page     8

 Testing powers  z^i  for small integers  z  and  i :
 Start with 0.**0 .
 Is this a program restart after failure (1)
 or a start from scratch (0) ?
 Restarting from milestone    90.

 To continue diagnosis, press return.
 Diagnosis resumes after milestone  #   90,    ... page     9

 Testing powers  z^i  for small integers  z  and  i :
 No discrepancies found.

 Seeking underflow threshold and min positive number:
 Smallest strictly positive number found is  minpos  =  2.22507386-308
 Since comparison denies   MINPOS  = 0,
  evaluating  ( MINPOS  +  MINPOS ) /  MINPOS   should be safe;
 what the machine gets for  ( MINPOS  +  MINPOS ) /  MINPOS   is
            0.2000000E+01
 This is O.K. provided over/underflow has not just been signaled.
 FLAW:  x =  0.30594766-307 is unequal to  z =  0.22250739-307 ,
 yet  x-z  yields   0.0000000E+00
 Should this not signal underflow, this is a SERIOUS
 DEFECT that causes confusion when innocent statements like
 if (x.eq.z) then ... else ... ( f(x)-f(z) )/(x-z) ...
 encounter division by zero although actually  x/z = 1 +   0.37500000E+00
 The  underflow threshold is   0.22250739-307 , below which
 calculation may suffer larger relative error than merely roundoff.

 To continue diagnosis, press return.
 Diagnosis resumes after milestone  #  130,    ... page    10

 since underflow occurs below the threshold  =
          (  2.00000000E+00)^( -1.02200000E+03) ,
 only underflow should afflict the expression
          (  2.00000000E+00)^( -2.04400000E+03) ;
 actually calculating it yields   
   0.00000000E+00
 This computed value is O.K.
 Testing  x^((x+1)/(x-1)) vs. exp(2) =   0.73890561E+01  as  x-> 1.
 Accuracy seems adequate.
 Testing powers  z^q  at four nearly extreme values:
 No discrepancies found.


 To continue diagnosis, press return.
 Diagnosis resumes after milestone  #  160,    ... page    11

 Searching for overflow threshold:
 Is this a program restart after failure (1)
 or a start from scratch (0) ?
 Restarting from milestone   161.
 Can " z = -y " overflow?  trying it on  y =  -8.98846567+307
 Seems O.K.
 Overflow threshold is  v =   1.79769313+308
 There is no saturation value because
 the system traps on overflow.
 No overflow should be signaled for  v*1 = 
                                             1.79769313+308
                            nor for  v/1 = 
                                             1.79769313+308
 Any overflow signal separating this  *  from one above is a DEFECT.

 To continue diagnosis, press return.
 Diagnosis resumes after milestone  #  190,    ... page    12


 What messages and/or values does division by zero produce?
 About to compute 1/0...
 Is this a program restart after failure (1)
 or a start from scratch (0) ?
 Restarting from milestone   211.
 About to compute 0/0...
 Is this a program restart after failure (1)
 or a start from scratch (0) ?
 Restarting from milestone   212.

 To continue diagnosis, press return.
 Diagnosis resumes after milestone  #  220,    ... page    13

 The number of  FLAWs  discovered =              1
 The arithmetic diagnosed seems Satisfactory though flawed.
 End of Test.


peter@physik3.gwdg.de
Tue Aug 8 13:05:00 GMT+0200 1995