Accuracy Comparison for REAL arithmetic
BP 7.0 Turbo Pascal Library
versus
BP 7.0 Runtime Library Update 1.2
Test of basic arithmetic with FUN1_TST. 10,000,000 random trials per function
Limit of relative error for full 40 bit accuracy is 9.094947022e-13.
BP 7.0 RTL BP 7.0 RLU 1.0
% wrong max. rel. error % wrong max. rel. error
ADD 0.0000% 9.094837432e-13 0.0000% 9.094820930e-13
SUB 0.1571% 9.155430759e-13 0.0000% 9.094905407e-13
MUL 0.0000% 8.459999740e-13 0.0000% 9.089090757e-13
DIV 0.0000% 9.093448608e-13 0.0000% 9.093327167e-13
Short-MUL * 0.0000% 9.094682364e-13 0.0000% 9.094466215e-13
* Short-MUL is a multiplication where one of the operands carries only 16
bits of precision (the last 24 mantissa bits are zero).
Test of higher math functions with ELEFUNT test programs. 1,000,000 random
trials per function test.
MRE = maximum relative error
RMS = root mean square relative error (average error)
Errors reported by ELEFUNT test programs tend to be larger than the actual
error of the routines as compared to higher precision routines (coprocessor).
This is due to the nature of the tests, which are based on functional
identities. The additional computations in testing the identities cause
additional round-off errors.
BP 7.0 RTL BP 7.0 RLU 1.0
% wrong MRE RMS % wrong MRE RMS
DSQRT Test1 9.5168% 1.28622e-12 3.55691e-13 0.0000% 0.00000e+00 0.00000e+00
Test2 0.0004% 1.81880e-12 3.63514e-15 0.0000% 0.00000e+00 0.00000e+00
DSIN Test1 48.5711% 7.27690e-12 1.23904e-12 38.4640% 2.64505e-12 7.22852e-13
Test2 84.1128% 4.11862e-04 4.11889e-07 44.0276% 8.00614e-09 8.04878e-12
* Test3 91.4008% 9.81763e-07 2.28067e-09 42.9703% 4.31878e-11 8.08930e-13
DATAN Test1 18.7838% 1.81897e-12 5.36074e-13 11.1927% 1.81897e-12 4.11701e-13
Test2 63.1259% 6.66016e-12 1.91192e-12 20.3286% 1.82093e-12 5.74504e-13
Test3 70.2866% 4.27213e-12 1.38748e-12 31.3874% 3.33085e-12 7.80409e-13
Test4 64.5424% 7.27474e-12 2.87544e-12 42.5229% 3.63782e-12 9.16674e-13
DEXP Test1 51.1003% 4.86911e-12 1.12152e-12 29.3751% 2.93224e-12 7.09432e-13
Test2 99.4743% 6.14647e-11 2.34142e-11 30.0348% 2.95769e-12 7.24600e-13
Test3 99.7909% 6.09032e-11 2.82847e-11 30.5228% 2.94201e-12 7.30898e-13
DLOG Test1 99.9991% 1.00000e+00 1.10905e-02 39.8793% 3.46234e-12 8.16947e-13
Test2 92.8802% 3.87388e-11 5.31959e-12 38.5649% 3.63262e-12 8.65898e-13
** Test3 73.2293% 2.84949e-11 2.72609e-12 62.3653% 5.44522e-12 1.36790e-12
Test4 22.3294% 1.81898e-12 6.51330e-13 11.5519% 2.32351e-12 4.31119e-13
* test of cosine function
** test of LOG10 function, here simulated by Ln(10) * Ln(X)
Comparison of the results returned by the higher math functions of the REAL
arithmetic software routines with the results returned by a math coprocessor
(Intel RapidCAD). 10,000,000 uniformly distributed arguments from the stated
interval were used to test each function. Note that measuring the error in
ULPs is a more accurate metric than simply measuring the relative error. An
ideal function realization would have an error of exactly 0.5 ULPs.
BP 7.0 RTL BP 7.0 RLU 1.0
interval % wrong ULP error % wrong ULP error
EXP -80.0 .. 80.0 94.6121% -68.4469 .. 67.5848 11.7631% -1.4265 .. 1.4454
LN 0.001 .. 20.0 90.6081% -161855. .. 96518.0 37.1437% -1.8061 .. 2.1469
SIN -pi/2 .. pi/2 56.9757% -592880. .. 159489. 8.1556% -1.2619 .. 0.9408
COS -pi/2 .. pi/2 76.4614% -738834. .. 1.61904 * 18.7306% -6914048 .. 1.3582
ATAN -20.0 .. 20.0 33.9098% -4.4094 .. 2.06105 40.5580% -1.7263 .. 1.2855
%wrong are those cases where the result returned by the REAL arithmetic
software routines differ from the result returned by the coprocessor
and rounded to the precision of the REAL type.
* the high error in the COS routine is caused by the loss of accuracy
in the argument reduction. Loss of accuracy in the reduction process
for the SIN and COS functions can only prohibited at a relatively
high cost.
|