#include <stdio.h>
double fisr(double number);
int main(void) {
double a = 2;
//scanf("%lf", &a);
return 0;
}
double fisr(double 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 y;
}
I2luY2x1ZGUgPHN0ZGlvLmg+Cgpkb3VibGUgZmlzcihkb3VibGUgbnVtYmVyKTsKCmludCBtYWluKHZvaWQpIHsKCWRvdWJsZSBhID0gMjsKCS8vc2NhbmYoIiVsZiIsICZhKTsKCXByaW50ZigiJWxmbiIsIGZpc3IoYSkpOwoJCglyZXR1cm4gMDsKfQoKZG91YmxlIGZpc3IoZG91YmxlIG51bWJlcikgewoJbG9uZyBpOwoJZmxvYXQgeDIsIHk7Cgljb25zdCBmbG9hdCB0aHJlZWhhbGZzID0gMS41RjsKCgl4MiA9IG51bWJlciAqIDAuNUY7Cgl5ICA9IG51bWJlcjsKCWkgID0gKiAoIGxvbmcgKiApICZ5OyAgICAgICAgICAgICAgICAgICAgICAgLy8gZXZpbCBmbG9hdGluZyBwb2ludCBiaXQgbGV2ZWwgaGFja2luZwoJaSAgPSAweDVmMzc1OWRmIC0gKCBpID4+IDEgKTsgICAgICAgICAgICAgICAvLyB3aGF0IHRoZSBmdWNrPyAKCXkgID0gKiAoIGZsb2F0ICogKSAmaTsKCXkgID0geSAqICggdGhyZWVoYWxmcyAtICggeDIgKiB5ICogeSApICk7ICAgLy8gMXN0IGl0ZXJhdGlvbgovLwl5ICA9IHkgKiAoIHRocmVlaGFsZnMgLSAoIHgyICogeSAqIHkgKSApOyAgIC8vIDJuZCBpdGVyYXRpb24sIHRoaXMgY2FuIGJlIHJlbW92ZWQKCglyZXR1cm4geTsKfQ==