127fdb57eSStefan Farfeleder /*- 227fdb57eSStefan Farfeleder * Copyright (c) 2004 Stefan Farfeleder <stefanf@FreeBSD.org> 327fdb57eSStefan Farfeleder * All rights reserved. 427fdb57eSStefan Farfeleder * 527fdb57eSStefan Farfeleder * Redistribution and use in source and binary forms, with or without 627fdb57eSStefan Farfeleder * modification, are permitted provided that the following conditions 727fdb57eSStefan Farfeleder * are met: 827fdb57eSStefan Farfeleder * 1. Redistributions of source code must retain the above copyright 927fdb57eSStefan Farfeleder * notice, this list of conditions and the following disclaimer. 1027fdb57eSStefan Farfeleder * 2. Redistributions in binary form must reproduce the above copyright 1127fdb57eSStefan Farfeleder * notice, this list of conditions and the following disclaimer in the 1227fdb57eSStefan Farfeleder * documentation and/or other materials provided with the distribution. 1327fdb57eSStefan Farfeleder * 1427fdb57eSStefan Farfeleder * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 1527fdb57eSStefan Farfeleder * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 1627fdb57eSStefan Farfeleder * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 1727fdb57eSStefan Farfeleder * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 1827fdb57eSStefan Farfeleder * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 1927fdb57eSStefan Farfeleder * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2027fdb57eSStefan Farfeleder * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2127fdb57eSStefan Farfeleder * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2227fdb57eSStefan Farfeleder * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 2327fdb57eSStefan Farfeleder * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 2427fdb57eSStefan Farfeleder * SUCH DAMAGE. 2527fdb57eSStefan Farfeleder * 2627fdb57eSStefan Farfeleder * $FreeBSD$ 2727fdb57eSStefan Farfeleder */ 2827fdb57eSStefan Farfeleder 2927fdb57eSStefan Farfeleder #include <sys/cdefs.h> 3027fdb57eSStefan Farfeleder /* All of our functions have side effects, __pure2 causes functions calls to 3127fdb57eSStefan Farfeleder * be optimised away. Stop that. */ 3227fdb57eSStefan Farfeleder #undef __pure2 3327fdb57eSStefan Farfeleder #define __pure2 3427fdb57eSStefan Farfeleder 3527fdb57eSStefan Farfeleder #include <assert.h> 3627fdb57eSStefan Farfeleder #include <stdio.h> 3727fdb57eSStefan Farfeleder #include <tgmath.h> 3827fdb57eSStefan Farfeleder 3927fdb57eSStefan Farfeleder int n_float, n_double, n_long_double; 4027fdb57eSStefan Farfeleder int n_float_complex, n_double_complex, n_long_double_complex; 4127fdb57eSStefan Farfeleder 4200e13b1dSNik Clayton int currtest = 0; 4300e13b1dSNik Clayton 4427fdb57eSStefan Farfeleder #define TGMACRO(FNC) \ 4527fdb57eSStefan Farfeleder TGMACRO_REAL(FNC) \ 4627fdb57eSStefan Farfeleder TGMACRO_COMPLEX(c ## FNC) 4727fdb57eSStefan Farfeleder 4827fdb57eSStefan Farfeleder #define TGMACRO_REAL(FNC) \ 4927fdb57eSStefan Farfeleder float (FNC ## f)(float x) { n_float++; } \ 5027fdb57eSStefan Farfeleder double (FNC)(double x) { n_double++; } \ 5127fdb57eSStefan Farfeleder long double (FNC ## l)(long double x) { n_long_double++; } 5227fdb57eSStefan Farfeleder 5327fdb57eSStefan Farfeleder #define TGMACRO_REAL_REAL(FNC) \ 5427fdb57eSStefan Farfeleder float (FNC ## f)(float x, float y) { n_float++; } \ 5527fdb57eSStefan Farfeleder double (FNC)(double x, double y) { n_double++; } \ 5627fdb57eSStefan Farfeleder long double \ 5727fdb57eSStefan Farfeleder (FNC ## l)(long double x, long double y) { n_long_double++; } 5827fdb57eSStefan Farfeleder 5927fdb57eSStefan Farfeleder #define TGMACRO_REAL_FIXED_RET(FNC, TYPE) \ 6027fdb57eSStefan Farfeleder TYPE (FNC ## f)(float x) { n_float++; } \ 6127fdb57eSStefan Farfeleder TYPE (FNC)(double x) { n_double++; } \ 6227fdb57eSStefan Farfeleder TYPE (FNC ## l)(long double x) { n_long_double++; } 6327fdb57eSStefan Farfeleder 6427fdb57eSStefan Farfeleder #define TGMACRO_COMPLEX(FNC) \ 6527fdb57eSStefan Farfeleder float complex (FNC ## f)(float complex x) { n_float_complex++; }\ 6627fdb57eSStefan Farfeleder double complex (FNC)(double complex x) { n_double_complex++; } \ 6727fdb57eSStefan Farfeleder long double complex \ 6827fdb57eSStefan Farfeleder (FNC ## l)(long double complex x) { n_long_double_complex++; } 6927fdb57eSStefan Farfeleder 7027fdb57eSStefan Farfeleder #define TGMACRO_COMPLEX_REAL_RET(FNC) \ 7127fdb57eSStefan Farfeleder float (FNC ## f)(float complex x) { n_float_complex++; } \ 7227fdb57eSStefan Farfeleder double (FNC)(double complex x) { n_double_complex++; } \ 7327fdb57eSStefan Farfeleder long double \ 7427fdb57eSStefan Farfeleder (FNC ## l)(long double complex x) { n_long_double_complex++; } 7527fdb57eSStefan Farfeleder 7627fdb57eSStefan Farfeleder 7727fdb57eSStefan Farfeleder /* 7.22#4 */ 7827fdb57eSStefan Farfeleder TGMACRO(acos) 7927fdb57eSStefan Farfeleder TGMACRO(asin) 8027fdb57eSStefan Farfeleder TGMACRO(atan) 8127fdb57eSStefan Farfeleder TGMACRO(acosh) 8227fdb57eSStefan Farfeleder TGMACRO(asinh) 8327fdb57eSStefan Farfeleder TGMACRO(atanh) 8427fdb57eSStefan Farfeleder TGMACRO(cos) 8527fdb57eSStefan Farfeleder TGMACRO(sin) 8627fdb57eSStefan Farfeleder TGMACRO(tan) 8727fdb57eSStefan Farfeleder TGMACRO(cosh) 8827fdb57eSStefan Farfeleder TGMACRO(sinh) 8927fdb57eSStefan Farfeleder TGMACRO(tanh) 9027fdb57eSStefan Farfeleder TGMACRO(exp) 9127fdb57eSStefan Farfeleder TGMACRO(log) 9227fdb57eSStefan Farfeleder TGMACRO_REAL_REAL(pow) 9327fdb57eSStefan Farfeleder float complex (cpowf)(float complex x, float complex y) { n_float_complex++; } 9427fdb57eSStefan Farfeleder double complex 9527fdb57eSStefan Farfeleder (cpow)(double complex x, double complex y) { n_double_complex++; } 9627fdb57eSStefan Farfeleder long double complex 9727fdb57eSStefan Farfeleder (cpowl)(long double complex x, long double complex y) 9827fdb57eSStefan Farfeleder { n_long_double_complex++; } 9927fdb57eSStefan Farfeleder TGMACRO(sqrt) 10027fdb57eSStefan Farfeleder TGMACRO_REAL(fabs) 10127fdb57eSStefan Farfeleder TGMACRO_COMPLEX_REAL_RET(cabs) 10227fdb57eSStefan Farfeleder 10327fdb57eSStefan Farfeleder /* 7.22#5 */ 10427fdb57eSStefan Farfeleder TGMACRO_REAL_REAL(atan2) 10527fdb57eSStefan Farfeleder TGMACRO_REAL(cbrt) 10627fdb57eSStefan Farfeleder TGMACRO_REAL(ceil) 10727fdb57eSStefan Farfeleder TGMACRO_REAL_REAL(copysign) 10827fdb57eSStefan Farfeleder TGMACRO_REAL(erf) 10927fdb57eSStefan Farfeleder TGMACRO_REAL(erfc) 11027fdb57eSStefan Farfeleder TGMACRO_REAL(exp2) 11127fdb57eSStefan Farfeleder TGMACRO_REAL(expm1) 11227fdb57eSStefan Farfeleder TGMACRO_REAL_REAL(fdim) 11327fdb57eSStefan Farfeleder TGMACRO_REAL(floor) 11427fdb57eSStefan Farfeleder float (fmaf)(float x, float y, float z) { n_float++; } 11527fdb57eSStefan Farfeleder double (fma)(double x, double y, double z) { n_double++; } 11627fdb57eSStefan Farfeleder long double 11727fdb57eSStefan Farfeleder (fmal)(long double x, long double y, long double z) { n_long_double++; } 11827fdb57eSStefan Farfeleder TGMACRO_REAL_REAL(fmax) 11927fdb57eSStefan Farfeleder TGMACRO_REAL_REAL(fmin) 12027fdb57eSStefan Farfeleder TGMACRO_REAL_REAL(fmod) 12127fdb57eSStefan Farfeleder float (frexpf)(float x, int *e) { n_float++; } 12227fdb57eSStefan Farfeleder double (frexp)(double x, int *e) { n_double++; } 12327fdb57eSStefan Farfeleder long double (frexpl)(long double x, int *e) { n_long_double++; } 12427fdb57eSStefan Farfeleder TGMACRO_REAL_REAL(hypot) 12527fdb57eSStefan Farfeleder TGMACRO_REAL_FIXED_RET(ilogb, int) 12627fdb57eSStefan Farfeleder float (ldexpf)(float x, int e) { n_float++; } 12727fdb57eSStefan Farfeleder double (ldexp)(double x, int e) { n_double++; } 12827fdb57eSStefan Farfeleder long double (ldexpl)(long double x, int e) { n_long_double++; } 12927fdb57eSStefan Farfeleder TGMACRO_REAL(lgamma) 13027fdb57eSStefan Farfeleder TGMACRO_REAL_FIXED_RET(llrint, long long) 13127fdb57eSStefan Farfeleder TGMACRO_REAL_FIXED_RET(llround, long long) 13227fdb57eSStefan Farfeleder TGMACRO_REAL(log10) 13327fdb57eSStefan Farfeleder TGMACRO_REAL(log1p) 13427fdb57eSStefan Farfeleder TGMACRO_REAL(log2) 13527fdb57eSStefan Farfeleder TGMACRO_REAL(logb) 13627fdb57eSStefan Farfeleder TGMACRO_REAL_FIXED_RET(lrint, long) 13727fdb57eSStefan Farfeleder TGMACRO_REAL_FIXED_RET(lround, long) 13827fdb57eSStefan Farfeleder TGMACRO_REAL(nearbyint) 13927fdb57eSStefan Farfeleder TGMACRO_REAL_REAL(nextafter) 14027fdb57eSStefan Farfeleder float (nexttowardf)(float x, long double y) { n_float++; } 14127fdb57eSStefan Farfeleder double (nexttoward)(double x, long double y) { n_double++; } 14227fdb57eSStefan Farfeleder long double (nexttowardl)(long double x, long double y) { n_long_double++; } 14327fdb57eSStefan Farfeleder TGMACRO_REAL_REAL(remainder) 14427fdb57eSStefan Farfeleder float (remquof)(float x, float y, int *q) { n_float++; } 14527fdb57eSStefan Farfeleder double (remquo)(double x, double y, int *q) { n_double++; } 14627fdb57eSStefan Farfeleder long double (remquol)(long double x, long double y, int *q) { n_long_double++; } 14727fdb57eSStefan Farfeleder TGMACRO_REAL(rint) 14827fdb57eSStefan Farfeleder TGMACRO_REAL(round) 14927fdb57eSStefan Farfeleder float (scalbnf)(float x, int n) { n_float++; } 15027fdb57eSStefan Farfeleder double (scalbn)(double x, int n) { n_double++; } 15127fdb57eSStefan Farfeleder long double (scalbnl)(long double x, int n) { n_long_double++; } 15227fdb57eSStefan Farfeleder float (scalblnf)(float x, long n) { n_float++; } 15327fdb57eSStefan Farfeleder double (scalbln)(double x, long n) { n_double++; } 15427fdb57eSStefan Farfeleder long double (scalblnl)(long double x, long n) { n_long_double++; } 15527fdb57eSStefan Farfeleder TGMACRO_REAL(tgamma) 15627fdb57eSStefan Farfeleder TGMACRO_REAL(trunc) 15727fdb57eSStefan Farfeleder 15827fdb57eSStefan Farfeleder /* 7.22#6 */ 15927fdb57eSStefan Farfeleder TGMACRO_COMPLEX_REAL_RET(carg) 16027fdb57eSStefan Farfeleder TGMACRO_COMPLEX_REAL_RET(cimag) 16127fdb57eSStefan Farfeleder TGMACRO_COMPLEX(conj) 16227fdb57eSStefan Farfeleder TGMACRO_COMPLEX(cproj) 16327fdb57eSStefan Farfeleder TGMACRO_COMPLEX_REAL_RET(creal) 16427fdb57eSStefan Farfeleder 16527fdb57eSStefan Farfeleder 16627fdb57eSStefan Farfeleder long double ld; 16727fdb57eSStefan Farfeleder double d; 16827fdb57eSStefan Farfeleder float f; 16927fdb57eSStefan Farfeleder long double complex ldc; 17027fdb57eSStefan Farfeleder double complex dc; 17127fdb57eSStefan Farfeleder float complex fc; 17227fdb57eSStefan Farfeleder unsigned long long ull; 17327fdb57eSStefan Farfeleder int i; 17427fdb57eSStefan Farfeleder _Bool b; 17527fdb57eSStefan Farfeleder 17627fdb57eSStefan Farfeleder #define SAMETYPE(EXP, TYPE) \ 17727fdb57eSStefan Farfeleder __builtin_types_compatible_p(__typeof__(EXP), TYPE) 17827fdb57eSStefan Farfeleder 17927fdb57eSStefan Farfeleder #define CLEAR_COUNTERS \ 18027fdb57eSStefan Farfeleder (n_float = n_double = n_long_double = 0, \ 18127fdb57eSStefan Farfeleder n_float_complex = n_double_complex = n_long_double_complex = 0, 1) 18227fdb57eSStefan Farfeleder 18327fdb57eSStefan Farfeleder #define RUN_TEST(EXP, TYPE) (EXP, SAMETYPE(EXP, TYPE)) 18427fdb57eSStefan Farfeleder 18527fdb57eSStefan Farfeleder #define PASS_REAL_ARG_REAL_RET(FNC) PASS_REAL_ARG_REAL_RET_(FNC,) 18627fdb57eSStefan Farfeleder 18727fdb57eSStefan Farfeleder #define PASS_REAL_ARG_REAL_RET_(FNC, SUFFIX) \ 18827fdb57eSStefan Farfeleder CLEAR_COUNTERS && \ 18927fdb57eSStefan Farfeleder RUN_TEST(FNC(1.l), long double) && \ 19027fdb57eSStefan Farfeleder RUN_TEST(FNC(ld), long double) && \ 19127fdb57eSStefan Farfeleder n_long_double ## SUFFIX == 2 && \ 19227fdb57eSStefan Farfeleder RUN_TEST(FNC(1.), double) && \ 19327fdb57eSStefan Farfeleder RUN_TEST(FNC(d), double) && \ 19427fdb57eSStefan Farfeleder RUN_TEST(FNC(1ull), double) && \ 19527fdb57eSStefan Farfeleder RUN_TEST(FNC(ull), double) && \ 19627fdb57eSStefan Farfeleder RUN_TEST(FNC(1), double) && \ 19727fdb57eSStefan Farfeleder RUN_TEST(FNC(i), double) && \ 19827fdb57eSStefan Farfeleder RUN_TEST(FNC((_Bool)0), double) && \ 19927fdb57eSStefan Farfeleder RUN_TEST(FNC(b), double) && \ 20027fdb57eSStefan Farfeleder n_double ## SUFFIX == 8 && \ 20127fdb57eSStefan Farfeleder RUN_TEST(FNC(1.f), float) && \ 20227fdb57eSStefan Farfeleder RUN_TEST(FNC(f), float) && \ 20327fdb57eSStefan Farfeleder n_float ## SUFFIX == 2 20427fdb57eSStefan Farfeleder 20527fdb57eSStefan Farfeleder #define PASS_REAL_ARG_FIXED_RET(FNC, RET) \ 20627fdb57eSStefan Farfeleder CLEAR_COUNTERS && \ 20727fdb57eSStefan Farfeleder RUN_TEST(FNC(1.l), RET) && \ 20827fdb57eSStefan Farfeleder RUN_TEST(FNC(ld), RET) && \ 20927fdb57eSStefan Farfeleder n_long_double == 2 && \ 21027fdb57eSStefan Farfeleder RUN_TEST(FNC(1.), RET) && \ 21127fdb57eSStefan Farfeleder RUN_TEST(FNC(d), RET) && \ 21227fdb57eSStefan Farfeleder RUN_TEST(FNC(1ull), RET) && \ 21327fdb57eSStefan Farfeleder RUN_TEST(FNC(ull), RET) && \ 21427fdb57eSStefan Farfeleder RUN_TEST(FNC(1), RET) && \ 21527fdb57eSStefan Farfeleder RUN_TEST(FNC(i), RET) && \ 21627fdb57eSStefan Farfeleder RUN_TEST(FNC((_Bool)0), RET) && \ 21727fdb57eSStefan Farfeleder RUN_TEST(FNC(b), RET) && \ 21827fdb57eSStefan Farfeleder n_double == 8 && \ 21927fdb57eSStefan Farfeleder RUN_TEST(FNC(1.f), RET) && \ 22027fdb57eSStefan Farfeleder RUN_TEST(FNC(f), RET) && \ 22127fdb57eSStefan Farfeleder n_float == 2 22227fdb57eSStefan Farfeleder 22327fdb57eSStefan Farfeleder #define PASS_REAL_FIXED_ARG_REAL_RET(FNC, ARG2) \ 22427fdb57eSStefan Farfeleder CLEAR_COUNTERS && \ 22527fdb57eSStefan Farfeleder RUN_TEST(FNC(1.l, ARG2), long double) && \ 22627fdb57eSStefan Farfeleder RUN_TEST(FNC(ld, ARG2), long double) && \ 22727fdb57eSStefan Farfeleder n_long_double == 2 && \ 22827fdb57eSStefan Farfeleder RUN_TEST(FNC(1., ARG2), double) && \ 22927fdb57eSStefan Farfeleder RUN_TEST(FNC(d, ARG2), double) && \ 23027fdb57eSStefan Farfeleder RUN_TEST(FNC(1ull, ARG2), double) && \ 23127fdb57eSStefan Farfeleder RUN_TEST(FNC(ull, ARG2), double) && \ 23227fdb57eSStefan Farfeleder RUN_TEST(FNC(1, ARG2), double) && \ 23327fdb57eSStefan Farfeleder RUN_TEST(FNC(i, ARG2), double) && \ 23427fdb57eSStefan Farfeleder RUN_TEST(FNC((_Bool)0, ARG2), double) && \ 23527fdb57eSStefan Farfeleder RUN_TEST(FNC(b, ARG2), double) && \ 23627fdb57eSStefan Farfeleder n_double == 8 && \ 23727fdb57eSStefan Farfeleder RUN_TEST(FNC(1.f, ARG2), float) && \ 23827fdb57eSStefan Farfeleder RUN_TEST(FNC(f, ARG2), float) && \ 23927fdb57eSStefan Farfeleder n_float == 2 24027fdb57eSStefan Farfeleder 24127fdb57eSStefan Farfeleder #define PASS_REAL_REAL_ARG_REAL_RET(FNC) \ 24227fdb57eSStefan Farfeleder CLEAR_COUNTERS && \ 24327fdb57eSStefan Farfeleder RUN_TEST(FNC(1.l, 1.l), long double) && \ 24427fdb57eSStefan Farfeleder RUN_TEST(FNC(1.l, 1.), long double) && \ 24527fdb57eSStefan Farfeleder RUN_TEST(FNC(1.l, 1.f), long double) && \ 24627fdb57eSStefan Farfeleder RUN_TEST(FNC(1.l, 1), long double) && \ 24727fdb57eSStefan Farfeleder RUN_TEST(FNC(1.l, (_Bool)0), long double) && \ 24827fdb57eSStefan Farfeleder RUN_TEST(FNC(1.l, ld), long double) && \ 24927fdb57eSStefan Farfeleder RUN_TEST(FNC(1., ld), long double) && \ 25027fdb57eSStefan Farfeleder RUN_TEST(FNC(1.f, ld), long double) && \ 25127fdb57eSStefan Farfeleder RUN_TEST(FNC(1, ld), long double) && \ 25227fdb57eSStefan Farfeleder RUN_TEST(FNC((_Bool)0, ld), long double) && \ 25327fdb57eSStefan Farfeleder n_long_double == 10 && \ 25427fdb57eSStefan Farfeleder RUN_TEST(FNC(d, 1.), double) && \ 25527fdb57eSStefan Farfeleder RUN_TEST(FNC(d, 1.f), double) && \ 25627fdb57eSStefan Farfeleder RUN_TEST(FNC(d, 1l), double) && \ 25727fdb57eSStefan Farfeleder RUN_TEST(FNC(d, (_Bool)0), double) && \ 25827fdb57eSStefan Farfeleder RUN_TEST(FNC(1., 1.), double) && \ 25927fdb57eSStefan Farfeleder RUN_TEST(FNC(1.f, 1.), double) && \ 26027fdb57eSStefan Farfeleder RUN_TEST(FNC(1l, 1.), double) && \ 26127fdb57eSStefan Farfeleder RUN_TEST(FNC((_Bool)0, 1.), double) && \ 26227fdb57eSStefan Farfeleder RUN_TEST(FNC(1ull, f), double) && \ 26327fdb57eSStefan Farfeleder RUN_TEST(FNC(1.f, ull), double) && \ 26427fdb57eSStefan Farfeleder RUN_TEST(FNC(1, 1l), double) && \ 26527fdb57eSStefan Farfeleder RUN_TEST(FNC(1u, i), double) && \ 26627fdb57eSStefan Farfeleder RUN_TEST(FNC((_Bool)0, 1.f), double) && \ 26727fdb57eSStefan Farfeleder RUN_TEST(FNC(1.f, b), double) && \ 26827fdb57eSStefan Farfeleder n_double == 14 && \ 26927fdb57eSStefan Farfeleder RUN_TEST(FNC(1.f, 1.f), float) && \ 27027fdb57eSStefan Farfeleder RUN_TEST(FNC(1.f, 1.f), float) && \ 27127fdb57eSStefan Farfeleder RUN_TEST(FNC(f, 1.f), float) && \ 27227fdb57eSStefan Farfeleder RUN_TEST(FNC(f, f), float) && \ 27327fdb57eSStefan Farfeleder n_float == 4 27427fdb57eSStefan Farfeleder 27527fdb57eSStefan Farfeleder #define PASS_REAL_REAL_FIXED_ARG_REAL_RET(FNC, ARG3) \ 27627fdb57eSStefan Farfeleder CLEAR_COUNTERS && \ 27727fdb57eSStefan Farfeleder RUN_TEST(FNC(1.l, 1.l, ARG3), long double) && \ 27827fdb57eSStefan Farfeleder RUN_TEST(FNC(1.l, 1., ARG3), long double) && \ 27927fdb57eSStefan Farfeleder RUN_TEST(FNC(1.l, 1.f, ARG3), long double) && \ 28027fdb57eSStefan Farfeleder RUN_TEST(FNC(1.l, 1, ARG3), long double) && \ 28127fdb57eSStefan Farfeleder RUN_TEST(FNC(1.l, (_Bool)0, ARG3), long double) && \ 28227fdb57eSStefan Farfeleder RUN_TEST(FNC(1.l, ld, ARG3), long double) && \ 28327fdb57eSStefan Farfeleder RUN_TEST(FNC(1., ld, ARG3), long double) && \ 28427fdb57eSStefan Farfeleder RUN_TEST(FNC(1.f, ld, ARG3), long double) && \ 28527fdb57eSStefan Farfeleder RUN_TEST(FNC(1, ld, ARG3), long double) && \ 28627fdb57eSStefan Farfeleder RUN_TEST(FNC((_Bool)0, ld, ARG3), long double) && \ 28727fdb57eSStefan Farfeleder n_long_double == 10 && \ 28827fdb57eSStefan Farfeleder RUN_TEST(FNC(d, 1., ARG3), double) && \ 28927fdb57eSStefan Farfeleder RUN_TEST(FNC(d, 1.f, ARG3), double) && \ 29027fdb57eSStefan Farfeleder RUN_TEST(FNC(d, 1l, ARG3), double) && \ 29127fdb57eSStefan Farfeleder RUN_TEST(FNC(d, (_Bool)0, ARG3), double) && \ 29227fdb57eSStefan Farfeleder RUN_TEST(FNC(1., 1., ARG3), double) && \ 29327fdb57eSStefan Farfeleder RUN_TEST(FNC(1.f, 1., ARG3), double) && \ 29427fdb57eSStefan Farfeleder RUN_TEST(FNC(1l, 1., ARG3), double) && \ 29527fdb57eSStefan Farfeleder RUN_TEST(FNC((_Bool)0, 1., ARG3), double) && \ 29627fdb57eSStefan Farfeleder RUN_TEST(FNC(1ull, f, ARG3), double) && \ 29727fdb57eSStefan Farfeleder RUN_TEST(FNC(1.f, ull, ARG3), double) && \ 29827fdb57eSStefan Farfeleder RUN_TEST(FNC(1, 1l, ARG3), double) && \ 29927fdb57eSStefan Farfeleder RUN_TEST(FNC(1u, i, ARG3), double) && \ 30027fdb57eSStefan Farfeleder RUN_TEST(FNC((_Bool)0, 1.f, ARG3), double) && \ 30127fdb57eSStefan Farfeleder RUN_TEST(FNC(1.f, b, ARG3), double) && \ 30227fdb57eSStefan Farfeleder n_double == 14 && \ 30327fdb57eSStefan Farfeleder RUN_TEST(FNC(1.f, 1.f, ARG3), float) && \ 30427fdb57eSStefan Farfeleder RUN_TEST(FNC(1.f, 1.f, ARG3), float) && \ 30527fdb57eSStefan Farfeleder RUN_TEST(FNC(f, 1.f, ARG3), float) && \ 30627fdb57eSStefan Farfeleder RUN_TEST(FNC(f, f, ARG3), float) && \ 30727fdb57eSStefan Farfeleder n_float == 4 30827fdb57eSStefan Farfeleder 30927fdb57eSStefan Farfeleder #define PASS_REAL_REAL_REAL_ARG_REAL_RET(FNC) \ 31027fdb57eSStefan Farfeleder CLEAR_COUNTERS && \ 31127fdb57eSStefan Farfeleder RUN_TEST(FNC(ld, d, f), long double) && \ 31227fdb57eSStefan Farfeleder RUN_TEST(FNC(1, ld, ld), long double) && \ 31327fdb57eSStefan Farfeleder RUN_TEST(FNC(1, d, ld), long double) && \ 31427fdb57eSStefan Farfeleder n_long_double == 3 && \ 31527fdb57eSStefan Farfeleder RUN_TEST(FNC(1, f, 1.f), double) && \ 31627fdb57eSStefan Farfeleder RUN_TEST(FNC(f, d, 1.f), double) && \ 31727fdb57eSStefan Farfeleder RUN_TEST(FNC(f, 1.f, 1.), double) && \ 31827fdb57eSStefan Farfeleder n_double == 3 && \ 31927fdb57eSStefan Farfeleder RUN_TEST(FNC(f, 1.f, f), float) && \ 32027fdb57eSStefan Farfeleder n_float == 1 32127fdb57eSStefan Farfeleder 32227fdb57eSStefan Farfeleder #define PASS_REAL_ARG_COMPLEX_RET(FNC) \ 32327fdb57eSStefan Farfeleder CLEAR_COUNTERS && \ 32427fdb57eSStefan Farfeleder RUN_TEST(FNC(1.l), long double complex) && \ 32527fdb57eSStefan Farfeleder RUN_TEST(FNC(ld), long double complex) && \ 32627fdb57eSStefan Farfeleder n_long_double_complex == 2 && \ 32727fdb57eSStefan Farfeleder RUN_TEST(FNC(1.), double complex) && \ 32827fdb57eSStefan Farfeleder RUN_TEST(FNC(d), double complex) && \ 32927fdb57eSStefan Farfeleder RUN_TEST(FNC(1l), double complex) && \ 33027fdb57eSStefan Farfeleder RUN_TEST(FNC(i), double complex) && \ 33127fdb57eSStefan Farfeleder RUN_TEST(FNC(b), double complex) && \ 33227fdb57eSStefan Farfeleder n_double_complex == 5 && \ 33327fdb57eSStefan Farfeleder RUN_TEST(FNC(1.f), float complex) && \ 33427fdb57eSStefan Farfeleder RUN_TEST(FNC(f), float complex) && \ 33527fdb57eSStefan Farfeleder n_float_complex == 2 33627fdb57eSStefan Farfeleder 33727fdb57eSStefan Farfeleder #define PASS_COMPLEX_ARG_COMPLEX_RET(FNC) \ 33827fdb57eSStefan Farfeleder CLEAR_COUNTERS && \ 33927fdb57eSStefan Farfeleder RUN_TEST(FNC(ldc), long double complex) && \ 34027fdb57eSStefan Farfeleder n_long_double_complex == 1 && \ 34127fdb57eSStefan Farfeleder RUN_TEST(FNC(dc), double complex) && \ 34227fdb57eSStefan Farfeleder n_double_complex == 1 && \ 34327fdb57eSStefan Farfeleder RUN_TEST(FNC(fc), float complex) && \ 34427fdb57eSStefan Farfeleder RUN_TEST(FNC(I), float complex) && \ 34527fdb57eSStefan Farfeleder n_float_complex == 2 34627fdb57eSStefan Farfeleder 34727fdb57eSStefan Farfeleder #define PASS_COMPLEX_ARG_REAL_RET(FNC) \ 34827fdb57eSStefan Farfeleder CLEAR_COUNTERS && \ 34927fdb57eSStefan Farfeleder RUN_TEST(FNC(ldc), long double) && \ 35027fdb57eSStefan Farfeleder n_long_double_complex == 1 && \ 35127fdb57eSStefan Farfeleder RUN_TEST(FNC(dc), double) && \ 35227fdb57eSStefan Farfeleder n_double_complex == 1 && \ 35327fdb57eSStefan Farfeleder RUN_TEST(FNC(fc), float) && \ 35427fdb57eSStefan Farfeleder RUN_TEST(FNC(I), float) && \ 35527fdb57eSStefan Farfeleder n_float_complex == 2 35627fdb57eSStefan Farfeleder 35727fdb57eSStefan Farfeleder #define PASS_COMPLEX_COMPLEX_ARG_COMPLEX_RET(FNC) \ 35827fdb57eSStefan Farfeleder CLEAR_COUNTERS && \ 35927fdb57eSStefan Farfeleder RUN_TEST(FNC(ldc, ldc), long double complex) && \ 36027fdb57eSStefan Farfeleder RUN_TEST(FNC(ldc, dc), long double complex) && \ 36127fdb57eSStefan Farfeleder RUN_TEST(FNC(ldc, fc), long double complex) && \ 36227fdb57eSStefan Farfeleder RUN_TEST(FNC(ldc, ld), long double complex) && \ 36327fdb57eSStefan Farfeleder RUN_TEST(FNC(ldc, d), long double complex) && \ 36427fdb57eSStefan Farfeleder RUN_TEST(FNC(ldc, f), long double complex) && \ 36527fdb57eSStefan Farfeleder RUN_TEST(FNC(ldc, i), long double complex) && \ 36627fdb57eSStefan Farfeleder RUN_TEST(FNC(dc, ldc), long double complex) && \ 36727fdb57eSStefan Farfeleder RUN_TEST(FNC(I, ldc), long double complex) && \ 36827fdb57eSStefan Farfeleder RUN_TEST(FNC(1.l, ldc), long double complex) && \ 36927fdb57eSStefan Farfeleder RUN_TEST(FNC(1., ldc), long double complex) && \ 37027fdb57eSStefan Farfeleder RUN_TEST(FNC(1.f, ldc), long double complex) && \ 37127fdb57eSStefan Farfeleder RUN_TEST(FNC(1, ldc), long double complex) && \ 37227fdb57eSStefan Farfeleder RUN_TEST(FNC(ld, dc), long double complex) && \ 37327fdb57eSStefan Farfeleder RUN_TEST(FNC(ld, fc), long double complex) && \ 37427fdb57eSStefan Farfeleder RUN_TEST(FNC(I, 1.l), long double complex) && \ 37527fdb57eSStefan Farfeleder RUN_TEST(FNC(dc, 1.l), long double complex) && \ 37627fdb57eSStefan Farfeleder n_long_double_complex == 17 && \ 37727fdb57eSStefan Farfeleder RUN_TEST(FNC(dc, dc), double complex) && \ 37827fdb57eSStefan Farfeleder RUN_TEST(FNC(dc, fc), double complex) && \ 37927fdb57eSStefan Farfeleder RUN_TEST(FNC(dc, d), double complex) && \ 38027fdb57eSStefan Farfeleder RUN_TEST(FNC(dc, f), double complex) && \ 38127fdb57eSStefan Farfeleder RUN_TEST(FNC(dc, ull), double complex) && \ 38227fdb57eSStefan Farfeleder RUN_TEST(FNC(I, dc), double complex) && \ 38327fdb57eSStefan Farfeleder RUN_TEST(FNC(1., dc), double complex) && \ 38427fdb57eSStefan Farfeleder RUN_TEST(FNC(1, dc), double complex) && \ 38527fdb57eSStefan Farfeleder RUN_TEST(FNC(fc, d), double complex) && \ 38627fdb57eSStefan Farfeleder RUN_TEST(FNC(1, I), double complex) && \ 38727fdb57eSStefan Farfeleder n_double_complex == 10 && \ 38827fdb57eSStefan Farfeleder RUN_TEST(FNC(fc, fc), float complex) && \ 38927fdb57eSStefan Farfeleder RUN_TEST(FNC(fc, I), float complex) && \ 39027fdb57eSStefan Farfeleder RUN_TEST(FNC(1.f, fc), float complex) && \ 39127fdb57eSStefan Farfeleder n_float_complex == 3 39227fdb57eSStefan Farfeleder 39327fdb57eSStefan Farfeleder int failed = 0; 39427fdb57eSStefan Farfeleder #define PRINT(STR, X) do { \ 39500e13b1dSNik Clayton currtest++; \ 39627fdb57eSStefan Farfeleder int result = (X); \ 39727fdb57eSStefan Farfeleder if (!result) \ 39827fdb57eSStefan Farfeleder failed = 1; \ 39900e13b1dSNik Clayton printf("%s %d - %s\n", result ? "ok" : "not ok", currtest, (STR)); \ 40000e13b1dSNik Clayton fflush(stdout); \ 40127fdb57eSStefan Farfeleder } while (0) 40227fdb57eSStefan Farfeleder 40327fdb57eSStefan Farfeleder int 40427fdb57eSStefan Farfeleder main(void) 40527fdb57eSStefan Farfeleder { 40600e13b1dSNik Clayton printf("1..60\n"); 40700e13b1dSNik Clayton 40827fdb57eSStefan Farfeleder /* 7.22#4 */ 40927fdb57eSStefan Farfeleder PRINT("acos", 41027fdb57eSStefan Farfeleder PASS_REAL_ARG_REAL_RET(acos) && 41127fdb57eSStefan Farfeleder PASS_COMPLEX_ARG_COMPLEX_RET(acos)); 41227fdb57eSStefan Farfeleder 41327fdb57eSStefan Farfeleder PRINT("asin", 41427fdb57eSStefan Farfeleder PASS_REAL_ARG_REAL_RET(asin) && 41527fdb57eSStefan Farfeleder PASS_COMPLEX_ARG_COMPLEX_RET(asin)); 41627fdb57eSStefan Farfeleder 41727fdb57eSStefan Farfeleder PRINT("atan", 41827fdb57eSStefan Farfeleder PASS_REAL_ARG_REAL_RET(atan) && 41927fdb57eSStefan Farfeleder PASS_COMPLEX_ARG_COMPLEX_RET(atan)); 42027fdb57eSStefan Farfeleder 42127fdb57eSStefan Farfeleder PRINT("acosh", 42227fdb57eSStefan Farfeleder PASS_REAL_ARG_REAL_RET(acosh) && 42327fdb57eSStefan Farfeleder PASS_COMPLEX_ARG_COMPLEX_RET(acosh)); 42427fdb57eSStefan Farfeleder 42527fdb57eSStefan Farfeleder PRINT("asinh", 42627fdb57eSStefan Farfeleder PASS_REAL_ARG_REAL_RET(asinh) && 42727fdb57eSStefan Farfeleder PASS_COMPLEX_ARG_COMPLEX_RET(asinh)); 42827fdb57eSStefan Farfeleder 42927fdb57eSStefan Farfeleder PRINT("atanh", 43027fdb57eSStefan Farfeleder PASS_REAL_ARG_REAL_RET(atanh) && 43127fdb57eSStefan Farfeleder PASS_COMPLEX_ARG_COMPLEX_RET(atanh)); 43227fdb57eSStefan Farfeleder 43327fdb57eSStefan Farfeleder PRINT("cos", 43427fdb57eSStefan Farfeleder PASS_REAL_ARG_REAL_RET(cos) && 43527fdb57eSStefan Farfeleder PASS_COMPLEX_ARG_COMPLEX_RET(cos)); 43627fdb57eSStefan Farfeleder 43727fdb57eSStefan Farfeleder PRINT("sin", 43827fdb57eSStefan Farfeleder PASS_REAL_ARG_REAL_RET(sin) && 43927fdb57eSStefan Farfeleder PASS_COMPLEX_ARG_COMPLEX_RET(sin)); 44027fdb57eSStefan Farfeleder 44127fdb57eSStefan Farfeleder PRINT("tan", 44227fdb57eSStefan Farfeleder PASS_REAL_ARG_REAL_RET(tan) && 44327fdb57eSStefan Farfeleder PASS_COMPLEX_ARG_COMPLEX_RET(tan)); 44427fdb57eSStefan Farfeleder 44527fdb57eSStefan Farfeleder PRINT("cosh", 44627fdb57eSStefan Farfeleder PASS_REAL_ARG_REAL_RET(cosh) && 44727fdb57eSStefan Farfeleder PASS_COMPLEX_ARG_COMPLEX_RET(cosh)); 44827fdb57eSStefan Farfeleder 44927fdb57eSStefan Farfeleder PRINT("sinh", 45027fdb57eSStefan Farfeleder PASS_REAL_ARG_REAL_RET(sinh) && 45127fdb57eSStefan Farfeleder PASS_COMPLEX_ARG_COMPLEX_RET(sinh)); 45227fdb57eSStefan Farfeleder 45327fdb57eSStefan Farfeleder PRINT("tanh", 45427fdb57eSStefan Farfeleder PASS_REAL_ARG_REAL_RET(tanh) && 45527fdb57eSStefan Farfeleder PASS_COMPLEX_ARG_COMPLEX_RET(tanh)); 45627fdb57eSStefan Farfeleder 45727fdb57eSStefan Farfeleder PRINT("exp", 45827fdb57eSStefan Farfeleder PASS_REAL_ARG_REAL_RET(exp) && 45927fdb57eSStefan Farfeleder PASS_COMPLEX_ARG_COMPLEX_RET(exp)); 46027fdb57eSStefan Farfeleder 46127fdb57eSStefan Farfeleder PRINT("log", 46227fdb57eSStefan Farfeleder PASS_REAL_ARG_REAL_RET(log) && 46327fdb57eSStefan Farfeleder PASS_COMPLEX_ARG_COMPLEX_RET(log)); 46427fdb57eSStefan Farfeleder 46527fdb57eSStefan Farfeleder PRINT("pow", 46627fdb57eSStefan Farfeleder PASS_REAL_REAL_ARG_REAL_RET(pow) && 46727fdb57eSStefan Farfeleder PASS_COMPLEX_COMPLEX_ARG_COMPLEX_RET(pow)); 46827fdb57eSStefan Farfeleder 46927fdb57eSStefan Farfeleder PRINT("sqrt", 47027fdb57eSStefan Farfeleder PASS_REAL_ARG_REAL_RET(sqrt) && 47127fdb57eSStefan Farfeleder PASS_COMPLEX_ARG_COMPLEX_RET(sqrt)); 47227fdb57eSStefan Farfeleder 47327fdb57eSStefan Farfeleder PRINT("fabs", 47427fdb57eSStefan Farfeleder PASS_REAL_ARG_REAL_RET(fabs) && 47527fdb57eSStefan Farfeleder PASS_COMPLEX_ARG_REAL_RET(fabs)); 47627fdb57eSStefan Farfeleder 47727fdb57eSStefan Farfeleder /* 7.22#5 */ 47827fdb57eSStefan Farfeleder PRINT("atan2", 47927fdb57eSStefan Farfeleder PASS_REAL_REAL_ARG_REAL_RET(atan2)); 48027fdb57eSStefan Farfeleder 48127fdb57eSStefan Farfeleder PRINT("cbrt", 48227fdb57eSStefan Farfeleder PASS_REAL_ARG_REAL_RET(cbrt)); 48327fdb57eSStefan Farfeleder 48427fdb57eSStefan Farfeleder PRINT("ceil", 48527fdb57eSStefan Farfeleder PASS_REAL_ARG_REAL_RET(ceil)); 48627fdb57eSStefan Farfeleder 48727fdb57eSStefan Farfeleder PRINT("copysign", 48827fdb57eSStefan Farfeleder PASS_REAL_REAL_ARG_REAL_RET(copysign)); 48927fdb57eSStefan Farfeleder 49027fdb57eSStefan Farfeleder PRINT("erf", 49127fdb57eSStefan Farfeleder PASS_REAL_ARG_REAL_RET(erf)); 49227fdb57eSStefan Farfeleder 49327fdb57eSStefan Farfeleder PRINT("erfc", 49427fdb57eSStefan Farfeleder PASS_REAL_ARG_REAL_RET(erfc)); 49527fdb57eSStefan Farfeleder 49627fdb57eSStefan Farfeleder PRINT("exp2", 49727fdb57eSStefan Farfeleder PASS_REAL_ARG_REAL_RET(exp2)); 49827fdb57eSStefan Farfeleder 49927fdb57eSStefan Farfeleder PRINT("expm1", 50027fdb57eSStefan Farfeleder PASS_REAL_ARG_REAL_RET(expm1)); 50127fdb57eSStefan Farfeleder 50227fdb57eSStefan Farfeleder PRINT("fdim", 50327fdb57eSStefan Farfeleder PASS_REAL_REAL_ARG_REAL_RET(fdim)); 50427fdb57eSStefan Farfeleder 50527fdb57eSStefan Farfeleder PRINT("floor", 50627fdb57eSStefan Farfeleder PASS_REAL_ARG_REAL_RET(floor)); 50727fdb57eSStefan Farfeleder 50827fdb57eSStefan Farfeleder PRINT("fma", 50927fdb57eSStefan Farfeleder PASS_REAL_REAL_REAL_ARG_REAL_RET(fma)); 51027fdb57eSStefan Farfeleder 51127fdb57eSStefan Farfeleder PRINT("fmax", 51227fdb57eSStefan Farfeleder PASS_REAL_REAL_ARG_REAL_RET(fmax)); 51327fdb57eSStefan Farfeleder 51427fdb57eSStefan Farfeleder PRINT("fmin", 51527fdb57eSStefan Farfeleder PASS_REAL_REAL_ARG_REAL_RET(fmin)); 51627fdb57eSStefan Farfeleder 51727fdb57eSStefan Farfeleder PRINT("fmod", 51827fdb57eSStefan Farfeleder PASS_REAL_REAL_ARG_REAL_RET(fmod)); 51927fdb57eSStefan Farfeleder 52027fdb57eSStefan Farfeleder PRINT("frexp", 52127fdb57eSStefan Farfeleder PASS_REAL_FIXED_ARG_REAL_RET(frexp, &i)); 52227fdb57eSStefan Farfeleder 52327fdb57eSStefan Farfeleder PRINT("hypot", 52427fdb57eSStefan Farfeleder PASS_REAL_REAL_ARG_REAL_RET(hypot)); 52527fdb57eSStefan Farfeleder 52627fdb57eSStefan Farfeleder PRINT("ilogb", 52727fdb57eSStefan Farfeleder PASS_REAL_ARG_FIXED_RET(ilogb, int)); 52827fdb57eSStefan Farfeleder 52927fdb57eSStefan Farfeleder PRINT("ldexp", 53027fdb57eSStefan Farfeleder PASS_REAL_FIXED_ARG_REAL_RET(ldexp, 1) && 53127fdb57eSStefan Farfeleder PASS_REAL_FIXED_ARG_REAL_RET(ldexp, ld) && 53227fdb57eSStefan Farfeleder PASS_REAL_FIXED_ARG_REAL_RET(ldexp, ldc)); 53327fdb57eSStefan Farfeleder 53427fdb57eSStefan Farfeleder PRINT("lgamma", 53527fdb57eSStefan Farfeleder PASS_REAL_ARG_REAL_RET(lgamma)); 53627fdb57eSStefan Farfeleder 53727fdb57eSStefan Farfeleder PRINT("llrint", 53827fdb57eSStefan Farfeleder PASS_REAL_ARG_FIXED_RET(llrint, long long)); 53927fdb57eSStefan Farfeleder 54027fdb57eSStefan Farfeleder PRINT("llround", 54127fdb57eSStefan Farfeleder PASS_REAL_ARG_FIXED_RET(llround, long long)); 54227fdb57eSStefan Farfeleder 54327fdb57eSStefan Farfeleder PRINT("log10", 54427fdb57eSStefan Farfeleder PASS_REAL_ARG_REAL_RET(log10)); 54527fdb57eSStefan Farfeleder 54627fdb57eSStefan Farfeleder PRINT("log1p", 54727fdb57eSStefan Farfeleder PASS_REAL_ARG_REAL_RET(log1p)); 54827fdb57eSStefan Farfeleder 54927fdb57eSStefan Farfeleder PRINT("log2", 55027fdb57eSStefan Farfeleder PASS_REAL_ARG_REAL_RET(log2)); 55127fdb57eSStefan Farfeleder 55227fdb57eSStefan Farfeleder PRINT("logb", 55327fdb57eSStefan Farfeleder PASS_REAL_ARG_REAL_RET(logb)); 55427fdb57eSStefan Farfeleder 55527fdb57eSStefan Farfeleder PRINT("lrint", 55627fdb57eSStefan Farfeleder PASS_REAL_ARG_FIXED_RET(lrint, long)); 55727fdb57eSStefan Farfeleder 55827fdb57eSStefan Farfeleder PRINT("lround", 55927fdb57eSStefan Farfeleder PASS_REAL_ARG_FIXED_RET(lround, long)); 56027fdb57eSStefan Farfeleder 56127fdb57eSStefan Farfeleder PRINT("nearbyint", 56227fdb57eSStefan Farfeleder PASS_REAL_ARG_REAL_RET(nearbyint)); 56327fdb57eSStefan Farfeleder 56427fdb57eSStefan Farfeleder PRINT("nextafter", 56527fdb57eSStefan Farfeleder PASS_REAL_REAL_ARG_REAL_RET(nextafter)); 56627fdb57eSStefan Farfeleder 56727fdb57eSStefan Farfeleder PRINT("nexttoward", 56827fdb57eSStefan Farfeleder PASS_REAL_FIXED_ARG_REAL_RET(nexttoward, 1) && 56927fdb57eSStefan Farfeleder PASS_REAL_FIXED_ARG_REAL_RET(nexttoward, ull) && 57027fdb57eSStefan Farfeleder PASS_REAL_FIXED_ARG_REAL_RET(nexttoward, d) && 57127fdb57eSStefan Farfeleder PASS_REAL_FIXED_ARG_REAL_RET(nexttoward, fc)); 57227fdb57eSStefan Farfeleder 57327fdb57eSStefan Farfeleder PRINT("remainder", 57427fdb57eSStefan Farfeleder PASS_REAL_REAL_ARG_REAL_RET(remainder)); 57527fdb57eSStefan Farfeleder 57627fdb57eSStefan Farfeleder PRINT("remquo", 57727fdb57eSStefan Farfeleder PASS_REAL_REAL_FIXED_ARG_REAL_RET(remquo, &i)); 57827fdb57eSStefan Farfeleder 57927fdb57eSStefan Farfeleder PRINT("rint", 58027fdb57eSStefan Farfeleder PASS_REAL_ARG_REAL_RET(rint)); 58127fdb57eSStefan Farfeleder 58227fdb57eSStefan Farfeleder PRINT("round", 58327fdb57eSStefan Farfeleder PASS_REAL_ARG_REAL_RET(round)); 58427fdb57eSStefan Farfeleder 58527fdb57eSStefan Farfeleder PRINT("scalbn", 58627fdb57eSStefan Farfeleder PASS_REAL_FIXED_ARG_REAL_RET(scalbn, 1) && 58727fdb57eSStefan Farfeleder PASS_REAL_FIXED_ARG_REAL_RET(scalbn, b) && 58827fdb57eSStefan Farfeleder PASS_REAL_FIXED_ARG_REAL_RET(scalbn, I)); 58927fdb57eSStefan Farfeleder 59027fdb57eSStefan Farfeleder PRINT("scalbln", 59127fdb57eSStefan Farfeleder PASS_REAL_FIXED_ARG_REAL_RET(scalbln, i) && 59227fdb57eSStefan Farfeleder PASS_REAL_FIXED_ARG_REAL_RET(scalbln, 1.l) && 59327fdb57eSStefan Farfeleder PASS_REAL_FIXED_ARG_REAL_RET(scalbln, dc)); 59427fdb57eSStefan Farfeleder 59527fdb57eSStefan Farfeleder PRINT("tgamma", 59627fdb57eSStefan Farfeleder PASS_REAL_ARG_REAL_RET(tgamma)); 59727fdb57eSStefan Farfeleder 59827fdb57eSStefan Farfeleder PRINT("trunc", 59927fdb57eSStefan Farfeleder PASS_REAL_ARG_REAL_RET(trunc)); 60027fdb57eSStefan Farfeleder 60127fdb57eSStefan Farfeleder /* 7.22#6 */ 60227fdb57eSStefan Farfeleder PRINT("carg", 60327fdb57eSStefan Farfeleder PASS_REAL_ARG_REAL_RET_(carg, _complex) && 60427fdb57eSStefan Farfeleder PASS_COMPLEX_ARG_REAL_RET(carg)); 60527fdb57eSStefan Farfeleder 60627fdb57eSStefan Farfeleder PRINT("cimag", 60727fdb57eSStefan Farfeleder PASS_REAL_ARG_REAL_RET_(cimag, _complex) && 60827fdb57eSStefan Farfeleder PASS_COMPLEX_ARG_REAL_RET(cimag)); 60927fdb57eSStefan Farfeleder 61027fdb57eSStefan Farfeleder PRINT("conj", 61127fdb57eSStefan Farfeleder PASS_REAL_ARG_COMPLEX_RET(conj) && 61227fdb57eSStefan Farfeleder PASS_COMPLEX_ARG_COMPLEX_RET(conj)); 61327fdb57eSStefan Farfeleder 61427fdb57eSStefan Farfeleder PRINT("cproj", 61527fdb57eSStefan Farfeleder PASS_REAL_ARG_COMPLEX_RET(cproj) && 61627fdb57eSStefan Farfeleder PASS_COMPLEX_ARG_COMPLEX_RET(cproj)); 61727fdb57eSStefan Farfeleder 61827fdb57eSStefan Farfeleder PRINT("creal", 61927fdb57eSStefan Farfeleder PASS_REAL_ARG_REAL_RET_(creal, _complex) && 62027fdb57eSStefan Farfeleder PASS_COMPLEX_ARG_REAL_RET(creal)); 62127fdb57eSStefan Farfeleder } 622