1  REM  ****  HP BASIC PROGRAM LIBRARY  *******************************
2  REM
3  REM        ROMINT:   INTEGRATES A FUNCTION (ROMBERG METHOD)
4  REM
5  REM        36022 REV  B   6/73
6  REM
7  REM  ****  CONTRIBUTED PROGRAM  ************************************
10  REM  ***  ROMBERG INTEGRATION.  HP VERSION MODIFIED BY B. GATELEY;10/24/72 ***
15  PRINT "'RUN-100' TO AVOID INSTRUCTIONS."LIN(1)
20  PRINT "THIS PROGRAM INTEGRATES A FUNCTION USING THE ROMBERG METHOD.  SEE THE"
25  PRINT "ACM ALGORITHM #60 FOR TECHNICAL DETAILS.  TO USE, DEFINE THE INTEGRAND"
30  PRINT "IN LINE 100 BY A 'DEF FNF(X)=...' STATEMENT - E.G.,"
35  PRINT "    100 DEF FNF(X)=X^2"
40  PRINT "THE LOWER AND UPPER LIMITS OF INTEGRATION WILL BE REQUESTED DURING"
45  PRINT "EXECUTION.  THE OUTPUT IS THE SEQUENCE OF THE FIRST FIVE APPROXIMATIONS"
50  PRINT "(WHICH SHOULD CONVERGE TO THE VALUE OF THE INTEGRAL).  THE NUMBER OF"
55  PRINT "APPROXIMATIONS MAY BE INCREASED BY CHANGING THE VALUE OF N IN LINE 107."
60  PRINT LIN(1)
100  DEF FNF()=
101  DIM Z[20]
102  PRINT "LOWER LIMIT";
103  INPUT A
104  PRINT "UPPER LIMIT";
105  INPUT B
106  PRINT LIN(1)"APPROXIMATION VALUES:"
107  N=5
108  Z1=B-A
109  LET Z8=1
110  LET Z[1]=(FNF(A)+FNF(B))/2
111  FOR Z5=1 TO N
112  LET Z6=0
113  Z7=Z1/(2*Z8)
114  FOR Z9=1 TO 2*Z8-1 STEP 2
115  LET Z6=Z6+FNF(A+Z7*Z9)
116  NEXT Z9
117  LET Z[Z5+1]=(Z6/Z8+Z[Z5])/2
118  LET Z6=1
119  FOR Z9=Z5 TO 1 STEP -1
120  LET Z6=4*Z6
121  LET Z[Z9]=Z[Z9+1]+(Z[Z9+1]-Z[Z9])/(Z6-1)
122  NEXT Z9
123  LET Z8=Z8*2
124  LET Z7=Z7/2
125  PRINT Z[1]*Z1
126  NEXT Z5
127  END 
