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