X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=tests%2Ftest-sqrtl.c;h=b7e9a36efa8c4d1bc7fca0ff9648b4623201561c;hb=c1118d1ccfa785a0f3bbfc7316bde06c938ade8b;hp=fa2889cb999b2689021b9b767b5f992b66714f9c;hpb=1602f0afed21be664fcf5c42d59db07cc22c56d6;p=gnulib.git diff --git a/tests/test-sqrtl.c b/tests/test-sqrtl.c index fa2889cb9..b7e9a36ef 100644 --- a/tests/test-sqrtl.c +++ b/tests/test-sqrtl.c @@ -1,5 +1,5 @@ /* Test of sqrtl() function. - Copyright (C) 2010-2012 Free Software Foundation, Inc. + Copyright (C) 2010-2013 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -23,11 +23,27 @@ #include "signature.h" SIGNATURE_CHECK (sqrtl, long double, (long double)); +#include + #include "fpucw.h" #include "macros.h" -volatile long double x; -long double y; +#define DOUBLE long double +#define L_(literal) literal##L +#define MANT_DIG DBL_MANT_DIG +#define SQRT sqrtl +#define RANDOM randoml +#include "test-sqrt.h" + +static long double +my_ldexpl (long double x, int d) +{ + for (; d > 0; d--) + x *= 2.0L; + for (; d < 0; d++) + x *= 0.5L; + return x; +} int main () @@ -41,5 +57,21 @@ main () y = sqrtl (x); ASSERT (y >= 0.7745966692L && y <= 0.7745966693L); + /* Another particular value. */ + { + long double z; + long double err; + + x = 8.1974099812331540680810141969554806865L; + y = sqrtl (x); + z = y * y - x; + err = my_ldexpl (z, LDBL_MANT_DIG); + if (err < 0) + err = - err; + ASSERT (err <= 100.0L); + } + + test_function (); + return 0; }