Цитата(Maverick @ May 15 2015, 08:53)

например? (хорошие по Вашему мнению - 32/64 бит)
Ну можно, наверное, методом Ньютона попробовать..
Главное - выбрать
правильное начальное приближение..
Например, мы хотим найти частное от деления: A/B = D, где A = 555555, B = 11 и, соответственно, D = 50505.
Тогда:
A/B = [(A*2
32/B)>>32] = D.
Введем обозначение:
x = 2
32/B.
Это равносильно:
2
32/x = B.
Или:
f(x) == 2
32/x - B = 0.
Находим производную:
f'(x) = -2
32/x
2.
Теперь подставляем всё это в формулу
Ньютона и находим:
x
n+1 = x
n - f(x
n)/f'(x
n), или
x
n+1 = x
n + [2
32/x
n - B]/[2
32/x
n2], или
x
n+1 = 2*x
n - B*x
n2/2
32, или
x
n+1 = 2*x
n - [(B*x
n*x
n)>>32].
Начальное приближение для x
0 выбираем равным:
x
0 = 2
32-m, где m - максимальная степень двойки в двоичном представлении числа B..
То есть, для B = 11 это дает:
B = 11
d = 1011
b = 1*2
3 + 0*2
2 + 1*2
1 + 1*2
0.
Откуда находим, что m = 3, и:
x
0 = 2
29.
Тогда:
x
1 = 2
30 - 11*2
26 = 335544320;
x
2 = 2*335544320 - (11*335544320*335544320)>>32 = 382730240;
x
3 = 2*382730240 - (11*382730240*382730240)>>32 = 390298880;
x
4 = 2*390298880 - (11*390298880*390298880)>>32 = 390451513;
x
5 = 2*390451513 - (11*390451513*390451513)>>32 = 390451572;
x
6 = 2*390451572 - (11*390451572*390451572)>>32 = 390451572;
После чего находим:
A/B = [(A*x)>>32] = [(555555*390451572)>>32] = 50505 = D.
Но в целом, все эти "быстро сходящиеся итерации" не слишком то оптимальны для FPGA, КМК..
Как-то так..