Очень рекомендую к прочтению замечательную статью "Магия"
kunaifusu про довольно стандартный трик магического преобразования floating point в int с помощью загадочных констант.
В статье очень детально и вкусно расписываются корни преобразования и происхождение чисел вроде
Что характерно, рассказывается как сделать это без double ;)
Помню своё удивление, когда я впервые увидел зубодробительные пассажи для табличного вычисления синусов и косинусов, которые начинались с характерного приведения аргументов
Уже потом появились cvtps2pi, споры о тормозах, выравнивания, спецхинты и инструкции. Естественно, не везде (ц).
А тогда это было интересным и свежим взглядом на жизнь.
Особенно из-за явного джедайского форса.
Который молча рубил одной строчкой тупые брутальные
Клёвая статья, спасибо! :)
Ну и танкистские ссылки напоследок:
1. "What Every Computer Scientist Should Know About Floating Point Arithmetic" by David Goldberg
2. "Let's Go to the (Floating) Point" by Chris Hecker
3. "Магия" by
kunaifusu
4. "Origin of Quake3's Fast InvSqrt()" - Part I, читать камменты, Part II (via
qiller_neu)
В статье очень детально и вкусно расписываются корни преобразования и происхождение чисел вроде
(double)fp+6755399441055744.0
Что характерно, рассказывается как сделать это без double ;)
Помню своё удивление, когда я впервые увидел зубодробительные пассажи для табличного вычисления синусов и косинусов, которые начинались с характерного приведения аргументов
inline float SinCosFast(float x, float &cosx)
{
x= 0.159155f*x +1536.0f;
...
}
Уже потом появились cvtps2pi, споры о тормозах, выравнивания, спецхинты и инструкции. Естественно, не везде (ц).
А тогда это было интересным и свежим взглядом на жизнь.
Особенно из-за явного джедайского форса.
Который молча рубил одной строчкой тупые брутальные
const int a = *reinterpret_cast<const int*>(&fp);
const int sign = (a>>31);
const int mantissa = (a&((1<<23)-1))|(1<<23);
const int exponent = ((a&0x7fffffff)>>23)-127;
const int r = ((unsigned int)(mantissa)<<8)>>(31-exponent);
return ((r ^ (sign)) - sign ) &~ (exponent>>31);
Клёвая статья, спасибо! :)
Ну и танкистские ссылки напоследок:
1. "What Every Computer Scientist Should Know About Floating Point Arithmetic" by David Goldberg
2. "Let's Go to the (Floating) Point" by Chris Hecker
3. "Магия" by
4. "Origin of Quake3's Fast InvSqrt()" - Part I, читать камменты, Part II (via
снять проститутку в николаеве вызов проституток домой
Date: May. 12th, 2011 20:06 (UTC)| комментарии 1 свадьба по обмену смотреть онлайн о фильме:супермодель соня мечтает о тихом семейном счастье с давним бой-френдом русланом самовлюблённым ведущим популярного кулинарного шоу, но тот не разделяет её мечты, он грезит только о славе и повышении собственного рейтинга, поэтому делает соне предложение руки и сердца в присутствии толпы репортеров. [url=http://aleksiy8k.krovatka.su/prostitutki-individualki-po-vyzovu-38.html]проститутки индивидуалки по вызову[/url] Мы зашли в тропические заросли, присели на скамейке, и я достал из сумки путеводитель по Гагре из санатория Гребешок. [url=http://imarav1.hotmail.ru/prostitutki-goroda-pyatigorska-551.html]проститутки города пятигорска[/url] Девушка едет на «крутом» джипе и считает, что правила дорожного движения не для нее написаны. [url=http://camelliao4.hotmail.ru/sait-prostitutok-karagandy-283.html]сайт проституток караганды[/url] К 14 часам польская столица была полностью освобождена от фашистских оккупантов. [url=http://mideacx.nightmail.ru/nizhnii-novgorod-dosug-prostitutki-312.html]нижний новгород досуг проститутки[/url] Наиболее часто встречающиеся или интересные вопросы я буду переносить в этот пост. [url=http://judecieyh.newmail.ru/prostitutki-na-moskovskom-shosse-567.html]проститутки на московском шоссе[/url] С 1931 заместитель наркомвоенмора и председатель Реввоенсовета СССР, начальник вооружений РККА. [url=http://brantleyad.front.ru/elitnye-prostitutki-ulyanovska-344.html]элитные проститутки ульяновска[/url] Зато у соседей можно было попробовать что-то необычное.