Что делает код?

905
5
Вот, не слишком сложный вопрос. Код тяжеловат для понимания, но довольно известный.
Код:
public float code(float value)
    {
    float half = 0.5f*value;
    int i = Float.floatToIntBits(value);

    i = 0x5f3759df - (i>>1);
    value = Float.intBitsToFloat(i);

    value = value*(1.5f - half*value*value);

    return value;
    }
 
2,955
12
Ты хочешь узнать что значит half и т.д.? типо создается float half который равен value перемножить на 0.5F.
Потом создается инт i который равен value переведенному в инт. И потом с ними совершаются действия.
 
905
5
Нет. Я как задачу написал, очевидно же.
И ты отвечаешь как робот.
Надеюсь, меня не загребут за это сообщение.
 
2,955
12
Код:
i = 0x5f3759df - (i>>1);

меня вот это напрягает, а так все могу объяснить.
 
771
5
Никогда не понимал, как работают побитовые операции...
 
905
5
Просто ты не понял сами биты, а операции просто работают.
 
laz2727 написал(а):
Вот, не слишком сложный вопрос. Код тяжеловат для понимания, но довольно известный.
Код:
public float code(float value)
    {
    float half = 0.5f*value;
    int i = Float.floatToIntBits(value);

    i = 0x5f3759df - (i>>1);
    value = Float.intBitsToFloat(i);

    value = value*(1.5f - half*value*value);

    return value;
    }
Точность паршивая.
 
905
5
Dimansel написал(а):
laz2727 написал(а):
Вот, не слишком сложный вопрос. Код тяжеловат для понимания, но довольно известный.
Код:
public float code(float value)
    {
    float half = 0.5f*value;
    int i = Float.floatToIntBits(value);

    i = 0x5f3759df - (i>>1);
    value = Float.intBitsToFloat(i);

    value = value*(1.5f - half*value*value);

    return value;
    }
Точность паршивая.
Зато СКОРОСТЬ.
 
Сверху