Home | History | Annotate | Line # | Download | only in libm
t_log.c revision 1.10
      1  1.10   joerg /* $NetBSD: t_log.c,v 1.10 2014/02/27 17:26:02 joerg 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   joerg __RCSID("$NetBSD: t_log.c,v 1.10 2014/02/27 17:26:02 joerg Exp $");
     33   1.1  jruoho 
     34   1.3  jruoho #include <atf-c.h>
     35   1.7  jruoho #include <atf-c/config.h>
     36   1.7  jruoho 
     37   1.7  jruoho #include <math.h>
     38   1.3  jruoho #include <stdio.h>
     39   1.7  jruoho #include <string.h>
     40   1.1  jruoho 
     41   1.3  jruoho /*
     42   1.3  jruoho  * log10(3)
     43   1.3  jruoho  */
     44   1.5  jruoho ATF_TC(log10_base);
     45   1.5  jruoho ATF_TC_HEAD(log10_base, tc)
     46   1.5  jruoho {
     47   1.5  jruoho 	atf_tc_set_md_var(tc, "descr", "Test log10(10) == 1");
     48   1.5  jruoho }
     49   1.5  jruoho 
     50   1.5  jruoho ATF_TC_BODY(log10_base, tc)
     51   1.5  jruoho {
     52   1.5  jruoho 	ATF_CHECK(log10(10.0) == 1.0);
     53   1.5  jruoho }
     54   1.5  jruoho 
     55   1.3  jruoho ATF_TC(log10_nan);
     56   1.3  jruoho ATF_TC_HEAD(log10_nan, tc)
     57   1.3  jruoho {
     58   1.3  jruoho 	atf_tc_set_md_var(tc, "descr", "Test log10(NaN) == NaN");
     59   1.3  jruoho }
     60   1.3  jruoho 
     61   1.3  jruoho ATF_TC_BODY(log10_nan, tc)
     62   1.3  jruoho {
     63   1.3  jruoho #ifndef __vax__
     64   1.3  jruoho 	const double x = 0.0L / 0.0L;
     65   1.3  jruoho 
     66   1.3  jruoho 	ATF_CHECK(isnan(x) != 0);
     67   1.3  jruoho 	ATF_CHECK(isnan(log10(x)) != 0);
     68   1.3  jruoho #endif
     69   1.3  jruoho }
     70   1.3  jruoho 
     71   1.3  jruoho ATF_TC(log10_inf_neg);
     72   1.3  jruoho ATF_TC_HEAD(log10_inf_neg, tc)
     73   1.3  jruoho {
     74   1.3  jruoho 	atf_tc_set_md_var(tc, "descr", "Test log10(-Inf) == NaN");
     75   1.3  jruoho }
     76   1.3  jruoho 
     77   1.3  jruoho ATF_TC_BODY(log10_inf_neg, tc)
     78   1.3  jruoho {
     79   1.3  jruoho #ifndef __vax__
     80   1.3  jruoho 	const double x = -1.0L / 0.0L;
     81   1.3  jruoho 	const double y = log10(x);
     82   1.3  jruoho 
     83   1.3  jruoho 	ATF_CHECK(isnan(y) != 0);
     84   1.3  jruoho #endif
     85   1.3  jruoho }
     86   1.3  jruoho 
     87   1.3  jruoho ATF_TC(log10_inf_pos);
     88   1.3  jruoho ATF_TC_HEAD(log10_inf_pos, tc)
     89   1.3  jruoho {
     90   1.3  jruoho 	atf_tc_set_md_var(tc, "descr", "Test log10(+Inf) == +Inf");
     91   1.3  jruoho }
     92   1.3  jruoho 
     93   1.3  jruoho ATF_TC_BODY(log10_inf_pos, tc)
     94   1.3  jruoho {
     95   1.3  jruoho #ifndef __vax__
     96   1.3  jruoho 	const double x = 1.0L / 0.0L;
     97   1.3  jruoho 
     98   1.3  jruoho 	ATF_CHECK(log10(x) == x);
     99   1.3  jruoho #endif
    100   1.3  jruoho }
    101   1.3  jruoho 
    102   1.3  jruoho ATF_TC(log10_one_pos);
    103   1.3  jruoho ATF_TC_HEAD(log10_one_pos, tc)
    104   1.3  jruoho {
    105   1.3  jruoho 	atf_tc_set_md_var(tc, "descr", "Test log10(1.0) == +0.0");
    106   1.3  jruoho }
    107   1.3  jruoho 
    108   1.3  jruoho ATF_TC_BODY(log10_one_pos, tc)
    109   1.3  jruoho {
    110   1.3  jruoho #ifndef __vax__
    111   1.3  jruoho 	const double x = log10(1.0);
    112   1.3  jruoho 	const double y = 0.0L;
    113   1.3  jruoho 
    114   1.3  jruoho 	ATF_CHECK(x == y);
    115   1.3  jruoho 	ATF_CHECK(signbit(x) == 0);
    116   1.3  jruoho 	ATF_CHECK(signbit(y) == 0);
    117   1.3  jruoho #endif
    118   1.3  jruoho }
    119   1.3  jruoho 
    120   1.3  jruoho ATF_TC(log10_zero_neg);
    121   1.3  jruoho ATF_TC_HEAD(log10_zero_neg, tc)
    122   1.3  jruoho {
    123   1.3  jruoho 	atf_tc_set_md_var(tc, "descr", "Test log10(-0.0) == -HUGE_VAL");
    124   1.3  jruoho }
    125   1.3  jruoho 
    126   1.3  jruoho ATF_TC_BODY(log10_zero_neg, tc)
    127   1.3  jruoho {
    128   1.3  jruoho #ifndef __vax__
    129   1.3  jruoho 	const double x = -0.0L;
    130   1.3  jruoho 
    131   1.3  jruoho 	ATF_CHECK(log10(x) == -HUGE_VAL);
    132   1.3  jruoho #endif
    133   1.3  jruoho }
    134   1.3  jruoho 
    135   1.3  jruoho ATF_TC(log10_zero_pos);
    136   1.3  jruoho ATF_TC_HEAD(log10_zero_pos, tc)
    137   1.3  jruoho {
    138   1.3  jruoho 	atf_tc_set_md_var(tc, "descr", "Test log10(+0.0) == -HUGE_VAL");
    139   1.3  jruoho }
    140   1.3  jruoho 
    141   1.3  jruoho ATF_TC_BODY(log10_zero_pos, tc)
    142   1.3  jruoho {
    143   1.3  jruoho #ifndef __vax__
    144   1.3  jruoho 	const double x = 0.0L;
    145   1.3  jruoho 
    146   1.3  jruoho 	ATF_CHECK(log10(x) == -HUGE_VAL);
    147   1.3  jruoho #endif
    148   1.3  jruoho }
    149   1.3  jruoho 
    150   1.3  jruoho /*
    151   1.3  jruoho  * log10f(3)
    152   1.3  jruoho  */
    153   1.5  jruoho ATF_TC(log10f_base);
    154   1.5  jruoho ATF_TC_HEAD(log10f_base, tc)
    155   1.5  jruoho {
    156   1.5  jruoho 	atf_tc_set_md_var(tc, "descr", "Test log10f(10) == 1");
    157   1.5  jruoho }
    158   1.5  jruoho 
    159   1.5  jruoho ATF_TC_BODY(log10f_base, tc)
    160   1.5  jruoho {
    161   1.5  jruoho 	ATF_CHECK(log10f(10.0) == 1.0);
    162   1.5  jruoho }
    163   1.5  jruoho 
    164   1.3  jruoho ATF_TC(log10f_nan);
    165   1.3  jruoho ATF_TC_HEAD(log10f_nan, tc)
    166   1.3  jruoho {
    167   1.3  jruoho 	atf_tc_set_md_var(tc, "descr", "Test log10f(NaN) == NaN");
    168   1.3  jruoho }
    169   1.3  jruoho 
    170   1.3  jruoho ATF_TC_BODY(log10f_nan, tc)
    171   1.3  jruoho {
    172   1.3  jruoho #ifndef __vax__
    173   1.3  jruoho 	const float x = 0.0L / 0.0L;
    174   1.3  jruoho 
    175   1.3  jruoho 	ATF_CHECK(isnan(x) != 0);
    176   1.3  jruoho 	ATF_CHECK(isnan(log10f(x)) != 0);
    177   1.3  jruoho #endif
    178   1.3  jruoho }
    179   1.3  jruoho 
    180   1.3  jruoho ATF_TC(log10f_inf_neg);
    181   1.3  jruoho ATF_TC_HEAD(log10f_inf_neg, tc)
    182   1.3  jruoho {
    183   1.3  jruoho 	atf_tc_set_md_var(tc, "descr", "Test log10f(-Inf) == NaN");
    184   1.3  jruoho }
    185   1.3  jruoho 
    186   1.3  jruoho ATF_TC_BODY(log10f_inf_neg, tc)
    187   1.3  jruoho {
    188   1.3  jruoho #ifndef __vax__
    189   1.3  jruoho 	const float x = -1.0L / 0.0L;
    190   1.3  jruoho 	const float y = log10f(x);
    191   1.3  jruoho 
    192   1.3  jruoho 	ATF_CHECK(isnan(y) != 0);
    193   1.3  jruoho #endif
    194   1.3  jruoho }
    195   1.3  jruoho 
    196   1.3  jruoho ATF_TC(log10f_inf_pos);
    197   1.3  jruoho ATF_TC_HEAD(log10f_inf_pos, tc)
    198   1.3  jruoho {
    199   1.3  jruoho 	atf_tc_set_md_var(tc, "descr", "Test log10f(+Inf) == +Inf");
    200   1.3  jruoho }
    201   1.3  jruoho 
    202   1.3  jruoho ATF_TC_BODY(log10f_inf_pos, tc)
    203   1.3  jruoho {
    204   1.3  jruoho #ifndef __vax__
    205   1.3  jruoho 	const float x = 1.0L / 0.0L;
    206   1.3  jruoho 
    207   1.9    jmmv #if defined(__alpha__)
    208   1.9    jmmv 	atf_tc_expect_fail("PR port-alpha/46301");
    209   1.9    jmmv #endif
    210   1.7  jruoho 
    211   1.3  jruoho 	ATF_CHECK(log10f(x) == x);
    212   1.3  jruoho #endif
    213   1.3  jruoho }
    214   1.3  jruoho 
    215   1.3  jruoho ATF_TC(log10f_one_pos);
    216   1.3  jruoho ATF_TC_HEAD(log10f_one_pos, tc)
    217   1.3  jruoho {
    218   1.3  jruoho 	atf_tc_set_md_var(tc, "descr", "Test log10f(1.0) == +0.0");
    219   1.3  jruoho }
    220   1.3  jruoho 
    221   1.3  jruoho ATF_TC_BODY(log10f_one_pos, tc)
    222   1.3  jruoho {
    223   1.3  jruoho #ifndef __vax__
    224   1.3  jruoho 	const float x = log10f(1.0);
    225   1.3  jruoho 	const float y = 0.0L;
    226   1.3  jruoho 
    227   1.3  jruoho 	ATF_CHECK(x == y);
    228   1.3  jruoho 	ATF_CHECK(signbit(x) == 0);
    229   1.3  jruoho 	ATF_CHECK(signbit(y) == 0);
    230   1.3  jruoho #endif
    231   1.3  jruoho }
    232   1.3  jruoho 
    233   1.3  jruoho ATF_TC(log10f_zero_neg);
    234   1.3  jruoho ATF_TC_HEAD(log10f_zero_neg, tc)
    235   1.3  jruoho {
    236   1.3  jruoho 	atf_tc_set_md_var(tc, "descr", "Test log10f(-0.0) == -HUGE_VALF");
    237   1.3  jruoho }
    238   1.3  jruoho 
    239   1.3  jruoho ATF_TC_BODY(log10f_zero_neg, tc)
    240   1.3  jruoho {
    241   1.3  jruoho #ifndef __vax__
    242   1.3  jruoho 	const float x = -0.0L;
    243   1.3  jruoho 
    244   1.3  jruoho 	ATF_CHECK(log10f(x) == -HUGE_VALF);
    245   1.3  jruoho #endif
    246   1.3  jruoho }
    247   1.3  jruoho 
    248   1.3  jruoho ATF_TC(log10f_zero_pos);
    249   1.3  jruoho ATF_TC_HEAD(log10f_zero_pos, tc)
    250   1.3  jruoho {
    251   1.3  jruoho 	atf_tc_set_md_var(tc, "descr", "Test log10f(+0.0) == -HUGE_VALF");
    252   1.3  jruoho }
    253   1.3  jruoho 
    254   1.3  jruoho ATF_TC_BODY(log10f_zero_pos, tc)
    255   1.3  jruoho {
    256   1.3  jruoho #ifndef __vax__
    257   1.3  jruoho 	const float x = 0.0L;
    258   1.3  jruoho 
    259   1.3  jruoho 	ATF_CHECK(log10f(x) == -HUGE_VALF);
    260   1.3  jruoho #endif
    261   1.3  jruoho }
    262   1.3  jruoho 
    263   1.3  jruoho /*
    264   1.3  jruoho  * log1p(3)
    265   1.3  jruoho  */
    266   1.3  jruoho ATF_TC(log1p_nan);
    267   1.3  jruoho ATF_TC_HEAD(log1p_nan, tc)
    268   1.3  jruoho {
    269   1.3  jruoho 	atf_tc_set_md_var(tc, "descr", "Test log1p(NaN) == NaN");
    270   1.3  jruoho }
    271   1.3  jruoho 
    272   1.3  jruoho ATF_TC_BODY(log1p_nan, tc)
    273   1.3  jruoho {
    274   1.3  jruoho #ifndef __vax__
    275   1.3  jruoho 	const double x = 0.0L / 0.0L;
    276   1.3  jruoho 
    277   1.3  jruoho 	ATF_CHECK(isnan(x) != 0);
    278   1.3  jruoho 	ATF_CHECK(isnan(log1p(x)) != 0);
    279   1.3  jruoho #endif
    280   1.3  jruoho }
    281   1.3  jruoho 
    282   1.3  jruoho ATF_TC(log1p_inf_neg);
    283   1.3  jruoho ATF_TC_HEAD(log1p_inf_neg, tc)
    284   1.3  jruoho {
    285   1.3  jruoho 	atf_tc_set_md_var(tc, "descr", "Test log1p(-Inf) == NaN");
    286   1.3  jruoho }
    287   1.3  jruoho 
    288   1.3  jruoho ATF_TC_BODY(log1p_inf_neg, tc)
    289   1.3  jruoho {
    290   1.3  jruoho #ifndef __vax__
    291   1.3  jruoho 	const double x = -1.0L / 0.0L;
    292   1.3  jruoho 	const double y = log1p(x);
    293   1.3  jruoho 
    294   1.4  jruoho 	if (isnan(y) == 0) {
    295   1.4  jruoho 		atf_tc_expect_fail("PR lib/45362");
    296   1.4  jruoho 		atf_tc_fail("log1p(-Inf) != NaN");
    297   1.4  jruoho 	}
    298   1.3  jruoho #endif
    299   1.3  jruoho }
    300   1.3  jruoho 
    301   1.3  jruoho ATF_TC(log1p_inf_pos);
    302   1.3  jruoho ATF_TC_HEAD(log1p_inf_pos, tc)
    303   1.3  jruoho {
    304   1.3  jruoho 	atf_tc_set_md_var(tc, "descr", "Test log1p(+Inf) == +Inf");
    305   1.3  jruoho }
    306   1.3  jruoho 
    307   1.3  jruoho ATF_TC_BODY(log1p_inf_pos, tc)
    308   1.3  jruoho {
    309   1.3  jruoho #ifndef __vax__
    310   1.3  jruoho 	const double x = 1.0L / 0.0L;
    311   1.3  jruoho 
    312   1.3  jruoho 	ATF_CHECK(log1p(x) == x);
    313   1.3  jruoho #endif
    314   1.3  jruoho }
    315   1.3  jruoho 
    316   1.3  jruoho ATF_TC(log1p_one_neg);
    317   1.3  jruoho ATF_TC_HEAD(log1p_one_neg, tc)
    318   1.3  jruoho {
    319   1.3  jruoho 	atf_tc_set_md_var(tc, "descr", "Test log1p(-1.0) == -HUGE_VAL");
    320   1.3  jruoho }
    321   1.3  jruoho 
    322   1.3  jruoho ATF_TC_BODY(log1p_one_neg, tc)
    323   1.3  jruoho {
    324   1.3  jruoho #ifndef __vax__
    325   1.3  jruoho 	const double x = log1p(-1.0);
    326   1.3  jruoho 
    327   1.4  jruoho 	if (x != -HUGE_VAL) {
    328   1.4  jruoho 		atf_tc_expect_fail("PR lib/45362");
    329   1.4  jruoho 		atf_tc_fail("log1p(-1.0) != -HUGE_VAL");
    330   1.4  jruoho 	}
    331   1.3  jruoho #endif
    332   1.3  jruoho }
    333   1.3  jruoho 
    334   1.3  jruoho ATF_TC(log1p_zero_neg);
    335   1.3  jruoho ATF_TC_HEAD(log1p_zero_neg, tc)
    336   1.3  jruoho {
    337   1.3  jruoho 	atf_tc_set_md_var(tc, "descr", "Test log1p(-0.0) == -0.0");
    338   1.3  jruoho }
    339   1.3  jruoho 
    340   1.3  jruoho ATF_TC_BODY(log1p_zero_neg, tc)
    341   1.3  jruoho {
    342   1.3  jruoho #ifndef __vax__
    343   1.3  jruoho 	const double x = -0.0L;
    344   1.3  jruoho 
    345   1.3  jruoho 	ATF_CHECK(log1p(x) == x);
    346   1.3  jruoho #endif
    347   1.3  jruoho }
    348   1.3  jruoho 
    349   1.3  jruoho ATF_TC(log1p_zero_pos);
    350   1.3  jruoho ATF_TC_HEAD(log1p_zero_pos, tc)
    351   1.3  jruoho {
    352   1.3  jruoho 	atf_tc_set_md_var(tc, "descr", "Test log1p(+0.0) == +0.0");
    353   1.3  jruoho }
    354   1.3  jruoho 
    355   1.3  jruoho ATF_TC_BODY(log1p_zero_pos, tc)
    356   1.3  jruoho {
    357   1.3  jruoho #ifndef __vax__
    358   1.3  jruoho 	const double x = 0.0L;
    359   1.3  jruoho 
    360   1.3  jruoho 	ATF_CHECK(log1p(x) == x);
    361   1.3  jruoho #endif
    362   1.3  jruoho }
    363   1.3  jruoho 
    364   1.3  jruoho /*
    365   1.3  jruoho  * log1pf(3)
    366   1.3  jruoho  */
    367   1.3  jruoho ATF_TC(log1pf_nan);
    368   1.3  jruoho ATF_TC_HEAD(log1pf_nan, tc)
    369   1.3  jruoho {
    370   1.3  jruoho 	atf_tc_set_md_var(tc, "descr", "Test log1pf(NaN) == NaN");
    371   1.3  jruoho }
    372   1.3  jruoho 
    373   1.3  jruoho ATF_TC_BODY(log1pf_nan, tc)
    374   1.3  jruoho {
    375   1.3  jruoho #ifndef __vax__
    376   1.3  jruoho 	const float x = 0.0L / 0.0L;
    377   1.3  jruoho 
    378   1.3  jruoho 	ATF_CHECK(isnan(x) != 0);
    379   1.3  jruoho 	ATF_CHECK(isnan(log1pf(x)) != 0);
    380   1.3  jruoho #endif
    381   1.3  jruoho }
    382   1.3  jruoho 
    383   1.3  jruoho ATF_TC(log1pf_inf_neg);
    384   1.3  jruoho ATF_TC_HEAD(log1pf_inf_neg, tc)
    385   1.3  jruoho {
    386   1.3  jruoho 	atf_tc_set_md_var(tc, "descr", "Test log1pf(-Inf) == NaN");
    387   1.3  jruoho }
    388   1.3  jruoho 
    389   1.3  jruoho ATF_TC_BODY(log1pf_inf_neg, tc)
    390   1.3  jruoho {
    391   1.3  jruoho #ifndef __vax__
    392   1.3  jruoho 	const float x = -1.0L / 0.0L;
    393   1.3  jruoho 	const float y = log1pf(x);
    394   1.3  jruoho 
    395   1.4  jruoho 	if (isnan(y) == 0) {
    396   1.4  jruoho 		atf_tc_expect_fail("PR lib/45362");
    397   1.4  jruoho 		atf_tc_fail("log1pf(-Inf) != NaN");
    398   1.4  jruoho 	}
    399   1.3  jruoho #endif
    400   1.3  jruoho }
    401   1.3  jruoho 
    402   1.3  jruoho ATF_TC(log1pf_inf_pos);
    403   1.3  jruoho ATF_TC_HEAD(log1pf_inf_pos, tc)
    404   1.3  jruoho {
    405   1.3  jruoho 	atf_tc_set_md_var(tc, "descr", "Test log1pf(+Inf) == +Inf");
    406   1.3  jruoho }
    407   1.3  jruoho 
    408   1.3  jruoho ATF_TC_BODY(log1pf_inf_pos, tc)
    409   1.3  jruoho {
    410   1.3  jruoho #ifndef __vax__
    411   1.3  jruoho 	const float x = 1.0L / 0.0L;
    412   1.3  jruoho 
    413   1.3  jruoho 	ATF_CHECK(log1pf(x) == x);
    414   1.3  jruoho #endif
    415   1.3  jruoho }
    416   1.3  jruoho 
    417   1.3  jruoho ATF_TC(log1pf_one_neg);
    418   1.3  jruoho ATF_TC_HEAD(log1pf_one_neg, tc)
    419   1.3  jruoho {
    420   1.3  jruoho 	atf_tc_set_md_var(tc, "descr", "Test log1pf(-1.0) == -HUGE_VALF");
    421   1.3  jruoho }
    422   1.3  jruoho 
    423   1.3  jruoho ATF_TC_BODY(log1pf_one_neg, tc)
    424   1.3  jruoho {
    425   1.3  jruoho #ifndef __vax__
    426   1.3  jruoho 	const float x = log1pf(-1.0);
    427   1.3  jruoho 
    428   1.4  jruoho 	if (x != -HUGE_VALF) {
    429   1.4  jruoho 		atf_tc_expect_fail("PR lib/45362");
    430   1.4  jruoho 		atf_tc_fail("log1pf(-1.0) != -HUGE_VALF");
    431   1.4  jruoho 	}
    432   1.3  jruoho #endif
    433   1.3  jruoho }
    434   1.3  jruoho 
    435   1.3  jruoho ATF_TC(log1pf_zero_neg);
    436   1.3  jruoho ATF_TC_HEAD(log1pf_zero_neg, tc)
    437   1.3  jruoho {
    438   1.3  jruoho 	atf_tc_set_md_var(tc, "descr", "Test log1pf(-0.0) == -0.0");
    439   1.3  jruoho }
    440   1.3  jruoho 
    441   1.3  jruoho ATF_TC_BODY(log1pf_zero_neg, tc)
    442   1.3  jruoho {
    443   1.3  jruoho #ifndef __vax__
    444   1.3  jruoho 	const float x = -0.0L;
    445   1.3  jruoho 
    446   1.3  jruoho 	ATF_CHECK(log1pf(x) == x);
    447   1.3  jruoho #endif
    448   1.3  jruoho }
    449   1.3  jruoho 
    450   1.3  jruoho ATF_TC(log1pf_zero_pos);
    451   1.3  jruoho ATF_TC_HEAD(log1pf_zero_pos, tc)
    452   1.3  jruoho {
    453   1.3  jruoho 	atf_tc_set_md_var(tc, "descr", "Test log1pf(+0.0) == +0.0");
    454   1.3  jruoho }
    455   1.3  jruoho 
    456   1.3  jruoho ATF_TC_BODY(log1pf_zero_pos, tc)
    457   1.3  jruoho {
    458   1.3  jruoho #ifndef __vax__
    459   1.3  jruoho 	const float x = 0.0L;
    460   1.3  jruoho 
    461   1.3  jruoho 	ATF_CHECK(log1pf(x) == x);
    462   1.3  jruoho #endif
    463   1.3  jruoho }
    464   1.3  jruoho 
    465   1.3  jruoho /*
    466   1.3  jruoho  * log2(3)
    467   1.3  jruoho  */
    468   1.5  jruoho ATF_TC(log2_base);
    469   1.5  jruoho ATF_TC_HEAD(log2_base, tc)
    470   1.5  jruoho {
    471   1.5  jruoho 	atf_tc_set_md_var(tc, "descr", "Test log2(2) == 1");
    472   1.5  jruoho }
    473   1.5  jruoho 
    474   1.5  jruoho ATF_TC_BODY(log2_base, tc)
    475   1.5  jruoho {
    476   1.5  jruoho 	ATF_CHECK(log2(2.0) == 1.0);
    477   1.5  jruoho }
    478   1.5  jruoho 
    479   1.3  jruoho ATF_TC(log2_nan);
    480   1.3  jruoho ATF_TC_HEAD(log2_nan, tc)
    481   1.3  jruoho {
    482   1.3  jruoho 	atf_tc_set_md_var(tc, "descr", "Test log2(NaN) == NaN");
    483   1.3  jruoho }
    484   1.3  jruoho 
    485   1.3  jruoho ATF_TC_BODY(log2_nan, tc)
    486   1.3  jruoho {
    487   1.3  jruoho #ifndef __vax__
    488   1.3  jruoho 	const double x = 0.0L / 0.0L;
    489   1.3  jruoho 
    490   1.3  jruoho 	ATF_CHECK(isnan(x) != 0);
    491   1.3  jruoho 	ATF_CHECK(isnan(log2(x)) != 0);
    492   1.3  jruoho #endif
    493   1.3  jruoho }
    494   1.3  jruoho 
    495   1.3  jruoho ATF_TC(log2_inf_neg);
    496   1.3  jruoho ATF_TC_HEAD(log2_inf_neg, tc)
    497   1.3  jruoho {
    498   1.3  jruoho 	atf_tc_set_md_var(tc, "descr", "Test log2(-Inf) == NaN");
    499   1.3  jruoho }
    500   1.3  jruoho 
    501   1.3  jruoho ATF_TC_BODY(log2_inf_neg, tc)
    502   1.3  jruoho {
    503   1.3  jruoho #ifndef __vax__
    504   1.3  jruoho 	const double x = -1.0L / 0.0L;
    505   1.3  jruoho 	const double y = log2(x);
    506   1.3  jruoho 
    507   1.3  jruoho 	ATF_CHECK(isnan(y) != 0);
    508   1.3  jruoho #endif
    509   1.3  jruoho }
    510   1.3  jruoho 
    511   1.3  jruoho ATF_TC(log2_inf_pos);
    512   1.3  jruoho ATF_TC_HEAD(log2_inf_pos, tc)
    513   1.3  jruoho {
    514   1.3  jruoho 	atf_tc_set_md_var(tc, "descr", "Test log2(+Inf) == +Inf");
    515   1.3  jruoho }
    516   1.3  jruoho 
    517   1.3  jruoho ATF_TC_BODY(log2_inf_pos, tc)
    518   1.3  jruoho {
    519   1.3  jruoho #ifndef __vax__
    520   1.3  jruoho 	const double x = 1.0L / 0.0L;
    521   1.3  jruoho 
    522   1.3  jruoho 	ATF_CHECK(log2(x) == x);
    523   1.3  jruoho #endif
    524   1.3  jruoho }
    525   1.3  jruoho 
    526   1.3  jruoho ATF_TC(log2_one_pos);
    527   1.3  jruoho ATF_TC_HEAD(log2_one_pos, tc)
    528   1.3  jruoho {
    529   1.3  jruoho 	atf_tc_set_md_var(tc, "descr", "Test log2(1.0) == +0.0");
    530   1.3  jruoho }
    531   1.3  jruoho 
    532   1.3  jruoho ATF_TC_BODY(log2_one_pos, tc)
    533   1.3  jruoho {
    534   1.3  jruoho #ifndef __vax__
    535   1.3  jruoho 	const double x = log2(1.0);
    536   1.3  jruoho 	const double y = 0.0L;
    537   1.3  jruoho 
    538   1.3  jruoho 	ATF_CHECK(x == y);
    539   1.3  jruoho 	ATF_CHECK(signbit(x) == 0);
    540   1.3  jruoho 	ATF_CHECK(signbit(y) == 0);
    541   1.3  jruoho #endif
    542   1.3  jruoho }
    543   1.3  jruoho 
    544   1.3  jruoho ATF_TC(log2_zero_neg);
    545   1.3  jruoho ATF_TC_HEAD(log2_zero_neg, tc)
    546   1.3  jruoho {
    547   1.3  jruoho 	atf_tc_set_md_var(tc, "descr", "Test log2(-0.0) == -HUGE_VAL");
    548   1.3  jruoho }
    549   1.3  jruoho 
    550   1.3  jruoho ATF_TC_BODY(log2_zero_neg, tc)
    551   1.3  jruoho {
    552   1.3  jruoho #ifndef __vax__
    553   1.3  jruoho 	const double x = -0.0L;
    554   1.3  jruoho 
    555   1.3  jruoho 	ATF_CHECK(log2(x) == -HUGE_VAL);
    556   1.3  jruoho #endif
    557   1.3  jruoho }
    558   1.3  jruoho 
    559   1.3  jruoho ATF_TC(log2_zero_pos);
    560   1.3  jruoho ATF_TC_HEAD(log2_zero_pos, tc)
    561   1.3  jruoho {
    562   1.3  jruoho 	atf_tc_set_md_var(tc, "descr", "Test log2(+0.0) == -HUGE_VAL");
    563   1.3  jruoho }
    564   1.3  jruoho 
    565   1.3  jruoho ATF_TC_BODY(log2_zero_pos, tc)
    566   1.3  jruoho {
    567   1.3  jruoho #ifndef __vax__
    568   1.3  jruoho 	const double x = 0.0L;
    569   1.3  jruoho 
    570   1.3  jruoho 	ATF_CHECK(log2(x) == -HUGE_VAL);
    571   1.3  jruoho #endif
    572   1.3  jruoho }
    573   1.3  jruoho 
    574   1.3  jruoho /*
    575   1.3  jruoho  * log2f(3)
    576   1.3  jruoho  */
    577   1.5  jruoho ATF_TC(log2f_base);
    578   1.5  jruoho ATF_TC_HEAD(log2f_base, tc)
    579   1.5  jruoho {
    580   1.5  jruoho 	atf_tc_set_md_var(tc, "descr", "Test log2f(2) == 1");
    581   1.5  jruoho }
    582   1.5  jruoho 
    583   1.5  jruoho ATF_TC_BODY(log2f_base, tc)
    584   1.5  jruoho {
    585   1.5  jruoho 	ATF_CHECK(log2f(2.0) == 1.0);
    586   1.5  jruoho }
    587   1.5  jruoho 
    588   1.3  jruoho ATF_TC(log2f_nan);
    589   1.3  jruoho ATF_TC_HEAD(log2f_nan, tc)
    590   1.3  jruoho {
    591   1.3  jruoho 	atf_tc_set_md_var(tc, "descr", "Test log2f(NaN) == NaN");
    592   1.3  jruoho }
    593   1.3  jruoho 
    594   1.3  jruoho ATF_TC_BODY(log2f_nan, tc)
    595   1.3  jruoho {
    596   1.3  jruoho #ifndef __vax__
    597   1.3  jruoho 	const float x = 0.0L / 0.0L;
    598   1.3  jruoho 
    599   1.3  jruoho 	ATF_CHECK(isnan(x) != 0);
    600   1.3  jruoho 	ATF_CHECK(isnan(log2f(x)) != 0);
    601   1.3  jruoho #endif
    602   1.3  jruoho }
    603   1.3  jruoho 
    604   1.3  jruoho ATF_TC(log2f_inf_neg);
    605   1.3  jruoho ATF_TC_HEAD(log2f_inf_neg, tc)
    606   1.3  jruoho {
    607   1.3  jruoho 	atf_tc_set_md_var(tc, "descr", "Test log2f(-Inf) == NaN");
    608   1.3  jruoho }
    609   1.3  jruoho 
    610   1.3  jruoho ATF_TC_BODY(log2f_inf_neg, tc)
    611   1.3  jruoho {
    612   1.3  jruoho #ifndef __vax__
    613   1.3  jruoho 	const float x = -1.0L / 0.0L;
    614   1.3  jruoho 	const float y = log2f(x);
    615   1.3  jruoho 
    616   1.3  jruoho 	ATF_CHECK(isnan(y) != 0);
    617   1.3  jruoho #endif
    618   1.3  jruoho }
    619   1.3  jruoho 
    620   1.3  jruoho ATF_TC(log2f_inf_pos);
    621   1.3  jruoho ATF_TC_HEAD(log2f_inf_pos, tc)
    622   1.3  jruoho {
    623   1.3  jruoho 	atf_tc_set_md_var(tc, "descr", "Test log2f(+Inf) == +Inf");
    624   1.3  jruoho }
    625   1.3  jruoho 
    626   1.3  jruoho ATF_TC_BODY(log2f_inf_pos, tc)
    627   1.3  jruoho {
    628   1.3  jruoho #ifndef __vax__
    629   1.3  jruoho 	const float x = 1.0L / 0.0L;
    630   1.3  jruoho 
    631   1.9    jmmv #if defined(__alpha__)
    632   1.9    jmmv 	atf_tc_expect_fail("PR port-alpha/46301");
    633   1.9    jmmv #endif
    634   1.7  jruoho 
    635   1.3  jruoho 	ATF_CHECK(log2f(x) == x);
    636   1.3  jruoho #endif
    637   1.3  jruoho }
    638   1.3  jruoho 
    639   1.3  jruoho ATF_TC(log2f_one_pos);
    640   1.3  jruoho ATF_TC_HEAD(log2f_one_pos, tc)
    641   1.3  jruoho {
    642   1.3  jruoho 	atf_tc_set_md_var(tc, "descr", "Test log2f(1.0) == +0.0");
    643   1.3  jruoho }
    644   1.3  jruoho 
    645   1.3  jruoho ATF_TC_BODY(log2f_one_pos, tc)
    646   1.3  jruoho {
    647   1.3  jruoho #ifndef __vax__
    648   1.3  jruoho 	const float x = log2f(1.0);
    649   1.3  jruoho 	const float y = 0.0L;
    650   1.3  jruoho 
    651   1.3  jruoho 	ATF_CHECK(x == y);
    652   1.3  jruoho 	ATF_CHECK(signbit(x) == 0);
    653   1.3  jruoho 	ATF_CHECK(signbit(y) == 0);
    654   1.3  jruoho #endif
    655   1.3  jruoho }
    656   1.3  jruoho 
    657   1.3  jruoho ATF_TC(log2f_zero_neg);
    658   1.3  jruoho ATF_TC_HEAD(log2f_zero_neg, tc)
    659   1.3  jruoho {
    660   1.3  jruoho 	atf_tc_set_md_var(tc, "descr", "Test log2f(-0.0) == -HUGE_VALF");
    661   1.3  jruoho }
    662   1.3  jruoho 
    663   1.3  jruoho ATF_TC_BODY(log2f_zero_neg, tc)
    664   1.3  jruoho {
    665   1.3  jruoho #ifndef __vax__
    666   1.3  jruoho 	const float x = -0.0L;
    667   1.3  jruoho 
    668   1.3  jruoho 	ATF_CHECK(log2f(x) == -HUGE_VALF);
    669   1.3  jruoho #endif
    670   1.3  jruoho }
    671   1.3  jruoho 
    672   1.3  jruoho ATF_TC(log2f_zero_pos);
    673   1.3  jruoho ATF_TC_HEAD(log2f_zero_pos, tc)
    674   1.3  jruoho {
    675   1.3  jruoho 	atf_tc_set_md_var(tc, "descr", "Test log2f(+0.0) == -HUGE_VALF");
    676   1.3  jruoho }
    677   1.3  jruoho 
    678   1.3  jruoho ATF_TC_BODY(log2f_zero_pos, tc)
    679   1.3  jruoho {
    680   1.3  jruoho #ifndef __vax__
    681   1.3  jruoho 	const float x = 0.0L;
    682   1.3  jruoho 
    683   1.3  jruoho 	ATF_CHECK(log2f(x) == -HUGE_VALF);
    684   1.3  jruoho #endif
    685   1.3  jruoho }
    686   1.1  jruoho 
    687   1.3  jruoho /*
    688   1.3  jruoho  * log(3)
    689   1.3  jruoho  */
    690   1.5  jruoho ATF_TC(log_base);
    691   1.5  jruoho ATF_TC_HEAD(log_base, tc)
    692   1.5  jruoho {
    693   1.5  jruoho 	atf_tc_set_md_var(tc, "descr", "Test log(e) == 1");
    694   1.5  jruoho }
    695   1.5  jruoho 
    696   1.5  jruoho ATF_TC_BODY(log_base, tc)
    697   1.5  jruoho {
    698   1.6    matt 	const double eps = 1.0e-38;
    699   1.5  jruoho 
    700   1.5  jruoho 	if (fabs(log(M_E) - 1.0) > eps)
    701   1.5  jruoho 		atf_tc_fail_nonfatal("log(e) != 1");
    702   1.5  jruoho }
    703   1.5  jruoho 
    704   1.1  jruoho ATF_TC(log_nan);
    705   1.1  jruoho ATF_TC_HEAD(log_nan, tc)
    706   1.1  jruoho {
    707   1.3  jruoho 	atf_tc_set_md_var(tc, "descr", "Test log(NaN) == NaN");
    708   1.1  jruoho }
    709   1.1  jruoho 
    710   1.1  jruoho ATF_TC_BODY(log_nan, tc)
    711   1.1  jruoho {
    712   1.1  jruoho #ifndef __vax__
    713   1.3  jruoho 	const double x = 0.0L / 0.0L;
    714   1.3  jruoho 
    715   1.3  jruoho 	ATF_CHECK(isnan(x) != 0);
    716   1.3  jruoho 	ATF_CHECK(isnan(log(x)) != 0);
    717   1.3  jruoho #endif
    718   1.3  jruoho }
    719   1.3  jruoho 
    720   1.3  jruoho ATF_TC(log_inf_neg);
    721   1.3  jruoho ATF_TC_HEAD(log_inf_neg, tc)
    722   1.3  jruoho {
    723   1.3  jruoho 	atf_tc_set_md_var(tc, "descr", "Test log(-Inf) == NaN");
    724   1.3  jruoho }
    725   1.3  jruoho 
    726   1.3  jruoho ATF_TC_BODY(log_inf_neg, tc)
    727   1.3  jruoho {
    728   1.3  jruoho #ifndef __vax__
    729   1.3  jruoho 	const double x = -1.0L / 0.0L;
    730   1.3  jruoho 	const double y = log(x);
    731   1.3  jruoho 
    732   1.3  jruoho 	ATF_CHECK(isnan(y) != 0);
    733   1.3  jruoho #endif
    734   1.3  jruoho }
    735   1.3  jruoho 
    736   1.3  jruoho ATF_TC(log_inf_pos);
    737   1.3  jruoho ATF_TC_HEAD(log_inf_pos, tc)
    738   1.3  jruoho {
    739   1.3  jruoho 	atf_tc_set_md_var(tc, "descr", "Test log(+Inf) == +Inf");
    740   1.3  jruoho }
    741   1.3  jruoho 
    742   1.3  jruoho ATF_TC_BODY(log_inf_pos, tc)
    743   1.3  jruoho {
    744   1.3  jruoho #ifndef __vax__
    745   1.3  jruoho 	const double x = 1.0L / 0.0L;
    746   1.1  jruoho 
    747   1.3  jruoho 	ATF_CHECK(log(x) == x);
    748   1.3  jruoho #endif
    749   1.3  jruoho }
    750   1.3  jruoho 
    751   1.3  jruoho ATF_TC(log_one_pos);
    752   1.3  jruoho ATF_TC_HEAD(log_one_pos, tc)
    753   1.3  jruoho {
    754   1.3  jruoho 	atf_tc_set_md_var(tc, "descr", "Test log(1.0) == +0.0");
    755   1.3  jruoho }
    756   1.3  jruoho 
    757   1.3  jruoho ATF_TC_BODY(log_one_pos, tc)
    758   1.3  jruoho {
    759   1.3  jruoho #ifndef __vax__
    760   1.3  jruoho 	const double x = log(1.0);
    761   1.3  jruoho 	const double y = 0.0L;
    762   1.1  jruoho 
    763   1.3  jruoho 	ATF_CHECK(x == y);
    764   1.3  jruoho 	ATF_CHECK(signbit(x) == 0);
    765   1.3  jruoho 	ATF_CHECK(signbit(y) == 0);
    766   1.3  jruoho #endif
    767   1.3  jruoho }
    768   1.1  jruoho 
    769   1.3  jruoho ATF_TC(log_zero_neg);
    770   1.3  jruoho ATF_TC_HEAD(log_zero_neg, tc)
    771   1.3  jruoho {
    772   1.3  jruoho 	atf_tc_set_md_var(tc, "descr", "Test log(-0.0) == -HUGE_VAL");
    773   1.3  jruoho }
    774   1.1  jruoho 
    775   1.3  jruoho ATF_TC_BODY(log_zero_neg, tc)
    776   1.3  jruoho {
    777   1.3  jruoho #ifndef __vax__
    778   1.3  jruoho 	const double x = -0.0L;
    779   1.1  jruoho 
    780   1.3  jruoho 	ATF_CHECK(log(x) == -HUGE_VAL);
    781   1.3  jruoho #endif
    782   1.3  jruoho }
    783   1.3  jruoho 
    784   1.3  jruoho ATF_TC(log_zero_pos);
    785   1.3  jruoho ATF_TC_HEAD(log_zero_pos, tc)
    786   1.3  jruoho {
    787   1.3  jruoho 	atf_tc_set_md_var(tc, "descr", "Test log(+0.0) == -HUGE_VAL");
    788   1.3  jruoho }
    789   1.3  jruoho 
    790   1.3  jruoho ATF_TC_BODY(log_zero_pos, tc)
    791   1.3  jruoho {
    792   1.3  jruoho #ifndef __vax__
    793   1.3  jruoho 	const double x = 0.0L;
    794   1.3  jruoho 
    795   1.3  jruoho 	ATF_CHECK(log(x) == -HUGE_VAL);
    796   1.3  jruoho #endif
    797   1.3  jruoho }
    798   1.3  jruoho 
    799   1.3  jruoho /*
    800   1.3  jruoho  * logf(3)
    801   1.3  jruoho  */
    802   1.5  jruoho ATF_TC(logf_base);
    803   1.5  jruoho ATF_TC_HEAD(logf_base, tc)
    804   1.5  jruoho {
    805   1.5  jruoho 	atf_tc_set_md_var(tc, "descr", "Test logf(e) == 1");
    806   1.5  jruoho }
    807   1.5  jruoho 
    808   1.5  jruoho ATF_TC_BODY(logf_base, tc)
    809   1.5  jruoho {
    810   1.5  jruoho 	const float eps = 1.0e-7;
    811   1.5  jruoho 
    812  1.10   joerg 	if (fabsf(logf(M_E) - 1.0f) > eps)
    813   1.5  jruoho 		atf_tc_fail_nonfatal("logf(e) != 1");
    814   1.5  jruoho }
    815   1.5  jruoho 
    816   1.3  jruoho ATF_TC(logf_nan);
    817   1.3  jruoho ATF_TC_HEAD(logf_nan, tc)
    818   1.3  jruoho {
    819   1.3  jruoho 	atf_tc_set_md_var(tc, "descr", "Test logf(NaN) == NaN");
    820   1.3  jruoho }
    821   1.3  jruoho 
    822   1.3  jruoho ATF_TC_BODY(logf_nan, tc)
    823   1.3  jruoho {
    824   1.3  jruoho #ifndef __vax__
    825   1.3  jruoho 	const float x = 0.0L / 0.0L;
    826   1.3  jruoho 
    827   1.3  jruoho 	ATF_CHECK(isnan(x) != 0);
    828   1.3  jruoho 	ATF_CHECK(isnan(logf(x)) != 0);
    829   1.3  jruoho #endif
    830   1.3  jruoho }
    831   1.3  jruoho 
    832   1.3  jruoho ATF_TC(logf_inf_neg);
    833   1.3  jruoho ATF_TC_HEAD(logf_inf_neg, tc)
    834   1.3  jruoho {
    835   1.3  jruoho 	atf_tc_set_md_var(tc, "descr", "Test logf(-Inf) == NaN");
    836   1.3  jruoho }
    837   1.3  jruoho 
    838   1.3  jruoho ATF_TC_BODY(logf_inf_neg, tc)
    839   1.3  jruoho {
    840   1.3  jruoho #ifndef __vax__
    841   1.3  jruoho 	const float x = -1.0L / 0.0L;
    842   1.3  jruoho 	const float y = logf(x);
    843   1.3  jruoho 
    844   1.3  jruoho 	ATF_CHECK(isnan(y) != 0);
    845   1.3  jruoho #endif
    846   1.3  jruoho }
    847   1.3  jruoho 
    848   1.3  jruoho ATF_TC(logf_inf_pos);
    849   1.3  jruoho ATF_TC_HEAD(logf_inf_pos, tc)
    850   1.3  jruoho {
    851   1.3  jruoho 	atf_tc_set_md_var(tc, "descr", "Test logf(+Inf) == +Inf");
    852   1.3  jruoho }
    853   1.3  jruoho 
    854   1.3  jruoho ATF_TC_BODY(logf_inf_pos, tc)
    855   1.3  jruoho {
    856   1.3  jruoho #ifndef __vax__
    857   1.3  jruoho 	const float x = 1.0L / 0.0L;
    858   1.3  jruoho 
    859   1.9    jmmv #if defined(__alpha__)
    860   1.9    jmmv 	atf_tc_expect_fail("PR port-alpha/46301");
    861   1.9    jmmv #endif
    862   1.7  jruoho 
    863   1.3  jruoho 	ATF_CHECK(logf(x) == x);
    864   1.3  jruoho #endif
    865   1.3  jruoho }
    866   1.3  jruoho 
    867   1.3  jruoho ATF_TC(logf_one_pos);
    868   1.3  jruoho ATF_TC_HEAD(logf_one_pos, tc)
    869   1.3  jruoho {
    870   1.3  jruoho 	atf_tc_set_md_var(tc, "descr", "Test logf(1.0) == +0.0");
    871   1.3  jruoho }
    872   1.3  jruoho 
    873   1.3  jruoho ATF_TC_BODY(logf_one_pos, tc)
    874   1.3  jruoho {
    875   1.3  jruoho #ifndef __vax__
    876   1.3  jruoho 	const float x = logf(1.0);
    877   1.3  jruoho 	const float y = 0.0L;
    878   1.3  jruoho 
    879   1.3  jruoho 	ATF_CHECK(x == y);
    880   1.3  jruoho 	ATF_CHECK(signbit(x) == 0);
    881   1.3  jruoho 	ATF_CHECK(signbit(y) == 0);
    882   1.3  jruoho #endif
    883   1.3  jruoho }
    884   1.3  jruoho 
    885   1.3  jruoho ATF_TC(logf_zero_neg);
    886   1.3  jruoho ATF_TC_HEAD(logf_zero_neg, tc)
    887   1.3  jruoho {
    888   1.3  jruoho 	atf_tc_set_md_var(tc, "descr", "Test logf(-0.0) == -HUGE_VALF");
    889   1.3  jruoho }
    890   1.3  jruoho 
    891   1.3  jruoho ATF_TC_BODY(logf_zero_neg, tc)
    892   1.3  jruoho {
    893   1.3  jruoho #ifndef __vax__
    894   1.3  jruoho 	const float x = -0.0L;
    895   1.3  jruoho 
    896   1.3  jruoho 	ATF_CHECK(logf(x) == -HUGE_VALF);
    897   1.3  jruoho #endif
    898   1.3  jruoho }
    899   1.3  jruoho 
    900   1.3  jruoho ATF_TC(logf_zero_pos);
    901   1.3  jruoho ATF_TC_HEAD(logf_zero_pos, tc)
    902   1.3  jruoho {
    903   1.3  jruoho 	atf_tc_set_md_var(tc, "descr", "Test logf(+0.0) == -HUGE_VALF");
    904   1.3  jruoho }
    905   1.3  jruoho 
    906   1.3  jruoho ATF_TC_BODY(logf_zero_pos, tc)
    907   1.3  jruoho {
    908   1.3  jruoho #ifndef __vax__
    909   1.3  jruoho 	const float x = 0.0L;
    910   1.3  jruoho 
    911   1.3  jruoho 	ATF_CHECK(logf(x) == -HUGE_VALF);
    912   1.1  jruoho #endif
    913   1.1  jruoho }
    914   1.1  jruoho 
    915   1.1  jruoho ATF_TP_ADD_TCS(tp)
    916   1.1  jruoho {
    917   1.1  jruoho 
    918   1.5  jruoho 	ATF_TP_ADD_TC(tp, log10_base);
    919   1.3  jruoho 	ATF_TP_ADD_TC(tp, log10_nan);
    920   1.3  jruoho 	ATF_TP_ADD_TC(tp, log10_inf_neg);
    921   1.3  jruoho 	ATF_TP_ADD_TC(tp, log10_inf_pos);
    922   1.3  jruoho 	ATF_TP_ADD_TC(tp, log10_one_pos);
    923   1.3  jruoho 	ATF_TP_ADD_TC(tp, log10_zero_neg);
    924   1.3  jruoho 	ATF_TP_ADD_TC(tp, log10_zero_pos);
    925   1.3  jruoho 
    926   1.5  jruoho 	ATF_TP_ADD_TC(tp, log10f_base);
    927   1.3  jruoho 	ATF_TP_ADD_TC(tp, log10f_nan);
    928   1.3  jruoho 	ATF_TP_ADD_TC(tp, log10f_inf_neg);
    929   1.3  jruoho 	ATF_TP_ADD_TC(tp, log10f_inf_pos);
    930   1.3  jruoho 	ATF_TP_ADD_TC(tp, log10f_one_pos);
    931   1.3  jruoho 	ATF_TP_ADD_TC(tp, log10f_zero_neg);
    932   1.3  jruoho 	ATF_TP_ADD_TC(tp, log10f_zero_pos);
    933   1.3  jruoho 
    934   1.3  jruoho 	ATF_TP_ADD_TC(tp, log1p_nan);
    935   1.3  jruoho 	ATF_TP_ADD_TC(tp, log1p_inf_neg);
    936   1.3  jruoho 	ATF_TP_ADD_TC(tp, log1p_inf_pos);
    937   1.3  jruoho 	ATF_TP_ADD_TC(tp, log1p_one_neg);
    938   1.3  jruoho 	ATF_TP_ADD_TC(tp, log1p_zero_neg);
    939   1.3  jruoho 	ATF_TP_ADD_TC(tp, log1p_zero_pos);
    940   1.3  jruoho 
    941   1.3  jruoho 	ATF_TP_ADD_TC(tp, log1pf_nan);
    942   1.3  jruoho 	ATF_TP_ADD_TC(tp, log1pf_inf_neg);
    943   1.3  jruoho 	ATF_TP_ADD_TC(tp, log1pf_inf_pos);
    944   1.3  jruoho 	ATF_TP_ADD_TC(tp, log1pf_one_neg);
    945   1.3  jruoho 	ATF_TP_ADD_TC(tp, log1pf_zero_neg);
    946   1.3  jruoho 	ATF_TP_ADD_TC(tp, log1pf_zero_pos);
    947   1.3  jruoho 
    948   1.5  jruoho 	ATF_TP_ADD_TC(tp, log2_base);
    949   1.3  jruoho 	ATF_TP_ADD_TC(tp, log2_nan);
    950   1.3  jruoho 	ATF_TP_ADD_TC(tp, log2_inf_neg);
    951   1.3  jruoho 	ATF_TP_ADD_TC(tp, log2_inf_pos);
    952   1.3  jruoho 	ATF_TP_ADD_TC(tp, log2_one_pos);
    953   1.3  jruoho 	ATF_TP_ADD_TC(tp, log2_zero_neg);
    954   1.3  jruoho 	ATF_TP_ADD_TC(tp, log2_zero_pos);
    955   1.3  jruoho 
    956   1.5  jruoho 	ATF_TP_ADD_TC(tp, log2f_base);
    957   1.3  jruoho 	ATF_TP_ADD_TC(tp, log2f_nan);
    958   1.3  jruoho 	ATF_TP_ADD_TC(tp, log2f_inf_neg);
    959   1.3  jruoho 	ATF_TP_ADD_TC(tp, log2f_inf_pos);
    960   1.3  jruoho 	ATF_TP_ADD_TC(tp, log2f_one_pos);
    961   1.3  jruoho 	ATF_TP_ADD_TC(tp, log2f_zero_neg);
    962   1.3  jruoho 	ATF_TP_ADD_TC(tp, log2f_zero_pos);
    963   1.3  jruoho 
    964   1.5  jruoho 	ATF_TP_ADD_TC(tp, log_base);
    965   1.1  jruoho 	ATF_TP_ADD_TC(tp, log_nan);
    966   1.3  jruoho 	ATF_TP_ADD_TC(tp, log_inf_neg);
    967   1.3  jruoho 	ATF_TP_ADD_TC(tp, log_inf_pos);
    968   1.3  jruoho 	ATF_TP_ADD_TC(tp, log_one_pos);
    969   1.3  jruoho 	ATF_TP_ADD_TC(tp, log_zero_neg);
    970   1.3  jruoho 	ATF_TP_ADD_TC(tp, log_zero_pos);
    971   1.3  jruoho 
    972   1.5  jruoho 	ATF_TP_ADD_TC(tp, logf_base);
    973   1.3  jruoho 	ATF_TP_ADD_TC(tp, logf_nan);
    974   1.3  jruoho 	ATF_TP_ADD_TC(tp, logf_inf_neg);
    975   1.3  jruoho 	ATF_TP_ADD_TC(tp, logf_inf_pos);
    976   1.3  jruoho 	ATF_TP_ADD_TC(tp, logf_one_pos);
    977   1.3  jruoho 	ATF_TP_ADD_TC(tp, logf_zero_neg);
    978   1.3  jruoho 	ATF_TP_ADD_TC(tp, logf_zero_pos);
    979   1.1  jruoho 
    980   1.1  jruoho 	return atf_no_error();
    981   1.1  jruoho }
    982