Как умножить целое число на двойной IEEE без инструкций преобразования? - PullRequest
1 голос
/ 03 января 2012

Я ищу общую идею.Я знаю, как хранится IEEE float или double, но я не знаю, как его точно умножить.

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

Есть ли какое-либо характерное свойство, когда умножение IEEE удваивается на целое число?Как в «Вы должны только умножить показатель степени» или что-то подобное?

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

3 голосов
/ 03 января 2012

Вы можете умножить число с плавающей запятой одинарной или двойной точности на 2 ^ n, просто добавив n к показателю степени, но для любого другого значения множителя вы также измените мантиссу, что, очевидно, будет нетривиальным.

1 голос
/ 03 января 2012

Если бы вы были на x86, вы могли бы использовать инструкцию FIMUL, которая делает именно то, что вы хотите.Но так как вы находитесь на mips, у вас нет лучшего способа, чем преобразование и умножение для общего случая.

...