Annotation of src/lib/libc/gen/fpclassifyf_ieee754.c, Revision 1.3
1.3 ! martin 1: /* $NetBSD: fpclassifyf_ieee754.c,v 1.2 2003/10/29 19:34:11 kleink Exp $ */
1.1 kleink 2:
3: /*-
4: * Copyright (c) 2003 The NetBSD Foundation, Inc.
5: * All rights reserved.
6: *
7: * This code is derived from software contributed to The NetBSD Foundation
8: * by Klaus Klein.
9: *
10: * Redistribution and use in source and binary forms, with or without
11: * modification, are permitted provided that the following conditions
12: * are met:
13: * 1. Redistributions of source code must retain the above copyright
14: * notice, this list of conditions and the following disclaimer.
15: * 2. Redistributions in binary form must reproduce the above copyright
16: * notice, this list of conditions and the following disclaimer in the
17: * documentation and/or other materials provided with the distribution.
18: *
19: * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
20: * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
21: * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22: * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
23: * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24: * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25: * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26: * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27: * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28: * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29: * POSSIBILITY OF SUCH DAMAGE.
30: */
31:
32: #include <sys/cdefs.h>
33: #if defined(LIBC_SCCS) && !defined(lint)
1.3 ! martin 34: __RCSID("$NetBSD: fpclassifyf_ieee754.c,v 1.2 2003/10/29 19:34:11 kleink Exp $");
1.1 kleink 35: #endif
36:
37: #include <machine/ieee.h>
38: #include <math.h>
39:
40: /*
41: * 7.12.3.1 fpclassify - classify real floating type
42: * IEEE 754 single-precision version
43: */
44: int
45: __fpclassifyf(float x)
46: {
47: union ieee_single_u u;
48:
49: u.sngu_f = x;
50:
51: if (u.sngu_sng.sng_exp == 0) {
52: if (u.sngu_sng.sng_frac == 0)
53: return FP_ZERO;
54: else
55: return FP_SUBNORMAL;
1.2 kleink 56: } else if (u.sngu_sng.sng_exp == SNG_EXP_INFNAN) {
1.1 kleink 57: if (u.sngu_sng.sng_frac == 0)
58: return FP_INFINITE;
59: else
60: return FP_NAN;
61: }
62:
63: return FP_NORMAL;
64: }
CVSweb <webmaster@jp.NetBSD.org>