twoto64$ = "18446744073709551616" PRINT "2^64 * 2^64 = " ; FNlongmult(twoto64$, twoto64$) END DEF FNlongmult(num1$, num2$) LOCAL C%, I%, J%, S%, num1&(), num2&(), num3&() S% = LEN(num1$)+LEN(num2$) DIM num1&(S%), num2&(S%), num3&(S%) IF LEN(num1$) > LEN(num2$) SWAP num1$,num2$ $$^num1&(1) = num1$ num1&() AND= 15 FOR I% = LEN(num1$) TO 1 STEP -1 $$^num2&(I%) = num2$ num2&() AND= 15 num3&() += num2&() * num1&(I%) IF I% MOD 3 = 1 THEN C% = 0 FOR J% = S%-1 TO I%-1 STEP -1 C% += num3&(J%) num3&(J%) = C% MOD 10 C% DIV= 10 NEXT ENDIF NEXT I% num3&() += &30 num3&(S%) = 0 IF num3&(0) = &30 THEN = $$^num3&(1) = $$^num3&(0)