Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
|
|
@ -0,0 +1,78 @@
|
|||
REM Trabb Pardo-Knuth algorithm
|
||||
REM Used "magic numbers" because of strict specification of the algorithm.
|
||||
DIM S@(10)
|
||||
PRINT "Enter 11 numbers."
|
||||
FOR I = 0 TO 10
|
||||
I1= I + 1
|
||||
PRINT I1;
|
||||
PRINT " => ";
|
||||
INPUT TMP@
|
||||
S@(I) = TMP@
|
||||
NEXT I
|
||||
PRINT
|
||||
REM Reverse
|
||||
HALFIMAX = 10 / 2
|
||||
FOR I = 0 TO HALFIMAX
|
||||
IREV = 10 - I
|
||||
TMP@ = S@(I)
|
||||
S@(I) = S@(IREV)
|
||||
S@(IREV) = TMP@
|
||||
NEXT I
|
||||
REM Results
|
||||
REM Leading spaces in printed numbers are removed
|
||||
CLS
|
||||
FOR I = 0 TO 10
|
||||
PRINT "f(";
|
||||
STMP$ = STR$(S@(I))
|
||||
STMP$ = LTRIM$(STMP$)
|
||||
PRINT STMP$;
|
||||
PRINT ") = ";
|
||||
N@ = S@(I)
|
||||
GOSUB CALCF:
|
||||
R@ = F@
|
||||
IF R@ > 400 THEN
|
||||
PRINT "overflow"
|
||||
ELSE
|
||||
STMP$ = STR$(R@)
|
||||
STMP$ = LTRIM$(STMP$)
|
||||
PRINT STMP$
|
||||
ENDIF
|
||||
NEXT I
|
||||
END
|
||||
|
||||
CALCF:
|
||||
REM Calculates f(N@)
|
||||
REM Result in F@
|
||||
X@ = ABS(N@)
|
||||
GOSUB CALCSQRT:
|
||||
F@ = 5.0 * N@
|
||||
F@ = F@ * N@
|
||||
F@ = F@ * N@
|
||||
F@ = F@ + SQRT@
|
||||
RETURN
|
||||
|
||||
CALCSQRT:
|
||||
REM Calculates approximate (+- 0.00001) square root of X@ for X@ >= 0 (bisection method)
|
||||
REM Result in SQRT@
|
||||
A@ = 0.0
|
||||
IF X@ >= 1.0 THEN
|
||||
B@ = X@
|
||||
ELSE
|
||||
B@ = 1.0
|
||||
ENDIF
|
||||
L@ = B@ - A@
|
||||
L@ = ABS(L@)
|
||||
WHILE L@ > 0.00001
|
||||
MIDDLE@ = A@ + B@
|
||||
MIDDLE@ = MIDDLE@ / 2
|
||||
MIDDLETO2@ = MIDDLE@ * MIDDLE@
|
||||
IF MIDDLETO2@ < X@ THEN
|
||||
A@ = MIDDLE@
|
||||
ELSE
|
||||
B@ = MIDDLE@
|
||||
ENDIF
|
||||
L@ = B@ - A@
|
||||
L@ = ABS(L@)
|
||||
WEND
|
||||
SQRT@ = MIDDLE@
|
||||
RETURN
|
||||
Loading…
Add table
Add a link
Reference in a new issue