33 lines
666 B
Text
33 lines
666 B
Text
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"
|