1*57718be8SEnji Cooper /* $NetBSD: t_sqrt.c,v 1.7 2014/03/12 21:40:07 martin Exp $ */ 2*57718be8SEnji Cooper 3*57718be8SEnji Cooper /*- 4*57718be8SEnji Cooper * Copyright (c) 2011 The NetBSD Foundation, Inc. 5*57718be8SEnji Cooper * All rights reserved. 6*57718be8SEnji Cooper * 7*57718be8SEnji Cooper * This code is derived from software contributed to The NetBSD Foundation 8*57718be8SEnji Cooper * by Jukka Ruohonen. 9*57718be8SEnji Cooper * 10*57718be8SEnji Cooper * Redistribution and use in source and binary forms, with or without 11*57718be8SEnji Cooper * modification, are permitted provided that the following conditions 12*57718be8SEnji Cooper * are met: 13*57718be8SEnji Cooper * 1. Redistributions of source code must retain the above copyright 14*57718be8SEnji Cooper * notice, this list of conditions and the following disclaimer. 15*57718be8SEnji Cooper * 2. Redistributions in binary form must reproduce the above copyright 16*57718be8SEnji Cooper * notice, this list of conditions and the following disclaimer in the 17*57718be8SEnji Cooper * documentation and/or other materials provided with the distribution. 18*57718be8SEnji Cooper * 19*57718be8SEnji Cooper * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 20*57718be8SEnji Cooper * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 21*57718be8SEnji Cooper * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 22*57718be8SEnji Cooper * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 23*57718be8SEnji Cooper * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 24*57718be8SEnji Cooper * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 25*57718be8SEnji Cooper * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 26*57718be8SEnji Cooper * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 27*57718be8SEnji Cooper * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 28*57718be8SEnji Cooper * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 29*57718be8SEnji Cooper * POSSIBILITY OF SUCH DAMAGE. 30*57718be8SEnji Cooper */ 31*57718be8SEnji Cooper #include <sys/cdefs.h> 32*57718be8SEnji Cooper __RCSID("$NetBSD: t_sqrt.c,v 1.7 2014/03/12 21:40:07 martin Exp $"); 33*57718be8SEnji Cooper 34*57718be8SEnji Cooper #include <atf-c.h> 35*57718be8SEnji Cooper #include <math.h> 36*57718be8SEnji Cooper #include <float.h> 37*57718be8SEnji Cooper #include <stdio.h> 38*57718be8SEnji Cooper 39*57718be8SEnji Cooper /* 40*57718be8SEnji Cooper * sqrt(3) 41*57718be8SEnji Cooper */ 42*57718be8SEnji Cooper ATF_TC(sqrt_nan); 43*57718be8SEnji Cooper ATF_TC_HEAD(sqrt_nan, tc) 44*57718be8SEnji Cooper { 45*57718be8SEnji Cooper atf_tc_set_md_var(tc, "descr", "Test sqrt(NaN) == NaN"); 46*57718be8SEnji Cooper } 47*57718be8SEnji Cooper 48*57718be8SEnji Cooper ATF_TC_BODY(sqrt_nan, tc) 49*57718be8SEnji Cooper { 50*57718be8SEnji Cooper const double x = 0.0L / 0.0L; 51*57718be8SEnji Cooper 52*57718be8SEnji Cooper ATF_CHECK(isnan(x) != 0); 53*57718be8SEnji Cooper ATF_CHECK(isnan(sqrt(x)) != 0); 54*57718be8SEnji Cooper } 55*57718be8SEnji Cooper 56*57718be8SEnji Cooper ATF_TC(sqrt_pow); 57*57718be8SEnji Cooper ATF_TC_HEAD(sqrt_pow, tc) 58*57718be8SEnji Cooper { 59*57718be8SEnji Cooper atf_tc_set_md_var(tc, "descr", "Test sqrt(3) vs. pow(3)"); 60*57718be8SEnji Cooper } 61*57718be8SEnji Cooper 62*57718be8SEnji Cooper ATF_TC_BODY(sqrt_pow, tc) 63*57718be8SEnji Cooper { 64*57718be8SEnji Cooper const double x[] = { 0.0, 0.005, 1.0, 99.0, 123.123, 9999.9999 }; 65*57718be8SEnji Cooper #if __DBL_MIN_10_EXP__ <= -40 66*57718be8SEnji Cooper const double eps = 1.0e-40; 67*57718be8SEnji Cooper #else 68*57718be8SEnji Cooper const double eps = __DBL_MIN__*4.0; 69*57718be8SEnji Cooper #endif 70*57718be8SEnji Cooper double y, z; 71*57718be8SEnji Cooper size_t i; 72*57718be8SEnji Cooper 73*57718be8SEnji Cooper for (i = 0; i < __arraycount(x); i++) { 74*57718be8SEnji Cooper 75*57718be8SEnji Cooper y = sqrt(x[i]); 76*57718be8SEnji Cooper z = pow(x[i], 1.0 / 2.0); 77*57718be8SEnji Cooper 78*57718be8SEnji Cooper if (fabs(y - z) > eps) 79*57718be8SEnji Cooper atf_tc_fail_nonfatal("sqrt(%0.03f) != " 80*57718be8SEnji Cooper "pow(%0.03f, 1/2)\n", x[i], x[i]); 81*57718be8SEnji Cooper } 82*57718be8SEnji Cooper } 83*57718be8SEnji Cooper 84*57718be8SEnji Cooper ATF_TC(sqrt_inf_neg); 85*57718be8SEnji Cooper ATF_TC_HEAD(sqrt_inf_neg, tc) 86*57718be8SEnji Cooper { 87*57718be8SEnji Cooper atf_tc_set_md_var(tc, "descr", "Test sqrt(-Inf) == NaN"); 88*57718be8SEnji Cooper } 89*57718be8SEnji Cooper 90*57718be8SEnji Cooper ATF_TC_BODY(sqrt_inf_neg, tc) 91*57718be8SEnji Cooper { 92*57718be8SEnji Cooper const double x = -1.0L / 0.0L; 93*57718be8SEnji Cooper double y = sqrt(x); 94*57718be8SEnji Cooper 95*57718be8SEnji Cooper ATF_CHECK(isnan(y) != 0); 96*57718be8SEnji Cooper } 97*57718be8SEnji Cooper 98*57718be8SEnji Cooper ATF_TC(sqrt_inf_pos); 99*57718be8SEnji Cooper ATF_TC_HEAD(sqrt_inf_pos, tc) 100*57718be8SEnji Cooper { 101*57718be8SEnji Cooper atf_tc_set_md_var(tc, "descr", "Test sqrt(+Inf) == +Inf"); 102*57718be8SEnji Cooper } 103*57718be8SEnji Cooper 104*57718be8SEnji Cooper ATF_TC_BODY(sqrt_inf_pos, tc) 105*57718be8SEnji Cooper { 106*57718be8SEnji Cooper const double x = 1.0L / 0.0L; 107*57718be8SEnji Cooper double y = sqrt(x); 108*57718be8SEnji Cooper 109*57718be8SEnji Cooper ATF_CHECK(isinf(y) != 0); 110*57718be8SEnji Cooper ATF_CHECK(signbit(y) == 0); 111*57718be8SEnji Cooper } 112*57718be8SEnji Cooper 113*57718be8SEnji Cooper ATF_TC(sqrt_zero_neg); 114*57718be8SEnji Cooper ATF_TC_HEAD(sqrt_zero_neg, tc) 115*57718be8SEnji Cooper { 116*57718be8SEnji Cooper atf_tc_set_md_var(tc, "descr", "Test sqrt(-0.0) == -0.0"); 117*57718be8SEnji Cooper } 118*57718be8SEnji Cooper 119*57718be8SEnji Cooper ATF_TC_BODY(sqrt_zero_neg, tc) 120*57718be8SEnji Cooper { 121*57718be8SEnji Cooper const double x = -0.0L; 122*57718be8SEnji Cooper double y = sqrt(x); 123*57718be8SEnji Cooper 124*57718be8SEnji Cooper if (fabs(y) > 0.0 || signbit(y) == 0) 125*57718be8SEnji Cooper atf_tc_fail_nonfatal("sqrt(-0.0) != -0.0"); 126*57718be8SEnji Cooper } 127*57718be8SEnji Cooper 128*57718be8SEnji Cooper ATF_TC(sqrt_zero_pos); 129*57718be8SEnji Cooper ATF_TC_HEAD(sqrt_zero_pos, tc) 130*57718be8SEnji Cooper { 131*57718be8SEnji Cooper atf_tc_set_md_var(tc, "descr", "Test sqrt(+0.0) == +0.0"); 132*57718be8SEnji Cooper } 133*57718be8SEnji Cooper 134*57718be8SEnji Cooper ATF_TC_BODY(sqrt_zero_pos, tc) 135*57718be8SEnji Cooper { 136*57718be8SEnji Cooper const double x = 0.0L; 137*57718be8SEnji Cooper double y = sqrt(x); 138*57718be8SEnji Cooper 139*57718be8SEnji Cooper if (fabs(y) > 0.0 || signbit(y) != 0) 140*57718be8SEnji Cooper atf_tc_fail_nonfatal("sqrt(+0.0) != +0.0"); 141*57718be8SEnji Cooper } 142*57718be8SEnji Cooper 143*57718be8SEnji Cooper /* 144*57718be8SEnji Cooper * sqrtf(3) 145*57718be8SEnji Cooper */ 146*57718be8SEnji Cooper ATF_TC(sqrtf_nan); 147*57718be8SEnji Cooper ATF_TC_HEAD(sqrtf_nan, tc) 148*57718be8SEnji Cooper { 149*57718be8SEnji Cooper atf_tc_set_md_var(tc, "descr", "Test sqrtf(NaN) == NaN"); 150*57718be8SEnji Cooper } 151*57718be8SEnji Cooper 152*57718be8SEnji Cooper ATF_TC_BODY(sqrtf_nan, tc) 153*57718be8SEnji Cooper { 154*57718be8SEnji Cooper const float x = 0.0L / 0.0L; 155*57718be8SEnji Cooper 156*57718be8SEnji Cooper ATF_CHECK(isnan(x) != 0); 157*57718be8SEnji Cooper ATF_CHECK(isnan(sqrtf(x)) != 0); 158*57718be8SEnji Cooper } 159*57718be8SEnji Cooper 160*57718be8SEnji Cooper ATF_TC(sqrtf_powf); 161*57718be8SEnji Cooper ATF_TC_HEAD(sqrtf_powf, tc) 162*57718be8SEnji Cooper { 163*57718be8SEnji Cooper atf_tc_set_md_var(tc, "descr", "Test sqrtf(3) vs. powf(3)"); 164*57718be8SEnji Cooper } 165*57718be8SEnji Cooper 166*57718be8SEnji Cooper ATF_TC_BODY(sqrtf_powf, tc) 167*57718be8SEnji Cooper { 168*57718be8SEnji Cooper const float x[] = { 0.0, 0.005, 1.0, 99.0, 123.123, 9999.9999 }; 169*57718be8SEnji Cooper const float eps = 1.0e-30; 170*57718be8SEnji Cooper volatile float y, z; 171*57718be8SEnji Cooper size_t i; 172*57718be8SEnji Cooper 173*57718be8SEnji Cooper for (i = 0; i < __arraycount(x); i++) { 174*57718be8SEnji Cooper 175*57718be8SEnji Cooper y = sqrtf(x[i]); 176*57718be8SEnji Cooper z = powf(x[i], 1.0 / 2.0); 177*57718be8SEnji Cooper 178*57718be8SEnji Cooper if (fabsf(y - z) > eps) 179*57718be8SEnji Cooper atf_tc_fail_nonfatal("sqrtf(%0.03f) != " 180*57718be8SEnji Cooper "powf(%0.03f, 1/2)\n", x[i], x[i]); 181*57718be8SEnji Cooper } 182*57718be8SEnji Cooper } 183*57718be8SEnji Cooper 184*57718be8SEnji Cooper ATF_TC(sqrtf_inf_neg); 185*57718be8SEnji Cooper ATF_TC_HEAD(sqrtf_inf_neg, tc) 186*57718be8SEnji Cooper { 187*57718be8SEnji Cooper atf_tc_set_md_var(tc, "descr", "Test sqrtf(-Inf) == NaN"); 188*57718be8SEnji Cooper } 189*57718be8SEnji Cooper 190*57718be8SEnji Cooper ATF_TC_BODY(sqrtf_inf_neg, tc) 191*57718be8SEnji Cooper { 192*57718be8SEnji Cooper const float x = -1.0L / 0.0L; 193*57718be8SEnji Cooper float y = sqrtf(x); 194*57718be8SEnji Cooper 195*57718be8SEnji Cooper ATF_CHECK(isnan(y) != 0); 196*57718be8SEnji Cooper } 197*57718be8SEnji Cooper 198*57718be8SEnji Cooper ATF_TC(sqrtf_inf_pos); 199*57718be8SEnji Cooper ATF_TC_HEAD(sqrtf_inf_pos, tc) 200*57718be8SEnji Cooper { 201*57718be8SEnji Cooper atf_tc_set_md_var(tc, "descr", "Test sqrtf(+Inf) == +Inf"); 202*57718be8SEnji Cooper } 203*57718be8SEnji Cooper 204*57718be8SEnji Cooper ATF_TC_BODY(sqrtf_inf_pos, tc) 205*57718be8SEnji Cooper { 206*57718be8SEnji Cooper const float x = 1.0L / 0.0L; 207*57718be8SEnji Cooper float y = sqrtf(x); 208*57718be8SEnji Cooper 209*57718be8SEnji Cooper ATF_CHECK(isinf(y) != 0); 210*57718be8SEnji Cooper ATF_CHECK(signbit(y) == 0); 211*57718be8SEnji Cooper } 212*57718be8SEnji Cooper 213*57718be8SEnji Cooper ATF_TC(sqrtf_zero_neg); 214*57718be8SEnji Cooper ATF_TC_HEAD(sqrtf_zero_neg, tc) 215*57718be8SEnji Cooper { 216*57718be8SEnji Cooper atf_tc_set_md_var(tc, "descr", "Test sqrtf(-0.0) == -0.0"); 217*57718be8SEnji Cooper } 218*57718be8SEnji Cooper 219*57718be8SEnji Cooper ATF_TC_BODY(sqrtf_zero_neg, tc) 220*57718be8SEnji Cooper { 221*57718be8SEnji Cooper const float x = -0.0L; 222*57718be8SEnji Cooper float y = sqrtf(x); 223*57718be8SEnji Cooper 224*57718be8SEnji Cooper if (fabsf(y) > 0.0 || signbit(y) == 0) 225*57718be8SEnji Cooper atf_tc_fail_nonfatal("sqrtf(-0.0) != -0.0"); 226*57718be8SEnji Cooper } 227*57718be8SEnji Cooper 228*57718be8SEnji Cooper ATF_TC(sqrtf_zero_pos); 229*57718be8SEnji Cooper ATF_TC_HEAD(sqrtf_zero_pos, tc) 230*57718be8SEnji Cooper { 231*57718be8SEnji Cooper atf_tc_set_md_var(tc, "descr", "Test sqrtf(+0.0) == +0.0"); 232*57718be8SEnji Cooper } 233*57718be8SEnji Cooper 234*57718be8SEnji Cooper ATF_TC_BODY(sqrtf_zero_pos, tc) 235*57718be8SEnji Cooper { 236*57718be8SEnji Cooper const float x = 0.0L; 237*57718be8SEnji Cooper float y = sqrtf(x); 238*57718be8SEnji Cooper 239*57718be8SEnji Cooper if (fabsf(y) > 0.0 || signbit(y) != 0) 240*57718be8SEnji Cooper atf_tc_fail_nonfatal("sqrtf(+0.0) != +0.0"); 241*57718be8SEnji Cooper } 242*57718be8SEnji Cooper 243*57718be8SEnji Cooper /* 244*57718be8SEnji Cooper * sqrtl(3) 245*57718be8SEnji Cooper */ 246*57718be8SEnji Cooper ATF_TC(sqrtl_nan); 247*57718be8SEnji Cooper ATF_TC_HEAD(sqrtl_nan, tc) 248*57718be8SEnji Cooper { 249*57718be8SEnji Cooper atf_tc_set_md_var(tc, "descr", "Test sqrtl(NaN) == NaN"); 250*57718be8SEnji Cooper } 251*57718be8SEnji Cooper 252*57718be8SEnji Cooper ATF_TC_BODY(sqrtl_nan, tc) 253*57718be8SEnji Cooper { 254*57718be8SEnji Cooper const long double x = 0.0L / 0.0L; 255*57718be8SEnji Cooper 256*57718be8SEnji Cooper ATF_CHECK(isnan(x) != 0); 257*57718be8SEnji Cooper ATF_CHECK(isnan(sqrtl(x)) != 0); 258*57718be8SEnji Cooper } 259*57718be8SEnji Cooper 260*57718be8SEnji Cooper ATF_TC(sqrtl_powl); 261*57718be8SEnji Cooper ATF_TC_HEAD(sqrtl_powl, tc) 262*57718be8SEnji Cooper { 263*57718be8SEnji Cooper atf_tc_set_md_var(tc, "descr", "Test sqrtl(3) vs. powl(3)"); 264*57718be8SEnji Cooper } 265*57718be8SEnji Cooper 266*57718be8SEnji Cooper ATF_TC_BODY(sqrtl_powl, tc) 267*57718be8SEnji Cooper { 268*57718be8SEnji Cooper const long double x[] = { 0.0, 0.005, 1.0, 99.0, 123.123, 9999.9999 }; 269*57718be8SEnji Cooper const long double eps = 5.0*DBL_EPSILON; /* XXX powl == pow for now */ 270*57718be8SEnji Cooper volatile long double y, z; 271*57718be8SEnji Cooper size_t i; 272*57718be8SEnji Cooper 273*57718be8SEnji Cooper for (i = 0; i < __arraycount(x); i++) { 274*57718be8SEnji Cooper 275*57718be8SEnji Cooper y = sqrtl(x[i]); 276*57718be8SEnji Cooper z = powl(x[i], 1.0 / 2.0); 277*57718be8SEnji Cooper 278*57718be8SEnji Cooper if (fabsl(y - z) > eps) 279*57718be8SEnji Cooper atf_tc_fail_nonfatal("sqrtl(%0.03Lf) != " 280*57718be8SEnji Cooper "powl(%0.03Lf, 1/2)\n", x[i], x[i]); 281*57718be8SEnji Cooper } 282*57718be8SEnji Cooper } 283*57718be8SEnji Cooper 284*57718be8SEnji Cooper ATF_TC(sqrtl_inf_neg); 285*57718be8SEnji Cooper ATF_TC_HEAD(sqrtl_inf_neg, tc) 286*57718be8SEnji Cooper { 287*57718be8SEnji Cooper atf_tc_set_md_var(tc, "descr", "Test sqrtl(-Inf) == NaN"); 288*57718be8SEnji Cooper } 289*57718be8SEnji Cooper 290*57718be8SEnji Cooper ATF_TC_BODY(sqrtl_inf_neg, tc) 291*57718be8SEnji Cooper { 292*57718be8SEnji Cooper const long double x = -1.0L / 0.0L; 293*57718be8SEnji Cooper long double y = sqrtl(x); 294*57718be8SEnji Cooper 295*57718be8SEnji Cooper ATF_CHECK(isnan(y) != 0); 296*57718be8SEnji Cooper } 297*57718be8SEnji Cooper 298*57718be8SEnji Cooper ATF_TC(sqrtl_inf_pos); 299*57718be8SEnji Cooper ATF_TC_HEAD(sqrtl_inf_pos, tc) 300*57718be8SEnji Cooper { 301*57718be8SEnji Cooper atf_tc_set_md_var(tc, "descr", "Test sqrtl(+Inf) == +Inf"); 302*57718be8SEnji Cooper } 303*57718be8SEnji Cooper 304*57718be8SEnji Cooper ATF_TC_BODY(sqrtl_inf_pos, tc) 305*57718be8SEnji Cooper { 306*57718be8SEnji Cooper const long double x = 1.0L / 0.0L; 307*57718be8SEnji Cooper long double y = sqrtl(x); 308*57718be8SEnji Cooper 309*57718be8SEnji Cooper ATF_CHECK(isinf(y) != 0); 310*57718be8SEnji Cooper ATF_CHECK(signbit(y) == 0); 311*57718be8SEnji Cooper } 312*57718be8SEnji Cooper 313*57718be8SEnji Cooper ATF_TC(sqrtl_zero_neg); 314*57718be8SEnji Cooper ATF_TC_HEAD(sqrtl_zero_neg, tc) 315*57718be8SEnji Cooper { 316*57718be8SEnji Cooper atf_tc_set_md_var(tc, "descr", "Test sqrtl(-0.0) == -0.0"); 317*57718be8SEnji Cooper } 318*57718be8SEnji Cooper 319*57718be8SEnji Cooper ATF_TC_BODY(sqrtl_zero_neg, tc) 320*57718be8SEnji Cooper { 321*57718be8SEnji Cooper const long double x = -0.0L; 322*57718be8SEnji Cooper long double y = sqrtl(x); 323*57718be8SEnji Cooper 324*57718be8SEnji Cooper if (fabsl(y) > 0.0 || signbit(y) == 0) 325*57718be8SEnji Cooper atf_tc_fail_nonfatal("sqrtl(-0.0) != -0.0"); 326*57718be8SEnji Cooper } 327*57718be8SEnji Cooper 328*57718be8SEnji Cooper ATF_TC(sqrtl_zero_pos); 329*57718be8SEnji Cooper ATF_TC_HEAD(sqrtl_zero_pos, tc) 330*57718be8SEnji Cooper { 331*57718be8SEnji Cooper atf_tc_set_md_var(tc, "descr", "Test sqrtl(+0.0) == +0.0"); 332*57718be8SEnji Cooper } 333*57718be8SEnji Cooper 334*57718be8SEnji Cooper ATF_TC_BODY(sqrtl_zero_pos, tc) 335*57718be8SEnji Cooper { 336*57718be8SEnji Cooper const long double x = 0.0L; 337*57718be8SEnji Cooper long double y = sqrtl(x); 338*57718be8SEnji Cooper 339*57718be8SEnji Cooper if (fabsl(y) > 0.0 || signbit(y) != 0) 340*57718be8SEnji Cooper atf_tc_fail_nonfatal("sqrtl(+0.0) != +0.0"); 341*57718be8SEnji Cooper } 342*57718be8SEnji Cooper 343*57718be8SEnji Cooper ATF_TP_ADD_TCS(tp) 344*57718be8SEnji Cooper { 345*57718be8SEnji Cooper 346*57718be8SEnji Cooper ATF_TP_ADD_TC(tp, sqrt_nan); 347*57718be8SEnji Cooper ATF_TP_ADD_TC(tp, sqrt_pow); 348*57718be8SEnji Cooper ATF_TP_ADD_TC(tp, sqrt_inf_neg); 349*57718be8SEnji Cooper ATF_TP_ADD_TC(tp, sqrt_inf_pos); 350*57718be8SEnji Cooper ATF_TP_ADD_TC(tp, sqrt_zero_neg); 351*57718be8SEnji Cooper ATF_TP_ADD_TC(tp, sqrt_zero_pos); 352*57718be8SEnji Cooper 353*57718be8SEnji Cooper ATF_TP_ADD_TC(tp, sqrtf_nan); 354*57718be8SEnji Cooper ATF_TP_ADD_TC(tp, sqrtf_powf); 355*57718be8SEnji Cooper ATF_TP_ADD_TC(tp, sqrtf_inf_neg); 356*57718be8SEnji Cooper ATF_TP_ADD_TC(tp, sqrtf_inf_pos); 357*57718be8SEnji Cooper ATF_TP_ADD_TC(tp, sqrtf_zero_neg); 358*57718be8SEnji Cooper ATF_TP_ADD_TC(tp, sqrtf_zero_pos); 359*57718be8SEnji Cooper 360*57718be8SEnji Cooper ATF_TP_ADD_TC(tp, sqrtl_nan); 361*57718be8SEnji Cooper ATF_TP_ADD_TC(tp, sqrtl_powl); 362*57718be8SEnji Cooper ATF_TP_ADD_TC(tp, sqrtl_inf_neg); 363*57718be8SEnji Cooper ATF_TP_ADD_TC(tp, sqrtl_inf_pos); 364*57718be8SEnji Cooper ATF_TP_ADD_TC(tp, sqrtl_zero_neg); 365*57718be8SEnji Cooper ATF_TP_ADD_TC(tp, sqrtl_zero_pos); 366*57718be8SEnji Cooper 367*57718be8SEnji Cooper return atf_no_error(); 368*57718be8SEnji Cooper } 369