summaryrefslogtreecommitdiff
path: root/test/math/test-tgmath.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/math/test-tgmath.c')
-rw-r--r--test/math/test-tgmath.c1058
1 files changed, 0 insertions, 1058 deletions
diff --git a/test/math/test-tgmath.c b/test/math/test-tgmath.c
deleted file mode 100644
index 70ab428..0000000
--- a/test/math/test-tgmath.c
+++ /dev/null
@@ -1,1058 +0,0 @@
-/* Test compilation of tgmath macros.
- Copyright (C) 2001-2016 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Jakub Jelinek <jakub@redhat.com> and
- Ulrich Drepper <drepper@redhat.com>, 2001.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-#ifndef HAVE_MAIN
-#undef __NO_MATH_INLINES
-#define __NO_MATH_INLINES 1
-#include <math.h>
-#include <stdio.h>
-#include <tgmath.h>
-
-//#define DEBUG
-
-static void compile_test (void);
-static void compile_testf (void);
-#ifndef NO_LONG_DOUBLE
-static void compile_testl (void);
-#endif
-
-float fx;
-double dx;
-long double lx;
-const float fy = 1.25;
-const double dy = 1.25;
-const long double ly = 1.25;
-complex float fz;
-complex double dz;
-complex long double lz;
-
-int count_double;
-int count_float;
-int count_ldouble;
-int count_cdouble;
-int count_cfloat;
-int count_cldouble;
-
-#define NCALLS 119
-#define NCALLS_INT 4
-#define NCCALLS 47
-
-static int
-do_test (void)
-{
- int result = 0;
-
- count_float = count_double = count_ldouble = 0;
- count_cfloat = count_cdouble = count_cldouble = 0;
- compile_test ();
- if (count_float != 0 || count_cfloat != 0)
- {
- puts ("float function called for double test");
- result = 1;
- }
- if (count_ldouble != 0 || count_cldouble != 0)
- {
- puts ("long double function called for double test");
- result = 1;
- }
- if (count_double < NCALLS + NCALLS_INT)
- {
- printf ("double functions not called often enough (%d)\n",
- count_double);
- result = 1;
- }
- else if (count_double > NCALLS + NCALLS_INT)
- {
- printf ("double functions called too often (%d)\n",
- count_double);
- result = 1;
- }
- if (count_cdouble < NCCALLS)
- {
- printf ("double complex functions not called often enough (%d)\n",
- count_cdouble);
- result = 1;
- }
- else if (count_cdouble > NCCALLS)
- {
- printf ("double complex functions called too often (%d)\n",
- count_cdouble);
- result = 1;
- }
-
- count_float = count_double = count_ldouble = 0;
- count_cfloat = count_cdouble = count_cldouble = 0;
- compile_testf ();
- if (count_double != 0 || count_cdouble != 0)
- {
- puts ("double function called for float test");
- result = 1;
- }
- if (count_ldouble != 0 || count_cldouble != 0)
- {
- puts ("long double function called for float test");
- result = 1;
- }
- if (count_float < NCALLS)
- {
- printf ("float functions not called often enough (%d)\n", count_float);
- result = 1;
- }
- else if (count_float > NCALLS)
- {
- printf ("float functions called too often (%d)\n",
- count_double);
- result = 1;
- }
- if (count_cfloat < NCCALLS)
- {
- printf ("float complex functions not called often enough (%d)\n",
- count_cfloat);
- result = 1;
- }
- else if (count_cfloat > NCCALLS)
- {
- printf ("float complex functions called too often (%d)\n",
- count_cfloat);
- result = 1;
- }
-
-#ifndef NO_LONG_DOUBLE
- count_float = count_double = count_ldouble = 0;
- count_cfloat = count_cdouble = count_cldouble = 0;
- compile_testl ();
- if (count_float != 0 || count_cfloat != 0)
- {
- puts ("float function called for long double test");
- result = 1;
- }
- if (count_double != 0 || count_cdouble != 0)
- {
- puts ("double function called for long double test");
- result = 1;
- }
- if (count_ldouble < NCALLS)
- {
- printf ("long double functions not called often enough (%d)\n",
- count_ldouble);
- result = 1;
- }
- else if (count_ldouble > NCALLS)
- {
- printf ("long double functions called too often (%d)\n",
- count_double);
- result = 1;
- }
- if (count_cldouble < NCCALLS)
- {
- printf ("long double complex functions not called often enough (%d)\n",
- count_cldouble);
- result = 1;
- }
- else if (count_cldouble > NCCALLS)
- {
- printf ("long double complex functions called too often (%d)\n",
- count_cldouble);
- result = 1;
- }
-#endif
-
- return result;
-}
-
-/* Now generate the three functions. */
-#define HAVE_MAIN
-
-#define F(name) name
-#define TYPE double
-#define TEST_INT 1
-#define x dx
-#define y dy
-#define z dz
-#define count count_double
-#define ccount count_cdouble
-#include "test-tgmath.c"
-
-#define F(name) name##f
-#define TYPE float
-#define x fx
-#define y fy
-#define z fz
-#define count count_float
-#define ccount count_cfloat
-#include "test-tgmath.c"
-
-#ifndef NO_LONG_DOUBLE
-#define F(name) name##l
-#define TYPE long double
-#define x lx
-#define y ly
-#define z lz
-#define count count_ldouble
-#define ccount count_cldouble
-#include "test-tgmath.c"
-#endif
-
-#define TEST_FUNCTION do_test ()
-#include "../test-skeleton.c"
-
-#else
-
-#ifdef DEBUG
-#define P() puts (__FUNCTION__)
-#else
-#define P()
-#endif
-
-static void
-F(compile_test) (void)
-{
- TYPE a, b, c = 1.0;
- complex TYPE d;
- int i;
- int saved_count;
- long int j;
- long long int k;
-
- a = cos (cos (x));
- b = acos (acos (a));
- a = sin (sin (x));
- b = asin (asin (a));
- a = tan (tan (x));
- b = atan (atan (a));
- c = atan2 (atan2 (a, c), atan2 (b, x));
- a = cosh (cosh (x));
- b = acosh (acosh (a));
- a = sinh (sinh (x));
- b = asinh (asinh (a));
- a = tanh (tanh (x));
- b = atanh (atanh (a));
- a = exp (exp (x));
- b = log (log (a));
- a = log10 (log10 (x));
- b = ldexp (ldexp (a, 1), 5);
- a = frexp (frexp (x, &i), &i);
- b = expm1 (expm1 (a));
- a = log1p (log1p (x));
- b = logb (logb (a));
- a = exp2 (exp2 (x));
- b = log2 (log2 (a));
- a = pow (pow (x, a), pow (c, b));
- b = sqrt (sqrt (a));
- a = hypot (hypot (x, b), hypot (c, a));
- b = cbrt (cbrt (a));
- a = ceil (ceil (x));
- b = fabs (fabs (a));
- a = floor (floor (x));
- b = fmod (fmod (a, b), fmod (c, x));
- a = nearbyint (nearbyint (x));
- b = round (round (a));
- a = trunc (trunc (x));
- b = remquo (remquo (a, b, &i), remquo (c, x, &i), &i);
- j = lrint (x) + lround (a);
- k = llrint (b) + llround (c);
- a = erf (erf (x));
- b = erfc (erfc (a));
- a = tgamma (tgamma (x));
- b = lgamma (lgamma (a));
- a = rint (rint (x));
- b = nextafter (nextafter (a, b), nextafter (c, x));
- a = nextdown (nextdown (a));
- b = nexttoward (nexttoward (x, a), c);
- a = nextup (nextup (a));
- b = remainder (remainder (a, b), remainder (c, x));
- a = scalb (scalb (x, a), (TYPE) (6));
- k = scalbn (a, 7) + scalbln (c, 10l);
- i = ilogb (x);
- a = fdim (fdim (x, a), fdim (c, b));
- b = fmax (fmax (a, x), fmax (c, b));
- a = fmin (fmin (x, a), fmin (c, b));
- b = fma (sin (a), sin (x), sin (c));
-
-#ifdef TEST_INT
- a = atan2 (i, b);
- b = remquo (i, a, &i);
- c = fma (i, b, i);
- a = pow (i, c);
-#endif
- x = a + b + c + i + j + k;
-
- saved_count = count;
- if (ccount != 0)
- ccount = -10000;
-
- d = cos (cos (z));
- z = acos (acos (d));
- d = sin (sin (z));
- z = asin (asin (d));
- d = tan (tan (z));
- z = atan (atan (d));
- d = cosh (cosh (z));
- z = acosh (acosh (d));
- d = sinh (sinh (z));
- z = asinh (asinh (d));
- d = tanh (tanh (z));
- z = atanh (atanh (d));
- d = exp (exp (z));
- z = log (log (d));
- d = sqrt (sqrt (z));
- z = conj (conj (d));
- d = fabs (conj (a));
- z = pow (pow (a, d), pow (b, z));
- d = cproj (cproj (z));
- z += fabs (cproj (a));
- a = carg (carg (z));
- b = creal (creal (d));
- c = cimag (cimag (z));
- x += a + b + c + i + j + k;
- z += d;
-
- if (saved_count != count)
- count = -10000;
-
- if (0)
- {
- a = cos (y);
- a = acos (y);
- a = sin (y);
- a = asin (y);
- a = tan (y);
- a = atan (y);
- a = atan2 (y, y);
- a = cosh (y);
- a = acosh (y);
- a = sinh (y);
- a = asinh (y);
- a = tanh (y);
- a = atanh (y);
- a = exp (y);
- a = log (y);
- a = log10 (y);
- a = ldexp (y, 5);
- a = frexp (y, &i);
- a = expm1 (y);
- a = log1p (y);
- a = logb (y);
- a = exp2 (y);
- a = log2 (y);
- a = pow (y, y);
- a = sqrt (y);
- a = hypot (y, y);
- a = cbrt (y);
- a = ceil (y);
- a = fabs (y);
- a = floor (y);
- a = fmod (y, y);
- a = nearbyint (y);
- a = round (y);
- a = trunc (y);
- a = remquo (y, y, &i);
- j = lrint (y) + lround (y);
- k = llrint (y) + llround (y);
- a = erf (y);
- a = erfc (y);
- a = tgamma (y);
- a = lgamma (y);
- a = rint (y);
- a = nextafter (y, y);
- a = nexttoward (y, y);
- a = remainder (y, y);
- a = scalb (y, (const TYPE) (6));
- k = scalbn (y, 7) + scalbln (y, 10l);
- i = ilogb (y);
- a = fdim (y, y);
- a = fmax (y, y);
- a = fmin (y, y);
- a = fma (y, y, y);
-
-#ifdef TEST_INT
- a = atan2 (i, y);
- a = remquo (i, y, &i);
- a = fma (i, y, i);
- a = pow (i, y);
-#endif
-
- d = cos ((const complex TYPE) z);
- d = acos ((const complex TYPE) z);
- d = sin ((const complex TYPE) z);
- d = asin ((const complex TYPE) z);
- d = tan ((const complex TYPE) z);
- d = atan ((const complex TYPE) z);
- d = cosh ((const complex TYPE) z);
- d = acosh ((const complex TYPE) z);
- d = sinh ((const complex TYPE) z);
- d = asinh ((const complex TYPE) z);
- d = tanh ((const complex TYPE) z);
- d = atanh ((const complex TYPE) z);
- d = exp ((const complex TYPE) z);
- d = log ((const complex TYPE) z);
- d = sqrt ((const complex TYPE) z);
- d = pow ((const complex TYPE) z, (const complex TYPE) z);
- d = fabs ((const complex TYPE) z);
- d = carg ((const complex TYPE) z);
- d = creal ((const complex TYPE) z);
- d = cimag ((const complex TYPE) z);
- d = conj ((const complex TYPE) z);
- d = cproj ((const complex TYPE) z);
- }
-}
-#undef x
-#undef y
-#undef z
-
-
-TYPE
-(F(cos)) (TYPE x)
-{
- ++count;
- P ();
- return x;
-}
-
-TYPE
-(F(acos)) (TYPE x)
-{
- ++count;
- P ();
- return x;
-}
-
-TYPE
-(F(sin)) (TYPE x)
-{
- ++count;
- P ();
- return x;
-}
-
-TYPE
-(F(asin)) (TYPE x)
-{
- ++count;
- P ();
- return x;
-}
-
-TYPE
-(F(tan)) (TYPE x)
-{
- ++count;
- P ();
- return x;
-}
-
-TYPE
-(F(atan)) (TYPE x)
-{
- ++count;
- P ();
- return x;
-}
-
-TYPE
-(F(atan2)) (TYPE x, TYPE y)
-{
- ++count;
- P ();
- return x + y;
-}
-
-TYPE
-(F(cosh)) (TYPE x)
-{
- ++count;
- P ();
- return x;
-}
-
-TYPE
-(F(acosh)) (TYPE x)
-{
- ++count;
- P ();
- return x;
-}
-
-TYPE
-(F(sinh)) (TYPE x)
-{
- ++count;
- P ();
- return x;
-}
-
-TYPE
-(F(asinh)) (TYPE x)
-{
- ++count;
- P ();
- return x;
-}
-
-TYPE
-(F(tanh)) (TYPE x)
-{
- ++count;
- P ();
- return x;
-}
-
-TYPE
-(F(atanh)) (TYPE x)
-{
- ++count;
- P ();
- return x;
-}
-
-TYPE
-(F(exp)) (TYPE x)
-{
- ++count;
- P ();
- return x;
-}
-
-TYPE
-(F(log)) (TYPE x)
-{
- ++count;
- P ();
- return x;
-}
-
-TYPE
-(F(log10)) (TYPE x)
-{
- ++count;
- P ();
- return x;
-}
-
-TYPE
-(F(ldexp)) (TYPE x, int y)
-{
- ++count;
- P ();
- return x + y;
-}
-
-TYPE
-(F(frexp)) (TYPE x, int *y)
-{
- ++count;
- P ();
- return x + *y;
-}
-
-TYPE
-(F(expm1)) (TYPE x)
-{
- ++count;
- P ();
- return x;
-}
-
-TYPE
-(F(log1p)) (TYPE x)
-{
- ++count;
- P ();
- return x;
-}
-
-TYPE
-(F(logb)) (TYPE x)
-{
- ++count;
- P ();
- return x;
-}
-
-TYPE
-(F(exp2)) (TYPE x)
-{
- ++count;
- P ();
- return x;
-}
-
-TYPE
-(F(log2)) (TYPE x)
-{
- ++count;
- P ();
- return x;
-}
-
-TYPE
-(F(pow)) (TYPE x, TYPE y)
-{
- ++count;
- P ();
- return x + y;
-}
-
-TYPE
-(F(sqrt)) (TYPE x)
-{
- ++count;
- P ();
- return x;
-}
-
-TYPE
-(F(hypot)) (TYPE x, TYPE y)
-{
- ++count;
- P ();
- return x + y;
-}
-
-TYPE
-(F(cbrt)) (TYPE x)
-{
- ++count;
- P ();
- return x;
-}
-
-TYPE
-(F(ceil)) (TYPE x)
-{
- ++count;
- P ();
- return x;
-}
-
-TYPE
-(F(fabs)) (TYPE x)
-{
- ++count;
- P ();
- return x;
-}
-
-TYPE
-(F(floor)) (TYPE x)
-{
- ++count;
- P ();
- return x;
-}
-
-TYPE
-(F(fmod)) (TYPE x, TYPE y)
-{
- ++count;
- P ();
- return x + y;
-}
-
-TYPE
-(F(nearbyint)) (TYPE x)
-{
- ++count;
- P ();
- return x;
-}
-
-TYPE
-(F(round)) (TYPE x)
-{
- ++count;
- P ();
- return x;
-}
-
-TYPE
-(F(trunc)) (TYPE x)
-{
- ++count;
- P ();
- return x;
-}
-
-TYPE
-(F(remquo)) (TYPE x, TYPE y, int *i)
-{
- ++count;
- P ();
- return x + y + *i;
-}
-
-long int
-(F(lrint)) (TYPE x)
-{
- ++count;
- P ();
- return x;
-}
-
-long int
-(F(lround)) (TYPE x)
-{
- ++count;
- P ();
- return x;
-}
-
-long long int
-(F(llrint)) (TYPE x)
-{
- ++count;
- P ();
- return x;
-}
-
-long long int
-(F(llround)) (TYPE x)
-{
- ++count;
- P ();
- return x;
-}
-
-TYPE
-(F(erf)) (TYPE x)
-{
- ++count;
- P ();
- return x;
-}
-
-TYPE
-(F(erfc)) (TYPE x)
-{
- ++count;
- P ();
- return x;
-}
-
-TYPE
-(F(tgamma)) (TYPE x)
-{
- ++count;
- P ();
- return x;
-}
-
-TYPE
-(F(lgamma)) (TYPE x)
-{
- ++count;
- P ();
- return x;
-}
-
-TYPE
-(F(rint)) (TYPE x)
-{
- ++count;
- P ();
- return x;
-}
-
-TYPE
-(F(nextafter)) (TYPE x, TYPE y)
-{
- ++count;
- P ();
- return x + y;
-}
-
-TYPE
-(F(nextdown)) (TYPE x)
-{
- ++count;
- P ();
- return x;
-}
-
-TYPE
-(F(nexttoward)) (TYPE x, long double y)
-{
- ++count;
- P ();
- return x + y;
-}
-
-TYPE
-(F(nextup)) (TYPE x)
-{
- ++count;
- P ();
- return x;
-}
-
-TYPE
-(F(remainder)) (TYPE x, TYPE y)
-{
- ++count;
- P ();
- return x + y;
-}
-
-TYPE
-(F(scalb)) (TYPE x, TYPE y)
-{
- ++count;
- P ();
- return x + y;
-}
-
-TYPE
-(F(scalbn)) (TYPE x, int y)
-{
- ++count;
- P ();
- return x + y;
-}
-
-TYPE
-(F(scalbln)) (TYPE x, long int y)
-{
- ++count;
- P ();
- return x + y;
-}
-
-int
-(F(ilogb)) (TYPE x)
-{
- ++count;
- P ();
- return x;
-}
-
-TYPE
-(F(fdim)) (TYPE x, TYPE y)
-{
- ++count;
- P ();
- return x + y;
-}
-
-TYPE
-(F(fmin)) (TYPE x, TYPE y)
-{
- ++count;
- P ();
- return x + y;
-}
-
-TYPE
-(F(fmax)) (TYPE x, TYPE y)
-{
- ++count;
- P ();
- return x + y;
-}
-
-TYPE
-(F(fma)) (TYPE x, TYPE y, TYPE z)
-{
- ++count;
- P ();
- return x + y + z;
-}
-
-complex TYPE
-(F(cacos)) (complex TYPE x)
-{
- ++ccount;
- P ();
- return x;
-}
-
-complex TYPE
-(F(casin)) (complex TYPE x)
-{
- ++ccount;
- P ();
- return x;
-}
-
-complex TYPE
-(F(catan)) (complex TYPE x)
-{
- ++ccount;
- P ();
- return x;
-}
-
-complex TYPE
-(F(ccos)) (complex TYPE x)
-{
- ++ccount;
- P ();
- return x;
-}
-
-complex TYPE
-(F(csin)) (complex TYPE x)
-{
- ++ccount;
- P ();
- return x;
-}
-
-complex TYPE
-(F(ctan)) (complex TYPE x)
-{
- ++ccount;
- P ();
- return x;
-}
-
-complex TYPE
-(F(cacosh)) (complex TYPE x)
-{
- ++ccount;
- P ();
- return x;
-}
-
-complex TYPE
-(F(casinh)) (complex TYPE x)
-{
- ++ccount;
- P ();
- return x;
-}
-
-complex TYPE
-(F(catanh)) (complex TYPE x)
-{
- ++ccount;
- P ();
- return x;
-}
-
-complex TYPE
-(F(ccosh)) (complex TYPE x)
-{
- ++ccount;
- P ();
- return x;
-}
-
-complex TYPE
-(F(csinh)) (complex TYPE x)
-{
- ++ccount;
- P ();
- return x;
-}
-
-complex TYPE
-(F(ctanh)) (complex TYPE x)
-{
- ++ccount;
- P ();
- return x;
-}
-
-complex TYPE
-(F(cexp)) (complex TYPE x)
-{
- ++ccount;
- P ();
- return x;
-}
-
-complex TYPE
-(F(clog)) (complex TYPE x)
-{
- ++ccount;
- P ();
- return x;
-}
-
-complex TYPE
-(F(csqrt)) (complex TYPE x)
-{
- ++ccount;
- P ();
- return x;
-}
-
-complex TYPE
-(F(cpow)) (complex TYPE x, complex TYPE y)
-{
- ++ccount;
- P ();
- return x + y;
-}
-
-TYPE
-(F(cabs)) (complex TYPE x)
-{
- ++ccount;
- P ();
- return x;
-}
-
-TYPE
-(F(carg)) (complex TYPE x)
-{
- ++ccount;
- P ();
- return x;
-}
-
-TYPE
-(F(creal)) (complex TYPE x)
-{
- ++ccount;
- P ();
- return __real__ x;
-}
-
-TYPE
-(F(cimag)) (complex TYPE x)
-{
- ++ccount;
- P ();
- return __imag__ x;
-}
-
-complex TYPE
-(F(conj)) (complex TYPE x)
-{
- ++ccount;
- P ();
- return x;
-}
-
-complex TYPE
-(F(cproj)) (complex TYPE x)
-{
- ++ccount;
- P ();
- return x;
-}
-
-#undef F
-#undef TYPE
-#undef count
-#undef ccount
-#undef TEST_INT
-#endif