Home | History | Annotate | Line # | Download | only in libm
      1  1.10  martin /* $NetBSD: t_ceil.c,v 1.10 2014/03/03 10:39:08 martin 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.10  martin __RCSID("$NetBSD: t_ceil.c,v 1.10 2014/03/03 10:39:08 martin 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  jruoho }
    226   1.7  jruoho 
    227   1.7  jruoho /*
    228   1.8   joerg  * ceill(3)
    229   1.8   joerg  */
    230   1.8   joerg ATF_TC(ceill_basic);
    231   1.8   joerg ATF_TC_HEAD(ceill_basic, tc)
    232   1.8   joerg {
    233   1.8   joerg 	atf_tc_set_md_var(tc, "descr", "A basic test of ceill(3)");
    234   1.8   joerg }
    235   1.8   joerg 
    236   1.8   joerg ATF_TC_BODY(ceill_basic, tc)
    237   1.8   joerg {
    238   1.8   joerg 	const long double x = 0.9999999;
    239   1.8   joerg 	const long double y = 0.0000001;
    240   1.8   joerg 
    241   1.8   joerg 	ATF_CHECK(fabsl(ceill(x) - 1) < SMALL_NUM);
    242   1.8   joerg 	ATF_CHECK(fabsl(ceill(y) - 1) < SMALL_NUM);
    243   1.8   joerg }
    244   1.8   joerg 
    245   1.8   joerg ATF_TC(ceill_nan);
    246   1.8   joerg ATF_TC_HEAD(ceill_nan, tc)
    247   1.8   joerg {
    248   1.8   joerg 	atf_tc_set_md_var(tc, "descr", "Test ceill(NaN) == NaN");
    249   1.8   joerg }
    250   1.8   joerg 
    251   1.8   joerg ATF_TC_BODY(ceill_nan, tc)
    252   1.8   joerg {
    253   1.8   joerg 	const long double x = 0.0L / 0.0L;
    254   1.8   joerg 
    255   1.8   joerg 	ATF_CHECK(isnan(ceill(x)) != 0);
    256   1.8   joerg }
    257   1.8   joerg 
    258   1.8   joerg ATF_TC(ceill_inf_neg);
    259   1.8   joerg ATF_TC_HEAD(ceill_inf_neg, tc)
    260   1.8   joerg {
    261   1.8   joerg 	atf_tc_set_md_var(tc, "descr", "Test ceill(-Inf) == -Inf");
    262   1.8   joerg }
    263   1.8   joerg 
    264   1.8   joerg ATF_TC_BODY(ceill_inf_neg, tc)
    265   1.8   joerg {
    266   1.8   joerg 	const long double x = -1.0L / 0.0L;
    267   1.8   joerg 	long double y = ceill(x);
    268   1.8   joerg 
    269   1.8   joerg 	if (isinf(y) == 0 || signbit(y) == 0)
    270   1.8   joerg 		atf_tc_fail_nonfatal("ceill(-Inf) != -Inf");
    271   1.8   joerg }
    272   1.8   joerg 
    273   1.8   joerg ATF_TC(ceill_inf_pos);
    274   1.8   joerg ATF_TC_HEAD(ceill_inf_pos, tc)
    275   1.8   joerg {
    276   1.8   joerg 	atf_tc_set_md_var(tc, "descr", "Test ceill(+Inf) == +Inf");
    277   1.8   joerg }
    278   1.8   joerg 
    279   1.8   joerg ATF_TC_BODY(ceill_inf_pos, tc)
    280   1.8   joerg {
    281   1.8   joerg 	const long double x = 1.0L / 0.0L;
    282   1.8   joerg 	long double y = ceill(x);
    283   1.8   joerg 
    284   1.8   joerg 	if (isinf(y) == 0 || signbit(y) != 0)
    285   1.8   joerg 		atf_tc_fail_nonfatal("ceill(+Inf) != +Inf");
    286   1.8   joerg }
    287   1.8   joerg 
    288   1.8   joerg ATF_TC(ceill_zero_neg);
    289   1.8   joerg ATF_TC_HEAD(ceill_zero_neg, tc)
    290   1.8   joerg {
    291   1.8   joerg 	atf_tc_set_md_var(tc, "descr", "Test ceill(-0.0) == -0.0");
    292   1.8   joerg }
    293   1.8   joerg 
    294   1.8   joerg ATF_TC_BODY(ceill_zero_neg, tc)
    295   1.8   joerg {
    296   1.8   joerg 	const long double x = -0.0L;
    297   1.8   joerg 	long double y = ceill(x);
    298   1.8   joerg 
    299   1.8   joerg 	if (fabsl(y) > 0.0 || signbit(y) == 0)
    300   1.8   joerg 		atf_tc_fail_nonfatal("ceill(-0.0) != -0.0");
    301   1.8   joerg }
    302   1.8   joerg 
    303   1.8   joerg ATF_TC(ceill_zero_pos);
    304   1.8   joerg ATF_TC_HEAD(ceill_zero_pos, tc)
    305   1.8   joerg {
    306   1.8   joerg 	atf_tc_set_md_var(tc, "descr", "Test ceill(+0.0) == +0.0");
    307   1.8   joerg }
    308   1.8   joerg 
    309   1.8   joerg ATF_TC_BODY(ceill_zero_pos, tc)
    310   1.8   joerg {
    311   1.8   joerg 	const long double x = 0.0L;
    312   1.8   joerg 	long double y = ceill(x);
    313   1.8   joerg 
    314   1.8   joerg 	if (fabsl(y) > 0.0 || signbit(y) != 0)
    315   1.8   joerg 		atf_tc_fail_nonfatal("ceill(+0.0) != +0.0");
    316   1.8   joerg }
    317   1.8   joerg 
    318   1.8   joerg /*
    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  jruoho }
    499   1.7  jruoho 
    500   1.8   joerg /*
    501   1.8   joerg  * floorl(3)
    502   1.8   joerg  */
    503   1.8   joerg ATF_TC(floorl_basic);
    504   1.8   joerg ATF_TC_HEAD(floorl_basic, tc)
    505   1.8   joerg {
    506   1.8   joerg 	atf_tc_set_md_var(tc, "descr", "A basic test of floorl(3)");
    507   1.8   joerg }
    508   1.8   joerg 
    509   1.8   joerg ATF_TC_BODY(floorl_basic, tc)
    510   1.8   joerg {
    511   1.8   joerg 	const long double x = 0.9999999;
    512   1.8   joerg 	const long double y = 0.0000001;
    513   1.8   joerg 
    514   1.8   joerg 	ATF_CHECK(floorl(x) < SMALL_NUM);
    515   1.8   joerg 	ATF_CHECK(floorl(y) < SMALL_NUM);
    516   1.8   joerg }
    517   1.8   joerg 
    518   1.8   joerg ATF_TC(floorl_nan);
    519   1.8   joerg ATF_TC_HEAD(floorl_nan, tc)
    520   1.8   joerg {
    521   1.8   joerg 	atf_tc_set_md_var(tc, "descr", "Test floorl(NaN) == NaN");
    522   1.8   joerg }
    523   1.8   joerg 
    524   1.8   joerg ATF_TC_BODY(floorl_nan, tc)
    525   1.8   joerg {
    526   1.8   joerg 	const long double x = 0.0L / 0.0L;
    527   1.8   joerg 
    528   1.8   joerg 	ATF_CHECK(isnan(floorl(x)) != 0);
    529   1.8   joerg }
    530   1.8   joerg 
    531   1.8   joerg ATF_TC(floorl_inf_neg);
    532   1.8   joerg ATF_TC_HEAD(floorl_inf_neg, tc)
    533   1.8   joerg {
    534   1.8   joerg 	atf_tc_set_md_var(tc, "descr", "Test floorl(-Inf) == -Inf");
    535   1.8   joerg }
    536   1.8   joerg 
    537   1.8   joerg ATF_TC_BODY(floorl_inf_neg, tc)
    538   1.8   joerg {
    539   1.8   joerg 	const long double x = -1.0L / 0.0L;
    540   1.8   joerg 	long double y = floorl(x);
    541   1.8   joerg 
    542   1.8   joerg 	if (isinf(y) == 0 || signbit(y) == 0)
    543   1.8   joerg 		atf_tc_fail_nonfatal("floorl(-Inf) != -Inf");
    544   1.8   joerg }
    545   1.8   joerg 
    546   1.8   joerg ATF_TC(floorl_inf_pos);
    547   1.8   joerg ATF_TC_HEAD(floorl_inf_pos, tc)
    548   1.8   joerg {
    549   1.8   joerg 	atf_tc_set_md_var(tc, "descr", "Test floorl(+Inf) == +Inf");
    550   1.8   joerg }
    551   1.8   joerg 
    552   1.8   joerg ATF_TC_BODY(floorl_inf_pos, tc)
    553   1.8   joerg {
    554   1.8   joerg 	const long double x = 1.0L / 0.0L;
    555   1.8   joerg 	long double y = floorl(x);
    556   1.8   joerg 
    557   1.8   joerg 	if (isinf(y) == 0 || signbit(y) != 0)
    558   1.8   joerg 		atf_tc_fail_nonfatal("floorl(+Inf) != +Inf");
    559   1.8   joerg }
    560   1.8   joerg 
    561   1.8   joerg ATF_TC(floorl_zero_neg);
    562   1.8   joerg ATF_TC_HEAD(floorl_zero_neg, tc)
    563   1.8   joerg {
    564   1.8   joerg 	atf_tc_set_md_var(tc, "descr", "Test floorl(-0.0) == -0.0");
    565   1.8   joerg }
    566   1.8   joerg 
    567   1.8   joerg ATF_TC_BODY(floorl_zero_neg, tc)
    568   1.8   joerg {
    569   1.8   joerg 	const long double x = -0.0L;
    570   1.8   joerg 	long double y = floorl(x);
    571   1.8   joerg 
    572   1.8   joerg 	if (fabsl(y) > 0.0 || signbit(y) == 0)
    573   1.8   joerg 		atf_tc_fail_nonfatal("floorl(-0.0) != -0.0");
    574   1.8   joerg }
    575   1.8   joerg 
    576   1.8   joerg ATF_TC(floorl_zero_pos);
    577   1.8   joerg ATF_TC_HEAD(floorl_zero_pos, tc)
    578   1.8   joerg {
    579   1.8   joerg 	atf_tc_set_md_var(tc, "descr", "Test floorl(+0.0) == +0.0");
    580   1.8   joerg }
    581   1.8   joerg 
    582   1.8   joerg ATF_TC_BODY(floorl_zero_pos, tc)
    583   1.8   joerg {
    584   1.8   joerg 	const long double x = 0.0L;
    585   1.8   joerg 	long double y = floorl(x);
    586   1.8   joerg 
    587   1.8   joerg 	if (fabsl(y) > 0.0 || signbit(y) != 0)
    588   1.8   joerg 		atf_tc_fail_nonfatal("floorl(+0.0) != +0.0");
    589   1.8   joerg }
    590   1.8   joerg 
    591   1.9   joerg /*
    592   1.9   joerg  * trunc(3)
    593   1.9   joerg  */
    594   1.9   joerg ATF_TC(trunc_basic);
    595   1.9   joerg ATF_TC_HEAD(trunc_basic, tc)
    596   1.9   joerg {
    597   1.9   joerg 	atf_tc_set_md_var(tc, "descr", "A basic test of trunc(3)");
    598   1.9   joerg }
    599   1.9   joerg 
    600   1.9   joerg ATF_TC_BODY(trunc_basic, tc)
    601   1.9   joerg {
    602   1.9   joerg 	const double x = 0.999999999999999;
    603   1.9   joerg 	const double y = 0.000000000000001;
    604   1.9   joerg 
    605   1.9   joerg 	ATF_CHECK(trunc(x) < SMALL_NUM);
    606   1.9   joerg 	ATF_CHECK(trunc(y) < SMALL_NUM);
    607   1.9   joerg }
    608   1.9   joerg 
    609   1.9   joerg ATF_TC(trunc_nan);
    610   1.9   joerg ATF_TC_HEAD(trunc_nan, tc)
    611   1.9   joerg {
    612   1.9   joerg 	atf_tc_set_md_var(tc, "descr", "Test trunc(NaN) == NaN");
    613   1.9   joerg }
    614   1.9   joerg 
    615   1.9   joerg ATF_TC_BODY(trunc_nan, tc)
    616   1.9   joerg {
    617   1.9   joerg 	const double x = 0.0L / 0.0L;
    618   1.9   joerg 
    619   1.9   joerg 	ATF_CHECK(isnan(trunc(x)) != 0);
    620   1.9   joerg }
    621   1.9   joerg 
    622   1.9   joerg ATF_TC(trunc_inf_neg);
    623   1.9   joerg ATF_TC_HEAD(trunc_inf_neg, tc)
    624   1.9   joerg {
    625   1.9   joerg 	atf_tc_set_md_var(tc, "descr", "Test trunc(-Inf) == -Inf");
    626   1.9   joerg }
    627   1.9   joerg 
    628   1.9   joerg ATF_TC_BODY(trunc_inf_neg, tc)
    629   1.9   joerg {
    630   1.9   joerg 	const double x = -1.0L / 0.0L;
    631   1.9   joerg 	double y = trunc(x);
    632   1.9   joerg 
    633   1.9   joerg 	if (isinf(y) == 0 || signbit(y) == 0)
    634   1.9   joerg 		atf_tc_fail_nonfatal("trunc(-Inf) != -Inf");
    635   1.9   joerg }
    636   1.9   joerg 
    637   1.9   joerg ATF_TC(trunc_inf_pos);
    638   1.9   joerg ATF_TC_HEAD(trunc_inf_pos, tc)
    639   1.9   joerg {
    640   1.9   joerg 	atf_tc_set_md_var(tc, "descr", "Test trunc(+Inf) == +Inf");
    641   1.9   joerg }
    642   1.9   joerg 
    643   1.9   joerg ATF_TC_BODY(trunc_inf_pos, tc)
    644   1.9   joerg {
    645   1.9   joerg 	const double x = 1.0L / 0.0L;
    646   1.9   joerg 	double y = trunc(x);
    647   1.9   joerg 
    648   1.9   joerg 	if (isinf(y) == 0 || signbit(y) != 0)
    649   1.9   joerg 		atf_tc_fail_nonfatal("trunc(+Inf) != +Inf");
    650   1.9   joerg }
    651   1.9   joerg 
    652   1.9   joerg ATF_TC(trunc_zero_neg);
    653   1.9   joerg ATF_TC_HEAD(trunc_zero_neg, tc)
    654   1.9   joerg {
    655   1.9   joerg 	atf_tc_set_md_var(tc, "descr", "Test trunc(-0.0) == -0.0");
    656   1.9   joerg }
    657   1.9   joerg 
    658   1.9   joerg ATF_TC_BODY(trunc_zero_neg, tc)
    659   1.9   joerg {
    660   1.9   joerg 	const double x = -0.0L;
    661   1.9   joerg 	double y = trunc(x);
    662   1.9   joerg 
    663   1.9   joerg 	if (fabs(y) > 0.0 || signbit(y) == 0)
    664   1.9   joerg 		atf_tc_fail_nonfatal("trunc(-0.0) != -0.0");
    665   1.9   joerg }
    666   1.9   joerg 
    667   1.9   joerg ATF_TC(trunc_zero_pos);
    668   1.9   joerg ATF_TC_HEAD(trunc_zero_pos, tc)
    669   1.9   joerg {
    670   1.9   joerg 	atf_tc_set_md_var(tc, "descr", "Test trunc(+0.0) == +0.0");
    671   1.9   joerg }
    672   1.9   joerg 
    673   1.9   joerg ATF_TC_BODY(trunc_zero_pos, tc)
    674   1.9   joerg {
    675   1.9   joerg 	const double x = 0.0L;
    676   1.9   joerg 	double y = trunc(x);
    677   1.9   joerg 
    678   1.9   joerg 	if (fabs(y) > 0.0 || signbit(y) != 0)
    679   1.9   joerg 		atf_tc_fail_nonfatal("trunc(+0.0) != +0.0");
    680   1.9   joerg }
    681   1.9   joerg 
    682   1.9   joerg /*
    683   1.9   joerg  * truncf(3)
    684   1.9   joerg  */
    685   1.9   joerg ATF_TC(truncf_basic);
    686   1.9   joerg ATF_TC_HEAD(truncf_basic, tc)
    687   1.9   joerg {
    688   1.9   joerg 	atf_tc_set_md_var(tc, "descr", "A basic test of truncf(3)");
    689   1.9   joerg }
    690   1.9   joerg 
    691   1.9   joerg ATF_TC_BODY(truncf_basic, tc)
    692   1.9   joerg {
    693   1.9   joerg 	const float x = 0.9999999;
    694   1.9   joerg 	const float y = 0.0000001;
    695   1.9   joerg 
    696   1.9   joerg 	ATF_CHECK(truncf(x) < SMALL_NUM);
    697   1.9   joerg 	ATF_CHECK(truncf(y) < SMALL_NUM);
    698   1.9   joerg }
    699   1.9   joerg 
    700   1.9   joerg ATF_TC(truncf_nan);
    701   1.9   joerg ATF_TC_HEAD(truncf_nan, tc)
    702   1.9   joerg {
    703   1.9   joerg 	atf_tc_set_md_var(tc, "descr", "Test truncf(NaN) == NaN");
    704   1.9   joerg }
    705   1.9   joerg 
    706   1.9   joerg ATF_TC_BODY(truncf_nan, tc)
    707   1.9   joerg {
    708   1.9   joerg 	const float x = 0.0L / 0.0L;
    709   1.9   joerg 
    710   1.9   joerg 	ATF_CHECK(isnan(truncf(x)) != 0);
    711   1.9   joerg }
    712   1.9   joerg 
    713   1.9   joerg ATF_TC(truncf_inf_neg);
    714   1.9   joerg ATF_TC_HEAD(truncf_inf_neg, tc)
    715   1.9   joerg {
    716   1.9   joerg 	atf_tc_set_md_var(tc, "descr", "Test truncf(-Inf) == -Inf");
    717   1.9   joerg }
    718   1.9   joerg 
    719   1.9   joerg ATF_TC_BODY(truncf_inf_neg, tc)
    720   1.9   joerg {
    721   1.9   joerg 	const float x = -1.0L / 0.0L;
    722   1.9   joerg 	float y = truncf(x);
    723   1.9   joerg 
    724   1.9   joerg 	if (isinf(y) == 0 || signbit(y) == 0)
    725   1.9   joerg 		atf_tc_fail_nonfatal("truncf(-Inf) != -Inf");
    726   1.9   joerg }
    727   1.9   joerg 
    728   1.9   joerg ATF_TC(truncf_inf_pos);
    729   1.9   joerg ATF_TC_HEAD(truncf_inf_pos, tc)
    730   1.9   joerg {
    731   1.9   joerg 	atf_tc_set_md_var(tc, "descr", "Test truncf(+Inf) == +Inf");
    732   1.9   joerg }
    733   1.9   joerg 
    734   1.9   joerg ATF_TC_BODY(truncf_inf_pos, tc)
    735   1.9   joerg {
    736   1.9   joerg 	const float x = 1.0L / 0.0L;
    737   1.9   joerg 	float y = truncf(x);
    738   1.9   joerg 
    739   1.9   joerg 	if (isinf(y) == 0 || signbit(y) != 0)
    740   1.9   joerg 		atf_tc_fail_nonfatal("truncf(+Inf) != +Inf");
    741   1.9   joerg }
    742   1.9   joerg 
    743   1.9   joerg ATF_TC(truncf_zero_neg);
    744   1.9   joerg ATF_TC_HEAD(truncf_zero_neg, tc)
    745   1.9   joerg {
    746   1.9   joerg 	atf_tc_set_md_var(tc, "descr", "Test truncf(-0.0) == -0.0");
    747   1.9   joerg }
    748   1.9   joerg 
    749   1.9   joerg ATF_TC_BODY(truncf_zero_neg, tc)
    750   1.9   joerg {
    751   1.9   joerg 	const float x = -0.0L;
    752   1.9   joerg 	float y = truncf(x);
    753   1.9   joerg 
    754   1.9   joerg 	if (fabsf(y) > 0.0 || signbit(y) == 0)
    755   1.9   joerg 		atf_tc_fail_nonfatal("truncf(-0.0) != -0.0");
    756   1.9   joerg }
    757   1.9   joerg 
    758   1.9   joerg ATF_TC(truncf_zero_pos);
    759   1.9   joerg ATF_TC_HEAD(truncf_zero_pos, tc)
    760   1.9   joerg {
    761   1.9   joerg 	atf_tc_set_md_var(tc, "descr", "Test truncf(+0.0) == +0.0");
    762   1.9   joerg }
    763   1.9   joerg 
    764   1.9   joerg ATF_TC_BODY(truncf_zero_pos, tc)
    765   1.9   joerg {
    766   1.9   joerg 	const float x = 0.0L;
    767   1.9   joerg 	float y = truncf(x);
    768   1.9   joerg 
    769   1.9   joerg 	if (fabsf(y) > 0.0 || signbit(y) != 0)
    770   1.9   joerg 		atf_tc_fail_nonfatal("truncf(+0.0) != +0.0");
    771   1.9   joerg }
    772   1.9   joerg 
    773   1.9   joerg /*
    774   1.9   joerg  * truncl(3)
    775   1.9   joerg  */
    776   1.9   joerg ATF_TC(truncl_basic);
    777   1.9   joerg ATF_TC_HEAD(truncl_basic, tc)
    778   1.9   joerg {
    779   1.9   joerg 	atf_tc_set_md_var(tc, "descr", "A basic test of truncl(3)");
    780   1.9   joerg }
    781   1.9   joerg 
    782   1.9   joerg ATF_TC_BODY(truncl_basic, tc)
    783   1.9   joerg {
    784   1.9   joerg 	const long double x = 0.9999999;
    785   1.9   joerg 	const long double y = 0.0000001;
    786   1.9   joerg 
    787   1.9   joerg 	ATF_CHECK(truncl(x) < SMALL_NUM);
    788   1.9   joerg 	ATF_CHECK(truncl(y) < SMALL_NUM);
    789   1.9   joerg }
    790   1.9   joerg 
    791   1.9   joerg ATF_TC(truncl_nan);
    792   1.9   joerg ATF_TC_HEAD(truncl_nan, tc)
    793   1.9   joerg {
    794   1.9   joerg 	atf_tc_set_md_var(tc, "descr", "Test truncl(NaN) == NaN");
    795   1.9   joerg }
    796   1.9   joerg 
    797   1.9   joerg ATF_TC_BODY(truncl_nan, tc)
    798   1.9   joerg {
    799   1.9   joerg 	const long double x = 0.0L / 0.0L;
    800   1.9   joerg 
    801   1.9   joerg 	ATF_CHECK(isnan(truncl(x)) != 0);
    802   1.9   joerg }
    803   1.9   joerg 
    804   1.9   joerg ATF_TC(truncl_inf_neg);
    805   1.9   joerg ATF_TC_HEAD(truncl_inf_neg, tc)
    806   1.9   joerg {
    807   1.9   joerg 	atf_tc_set_md_var(tc, "descr", "Test truncl(-Inf) == -Inf");
    808   1.9   joerg }
    809   1.9   joerg 
    810   1.9   joerg ATF_TC_BODY(truncl_inf_neg, tc)
    811   1.9   joerg {
    812   1.9   joerg 	const long double x = -1.0L / 0.0L;
    813   1.9   joerg 	long double y = truncl(x);
    814   1.9   joerg 
    815   1.9   joerg 	if (isinf(y) == 0 || signbit(y) == 0)
    816   1.9   joerg 		atf_tc_fail_nonfatal("truncl(-Inf) != -Inf");
    817   1.9   joerg }
    818   1.9   joerg 
    819   1.9   joerg ATF_TC(truncl_inf_pos);
    820   1.9   joerg ATF_TC_HEAD(truncl_inf_pos, tc)
    821   1.9   joerg {
    822   1.9   joerg 	atf_tc_set_md_var(tc, "descr", "Test truncl(+Inf) == +Inf");
    823   1.9   joerg }
    824   1.9   joerg 
    825   1.9   joerg ATF_TC_BODY(truncl_inf_pos, tc)
    826   1.9   joerg {
    827   1.9   joerg 	const long double x = 1.0L / 0.0L;
    828   1.9   joerg 	long double y = truncl(x);
    829   1.9   joerg 
    830   1.9   joerg 	if (isinf(y) == 0 || signbit(y) != 0)
    831   1.9   joerg 		atf_tc_fail_nonfatal("truncl(+Inf) != +Inf");
    832   1.9   joerg }
    833   1.9   joerg 
    834   1.9   joerg ATF_TC(truncl_zero_neg);
    835   1.9   joerg ATF_TC_HEAD(truncl_zero_neg, tc)
    836   1.9   joerg {
    837   1.9   joerg 	atf_tc_set_md_var(tc, "descr", "Test truncl(-0.0) == -0.0");
    838   1.9   joerg }
    839   1.9   joerg 
    840   1.9   joerg ATF_TC_BODY(truncl_zero_neg, tc)
    841   1.9   joerg {
    842   1.9   joerg 	const long double x = -0.0L;
    843   1.9   joerg 	long double y = truncl(x);
    844   1.9   joerg 
    845   1.9   joerg 	if (fabsl(y) > 0.0 || signbit(y) == 0)
    846   1.9   joerg 		atf_tc_fail_nonfatal("truncl(-0.0) != -0.0");
    847   1.9   joerg }
    848   1.9   joerg 
    849   1.9   joerg ATF_TC(truncl_zero_pos);
    850   1.9   joerg ATF_TC_HEAD(truncl_zero_pos, tc)
    851   1.9   joerg {
    852   1.9   joerg 	atf_tc_set_md_var(tc, "descr", "Test truncl(+0.0) == +0.0");
    853   1.9   joerg }
    854   1.9   joerg 
    855   1.9   joerg ATF_TC_BODY(truncl_zero_pos, tc)
    856   1.9   joerg {
    857   1.9   joerg 	const long double x = 0.0L;
    858   1.9   joerg 	long double y = truncl(x);
    859   1.9   joerg 
    860   1.9   joerg 	if (fabsl(y) > 0.0 || signbit(y) != 0)
    861   1.9   joerg 		atf_tc_fail_nonfatal("truncl(+0.0) != +0.0");
    862   1.9   joerg }
    863   1.9   joerg 
    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.8   joerg 	ATF_TP_ADD_TC(tp, ceill_basic);
    882   1.8   joerg 	ATF_TP_ADD_TC(tp, ceill_nan);
    883   1.8   joerg 	ATF_TP_ADD_TC(tp, ceill_inf_neg);
    884   1.8   joerg 	ATF_TP_ADD_TC(tp, ceill_inf_pos);
    885   1.8   joerg 	ATF_TP_ADD_TC(tp, ceill_zero_neg);
    886   1.8   joerg 	ATF_TP_ADD_TC(tp, ceill_zero_pos);
    887   1.8   joerg 
    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.8   joerg 	ATF_TP_ADD_TC(tp, floorl_basic);
    903   1.8   joerg 	ATF_TP_ADD_TC(tp, floorl_nan);
    904   1.8   joerg 	ATF_TP_ADD_TC(tp, floorl_inf_neg);
    905   1.8   joerg 	ATF_TP_ADD_TC(tp, floorl_inf_pos);
    906   1.8   joerg 	ATF_TP_ADD_TC(tp, floorl_zero_neg);
    907   1.8   joerg 	ATF_TP_ADD_TC(tp, floorl_zero_pos);
    908   1.8   joerg 
    909   1.9   joerg 	ATF_TP_ADD_TC(tp, trunc_basic);
    910   1.9   joerg 	ATF_TP_ADD_TC(tp, trunc_nan);
    911   1.9   joerg 	ATF_TP_ADD_TC(tp, trunc_inf_neg);
    912   1.9   joerg 	ATF_TP_ADD_TC(tp, trunc_inf_pos);
    913   1.9   joerg 	ATF_TP_ADD_TC(tp, trunc_zero_neg);
    914   1.9   joerg 	ATF_TP_ADD_TC(tp, trunc_zero_pos);
    915   1.9   joerg 
    916   1.9   joerg 	ATF_TP_ADD_TC(tp, truncf_basic);
    917   1.9   joerg 	ATF_TP_ADD_TC(tp, truncf_nan);
    918   1.9   joerg 	ATF_TP_ADD_TC(tp, truncf_inf_neg);
    919   1.9   joerg 	ATF_TP_ADD_TC(tp, truncf_inf_pos);
    920   1.9   joerg 	ATF_TP_ADD_TC(tp, truncf_zero_neg);
    921   1.9   joerg 	ATF_TP_ADD_TC(tp, truncf_zero_pos);
    922   1.9   joerg 
    923   1.9   joerg 	ATF_TP_ADD_TC(tp, truncl_basic);
    924   1.9   joerg 	ATF_TP_ADD_TC(tp, truncl_nan);
    925   1.9   joerg 	ATF_TP_ADD_TC(tp, truncl_inf_neg);
    926   1.9   joerg 	ATF_TP_ADD_TC(tp, truncl_inf_pos);
    927   1.9   joerg 	ATF_TP_ADD_TC(tp, truncl_zero_neg);
    928   1.9   joerg 	ATF_TP_ADD_TC(tp, truncl_zero_pos);
    929   1.9   joerg 
    930   1.1  jruoho 	return atf_no_error();
    931   1.1  jruoho }
    932