Forth
http://fforum.winglion.ru/

Форт с плавающей запятой
http://fforum.winglion.ru/viewtopic.php?f=35&t=2640
Страница 2 из 2

Автор:  Ethereal [ Вс фев 27, 2011 05:22 ]
Заголовок сообщения:  Re: Форт с плавающей запятой

Просто красивый прием программирования.

Речь шла не зачем, а можно ли ...

Про округление. Требуемая точность обеспечивается здесь не правилом округления.
По сути я записываю число с плавающей запятой в двоичном виде и оставляю
только 16 двоичных цифр после запятой. Потом умножаю на 2^16 и получается целое.
В целых числах и считаю. Но не обязательно-же 16. Можно больше, если точность
нужна больше.

Чем такая кухня отличается от float ? Во float кроме мантиссы мы имеем ещё и
порядок. И из-за введения этого порядка быстродействие рассчетов падает
катастрофически. Но порядок - вещь гнилая. Все равно если числа различаются
двоичным порядком больше, чем длина мантиссы в битах, вы их и сложить-то уже
не сможете. Большее проглотит меньшее. Порядок у чисел в рассчетах все равно
должен быть сопоставимым, так-что он малополезен. Поэтому лучше прикинуть
сколько бит хватит слева от запятой и сколько справа и считать все в целых.

Автор:  Hishnik [ Вс фев 27, 2011 14:22 ]
Заголовок сообщения:  Re: Форт с плавающей запятой

Ethereal писал(а):
Чем такая кухня отличается от float ? Во float кроме мантиссы мы имеем ещё и
порядок. И из-за введения этого порядка быстродействие рассчетов падает
катастрофически.

Интересно, о какой эпохе микроэлектроники идет речь? :) Нормализация чисел (выравнивание порядков) выполняется специальным устройством барабанного сдвига, которое, хоть и громоздкое, но достаточно регулярное, ввиду чего уже в процессоре 80486DX присутствовало прямо на кристалле. В современных процессорах говорить о катастрофическом падении производительности при переходе к плавающей точке уже просто неверно.
Ethereal писал(а):
Все равно если числа различаются
двоичным порядком больше, чем длина мантиссы в битах, вы их и сложить-то уже
не сможете. Большее проглотит меньшее. Порядок у чисел в рассчетах все равно
должен быть сопоставимым, так-что он малополезен.

Ровно то же справедливо для целочисленного представления, или же представления с фиксированной точкой, чем и является подход, когда мы 16 разрядов виртуально отделяем точкой. Правда, double precision имеет 53 бита мантиссы, так что боьшее проглотит меньшее очень и очень нескоро. Явно позже, чем потеряется точность в 32-битной "мантиссе" целочисленного представления.

Страница 2 из 2 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/