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