Page 1 of 1

Как делить умножениями

PostPosted: 11 Jan 2016, 22:13
by lvd

Re: Как делить умножениями

PostPosted: 12 Jan 2016, 00:46
by fk0
"The cost of an integer division on todays RISC processors is several times that of an integer multiplication." -- это в MIPS'ах любительского уровня. В PIC профессионального уровня есть аппаратный делитель. Бугага.

Re: Как делить умножениями

PostPosted: 12 Jan 2016, 00:48
by fk0
Я правильно понял, что они сводят всё к тому, что X/Y == X*Z/2^n, где Z=2^n/Y ? Так годится только для деления на константу.

Вообще открыли америку. Десяток лет второй уже код пишу так я.

Re: Как делить умножениями

PostPosted: 12 Jan 2016, 01:24
by lvd
fk0 wrote:В PIC профессионального уровня есть аппаратный делитель. Бугага.

Любой аппаратный делитель обладает тем свойством, что каждая следующая цифра (двоичная или четверичная) зависит от всех предыдущих, т.е. цифры получаются последовательно, одна за другой. Это или тонна тормозной логики, или деление за эн тактов, или конвеер эн тактов. В отличие от умножения, которое просто много сложений в кучу.
Следовательно, деление всегда тормознее.

Re: Как делить умножениями

PostPosted: 12 Jan 2016, 01:25
by lvd
fk0 wrote:Вообще открыли америку. Десяток лет второй уже код пишу так я.

А ты можешь гарантировать, что твой результат всегда точен? А им -- приходится гарантировать.