Files
multiprecision/test/Jamfile.v2
John Maddock 3913771ea0 Change cpp_dec_float string conversion to generate a better error message when conversion fails.
Add generic inter-conversions and tests for them.
Fix bug in cpp_int convert_to.

[SVN r77630]
2012-03-29 18:00:06 +00:00

774 lines
21 KiB
Plaintext

# copyright John Maddock 2011
# Distributed under 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.
import modules ;
import path ;
local ntl-path = [ modules.peek : NTL_PATH ] ;
local gmp_path = [ modules.peek : GMP_PATH ] ;
local mpfr_path = [ modules.peek : MPFR_PATH ] ;
local tommath_path = [ modules.peek : TOMMATH_PATH ] ;
project : requirements
<include>$(gmp_path)
<include>$(gmp_path)/mpfr
<include>$(gmp_path)/gmpfrxx
<include>$(mpfr_path)
<include>$(tommath_path)
<include>../../..
<search>$(gmp_path)
<search>$(mpfr_path)
<search>$(mpfr_path)/build.vc10/lib/Win32/Debug
<search>$(tommath_path)
<toolset>msvc:<runtime-link>static
;
local enable-specfun = [ MATCH (--enable-specfun) : [ modules.peek : ARGV ] ] ;
local disable-concepts = [ MATCH (--disable-concepts) : [ modules.peek : ARGV ] ] ;
lib gmp ;
lib mpfr ;
if $(tommath_path)
{
TOMMATH = [ GLOB $(tommath_path) : *.c ] ;
}
else
{
lib tommath ;
TOMMATH = tommath ;
}
run test_arithmetic.cpp
: # command line
: # input files
: # requirements
<define>TEST_BACKEND
: test_arithmetic_backend_concept ;
run test_arithmetic.cpp
: # command line
: # input files
: # requirements
<define>TEST_CPP_DEC_FLOAT
: test_arithmetic_cpp_dec_float ;
run test_arithmetic.cpp gmp
: # command line
: # input files
: # requirements
<define>TEST_MPF_50
[ check-target-builds ../config//has_gmp : : <build>no ]
: test_arithmetic_mpf50 ;
run test_arithmetic.cpp gmp
: # command line
: # input files
: # requirements
<define>TEST_MPF
[ check-target-builds ../config//has_gmp : : <build>no ]
: test_arithmetic_mpf ;
run test_arithmetic.cpp gmp
: # command line
: # input files
: # requirements
<define>TEST_MPZ
[ check-target-builds ../config//has_gmp : : <build>no ]
: test_arithmetic_mpz ;
run test_arithmetic.cpp gmp
: # command line
: # input files
: # requirements
<define>TEST_MPZ_BOOST_RATIONAL
[ check-target-builds ../config//has_gmp : : <build>no ]
: test_arithmetic_mpz_br ;
run test_arithmetic.cpp gmp
: # command line
: # input files
: # requirements
<define>TEST_MPQ
[ check-target-builds ../config//has_gmp : : <build>no ]
: test_arithmetic_mpq ;
run test_arithmetic.cpp mpfr gmp
: # command line
: # input files
: # requirements
<define>TEST_MPFR
[ check-target-builds ../config//has_mpfr : : <build>no ]
: test_arithmetic_mpfr ;
run test_arithmetic.cpp mpfr gmp
: # command line
: # input files
: # requirements
<define>TEST_MPFR_50
[ check-target-builds ../config//has_mpfr : : <build>no ]
: test_arithmetic_mpfr_50 ;
run test_arithmetic.cpp $(TOMMATH)
: # command line
: # input files
: # requirements
<define>TEST_TOMMATH
[ check-target-builds ../config//has_tommath : : <build>no ]
: test_arithmetic_tommath ;
run test_arithmetic.cpp $(TOMMATH)
: # command line
: # input files
: # requirements
<define>TEST_TOMMATH_BOOST_RATIONAL
[ check-target-builds ../config//has_tommath : : <build>no ]
: test_arithmetic_tommath_br ;
run test_arithmetic.cpp
: # command line
: # input files
: # requirements
<define>TEST_CPP_INT
: test_arithmetic_cpp_int ;
run test_arithmetic.cpp
: # command line
: # input files
: # requirements
<define>TEST_CPP_INT_BR
: test_arithmetic_cpp_int_br ;
run test_numeric_limits.cpp
: # command line
: # input files
: # requirements
<define>TEST_BACKEND
: test_numeric_limits_backend_concept ;
run test_numeric_limits.cpp gmp
: # command line
: # input files
: # requirements
<define>TEST_MPF_50
[ check-target-builds ../config//has_gmp : : <build>no ]
: test_numeric_limits_mpf50 ;
run test_numeric_limits.cpp gmp
: # command line
: # input files
: # requirements
<define>TEST_MPF
[ check-target-builds ../config//has_gmp : : <build>no ]
: test_numeric_limits_mpf ;
run test_numeric_limits.cpp gmp
: # command line
: # input files
: # requirements
<define>TEST_MPZ
[ check-target-builds ../config//has_gmp : : <build>no ]
: test_numeric_limits_mpz ;
run test_numeric_limits.cpp gmp
: # command line
: # input files
: # requirements
<define>TEST_MPQ
[ check-target-builds ../config//has_gmp : : <build>no ]
: test_numeric_limits_mpq ;
run test_numeric_limits.cpp mpfr
: # command line
: # input files
: # requirements
<define>TEST_MPFR
[ check-target-builds ../config//has_mpfr : : <build>no ]
: test_numeric_limits_mpfr ;
run test_numeric_limits.cpp mpfr
: # command line
: # input files
: # requirements
<define>TEST_MPFR_50
[ check-target-builds ../config//has_mpfr : : <build>no ]
: test_numeric_limits_mpfr_50 ;
run test_numeric_limits.cpp
: # command line
: # input files
: # requirements
<define>TEST_CPP_DEC_FLOAT
: test_numeric_limits_cpp_dec_float ;
run test_numeric_limits.cpp $(TOMMATH)
: # command line
: # input files
: # requirements
<define>TEST_TOMMATH
[ check-target-builds ../config//has_tommath : : <build>no ]
: test_numeric_limits_tommath ;
run test_numeric_limits.cpp
: # command line
: # input files
: # requirements
<define>TEST_CPP_INT
: test_numeric_limits_cpp_int ;
run test_exp.cpp gmp
: # command line
: # input files
: # requirements
<define>TEST_MPF_50
[ check-target-builds ../config//has_gmp : : <build>no ]
: test_exp_mpf50 ;
run test_log.cpp gmp
: # command line
: # input files
: # requirements
<define>TEST_MPF_50
[ check-target-builds ../config//has_gmp : : <build>no ]
: test_log_mpf50 ;
run test_pow.cpp gmp
: # command line
: # input files
: # requirements
<define>TEST_MPF_50
[ check-target-builds ../config//has_gmp : : <build>no ]
: test_pow_mpf50 ;
run test_sinh.cpp gmp
: # command line
: # input files
: # requirements
<define>TEST_MPF_50
[ check-target-builds ../config//has_gmp : : <build>no ]
: test_sinh_mpf50 ;
run test_cosh.cpp gmp
: # command line
: # input files
: # requirements
<define>TEST_MPF_50
[ check-target-builds ../config//has_gmp : : <build>no ]
: test_cosh_mpf50 ;
run test_tanh.cpp gmp
: # command line
: # input files
: # requirements
<define>TEST_MPF_50
[ check-target-builds ../config//has_gmp : : <build>no ]
: test_tanh_mpf50 ;
run test_exp.cpp mpfr
: # command line
: # input files
: # requirements
<define>TEST_MPFR_50
[ check-target-builds ../config//has_mpfr : : <build>no ]
: test_exp_mpfr50 ;
run test_log.cpp mpfr
: # command line
: # input files
: # requirements
<define>TEST_MPFR_50
[ check-target-builds ../config//has_mpfr : : <build>no ]
: test_log_mpfr50 ;
run test_pow.cpp mpfr
: # command line
: # input files
: # requirements
<define>TEST_MPFR_50
[ check-target-builds ../config//has_mpfr : : <build>no ]
: test_pow_mpfr50 ;
run test_sinh.cpp mpfr
: # command line
: # input files
: # requirements
<define>TEST_MPFR_50
[ check-target-builds ../config//has_mpfr : : <build>no ]
: test_sinh_mpfr50 ;
run test_cosh.cpp mpfr
: # command line
: # input files
: # requirements
<define>TEST_MPFR_50
[ check-target-builds ../config//has_mpfr : : <build>no ]
: test_cosh_mpfr50 ;
run test_tanh.cpp mpfr
: # command line
: # input files
: # requirements
<define>TEST_MPFR_50
[ check-target-builds ../config//has_mpfr : : <build>no ]
: test_tanh_mpfr50 ;
run test_exp.cpp
: # command line
: # input files
: # requirements
<define>TEST_CPP_DEC_FLOAT
: test_exp_cpp_dec_float ;
run test_log.cpp
: # command line
: # input files
: # requirements
<define>TEST_CPP_DEC_FLOAT
: test_log_cpp_dec_float ;
run test_pow.cpp
: # command line
: # input files
: # requirements
<define>TEST_CPP_DEC_FLOAT
: test_pow_cpp_dec_float ;
run test_sinh.cpp
: # command line
: # input files
: # requirements
<define>TEST_CPP_DEC_FLOAT
: test_sinh_cpp_dec_float ;
run test_cosh.cpp
: # command line
: # input files
: # requirements
<define>TEST_CPP_DEC_FLOAT
: test_cosh_cpp_dec_float ;
run test_tanh.cpp
: # command line
: # input files
: # requirements
<define>TEST_CPP_DEC_FLOAT
: test_tanh_cpp_dec_float ;
run test_sin.cpp
: # command line
: # input files
: # requirements
<define>TEST_CPP_DEC_FLOAT
: test_sin_cpp_dec_float ;
run test_sin.cpp gmp
: # command line
: # input files
: # requirements
<define>TEST_MPF_50
[ check-target-builds ../config//has_gmp : : <build>no ]
: test_sin_mpf50 ;
run test_sin.cpp mpfr
: # command line
: # input files
: # requirements
<define>TEST_MPFR_50
[ check-target-builds ../config//has_mpfr : : <build>no ]
: test_sin_mpfr_50 ;
run test_cos.cpp
: # command line
: # input files
: # requirements
<define>TEST_CPP_DEC_FLOAT
: test_cos_cpp_dec_float ;
run test_cos.cpp gmp
: # command line
: # input files
: # requirements
<define>TEST_MPF_50
[ check-target-builds ../config//has_gmp : : <build>no ]
: test_cos_mpf50 ;
run test_cos.cpp mpfr
: # command line
: # input files
: # requirements
<define>TEST_MPFR_50
[ check-target-builds ../config//has_mpfr : : <build>no ]
: test_cos_mpfr_50 ;
run test_asin.cpp
: # command line
: # input files
: # requirements
<define>TEST_CPP_DEC_FLOAT
: test_asin_cpp_dec_float ;
run test_asin.cpp gmp
: # command line
: # input files
: # requirements
<define>TEST_MPF_50
[ check-target-builds ../config//has_gmp : : <build>no ]
: test_asin_mpf50 ;
run test_asin.cpp mpfr
: # command line
: # input files
: # requirements
<define>TEST_MPFR_50
[ check-target-builds ../config//has_mpfr : : <build>no ]
: test_asin_mpfr_50 ;
run test_acos.cpp
: # command line
: # input files
: # requirements
<define>TEST_CPP_DEC_FLOAT
: test_acos_cpp_dec_float ;
run test_acos.cpp gmp
: # command line
: # input files
: # requirements
<define>TEST_MPF_50
[ check-target-builds ../config//has_gmp : : <build>no ]
: test_acos_mpf50 ;
run test_acos.cpp mpfr
: # command line
: # input files
: # requirements
<define>TEST_MPFR_50
[ check-target-builds ../config//has_mpfr : : <build>no ]
: test_acos_mpfr_50 ;
run test_atan.cpp gmp
: # command line
: # input files
: # requirements
<define>TEST_MPF_50
[ check-target-builds ../config//has_gmp : : <build>no ]
: test_atan_mpf50 ;
run test_atan.cpp
: # command line
: # input files
: # requirements
<define>TEST_CPP_DEC_FLOAT
: test_atan_cpp_dec_float ;
run test_atan.cpp mpfr
: # command line
: # input files
: # requirements
<define>TEST_MPFR_50
[ check-target-builds ../config//has_mpfr : : <build>no ]
: test_atan_mpfr_50 ;
run test_gmp_conversions.cpp gmp
: # command line
: # input files
: # requirements
[ check-target-builds ../config//has_gmp : : <build>no ] ;
run test_mpfr_conversions.cpp gmp mpfr
: # command line
: # input files
: # requirements
[ check-target-builds ../config//has_mpfr : : <build>no ] ;
run test_round.cpp
: # command line
: # input files
: # requirements
<define>TEST_BACKEND
: test_round_backend_concept ;
run test_round.cpp gmp
: # command line
: # input files
: # requirements
<define>TEST_MPF_50
[ check-target-builds ../config//has_gmp : : <build>no ]
: test_round_mpf50 ;
run test_round.cpp mpfr
: # command line
: # input files
: # requirements
<define>TEST_MPFR_50
[ check-target-builds ../config//has_mpfr : : <build>no ]
: test_round_mpfr_50 ;
run test_round.cpp
: # command line
: # input files
: # requirements
<define>TEST_CPP_DEC_FLOAT
[ check-target-builds ../config//has_mpfr : : <build>no ]
: test_round_cpp_dec_float ;
run test_fpclassify.cpp
: # command line
: # input files
: # requirements
<define>TEST_BACKEND
: test_fpclassify_backend_concept ;
run test_fpclassify.cpp gmp
: # command line
: # input files
: # requirements
<define>TEST_MPF_50
[ check-target-builds ../config//has_gmp : : <build>no ]
: test_fpclassify_mpf50 ;
run test_fpclassify.cpp mpfr
: # command line
: # input files
: # requirements
<define>TEST_MPFR_50
[ check-target-builds ../config//has_mpfr : : <build>no ]
: test_fpclassify_mpfr_50 ;
run test_fpclassify.cpp
: # command line
: # input files
: # requirements
<define>TEST_CPP_DEC_FLOAT
: test_fpclassify_cpp_dec_float ;
run test_test.cpp ;
run test_float_io.cpp
: # command line
: # input files
: # requirements
<define>TEST_CPP_DEC_FLOAT
: test_float_io_cpp_dec_float ;
run test_float_io.cpp gmp
: # command line
: # input files
: # requirements
<define>TEST_MPF_50
[ check-target-builds ../config//has_gmp : : <build>no ]
: test_float_io_mpf ;
run test_float_io.cpp mpfr gmp
: # command line
: # input files
: # requirements
<define>TEST_MPFR_50
[ check-target-builds ../config//has_mpfr : : <build>no ]
: test_float_io_mpfr ;
run test_int_io.cpp $(TOMMATH)
: # command line
: # input files
: # requirements
<define>TEST_TOMMATH
[ check-target-builds ../config//has_tommath : : <build>no ]
: test_int_io_tommath ;
run test_int_io.cpp gmp
: # command line
: # input files
: # requirements
<define>TEST_MPZ
[ check-target-builds ../config//has_gmp : : <build>no ]
: test_int_io_mpz ;
run test_int_io.cpp
: # command line
: # input files
: # requirements
<define>TEST_CPP_INT
: test_int_io_cpp_int ;
run test_cpp_int.cpp gmp
: # command line
: # input files
: # requirements
[ check-target-builds ../config//has_gmp : : <build>no ]
release # otherwise runtime is too slow!!
;
run test_miller_rabin.cpp gmp
: # command line
: # input files
: # requirements
[ check-target-builds ../config//has_gmp : : <build>no ]
release # otherwise runtime is too slow!!
;
run test_rational_io.cpp $(TOMMATH)
: # command line
: # input files
: # requirements
<define>TEST_TOMMATH
[ check-target-builds ../config//has_tommath : : <build>no ]
: test_rational_io_tommath ;
run test_rational_io.cpp gmp
: # command line
: # input files
: # requirements
<define>TEST_MPQ
[ check-target-builds ../config//has_gmp : : <build>no ]
: test_rational_io_mpz ;
run test_generic_conv.cpp
: # command line
: # input files
: # requirements
[ check-target-builds ../config//has_gmp : <define>TEST_GMP <source>gmp : ]
[ check-target-builds ../config//has_tommath : <define>TEST_TOMMATH <source>$(TOMMATH) : ]
[ check-target-builds ../config//has_mpfr : <define>TEST_MPFR <source>mpfr : ]
release
;
run ../example/gmp_snips.cpp gmp
: # command line
: # input files
: # requirements
[ check-target-builds ../config//has_gmp : : <build>no ] ;
run ../example/mpfr_snips.cpp mpfr
: # command line
: # input files
: # requirements
[ check-target-builds ../config//has_mpfr : : <build>no ] ;
run ../example/cpp_dec_float_snips.cpp ;
run ../example/cpp_int_snips.cpp ;
run ../example/tommath_snips.cpp $(TOMMATH)
: # command line
: # input files
: # requirements
[ check-target-builds ../config//has_tommath : : <build>no ] ;
if $(enable-specfun)
{
for local source in [ glob math/*.cpp ]
{
run $(source) mpfr gmp /boost/test//boost_test_exec_monitor/<link>static /boost/regex//boost_regex/<link>static
: # command line
: # input files
: # requirements
[ check-target-builds ../config//has_mpfr : : <build>no ]
<define>TEST_MPFR_50
<optimization>speed
<define>BOOST_ALL_NO_LIB
<toolset>msvc:<cxxflags>-bigobj
release
: $(source:B)_mpfr ;
run $(source) gmp /boost/test//boost_test_exec_monitor/<link>static /boost/regex//boost_regex/<link>static
: # command line
: # input files
: # requirements
[ check-target-builds ../config//has_gmp : : <build>no ]
<optimization>speed
<define>TEST_MPF_50
<define>BOOST_ALL_NO_LIB
<toolset>msvc:<cxxflags>-bigobj
release
: $(source:B)_mpf ;
run $(source) /boost/test//boost_test_exec_monitor/<link>static /boost/regex//boost_regex/<link>static
: # command line
: # input files
: # requirements
<define>TEST_CPP_DEC_FLOAT
<define>BOOST_ALL_NO_LIB
<optimization>speed
<toolset>msvc:<cxxflags>-bigobj
release
: $(source:B)_cpp_dec_float ;
}
}
if ! $(disable-concepts)
{
run mp_number_concept_check.cpp mpfr
: # command line
: # input files
: # requirements
<define>TEST_MPFR_50
[ check-target-builds ../config//has_mpfr : : <build>no ]
: mp_number_concept_check_mpfr_50 ;
run mp_number_concept_check.cpp mpfr
: # command line
: # input files
: # requirements
<define>TEST_MPFR_6
[ check-target-builds ../config//has_mpfr : : <build>no ]
: mp_number_concept_check_mpfr_6 ;
run mp_number_concept_check.cpp mpfr
: # command line
: # input files
: # requirements
<define>TEST_MPFR_15
[ check-target-builds ../config//has_mpfr : : <build>no ]
: mp_number_concept_check_mpfr_15 ;
run mp_number_concept_check.cpp mpfr
: # command line
: # input files
: # requirements
<define>TEST_MPFR_17
[ check-target-builds ../config//has_mpfr : : <build>no ]
: mp_number_concept_check_mpfr_17 ;
run mp_number_concept_check.cpp mpfr
: # command line
: # input files
: # requirements
<define>TEST_MPFR_30
[ check-target-builds ../config//has_mpfr : : <build>no ]
: mp_number_concept_check_mpfr_30 ;
run mp_number_concept_check.cpp gmp
: # command line
: # input files
: # requirements
<define>TEST_MPF_50
[ check-target-builds ../config//has_gmp : : <build>no ]
: mp_number_concept_check_mpf50 ;
run mp_number_concept_check.cpp
: # command line
: # input files
: # requirements
<define>TEST_CPP_DEC_FLOAT
: mp_number_concept_check_cpp_dec_float ;
run mp_number_concept_check.cpp
: # command line
: # input files
: # requirements
<define>TEST_CPP_DEC_FLOAT_NO_ET
: mp_number_concept_check_cpp_dec_float_no_et ;
run mp_number_concept_check.cpp
: # command line
: # input files
: # requirements
<define>TEST_BACKEND
: mp_number_concept_check_backend_concept ;
}