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