OPTION BASE 0
OPTION ARITHMETIC DECIMAL_HIGH
LET MAXLEVEL=30
DIM P(MAXLEVEL)
FOR XX=2 TO 50
LET FL=0
FOR K=2 TO 8
IF K*K=XX THEN LET FL=1
NEXT K
IF FL=0 THEN
MAT P=ZER
LET X=SQR(XX)
PRINT "SQR(";XX;")"
LET A=X
LET B=1
!' IF A < B THEN
!' SWAP A,B
!' LET L=1
!' PRINT "1 / (";
!' END IF
FOR I=L TO MAXLEVEL
LET P(I)=INT(A/B)
LET BB=A-P(I)*B
LET AA=B
LET A=AA
LET B=BB
!' PRINT P(I);
!' IF I < MAXLEVEL THEN PRINT "+ 1 / (";
NEXT I
!' PRINT REPEAT$(")",MAXLEVEL-L)
!'FOR J=1 TO MAXLEVEL
!' LET S=P(J)
!' FOR I=J-1 TO 0 STEP -1
!' LET S=P(I)+1/S
!' NEXT I
!' PRINT USING "-%.########################################## -%.########^^^^^^":S,X-S
!'NEXT J
FOR J=1 TO MAXLEVEL
LET B=P(J)
LET A=1
FOR I=J-1 TO 0 STEP -1
LET AA=B
LET BB=B*P(I)+A
LET A=AA
LET B=BB
NEXT I
LET D=GCD(A,B)
PRINT B/D;"/";A/D,
!' PRINT (B/D)^2-(A/D)^2*XX,
PRINT USING "-%.########^^^^^^":X-B/A
NEXT J
END IF
NEXT XX
END
EXTERNAL FUNCTION GCD(M,N)
OPTION ARITHMETIC DECIMAL_HIGH
DO WHILE N <> 0
LET T = MOD(M , N)
LET M = N
LET N = T
LOOP
LET GCD=M
END FUNCTION