10  REM ****  HP TIME-SHARED BASIC PROGRAM LIBRARY  ********************
20  REM
30  REM             CRVLEN:  COMPUTES LENGTH OF ANY CRUVE
40  REM
50  REM             36333 (A801)  REV A -- 10/71
60  REM
70  REM ****  CONTRIBUTED PROGRAM  *************************************
80  REM CRVLEN - COPYRIGHT 1971, POLYTECHNIC INSTITUTE OF BROOKLYN
100  REM LENGTH OF A CURVE-Q.J. O'CONNOR 7-29-68
101  REM REVISED 8-7-70 (D. PESSEL) (COMBINATION OF LECUQ & LEFUQ)
103  REM IMPORTANT VARIABLES:  S-SECANT LENGTH; S1-PREVIOUS SECANT
104  REM LENGTH; P-PERCENT CHANGE IN SECANT LENGTH
110  PRINT TAB(20);"LENGTH OF A CURVE"
111  PRINT 
120  PRINT "THIS PROGRAM APPROXIMATES THE LENGTH OF ANY CURVE BETWEEN"
121  PRINT "TWO POINTS HAVING P AND Q AS THEIR RESPECTIVE ABSCISSAS."
122  PRINT "THE PROGRAM DIVIDES THE CURVE INTO INCREASING NUMBERS OF"
123  PRINT "SUBINTERVALS, JOINS THESE WITH SECANTS AND FINDS THE SUM"
124  PRINT "OF THESE SECANTS."
125  PRINT 
126  PRINT "TO INPUT THE FUNCTION WHICH YOUR CURVE REPRESENTS, TYPE AS"
127  PRINT "FOLLOWS AFTER THE PROGRAM STOPS:"
128  PRINT "(TYPE THE 'RETURN' KEY AFTER EACH LINE INCLUDING 'RUN')"
129  PRINT 
130  PRINT "          1 GO TO 200"
131  PRINT "          300 DEF FNY(X)=....(YOUR FUNCTION OF X)...."
132  PRINT "          RUN"
133  PRINT 
134  PRINT "FOR EXAMPLE, TO USE THE FUNCTION 2*X^3+3*X^2-2*X+3"
135  PRINT "YOU WOULD TYPE:"
136  PRINT 
137  PRINT "          1 GO TO 200"
138  PRINT "          300 DEF FNY(X)=2*X^3+3*X^2-2*X+3"
139  PRINT "          RUN"
140  PRINT 
141  PRINT "YOU MIGHT TRY THAT AS YOUR FIRST RUN."
150  STOP 
200  REM CALCULATION AND PRINTING IF RESULTS
205  PRINT "WHAT ARE THE ABSCISSAS OF THE END POINTS OF THE INTERVAL"
206  PRINT "WHOSE LENGTH YOU WANT (SMALLER ONE FIRST:P,Q)";
207  INPUT P,Q
208  IF P<Q THEN 213
209  PRINT "P MUST BE LESS THAN Q!"
210  GOTO 205
213  PRINT 
214  PRINT " NUMBER OF","    SUM OF"
215  PRINT "SUBINTERVALS","SECANT LENGTHS","  % CHANGE IN LENGTH"
216  PRINT "------------","--------------","  ------------------"
217  PRINT 
230  LET S1=0
250  FOR N=1 TO 9
300  DEF FNY()=2*^3+3*^2-2*+3
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 L=SQR((FNY(P+I*H+H)-FNY(P+I*H))^2+H*H)
360  LET S=S+L
370  NEXT I
372  IF S1>0 THEN 375
373  PRINT E,S,"  NO PREVIOUS VALUE"
374  GOTO 385
375  LET P5=((ABS(S1-S))/S1)*100
380  PRINT E,S,"  "P5
385  LET S1=S
390  NEXT N
400  PRINT 
401  PRINT "*****"
402  PRINT 
403  PRINT "WOULD YOU LIKE TO TRY NEW END POINTS (1-YES, 0-NO)";
404  INPUT Q1
405  IF Q1>0 THEN 210
410  PRINT 
445  PRINT "TO TRY ANOTHER FUNCTION, RETYPE LINE 300, AND 'RUN'."
446  PRINT "SEE INSTRUCTIONS FOR MORE DETAILS.  IF YOU ARE FINISHED,"
447  PRINT "TYPE '1' AND 'RETURN' KEY AFTER THE PROGRAM STOPS."
500  END 
