libc/newlib/libm/common/sf_fdim.c

40 lines
731 B
C

/* Copyright (C) 2002 by Red Hat, Incorporated. All rights reserved.
*
* Permission to use, copy, modify, and distribute this software
* is freely granted, provided that this notice is preserved.
*/
#include "fdlibm.h"
#ifdef __STDC__
float fdimf(float x, float y)
#else
float fdimf(x,y)
float x;
float y;
#endif
{
int c = __fpclassifyf(x);
if (c == FP_NAN) return(x);
if (__fpclassifyf(y) == FP_NAN) return(y);
if (c == FP_INFINITE)
return HUGE_VALF;
return x > y ? x - y : 0.0;
}
#ifdef _DOUBLE_IS_32BITS
#ifdef __STDC__
double fdim(double x, double y)
#else
double fdim(x,y)
double x;
double y;
#endif
{
return (double) fdimf((float) x, (float) y);
}
#endif /* defined(_DOUBLE_IS_32BITS) */