fmaxl.c raw

   1  #include <math.h>
   2  #include <float.h>
   3  
   4  #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
   5  long double fmaxl(long double x, long double y)
   6  {
   7  	return fmax(x, y);
   8  }
   9  #else
  10  long double fmaxl(long double x, long double y)
  11  {
  12  	if (isnan(x))
  13  		return y;
  14  	if (isnan(y))
  15  		return x;
  16  	/* handle signed zeros, see C99 Annex F.9.9.2 */
  17  	if (signbit(x) != signbit(y))
  18  		return signbit(x) ? y : x;
  19  	return x < y ? y : x;
  20  }
  21  #endif
  22