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