code 33171;
procedure ELIMINATION(U,LJ,UJ,LL,UL,RESIDUAL,A,B,N,DISCR,K,
RATECONV,DOMEIGVAL,OUT);
value LJ,UJ,LL,UL,A,B; integer LJ,UJ,LL,UL,N,K;
real A,B,RATECONV,DOMEIGVAL; array U,DISCR;
procedure RESIDUAL,OUT;
begin real PI,AUXCOS,C,D;
real procedure OPTPOL(X); value X; real X;
begin real W,Y;
W:= (B * COS(.5*PI/X) + DOMEIGVAL) / (B - DOMEIGVAL);
if W < -1 then W:= -1;
if ABS(W) <= 1 then
begin Y:= ARCCOS(W);
OPTPOL:= 2 * SQRT(A/B) + TAN(X*Y) *
(Y - B*PI*SIN(.5*PI/X)*.5 / (X * (B-DOMEIGVAL) *
SQRT(ABS(1-W*W))))
end else
begin Y:= LN(W + SQRT(ABS(W*W-1)));
OPTPOL:= 2 * SQRT(A/B) - TANH(X*Y) * (Y + B*PI*SIN(.5*PI/X)*
.5/(X*(B-DOMEIGVAL)*SQRT(ABS(W*W-1))))
end
end OPTPOL;
PI:= 3.1415 92653 58979;
C:= 1;
if OPTPOL(C) < 0 then
begin D:= .5 * PI * SQRT(ABS(B/DOMEIGVAL));
M: D:= D + D;
if ZEROIN(C,D,OPTPOL(C),C*"-3) then N:= ENTIER(C+.5)
else goto M;
end else N:= 1;
AUXCOS:= COS(.5*PI/N);
RICHARDSON(U,LJ,UJ,LL,UL,true ,RESIDUAL,
(2*DOMEIGVAL + B*(AUXCOS-1))/(AUXCOS+1),B,N,DISCR,K,RATECONV,
DOMEIGVAL,OUT)
end ELIMINATION;
eop