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