1 
2 /* @(#)s_fabs.c 5.1 93/09/24 */
3 /*
4  * ====================================================
5  * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
6  *
7  * Developed at SunPro, a Sun Microsystems, Inc. business.
8  * Permission to use, copy, modify, and distribute this
9  * software is freely granted, provided that this notice
10  * is preserved.
11  * ====================================================
12  */
13 
14 /*
15 FUNCTION
16        <<fabs>>, <<fabsf>>---absolute value (magnitude)
17 INDEX
18 	fabs
19 INDEX
20 	fabsf
21 
22 ANSI_SYNOPSIS
23 	#include <math.h>
24        double fabs(double <[x]>);
25        float fabsf(float <[x]>);
26 
27 TRAD_SYNOPSIS
28 	#include <math.h>
29        double fabs(<[x]>)
30        double <[x]>;
31 
32        float fabsf(<[x]>)
33        float <[x]>;
34 
35 DESCRIPTION
36 <<fabs>> and <<fabsf>> calculate
37 @tex
38 $|x|$,
39 @end tex
40 the absolute value (magnitude) of the argument <[x]>, by direct
41 manipulation of the bit representation of <[x]>.
42 
43 RETURNS
44 The calculated value is returned.  No errors are detected.
45 
46 PORTABILITY
47 <<fabs>> is ANSI.
48 <<fabsf>> is an extension.
49 
50 */
51 
52 /*
53  * fabs(x) returns the absolute value of x.
54  */
55 
56 #include "fdlibm.h"
57 
58 #ifndef _DOUBLE_IS_32BITS
59 
60 #ifdef __STDC__
fabs(double x)61 	double fabs(double x)
62 #else
63 	double fabs(x)
64 	double x;
65 #endif
66 {
67 	uint32_t high;
68 	GET_HIGH_WORD(high,x);
69 	SET_HIGH_WORD(x,high&0x7fffffff);
70         return x;
71 }
72 
73 #endif /* _DOUBLE_IS_32BITS */
74