func[] bnmul a[] b[] . len r[] len a[] + len b[] for ia = 1 to len a[] h = 0 for ib = 1 to len b[] h += r[ia + ib - 1] + b[ib] * a[ia] r[ia + ib - 1] = h mod 10000000 h = h div 10000000 . r[ia + ib - 1] += h . while r[$] = 0 len r[] -1 . return r[] . func$ str bn[] . s$ = bn[$] for i = len bn[] - 1 downto 1 h$ = bn[i] s$ &= substr "0000000" 1 (7 - len h$) & h$ . return s$ . func[] bn s$ . i = len s$ - 7 + 1 while i >= -5 r[] &= number substr s$ i 7 i -= 7 . return r[] . print str bnmul bn "18446744073709551616" bn "18446744073709551616"