Print this page
5261 libm should stop using synonyms.h
5298 fabs is 0-sized, confuses dis(1) and others
Reviewed by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
Approved by: Gordon Ross <gwr@nexenta.com>


   9  * or http://www.opensolaris.org/os/licensing.
  10  * See the License for the specific language governing permissions
  11  * and limitations under the License.
  12  *
  13  * When distributing Covered Code, include this CDDL HEADER in each
  14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15  * If applicable, add the following below this CDDL HEADER, with the
  16  * fields enclosed by brackets "[]" replaced with your own identifying
  17  * information: Portions Copyright [yyyy] [name of copyright owner]
  18  *
  19  * CDDL HEADER END
  20  */
  21 /*
  22  * Copyright 2011 Nexenta Systems, Inc.  All rights reserved.
  23  */
  24 /*
  25  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
  26  * Use is subject to license terms.
  27  */
  28 
  29 #pragma weak fmod = __fmod
  30 
  31 #include "libm.h"
  32 
  33 static const double zero = 0.0;
  34 
  35 /*
  36  * The following implementation assumes fast 64-bit integer arith-
  37  * metic.  This is fine for sparc because we build libm in v8plus
  38  * mode.  It's also fine for sparcv9 and amd64, although we have
  39  * assembly code on amd64.  For x86, it would be better to use
  40  * 32-bit code, but we have assembly for x86, too.
  41  */
  42 double
  43 fmod(double x, double y) {
  44         double          w;
  45         long long       hx, ix, iy, iz;
  46         int             nd, k, ny;
  47 
  48         hx = *(long long *)&x;
  49         ix = hx & ~0x8000000000000000ull;




   9  * or http://www.opensolaris.org/os/licensing.
  10  * See the License for the specific language governing permissions
  11  * and limitations under the License.
  12  *
  13  * When distributing Covered Code, include this CDDL HEADER in each
  14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15  * If applicable, add the following below this CDDL HEADER, with the
  16  * fields enclosed by brackets "[]" replaced with your own identifying
  17  * information: Portions Copyright [yyyy] [name of copyright owner]
  18  *
  19  * CDDL HEADER END
  20  */
  21 /*
  22  * Copyright 2011 Nexenta Systems, Inc.  All rights reserved.
  23  */
  24 /*
  25  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
  26  * Use is subject to license terms.
  27  */
  28 
  29 #pragma weak __fmod = fmod
  30 
  31 #include "libm.h"
  32 
  33 static const double zero = 0.0;
  34 
  35 /*
  36  * The following implementation assumes fast 64-bit integer arith-
  37  * metic.  This is fine for sparc because we build libm in v8plus
  38  * mode.  It's also fine for sparcv9 and amd64, although we have
  39  * assembly code on amd64.  For x86, it would be better to use
  40  * 32-bit code, but we have assembly for x86, too.
  41  */
  42 double
  43 fmod(double x, double y) {
  44         double          w;
  45         long long       hx, ix, iy, iz;
  46         int             nd, k, ny;
  47 
  48         hx = *(long long *)&x;
  49         ix = hx & ~0x8000000000000000ull;