Home | History | Annotate | Line # | Download | only in libm
t_log.c revision 1.13.16.1
      1  1.13.16.1  christos /* $NetBSD: t_log.c,v 1.13.16.1 2019/06/10 22:10:07 christos 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.16.1  christos __RCSID("$NetBSD: t_log.c,v 1.13.16.1 2019/06/10 22:10:07 christos Exp $");
     33        1.1    jruoho 
     34        1.3    jruoho #include <atf-c.h>
     35        1.7    jruoho 
     36  1.13.16.1  christos #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.13.16.1  christos 	const double eps = DBL_EPSILON;
    619        1.5    jruoho 
    620  1.13.16.1  christos 	if (!(fabs(log(M_E) - 1.0) <= eps))
    621  1.13.16.1  christos 		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.13.16.1  christos 	const float eps = FLT_EPSILON;
    719        1.5    jruoho 
    720  1.13.16.1  christos 	if (!(fabsf(logf(M_E) - 1.0f) <= eps))
    721  1.13.16.1  christos 		atf_tc_fail_nonfatal("logf(e) = %.17g != 1",
    722  1.13.16.1  christos 		    (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