code 31425; procedure GSS JAC WGHTS(N, ALFA, BETA, X, W); value N, ALFA, BETA; integer N; real ALFA, BETA; array X, W; if ALFA = BETA then begin integer I, J, M; array B[1:N - 1]; real R0, R1, R2, S, H0, ALFA2, XI; ALL JAC ZER(N, ALFA, ALFA, X); ALFA2:= 2*ALFA; H0:= 2**(ALFA2 + 1)*GAMMA(1 + ALFA)**2/GAMMA(ALFA2 + 2); B[1]:= 1/SQRT(3 + ALFA2); M:= N - (N//2); for I:= 2 step 1 until N - 1 do B[I]:= SQRT(I*(I + ALFA2)/(4*(I + ALFA)**2 - 1)); for I:= 1 step 1 until M do begin XI:= ABS(X[I]); R0:= 1; R1:= XI/B[1]; S:= 1 + R1*R1; for J:= 2 step 1 until N - 1 do begin R2:= (XI*R1 - B[J - 1]*R0)/B[J]; R0:= R1; R1:= R2; S:= S + R2*R2 end; W[I]:= W[N + 1 - I]:= H0/S end end else begin integer I, J; array A, B[0:N]; real MIN, SUM, H0, R0, R1, R2, XI, ALFABETA; ALFABETA:= ALFA + BETA; MIN:= (BETA - ALFA)*ALFABETA; B[0]:= 0; SUM:= ALFABETA + 2; A[0]:= (BETA - ALFA)/SUM; A[1]:= MIN /SUM/(SUM + 2); B[1]:= 2*SQRT((1 + ALFA)*(1 + BETA)/(SUM + 1))/SUM; for I:= 2 step 1 until N - 1 do begin SUM:= I + I + ALFABETA; A[I]:= MIN/SUM/(SUM + 2); B[I]:= (2/SUM)* SQRT(I*(SUM - I)*(I + ALFA)*(I + BETA)/(SUM*SUM - 1)) end; H0:= 2**(ALFABETA + 1)*GAMMA(1 + ALFA)*GAMMA(1 + BETA)/ GAMMA(2 + ALFABETA); ALL JAC ZER(N, ALFA, BETA, X); for I:= 1 step 1 until N do begin XI:= X[I]; R0:= 1; R1:= (XI - A[0])/B[1]; SUM:= 1 + R1*R1; for J:= 2 step 1 until N - 1 do begin R2:= ((XI - A[J - 1])*R1 - B[J - 1]*R0)/B[J]; SUM:= SUM + R2*R2; R0:= R1; R1:= R2 end; W[I]:= H0/SUM end end GSS JAC WGHTS eop