Войти
ПрограммированиеФорумОбщее

Быстрое приведение float к int (комментарии)

Страницы: 1 2 Следующая »
#0
13:12, 8 окт 2009

Быстрое приведение float к int (комментарии)

Это сообщение сгенерировано автоматически.

#1
13:12, 8 окт 2009

Можно еще быстрее:

#define FIST_FLOAT_MAGIC_S ( float(7) * ( 1<<21 ) ) 

int round ( float f ) 
{
    const float tmp  = FIST_FLOAT_MAGIC_S + f;
    return ( ( ( (int&) tmp ) << 10 ) - 0x80000000 ) >> 10;
}
#2
14:58, 8 окт 2009

Нет доступа. Уровень доступа для чтения документа: Пользователям со статусом Участник и выше

Что, действительно так секретно? Под NDA там еще подписываться не нужно?

#3
15:26, 8 окт 2009

oistalker
А ты денех платил? Нет? Вот то-то и оно.

#4
15:29, 8 окт 2009

oistalker
> Что, действительно так секретно?
Ага. Последние достижения пентагона - asm { fld; fistp };
А закрыли недавно. С час назад еще было видно.

#5
15:33, 8 окт 2009

То есть, предлагается купить платный аккаунт участника, чтобы найти нечто, доступное в гугле первым результатом при поиске "fast float to int conversion"?

#6
15:37, 8 окт 2009

Что за WTF? :)

#7
15:52, 8 окт 2009

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

#8
16:10, 8 окт 2009

Вопрос стоит просто в том, что это настолько секретная тема? :)

#9
17:57, 8 окт 2009

Нет, это не быстрое приведение. Следует закончить пытаться получать выигрыш там, где получить нельзя и придумать что-то более радикальное.

#10
20:16, 8 окт 2009

RomanPshenichny

> Можно еще быстрее:
Это преобразование верно лишь в ограниченном диапазоне.

#11
20:29, 8 окт 2009

Как насчет такого варианта:

int round( float F ){
  __asm cvtss2si eax,[F]  //Значение возвращаем в регистре eax.
}

?

#12
20:45, 8 окт 2009

Лис
с опцией /arch:SSE cl.exe (Visual C++) именно так и раскрывает (int)F. Но в казуалках, например, такое использовать нельзя. Игра будет валится с EXCEPTION_ILLEGAL_INSTRUCTION на древних компах (есть такой опыт)

#13
20:57, 8 окт 2009

Есть аналогичная подсказка: http://www.gamedev.ru/tip/?id=3768
Они чем-то кроме double и float различаются?

#14
21:23, 8 окт 2009

Хз, я всегда делаю (int)f... К чему там ещё ускорять чтото? Это что ботлнек какойто?
Если надо округление, то в общемто есть ceil и floor...

Страницы: 1 2 Следующая »
ПрограммированиеФорумОбщее

Тема в архиве.