Home | History | Annotate | Line # | Download | only in libm
t_ceil.c revision 1.7.2.1
      1  1.7.2.1    yamt /* $NetBSD: t_ceil.c,v 1.7.2.1 2014/05/22 11:42:21 yamt Exp $ */
      2      1.1  jruoho 
      3      1.1  jruoho /*-
      4      1.1  jruoho  * Copyright (c) 2011 The NetBSD Foundation, Inc.
      5      1.1  jruoho  * All rights reserved.
      6      1.1  jruoho  *
      7      1.1  jruoho  * This code is derived from software contributed to The NetBSD Foundation
      8      1.1  jruoho  * by Jukka Ruohonen.
      9      1.1  jruoho  *
     10      1.1  jruoho  * Redistribution and use in source and binary forms, with or without
     11      1.1  jruoho  * modification, are permitted provided that the following conditions
     12      1.1  jruoho  * are met:
     13      1.1  jruoho  * 1. Redistributions of source code must retain the above copyright
     14      1.1  jruoho  *    notice, this list of conditions and the following disclaimer.
     15      1.1  jruoho  * 2. Redistributions in binary form must reproduce the above copyright
     16      1.1  jruoho  *    notice, this list of conditions and the following disclaimer in the
     17      1.1  jruoho  *    documentation and/or other materials provided with the distribution.
     18      1.1  jruoho  *
     19      1.1  jruoho  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
     20      1.1  jruoho  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
     21      1.1  jruoho  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     22      1.1  jruoho  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
     23      1.1  jruoho  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     24      1.1  jruoho  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     25      1.1  jruoho  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     26      1.1  jruoho  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
     27      1.1  jruoho  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     28      1.1  jruoho  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     29      1.1  jruoho  * POSSIBILITY OF SUCH DAMAGE.
     30      1.1  jruoho  */
     31      1.1  jruoho #include <sys/cdefs.h>
     32  1.7.2.1    yamt __RCSID("$NetBSD: t_ceil.c,v 1.7.2.1 2014/05/22 11:42:21 yamt Exp $");
     33      1.1  jruoho 
     34      1.5  jruoho #include <atf-c.h>
     35      1.1  jruoho #include <math.h>
     36      1.1  jruoho #include <limits.h>
     37      1.5  jruoho #include <stdio.h>
     38      1.1  jruoho 
     39      1.5  jruoho #ifdef __vax__
     40      1.5  jruoho #define SMALL_NUM	1.0e-38
     41      1.5  jruoho #else
     42      1.5  jruoho #define SMALL_NUM	1.0e-40
     43      1.5  jruoho #endif
     44      1.1  jruoho 
     45      1.7  jruoho /*
     46      1.7  jruoho  * ceil(3)
     47      1.7  jruoho  */
     48      1.5  jruoho ATF_TC(ceil_basic);
     49      1.5  jruoho ATF_TC_HEAD(ceil_basic, tc)
     50      1.1  jruoho {
     51      1.1  jruoho 	atf_tc_set_md_var(tc, "descr", "A basic test of ceil(3)");
     52      1.1  jruoho }
     53      1.1  jruoho 
     54      1.5  jruoho ATF_TC_BODY(ceil_basic, tc)
     55      1.5  jruoho {
     56      1.5  jruoho 	const double x = 0.999999999999999;
     57      1.5  jruoho 	const double y = 0.000000000000001;
     58      1.5  jruoho 
     59      1.5  jruoho 	ATF_CHECK(fabs(ceil(x) - 1) < SMALL_NUM);
     60      1.5  jruoho 	ATF_CHECK(fabs(ceil(y) - 1) < SMALL_NUM);
     61      1.5  jruoho }
     62      1.5  jruoho 
     63      1.7  jruoho ATF_TC(ceil_nan);
     64      1.7  jruoho ATF_TC_HEAD(ceil_nan, tc)
     65      1.7  jruoho {
     66      1.7  jruoho 	atf_tc_set_md_var(tc, "descr", "Test ceil(NaN) == NaN");
     67      1.7  jruoho }
     68      1.7  jruoho 
     69      1.7  jruoho ATF_TC_BODY(ceil_nan, tc)
     70      1.7  jruoho {
     71      1.7  jruoho 	const double x = 0.0L / 0.0L;
     72      1.7  jruoho 
     73      1.7  jruoho 	ATF_CHECK(isnan(ceil(x)) != 0);
     74      1.7  jruoho }
     75      1.7  jruoho 
     76      1.7  jruoho ATF_TC(ceil_inf_neg);
     77      1.7  jruoho ATF_TC_HEAD(ceil_inf_neg, tc)
     78      1.7  jruoho {
     79      1.7  jruoho 	atf_tc_set_md_var(tc, "descr", "Test ceil(-Inf) == -Inf");
     80      1.7  jruoho }
     81      1.7  jruoho 
     82      1.7  jruoho ATF_TC_BODY(ceil_inf_neg, tc)
     83      1.7  jruoho {
     84      1.7  jruoho 	const double x = -1.0L / 0.0L;
     85      1.7  jruoho 	double y = ceil(x);
     86      1.7  jruoho 
     87      1.7  jruoho 	if (isinf(y) == 0 || signbit(y) == 0)
     88      1.7  jruoho 		atf_tc_fail_nonfatal("ceil(-Inf) != -Inf");
     89      1.7  jruoho }
     90      1.7  jruoho 
     91      1.7  jruoho ATF_TC(ceil_inf_pos);
     92      1.7  jruoho ATF_TC_HEAD(ceil_inf_pos, tc)
     93      1.7  jruoho {
     94      1.7  jruoho 	atf_tc_set_md_var(tc, "descr", "Test ceil(+Inf) == +Inf");
     95      1.7  jruoho }
     96      1.7  jruoho 
     97      1.7  jruoho ATF_TC_BODY(ceil_inf_pos, tc)
     98      1.7  jruoho {
     99      1.7  jruoho 	const double x = 1.0L / 0.0L;
    100      1.7  jruoho 	double y = ceil(x);
    101      1.7  jruoho 
    102      1.7  jruoho 	if (isinf(y) == 0 || signbit(y) != 0)
    103      1.7  jruoho 		atf_tc_fail_nonfatal("ceil(+Inf) != +Inf");
    104      1.7  jruoho }
    105      1.7  jruoho 
    106      1.7  jruoho ATF_TC(ceil_zero_neg);
    107      1.7  jruoho ATF_TC_HEAD(ceil_zero_neg, tc)
    108      1.7  jruoho {
    109      1.7  jruoho 	atf_tc_set_md_var(tc, "descr", "Test ceil(-0.0) == -0.0");
    110      1.7  jruoho }
    111      1.7  jruoho 
    112      1.7  jruoho ATF_TC_BODY(ceil_zero_neg, tc)
    113      1.7  jruoho {
    114      1.7  jruoho 	const double x = -0.0L;
    115      1.7  jruoho 	double y = ceil(x);
    116      1.7  jruoho 
    117      1.7  jruoho 	if (fabs(y) > 0.0 || signbit(y) == 0)
    118      1.7  jruoho 		atf_tc_fail_nonfatal("ceil(-0.0) != -0.0");
    119      1.7  jruoho }
    120      1.7  jruoho 
    121      1.7  jruoho ATF_TC(ceil_zero_pos);
    122      1.7  jruoho ATF_TC_HEAD(ceil_zero_pos, tc)
    123      1.7  jruoho {
    124      1.7  jruoho 	atf_tc_set_md_var(tc, "descr", "Test ceil(+0.0) == +0.0");
    125      1.7  jruoho }
    126      1.7  jruoho 
    127      1.7  jruoho ATF_TC_BODY(ceil_zero_pos, tc)
    128      1.7  jruoho {
    129      1.7  jruoho 	const double x = 0.0L;
    130      1.7  jruoho 	double y = ceil(x);
    131      1.7  jruoho 
    132      1.7  jruoho 	if (fabs(y) > 0.0 || signbit(y) != 0)
    133      1.7  jruoho 		atf_tc_fail_nonfatal("ceil(+0.0) != +0.0");
    134      1.7  jruoho }
    135      1.7  jruoho 
    136      1.7  jruoho /*
    137      1.7  jruoho  * ceilf(3)
    138      1.7  jruoho  */
    139      1.5  jruoho ATF_TC(ceilf_basic);
    140      1.5  jruoho ATF_TC_HEAD(ceilf_basic, tc)
    141      1.5  jruoho {
    142      1.5  jruoho 	atf_tc_set_md_var(tc, "descr", "A basic test of ceilf(3)");
    143      1.5  jruoho }
    144      1.5  jruoho 
    145      1.5  jruoho ATF_TC_BODY(ceilf_basic, tc)
    146      1.5  jruoho {
    147      1.5  jruoho 	const float x = 0.9999999;
    148      1.5  jruoho 	const float y = 0.0000001;
    149      1.5  jruoho 
    150      1.5  jruoho 	ATF_CHECK(fabsf(ceilf(x) - 1) < SMALL_NUM);
    151      1.5  jruoho 	ATF_CHECK(fabsf(ceilf(y) - 1) < SMALL_NUM);
    152      1.5  jruoho }
    153      1.5  jruoho 
    154      1.7  jruoho ATF_TC(ceilf_nan);
    155      1.7  jruoho ATF_TC_HEAD(ceilf_nan, tc)
    156      1.7  jruoho {
    157      1.7  jruoho 	atf_tc_set_md_var(tc, "descr", "Test ceilf(NaN) == NaN");
    158      1.7  jruoho }
    159      1.7  jruoho 
    160      1.7  jruoho ATF_TC_BODY(ceilf_nan, tc)
    161      1.7  jruoho {
    162      1.7  jruoho 	const float x = 0.0L / 0.0L;
    163      1.7  jruoho 
    164      1.7  jruoho 	ATF_CHECK(isnan(ceilf(x)) != 0);
    165      1.7  jruoho }
    166      1.7  jruoho 
    167      1.7  jruoho ATF_TC(ceilf_inf_neg);
    168      1.7  jruoho ATF_TC_HEAD(ceilf_inf_neg, tc)
    169      1.7  jruoho {
    170      1.7  jruoho 	atf_tc_set_md_var(tc, "descr", "Test ceilf(-Inf) == -Inf");
    171      1.7  jruoho }
    172      1.7  jruoho 
    173      1.7  jruoho ATF_TC_BODY(ceilf_inf_neg, tc)
    174      1.7  jruoho {
    175      1.7  jruoho 	const float x = -1.0L / 0.0L;
    176      1.7  jruoho 	float y = ceilf(x);
    177      1.7  jruoho 
    178      1.7  jruoho 	if (isinf(y) == 0 || signbit(y) == 0)
    179      1.7  jruoho 		atf_tc_fail_nonfatal("ceilf(-Inf) != -Inf");
    180      1.7  jruoho }
    181      1.7  jruoho 
    182      1.7  jruoho ATF_TC(ceilf_inf_pos);
    183      1.7  jruoho ATF_TC_HEAD(ceilf_inf_pos, tc)
    184      1.7  jruoho {
    185      1.7  jruoho 	atf_tc_set_md_var(tc, "descr", "Test ceilf(+Inf) == +Inf");
    186      1.7  jruoho }
    187      1.7  jruoho 
    188      1.7  jruoho ATF_TC_BODY(ceilf_inf_pos, tc)
    189      1.7  jruoho {
    190      1.7  jruoho 	const float x = 1.0L / 0.0L;
    191      1.7  jruoho 	float y = ceilf(x);
    192      1.7  jruoho 
    193      1.7  jruoho 	if (isinf(y) == 0 || signbit(y) != 0)
    194      1.7  jruoho 		atf_tc_fail_nonfatal("ceilf(+Inf) != +Inf");
    195      1.7  jruoho }
    196      1.7  jruoho 
    197      1.7  jruoho ATF_TC(ceilf_zero_neg);
    198      1.7  jruoho ATF_TC_HEAD(ceilf_zero_neg, tc)
    199      1.7  jruoho {
    200      1.7  jruoho 	atf_tc_set_md_var(tc, "descr", "Test ceilf(-0.0) == -0.0");
    201      1.7  jruoho }
    202      1.7  jruoho 
    203      1.7  jruoho ATF_TC_BODY(ceilf_zero_neg, tc)
    204      1.7  jruoho {
    205      1.7  jruoho 	const float x = -0.0L;
    206      1.7  jruoho 	float y = ceilf(x);
    207      1.7  jruoho 
    208      1.7  jruoho 	if (fabsf(y) > 0.0 || signbit(y) == 0)
    209      1.7  jruoho 		atf_tc_fail_nonfatal("ceilf(-0.0) != -0.0");
    210      1.7  jruoho }
    211      1.7  jruoho 
    212      1.7  jruoho ATF_TC(ceilf_zero_pos);
    213      1.7  jruoho ATF_TC_HEAD(ceilf_zero_pos, tc)
    214      1.7  jruoho {
    215      1.7  jruoho 	atf_tc_set_md_var(tc, "descr", "Test ceilf(+0.0) == +0.0");
    216      1.7  jruoho }
    217      1.7  jruoho 
    218      1.7  jruoho ATF_TC_BODY(ceilf_zero_pos, tc)
    219      1.7  jruoho {
    220      1.7  jruoho 	const float x = 0.0L;
    221      1.7  jruoho 	float y = ceilf(x);
    222      1.7  jruoho 
    223      1.7  jruoho 	if (fabsf(y) > 0.0 || signbit(y) != 0)
    224      1.7  jruoho 		atf_tc_fail_nonfatal("ceilf(+0.0) != +0.0");
    225  1.7.2.1    yamt }
    226  1.7.2.1    yamt 
    227  1.7.2.1    yamt /*
    228  1.7.2.1    yamt  * ceill(3)
    229  1.7.2.1    yamt  */
    230  1.7.2.1    yamt ATF_TC(ceill_basic);
    231  1.7.2.1    yamt ATF_TC_HEAD(ceill_basic, tc)
    232  1.7.2.1    yamt {
    233  1.7.2.1    yamt 	atf_tc_set_md_var(tc, "descr", "A basic test of ceill(3)");
    234  1.7.2.1    yamt }
    235  1.7.2.1    yamt 
    236  1.7.2.1    yamt ATF_TC_BODY(ceill_basic, tc)
    237  1.7.2.1    yamt {
    238  1.7.2.1    yamt 	const long double x = 0.9999999;
    239  1.7.2.1    yamt 	const long double y = 0.0000001;
    240  1.7.2.1    yamt 
    241  1.7.2.1    yamt 	ATF_CHECK(fabsl(ceill(x) - 1) < SMALL_NUM);
    242  1.7.2.1    yamt 	ATF_CHECK(fabsl(ceill(y) - 1) < SMALL_NUM);
    243  1.7.2.1    yamt }
    244  1.7.2.1    yamt 
    245  1.7.2.1    yamt ATF_TC(ceill_nan);
    246  1.7.2.1    yamt ATF_TC_HEAD(ceill_nan, tc)
    247  1.7.2.1    yamt {
    248  1.7.2.1    yamt 	atf_tc_set_md_var(tc, "descr", "Test ceill(NaN) == NaN");
    249  1.7.2.1    yamt }
    250  1.7.2.1    yamt 
    251  1.7.2.1    yamt ATF_TC_BODY(ceill_nan, tc)
    252  1.7.2.1    yamt {
    253  1.7.2.1    yamt 	const long double x = 0.0L / 0.0L;
    254  1.7.2.1    yamt 
    255  1.7.2.1    yamt 	ATF_CHECK(isnan(ceill(x)) != 0);
    256  1.7.2.1    yamt }
    257  1.7.2.1    yamt 
    258  1.7.2.1    yamt ATF_TC(ceill_inf_neg);
    259  1.7.2.1    yamt ATF_TC_HEAD(ceill_inf_neg, tc)
    260  1.7.2.1    yamt {
    261  1.7.2.1    yamt 	atf_tc_set_md_var(tc, "descr", "Test ceill(-Inf) == -Inf");
    262  1.7.2.1    yamt }
    263  1.7.2.1    yamt 
    264  1.7.2.1    yamt ATF_TC_BODY(ceill_inf_neg, tc)
    265  1.7.2.1    yamt {
    266  1.7.2.1    yamt 	const long double x = -1.0L / 0.0L;
    267  1.7.2.1    yamt 	long double y = ceill(x);
    268  1.7.2.1    yamt 
    269  1.7.2.1    yamt 	if (isinf(y) == 0 || signbit(y) == 0)
    270  1.7.2.1    yamt 		atf_tc_fail_nonfatal("ceill(-Inf) != -Inf");
    271  1.7.2.1    yamt }
    272  1.7.2.1    yamt 
    273  1.7.2.1    yamt ATF_TC(ceill_inf_pos);
    274  1.7.2.1    yamt ATF_TC_HEAD(ceill_inf_pos, tc)
    275  1.7.2.1    yamt {
    276  1.7.2.1    yamt 	atf_tc_set_md_var(tc, "descr", "Test ceill(+Inf) == +Inf");
    277  1.7.2.1    yamt }
    278  1.7.2.1    yamt 
    279  1.7.2.1    yamt ATF_TC_BODY(ceill_inf_pos, tc)
    280  1.7.2.1    yamt {
    281  1.7.2.1    yamt 	const long double x = 1.0L / 0.0L;
    282  1.7.2.1    yamt 	long double y = ceill(x);
    283  1.7.2.1    yamt 
    284  1.7.2.1    yamt 	if (isinf(y) == 0 || signbit(y) != 0)
    285  1.7.2.1    yamt 		atf_tc_fail_nonfatal("ceill(+Inf) != +Inf");
    286  1.7.2.1    yamt }
    287  1.7.2.1    yamt 
    288  1.7.2.1    yamt ATF_TC(ceill_zero_neg);
    289  1.7.2.1    yamt ATF_TC_HEAD(ceill_zero_neg, tc)
    290  1.7.2.1    yamt {
    291  1.7.2.1    yamt 	atf_tc_set_md_var(tc, "descr", "Test ceill(-0.0) == -0.0");
    292  1.7.2.1    yamt }
    293  1.7.2.1    yamt 
    294  1.7.2.1    yamt ATF_TC_BODY(ceill_zero_neg, tc)
    295  1.7.2.1    yamt {
    296  1.7.2.1    yamt 	const long double x = -0.0L;
    297  1.7.2.1    yamt 	long double y = ceill(x);
    298  1.7.2.1    yamt 
    299  1.7.2.1    yamt 	if (fabsl(y) > 0.0 || signbit(y) == 0)
    300  1.7.2.1    yamt 		atf_tc_fail_nonfatal("ceill(-0.0) != -0.0");
    301  1.7.2.1    yamt }
    302  1.7.2.1    yamt 
    303  1.7.2.1    yamt ATF_TC(ceill_zero_pos);
    304  1.7.2.1    yamt ATF_TC_HEAD(ceill_zero_pos, tc)
    305  1.7.2.1    yamt {
    306  1.7.2.1    yamt 	atf_tc_set_md_var(tc, "descr", "Test ceill(+0.0) == +0.0");
    307  1.7.2.1    yamt }
    308  1.7.2.1    yamt 
    309  1.7.2.1    yamt ATF_TC_BODY(ceill_zero_pos, tc)
    310  1.7.2.1    yamt {
    311  1.7.2.1    yamt 	const long double x = 0.0L;
    312  1.7.2.1    yamt 	long double y = ceill(x);
    313  1.7.2.1    yamt 
    314  1.7.2.1    yamt 	if (fabsl(y) > 0.0 || signbit(y) != 0)
    315  1.7.2.1    yamt 		atf_tc_fail_nonfatal("ceill(+0.0) != +0.0");
    316      1.7  jruoho }
    317      1.7  jruoho 
    318      1.7  jruoho /*
    319      1.7  jruoho  * floor(3)
    320      1.7  jruoho  */
    321      1.5  jruoho ATF_TC(floor_basic);
    322      1.5  jruoho ATF_TC_HEAD(floor_basic, tc)
    323      1.5  jruoho {
    324      1.5  jruoho 	atf_tc_set_md_var(tc, "descr", "A basic test of floor(3)");
    325      1.5  jruoho }
    326      1.4     mrg 
    327      1.5  jruoho ATF_TC_BODY(floor_basic, tc)
    328      1.1  jruoho {
    329      1.5  jruoho 	const double x = 0.999999999999999;
    330      1.5  jruoho 	const double y = 0.000000000000001;
    331      1.1  jruoho 
    332      1.5  jruoho 	ATF_CHECK(floor(x) < SMALL_NUM);
    333      1.5  jruoho 	ATF_CHECK(floor(y) < SMALL_NUM);
    334      1.5  jruoho }
    335      1.1  jruoho 
    336      1.7  jruoho ATF_TC(floor_nan);
    337      1.7  jruoho ATF_TC_HEAD(floor_nan, tc)
    338      1.7  jruoho {
    339      1.7  jruoho 	atf_tc_set_md_var(tc, "descr", "Test floor(NaN) == NaN");
    340      1.7  jruoho }
    341      1.7  jruoho 
    342      1.7  jruoho ATF_TC_BODY(floor_nan, tc)
    343      1.7  jruoho {
    344      1.7  jruoho 	const double x = 0.0L / 0.0L;
    345      1.7  jruoho 
    346      1.7  jruoho 	ATF_CHECK(isnan(floor(x)) != 0);
    347      1.7  jruoho }
    348      1.7  jruoho 
    349      1.7  jruoho ATF_TC(floor_inf_neg);
    350      1.7  jruoho ATF_TC_HEAD(floor_inf_neg, tc)
    351      1.7  jruoho {
    352      1.7  jruoho 	atf_tc_set_md_var(tc, "descr", "Test floor(-Inf) == -Inf");
    353      1.7  jruoho }
    354      1.7  jruoho 
    355      1.7  jruoho ATF_TC_BODY(floor_inf_neg, tc)
    356      1.7  jruoho {
    357      1.7  jruoho 	const double x = -1.0L / 0.0L;
    358      1.7  jruoho 	double y = floor(x);
    359      1.7  jruoho 
    360      1.7  jruoho 	if (isinf(y) == 0 || signbit(y) == 0)
    361      1.7  jruoho 		atf_tc_fail_nonfatal("floor(-Inf) != -Inf");
    362      1.7  jruoho }
    363      1.7  jruoho 
    364      1.7  jruoho ATF_TC(floor_inf_pos);
    365      1.7  jruoho ATF_TC_HEAD(floor_inf_pos, tc)
    366      1.7  jruoho {
    367      1.7  jruoho 	atf_tc_set_md_var(tc, "descr", "Test floor(+Inf) == +Inf");
    368      1.7  jruoho }
    369      1.7  jruoho 
    370      1.7  jruoho ATF_TC_BODY(floor_inf_pos, tc)
    371      1.7  jruoho {
    372      1.7  jruoho 	const double x = 1.0L / 0.0L;
    373      1.7  jruoho 	double y = floor(x);
    374      1.7  jruoho 
    375      1.7  jruoho 	if (isinf(y) == 0 || signbit(y) != 0)
    376      1.7  jruoho 		atf_tc_fail_nonfatal("floor(+Inf) != +Inf");
    377      1.7  jruoho }
    378      1.7  jruoho 
    379      1.7  jruoho ATF_TC(floor_zero_neg);
    380      1.7  jruoho ATF_TC_HEAD(floor_zero_neg, tc)
    381      1.7  jruoho {
    382      1.7  jruoho 	atf_tc_set_md_var(tc, "descr", "Test floor(-0.0) == -0.0");
    383      1.7  jruoho }
    384      1.7  jruoho 
    385      1.7  jruoho ATF_TC_BODY(floor_zero_neg, tc)
    386      1.7  jruoho {
    387      1.7  jruoho 	const double x = -0.0L;
    388      1.7  jruoho 	double y = floor(x);
    389      1.7  jruoho 
    390      1.7  jruoho 	if (fabs(y) > 0.0 || signbit(y) == 0)
    391      1.7  jruoho 		atf_tc_fail_nonfatal("floor(-0.0) != -0.0");
    392      1.7  jruoho }
    393      1.7  jruoho 
    394      1.7  jruoho ATF_TC(floor_zero_pos);
    395      1.7  jruoho ATF_TC_HEAD(floor_zero_pos, tc)
    396      1.7  jruoho {
    397      1.7  jruoho 	atf_tc_set_md_var(tc, "descr", "Test floor(+0.0) == +0.0");
    398      1.7  jruoho }
    399      1.7  jruoho 
    400      1.7  jruoho ATF_TC_BODY(floor_zero_pos, tc)
    401      1.7  jruoho {
    402      1.7  jruoho 	const double x = 0.0L;
    403      1.7  jruoho 	double y = floor(x);
    404      1.7  jruoho 
    405      1.7  jruoho 	if (fabs(y) > 0.0 || signbit(y) != 0)
    406      1.7  jruoho 		atf_tc_fail_nonfatal("floor(+0.0) != +0.0");
    407      1.7  jruoho }
    408      1.7  jruoho 
    409      1.7  jruoho /*
    410      1.7  jruoho  * floorf(3)
    411      1.7  jruoho  */
    412      1.5  jruoho ATF_TC(floorf_basic);
    413      1.5  jruoho ATF_TC_HEAD(floorf_basic, tc)
    414      1.5  jruoho {
    415      1.5  jruoho 	atf_tc_set_md_var(tc, "descr", "A basic test of floorf(3)");
    416      1.5  jruoho }
    417      1.1  jruoho 
    418      1.5  jruoho ATF_TC_BODY(floorf_basic, tc)
    419      1.5  jruoho {
    420      1.5  jruoho 	const float x = 0.9999999;
    421      1.5  jruoho 	const float y = 0.0000001;
    422      1.5  jruoho 
    423      1.5  jruoho 	ATF_CHECK(floorf(x) < SMALL_NUM);
    424      1.5  jruoho 	ATF_CHECK(floorf(y) < SMALL_NUM);
    425      1.1  jruoho }
    426      1.1  jruoho 
    427      1.7  jruoho ATF_TC(floorf_nan);
    428      1.7  jruoho ATF_TC_HEAD(floorf_nan, tc)
    429      1.7  jruoho {
    430      1.7  jruoho 	atf_tc_set_md_var(tc, "descr", "Test floorf(NaN) == NaN");
    431      1.7  jruoho }
    432      1.7  jruoho 
    433      1.7  jruoho ATF_TC_BODY(floorf_nan, tc)
    434      1.7  jruoho {
    435      1.7  jruoho 	const float x = 0.0L / 0.0L;
    436      1.7  jruoho 
    437      1.7  jruoho 	ATF_CHECK(isnan(floorf(x)) != 0);
    438      1.7  jruoho }
    439      1.7  jruoho 
    440      1.7  jruoho ATF_TC(floorf_inf_neg);
    441      1.7  jruoho ATF_TC_HEAD(floorf_inf_neg, tc)
    442      1.7  jruoho {
    443      1.7  jruoho 	atf_tc_set_md_var(tc, "descr", "Test floorf(-Inf) == -Inf");
    444      1.7  jruoho }
    445      1.7  jruoho 
    446      1.7  jruoho ATF_TC_BODY(floorf_inf_neg, tc)
    447      1.7  jruoho {
    448      1.7  jruoho 	const float x = -1.0L / 0.0L;
    449      1.7  jruoho 	float y = floorf(x);
    450      1.7  jruoho 
    451      1.7  jruoho 	if (isinf(y) == 0 || signbit(y) == 0)
    452      1.7  jruoho 		atf_tc_fail_nonfatal("floorf(-Inf) != -Inf");
    453      1.7  jruoho }
    454      1.7  jruoho 
    455      1.7  jruoho ATF_TC(floorf_inf_pos);
    456      1.7  jruoho ATF_TC_HEAD(floorf_inf_pos, tc)
    457      1.7  jruoho {
    458      1.7  jruoho 	atf_tc_set_md_var(tc, "descr", "Test floorf(+Inf) == +Inf");
    459      1.7  jruoho }
    460      1.7  jruoho 
    461      1.7  jruoho ATF_TC_BODY(floorf_inf_pos, tc)
    462      1.7  jruoho {
    463      1.7  jruoho 	const float x = 1.0L / 0.0L;
    464      1.7  jruoho 	float y = floorf(x);
    465      1.7  jruoho 
    466      1.7  jruoho 	if (isinf(y) == 0 || signbit(y) != 0)
    467      1.7  jruoho 		atf_tc_fail_nonfatal("floorf(+Inf) != +Inf");
    468      1.7  jruoho }
    469      1.7  jruoho 
    470      1.7  jruoho ATF_TC(floorf_zero_neg);
    471      1.7  jruoho ATF_TC_HEAD(floorf_zero_neg, tc)
    472      1.7  jruoho {
    473      1.7  jruoho 	atf_tc_set_md_var(tc, "descr", "Test floorf(-0.0) == -0.0");
    474      1.7  jruoho }
    475      1.7  jruoho 
    476      1.7  jruoho ATF_TC_BODY(floorf_zero_neg, tc)
    477      1.7  jruoho {
    478      1.7  jruoho 	const float x = -0.0L;
    479      1.7  jruoho 	float y = floorf(x);
    480      1.7  jruoho 
    481      1.7  jruoho 	if (fabsf(y) > 0.0 || signbit(y) == 0)
    482      1.7  jruoho 		atf_tc_fail_nonfatal("floorf(-0.0) != -0.0");
    483      1.7  jruoho }
    484      1.7  jruoho 
    485      1.7  jruoho ATF_TC(floorf_zero_pos);
    486      1.7  jruoho ATF_TC_HEAD(floorf_zero_pos, tc)
    487      1.7  jruoho {
    488      1.7  jruoho 	atf_tc_set_md_var(tc, "descr", "Test floorf(+0.0) == +0.0");
    489      1.7  jruoho }
    490      1.7  jruoho 
    491      1.7  jruoho ATF_TC_BODY(floorf_zero_pos, tc)
    492      1.7  jruoho {
    493      1.7  jruoho 	const float x = 0.0L;
    494      1.7  jruoho 	float y = floorf(x);
    495      1.7  jruoho 
    496      1.7  jruoho 	if (fabsf(y) > 0.0 || signbit(y) != 0)
    497      1.7  jruoho 		atf_tc_fail_nonfatal("floorf(+0.0) != +0.0");
    498  1.7.2.1    yamt }
    499  1.7.2.1    yamt 
    500  1.7.2.1    yamt /*
    501  1.7.2.1    yamt  * floorl(3)
    502  1.7.2.1    yamt  */
    503  1.7.2.1    yamt ATF_TC(floorl_basic);
    504  1.7.2.1    yamt ATF_TC_HEAD(floorl_basic, tc)
    505  1.7.2.1    yamt {
    506  1.7.2.1    yamt 	atf_tc_set_md_var(tc, "descr", "A basic test of floorl(3)");
    507  1.7.2.1    yamt }
    508  1.7.2.1    yamt 
    509  1.7.2.1    yamt ATF_TC_BODY(floorl_basic, tc)
    510  1.7.2.1    yamt {
    511  1.7.2.1    yamt 	const long double x = 0.9999999;
    512  1.7.2.1    yamt 	const long double y = 0.0000001;
    513  1.7.2.1    yamt 
    514  1.7.2.1    yamt 	ATF_CHECK(floorl(x) < SMALL_NUM);
    515  1.7.2.1    yamt 	ATF_CHECK(floorl(y) < SMALL_NUM);
    516  1.7.2.1    yamt }
    517  1.7.2.1    yamt 
    518  1.7.2.1    yamt ATF_TC(floorl_nan);
    519  1.7.2.1    yamt ATF_TC_HEAD(floorl_nan, tc)
    520  1.7.2.1    yamt {
    521  1.7.2.1    yamt 	atf_tc_set_md_var(tc, "descr", "Test floorl(NaN) == NaN");
    522  1.7.2.1    yamt }
    523  1.7.2.1    yamt 
    524  1.7.2.1    yamt ATF_TC_BODY(floorl_nan, tc)
    525  1.7.2.1    yamt {
    526  1.7.2.1    yamt 	const long double x = 0.0L / 0.0L;
    527  1.7.2.1    yamt 
    528  1.7.2.1    yamt 	ATF_CHECK(isnan(floorl(x)) != 0);
    529  1.7.2.1    yamt }
    530  1.7.2.1    yamt 
    531  1.7.2.1    yamt ATF_TC(floorl_inf_neg);
    532  1.7.2.1    yamt ATF_TC_HEAD(floorl_inf_neg, tc)
    533  1.7.2.1    yamt {
    534  1.7.2.1    yamt 	atf_tc_set_md_var(tc, "descr", "Test floorl(-Inf) == -Inf");
    535  1.7.2.1    yamt }
    536  1.7.2.1    yamt 
    537  1.7.2.1    yamt ATF_TC_BODY(floorl_inf_neg, tc)
    538  1.7.2.1    yamt {
    539  1.7.2.1    yamt 	const long double x = -1.0L / 0.0L;
    540  1.7.2.1    yamt 	long double y = floorl(x);
    541  1.7.2.1    yamt 
    542  1.7.2.1    yamt 	if (isinf(y) == 0 || signbit(y) == 0)
    543  1.7.2.1    yamt 		atf_tc_fail_nonfatal("floorl(-Inf) != -Inf");
    544  1.7.2.1    yamt }
    545  1.7.2.1    yamt 
    546  1.7.2.1    yamt ATF_TC(floorl_inf_pos);
    547  1.7.2.1    yamt ATF_TC_HEAD(floorl_inf_pos, tc)
    548  1.7.2.1    yamt {
    549  1.7.2.1    yamt 	atf_tc_set_md_var(tc, "descr", "Test floorl(+Inf) == +Inf");
    550  1.7.2.1    yamt }
    551  1.7.2.1    yamt 
    552  1.7.2.1    yamt ATF_TC_BODY(floorl_inf_pos, tc)
    553  1.7.2.1    yamt {
    554  1.7.2.1    yamt 	const long double x = 1.0L / 0.0L;
    555  1.7.2.1    yamt 	long double y = floorl(x);
    556  1.7.2.1    yamt 
    557  1.7.2.1    yamt 	if (isinf(y) == 0 || signbit(y) != 0)
    558  1.7.2.1    yamt 		atf_tc_fail_nonfatal("floorl(+Inf) != +Inf");
    559  1.7.2.1    yamt }
    560  1.7.2.1    yamt 
    561  1.7.2.1    yamt ATF_TC(floorl_zero_neg);
    562  1.7.2.1    yamt ATF_TC_HEAD(floorl_zero_neg, tc)
    563  1.7.2.1    yamt {
    564  1.7.2.1    yamt 	atf_tc_set_md_var(tc, "descr", "Test floorl(-0.0) == -0.0");
    565  1.7.2.1    yamt }
    566  1.7.2.1    yamt 
    567  1.7.2.1    yamt ATF_TC_BODY(floorl_zero_neg, tc)
    568  1.7.2.1    yamt {
    569  1.7.2.1    yamt 	const long double x = -0.0L;
    570  1.7.2.1    yamt 	long double y = floorl(x);
    571  1.7.2.1    yamt 
    572  1.7.2.1    yamt 	if (fabsl(y) > 0.0 || signbit(y) == 0)
    573  1.7.2.1    yamt 		atf_tc_fail_nonfatal("floorl(-0.0) != -0.0");
    574  1.7.2.1    yamt }
    575  1.7.2.1    yamt 
    576  1.7.2.1    yamt ATF_TC(floorl_zero_pos);
    577  1.7.2.1    yamt ATF_TC_HEAD(floorl_zero_pos, tc)
    578  1.7.2.1    yamt {
    579  1.7.2.1    yamt 	atf_tc_set_md_var(tc, "descr", "Test floorl(+0.0) == +0.0");
    580  1.7.2.1    yamt }
    581  1.7.2.1    yamt 
    582  1.7.2.1    yamt ATF_TC_BODY(floorl_zero_pos, tc)
    583  1.7.2.1    yamt {
    584  1.7.2.1    yamt 	const long double x = 0.0L;
    585  1.7.2.1    yamt 	long double y = floorl(x);
    586  1.7.2.1    yamt 
    587  1.7.2.1    yamt 	if (fabsl(y) > 0.0 || signbit(y) != 0)
    588  1.7.2.1    yamt 		atf_tc_fail_nonfatal("floorl(+0.0) != +0.0");
    589  1.7.2.1    yamt }
    590  1.7.2.1    yamt 
    591  1.7.2.1    yamt /*
    592  1.7.2.1    yamt  * trunc(3)
    593  1.7.2.1    yamt  */
    594  1.7.2.1    yamt ATF_TC(trunc_basic);
    595  1.7.2.1    yamt ATF_TC_HEAD(trunc_basic, tc)
    596  1.7.2.1    yamt {
    597  1.7.2.1    yamt 	atf_tc_set_md_var(tc, "descr", "A basic test of trunc(3)");
    598  1.7.2.1    yamt }
    599  1.7.2.1    yamt 
    600  1.7.2.1    yamt ATF_TC_BODY(trunc_basic, tc)
    601  1.7.2.1    yamt {
    602  1.7.2.1    yamt 	const double x = 0.999999999999999;
    603  1.7.2.1    yamt 	const double y = 0.000000000000001;
    604  1.7.2.1    yamt 
    605  1.7.2.1    yamt 	ATF_CHECK(trunc(x) < SMALL_NUM);
    606  1.7.2.1    yamt 	ATF_CHECK(trunc(y) < SMALL_NUM);
    607  1.7.2.1    yamt }
    608  1.7.2.1    yamt 
    609  1.7.2.1    yamt ATF_TC(trunc_nan);
    610  1.7.2.1    yamt ATF_TC_HEAD(trunc_nan, tc)
    611  1.7.2.1    yamt {
    612  1.7.2.1    yamt 	atf_tc_set_md_var(tc, "descr", "Test trunc(NaN) == NaN");
    613  1.7.2.1    yamt }
    614  1.7.2.1    yamt 
    615  1.7.2.1    yamt ATF_TC_BODY(trunc_nan, tc)
    616  1.7.2.1    yamt {
    617  1.7.2.1    yamt 	const double x = 0.0L / 0.0L;
    618  1.7.2.1    yamt 
    619  1.7.2.1    yamt 	ATF_CHECK(isnan(trunc(x)) != 0);
    620  1.7.2.1    yamt }
    621  1.7.2.1    yamt 
    622  1.7.2.1    yamt ATF_TC(trunc_inf_neg);
    623  1.7.2.1    yamt ATF_TC_HEAD(trunc_inf_neg, tc)
    624  1.7.2.1    yamt {
    625  1.7.2.1    yamt 	atf_tc_set_md_var(tc, "descr", "Test trunc(-Inf) == -Inf");
    626  1.7.2.1    yamt }
    627  1.7.2.1    yamt 
    628  1.7.2.1    yamt ATF_TC_BODY(trunc_inf_neg, tc)
    629  1.7.2.1    yamt {
    630  1.7.2.1    yamt 	const double x = -1.0L / 0.0L;
    631  1.7.2.1    yamt 	double y = trunc(x);
    632  1.7.2.1    yamt 
    633  1.7.2.1    yamt 	if (isinf(y) == 0 || signbit(y) == 0)
    634  1.7.2.1    yamt 		atf_tc_fail_nonfatal("trunc(-Inf) != -Inf");
    635  1.7.2.1    yamt }
    636  1.7.2.1    yamt 
    637  1.7.2.1    yamt ATF_TC(trunc_inf_pos);
    638  1.7.2.1    yamt ATF_TC_HEAD(trunc_inf_pos, tc)
    639  1.7.2.1    yamt {
    640  1.7.2.1    yamt 	atf_tc_set_md_var(tc, "descr", "Test trunc(+Inf) == +Inf");
    641  1.7.2.1    yamt }
    642  1.7.2.1    yamt 
    643  1.7.2.1    yamt ATF_TC_BODY(trunc_inf_pos, tc)
    644  1.7.2.1    yamt {
    645  1.7.2.1    yamt 	const double x = 1.0L / 0.0L;
    646  1.7.2.1    yamt 	double y = trunc(x);
    647  1.7.2.1    yamt 
    648  1.7.2.1    yamt 	if (isinf(y) == 0 || signbit(y) != 0)
    649  1.7.2.1    yamt 		atf_tc_fail_nonfatal("trunc(+Inf) != +Inf");
    650  1.7.2.1    yamt }
    651  1.7.2.1    yamt 
    652  1.7.2.1    yamt ATF_TC(trunc_zero_neg);
    653  1.7.2.1    yamt ATF_TC_HEAD(trunc_zero_neg, tc)
    654  1.7.2.1    yamt {
    655  1.7.2.1    yamt 	atf_tc_set_md_var(tc, "descr", "Test trunc(-0.0) == -0.0");
    656  1.7.2.1    yamt }
    657  1.7.2.1    yamt 
    658  1.7.2.1    yamt ATF_TC_BODY(trunc_zero_neg, tc)
    659  1.7.2.1    yamt {
    660  1.7.2.1    yamt 	const double x = -0.0L;
    661  1.7.2.1    yamt 	double y = trunc(x);
    662  1.7.2.1    yamt 
    663  1.7.2.1    yamt 	if (fabs(y) > 0.0 || signbit(y) == 0)
    664  1.7.2.1    yamt 		atf_tc_fail_nonfatal("trunc(-0.0) != -0.0");
    665  1.7.2.1    yamt }
    666  1.7.2.1    yamt 
    667  1.7.2.1    yamt ATF_TC(trunc_zero_pos);
    668  1.7.2.1    yamt ATF_TC_HEAD(trunc_zero_pos, tc)
    669  1.7.2.1    yamt {
    670  1.7.2.1    yamt 	atf_tc_set_md_var(tc, "descr", "Test trunc(+0.0) == +0.0");
    671  1.7.2.1    yamt }
    672  1.7.2.1    yamt 
    673  1.7.2.1    yamt ATF_TC_BODY(trunc_zero_pos, tc)
    674  1.7.2.1    yamt {
    675  1.7.2.1    yamt 	const double x = 0.0L;
    676  1.7.2.1    yamt 	double y = trunc(x);
    677  1.7.2.1    yamt 
    678  1.7.2.1    yamt 	if (fabs(y) > 0.0 || signbit(y) != 0)
    679  1.7.2.1    yamt 		atf_tc_fail_nonfatal("trunc(+0.0) != +0.0");
    680  1.7.2.1    yamt }
    681  1.7.2.1    yamt 
    682  1.7.2.1    yamt /*
    683  1.7.2.1    yamt  * truncf(3)
    684  1.7.2.1    yamt  */
    685  1.7.2.1    yamt ATF_TC(truncf_basic);
    686  1.7.2.1    yamt ATF_TC_HEAD(truncf_basic, tc)
    687  1.7.2.1    yamt {
    688  1.7.2.1    yamt 	atf_tc_set_md_var(tc, "descr", "A basic test of truncf(3)");
    689  1.7.2.1    yamt }
    690  1.7.2.1    yamt 
    691  1.7.2.1    yamt ATF_TC_BODY(truncf_basic, tc)
    692  1.7.2.1    yamt {
    693  1.7.2.1    yamt 	const float x = 0.9999999;
    694  1.7.2.1    yamt 	const float y = 0.0000001;
    695  1.7.2.1    yamt 
    696  1.7.2.1    yamt 	ATF_CHECK(truncf(x) < SMALL_NUM);
    697  1.7.2.1    yamt 	ATF_CHECK(truncf(y) < SMALL_NUM);
    698  1.7.2.1    yamt }
    699  1.7.2.1    yamt 
    700  1.7.2.1    yamt ATF_TC(truncf_nan);
    701  1.7.2.1    yamt ATF_TC_HEAD(truncf_nan, tc)
    702  1.7.2.1    yamt {
    703  1.7.2.1    yamt 	atf_tc_set_md_var(tc, "descr", "Test truncf(NaN) == NaN");
    704  1.7.2.1    yamt }
    705  1.7.2.1    yamt 
    706  1.7.2.1    yamt ATF_TC_BODY(truncf_nan, tc)
    707  1.7.2.1    yamt {
    708  1.7.2.1    yamt 	const float x = 0.0L / 0.0L;
    709  1.7.2.1    yamt 
    710  1.7.2.1    yamt 	ATF_CHECK(isnan(truncf(x)) != 0);
    711  1.7.2.1    yamt }
    712  1.7.2.1    yamt 
    713  1.7.2.1    yamt ATF_TC(truncf_inf_neg);
    714  1.7.2.1    yamt ATF_TC_HEAD(truncf_inf_neg, tc)
    715  1.7.2.1    yamt {
    716  1.7.2.1    yamt 	atf_tc_set_md_var(tc, "descr", "Test truncf(-Inf) == -Inf");
    717  1.7.2.1    yamt }
    718  1.7.2.1    yamt 
    719  1.7.2.1    yamt ATF_TC_BODY(truncf_inf_neg, tc)
    720  1.7.2.1    yamt {
    721  1.7.2.1    yamt 	const float x = -1.0L / 0.0L;
    722  1.7.2.1    yamt 	float y = truncf(x);
    723  1.7.2.1    yamt 
    724  1.7.2.1    yamt 	if (isinf(y) == 0 || signbit(y) == 0)
    725  1.7.2.1    yamt 		atf_tc_fail_nonfatal("truncf(-Inf) != -Inf");
    726  1.7.2.1    yamt }
    727  1.7.2.1    yamt 
    728  1.7.2.1    yamt ATF_TC(truncf_inf_pos);
    729  1.7.2.1    yamt ATF_TC_HEAD(truncf_inf_pos, tc)
    730  1.7.2.1    yamt {
    731  1.7.2.1    yamt 	atf_tc_set_md_var(tc, "descr", "Test truncf(+Inf) == +Inf");
    732  1.7.2.1    yamt }
    733  1.7.2.1    yamt 
    734  1.7.2.1    yamt ATF_TC_BODY(truncf_inf_pos, tc)
    735  1.7.2.1    yamt {
    736  1.7.2.1    yamt 	const float x = 1.0L / 0.0L;
    737  1.7.2.1    yamt 	float y = truncf(x);
    738  1.7.2.1    yamt 
    739  1.7.2.1    yamt 	if (isinf(y) == 0 || signbit(y) != 0)
    740  1.7.2.1    yamt 		atf_tc_fail_nonfatal("truncf(+Inf) != +Inf");
    741  1.7.2.1    yamt }
    742  1.7.2.1    yamt 
    743  1.7.2.1    yamt ATF_TC(truncf_zero_neg);
    744  1.7.2.1    yamt ATF_TC_HEAD(truncf_zero_neg, tc)
    745  1.7.2.1    yamt {
    746  1.7.2.1    yamt 	atf_tc_set_md_var(tc, "descr", "Test truncf(-0.0) == -0.0");
    747  1.7.2.1    yamt }
    748  1.7.2.1    yamt 
    749  1.7.2.1    yamt ATF_TC_BODY(truncf_zero_neg, tc)
    750  1.7.2.1    yamt {
    751  1.7.2.1    yamt 	const float x = -0.0L;
    752  1.7.2.1    yamt 	float y = truncf(x);
    753  1.7.2.1    yamt 
    754  1.7.2.1    yamt 	if (fabsf(y) > 0.0 || signbit(y) == 0)
    755  1.7.2.1    yamt 		atf_tc_fail_nonfatal("truncf(-0.0) != -0.0");
    756  1.7.2.1    yamt }
    757  1.7.2.1    yamt 
    758  1.7.2.1    yamt ATF_TC(truncf_zero_pos);
    759  1.7.2.1    yamt ATF_TC_HEAD(truncf_zero_pos, tc)
    760  1.7.2.1    yamt {
    761  1.7.2.1    yamt 	atf_tc_set_md_var(tc, "descr", "Test truncf(+0.0) == +0.0");
    762  1.7.2.1    yamt }
    763  1.7.2.1    yamt 
    764  1.7.2.1    yamt ATF_TC_BODY(truncf_zero_pos, tc)
    765  1.7.2.1    yamt {
    766  1.7.2.1    yamt 	const float x = 0.0L;
    767  1.7.2.1    yamt 	float y = truncf(x);
    768  1.7.2.1    yamt 
    769  1.7.2.1    yamt 	if (fabsf(y) > 0.0 || signbit(y) != 0)
    770  1.7.2.1    yamt 		atf_tc_fail_nonfatal("truncf(+0.0) != +0.0");
    771  1.7.2.1    yamt }
    772  1.7.2.1    yamt 
    773  1.7.2.1    yamt /*
    774  1.7.2.1    yamt  * truncl(3)
    775  1.7.2.1    yamt  */
    776  1.7.2.1    yamt ATF_TC(truncl_basic);
    777  1.7.2.1    yamt ATF_TC_HEAD(truncl_basic, tc)
    778  1.7.2.1    yamt {
    779  1.7.2.1    yamt 	atf_tc_set_md_var(tc, "descr", "A basic test of truncl(3)");
    780  1.7.2.1    yamt }
    781  1.7.2.1    yamt 
    782  1.7.2.1    yamt ATF_TC_BODY(truncl_basic, tc)
    783  1.7.2.1    yamt {
    784  1.7.2.1    yamt 	const long double x = 0.9999999;
    785  1.7.2.1    yamt 	const long double y = 0.0000001;
    786  1.7.2.1    yamt 
    787  1.7.2.1    yamt 	ATF_CHECK(truncl(x) < SMALL_NUM);
    788  1.7.2.1    yamt 	ATF_CHECK(truncl(y) < SMALL_NUM);
    789  1.7.2.1    yamt }
    790  1.7.2.1    yamt 
    791  1.7.2.1    yamt ATF_TC(truncl_nan);
    792  1.7.2.1    yamt ATF_TC_HEAD(truncl_nan, tc)
    793  1.7.2.1    yamt {
    794  1.7.2.1    yamt 	atf_tc_set_md_var(tc, "descr", "Test truncl(NaN) == NaN");
    795  1.7.2.1    yamt }
    796  1.7.2.1    yamt 
    797  1.7.2.1    yamt ATF_TC_BODY(truncl_nan, tc)
    798  1.7.2.1    yamt {
    799  1.7.2.1    yamt 	const long double x = 0.0L / 0.0L;
    800  1.7.2.1    yamt 
    801  1.7.2.1    yamt 	ATF_CHECK(isnan(truncl(x)) != 0);
    802  1.7.2.1    yamt }
    803  1.7.2.1    yamt 
    804  1.7.2.1    yamt ATF_TC(truncl_inf_neg);
    805  1.7.2.1    yamt ATF_TC_HEAD(truncl_inf_neg, tc)
    806  1.7.2.1    yamt {
    807  1.7.2.1    yamt 	atf_tc_set_md_var(tc, "descr", "Test truncl(-Inf) == -Inf");
    808  1.7.2.1    yamt }
    809  1.7.2.1    yamt 
    810  1.7.2.1    yamt ATF_TC_BODY(truncl_inf_neg, tc)
    811  1.7.2.1    yamt {
    812  1.7.2.1    yamt 	const long double x = -1.0L / 0.0L;
    813  1.7.2.1    yamt 	long double y = truncl(x);
    814  1.7.2.1    yamt 
    815  1.7.2.1    yamt 	if (isinf(y) == 0 || signbit(y) == 0)
    816  1.7.2.1    yamt 		atf_tc_fail_nonfatal("truncl(-Inf) != -Inf");
    817  1.7.2.1    yamt }
    818  1.7.2.1    yamt 
    819  1.7.2.1    yamt ATF_TC(truncl_inf_pos);
    820  1.7.2.1    yamt ATF_TC_HEAD(truncl_inf_pos, tc)
    821  1.7.2.1    yamt {
    822  1.7.2.1    yamt 	atf_tc_set_md_var(tc, "descr", "Test truncl(+Inf) == +Inf");
    823  1.7.2.1    yamt }
    824  1.7.2.1    yamt 
    825  1.7.2.1    yamt ATF_TC_BODY(truncl_inf_pos, tc)
    826  1.7.2.1    yamt {
    827  1.7.2.1    yamt 	const long double x = 1.0L / 0.0L;
    828  1.7.2.1    yamt 	long double y = truncl(x);
    829  1.7.2.1    yamt 
    830  1.7.2.1    yamt 	if (isinf(y) == 0 || signbit(y) != 0)
    831  1.7.2.1    yamt 		atf_tc_fail_nonfatal("truncl(+Inf) != +Inf");
    832  1.7.2.1    yamt }
    833  1.7.2.1    yamt 
    834  1.7.2.1    yamt ATF_TC(truncl_zero_neg);
    835  1.7.2.1    yamt ATF_TC_HEAD(truncl_zero_neg, tc)
    836  1.7.2.1    yamt {
    837  1.7.2.1    yamt 	atf_tc_set_md_var(tc, "descr", "Test truncl(-0.0) == -0.0");
    838  1.7.2.1    yamt }
    839  1.7.2.1    yamt 
    840  1.7.2.1    yamt ATF_TC_BODY(truncl_zero_neg, tc)
    841  1.7.2.1    yamt {
    842  1.7.2.1    yamt 	const long double x = -0.0L;
    843  1.7.2.1    yamt 	long double y = truncl(x);
    844  1.7.2.1    yamt 
    845  1.7.2.1    yamt 	if (fabsl(y) > 0.0 || signbit(y) == 0)
    846  1.7.2.1    yamt 		atf_tc_fail_nonfatal("truncl(-0.0) != -0.0");
    847  1.7.2.1    yamt }
    848  1.7.2.1    yamt 
    849  1.7.2.1    yamt ATF_TC(truncl_zero_pos);
    850  1.7.2.1    yamt ATF_TC_HEAD(truncl_zero_pos, tc)
    851  1.7.2.1    yamt {
    852  1.7.2.1    yamt 	atf_tc_set_md_var(tc, "descr", "Test truncl(+0.0) == +0.0");
    853  1.7.2.1    yamt }
    854  1.7.2.1    yamt 
    855  1.7.2.1    yamt ATF_TC_BODY(truncl_zero_pos, tc)
    856  1.7.2.1    yamt {
    857  1.7.2.1    yamt 	const long double x = 0.0L;
    858  1.7.2.1    yamt 	long double y = truncl(x);
    859  1.7.2.1    yamt 
    860  1.7.2.1    yamt 	if (fabsl(y) > 0.0 || signbit(y) != 0)
    861  1.7.2.1    yamt 		atf_tc_fail_nonfatal("truncl(+0.0) != +0.0");
    862      1.7  jruoho }
    863      1.7  jruoho 
    864      1.1  jruoho ATF_TP_ADD_TCS(tp)
    865      1.1  jruoho {
    866      1.5  jruoho 
    867      1.5  jruoho 	ATF_TP_ADD_TC(tp, ceil_basic);
    868      1.7  jruoho 	ATF_TP_ADD_TC(tp, ceil_nan);
    869      1.7  jruoho 	ATF_TP_ADD_TC(tp, ceil_inf_neg);
    870      1.7  jruoho 	ATF_TP_ADD_TC(tp, ceil_inf_pos);
    871      1.7  jruoho 	ATF_TP_ADD_TC(tp, ceil_zero_neg);
    872      1.7  jruoho 	ATF_TP_ADD_TC(tp, ceil_zero_pos);
    873      1.7  jruoho 
    874      1.5  jruoho 	ATF_TP_ADD_TC(tp, ceilf_basic);
    875      1.7  jruoho 	ATF_TP_ADD_TC(tp, ceilf_nan);
    876      1.7  jruoho 	ATF_TP_ADD_TC(tp, ceilf_inf_neg);
    877      1.7  jruoho 	ATF_TP_ADD_TC(tp, ceilf_inf_pos);
    878      1.7  jruoho 	ATF_TP_ADD_TC(tp, ceilf_zero_neg);
    879      1.7  jruoho 	ATF_TP_ADD_TC(tp, ceilf_zero_pos);
    880      1.7  jruoho 
    881  1.7.2.1    yamt 	ATF_TP_ADD_TC(tp, ceill_basic);
    882  1.7.2.1    yamt 	ATF_TP_ADD_TC(tp, ceill_nan);
    883  1.7.2.1    yamt 	ATF_TP_ADD_TC(tp, ceill_inf_neg);
    884  1.7.2.1    yamt 	ATF_TP_ADD_TC(tp, ceill_inf_pos);
    885  1.7.2.1    yamt 	ATF_TP_ADD_TC(tp, ceill_zero_neg);
    886  1.7.2.1    yamt 	ATF_TP_ADD_TC(tp, ceill_zero_pos);
    887  1.7.2.1    yamt 
    888      1.6  jruoho 	ATF_TP_ADD_TC(tp, floor_basic);
    889      1.7  jruoho 	ATF_TP_ADD_TC(tp, floor_nan);
    890      1.7  jruoho 	ATF_TP_ADD_TC(tp, floor_inf_neg);
    891      1.7  jruoho 	ATF_TP_ADD_TC(tp, floor_inf_pos);
    892      1.7  jruoho 	ATF_TP_ADD_TC(tp, floor_zero_neg);
    893      1.7  jruoho 	ATF_TP_ADD_TC(tp, floor_zero_pos);
    894      1.7  jruoho 
    895      1.5  jruoho 	ATF_TP_ADD_TC(tp, floorf_basic);
    896      1.7  jruoho 	ATF_TP_ADD_TC(tp, floorf_nan);
    897      1.7  jruoho 	ATF_TP_ADD_TC(tp, floorf_inf_neg);
    898      1.7  jruoho 	ATF_TP_ADD_TC(tp, floorf_inf_pos);
    899      1.7  jruoho 	ATF_TP_ADD_TC(tp, floorf_zero_neg);
    900      1.7  jruoho 	ATF_TP_ADD_TC(tp, floorf_zero_pos);
    901      1.1  jruoho 
    902  1.7.2.1    yamt 	ATF_TP_ADD_TC(tp, floorl_basic);
    903  1.7.2.1    yamt 	ATF_TP_ADD_TC(tp, floorl_nan);
    904  1.7.2.1    yamt 	ATF_TP_ADD_TC(tp, floorl_inf_neg);
    905  1.7.2.1    yamt 	ATF_TP_ADD_TC(tp, floorl_inf_pos);
    906  1.7.2.1    yamt 	ATF_TP_ADD_TC(tp, floorl_zero_neg);
    907  1.7.2.1    yamt 	ATF_TP_ADD_TC(tp, floorl_zero_pos);
    908  1.7.2.1    yamt 
    909  1.7.2.1    yamt 	ATF_TP_ADD_TC(tp, trunc_basic);
    910  1.7.2.1    yamt 	ATF_TP_ADD_TC(tp, trunc_nan);
    911  1.7.2.1    yamt 	ATF_TP_ADD_TC(tp, trunc_inf_neg);
    912  1.7.2.1    yamt 	ATF_TP_ADD_TC(tp, trunc_inf_pos);
    913  1.7.2.1    yamt 	ATF_TP_ADD_TC(tp, trunc_zero_neg);
    914  1.7.2.1    yamt 	ATF_TP_ADD_TC(tp, trunc_zero_pos);
    915  1.7.2.1    yamt 
    916  1.7.2.1    yamt 	ATF_TP_ADD_TC(tp, truncf_basic);
    917  1.7.2.1    yamt 	ATF_TP_ADD_TC(tp, truncf_nan);
    918  1.7.2.1    yamt 	ATF_TP_ADD_TC(tp, truncf_inf_neg);
    919  1.7.2.1    yamt 	ATF_TP_ADD_TC(tp, truncf_inf_pos);
    920  1.7.2.1    yamt 	ATF_TP_ADD_TC(tp, truncf_zero_neg);
    921  1.7.2.1    yamt 	ATF_TP_ADD_TC(tp, truncf_zero_pos);
    922  1.7.2.1    yamt 
    923  1.7.2.1    yamt 	ATF_TP_ADD_TC(tp, truncl_basic);
    924  1.7.2.1    yamt 	ATF_TP_ADD_TC(tp, truncl_nan);
    925  1.7.2.1    yamt 	ATF_TP_ADD_TC(tp, truncl_inf_neg);
    926  1.7.2.1    yamt 	ATF_TP_ADD_TC(tp, truncl_inf_pos);
    927  1.7.2.1    yamt 	ATF_TP_ADD_TC(tp, truncl_zero_neg);
    928  1.7.2.1    yamt 	ATF_TP_ADD_TC(tp, truncl_zero_pos);
    929  1.7.2.1    yamt 
    930      1.1  jruoho 	return atf_no_error();
    931      1.1  jruoho }
    932