rtapi_math_i386.h
1 /* GPL, etc -- based loosely on mathinline.h */ 2 #ifndef RTAPI_MATH_I386_H 3 #define RTAPI_MATH_I386_H 4 5 #define MATHOP(f,i) extern __inline double f(double __x) { \ 6 register double __result; \ 7 __asm __volatile__ (i : "=t" (__result) : "0" (__x)); \ 8 return __result; \ 9 } 10 11 MATHOP(sin, "fsin") 12 MATHOP(cos, "fcos") 13 MATHOP(fabs, "fabs") 14 MATHOP(sqrt, "fsqrt") 15 16 extern __inline double tan (double __x) { 17 register long double __value; 18 register long double __value2 __attribute__ ((__unused__)); 19 __asm __volatile__ ("fptan" : "=t" (__value2), "=u" (__value) : "0" (__x)); 20 return __value; 21 } 22 23 extern __inline double atan2 (double __y, double __x) { 24 register long double __value; 25 __asm __volatile__ ("fpatan" : "=t" (__value) : "0" (__x), "u" (__y) : "st(1)"); 26 return __value; 27 } 28 #endif /* RTAPI_MATH_I386_H */