diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-27 18:24:20 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-27 18:24:20 +0000 |
commit | 483eb2f56657e8e7f419ab1a4fab8dce9ade8609 (patch) | |
tree | e5d88d25d870d5dedacb6bbdbe2a966086a0a5cf /src/boost/libs/multiprecision/test/concepts | |
parent | Initial commit. (diff) | |
download | ceph-upstream.tar.xz ceph-upstream.zip |
Adding upstream version 14.2.21.upstream/14.2.21upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/boost/libs/multiprecision/test/concepts')
9 files changed, 1305 insertions, 0 deletions
diff --git a/src/boost/libs/multiprecision/test/concepts/number_concept_check.cpp b/src/boost/libs/multiprecision/test/concepts/number_concept_check.cpp new file mode 100644 index 00000000..dc1e0239 --- /dev/null +++ b/src/boost/libs/multiprecision/test/concepts/number_concept_check.cpp @@ -0,0 +1,251 @@ +// Copyright John Maddock 2011. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// +// This tests that cpp_dec_float_50 meets our +// conceptual requirements. +// +#ifdef _MSC_VER +#define _SCL_SECURE_NO_WARNINGS +#pragma warning(disable : 4800) +#pragma warning(disable : 4512) +#pragma warning(disable : 4127) +#pragma warning(disable : 4512) +#pragma warning(disable : 4503) // decorated name length exceeded, name was truncated +#endif + +#include <boost/container_hash/hash.hpp> +#include <libs/math/test/compile_test/poison.hpp> + +#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_50) && !defined(TEST_MPFR_6) && !defined(TEST_MPFR_15) && !defined(TEST_MPFR_17) && !defined(TEST_MPFR_30) && !defined(TEST_CPP_DEC_FLOAT_NO_ET) && !defined(TEST_LOGGED_ADAPTER) && !defined(TEST_CPP_BIN_FLOAT) +#define TEST_MPF_50 +#define TEST_BACKEND +#define TEST_MPZ +#define TEST_MPFR_50 +#define TEST_MPFR_6 +#define TEST_MPFR_15 +#define TEST_MPFR_17 +#define TEST_MPFR_30 +#define TEST_CPP_DEC_FLOAT +#define TEST_CPP_DEC_FLOAT_NO_ET +#define TEST_LOGGED_ADAPTER +#define TEST_CPP_BIN_FLOAT + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF_50) || defined(TEST_MPZ) +#include <boost/multiprecision/gmp.hpp> +#endif +#ifdef TEST_BACKEND +#include <boost/multiprecision/concepts/mp_number_archetypes.hpp> +#endif +#if defined(TEST_CPP_DEC_FLOAT) || defined(TEST_CPP_DEC_FLOAT_NO_ET) || defined(TEST_LOGGED_ADAPTER) +#include <boost/multiprecision/cpp_dec_float.hpp> +#endif +#if defined(TEST_CPP_BIN_FLOAT) +#include <boost/multiprecision/cpp_bin_float.hpp> +#endif +#if defined(TEST_MPFR_50) || defined(TEST_MPFR_6) || defined(TEST_MPFR_15) || defined(TEST_MPFR_17) || defined(TEST_MPFR_30) +#include <boost/multiprecision/mpfr.hpp> +#endif +#ifdef TEST_LOGGED_ADAPTER +#include <boost/multiprecision/logged_adaptor.hpp> +#endif + +#include <boost/math/concepts/real_type_concept.hpp> + +template <class T> +void test_extra(T) +{ + T t = 1; + t = abs(t); + t = abs(t * t); + + t = fabs(t); + t = fabs(t * t); + + t = sqrt(t); + t = sqrt(t * t); + + t = floor(t); + t = floor(t * t); + + t = ceil(t); + t = ceil(t * t); + + t = trunc(t); + t = trunc(t * t); + + t = round(t); + t = round(t * t); + + t = exp(t); + t = exp(t * t); + + t = log(t); + t = log(t * t); + + t = log10(t); + t = log10(t * t); + + t = cos(t); + t = cos(t * t); + + t = sin(t); + t = sin(t * t); + + t = tan(t); + t = tan(t * t); + + t = asin(t); + t = asin(t * t); + + t = atan(t); + t = atan(t * t); + + t = acos(t); + t = acos(t * t); + + t = cosh(t); + t = cosh(t * t); + + t = sinh(t); + t = sinh(t * t); + + t = tanh(t); + t = tanh(t * t); + + double dval = 2; + t = pow(t, t); + t = pow(t, t * t); + t = pow(t, dval); + t = pow(t * t, t); + t = pow(t * t, t * t); + t = pow(t * t, dval); + t = pow(dval, t); + t = pow(dval, t * t); + + t = atan2(t, t); + t = atan2(t, t * t); + t = atan2(t, dval); + t = atan2(t * t, t); + t = atan2(t * t, t * t); + t = atan2(t * t, dval); + t = atan2(dval, t); + t = atan2(dval, t * t); + + t = fmod(t, t); + t = fmod(t, t * t); + t = fmod(t, dval); + t = fmod(t * t, t); + t = fmod(t * t, t * t); + t = fmod(t * t, dval); + t = fmod(dval, t); + t = fmod(dval, t * t); + + typedef typename T::backend_type backend_type; + typedef typename backend_type::exponent_type exp_type; + exp_type e = 0; + int i = 0; + + t = ldexp(t, i); + t = ldexp(t * t, i); + t = ldexp(t, e); + t = ldexp(t * t, e); + + t = frexp(t, &i); + t = frexp(t * t, &i); + t = frexp(t, &e); + t = frexp(t * t, &e); + + t = scalbn(t, i); + t = scalbn(t * t, i); + t = scalbn(t, e); + t = scalbn(t * t, e); + + t = logb(t); + t = logb(t * t); + e = ilogb(t); + e = ilogb(t * t); +} + +void foo() +{ +#ifdef TEST_BACKEND + test_extra(boost::multiprecision::concepts::mp_number_float_architype()); +#endif +#ifdef TEST_MPF_50 + test_extra(boost::multiprecision::mpf_float_50()); +#endif +#ifdef TEST_MPFR_50 + test_extra(boost::multiprecision::mpfr_float_50()); +#endif +#ifdef TEST_MPFR_6 + test_extra(boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<6> >()); +#endif +#ifdef TEST_MPFR_15 + test_extra(boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<15> >()); +#endif +#ifdef TEST_MPFR_17 + test_extra(boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<17> >()); +#endif +#ifdef TEST_MPFR_30 + test_extra(boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<30> >()); +#endif +#ifdef TEST_CPP_DEC_FLOAT + test_extra(boost::multiprecision::cpp_dec_float_50()); +#endif +#ifdef TEST_CPP_BIN_FLOAT + test_extra(boost::multiprecision::cpp_bin_float_50()); +#endif +#ifdef TEST_CPP_DEC_FLOAT_NO_ET + test_extra(boost::multiprecision::number<boost::multiprecision::cpp_dec_float<100>, boost::multiprecision::et_off>()); +#endif +} + +int main() +{ +#ifdef TEST_BACKEND + BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept<boost::multiprecision::concepts::mp_number_float_architype>)); +#endif +#ifdef TEST_MPF_50 + BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept<boost::multiprecision::mpf_float_50>)); +#endif +#ifdef TEST_MPFR_50 + BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept<boost::multiprecision::mpfr_float_50>)); +#endif +#ifdef TEST_MPFR_6 + BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept<boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<6> > >)); +#endif +#ifdef TEST_MPFR_15 + BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept<boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<15> > >)); +#endif +#ifdef TEST_MPFR_17 + BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept<boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<17> > >)); +#endif +#ifdef TEST_MPFR_30 + BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept<boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<30> > >)); +#endif +#ifdef TEST_MPFR_50 + BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept<boost::multiprecision::mpfr_float_50>)); +#endif +#ifdef TEST_CPP_DEC_FLOAT + BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept<boost::multiprecision::cpp_dec_float_50>)); +#endif +#ifdef TEST_CPP_BIN_FLOAT + BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept<boost::multiprecision::cpp_bin_float_50>)); +#endif +#ifdef TEST_LOGGED_ADAPTER + typedef boost::multiprecision::number<boost::multiprecision::logged_adaptor<boost::multiprecision::cpp_dec_float<50> > > num_t; + test_extra(num_t()); +#endif +} diff --git a/src/boost/libs/multiprecision/test/concepts/sf_concept_check_basic.cpp b/src/boost/libs/multiprecision/test/concepts/sf_concept_check_basic.cpp new file mode 100644 index 00000000..1defde71 --- /dev/null +++ b/src/boost/libs/multiprecision/test/concepts/sf_concept_check_basic.cpp @@ -0,0 +1,165 @@ +// Copyright John Maddock 2012. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// +// This tests that cpp_dec_float_50 meets our +// conceptual requirements when used with Boost.Math. +// +#ifdef _MSC_VER +#define _SCL_SECURE_NO_WARNINGS +#pragma warning(disable : 4800) +#pragma warning(disable : 4512) +#pragma warning(disable : 4127) +#pragma warning(disable : 4512) +#pragma warning(disable : 4503) // decorated name length exceeded, name was truncated +#endif + +#include <boost/container_hash/hash.hpp> +#include <libs/math/test/compile_test/poison.hpp> + +#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_50) && !defined(TEST_MPFR_6) && !defined(TEST_MPFR_15) && !defined(TEST_MPFR_17) && !defined(TEST_MPFR_30) && !defined(TEST_CPP_DEC_FLOAT_NO_ET) && !defined(TEST_LOGGED_ADAPTER) && !defined(TEST_CPP_BIN_FLOAT) +#define TEST_MPF_50 +#define TEST_BACKEND +#define TEST_MPZ +#define TEST_MPFR_50 +#define TEST_MPFR_6 +#define TEST_MPFR_15 +#define TEST_MPFR_17 +#define TEST_MPFR_30 +#define TEST_CPP_DEC_FLOAT +#define TEST_CPP_DEC_FLOAT_NO_ET +#define TEST_LOGGED_ADAPTER +#define TEST_CPP_BIN_FLOAT + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF_50) || defined(TEST_MPZ) +#include <boost/multiprecision/gmp.hpp> +#endif +#ifdef TEST_BACKEND +#include <boost/multiprecision/concepts/mp_number_archetypes.hpp> +#endif +#if defined(TEST_CPP_DEC_FLOAT) || defined(TEST_CPP_DEC_FLOAT_NO_ET) || defined(TEST_LOGGED_ADAPTER) +#include <boost/multiprecision/cpp_dec_float.hpp> +#endif +#if defined(TEST_CPP_BIN_FLOAT) +#include <boost/multiprecision/cpp_bin_float.hpp> +#endif +#if defined(TEST_MPFR_50) || defined(TEST_MPFR_6) || defined(TEST_MPFR_15) || defined(TEST_MPFR_17) || defined(TEST_MPFR_30) +#include <boost/multiprecision/mpfr.hpp> +#endif +#ifdef TEST_LOGGED_ADAPTER +#include <boost/multiprecision/logged_adaptor.hpp> +#endif + +#include <boost/math/special_functions.hpp> + +template <class T> +void test_extra(T) +{ + T v1, v2, v3; + int i; + (boost::math::fpclassify)(v1); + (boost::math::isfinite)(v1); + (boost::math::isnormal)(v1); + (boost::math::isnan)(v1); + (boost::math::isinf)(v1); + (boost::math::signbit)(v1); + (boost::math::copysign)(v1, v2); + (boost::math::changesign)(v1); + (boost::math::sign)(v1); + boost::math::log1p(v1); + boost::math::expm1(v1); + boost::math::cbrt(v1); + boost::math::sqrt1pm1(v1); + boost::math::powm1(v1, v2); + boost::math::hypot(v1, v2); + boost::math::sinc_pi(v1); + boost::math::sinhc_pi(v1); + boost::math::asinh(v1); + boost::math::acosh(v1); + boost::math::atanh(v1); + boost::math::sin_pi(v1); + boost::math::cos_pi(v1); + boost::math::trunc(v1); + boost::math::itrunc(v1); + boost::math::ltrunc(v1); + boost::math::round(v1); + boost::math::iround(v1); + boost::math::lround(v1); + boost::math::modf(v1, &v1); + boost::math::modf(v1, &i); + long l; + boost::math::modf(v1, &l); +#ifdef BOOST_HAS_LONG_LONG + boost::math::lltrunc(v1); + boost::math::llround(v1); + boost::long_long_type ll; + boost::math::modf(v1, &ll); +#endif + boost::math::pow<2>(v1); + boost::math::nextafter(v1, v1); + boost::math::float_next(v1); + boost::math::float_prior(v1); + boost::math::float_distance(v1, v1); + // Misc functions that don't fit elsewhere: + boost::math::expint(v1); + boost::math::expint(i); + boost::math::expint(i, v2); + boost::math::expint(i, i); + boost::math::zeta(v1); + boost::math::zeta(i); + boost::math::owens_t(v1, v2); +} + +void foo() +{ +#ifdef TEST_BACKEND + test_extra(boost::multiprecision::concepts::mp_number_float_architype()); +#endif +#ifdef TEST_MPF_50 + test_extra(boost::multiprecision::mpf_float_50()); +#endif +#ifdef TEST_MPFR_50 + test_extra(boost::multiprecision::mpfr_float_50()); +#endif +#ifdef TEST_MPFR_6 + test_extra(boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<6> >()); +#endif +#ifdef TEST_MPFR_15 + test_extra(boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<15> >()); +#endif +#ifdef TEST_MPFR_17 + test_extra(boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<17> >()); +#endif +#ifdef TEST_MPFR_30 + test_extra(boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<30> >()); +#endif +#ifdef TEST_CPP_DEC_FLOAT + test_extra(boost::multiprecision::cpp_dec_float_50()); +#endif +#ifdef TEST_CPP_BIN_FLOAT + test_extra(boost::multiprecision::cpp_bin_float_50()); +#endif +#ifdef TEST_CPP_DEC_FLOAT_NO_ET + test_extra(boost::multiprecision::number<boost::multiprecision::cpp_dec_float<100>, boost::multiprecision::et_off>()); +#endif +#ifdef TEST_LOGGED_ADAPTER + typedef boost::multiprecision::number<boost::multiprecision::logged_adaptor<boost::multiprecision::cpp_dec_float<50> > > num_t; + test_extra(num_t()); +#endif +} + +int main() +{ + foo(); +} diff --git a/src/boost/libs/multiprecision/test/concepts/sf_concept_check_bessel.cpp b/src/boost/libs/multiprecision/test/concepts/sf_concept_check_bessel.cpp new file mode 100644 index 00000000..0a5002b2 --- /dev/null +++ b/src/boost/libs/multiprecision/test/concepts/sf_concept_check_bessel.cpp @@ -0,0 +1,132 @@ +// Copyright John Maddock 2012. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// +// This tests that cpp_dec_float_50 meets our +// conceptual requirements when used with Boost.Math. +// +#ifdef _MSC_VER +#define _SCL_SECURE_NO_WARNINGS +#pragma warning(disable : 4800) +#pragma warning(disable : 4512) +#pragma warning(disable : 4127) +#pragma warning(disable : 4512) +#pragma warning(disable : 4503) // decorated name length exceeded, name was truncated +#endif + +#include <boost/container_hash/hash.hpp> +#include <libs/math/test/compile_test/poison.hpp> + +#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_50) && !defined(TEST_MPFR_6) && !defined(TEST_MPFR_15) && !defined(TEST_MPFR_17) && !defined(TEST_MPFR_30) && !defined(TEST_CPP_DEC_FLOAT_NO_ET) && !defined(TEST_LOGGED_ADAPTER) && !defined(TEST_CPP_BIN_FLOAT) +#define TEST_MPF_50 +#define TEST_BACKEND +#define TEST_MPZ +#define TEST_MPFR_50 +#define TEST_MPFR_6 +#define TEST_MPFR_15 +#define TEST_MPFR_17 +#define TEST_MPFR_30 +#define TEST_CPP_DEC_FLOAT +#define TEST_CPP_DEC_FLOAT_NO_ET +#define TEST_LOGGED_ADAPTER +#define TEST_CPP_BIN_FLOAT + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF_50) || defined(TEST_MPZ) +#include <boost/multiprecision/gmp.hpp> +#endif +#ifdef TEST_BACKEND +#include <boost/multiprecision/concepts/mp_number_archetypes.hpp> +#endif +#if defined(TEST_CPP_DEC_FLOAT) || defined(TEST_CPP_DEC_FLOAT_NO_ET) || defined(TEST_LOGGED_ADAPTER) +#include <boost/multiprecision/cpp_dec_float.hpp> +#endif +#if defined(TEST_CPP_BIN_FLOAT) +#include <boost/multiprecision/cpp_bin_float.hpp> +#endif +#if defined(TEST_MPFR_50) || defined(TEST_MPFR_6) || defined(TEST_MPFR_15) || defined(TEST_MPFR_17) || defined(TEST_MPFR_30) +#include <boost/multiprecision/mpfr.hpp> +#endif +#ifdef TEST_LOGGED_ADAPTER +#include <boost/multiprecision/logged_adaptor.hpp> +#endif + +#include <boost/math/special_functions.hpp> + +template <class T> +void test_extra(T) +{ + T v1, v2, v3; + int i(0); + boost::math::cyl_neumann(v1, v2); + boost::math::cyl_neumann(i, v2); +#ifndef SLOW_COMPILER + boost::math::cyl_bessel_j(v1, v2); + boost::math::cyl_bessel_j(i, v2); + boost::math::cyl_bessel_i(v1, v2); + boost::math::cyl_bessel_i(i, v2); + boost::math::cyl_bessel_k(v1, v2); + boost::math::cyl_bessel_k(i, v2); + boost::math::sph_bessel(i, v2); + boost::math::sph_bessel(i, 1); + boost::math::sph_neumann(i, v2); + boost::math::sph_neumann(i, i); + boost::math::airy_ai(v1); + boost::math::airy_bi(v1); + boost::math::airy_ai_prime(v1); + boost::math::airy_bi_prime(v1); +#endif +} + +void foo() +{ +#ifdef TEST_BACKEND + test_extra(boost::multiprecision::concepts::mp_number_float_architype()); +#endif +#ifdef TEST_MPF_50 + test_extra(boost::multiprecision::mpf_float_50()); +#endif +#ifdef TEST_MPFR_50 + test_extra(boost::multiprecision::mpfr_float_50()); +#endif +#ifdef TEST_MPFR_6 + test_extra(boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<6> >()); +#endif +#ifdef TEST_MPFR_15 + test_extra(boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<15> >()); +#endif +#ifdef TEST_MPFR_17 + test_extra(boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<17> >()); +#endif +#ifdef TEST_MPFR_30 + test_extra(boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<30> >()); +#endif +#ifdef TEST_CPP_DEC_FLOAT + test_extra(boost::multiprecision::cpp_dec_float_50()); +#endif +#ifdef TEST_CPP_BIN_FLOAT + test_extra(boost::multiprecision::cpp_bin_float_50()); +#endif +#ifdef TEST_CPP_DEC_FLOAT_NO_ET + test_extra(boost::multiprecision::number<boost::multiprecision::cpp_dec_float<100>, boost::multiprecision::et_off>()); +#endif +#ifdef TEST_LOGGED_ADAPTER + typedef boost::multiprecision::number<boost::multiprecision::logged_adaptor<boost::multiprecision::cpp_dec_float<50> > > num_t; + test_extra(num_t()); +#endif +} + +int main() +{ + foo(); +} diff --git a/src/boost/libs/multiprecision/test/concepts/sf_concept_check_beta.cpp b/src/boost/libs/multiprecision/test/concepts/sf_concept_check_beta.cpp new file mode 100644 index 00000000..61cbdf1b --- /dev/null +++ b/src/boost/libs/multiprecision/test/concepts/sf_concept_check_beta.cpp @@ -0,0 +1,120 @@ +// Copyright John Maddock 2012. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// +// This tests that cpp_dec_float_50 meets our +// conceptual requirements when used with Boost.Math. +// +#ifdef _MSC_VER +#define _SCL_SECURE_NO_WARNINGS +#pragma warning(disable : 4800) +#pragma warning(disable : 4512) +#pragma warning(disable : 4127) +#pragma warning(disable : 4512) +#pragma warning(disable : 4503) // decorated name length exceeded, name was truncated +#endif + +#include <boost/container_hash/hash.hpp> +#include <libs/math/test/compile_test/poison.hpp> + +#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_50) && !defined(TEST_MPFR_6) && !defined(TEST_MPFR_15) && !defined(TEST_MPFR_17) && !defined(TEST_MPFR_30) && !defined(TEST_CPP_DEC_FLOAT_NO_ET) && !defined(TEST_LOGGED_ADAPTER) && !defined(TEST_CPP_BIN_FLOAT) +#define TEST_MPF_50 +#define TEST_BACKEND +#define TEST_MPZ +#define TEST_MPFR_50 +#define TEST_MPFR_6 +#define TEST_MPFR_15 +#define TEST_MPFR_17 +#define TEST_MPFR_30 +#define TEST_CPP_DEC_FLOAT +#define TEST_CPP_DEC_FLOAT_NO_ET +#define TEST_LOGGED_ADAPTER +#define TEST_CPP_BIN_FLOAT + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF_50) || defined(TEST_MPZ) +#include <boost/multiprecision/gmp.hpp> +#endif +#ifdef TEST_BACKEND +#include <boost/multiprecision/concepts/mp_number_archetypes.hpp> +#endif +#if defined(TEST_CPP_DEC_FLOAT) || defined(TEST_CPP_DEC_FLOAT_NO_ET) || defined(TEST_LOGGED_ADAPTER) +#include <boost/multiprecision/cpp_dec_float.hpp> +#endif +#if defined(TEST_MPFR_50) || defined(TEST_MPFR_6) || defined(TEST_MPFR_15) || defined(TEST_MPFR_17) || defined(TEST_MPFR_30) +#include <boost/multiprecision/mpfr.hpp> +#endif +#if defined(TEST_CPP_BIN_FLOAT) +#include <boost/multiprecision/cpp_bin_float.hpp> +#endif +#ifdef TEST_LOGGED_ADAPTER +#include <boost/multiprecision/logged_adaptor.hpp> +#endif + +#include <boost/math/special_functions.hpp> + +template <class T> +void test_extra(T) +{ + T v1, v2, v3; + int i; + boost::math::beta(v1, v2); + boost::math::beta(v1, v2, v3); + boost::math::betac(v1, v2, v3); + boost::math::ibeta(v1, v2, v3); + boost::math::ibetac(v1, v2, v3); + boost::math::ibeta_derivative(v1, v2, v3); +} + +void foo() +{ +#ifdef TEST_BACKEND + test_extra(boost::multiprecision::concepts::mp_number_float_architype()); +#endif +#ifdef TEST_MPF_50 + test_extra(boost::multiprecision::mpf_float_50()); +#endif +#ifdef TEST_MPFR_50 + test_extra(boost::multiprecision::mpfr_float_50()); +#endif +#ifdef TEST_MPFR_6 + test_extra(boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<6> >()); +#endif +#ifdef TEST_MPFR_15 + test_extra(boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<15> >()); +#endif +#ifdef TEST_MPFR_17 + test_extra(boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<17> >()); +#endif +#ifdef TEST_MPFR_30 + test_extra(boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<30> >()); +#endif +#ifdef TEST_CPP_DEC_FLOAT + test_extra(boost::multiprecision::cpp_dec_float_50()); +#endif +#ifdef TEST_CPP_BIN_FLOAT + test_extra(boost::multiprecision::cpp_bin_float_50()); +#endif +#ifdef TEST_CPP_DEC_FLOAT_NO_ET + test_extra(boost::multiprecision::number<boost::multiprecision::cpp_dec_float<100>, boost::multiprecision::et_off>()); +#endif +#ifdef TEST_LOGGED_ADAPTER + typedef boost::multiprecision::number<boost::multiprecision::logged_adaptor<boost::multiprecision::cpp_dec_float<50> > > num_t; + test_extra(num_t()); +#endif +} + +int main() +{ + foo(); +} diff --git a/src/boost/libs/multiprecision/test/concepts/sf_concept_check_beta_2.cpp b/src/boost/libs/multiprecision/test/concepts/sf_concept_check_beta_2.cpp new file mode 100644 index 00000000..aff7e5c8 --- /dev/null +++ b/src/boost/libs/multiprecision/test/concepts/sf_concept_check_beta_2.cpp @@ -0,0 +1,116 @@ +// Copyright John Maddock 2012. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// +// This tests that cpp_dec_float_50 meets our +// conceptual requirements when used with Boost.Math. +// +#ifdef _MSC_VER +#define _SCL_SECURE_NO_WARNINGS +#pragma warning(disable : 4800) +#pragma warning(disable : 4512) +#pragma warning(disable : 4127) +#pragma warning(disable : 4512) +#pragma warning(disable : 4503) // decorated name length exceeded, name was truncated +#endif + +#include <boost/container_hash/hash.hpp> +#include <libs/math/test/compile_test/poison.hpp> + +#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_50) && !defined(TEST_MPFR_6) && !defined(TEST_MPFR_15) && !defined(TEST_MPFR_17) && !defined(TEST_MPFR_30) && !defined(TEST_CPP_DEC_FLOAT_NO_ET) && !defined(TEST_LOGGED_ADAPTER) && !defined(TEST_CPP_BIN_FLOAT) +#define TEST_MPF_50 +#define TEST_BACKEND +#define TEST_MPZ +#define TEST_MPFR_50 +#define TEST_MPFR_6 +#define TEST_MPFR_15 +#define TEST_MPFR_17 +#define TEST_MPFR_30 +#define TEST_CPP_DEC_FLOAT +#define TEST_CPP_DEC_FLOAT_NO_ET +#define TEST_LOGGED_ADAPTER +#define TEST_CPP_BIN_FLOAT + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF_50) || defined(TEST_MPZ) +#include <boost/multiprecision/gmp.hpp> +#endif +#ifdef TEST_BACKEND +#include <boost/multiprecision/concepts/mp_number_archetypes.hpp> +#endif +#if defined(TEST_CPP_DEC_FLOAT) || defined(TEST_CPP_DEC_FLOAT_NO_ET) || defined(TEST_LOGGED_ADAPTER) +#include <boost/multiprecision/cpp_dec_float.hpp> +#endif +#if defined(TEST_MPFR_50) || defined(TEST_MPFR_6) || defined(TEST_MPFR_15) || defined(TEST_MPFR_17) || defined(TEST_MPFR_30) +#include <boost/multiprecision/mpfr.hpp> +#endif +#if defined(TEST_CPP_BIN_FLOAT) +#include <boost/multiprecision/cpp_bin_float.hpp> +#endif +#ifdef TEST_LOGGED_ADAPTER +#include <boost/multiprecision/logged_adaptor.hpp> +#endif + +#include <boost/math/special_functions.hpp> + +template <class T> +void test_extra(T) +{ + T v1, v2, v3; + int i; + boost::math::ibeta_inv(v1, v2, v3); + boost::math::ibetac_inv(v1, v2, v3); +} + +void foo() +{ +#ifdef TEST_BACKEND + test_extra(boost::multiprecision::concepts::mp_number_float_architype()); +#endif +#ifdef TEST_MPF_50 + test_extra(boost::multiprecision::mpf_float_50()); +#endif +#ifdef TEST_MPFR_50 + test_extra(boost::multiprecision::mpfr_float_50()); +#endif +#ifdef TEST_MPFR_6 + test_extra(boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<6> >()); +#endif +#ifdef TEST_MPFR_15 + test_extra(boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<15> >()); +#endif +#ifdef TEST_MPFR_17 + test_extra(boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<17> >()); +#endif +#ifdef TEST_MPFR_30 + test_extra(boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<30> >()); +#endif +#ifdef TEST_CPP_DEC_FLOAT + test_extra(boost::multiprecision::cpp_dec_float_50()); +#endif +#ifdef TEST_CPP_BIN_FLOAT + test_extra(boost::multiprecision::cpp_bin_float_50()); +#endif +#ifdef TEST_CPP_DEC_FLOAT_NO_ET + test_extra(boost::multiprecision::number<boost::multiprecision::cpp_dec_float<100>, boost::multiprecision::et_off>()); +#endif +#ifdef TEST_LOGGED_ADAPTER + typedef boost::multiprecision::number<boost::multiprecision::logged_adaptor<boost::multiprecision::cpp_dec_float<50> > > num_t; + test_extra(num_t()); +#endif +} + +int main() +{ + foo(); +} diff --git a/src/boost/libs/multiprecision/test/concepts/sf_concept_check_beta_3.cpp b/src/boost/libs/multiprecision/test/concepts/sf_concept_check_beta_3.cpp new file mode 100644 index 00000000..fcae4078 --- /dev/null +++ b/src/boost/libs/multiprecision/test/concepts/sf_concept_check_beta_3.cpp @@ -0,0 +1,118 @@ +// Copyright John Maddock 2012. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// +// This tests that cpp_dec_float_50 meets our +// conceptual requirements when used with Boost.Math. +// +#ifdef _MSC_VER +#define _SCL_SECURE_NO_WARNINGS +#pragma warning(disable : 4800) +#pragma warning(disable : 4512) +#pragma warning(disable : 4127) +#pragma warning(disable : 4512) +#pragma warning(disable : 4503) // decorated name length exceeded, name was truncated +#endif + +#include <boost/container_hash/hash.hpp> +#include <libs/math/test/compile_test/poison.hpp> + +#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_50) && !defined(TEST_MPFR_6) && !defined(TEST_MPFR_15) && !defined(TEST_MPFR_17) && !defined(TEST_MPFR_30) && !defined(TEST_CPP_DEC_FLOAT_NO_ET) && !defined(TEST_LOGGED_ADAPTER) && !defined(TEST_CPP_BIN_FLOAT) +#define TEST_MPF_50 +#define TEST_BACKEND +#define TEST_MPZ +#define TEST_MPFR_50 +#define TEST_MPFR_6 +#define TEST_MPFR_15 +#define TEST_MPFR_17 +#define TEST_MPFR_30 +#define TEST_CPP_DEC_FLOAT +#define TEST_CPP_DEC_FLOAT_NO_ET +#define TEST_LOGGED_ADAPTER +#define TEST_CPP_BIN_FLOAT + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF_50) || defined(TEST_MPZ) +#include <boost/multiprecision/gmp.hpp> +#endif +#ifdef TEST_BACKEND +#include <boost/multiprecision/concepts/mp_number_archetypes.hpp> +#endif +#if defined(TEST_CPP_DEC_FLOAT) || defined(TEST_CPP_DEC_FLOAT_NO_ET) || defined(TEST_LOGGED_ADAPTER) +#include <boost/multiprecision/cpp_dec_float.hpp> +#endif +#if defined(TEST_MPFR_50) || defined(TEST_MPFR_6) || defined(TEST_MPFR_15) || defined(TEST_MPFR_17) || defined(TEST_MPFR_30) +#include <boost/multiprecision/mpfr.hpp> +#endif +#if defined(TEST_CPP_BIN_FLOAT) +#include <boost/multiprecision/cpp_bin_float.hpp> +#endif +#ifdef TEST_LOGGED_ADAPTER +#include <boost/multiprecision/logged_adaptor.hpp> +#endif + +#include <boost/math/special_functions.hpp> + +template <class T> +void test_extra(T) +{ + T v1, v2, v3; + int i; + boost::math::ibeta_inva(v1, v2, v3); + boost::math::ibetac_inva(v1, v2, v3); + boost::math::ibeta_invb(v1, v2, v3); + boost::math::ibetac_invb(v1, v2, v3); +} + +void foo() +{ +#ifdef TEST_BACKEND + test_extra(boost::multiprecision::concepts::mp_number_float_architype()); +#endif +#ifdef TEST_MPF_50 + test_extra(boost::multiprecision::mpf_float_50()); +#endif +#ifdef TEST_MPFR_50 + test_extra(boost::multiprecision::mpfr_float_50()); +#endif +#ifdef TEST_MPFR_6 + test_extra(boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<6> >()); +#endif +#ifdef TEST_MPFR_15 + test_extra(boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<15> >()); +#endif +#ifdef TEST_MPFR_17 + test_extra(boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<17> >()); +#endif +#ifdef TEST_MPFR_30 + test_extra(boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<30> >()); +#endif +#ifdef TEST_CPP_DEC_FLOAT + test_extra(boost::multiprecision::cpp_dec_float_50()); +#endif +#ifdef TEST_CPP_BIN_FLOAT + test_extra(boost::multiprecision::cpp_bin_float_50()); +#endif +#ifdef TEST_CPP_DEC_FLOAT_NO_ET + test_extra(boost::multiprecision::number<boost::multiprecision::cpp_dec_float<100>, boost::multiprecision::et_off>()); +#endif +#ifdef TEST_LOGGED_ADAPTER + typedef boost::multiprecision::number<boost::multiprecision::logged_adaptor<boost::multiprecision::cpp_dec_float<50> > > num_t; + test_extra(num_t()); +#endif +} + +int main() +{ + foo(); +} diff --git a/src/boost/libs/multiprecision/test/concepts/sf_concept_check_elliptic.cpp b/src/boost/libs/multiprecision/test/concepts/sf_concept_check_elliptic.cpp new file mode 100644 index 00000000..4d3d24b9 --- /dev/null +++ b/src/boost/libs/multiprecision/test/concepts/sf_concept_check_elliptic.cpp @@ -0,0 +1,136 @@ +// Copyright John Maddock 2012. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// +// This tests that cpp_dec_float_50 meets our +// conceptual requirements when used with Boost.Math. +// +#ifdef _MSC_VER +#define _SCL_SECURE_NO_WARNINGS +#pragma warning(disable : 4800) +#pragma warning(disable : 4512) +#pragma warning(disable : 4127) +#pragma warning(disable : 4512) +#pragma warning(disable : 4503) // decorated name length exceeded, name was truncated +#endif + +#include <boost/container_hash/hash.hpp> +#include <libs/math/test/compile_test/poison.hpp> + +#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_50) && !defined(TEST_MPFR_6) && !defined(TEST_MPFR_15) && !defined(TEST_MPFR_17) && !defined(TEST_MPFR_30) && !defined(TEST_CPP_DEC_FLOAT_NO_ET) && !defined(TEST_LOGGED_ADAPTER) && !defined(TEST_CPP_BIN_FLOAT) +#define TEST_MPF_50 +#define TEST_BACKEND +#define TEST_MPZ +#define TEST_MPFR_50 +#define TEST_MPFR_6 +#define TEST_MPFR_15 +#define TEST_MPFR_17 +#define TEST_MPFR_30 +#define TEST_CPP_DEC_FLOAT +#define TEST_CPP_DEC_FLOAT_NO_ET +#define TEST_LOGGED_ADAPTER +#define TEST_CPP_BIN_FLOAT + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF_50) || defined(TEST_MPZ) +#include <boost/multiprecision/gmp.hpp> +#endif +#ifdef TEST_BACKEND +#include <boost/multiprecision/concepts/mp_number_archetypes.hpp> +#endif +#if defined(TEST_CPP_DEC_FLOAT) || defined(TEST_CPP_DEC_FLOAT_NO_ET) || defined(TEST_LOGGED_ADAPTER) +#include <boost/multiprecision/cpp_dec_float.hpp> +#endif +#if defined(TEST_CPP_BIN_FLOAT) +#include <boost/multiprecision/cpp_bin_float.hpp> +#endif +#if defined(TEST_MPFR_50) || defined(TEST_MPFR_6) || defined(TEST_MPFR_15) || defined(TEST_MPFR_17) || defined(TEST_MPFR_30) +#include <boost/multiprecision/mpfr.hpp> +#endif +#ifdef TEST_LOGGED_ADAPTER +#include <boost/multiprecision/logged_adaptor.hpp> +#endif + +#include <boost/math/special_functions.hpp> + +template <class T> +void test_extra(T) +{ + T v1, v2, v3; + boost::math::ellint_1(v1); + boost::math::ellint_1(v1, v2); + boost::math::ellint_2(v1); + boost::math::ellint_2(v1, v2); + boost::math::ellint_3(v1, v2); + boost::math::ellint_3(v1, v2, v3); + boost::math::ellint_rc(v1, v2); + boost::math::ellint_rd(v1, v2, v3); + boost::math::ellint_rf(v1, v2, v3); + boost::math::ellint_rj(v1, v2, v3, v1); + boost::math::jacobi_elliptic(v1, v2, &v1, &v2); + boost::math::jacobi_cd(v1, v2); + boost::math::jacobi_cn(v1, v2); + boost::math::jacobi_cs(v1, v2); + boost::math::jacobi_dc(v1, v2); + boost::math::jacobi_dn(v1, v2); + boost::math::jacobi_ds(v1, v2); + boost::math::jacobi_nc(v1, v2); + boost::math::jacobi_nd(v1, v2); + boost::math::jacobi_ns(v1, v2); + boost::math::jacobi_sc(v1, v2); + boost::math::jacobi_sd(v1, v2); + boost::math::jacobi_sn(v1, v2); +} + +void foo() +{ +#ifdef TEST_BACKEND + test_extra(boost::multiprecision::concepts::mp_number_float_architype()); +#endif +#ifdef TEST_MPF_50 + test_extra(boost::multiprecision::mpf_float_50()); +#endif +#ifdef TEST_MPFR_50 + test_extra(boost::multiprecision::mpfr_float_50()); +#endif +#ifdef TEST_MPFR_6 + test_extra(boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<6> >()); +#endif +#ifdef TEST_MPFR_15 + test_extra(boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<15> >()); +#endif +#ifdef TEST_MPFR_17 + test_extra(boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<17> >()); +#endif +#ifdef TEST_MPFR_30 + test_extra(boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<30> >()); +#endif +#ifdef TEST_CPP_DEC_FLOAT + test_extra(boost::multiprecision::cpp_dec_float_50()); +#endif +#ifdef TEST_CPP_BIN_FLOAT + test_extra(boost::multiprecision::cpp_bin_float_50()); +#endif +#ifdef TEST_CPP_DEC_FLOAT_NO_ET + test_extra(boost::multiprecision::number<boost::multiprecision::cpp_dec_float<100>, boost::multiprecision::et_off>()); +#endif +#ifdef TEST_LOGGED_ADAPTER + typedef boost::multiprecision::number<boost::multiprecision::logged_adaptor<boost::multiprecision::cpp_dec_float<50> > > num_t; + test_extra(num_t()); +#endif +} + +int main() +{ + foo(); +} diff --git a/src/boost/libs/multiprecision/test/concepts/sf_concept_check_gamma.cpp b/src/boost/libs/multiprecision/test/concepts/sf_concept_check_gamma.cpp new file mode 100644 index 00000000..4d879abc --- /dev/null +++ b/src/boost/libs/multiprecision/test/concepts/sf_concept_check_gamma.cpp @@ -0,0 +1,140 @@ +// Copyright John Maddock 2012. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// +// This tests that cpp_dec_float_50 meets our +// conceptual requirements when used with Boost.Math. +// +#ifdef _MSC_VER +#define _SCL_SECURE_NO_WARNINGS +#pragma warning(disable : 4800) +#pragma warning(disable : 4512) +#pragma warning(disable : 4127) +#pragma warning(disable : 4512) +#pragma warning(disable : 4503) // decorated name length exceeded, name was truncated +#endif + +#include <boost/container_hash/hash.hpp> +#include <libs/math/test/compile_test/poison.hpp> + +#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_50) && !defined(TEST_MPFR_6) && !defined(TEST_MPFR_15) && !defined(TEST_MPFR_17) && !defined(TEST_MPFR_30) && !defined(TEST_CPP_DEC_FLOAT_NO_ET) && !defined(TEST_LOGGED_ADAPTER) && !defined(TEST_CPP_BIN_FLOAT) +#define TEST_MPF_50 +#define TEST_BACKEND +#define TEST_MPZ +#define TEST_MPFR_50 +#define TEST_MPFR_6 +#define TEST_MPFR_15 +#define TEST_MPFR_17 +#define TEST_MPFR_30 +#define TEST_CPP_DEC_FLOAT +#define TEST_CPP_DEC_FLOAT_NO_ET +#define TEST_LOGGED_ADAPTER +#define TEST_CPP_BIN_FLOAT + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF_50) || defined(TEST_MPZ) +#include <boost/multiprecision/gmp.hpp> +#endif +#ifdef TEST_BACKEND +#include <boost/multiprecision/concepts/mp_number_archetypes.hpp> +#endif +#if defined(TEST_CPP_DEC_FLOAT) || defined(TEST_CPP_DEC_FLOAT_NO_ET) || defined(TEST_LOGGED_ADAPTER) +#include <boost/multiprecision/cpp_dec_float.hpp> +#endif +#if defined(TEST_MPFR_50) || defined(TEST_MPFR_6) || defined(TEST_MPFR_15) || defined(TEST_MPFR_17) || defined(TEST_MPFR_30) +#include <boost/multiprecision/mpfr.hpp> +#endif +#if defined(TEST_CPP_BIN_FLOAT) +#include <boost/multiprecision/cpp_bin_float.hpp> +#endif +#ifdef TEST_LOGGED_ADAPTER +#include <boost/multiprecision/logged_adaptor.hpp> +#endif + +#include <boost/math/special_functions.hpp> + +template <class T> +void test_extra(T) +{ + T v1, v2, v3; + int i; + boost::math::tgamma(v1); + boost::math::tgamma1pm1(v1); + boost::math::lgamma(v1); + boost::math::lgamma(v1, &i); + boost::math::digamma(v1); + boost::math::tgamma_ratio(v1, v2); + boost::math::tgamma_delta_ratio(v1, v2); + boost::math::factorial<T>(i); + boost::math::unchecked_factorial<T>(i); + i = boost::math::max_factorial<T>::value; + boost::math::double_factorial<T>(i); + boost::math::rising_factorial(v1, i); + boost::math::falling_factorial(v1, i); + boost::math::gamma_p_derivative(v2, v3); + boost::math::tgamma(v1, v2); + boost::math::tgamma_lower(v1, v2); + boost::math::gamma_p(v1, v2); + boost::math::gamma_q(v1, v2); + boost::math::gamma_p_inv(v1, v2); + boost::math::gamma_q_inv(v1, v2); + boost::math::gamma_p_inva(v1, v2); + boost::math::gamma_q_inva(v1, v2); + boost::math::erf(v1); + boost::math::erfc(v1); + boost::math::erf_inv(v1); + boost::math::erfc_inv(v1); +} + +void foo() +{ +#ifdef TEST_BACKEND + test_extra(boost::multiprecision::concepts::mp_number_float_architype()); +#endif +#ifdef TEST_MPF_50 + test_extra(boost::multiprecision::mpf_float_50()); +#endif +#ifdef TEST_MPFR_50 + test_extra(boost::multiprecision::mpfr_float_50()); +#endif +#ifdef TEST_MPFR_6 + test_extra(boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<6> >()); +#endif +#ifdef TEST_MPFR_15 + test_extra(boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<15> >()); +#endif +#ifdef TEST_MPFR_17 + test_extra(boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<17> >()); +#endif +#ifdef TEST_MPFR_30 + test_extra(boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<30> >()); +#endif +#ifdef TEST_CPP_DEC_FLOAT + test_extra(boost::multiprecision::cpp_dec_float_50()); +#endif +#ifdef TEST_CPP_BIN_FLOAT + test_extra(boost::multiprecision::cpp_bin_float_50()); +#endif +#ifdef TEST_CPP_DEC_FLOAT_NO_ET + test_extra(boost::multiprecision::number<boost::multiprecision::cpp_dec_float<100>, boost::multiprecision::et_off>()); +#endif +#ifdef TEST_LOGGED_ADAPTER + typedef boost::multiprecision::number<boost::multiprecision::logged_adaptor<boost::multiprecision::cpp_dec_float<50> > > num_t; + test_extra(num_t()); +#endif +} + +int main() +{ + foo(); +} diff --git a/src/boost/libs/multiprecision/test/concepts/sf_concept_check_poly.cpp b/src/boost/libs/multiprecision/test/concepts/sf_concept_check_poly.cpp new file mode 100644 index 00000000..a67f1d98 --- /dev/null +++ b/src/boost/libs/multiprecision/test/concepts/sf_concept_check_poly.cpp @@ -0,0 +1,127 @@ +// Copyright John Maddock 2012. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// +// This tests that cpp_dec_float_50 meets our +// conceptual requirements when used with Boost.Math. +// +#ifdef _MSC_VER +#define _SCL_SECURE_NO_WARNINGS +#pragma warning(disable : 4800) +#pragma warning(disable : 4512) +#pragma warning(disable : 4127) +#pragma warning(disable : 4512) +#pragma warning(disable : 4503) // decorated name length exceeded, name was truncated +#endif + +#include <boost/container_hash/hash.hpp> +#include <libs/math/test/compile_test/poison.hpp> + +#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_50) && !defined(TEST_MPFR_6) && !defined(TEST_MPFR_15) && !defined(TEST_MPFR_17) && !defined(TEST_MPFR_30) && !defined(TEST_CPP_DEC_FLOAT_NO_ET) && !defined(TEST_LOGGED_ADAPTER) && !defined(TEST_CPP_BIN_FLOAT) +#define TEST_MPF_50 +#define TEST_BACKEND +#define TEST_MPZ +#define TEST_MPFR_50 +#define TEST_MPFR_6 +#define TEST_MPFR_15 +#define TEST_MPFR_17 +#define TEST_MPFR_30 +#define TEST_CPP_DEC_FLOAT +#define TEST_CPP_DEC_FLOAT_NO_ET +#define TEST_LOGGED_ADAPTER +#define TEST_CPP_BIN_FLOAT + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF_50) || defined(TEST_MPZ) +#include <boost/multiprecision/gmp.hpp> +#endif +#ifdef TEST_BACKEND +#include <boost/multiprecision/concepts/mp_number_archetypes.hpp> +#endif +#if defined(TEST_CPP_DEC_FLOAT) || defined(TEST_CPP_DEC_FLOAT_NO_ET) || defined(TEST_LOGGED_ADAPTER) +#include <boost/multiprecision/cpp_dec_float.hpp> +#endif +#if defined(TEST_CPP_BIN_FLOAT) +#include <boost/multiprecision/cpp_bin_float.hpp> +#endif +#if defined(TEST_MPFR_50) || defined(TEST_MPFR_6) || defined(TEST_MPFR_15) || defined(TEST_MPFR_17) || defined(TEST_MPFR_30) +#include <boost/multiprecision/mpfr.hpp> +#endif +#ifdef TEST_LOGGED_ADAPTER +#include <boost/multiprecision/logged_adaptor.hpp> +#endif + +#include <boost/math/special_functions.hpp> + +template <class T> +void test_extra(T) +{ + T v1, v2, v3; + boost::math::legendre_p(1, v1); + boost::math::legendre_p(1, 0, v1); + boost::math::legendre_q(1, v1); + boost::math::legendre_next(2, v1, v2, v3); + boost::math::legendre_next(2, 2, v1, v2, v3); + boost::math::laguerre(1, v1); + boost::math::laguerre(2, 1, v1); + boost::math::laguerre(2u, 1u, v1); + boost::math::laguerre_next(2, v1, v2, v3); + boost::math::laguerre_next(2, 1, v1, v2, v3); + boost::math::hermite(1, v1); + boost::math::hermite_next(2, v1, v2, v3); + boost::math::spherical_harmonic_r(2, 1, v1, v2); + boost::math::spherical_harmonic_i(2, 1, v1, v2); +} + +void foo() +{ +#ifdef TEST_BACKEND + test_extra(boost::multiprecision::concepts::mp_number_float_architype()); +#endif +#ifdef TEST_MPF_50 + test_extra(boost::multiprecision::mpf_float_50()); +#endif +#ifdef TEST_MPFR_50 + test_extra(boost::multiprecision::mpfr_float_50()); +#endif +#ifdef TEST_MPFR_6 + test_extra(boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<6> >()); +#endif +#ifdef TEST_MPFR_15 + test_extra(boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<15> >()); +#endif +#ifdef TEST_MPFR_17 + test_extra(boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<17> >()); +#endif +#ifdef TEST_MPFR_30 + test_extra(boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<30> >()); +#endif +#ifdef TEST_CPP_DEC_FLOAT + test_extra(boost::multiprecision::cpp_dec_float_50()); +#endif +#ifdef TEST_CPP_BIN_FLOAT + test_extra(boost::multiprecision::cpp_bin_float_50()); +#endif +#ifdef TEST_CPP_DEC_FLOAT_NO_ET + test_extra(boost::multiprecision::number<boost::multiprecision::cpp_dec_float<100>, boost::multiprecision::et_off>()); +#endif +#ifdef TEST_LOGGED_ADAPTER + typedef boost::multiprecision::number<boost::multiprecision::logged_adaptor<boost::multiprecision::cpp_dec_float<50> > > num_t; + test_extra(num_t()); +#endif +} + +int main() +{ + foo(); +} |