10  REM ****  HP TIME-SHARED BASIC PROGRAM LIBRARY  ********************
20  REM
30  REM               SURFAC:  AREA OF SURFACE OF REVOLUTION
40  REM
50  REM               36338 (A801)  REV A -- 10/71
60  REM
70  REM ****  CONTRIBUTED PROGRAM  *************************************
80  REM SURFAR - COPYRIGHT 1971, POLYTECHNIC INSTITUTE OF BROOKLYN
100  REM AREA OF A SURFACE OF REVOLUTION, Q. J. O'CONNOR, 7/12/68 
101  REM REVISED 8/21/70 (D. PESSEL)
105  PRINT TAB(17);"AREA OF A SURFACE OF REVOLUTION"
106  PRINT 
110  PRINT "    THIS PROGRAM APPROXIMATES THE AREA OF A SURFACE OF"
120  PRINT "REVOLUTION BY COMPUTING LATERAL AREAS OF FRUSTUMS OF CONES"
130  PRINT "OF REVOLUTION.  TYPE IN YOUR FUNCTION OF X (Y=F(X)),"
131  PRINT "WHOSE GRAPH WILL BE ROTATED ABOUT THE X AXIS, AS FOLLOWS:"
150  PRINT 
160  PRINT "       1 GO TO 200"
170  PRINT "       300 DEF FNY(X)=...(YOUR FUNCTION OF X)..."
180  PRINT "       RUN"
185  PRINT 
186  PRINT "FOR EXAMPLE, TO USE THE FUNCTION Y=X^2 YOU WOULD TYPE:"
187  PRINT 
188  PRINT "       1 GO TO 200"
189  PRINT "       300 DEF FNY(X)=X^2"
190  PRINT "       RUN"
191  PRINT 
192  PRINT "YOU MIGHT TRY THAT AS YOUR FIRST RUN."
193  PRINT "END EACH LINE, INCLUDING 'RUN', WITH THE 'RETURN' KEY."
195  STOP 
200  REM COMPUTATION SECTION OF PROGRAM 
220  PRINT "WHAT ARE THE ABSCISSAS OF THE END POINTS OF THE SECTION"
230  PRINT "TO BE CONSIDERED (SMALLER FIRST: P,Q)";
240  INPUT P,Q
245  IF P <= Q THEN 250
246  PRINT "P CANNOT BE GREATER THAN Q!"
247  GOTO 220
250  PRINT 
260  PRINT "NUMBER OF      SUM OF                     % CHANGE"
270  PRINT "SUBINTERVALS   APPROXIMATING AREAS        IN SUM"
280  PRINT "------------   -------------------        --------"
281  LET S1=0
285  LET E1=0
300  DEF FNY()=^2
305  FOR N=1 TO 9
310  LET E=2^(N-1)
320  LET H=(Q-P)/E
330  LET S=0
340  FOR I=0 TO (E-1)
350  LET G=FNY(P+I*H+H)+FNY(P+I*H)
360  LET M=FNY(P+I*H+H)-FNY(P+I*H)
370  LET L=3.14159*G*SQR(M*M+H*H)
380  LET S=S+L
390  NEXT I
395  IF S1=0 THEN 405
396  LET W=100*(ABS(S-S1))/((S+S1)/2)
399  IF S1=0 THEN 405
400  PRINT E,S," ",W
402  IF W<.01 THEN 420
404  GOTO 407
405  PRINT E,S," ","NO PREVIOUS VALUE"
407  LET S1=S
410  NEXT N
420  PRINT 
430  PRINT "WOULD YOU LIKE TO TRY NEW END POINTS (1-YES, 0-NO)";
431  INPUT Q1
432  IF Q1>0 THEN 220
440  PRINT "TO ENTER A NEW FUNCTION YOU NEED ONLY RETYPE LINE"
450  PRINT "300 AND 'RUN'.  SEE INSTRUCTIONS FOR MORE DETAILS."
460  PRINT "IF YOU ARE FINISHED, TYPE '1' AND THE 'RETURN' KEY."
500  END 
