/ src / rtapi / rtapi_math_i386.h
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 */