Вот обожаю наше скромное сообщество!
Называется, сам спросил сам ответил.
Реализовал упрощенный вариант алгоритма Карацубы.
Фрагмент ООП-кода.
Код:
\ См. алгоритм Карацубы
\ общее: a*c*base*base + (a*d+b*c)*base + b*d
\ частное a*d*base + b*d
M: L*
{ a \ b d addr cnt k }
a VRS
FROM a V@ TO b \ раскладываем число
TO a
0 DUP TO cnt TO k
POINT @ TO addr
BEGIN cnt LEN @ XOR WHILE
addr C@ TO d \ мы работаем с байтами, так что считаем, что C равно 0. Отсюда и упрощенная формула
b d *
k +
DUP
addr C!
8 RSHIFT \ мы записали байт в длинное число, отсекаем его
a d * VLS/2 \ сдвиг влево на 8 байт
+
TO k
FROM addr 1+!
FROM cnt 1+!
REPEAT
;