⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mathinline.h

📁 Glibc 2.3.2源代码(解压后有100多M)
💻 H
📖 第 1 页 / 共 2 页
字号:
#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 + -