Advertisement
Guest User

Untitled

a guest
Aug 17th, 2017
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.68 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. float Q_rsqrt(float);
  4.  
  5. main()
  6.  
  7. {
  8.  
  9. float number, result;
  10.  
  11. printf("Enter number: ");
  12.  
  13. scanf(" %f", &number);
  14.  
  15. result = Q_rsqrt(number):
  16.  
  17. printf("Inverse square root: %f", result);
  18.  
  19. }
  20.  
  21. float Q_rsqrt( float number )
  22.  
  23. {
  24.  
  25. long i;
  26.  
  27. float x2, y;
  28.  
  29. const float threehalfs = 1.5F;
  30.  
  31.  
  32.  
  33. x2 = number * 0.5F;
  34.  
  35. y = number;
  36.  
  37. i = * ( long * ) &y; // evil floating point bit level hacking
  38.  
  39. i = 0x5f3759df - ( i >> 1 ); // what the ... ?
  40.  
  41. y = * ( float * ) &i;
  42.  
  43. y = y * ( threehalfs - ( x2 * y * y ) ); // 1st iteration
  44.  
  45. // y = y * ( threehalfs - ( x2 * y * y ) ); // 2nd iteration, this can be removed
  46.  
  47. return y;
  48.  
  49. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement