2
0
mirror of https://github.com/boostorg/math.git synced 2026-01-19 04:22:09 +00:00

Split TR1 library build into separate libraries for C99 and TR1, plus separates for float/double/long double etc.

Added concept check for TR1 header.
Added basic runtime check for TR1 header.

[SVN r45215]
This commit is contained in:
John Maddock
2008-05-08 16:09:30 +00:00
parent e909163e72
commit 5ebe9d5b2f
4 changed files with 2019 additions and 23 deletions

View File

@@ -3,17 +3,35 @@
# (See accompanying file LICENSE_1_0.txt or copy at
# http://www.boost.org/LICENSE_1_0.txt.
SOURCES = acosh
C99_SOURCES = acosh
asinh
atanh
cbrt
copysign
erfc
erf
expm1
fmax
fmin
fpclassify
hypot
lgamma
llround
log1p
lround
nextafter
nexttoward
round
tgamma
trunc ;
TR1_SOURCES =
assoc_laguerre
assoc_legendre
atanh
beta
cbrt
comp_ellint_1
comp_ellint_2
comp_ellint_3
copysign
cyl_bessel_i
cyl_bessel_j
cyl_bessel_k
@@ -21,44 +39,43 @@ cyl_neumann
ellint_1
ellint_2
ellint_3
erfc
erf
expint
expm1
fmax
fmin
fpclassify
hermite
hypot
laguerre
legendre
lgamma
llround
log1p
lround
nextafter
nexttoward
riemann_zeta
round
sph_bessel
sph_legendre
sph_neumann
tgamma
trunc ;
;
lib boost_math_tr1 : ../src/tr1/$(SOURCES).cpp
lib boost_math_tr1 : ../src/tr1/$(TR1_SOURCES).cpp
:
<link>shared:<define>BOOST_MATH_TR1_DYN_LINK=1
;
lib boost_math_tr1f : ../src/tr1/$(SOURCES)f.cpp
lib boost_math_tr1f : ../src/tr1/$(TR1_SOURCES)f.cpp
:
<link>shared:<define>BOOST_MATH_TR1_DYN_LINK=1
;
lib boost_math_tr1l : ../src/tr1/$(SOURCES)l.cpp
lib boost_math_tr1l : ../src/tr1/$(TR1_SOURCES)l.cpp
:
<link>shared:<define>BOOST_MATH_TR1_DYN_LINK=1
;
lib boost_math_c99 : ../src/tr1/$(C99_SOURCES).cpp
:
<link>shared:<define>BOOST_MATH_TR1_DYN_LINK=1
;
lib boost_math_c99f : ../src/tr1/$(C99_SOURCES)f.cpp
:
<link>shared:<define>BOOST_MATH_TR1_DYN_LINK=1
;
lib boost_math_c99l : ../src/tr1/$(C99_SOURCES)l.cpp
:
<link>shared:<define>BOOST_MATH_TR1_DYN_LINK=1
;

View File

@@ -386,6 +386,15 @@ run test_policy.cpp ;
run test_policy_2.cpp ;
run test_policy_sf.cpp ;
run test_tr1.cpp
../build//boost_math_tr1
../build//boost_math_tr1f
../build//boost_math_tr1l
../build//boost_math_c99
../build//boost_math_c99f
../build//boost_math_c99l
;
compile compile_test/compl_abs_incl_test.cpp ;
compile compile_test/compl_acos_incl_test.cpp ;
compile compile_test/compl_acosh_incl_test.cpp ;

View File

@@ -0,0 +1,370 @@
// Copyright John Maddock 2008.
// 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)
//
// Basic sanity check that header <boost/math/tr1.hpp>
// #includes all the files that it needs to.
//
#include <boost/math/tr1.hpp>
//
// Note this header includes no other headers, this is
// important if this test is to be meaningful:
//
#include "test_compile_result.hpp"
void check()
{
float f = 0;
double d = 0;
long double l = 0;
int i = 0;
unsigned ui = 0;
check_result<float>(boost::math::tr1::assoc_laguerre(ui, ui, f));
check_result<float>(boost::math::tr1::assoc_laguerref(ui, ui, f));
check_result<double>(boost::math::tr1::assoc_laguerre(ui, ui, d));
check_result<long double>(boost::math::tr1::assoc_laguerre(ui, ui, l));
check_result<long double>(boost::math::tr1::assoc_laguerrel(ui, ui, l));
check_result<double>(boost::math::tr1::assoc_laguerre(ui, ui, i));
check_result<double>(boost::math::tr1::assoc_laguerre(ui, ui, ui));
check_result<float>(boost::math::tr1::assoc_legendre(ui, ui, f));
check_result<float>(boost::math::tr1::assoc_legendref(ui, ui, f));
check_result<double>(boost::math::tr1::assoc_legendre(ui, ui, d));
check_result<long double>(boost::math::tr1::assoc_legendre(ui, ui, l));
check_result<long double>(boost::math::tr1::assoc_legendrel(ui, ui, l));
check_result<double>(boost::math::tr1::assoc_legendre(ui, ui, i));
check_result<double>(boost::math::tr1::assoc_legendre(ui, ui, ui));
check_result<float>(boost::math::tr1::beta(f, f));
check_result<float>(boost::math::tr1::betaf(f, f));
check_result<double>(boost::math::tr1::beta(d, d));
check_result<long double>(boost::math::tr1::beta(l, l));
check_result<long double>(boost::math::tr1::betal(l, l));
check_result<double>(boost::math::tr1::beta(ui, ui));
check_result<double>(boost::math::tr1::beta(i, ui));
check_result<double>(boost::math::tr1::beta(f, d));
check_result<long double>(boost::math::tr1::beta(l, d));
check_result<float>(boost::math::tr1::comp_ellint_1(f));
check_result<float>(boost::math::tr1::comp_ellint_1f(f));
check_result<double>(boost::math::tr1::comp_ellint_1(d));
check_result<long double>(boost::math::tr1::comp_ellint_1(l));
check_result<long double>(boost::math::tr1::comp_ellint_1l(l));
check_result<double>(boost::math::tr1::comp_ellint_1(ui));
check_result<double>(boost::math::tr1::comp_ellint_1(i));
check_result<float>(boost::math::tr1::comp_ellint_2(f));
check_result<float>(boost::math::tr1::comp_ellint_2f(f));
check_result<double>(boost::math::tr1::comp_ellint_2(d));
check_result<long double>(boost::math::tr1::comp_ellint_2(l));
check_result<long double>(boost::math::tr1::comp_ellint_2l(l));
check_result<double>(boost::math::tr1::comp_ellint_2(ui));
check_result<double>(boost::math::tr1::comp_ellint_2(i));
check_result<float>(boost::math::tr1::comp_ellint_3(f, f));
check_result<float>(boost::math::tr1::comp_ellint_3f(f, f));
check_result<double>(boost::math::tr1::comp_ellint_3(d, d));
check_result<long double>(boost::math::tr1::comp_ellint_3(l, l));
check_result<long double>(boost::math::tr1::comp_ellint_3l(l, l));
check_result<double>(boost::math::tr1::comp_ellint_3(ui, ui));
check_result<double>(boost::math::tr1::comp_ellint_3(i, ui));
check_result<double>(boost::math::tr1::comp_ellint_3(f, d));
check_result<long double>(boost::math::tr1::comp_ellint_3(l, d));
check_result<float>(boost::math::tr1::cyl_bessel_i(f, f));
check_result<float>(boost::math::tr1::cyl_bessel_if(f, f));
check_result<double>(boost::math::tr1::cyl_bessel_i(d, d));
check_result<long double>(boost::math::tr1::cyl_bessel_i(l, l));
check_result<long double>(boost::math::tr1::cyl_bessel_il(l, l));
check_result<double>(boost::math::tr1::cyl_bessel_i(ui, ui));
check_result<double>(boost::math::tr1::cyl_bessel_i(i, ui));
check_result<double>(boost::math::tr1::cyl_bessel_i(f, d));
check_result<long double>(boost::math::tr1::cyl_bessel_i(l, d));
check_result<float>(boost::math::tr1::cyl_bessel_j(f, f));
check_result<float>(boost::math::tr1::cyl_bessel_jf(f, f));
check_result<double>(boost::math::tr1::cyl_bessel_j(d, d));
check_result<long double>(boost::math::tr1::cyl_bessel_j(l, l));
check_result<long double>(boost::math::tr1::cyl_bessel_jl(l, l));
check_result<double>(boost::math::tr1::cyl_bessel_j(ui, ui));
check_result<double>(boost::math::tr1::cyl_bessel_j(i, ui));
check_result<double>(boost::math::tr1::cyl_bessel_j(f, d));
check_result<long double>(boost::math::tr1::cyl_bessel_j(l, d));
check_result<float>(boost::math::tr1::cyl_bessel_k(f, f));
check_result<float>(boost::math::tr1::cyl_bessel_kf(f, f));
check_result<double>(boost::math::tr1::cyl_bessel_k(d, d));
check_result<long double>(boost::math::tr1::cyl_bessel_k(l, l));
check_result<long double>(boost::math::tr1::cyl_bessel_kl(l, l));
check_result<double>(boost::math::tr1::cyl_bessel_k(ui, ui));
check_result<double>(boost::math::tr1::cyl_bessel_k(i, ui));
check_result<double>(boost::math::tr1::cyl_bessel_k(f, d));
check_result<long double>(boost::math::tr1::cyl_bessel_k(l, d));
check_result<float>(boost::math::tr1::cyl_neumann(f, f));
check_result<float>(boost::math::tr1::cyl_neumannf(f, f));
check_result<double>(boost::math::tr1::cyl_neumann(d, d));
check_result<long double>(boost::math::tr1::cyl_neumann(l, l));
check_result<long double>(boost::math::tr1::cyl_neumannl(l, l));
check_result<double>(boost::math::tr1::cyl_neumann(ui, ui));
check_result<double>(boost::math::tr1::cyl_neumann(i, ui));
check_result<double>(boost::math::tr1::cyl_neumann(f, d));
check_result<long double>(boost::math::tr1::cyl_neumann(l, d));
check_result<float>(boost::math::tr1::ellint_1(f, f));
check_result<float>(boost::math::tr1::ellint_1f(f, f));
check_result<double>(boost::math::tr1::ellint_1(d, d));
check_result<long double>(boost::math::tr1::ellint_1(l, l));
check_result<long double>(boost::math::tr1::ellint_1l(l, l));
check_result<double>(boost::math::tr1::ellint_1(ui, ui));
check_result<double>(boost::math::tr1::ellint_1(i, ui));
check_result<double>(boost::math::tr1::ellint_1(f, d));
check_result<long double>(boost::math::tr1::ellint_1(l, d));
check_result<float>(boost::math::tr1::ellint_2(f, f));
check_result<float>(boost::math::tr1::ellint_2f(f, f));
check_result<double>(boost::math::tr1::ellint_2(d, d));
check_result<long double>(boost::math::tr1::ellint_2(l, l));
check_result<long double>(boost::math::tr1::ellint_2l(l, l));
check_result<double>(boost::math::tr1::ellint_2(ui, ui));
check_result<double>(boost::math::tr1::ellint_2(i, ui));
check_result<double>(boost::math::tr1::ellint_2(f, d));
check_result<long double>(boost::math::tr1::ellint_2(l, d));
check_result<float>(boost::math::tr1::ellint_3(f, f, f));
check_result<float>(boost::math::tr1::ellint_3f(f, f, f));
check_result<double>(boost::math::tr1::ellint_3(d, d, d));
check_result<long double>(boost::math::tr1::ellint_3(l, l, l));
check_result<long double>(boost::math::tr1::ellint_3l(l, l, l));
check_result<double>(boost::math::tr1::ellint_3(ui, ui, i));
check_result<double>(boost::math::tr1::ellint_3(i, ui, f));
check_result<double>(boost::math::tr1::ellint_3(f, d, i));
check_result<long double>(boost::math::tr1::ellint_3(l, d, f));
check_result<float>(boost::math::tr1::expint(f));
check_result<float>(boost::math::tr1::expintf(f));
check_result<double>(boost::math::tr1::expint(d));
check_result<long double>(boost::math::tr1::expint(l));
check_result<long double>(boost::math::tr1::expintl(l));
check_result<double>(boost::math::tr1::expint(ui));
check_result<double>(boost::math::tr1::expint(i));
check_result<float>(boost::math::tr1::hermite(ui, f));
check_result<float>(boost::math::tr1::hermitef(ui, f));
check_result<double>(boost::math::tr1::hermite(ui, d));
check_result<long double>(boost::math::tr1::hermite(ui, l));
check_result<long double>(boost::math::tr1::hermitel(ui, l));
check_result<double>(boost::math::tr1::hermite(ui, i));
check_result<double>(boost::math::tr1::hermite(ui, ui));
check_result<float>(boost::math::tr1::laguerre(ui, f));
check_result<float>(boost::math::tr1::laguerref(ui, f));
check_result<double>(boost::math::tr1::laguerre(ui, d));
check_result<long double>(boost::math::tr1::laguerre(ui, l));
check_result<long double>(boost::math::tr1::laguerrel(ui, l));
check_result<double>(boost::math::tr1::laguerre(ui, i));
check_result<double>(boost::math::tr1::laguerre(ui, ui));
check_result<float>(boost::math::tr1::legendre(ui, f));
check_result<float>(boost::math::tr1::legendref(ui, f));
check_result<double>(boost::math::tr1::legendre(ui, d));
check_result<long double>(boost::math::tr1::legendre(ui, l));
check_result<long double>(boost::math::tr1::legendrel(ui, l));
check_result<double>(boost::math::tr1::legendre(ui, i));
check_result<double>(boost::math::tr1::legendre(ui, ui));
check_result<float>(boost::math::tr1::riemann_zeta(f));
check_result<float>(boost::math::tr1::riemann_zetaf(f));
check_result<double>(boost::math::tr1::riemann_zeta(d));
check_result<long double>(boost::math::tr1::riemann_zeta(l));
check_result<long double>(boost::math::tr1::riemann_zetal(l));
check_result<double>(boost::math::tr1::riemann_zeta(ui));
check_result<double>(boost::math::tr1::riemann_zeta(i));
check_result<float>(boost::math::tr1::sph_bessel(ui, f));
check_result<float>(boost::math::tr1::sph_besself(ui, f));
check_result<double>(boost::math::tr1::sph_bessel(ui, d));
check_result<long double>(boost::math::tr1::sph_bessel(ui, l));
check_result<long double>(boost::math::tr1::sph_bessell(ui, l));
check_result<double>(boost::math::tr1::sph_bessel(ui, i));
check_result<double>(boost::math::tr1::sph_bessel(ui, ui));
check_result<float>(boost::math::tr1::sph_legendre(ui, ui, f));
check_result<float>(boost::math::tr1::sph_legendref(ui, ui, f));
check_result<double>(boost::math::tr1::sph_legendre(ui, ui, d));
check_result<long double>(boost::math::tr1::sph_legendre(ui, ui, l));
check_result<long double>(boost::math::tr1::sph_legendrel(ui, ui, l));
check_result<double>(boost::math::tr1::sph_legendre(ui, ui, i));
check_result<double>(boost::math::tr1::sph_legendre(ui, ui, ui));
check_result<float>(boost::math::tr1::sph_neumann(ui, f));
check_result<float>(boost::math::tr1::sph_neumannf(ui, f));
check_result<double>(boost::math::tr1::sph_neumann(ui, d));
check_result<long double>(boost::math::tr1::sph_neumann(ui, l));
check_result<long double>(boost::math::tr1::sph_neumannl(ui, l));
check_result<double>(boost::math::tr1::sph_neumann(ui, i));
check_result<double>(boost::math::tr1::sph_neumann(ui, ui));
check_result<float>(boost::math::tr1::acosh(f));
check_result<float>(boost::math::tr1::acoshf(f));
check_result<double>(boost::math::tr1::acosh(d));
check_result<long double>(boost::math::tr1::acosh(l));
check_result<long double>(boost::math::tr1::acoshl(l));
check_result<double>(boost::math::tr1::acosh(ui));
check_result<double>(boost::math::tr1::acosh(i));
check_result<float>(boost::math::tr1::asinh(f));
check_result<float>(boost::math::tr1::asinhf(f));
check_result<double>(boost::math::tr1::asinh(d));
check_result<long double>(boost::math::tr1::asinh(l));
check_result<long double>(boost::math::tr1::asinhl(l));
check_result<double>(boost::math::tr1::asinh(ui));
check_result<double>(boost::math::tr1::asinh(i));
check_result<float>(boost::math::tr1::atanh(f));
check_result<float>(boost::math::tr1::atanhf(f));
check_result<double>(boost::math::tr1::atanh(d));
check_result<long double>(boost::math::tr1::atanh(l));
check_result<long double>(boost::math::tr1::atanhl(l));
check_result<double>(boost::math::tr1::atanh(ui));
check_result<double>(boost::math::tr1::atanh(i));
check_result<float>(boost::math::tr1::cbrt(f));
check_result<float>(boost::math::tr1::cbrtf(f));
check_result<double>(boost::math::tr1::cbrt(d));
check_result<long double>(boost::math::tr1::cbrt(l));
check_result<long double>(boost::math::tr1::cbrtl(l));
check_result<double>(boost::math::tr1::cbrt(ui));
check_result<double>(boost::math::tr1::cbrt(i));
check_result<float>(boost::math::tr1::copysign(f, f));
check_result<float>(boost::math::tr1::copysignf(f, f));
check_result<double>(boost::math::tr1::copysign(d, d));
check_result<long double>(boost::math::tr1::copysign(l, l));
check_result<long double>(boost::math::tr1::copysignl(l, l));
check_result<double>(boost::math::tr1::copysign(d, i));
check_result<double>(boost::math::tr1::copysign(ui, f));
check_result<float>(boost::math::tr1::erf(f));
check_result<float>(boost::math::tr1::erff(f));
check_result<double>(boost::math::tr1::erf(d));
check_result<long double>(boost::math::tr1::erf(l));
check_result<long double>(boost::math::tr1::erfl(l));
check_result<double>(boost::math::tr1::erf(ui));
check_result<double>(boost::math::tr1::erf(i));
check_result<float>(boost::math::tr1::erfc(f));
check_result<float>(boost::math::tr1::erfcf(f));
check_result<double>(boost::math::tr1::erfc(d));
check_result<long double>(boost::math::tr1::erfc(l));
check_result<long double>(boost::math::tr1::erfcl(l));
check_result<double>(boost::math::tr1::erfc(ui));
check_result<double>(boost::math::tr1::erfc(i));
check_result<float>(boost::math::tr1::expm1(f));
check_result<float>(boost::math::tr1::expm1f(f));
check_result<double>(boost::math::tr1::expm1(d));
check_result<long double>(boost::math::tr1::expm1(l));
check_result<long double>(boost::math::tr1::expm1l(l));
check_result<double>(boost::math::tr1::expm1(ui));
check_result<double>(boost::math::tr1::expm1(i));
check_result<float>(boost::math::tr1::fmin(f, f));
check_result<float>(boost::math::tr1::fminf(f, f));
check_result<double>(boost::math::tr1::fmin(d, d));
check_result<long double>(boost::math::tr1::fmin(l, l));
check_result<long double>(boost::math::tr1::fminl(l, l));
check_result<double>(boost::math::tr1::fmin(d, i));
check_result<double>(boost::math::tr1::fmin(ui, f));
check_result<float>(boost::math::tr1::fmax(f, f));
check_result<float>(boost::math::tr1::fmaxf(f, f));
check_result<double>(boost::math::tr1::fmax(d, d));
check_result<long double>(boost::math::tr1::fmax(l, l));
check_result<long double>(boost::math::tr1::fmaxl(l, l));
check_result<double>(boost::math::tr1::fmax(d, i));
check_result<double>(boost::math::tr1::fmax(ui, f));
check_result<float>(boost::math::tr1::hypot(f, f));
check_result<float>(boost::math::tr1::hypotf(f, f));
check_result<double>(boost::math::tr1::hypot(d, d));
check_result<long double>(boost::math::tr1::hypot(l, l));
check_result<long double>(boost::math::tr1::hypotl(l, l));
check_result<double>(boost::math::tr1::hypot(d, i));
check_result<double>(boost::math::tr1::hypot(ui, f));
check_result<float>(boost::math::tr1::lgamma(f));
check_result<float>(boost::math::tr1::lgammaf(f));
check_result<double>(boost::math::tr1::lgamma(d));
check_result<long double>(boost::math::tr1::lgamma(l));
check_result<long double>(boost::math::tr1::lgammal(l));
check_result<double>(boost::math::tr1::lgamma(ui));
check_result<double>(boost::math::tr1::lgamma(i));
check_result<long long>(boost::math::tr1::llround(f));
check_result<long long>(boost::math::tr1::llroundf(f));
check_result<long long>(boost::math::tr1::llround(d));
check_result<long long>(boost::math::tr1::llround(l));
check_result<long long>(boost::math::tr1::llroundl(l));
check_result<long long>(boost::math::tr1::llround(ui));
check_result<long long>(boost::math::tr1::llround(i));
check_result<float>(boost::math::tr1::log1p(f));
check_result<float>(boost::math::tr1::log1pf(f));
check_result<double>(boost::math::tr1::log1p(d));
check_result<long double>(boost::math::tr1::log1p(l));
check_result<long double>(boost::math::tr1::log1pl(l));
check_result<double>(boost::math::tr1::log1p(ui));
check_result<double>(boost::math::tr1::log1p(i));
check_result<long>(boost::math::tr1::lround(f));
check_result<long>(boost::math::tr1::lroundf(f));
check_result<long>(boost::math::tr1::lround(d));
check_result<long>(boost::math::tr1::lround(l));
check_result<long>(boost::math::tr1::lroundl(l));
check_result<long>(boost::math::tr1::lround(ui));
check_result<long>(boost::math::tr1::lround(i));
check_result<float>(boost::math::tr1::round(f));
check_result<float>(boost::math::tr1::roundf(f));
check_result<double>(boost::math::tr1::round(d));
check_result<long double>(boost::math::tr1::round(l));
check_result<long double>(boost::math::tr1::roundl(l));
check_result<double>(boost::math::tr1::round(ui));
check_result<double>(boost::math::tr1::round(i));
check_result<float>(boost::math::tr1::nextafter(f, f));
check_result<float>(boost::math::tr1::nextafterf(f, f));
check_result<double>(boost::math::tr1::nextafter(d, d));
check_result<long double>(boost::math::tr1::nextafter(l, l));
check_result<long double>(boost::math::tr1::nextafterl(l, l));
check_result<double>(boost::math::tr1::nextafter(d, i));
check_result<double>(boost::math::tr1::nextafter(ui, f));
check_result<float>(boost::math::tr1::nexttoward(f, f));
check_result<float>(boost::math::tr1::nexttowardf(f, f));
check_result<double>(boost::math::tr1::nexttoward(d, d));
check_result<long double>(boost::math::tr1::nexttoward(l, l));
check_result<long double>(boost::math::tr1::nexttowardl(l, l));
check_result<double>(boost::math::tr1::nexttoward(d, i));
check_result<double>(boost::math::tr1::nexttoward(ui, f));
check_result<float>(boost::math::tr1::tgamma(f));
check_result<float>(boost::math::tr1::tgammaf(f));
check_result<double>(boost::math::tr1::tgamma(d));
check_result<long double>(boost::math::tr1::tgamma(l));
check_result<long double>(boost::math::tr1::tgammal(l));
check_result<double>(boost::math::tr1::tgamma(ui));
check_result<double>(boost::math::tr1::tgamma(i));
check_result<float>(boost::math::tr1::trunc(f));
check_result<float>(boost::math::tr1::truncf(f));
check_result<double>(boost::math::tr1::trunc(d));
check_result<long double>(boost::math::tr1::trunc(l));
check_result<long double>(boost::math::tr1::truncl(l));
check_result<double>(boost::math::tr1::trunc(ui));
check_result<double>(boost::math::tr1::trunc(i));
}

1600
test/test_tr1.cpp Normal file

File diff suppressed because it is too large Load Diff