code 49999;
real procedure ANDERSON DARLING(X, L, U, SORTED);
value L, U, SORTED;
array X; integer L, U; Boolean SORTED;
begin integer I, N;
real MU, SIGMA, XI, FACTOR, SUM, ESTIMATE;
N:= U - L +1;
if N ≤ 1 then
STATAL3 ERROR(“ANDERSON-DARLING”, 3, U);
if ¬ SORTED then VECQSORT(X, L, U);
if X[L] = X[U] then
STATAL3 ERROR(“ANDERSON-DARLING”, 1, X[L]);
comment FIRST THE ESTIMATION (IN THE USUAL WAY) OF
EXPECTATION AND STANDARD DEVIATION OF THE NORMAL
DISTRIBUTION. ;
MU:= SIGMA:= 0; ESTIMATE:= (X[L] + X[U]) / 2;
for I:= L step 1 until U do
begin XI:= X[I]:= X[I] - ESTIMATE;
MU:= MU + XI; SIGMA:= SIGMA + XI × XI;
end;
MU:= MU / N;
SIGMA:= SQRT((SIGMA - N × MU × MU) / (N - 1));
comment TRANSFORMATION OF THE OBSERVATIONS TO
UNIFORM(0, 1)-DISTRIBUTED QUANTITIES.;
for I:= L step 1 until U do
X[I]:=PHI((X[I] - MU) / SIGMA);
comment ANDERSON-DARLING TEST QUANTITY;
SUM:= 0; FACTOR:= -1;
for I:= L step 1 until U do
begin FACTOR:= FACTOR + 2;
SUM:= SUM +
FACTOR × (LN(X[I]) + LN(1 - X[L + U - I]))
end;
ANDERSON DARLING:=
(1 + 4 / N - 25 / N / N) × (-SUM / N - N)
end OF ANDERSON DARLING;
eop