1  REM  ****  HP BASIC PROGRAM LIBRARY  *******************************
2  REM
3  REM        PI:  CALCULATES PI
4  REM
5  REM        36623 REV  A   6/73
6  REM
7  REM  ****  CONTRIBUTED PROGRAM  ************************************
50  REM PI2 - COPYRIGHT 1971, POLYTECHNIC INSTITUTE OF BROOKLYN
100  REM HLLUSTRATION OF LIMITS USING CIRCLES AND POLYGONS
101  REM REVISED 8/3/70 (D. PESSEL) 
105  REM IMPORTANT VARIABLES: A1-INSCRIBED AREA;  A2-CIRCUMSCRIBED
106  REM AREA;  A3-ACTUAL AREA;  P1-% ERROR OF A1;  P2-% ERROR OF A2
110  PRINT "AREA OF A CIRCLE USING INSCRIBED AND CIRCUMSCRIBED ";
111  PRINT "REGULAR POLYGONS."
112  PRINT 
115  PRINT "*****"
116  PRINT 
120  PRINT "WHAT IS THE RADIUS OF THE CIRCLE";
125  INPUT R
127  IF R<1000 THEN 131
128  PRINT "ANY RADIUS WILL WORK, BUT USE A NUMBER LESS THAN 1000."
129  GOTO 120
130  INPUT R
131  IF R >= .1 THEN 134
132  PRINT "RADIUS SHOULD BE AT LEAST .1!!"
133  GOTO 120
134  LET A3=3.1416*R*R
135  PRINT 
136  PRINT 
140  PRINT "INSCRHBED","CIRCUMSCRIBED","  NUMBER OF",
141  PRINT "INSCRIBED";TAB(56);"CIRCUMSCRIBED"
150  PRINT "  AREA","     AREA","    SIDES"," % ERROR";TAB(59);"% ERROR"
155  PRINT 
160  FOR K=0 TO 2
170  LET N=3*(2^K)
175  GOSUB 180
177  NEXT K
178  GOTO 240
179  REM COMPUTATION SUBROUTINE (LINES 180-220) 
180  LET L=2*R*SIN(3.14159/N)
190  LET A1=R*COS(3.14159/N)*N*L/2
200  LET A2=N*(R^2)*TAN(3.14159/N)
205  LET P1=((A1-A3)/A3)*100
206  LET P2=((A2-A3)/A3)*100
210  PRINT A1,A2,"   ";N,INT(P1*100+.5)/100,INT(P2*100+.5)/100
220  RETURN 
240  PRINT 
250  PRINT 
260  PRINT "HOW MANY SIDES DO YOU THINK ARE NEEDED TO APPROXIMATE"
261  PRINT "THE AREA OF THIS CIRCLE";
262  INPUT N
263  IF N>100000. THEN 268
264  IF N<3 THEN 266
265  GOTO 273
266  PRINT "THE NUMBER OF SIDES SHOULD BE AT LEAST THREE!!"
267  GOTO 260
268  PRINT "THAT MANY SIDES IS VALID, BUT NOT NECESSARY FOR A"
269  PRINT "GOOD APPROXIMATION.  USE 10000 AS THE MAXIMUM NUMBER."
270  GOTO 260
273  PRINT 
274  LET N=INT(N+.5)
275  GOSUB 180
280  PRINT 
285  PRINT "WOULD YOU LIKE TO TRY ANOTHER NUMBER OF SIDES";
286  PRINT " (1-YES, 0-NO)";
287  INPUT Q1
288  IF Q1>0 THEN 260
290  PRINT "WOULD YOU LIKE TO TRY ANOTHER RADIUS (1-YES, 0-NO)";
291  INPUT Q2
293  PRINT 
294  PRINT "*****"
295  PRINT 
296  IF Q2>0 THEN 120
300  END 
