Subversion Repositories Kolibri OS

Rev

Rev 4874 | Blame | Compare with Previous | Last modification | View Log | RSS feed

  1. #ifndef _MACHFASTMATH_H
  2. #define _MACHFASTMATH_H
  3.  
  4. #if defined(__GNUC__) && __STDC__ - 0 > 0
  5.  
  6. #define __str1__(__x) #__x
  7. #define __str2__(__x) __str1__(__x)
  8. #define __U_L_PREFIX__ __str2__(__USER_LABEL_PREFIX__)
  9.  
  10. __extension__ double atan2(double, double)
  11.   __asm__(__U_L_PREFIX__ "_f_atan2");
  12. __extension__ double exp(double)
  13.   __asm__(__U_L_PREFIX__ "_f_exp");
  14. __extension__ double frexp(double, int*)
  15.   __asm__(__U_L_PREFIX__ "_f_frexp");
  16. __extension__ double ldexp(double, int)
  17.   __asm__(__U_L_PREFIX__ "_f_ldexp");
  18. __extension__ double log(double)
  19.   __asm__(__U_L_PREFIX__ "_f_log");
  20. __extension__ double log10(double)
  21.   __asm__(__U_L_PREFIX__ "_f_log10");
  22. __extension__ double pow(double, double)
  23.   __asm__(__U_L_PREFIX__ "_f_pow");
  24. __extension__ double tan(double)
  25.   __asm__(__U_L_PREFIX__ "_f_tan");
  26.  
  27. #if !defined(__STRICT_ANSI__) || defined(__cplusplus) || __STDC_VERSION__ >= 199901L
  28.  
  29.  
  30. __extension__ float atan2f(float, float)
  31.   __asm__(__U_L_PREFIX__ "_f_atan2f");
  32. __extension__ float expf(float)
  33.   __asm__(__U_L_PREFIX__ "_f_expf");
  34. __extension__ float frexpf(float, int*)
  35.   __asm__(__U_L_PREFIX__ "_f_frexpf");
  36. __extension__ float ldexpf(float, int)
  37.   __asm__(__U_L_PREFIX__ "_f_ldexpf");
  38. __extension__ long long llrint(double)
  39.   __asm__(__U_L_PREFIX__ "_f_llrint");
  40. __extension__ long long llrintf(float)
  41.   __asm__(__U_L_PREFIX__ "_f_llrintf");
  42. __extension__ long long llrintl(long double)
  43.   __asm__(__U_L_PREFIX__ "_f_llrintl");
  44. __extension__ float logf(float)
  45.   __asm__(__U_L_PREFIX__ "_f_logf");
  46. __extension__ float log10f(float)
  47.   __asm__(__U_L_PREFIX__ "_f_log10f");
  48. __extension__ long lrint(double)
  49.   __asm__(__U_L_PREFIX__ "_f_lrint");
  50. __extension__ long lrintf(float)
  51.   __asm__(__U_L_PREFIX__ "_f_lrintf");
  52. __extension__ long lrintl(long double)
  53.   __asm__(__U_L_PREFIX__ "_f_lrintl");
  54. __extension__ float powf(float, float)
  55.   __asm__(__U_L_PREFIX__ "_f_powf");
  56. __extension__ double rint(double)
  57.   __asm__(__U_L_PREFIX__ "_f_rint");
  58. __extension__ float rintf(float)
  59.   __asm__(__U_L_PREFIX__ "_f_rintf");
  60. __extension__ long double rintl(long double)
  61.   __asm__(__U_L_PREFIX__ "_f_rintl");
  62. __extension__ float tanf(float)
  63.   __asm__(__U_L_PREFIX__ "_f_tanf");
  64. #endif
  65.  
  66. #else
  67.  
  68. double EXFUN(_f_atan2,(double, double));
  69. double EXFUN(_f_exp,(double));
  70. double EXFUN(_f_frexp,(double, int*));
  71. double EXFUN(_f_ldexp,(double, int));
  72. double EXFUN(_f_log,(double));
  73. double EXFUN(_f_log10,(double));
  74. double EXFUN(_f_pow,(double, double));
  75.  
  76. #define atan2(__y,__x)  _f_atan2((__y),(__x))
  77. #define exp(__x)        _f_exp(__x)
  78. #define frexp(__x,__p)  _f_frexp((__x),(__p))
  79. #define ldexp(__x,__e)  _f_ldexp((__x),(__e))
  80. #define log(__x)        _f_log(__x)
  81. #define log10(__x)      _f_log10(__x)
  82. #define pow(__x,__y)    _f_pow((__x),(__y))
  83.  
  84. #ifndef __STRICT_ANSI__
  85.  
  86. float EXFUN(_f_atan2f,(float, float));
  87. float EXFUN(_f_expf,(float));
  88. float EXFUN(_f_frexpf,(float, int*));
  89. float EXFUN(_f_ldexpf,(float, int));
  90. long long EXFUN(_f_llrint,(double));
  91. long long EXFUN(_f_llrintf,(float));
  92. long long EXFUN(_f_llrintl,(long double));
  93. float EXFUN(_f_logf,(float));
  94. float EXFUN(_f_log10f,(float));
  95. long EXFUN(_f_lrint,(double));
  96. long EXFUN(_f_lrintf,(float));
  97. long EXFUN(_f_lrintl,(long double));
  98. float EXFUN(_f_powf,(float, float));
  99. float EXFUN(_f_rint,(double));
  100. double EXFUN(_f_rintf,(float));
  101. long double EXFUN(_f_rintl,(long double));
  102.  
  103. #define atan2f(__y,__x) _f_atan2f((__y),(__x))
  104. #define expf(__x)       _f_expf(__x)
  105. #define frexpf(__x,__p) _f_frexpf((__x),(__p))
  106. #define ldexpf(__x,__e) _f_ldexpf((__x),(__e))
  107. #define llrint(__x)     _f_llrint((__x))
  108. #define llrintf(__x)    _f_llrintf((__x))
  109. #define llrintl(__x)    _f_llrintl((__x))
  110. #define logf(__x)       _f_logf(__x)
  111. #define log10f(__x)     _f_log10f(__x)
  112. #define lrint(__x)      _f_lrint((__x))
  113. #define lrintf(__x)     _f_lrintf((__x))
  114. #define lrintl(__x)     _f_lrintl((__x))
  115. #define powf(__x,y)     _f_powf((__x),(__y))
  116. #define rint(__x)       _f_rint((__x))
  117. #define rintf(__x)      _f_rintf((__x))
  118. #define rintl(__x)      _f_rintl((__x))
  119. #endif
  120.  
  121. #endif /* GCC */
  122. #endif /* _MACHFASTMATH_H */
  123.