xref: /freebsd/lib/msun/src/s_signbit.c (revision b3e7694832e81d7a904a10f525f8797b753bf0d3)
1ec79bc0dSDavid Schultz /*-
2*4d846d26SWarner Losh  * SPDX-License-Identifier: BSD-2-Clause
35e53a4f9SPedro F. Giffuni  *
4ec79bc0dSDavid Schultz  * Copyright (c) 2003 Mike Barcroft <mike@FreeBSD.org>
5ec79bc0dSDavid Schultz  * All rights reserved.
6ec79bc0dSDavid Schultz  *
7ec79bc0dSDavid Schultz  * Redistribution and use in source and binary forms, with or without
8ec79bc0dSDavid Schultz  * modification, are permitted provided that the following conditions
9ec79bc0dSDavid Schultz  * are met:
10ec79bc0dSDavid Schultz  * 1. Redistributions of source code must retain the above copyright
11ec79bc0dSDavid Schultz  *    notice, this list of conditions and the following disclaimer.
12ec79bc0dSDavid Schultz  * 2. Redistributions in binary form must reproduce the above copyright
13ec79bc0dSDavid Schultz  *    notice, this list of conditions and the following disclaimer in the
14ec79bc0dSDavid Schultz  *    documentation and/or other materials provided with the distribution.
15ec79bc0dSDavid Schultz  *
16ec79bc0dSDavid Schultz  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
17ec79bc0dSDavid Schultz  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18ec79bc0dSDavid Schultz  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19ec79bc0dSDavid Schultz  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
20ec79bc0dSDavid Schultz  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21ec79bc0dSDavid Schultz  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22ec79bc0dSDavid Schultz  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23ec79bc0dSDavid Schultz  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24ec79bc0dSDavid Schultz  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25ec79bc0dSDavid Schultz  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26ec79bc0dSDavid Schultz  * SUCH DAMAGE.
27ec79bc0dSDavid Schultz  */
28ec79bc0dSDavid Schultz 
29ec79bc0dSDavid Schultz #include <math.h>
30ec79bc0dSDavid Schultz 
31ec79bc0dSDavid Schultz #include "fpmath.h"
32ec79bc0dSDavid Schultz 
33ec79bc0dSDavid Schultz int
__signbit(double d)34ec79bc0dSDavid Schultz __signbit(double d)
35ec79bc0dSDavid Schultz {
36ec79bc0dSDavid Schultz 	union IEEEd2bits u;
37ec79bc0dSDavid Schultz 
38ec79bc0dSDavid Schultz 	u.d = d;
39ec79bc0dSDavid Schultz 	return (u.bits.sign);
40ec79bc0dSDavid Schultz }
41ec79bc0dSDavid Schultz 
42ec79bc0dSDavid Schultz int
__signbitf(float f)43ec79bc0dSDavid Schultz __signbitf(float f)
44ec79bc0dSDavid Schultz {
45ec79bc0dSDavid Schultz 	union IEEEf2bits u;
46ec79bc0dSDavid Schultz 
47ec79bc0dSDavid Schultz 	u.f = f;
48ec79bc0dSDavid Schultz 	return (u.bits.sign);
49ec79bc0dSDavid Schultz }
50ec79bc0dSDavid Schultz 
51ec79bc0dSDavid Schultz int
__signbitl(long double e)52ec79bc0dSDavid Schultz __signbitl(long double e)
53ec79bc0dSDavid Schultz {
54ec79bc0dSDavid Schultz 	union IEEEl2bits u;
55ec79bc0dSDavid Schultz 
56ec79bc0dSDavid Schultz 	u.e = e;
57ec79bc0dSDavid Schultz 	return (u.bits.sign);
58ec79bc0dSDavid Schultz }
59