Как правильно набирать поплавок для типа int и наоборот?
Код ниже выполняет быструю операцию обратного квадратного корня с помощью некоторых битовых хаков. Алгоритм, вероятно, был разработан Silicon Graphics в начале 1990-х годов и появился в Quake 3.больше информации
Однако я получаю следующеепредупреждение от компилятора GCC C ++: разыменовываемый указатель типа будет нарушенстрогий ступенчатости правила
Должен ли я использоватьstatic_cast
, reinterpret_cast
или жеdynamic_cast
вместо этого в таких ситуациях?
float InverseSquareRoot(float x)
{
float xhalf = 0.5f*x;
int32_t i = *(int32_t*)&x;
i = 0x5f3759df - (i>>1);
x = *(float*)&i;
x = x*(1.5f - xhalf*x*x);
return x;
}