1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159 |
- /* Test compilation of tgmath macros.
- Copyright (C) 2001-2019 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 <float.h>
- #include <math.h>
- #include <stdint.h>
- #include <stdio.h>
- #include <tgmath.h>
- //#define DEBUG
- static void compile_test (void);
- static void compile_testf (void);
- #if LDBL_MANT_DIG > DBL_MANT_DIG
- 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;
- volatile int count_double;
- volatile int count_float;
- volatile int count_ldouble;
- volatile int count_cdouble;
- volatile int count_cfloat;
- volatile int count_cldouble;
- #define NCALLS 134
- #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;
- }
- #if LDBL_MANT_DIG > DBL_MANT_DIG
- 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"
- #if LDBL_MANT_DIG > DBL_MANT_DIG
- #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 = 2;
- int saved_count;
- long int j;
- long long int k;
- intmax_t m;
- uintmax_t um;
- 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));
- c = roundeven (roundeven (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);
- m = fromfp (a, FP_INT_UPWARD, 2) + fromfpx (b, FP_INT_DOWNWARD, 3);
- um = ufromfp (c, FP_INT_TONEAREST, 4) + ufromfpx (a, FP_INT_TOWARDZERO, 5);
- 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);
- j = llogb (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 = fmaxmag (fmaxmag (a, x), fmaxmag (c, b));
- a = fminmag (fminmag (x, a), fminmag (c, b));
- b = fma (sin (a), sin (x), sin (c));
- a = totalorder (x, b);
- b = totalordermag (x, a);
- #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 + m + um;
- 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 = roundeven (y);
- a = trunc (y);
- a = remquo (y, y, &i);
- j = lrint (y) + lround (y);
- k = llrint (y) + llround (y);
- m = fromfp (y, FP_INT_UPWARD, 6) + fromfpx (y, FP_INT_DOWNWARD, 7);
- um = (ufromfp (y, FP_INT_TONEAREST, 8)
- + ufromfpx (y, FP_INT_TOWARDZERO, 9));
- 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);
- j = llogb (y);
- a = fdim (y, y);
- a = fmax (y, y);
- a = fmin (y, y);
- a = fmaxmag (y, y);
- a = fminmag (y, y);
- a = fma (y, y, y);
- a = totalorder (y, y);
- a = totalordermag (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(roundeven)) (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;
- }
- intmax_t
- (F(fromfp)) (TYPE x, int round, unsigned int width)
- {
- ++count;
- P ();
- return x;
- }
- intmax_t
- (F(fromfpx)) (TYPE x, int round, unsigned int width)
- {
- ++count;
- P ();
- return x;
- }
- uintmax_t
- (F(ufromfp)) (TYPE x, int round, unsigned int width)
- {
- ++count;
- P ();
- return x;
- }
- uintmax_t
- (F(ufromfpx)) (TYPE x, int round, unsigned int width)
- {
- ++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;
- }
- long int
- (F(llogb)) (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(fminmag)) (TYPE x, TYPE y)
- {
- ++count;
- P ();
- return x + y;
- }
- TYPE
- (F(fmaxmag)) (TYPE x, TYPE y)
- {
- ++count;
- P ();
- return x + y;
- }
- TYPE
- (F(fma)) (TYPE x, TYPE y, TYPE z)
- {
- ++count;
- P ();
- return x + y + z;
- }
- int
- (F(totalorder)) (TYPE x, TYPE y)
- {
- ++count;
- P ();
- return x + y;
- }
- int
- (F(totalordermag)) (TYPE x, TYPE y)
- {
- ++count;
- P ();
- return x + y;
- }
- 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
|