| // { dg-do compile } |
| |
| // 2006-03-07 Paolo Carlini <pcarlini@suse.de> |
| // |
| // Copyright (C) 2006 Free Software Foundation, Inc. |
| // |
| // This file is part of the GNU ISO C++ Library. This library is free |
| // software; you can redistribute it and/or modify it under the |
| // terms of the GNU General Public License as published by the |
| // Free Software Foundation; either version 2, or (at your option) |
| // any later version. |
| // |
| // This 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 General Public License for more details. |
| // |
| // You should have received a copy of the GNU General Public License along |
| // with this library; see the file COPYING. If not, write to the Free |
| // Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, |
| // USA. |
| |
| // 8.16.4 Additional overloads |
| |
| #include <tr1/cmath> |
| #include <testsuite_tr1.h> |
| |
| void test01() |
| { |
| #if _GLIBCXX_USE_C99_MATH_TR1 |
| |
| using namespace __gnu_test; |
| |
| double d0 = 0.0; |
| float f0 = 0.0f; |
| long double ld0 = 0.0l; |
| int i0 = 0; |
| int* pquo = 0; |
| long lex = 0l; |
| int ex = 0; |
| |
| check_ret_type<double>(std::tr1::atan2(d0, d0)); |
| check_ret_type<double>(std::tr1::atan2(d0, f0)); |
| check_ret_type<float>(std::tr1::atan2(f0, f0)); |
| check_ret_type<long double>(std::tr1::atan2(ld0, ld0)); |
| check_ret_type<long double>(std::tr1::atan2(ld0, d0)); |
| check_ret_type<double>(std::tr1::atan2(i0, i0)); |
| check_ret_type<double>(std::tr1::atan2(d0, i0)); |
| |
| check_ret_type<double>(std::tr1::acosh(d0)); |
| check_ret_type<float>(std::tr1::acosh(f0)); |
| check_ret_type<long double>(std::tr1::acosh(ld0)); |
| check_ret_type<double>(std::tr1::acosh(i0)); |
| |
| check_ret_type<double>(std::tr1::asinh(d0)); |
| check_ret_type<float>(std::tr1::asinh(f0)); |
| check_ret_type<long double>(std::tr1::asinh(ld0)); |
| check_ret_type<double>(std::tr1::asinh(i0)); |
| |
| check_ret_type<double>(std::tr1::atanh(d0)); |
| check_ret_type<float>(std::tr1::atanh(f0)); |
| check_ret_type<long double>(std::tr1::atanh(ld0)); |
| check_ret_type<double>(std::tr1::atanh(i0)); |
| |
| check_ret_type<double>(std::tr1::cbrt(d0)); |
| check_ret_type<float>(std::tr1::cbrt(f0)); |
| check_ret_type<long double>(std::tr1::cbrt(ld0)); |
| check_ret_type<double>(std::tr1::cbrt(i0)); |
| |
| check_ret_type<double>(std::tr1::copysign(d0, d0)); |
| check_ret_type<double>(std::tr1::copysign(d0, f0)); |
| check_ret_type<float>(std::tr1::copysign(f0, f0)); |
| check_ret_type<long double>(std::tr1::copysign(ld0, ld0)); |
| check_ret_type<long double>(std::tr1::copysign(ld0, d0)); |
| check_ret_type<double>(std::tr1::copysign(i0, i0)); |
| check_ret_type<double>(std::tr1::copysign(d0, i0)); |
| |
| check_ret_type<double>(std::tr1::erf(d0)); |
| check_ret_type<float>(std::tr1::erf(f0)); |
| check_ret_type<long double>(std::tr1::erf(ld0)); |
| check_ret_type<double>(std::tr1::erf(i0)); |
| |
| check_ret_type<double>(std::tr1::erfc(d0)); |
| check_ret_type<float>(std::tr1::erfc(f0)); |
| check_ret_type<long double>(std::tr1::erfc(ld0)); |
| check_ret_type<double>(std::tr1::erfc(i0)); |
| |
| check_ret_type<double>(std::tr1::exp2(d0)); |
| check_ret_type<float>(std::tr1::exp2(f0)); |
| check_ret_type<long double>(std::tr1::exp2(ld0)); |
| check_ret_type<double>(std::tr1::exp2(i0)); |
| |
| check_ret_type<double>(std::tr1::expm1(d0)); |
| check_ret_type<float>(std::tr1::expm1(f0)); |
| check_ret_type<long double>(std::tr1::expm1(ld0)); |
| check_ret_type<double>(std::tr1::expm1(i0)); |
| |
| check_ret_type<double>(std::tr1::fdim(d0, d0)); |
| check_ret_type<double>(std::tr1::fdim(d0, f0)); |
| check_ret_type<float>(std::tr1::fdim(f0, f0)); |
| check_ret_type<long double>(std::tr1::fdim(ld0, ld0)); |
| check_ret_type<long double>(std::tr1::fdim(ld0, d0)); |
| check_ret_type<double>(std::tr1::fdim(i0, i0)); |
| check_ret_type<double>(std::tr1::fdim(d0, i0)); |
| |
| check_ret_type<double>(std::tr1::fma(d0, d0, d0)); |
| check_ret_type<double>(std::tr1::fma(d0, f0, d0)); |
| check_ret_type<float>(std::tr1::fma(f0, f0, f0)); |
| check_ret_type<long double>(std::tr1::fma(ld0, ld0, ld0)); |
| check_ret_type<long double>(std::tr1::fma(ld0, d0, f0)); |
| check_ret_type<double>(std::tr1::fma(i0, i0, i0)); |
| check_ret_type<double>(std::tr1::fma(d0, i0, f0)); |
| |
| check_ret_type<double>(std::tr1::fmax(d0, d0)); |
| check_ret_type<double>(std::tr1::fmax(d0, f0)); |
| check_ret_type<float>(std::tr1::fmax(f0, f0)); |
| check_ret_type<long double>(std::tr1::fmax(ld0, ld0)); |
| check_ret_type<long double>(std::tr1::fmax(ld0, d0)); |
| check_ret_type<double>(std::tr1::fmax(i0, i0)); |
| check_ret_type<double>(std::tr1::fmax(d0, i0)); |
| |
| check_ret_type<double>(std::tr1::fmin(d0, d0)); |
| check_ret_type<double>(std::tr1::fmin(d0, f0)); |
| check_ret_type<float>(std::tr1::fmin(f0, f0)); |
| check_ret_type<long double>(std::tr1::fmin(ld0, ld0)); |
| check_ret_type<long double>(std::tr1::fmin(ld0, d0)); |
| check_ret_type<double>(std::tr1::fmin(i0, i0)); |
| check_ret_type<double>(std::tr1::fmin(d0, i0)); |
| |
| check_ret_type<double>(std::tr1::hypot(d0, d0)); |
| check_ret_type<double>(std::tr1::hypot(d0, f0)); |
| check_ret_type<float>(std::tr1::hypot(f0, f0)); |
| check_ret_type<long double>(std::tr1::hypot(ld0, ld0)); |
| check_ret_type<long double>(std::tr1::hypot(ld0, d0)); |
| check_ret_type<double>(std::tr1::hypot(i0, i0)); |
| check_ret_type<double>(std::tr1::hypot(d0, i0)); |
| |
| check_ret_type<int>(std::tr1::ilogb(d0)); |
| check_ret_type<int>(std::tr1::ilogb(f0)); |
| check_ret_type<int>(std::tr1::ilogb(ld0)); |
| check_ret_type<int>(std::tr1::ilogb(i0)); |
| |
| check_ret_type<double>(std::tr1::lgamma(d0)); |
| check_ret_type<float>(std::tr1::lgamma(f0)); |
| check_ret_type<long double>(std::tr1::lgamma(ld0)); |
| check_ret_type<double>(std::tr1::lgamma(i0)); |
| |
| check_ret_type<long long>(std::tr1::llrint(d0)); |
| check_ret_type<long long>(std::tr1::llrint(f0)); |
| check_ret_type<long long>(std::tr1::llrint(ld0)); |
| check_ret_type<long long>(std::tr1::llrint(i0)); |
| |
| check_ret_type<long long>(std::tr1::llround(d0)); |
| check_ret_type<long long>(std::tr1::llround(f0)); |
| check_ret_type<long long>(std::tr1::llround(ld0)); |
| check_ret_type<long long>(std::tr1::llround(i0)); |
| |
| check_ret_type<double>(std::tr1::log1p(d0)); |
| check_ret_type<float>(std::tr1::log1p(f0)); |
| check_ret_type<long double>(std::tr1::log1p(ld0)); |
| check_ret_type<double>(std::tr1::log1p(i0)); |
| |
| // DR 568. |
| check_ret_type<double>(std::tr1::log2(d0)); |
| check_ret_type<float>(std::tr1::log2(f0)); |
| check_ret_type<long double>(std::tr1::log2(ld0)); |
| check_ret_type<double>(std::tr1::log2(i0)); |
| |
| check_ret_type<double>(std::tr1::logb(d0)); |
| check_ret_type<float>(std::tr1::logb(f0)); |
| check_ret_type<long double>(std::tr1::logb(ld0)); |
| check_ret_type<double>(std::tr1::logb(i0)); |
| |
| check_ret_type<long>(std::tr1::lrint(d0)); |
| check_ret_type<long>(std::tr1::lrint(f0)); |
| check_ret_type<long>(std::tr1::lrint(ld0)); |
| check_ret_type<long>(std::tr1::lrint(i0)); |
| |
| check_ret_type<long>(std::tr1::lround(d0)); |
| check_ret_type<long>(std::tr1::lround(f0)); |
| check_ret_type<long>(std::tr1::lround(ld0)); |
| check_ret_type<long>(std::tr1::lround(i0)); |
| |
| check_ret_type<double>(std::tr1::nearbyint(d0)); |
| check_ret_type<float>(std::tr1::nearbyint(f0)); |
| check_ret_type<long double>(std::tr1::nearbyint(ld0)); |
| check_ret_type<double>(std::tr1::nearbyint(i0)); |
| |
| check_ret_type<double>(std::tr1::nextafter(d0, d0)); |
| check_ret_type<double>(std::tr1::nextafter(d0, f0)); |
| check_ret_type<float>(std::tr1::nextafter(f0, f0)); |
| check_ret_type<long double>(std::tr1::nextafter(ld0, ld0)); |
| check_ret_type<long double>(std::tr1::nextafter(ld0, d0)); |
| check_ret_type<double>(std::tr1::nextafter(i0, i0)); |
| check_ret_type<double>(std::tr1::nextafter(d0, i0)); |
| |
| check_ret_type<double>(std::tr1::nexttoward(d0, ld0)); |
| check_ret_type<float>(std::tr1::nexttoward(f0, ld0)); |
| check_ret_type<long double>(std::tr1::nexttoward(ld0, ld0)); |
| check_ret_type<double>(std::tr1::nexttoward(i0, ld0)); |
| |
| check_ret_type<double>(std::tr1::pow(d0, d0)); |
| check_ret_type<double>(std::tr1::pow(d0, f0)); |
| check_ret_type<float>(std::tr1::pow(f0, f0)); |
| check_ret_type<long double>(std::tr1::pow(ld0, ld0)); |
| check_ret_type<long double>(std::tr1::pow(ld0, d0)); |
| check_ret_type<double>(std::tr1::pow(i0, i0)); |
| check_ret_type<double>(std::tr1::pow(d0, i0)); |
| // DR 550. |
| // check_ret_type<double>(std::tr1::pow(f0, i0)); |
| check_ret_type<float>(std::tr1::pow(f0, i0)); |
| |
| check_ret_type<double>(std::tr1::remainder(d0, d0)); |
| check_ret_type<double>(std::tr1::remainder(d0, f0)); |
| check_ret_type<float>(std::tr1::remainder(f0, f0)); |
| check_ret_type<long double>(std::tr1::remainder(ld0, ld0)); |
| check_ret_type<long double>(std::tr1::remainder(ld0, d0)); |
| check_ret_type<double>(std::tr1::remainder(i0, i0)); |
| check_ret_type<double>(std::tr1::remainder(d0, i0)); |
| |
| check_ret_type<double>(std::tr1::remquo(d0, d0, pquo)); |
| check_ret_type<double>(std::tr1::remquo(d0, f0, pquo)); |
| check_ret_type<float>(std::tr1::remquo(f0, f0, pquo)); |
| check_ret_type<long double>(std::tr1::remquo(ld0, ld0, pquo)); |
| check_ret_type<long double>(std::tr1::remquo(ld0, d0, pquo)); |
| check_ret_type<double>(std::tr1::remquo(i0, i0, pquo)); |
| check_ret_type<double>(std::tr1::remquo(d0, i0, pquo)); |
| |
| check_ret_type<double>(std::tr1::rint(d0)); |
| check_ret_type<float>(std::tr1::rint(f0)); |
| check_ret_type<long double>(std::tr1::rint(ld0)); |
| check_ret_type<double>(std::tr1::rint(i0)); |
| |
| check_ret_type<double>(std::tr1::round(d0)); |
| check_ret_type<float>(std::tr1::round(f0)); |
| check_ret_type<long double>(std::tr1::round(ld0)); |
| check_ret_type<double>(std::tr1::round(i0)); |
| |
| check_ret_type<double>(std::tr1::scalbln(d0, lex)); |
| check_ret_type<float>(std::tr1::scalbln(f0, lex)); |
| check_ret_type<long double>(std::tr1::scalbln(ld0, lex)); |
| check_ret_type<double>(std::tr1::scalbln(i0, lex)); |
| |
| check_ret_type<double>(std::tr1::scalbn(d0, ex)); |
| check_ret_type<float>(std::tr1::scalbn(f0, ex)); |
| check_ret_type<long double>(std::tr1::scalbn(ld0, ex)); |
| check_ret_type<double>(std::tr1::scalbn(i0, ex)); |
| |
| check_ret_type<double>(std::tr1::tgamma(d0)); |
| check_ret_type<float>(std::tr1::tgamma(f0)); |
| check_ret_type<long double>(std::tr1::tgamma(ld0)); |
| check_ret_type<double>(std::tr1::tgamma(i0)); |
| |
| check_ret_type<double>(std::tr1::trunc(d0)); |
| check_ret_type<float>(std::tr1::trunc(f0)); |
| check_ret_type<long double>(std::tr1::trunc(ld0)); |
| check_ret_type<double>(std::tr1::trunc(i0)); |
| |
| #endif |
| } |