Advertisement
Guest User

Untitled

a guest
Jul 20th, 2019
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.57 KB | None | 0 0
  1. static float full_pow2f(float p)
  2. {
  3.     float result;
  4.     asm(
  5.         "fld %1;"
  6.         "fld1;"
  7.         "fscale;"
  8.         "fstp %0;"
  9.     : "=m" (result)
  10.     : "m" (p)
  11.     : "%st(1)");
  12.     return result;
  13. }
  14.  
  15. static float frac_pow2f(float p)
  16. {
  17.     float result;
  18.     asm(
  19.         "fld1;"
  20.         "fld %1;"
  21.         "fprem;"
  22.         "f2xm1;"
  23.         "faddp %%st(0), %%st(1);"
  24.         "fstp %0;"
  25.         : "=m" (result)
  26.         : "m" (p)
  27.         : "%st(1)"
  28.     );
  29.     return result;
  30. }
  31.  
  32. static float pow2f(float p)
  33. {
  34.     return full_pow2f(p) * frac_pow2f(p);
  35. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement