/* @(#)z_fabs.c 1.0 98/08/13 */ /* FUNCTION <>, <>---absolute value (magnitude) INDEX fabs INDEX fabsf ANSI_SYNOPSIS #include double fabs(double <[x]>); float fabsf(float <[x]>); TRAD_SYNOPSIS #include double fabs(<[x]>) double <[x]>; float fabsf(<[x]>) float <[x]>; DESCRIPTION <> and <> calculate @tex $|x|$, @end tex the absolute value (magnitude) of the argument <[x]>, by direct manipulation of the bit representation of <[x]>. RETURNS The calculated value is returned. PORTABILITY <> is ANSI. <> is an extension. */ /****************************************************************** * Floating-Point Absolute Value * * Input: * x - floating-point number * * Output: * absolute value of x * * Description: * fabs computes the absolute value of a floating point number. * *****************************************************************/ #include "fdlibm.h" #include "zmath.h" #ifndef _DOUBLE_IS_32BITS double _DEFUN (fabs, (double), double x) { switch (numtest (x)) { case NAN: errno = EDOM; return (x); case INF: errno = ERANGE; return (x); case 0: return (0.0); default: return (x < 0.0 ? -x : x); } } #endif /* _DOUBLE_IS_32BITS */