code 41560;
real procedure STUDRANGE(Q,N,NU);
value Q,N,NU; real Q,N,NU;
begin real X, PI, LN4, LNSQRT2PI, LNSQRTPI4;
array E[1 : 3];
real procedure POWER(X)TO:(N); value X, N;
real X; integer N;
begin integer N2; real Y;
Y:= 1;
WHILE POS N:
if N ≤ 0 then goto END WHILE POS N;
N2:= N ÷ 2;
WHILE EVEN N:
if N2 × 2 ≠ N then goto END WHILE EVEN N;
N:= N2; X:= X × X; N2:= N ÷ 2;
goto WHILE EVEN N;
END WHILE EVEN N:
N:= N - 1; Y:= Y × X;
goto WHILE POS N;
END WHILE POS N:
POWER:= Y
end POWER;
real procedure RANGE(T,N); value T,N; real T,N;
begin real U; real array E[1:3];
E[1]:= E[2]:= 10-7;
RANGE:= N × QADRAT(U, -5, +5,
PHIDENS(U) × POWER(PHI(U + T) - PHI(U), N - 1), E);
end RANGE;
real procedure INTEGRAND(X); value X; real X;
begin real XQ;
XQ:= X / Q;
INTEGRAND:= EXP(NU × (LN4 + LN(XQ) - LNSQRT2PI
- XQ × XQ / 2)) × (1 - RANGE(X, N)) / X;
end INTEGRAND;
if N < 2 ∨ ENTIER(N) < N then
STATAL ERROR(“STUDRANGE”, 2, N);
if NU < 1 ∨ ENTIER(NU) < NU then
STATAL ERROR(“STUDRANGE”, 3, NU);
E[1]:= E[2]:= 10-6; PI:= ARCTAN(1) × 4;
LNSQRT2PI:= .5 × LN(2 × PI); LN4:= LN(4);
LNSQRTPI4:= .5 × LN(PI) - LN4;
STUDRANGE:= if Q ≤ 0 then 0 else
1 - 2 × EXP(NU × (LN(NU) / 2 + LNSQRTPI4)
- LOGGAMMA(NU / 2)) ×
QADRAT(X, 10-6, Q × 7, INTEGRAND(X), E);
end STUDRANGE;
eop