Files
QDAC-firmware/app/gl_common.c

36 lines
872 B
C
Raw Permalink Normal View History

#include "zf_common_headfile.h"
#include "gl_headfile.h"
int32_t limit(int32_t x, int32_t low, int32_t up)
{
return x > up ? up : x < low ? low
: x;
}
int clip(int x, int low, int up)
{
return x > up ? up : x < low ? low
: x;
}
float fclip(float x, float low, float up)
{
return x > up ? up : x < low ? low
: x;
}
float Q_sqrt(float number)
{
long i;
float x2, y;
const float threehalfs = 1.5F;
x2 = number * 0.5F;
y = number;
i = *(long *)&y; // evil floating point bit level hacking
i = 0x5f3759df - (i >> 1); // what the fuck?
y = *(float *)&i;
y = y * (threehalfs - (x2 * y * y)); // 1st iteration
y = y * (threehalfs - (x2 * y * y)); // 2nd iteration, this can be removed
return (1.0 / y);
}