6 60000207000000003000000000028700200150400000000002870000005042000040810447000 2BEGIN PROCEDURE SIMPS(A,B,EPSILON,BOUND;VALUE;F()); BEGIN 2 COMMENT A,B ARE LIMITS OF INTEGRATION. EPSILON IS 2 PERMISSIBLE DIFFERENCE BETWEEN TWO SUCCESSIVE SUMS 2 BOUND IS UPPER BOUND FOR ABS(F(X)) IN THE INTERVAL 2 (A,B), VALUE IS THE ANSWER. F() IS THE FUNCTION TO BE 2 INTEGRATED BY SIMPSONS RULE; 2 TH=B-A; IBAR=BOUND.TH; N=1; J=0.5(F(A)+F(B))TH; 2 LOOP.. H=0.5TH; S=0; FOR K=(A+H,TH,B); S=S+F(K); 2 I=J+4H.S; IF ABS(I-IBAR)LEQ EPSILON; BEGIN VALUE=I/3; 2 RETURN END; IBAR=I; J=0.25(I+J); N=N+N; TH=H; 2 GO TO LOOP END END; 2 BEGIN PROCEDURE DARCTAN(X); BEGIN DARCTAN()=1/(X*2+1); 2 RETURN END END; 2 COMMENT NOW THE PROGRAM PROPER FOLLOWS; 2 SIMPS(0.0,1.0,1**-5,2.0;S;DARCTAN()); 2 WRITE(;;A,B); STOP; 2 OUTPUT A(S); FORMAT B(X11.8,T1); FINISH;