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