57 lines
591 B
C
57 lines
591 B
C
|
/* fabs.c
|
|||
|
*
|
|||
|
* Absolute value
|
|||
|
*
|
|||
|
*
|
|||
|
*
|
|||
|
* SYNOPSIS:
|
|||
|
*
|
|||
|
* double x, y;
|
|||
|
*
|
|||
|
* y = fabs( x );
|
|||
|
*
|
|||
|
*
|
|||
|
*
|
|||
|
* DESCRIPTION:
|
|||
|
*
|
|||
|
* Returns the absolute value of the argument.
|
|||
|
*
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
#include "mconf.h"
|
|||
|
/* Avoid using UNK if possible. */
|
|||
|
#ifdef UNK
|
|||
|
#if BIGENDIAN
|
|||
|
#define MIEEE 1
|
|||
|
#else
|
|||
|
#define IBMPC 1
|
|||
|
#endif
|
|||
|
#endif
|
|||
|
|
|||
|
double fabs(x)
|
|||
|
double x;
|
|||
|
{
|
|||
|
union
|
|||
|
{
|
|||
|
double d;
|
|||
|
short i[4];
|
|||
|
} u;
|
|||
|
|
|||
|
u.d = x;
|
|||
|
#ifdef IBMPC
|
|||
|
u.i[3] &= 0x7fff;
|
|||
|
#endif
|
|||
|
#ifdef MIEEE
|
|||
|
u.i[0] &= 0x7fff;
|
|||
|
#endif
|
|||
|
#ifdef DEC
|
|||
|
u.i[3] &= 0x7fff;
|
|||
|
#endif
|
|||
|
#ifdef UNK
|
|||
|
if( u.d < 0 )
|
|||
|
u.d = -u.d;
|
|||
|
#endif
|
|||
|
return( u.d );
|
|||
|
}
|