📄 mathinline.h
字号:
#ifdef __USE_MISC# define __inline_functions(float_type, s) \__m81_defun (int, __CONCAT(__isinf,s), (float_type __value)) __THROW \{ \ /* There is no branch-condition for infinity, \ so we must extract and examine the condition codes manually. */ \ unsigned long int __fpsr; \ __asm("ftst%.x %1\n" \ "fmove%.l %/fpsr, %0" : "=dm" (__fpsr) : "f" (__value)); \ return (__fpsr & (2 << 24)) ? (__fpsr & (8 << 24) ? -1 : 1) : 0; \} \ \__m81_defun (int, __CONCAT(__finite,s), (float_type __value)) __THROW \{ \ /* There is no branch-condition for infinity, so we must extract and \ examine the condition codes manually. */ \ unsigned long int __fpsr; \ __asm ("ftst%.x %1\n" \ "fmove%.l %/fpsr, %0" : "=dm" (__fpsr) : "f" (__value)); \ return (__fpsr & (3 << 24)) == 0; \} \ \__m81_defun (float_type, __CONCAT(__scalbn,s), \ (float_type __x, int __n)) __THROW \{ \ float_type __result; \ __asm ("fscale%.l %1, %0" : "=f" (__result) : "dmi" (__n), "0" (__x)); \ return __result; \}__inline_functions(double,)__inline_functions(float,f)__inline_functions(long double,l)# undef __inline_functions#endif /* Use misc. */#if defined __USE_MISC || defined __USE_XOPEN# define __inline_functions(float_type, s) \__m81_defun (int, __CONCAT(__isnan,s), (float_type __value)) __THROW \{ \ char __result; \ __asm("ftst%.x %1\n" \ "fsun %0" : "=dm" (__result) : "f" (__value)); \ return __result; \}__inline_functions(double,)# ifdef __USE_MISC__inline_functions(float,f)__inline_functions(long double,l)# endif# undef __inline_functions#endif#ifdef __USE_ISOC99# define __inline_functions(float_type, s) \__m81_defun (int, __CONCAT(__signbit,s), (float_type __value)) __THROW \{ \ /* There is no branch-condition for the sign bit, so we must extract \ and examine the condition codes manually. */ \ unsigned long int __fpsr; \ __asm ("ftst%.x %1\n" \ "fmove%.l %/fpsr, %0" : "=dm" (__fpsr) : "f" (__value)); \ return (__fpsr >> 27) & 1; \} \ \__m81_defun (float_type, __CONCAT(__scalbln,s), \ (float_type __x, long int __n)) __THROW \{ \ return __CONCAT(__scalbn,s) (__x, __n); \} \ \__m81_defun (float_type, __CONCAT(__nearbyint,s), (float_type __x)) __THROW \{ \ float_type __result; \ unsigned long int __ctrl_reg; \ __asm __volatile__ ("fmove%.l %!, %0" : "=dm" (__ctrl_reg)); \ /* Temporarily disable the inexact exception. */ \ __asm __volatile__ ("fmove%.l %0, %!" : /* No outputs. */ \ : "dmi" (__ctrl_reg & ~0x200)); \ __asm __volatile__ ("fint%.x %1, %0" : "=f" (__result) : "f" (__x)); \ __asm __volatile__ ("fmove%.l %0, %!" : /* No outputs. */ \ : "dmi" (__ctrl_reg)); \ return __result; \} \ \__m81_defun (long int, __CONCAT(__lrint,s), (float_type __x)) __THROW \{ \ long int __result; \ __asm ("fmove%.l %1, %0" : "=dm" (__result) : "f" (__x)); \ return __result; \} \ \__m81_inline float_type \__m81_u(__CONCAT(__fma,s))(float_type __x, float_type __y, \ float_type __z) __THROW \{ \ return (__x * __y) + __z; \}__inline_functions (double,)__inline_functions (float,f)__inline_functions (long double,l)# undef __inline_functions#endif /* Use ISO C9x */#ifdef __USE_GNU# define __inline_functions(float_type, s) \__m81_inline void \__m81_u(__CONCAT(__sincos,s))(float_type __x, float_type *__sinx, \ float_type *__cosx) __THROW \{ \ __asm ("fsincos%.x %2,%1:%0" \ : "=f" (*__sinx), "=f" (*__cosx) : "f" (__x)); \}__inline_functions (double,)__inline_functions (float,f)__inline_functions (long double,l)# undef __inline_functions#endif#if !defined __NO_MATH_INLINES && defined __OPTIMIZE__/* Define inline versions of the user visible functions. *//* Note that there must be no whitespace before the argument passed for NAME, to make token pasting work correctly with -traditional. */# define __inline_forward_c(rettype, name, args1, args2) \extern __inline rettype __attribute__((__const__)) \name args1 __THROW \{ \ return __CONCAT(__,name) args2; \}# define __inline_forward(rettype, name, args1, args2) \extern __inline rettype name args1 __THROW \{ \ return __CONCAT(__,name) args2; \}__inline_forward(double,frexp, (double __value, int *__expptr), (__value, __expptr))__inline_forward_c(double,floor, (double __x), (__x))__inline_forward_c(double,ceil, (double __x), (__x))# ifdef __USE_MISC# ifndef __USE_ISOC99 /* Conflict with macro of same name. */__inline_forward_c(int,isinf, (double __value), (__value))# endif__inline_forward_c(int,finite, (double __value), (__value))__inline_forward_c(double,scalbn, (double __x, int __n), (__x, __n))# endif# if defined __USE_MISC || defined __USE_XOPEN# ifndef __USE_ISOC99 /* Conflict with macro of same name. */__inline_forward_c(int,isnan, (double __value), (__value))# endif# endif# ifdef __USE_ISOC99__inline_forward_c(double,scalbln, (double __x, long int __n), (__x, __n))__inline_forward_c(double,nearbyint, (double __value), (__value))__inline_forward_c(long int,lrint, (double __value), (__value))__inline_forward_c(double,fma, (double __x, double __y, double __z), (__x, __y, __z))# endif# ifdef __USE_GNU__inline_forward(void,sincos, (double __x, double *__sinx, double *__cosx), (__x, __sinx, __cosx))# endif# if defined __USE_MISC || defined __USE_ISOC99__inline_forward(float,frexpf, (float __value, int *__expptr), (__value, __expptr))__inline_forward_c(float,floorf, (float __x), (__x))__inline_forward_c(float,ceilf, (float __x), (__x))# ifdef __USE_MISC__inline_forward_c(int,isinff, (float __value), (__value))__inline_forward_c(int,finitef, (float __value), (__value))__inline_forward_c(float,scalbnf, (float __x, int __n), (__x, __n))__inline_forward_c(int,isnanf, (float __value), (__value))# endif# ifdef __USE_ISOC99__inline_forward_c(float,scalblnf, (float __x, long int __n), (__x, __n))__inline_forward_c(float,nearbyintf, (float __value), (__value))__inline_forward_c(long int,lrintf, (float __value), (__value))__inline_forward_c(float,fmaf, (float __x, float __y, float __z), (__x, __y, __z))# endif# ifdef __USE_GNU__inline_forward(void,sincosf, (float __x, float *__sinx, float *__cosx), (__x, __sinx, __cosx))# endif__inline_forward(long double,frexpl, (long double __value, int *__expptr), (__value, __expptr))__inline_forward_c(long double,floorl, (long double __x), (__x))__inline_forward_c(long double,ceill, (long double __x), (__x))# ifdef __USE_MISC__inline_forward_c(int,isinfl, (long double __value), (__value))__inline_forward_c(int,finitel, (long double __value), (__value))__inline_forward_c(long double,scalbnl, (long double __x, int __n), (__x, __n))__inline_forward_c(int,isnanl, (long double __value), (__value))# endif# ifdef __USE_ISOC99__inline_forward_c(long double,scalblnl, (long double __x, long int __n), (__x, __n))__inline_forward_c(long double,nearbyintl, (long double __value), (__value))__inline_forward_c(long int,lrintl, (long double __value), (__value))__inline_forward_c(long double,fmal, (long double __x, long double __y, long double __z), (__x, __y, __z))# endif# ifdef __USE_GNU__inline_forward(void,sincosl, (long double __x, long double *__sinx, long double *__cosx), (__x, __sinx, __cosx))# endif#endif /* Use misc or ISO C99 */#undef __inline_forward#undef __inline_forward_c#endif /* !__NO_MATH_INLINES && __OPTIMIZE__ */#endif#endif /* GCC. */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -