1*53cecec8SEnji Cooper /*-
2*53cecec8SEnji Cooper * Copyright (c) 2003 Mike Barcroft <mike@FreeBSD.org>
3*53cecec8SEnji Cooper * All rights reserved.
4*53cecec8SEnji Cooper *
5*53cecec8SEnji Cooper * Redistribution and use in source and binary forms, with or without
6*53cecec8SEnji Cooper * modification, are permitted provided that the following conditions
7*53cecec8SEnji Cooper * are met:
8*53cecec8SEnji Cooper * 1. Redistributions of source code must retain the above copyright
9*53cecec8SEnji Cooper * notice, this list of conditions and the following disclaimer.
10*53cecec8SEnji Cooper * 2. Redistributions in binary form must reproduce the above copyright
11*53cecec8SEnji Cooper * notice, this list of conditions and the following disclaimer in the
12*53cecec8SEnji Cooper * documentation and/or other materials provided with the distribution.
13*53cecec8SEnji Cooper *
14*53cecec8SEnji Cooper * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15*53cecec8SEnji Cooper * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16*53cecec8SEnji Cooper * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17*53cecec8SEnji Cooper * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18*53cecec8SEnji Cooper * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19*53cecec8SEnji Cooper * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20*53cecec8SEnji Cooper * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21*53cecec8SEnji Cooper * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22*53cecec8SEnji Cooper * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23*53cecec8SEnji Cooper * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24*53cecec8SEnji Cooper * SUCH DAMAGE.
25*53cecec8SEnji Cooper */
26*53cecec8SEnji Cooper
27*53cecec8SEnji Cooper #include <math.h>
28*53cecec8SEnji Cooper #include <stdio.h>
29*53cecec8SEnji Cooper #include <stdlib.h>
30*53cecec8SEnji Cooper #include <atf-c.h>
31*53cecec8SEnji Cooper
32*53cecec8SEnji Cooper ATF_TC_WITHOUT_HEAD(test_fpclassify);
ATF_TC_BODY(test_fpclassify,tc)33*53cecec8SEnji Cooper ATF_TC_BODY(test_fpclassify, tc)
34*53cecec8SEnji Cooper {
35*53cecec8SEnji Cooper
36*53cecec8SEnji Cooper ATF_CHECK(fpclassify((float)0) == FP_ZERO);
37*53cecec8SEnji Cooper ATF_CHECK(fpclassify((float)-0.0) == FP_ZERO);
38*53cecec8SEnji Cooper ATF_CHECK(fpclassify((float)1) == FP_NORMAL);
39*53cecec8SEnji Cooper ATF_CHECK(fpclassify((float)1000) == FP_NORMAL);
40*53cecec8SEnji Cooper ATF_CHECK(fpclassify(HUGE_VALF) == FP_INFINITE);
41*53cecec8SEnji Cooper ATF_CHECK(fpclassify((float)HUGE_VAL) == FP_INFINITE);
42*53cecec8SEnji Cooper ATF_CHECK(fpclassify((float)HUGE_VALL) == FP_INFINITE);
43*53cecec8SEnji Cooper ATF_CHECK(fpclassify(NAN) == FP_NAN);
44*53cecec8SEnji Cooper
45*53cecec8SEnji Cooper ATF_CHECK(fpclassify((double)0) == FP_ZERO);
46*53cecec8SEnji Cooper ATF_CHECK(fpclassify((double)-0) == FP_ZERO);
47*53cecec8SEnji Cooper ATF_CHECK(fpclassify((double)1) == FP_NORMAL);
48*53cecec8SEnji Cooper ATF_CHECK(fpclassify((double)1000) == FP_NORMAL);
49*53cecec8SEnji Cooper ATF_CHECK(fpclassify(HUGE_VAL) == FP_INFINITE);
50*53cecec8SEnji Cooper ATF_CHECK(fpclassify((double)HUGE_VALF) == FP_INFINITE);
51*53cecec8SEnji Cooper ATF_CHECK(fpclassify((double)HUGE_VALL) == FP_INFINITE);
52*53cecec8SEnji Cooper ATF_CHECK(fpclassify((double)NAN) == FP_NAN);
53*53cecec8SEnji Cooper
54*53cecec8SEnji Cooper ATF_CHECK(fpclassify((long double)0) == FP_ZERO);
55*53cecec8SEnji Cooper ATF_CHECK(fpclassify((long double)-0.0) == FP_ZERO);
56*53cecec8SEnji Cooper ATF_CHECK(fpclassify((long double)1) == FP_NORMAL);
57*53cecec8SEnji Cooper ATF_CHECK(fpclassify((long double)1000) == FP_NORMAL);
58*53cecec8SEnji Cooper ATF_CHECK(fpclassify(HUGE_VALL) == FP_INFINITE);
59*53cecec8SEnji Cooper ATF_CHECK(fpclassify((long double)HUGE_VALF) == FP_INFINITE);
60*53cecec8SEnji Cooper ATF_CHECK(fpclassify((long double)HUGE_VAL) == FP_INFINITE);
61*53cecec8SEnji Cooper ATF_CHECK(fpclassify((long double)NAN) == FP_NAN);
62*53cecec8SEnji Cooper }
63*53cecec8SEnji Cooper
ATF_TP_ADD_TCS(tp)64*53cecec8SEnji Cooper ATF_TP_ADD_TCS(tp)
65*53cecec8SEnji Cooper {
66*53cecec8SEnji Cooper
67*53cecec8SEnji Cooper ATF_TP_ADD_TC(tp, test_fpclassify);
68*53cecec8SEnji Cooper
69*53cecec8SEnji Cooper return (atf_no_error());
70*53cecec8SEnji Cooper }
71