1 # copyright John Maddock 2011
2 # Distributed under the Boost Software License, Version 1.0.
3 # (See accompanying file LICENSE_1_0.txt or copy at
4 # http://www.boost.org/LICENSE_1_0.txt.
9 import ../../config/checks/config : requires ;
11 local ntl-path = [ modules.peek : NTL_PATH ] ;
12 local gmp_path = [ modules.peek : GMP_PATH ] ;
13 local mpfr_path = [ modules.peek : MPFR_PATH ] ;
14 local mpfi_path = [ modules.peek : MPFI_PATH ] ;
15 local tommath_path = [ modules.peek : TOMMATH_PATH ] ;
18 #######################################################################################
20 # NOTE: Because these tests take a fair while to build and run, they are split up into
21 # multiple smaller test suites which are:
24 # functions_and_limits
33 # You can run an individual suite by passing its name to b2 on the command line.
34 # Or you can run all except the "specfun" tests (which are very slow) by not specifying anything.
36 # Please make sure that any new tests are added to one of the test suites, and that the
37 # build times for the various suites are reasonably balanced: otherwise the CI builds
38 # will time out if one suite contains too many.
40 #######################################################################################################
42 path-constant here : . ;
44 project : requirements
46 <include>$(gmp_path)/mpfr
47 <include>$(gmp_path)/gmpfrxx
50 <include>$(mpfi_path)/src
51 <include>$(tommath_path)
54 # We set these to make it easier to set up and test GMP and MPFR under Win32:
55 <toolset>msvc:<runtime-link>static
56 <toolset>msvc:<link>static
57 <toolset>msvc:<warnings>all
58 <toolset>msvc:<cxxflags>/fp\:precise
59 <toolset>intel-win:<runtime-link>static
60 <toolset>intel-win:<link>static
61 <toolset>clang-win:<link>static # Clang-win does not generate .dlls.
62 <toolset>clang:<link>static # Clang-linux does not generate .dlls.
63 <toolset>clang:<cxxflags>-Wno-unused-variable # warning: unused variable 'tolerance' [-Wunused-variable]
64 <toolset>clang:<cxxflags>-v
66 # Assembler error "File too big" caused by lots of C++ templates, for example, math/floating_point_examples.cpp.
67 # Some projects on some toolsets may require
68 # <toolset>gcc-mingw:<cxxflags>\"-Wa,-mbig-obj\"
69 # See https://digitalkarabela.com/mingw-w64-how-to-fix-file-too-big-too-many-sections/
70 # <toolset>gcc-mingw:<cxxflags>-Wa,-mbig-obj # Some projects may overflow assembler and require equivalent of MSVC /bigobj.
71 # Requires version 2.30 of GNU binutils.
72 # Best applied only to projects that require this, see multiprecision/example run math/floating_point_examples.cpp.
75 <toolset>msvc:<debug-symbols>off
76 <toolset>intel:<debug-symbols>off
77 <toolset>gcc:<cxxflags>-Wall
78 <toolset>gcc:<cxxflags>-Wextra
79 #<toolset>intel:<define>SLOW_COMPILER
80 <toolset>msvc,<optimization>off:<cxxflags>-RTC1
81 # We can't yet enable this - it breaks the STL in some tests...
82 #<toolset>msvc,<optimization>off:<cxxflags>-RTCc
83 #<toolset>msvc,<optimization>off:<define>_ALLOW_RTCc_IN_STL
86 local enable-specfun = [ MATCH (--enable-specfun) : [ modules.peek : ARGV ] ] ;
87 local disable-concepts = [ MATCH (--disable-concepts) : [ modules.peek : ARGV ] ] ;
89 lib gmp : : <search>$(gmp_path) ;
90 lib mpfr : : <search>$(gmp_path) <search>$(mpfr_path) <search>$(mpfr_path)/build.vc10/lib/Win32/Debug ;
91 lib mpfi : : <search>$(gmp_path) <search>$(mpfr_path) <search>$(mpfr_path)/build.vc10/lib/Win32/Debug <search>$(mpfi_path) <search>$(mpfi_path)/src ;
97 lib tommath : [ GLOB $(tommath_path) : *.c ] : <visibility>global ;
102 lib tommath : : <search>$(tommath_path) ;
106 lib no_eh_support : no_eh_test_support.cpp ;
108 test-suite arithmetic_tests :
110 [ run test_arithmetic_backend_concept.cpp no_eh_support ]
111 [ compile test_arithmetic_skeleton.cpp ]
113 [ run test_arithmetic_cpp_dec_float_1.cpp no_eh_support ]
114 [ run test_arithmetic_cpp_dec_float_2.cpp no_eh_support ]
115 [ run test_arithmetic_cpp_dec_float_3.cpp no_eh_support ]
116 [ run test_arithmetic_cpp_dec_float_3m.cpp no_eh_support ]
118 [ run test_arithmetic_cpp_bin_float_1.cpp no_eh_support ]
119 [ run test_arithmetic_cpp_bin_float_2.cpp no_eh_support ]
120 [ run test_arithmetic_cpp_bin_float_2m.cpp no_eh_support ]
121 [ run test_arithmetic_cpp_bin_float_3.cpp no_eh_support ]
123 [ run test_arithmetic_mpf_50.cpp gmp no_eh_support : : : [ check-target-builds ../config//has_gmp : : <build>no ] ]
124 [ run test_arithmetic_mpf.cpp gmp no_eh_support : : : [ check-target-builds ../config//has_gmp : : <build>no ] ]
125 [ run test_arithmetic_mpz.cpp gmp no_eh_support : : : [ check-target-builds ../config//has_gmp : : <build>no ] ]
126 [ run test_arithmetic_mpz_rat.cpp gmp no_eh_support : : : [ check-target-builds ../config//has_gmp : : <build>no ] ]
127 [ run test_arithmetic_mpz_br.cpp gmp no_eh_support : : : [ check-target-builds ../config//has_gmp : : <build>no ] ]
128 [ run test_arithmetic_mpq.cpp gmp no_eh_support : : : [ check-target-builds ../config//has_gmp : : <build>no ] ]
130 [ run test_arithmetic_mpfr.cpp mpfr gmp no_eh_support : : : [ check-target-builds ../config//has_mpfr : : <build>no ] ]
131 [ run test_arithmetic_mpfr_50.cpp mpfr gmp no_eh_support : : : [ check-target-builds ../config//has_mpfr : : <build>no ] ]
132 [ run test_arithmetic_mpfr_50_static.cpp mpfr gmp no_eh_support : : : [ check-target-builds ../config//has_mpfr : : <build>no ] ]
134 [ run test_arithmetic_tommath.cpp $(TOMMATH) no_eh_support : : : [ check-target-builds ../config//has_tommath : : <build>no ] ]
135 [ run test_arithmetic_tommath_rat.cpp $(TOMMATH) no_eh_support : : : [ check-target-builds ../config//has_tommath : : <build>no ] ]
136 [ run test_arithmetic_tommath_br.cpp $(TOMMATH) no_eh_support : : : [ check-target-builds ../config//has_tommath : : <build>no ] ]
138 [ run test_arithmetic_cpp_int_1.cpp no_eh_support : : : <toolset>msvc:<cxxflags>-bigobj ]
139 [ run test_arithmetic_cpp_int_2.cpp no_eh_support ]
140 [ run test_arithmetic_cpp_int_3.cpp no_eh_support ]
141 [ run test_arithmetic_cpp_int_4.cpp no_eh_support : : : <toolset>msvc:<cxxflags>-bigobj ]
142 [ run test_arithmetic_cpp_int_5.cpp no_eh_support ]
143 [ run test_arithmetic_cpp_int_6.cpp no_eh_support ]
144 [ run test_arithmetic_cpp_int_7.cpp no_eh_support ]
145 [ run test_arithmetic_cpp_int_8.cpp no_eh_support ]
146 [ run test_arithmetic_cpp_int_9.cpp no_eh_support ]
147 [ run test_arithmetic_cpp_int_10.cpp no_eh_support ]
148 [ run test_arithmetic_cpp_int_11.cpp no_eh_support ]
149 [ run test_arithmetic_cpp_int_12.cpp no_eh_support ]
150 [ run test_arithmetic_cpp_int_13.cpp no_eh_support ]
151 [ run test_arithmetic_cpp_int_14.cpp no_eh_support ]
152 [ run test_arithmetic_cpp_int_15.cpp no_eh_support ]
153 [ run test_arithmetic_cpp_int_16.cpp no_eh_support ]
154 [ run test_arithmetic_cpp_int_17.cpp no_eh_support ]
155 [ run test_arithmetic_cpp_int_18.cpp no_eh_support ]
156 [ run test_arithmetic_cpp_int_19.cpp no_eh_support ]
157 [ run test_arithmetic_cpp_int_br.cpp no_eh_support ]
159 [ run test_arithmetic_ab_1.cpp no_eh_support ]
160 [ run test_arithmetic_ab_2.cpp no_eh_support ]
161 [ run test_arithmetic_ab_3.cpp no_eh_support ]
163 [ run test_cpp_dec_float_round.cpp no_eh_support ]
165 [ run test_arithmetic_logged_1.cpp no_eh_support : : : <toolset>msvc:<cxxflags>-bigobj ]
166 [ run test_arithmetic_logged_2.cpp no_eh_support : : : <toolset>msvc:<cxxflags>-bigobj ]
168 [ run test_arithmetic_dbg_adptr1.cpp no_eh_support ]
169 [ run test_arithmetic_dbg_adptr1m.cpp no_eh_support ]
170 [ run test_arithmetic_dbg_adptr2.cpp no_eh_support : : : <toolset>msvc:<cxxflags>-bigobj ]
172 [ run test_arithmetic_mpfi_50.cpp mpfi mpfr gmp no_eh_support : : : [ check-target-builds ../config//has_mpfi : : <build>no ] ]
174 [ run test_arithmetic_float_128.cpp quadmath no_eh_support : : : [ check-target-builds ../config//has_float128 : : <build>no ] ]
175 [ run test_arithmetic_float_128.cpp no_eh_support : : : [ check-target-builds ../config//has_intel_quad : <cxxflags>-Qoption,cpp,--extended_float_type : <build>no ] [ check-target-builds ../config//has_float128 : <source>quadmath ] : test_arithmetic_intel_quad ]
177 [ run test_arithmetic_mpc.cpp mpc mpfr gmp : : : [ check-target-builds ../config//has_mpc : : <build>no ] ]
178 [ run test_mpfr_mpc_precisions.cpp mpc mpfr gmp : : : [ check-target-builds ../config//has_mpc : : <build>no ] ]
179 [ run test_mpfi_precisions.cpp mpfi mpfr gmp : : : [ check-target-builds ../config//has_mpfi : : <build>no ] ]
180 [ run test_mpf_precisions.cpp gmp : : : [ check-target-builds ../config//has_gmp : : <build>no ] ]
181 [ run test_complex.cpp : : : [ check-target-builds ../config//has_mpc : <define>TEST_MPC <source>mpc <source>mpfr <source>gmp ] [ check-target-builds ../config//has_float128 : <source>quadmath ] ]
182 [ run test_arithmetic_complex_adaptor.cpp ]
183 [ run test_arithmetic_complex_adaptor_2.cpp : : : <toolset>msvc:<cxxflags>-bigobj ]
184 [ run test_arithmetic_complex128.cpp : : : [ check-target-builds ../config//has_float128 : <source>quadmath ] ]
188 rule get_function_tests
191 for local source in test_exp.cpp test_log.cpp test_pow.cpp test_sinh.cpp test_sqrt.cpp test_cosh.cpp test_tanh.cpp test_sin.cpp test_cos.cpp test_tan.cpp test_asin.cpp test_acos.cpp test_atan.cpp test_round.cpp test_fpclassify.cpp test_sf_import_c99.cpp
193 result += [ run $(source) gmp no_eh_support
197 [ check-target-builds ../config//has_gmp : : <build>no ]
199 : $(source:B)_mpf50 ] ;
200 result += [ run $(source) mpfr gmp no_eh_support
204 [ check-target-builds ../config//has_mpfr : : <build>no ]
206 : $(source:B)_mpfr50 ] ;
207 result += [ run $(source) mpfi mpfr gmp no_eh_support
211 [ check-target-builds ../config//has_mpfi : : <build>no ]
213 : $(source:B)_mpfi50 ] ;
214 result += [ run $(source) no_eh_support
218 <define>TEST_CPP_DEC_FLOAT
219 : $(source:B)_cpp_dec_float ] ;
220 result += [ run $(source) no_eh_support
224 <define>TEST_CPP_BIN_FLOAT
225 : $(source:B)_cpp_bin_float ] ;
226 result += [ run $(source) quadmath no_eh_support
230 [ check-target-builds ../config//has_float128 : : <build>no ]
231 <define>TEST_FLOAT128
232 : $(source:B)_float128 ] ;
233 result += [ run $(source) no_eh_support
237 [ check-target-builds ../config//has_intel_quad : <cxxflags>-Qoption,cpp,--extended_float_type : <build>no ] [ check-target-builds ../config//has_float128 : <source>quadmath ]
238 <define>TEST_FLOAT128
239 : $(source:B)_intel_quad ] ;
244 test-suite functions_and_limits :
246 [ run test_numeric_limits.cpp no_eh_support
251 : test_numeric_limits_backend_concept ]
253 [ run test_numeric_limits.cpp gmp no_eh_support
258 [ check-target-builds ../config//has_gmp : : <build>no ]
259 : test_numeric_limits_mpf50 ]
261 [ run test_numeric_limits.cpp gmp no_eh_support
266 [ check-target-builds ../config//has_gmp : : <build>no ]
267 : test_numeric_limits_mpf ]
269 [ run test_numeric_limits.cpp gmp no_eh_support
274 [ check-target-builds ../config//has_gmp : : <build>no ]
275 : test_numeric_limits_mpz ]
277 [ run test_numeric_limits.cpp gmp no_eh_support
282 [ check-target-builds ../config//has_gmp : : <build>no ]
283 : test_numeric_limits_mpq ]
285 [ run test_numeric_limits.cpp mpfr gmp no_eh_support
290 [ check-target-builds ../config//has_mpfr : : <build>no ]
291 : test_numeric_limits_mpfr ]
293 [ run test_numeric_limits.cpp mpfr gmp no_eh_support
298 [ check-target-builds ../config//has_mpfr : : <build>no ]
299 : test_numeric_limits_mpfr_50 ]
301 [ run test_numeric_limits.cpp no_eh_support
305 <define>TEST_CPP_DEC_FLOAT
306 : test_numeric_limits_cpp_dec_float ]
308 [ run test_numeric_limits.cpp no_eh_support
312 <define>TEST_CPP_BIN_FLOAT
313 : test_numeric_limits_cpp_bin_float ]
315 [ run test_numeric_limits.cpp $(TOMMATH) no_eh_support
320 [ check-target-builds ../config//has_tommath : : <build>no ]
321 : test_numeric_limits_tommath ]
323 [ run test_numeric_limits.cpp no_eh_support
328 : test_numeric_limits_cpp_int ]
330 [ run test_numeric_limits.cpp mpfi mpfr gmp no_eh_support
335 [ check-target-builds ../config//has_mpfi : : <build>no ]
336 : test_numeric_limits_mpfi_50 ]
338 [ run test_numeric_limits.cpp quadmath no_eh_support
342 <define>TEST_FLOAT128
343 [ check-target-builds ../config//has_float128 : : <build>no ]
344 : test_numeric_limits_float128 ]
345 [ run test_numeric_limits.cpp no_eh_support
349 <define>TEST_FLOAT128
350 [ check-target-builds ../config//has_intel_quad : <cxxflags>-Qoption,cpp,--extended_float_type : <build>no ] [ check-target-builds ../config//has_float128 : <source>quadmath ]
351 : test_numeric_limits_intel_quad ]
353 [ run test_sf_import_c99.cpp : : : <define>TEST_CPP_DEC_FLOAT_2 : test_sf_import_c99_cpp_dec_float_2 ]
354 [ run test_sf_import_c99.cpp : : : <define>TEST_CPP_DEC_FLOAT_3 : test_sf_import_c99_cpp_dec_float_3 ]
355 [ run test_sf_import_c99.cpp : : : <define>TEST_CPP_DEC_FLOAT_4 : test_sf_import_c99_cpp_dec_float_4 ]
356 [ run test_sf_import_c99.cpp : : : <define>TEST_CPP_DEC_FLOAT_5 : test_sf_import_c99_cpp_dec_float_5 ]
357 [ run test_sf_import_c99.cpp : : : <define>TEST_CPP_DEC_FLOAT_6 : test_sf_import_c99_cpp_dec_float_6 ]
359 [ run test_sf_import_c99.cpp : : : <define>TEST_CPP_BIN_FLOAT_2 : test_sf_import_c99_cpp_bin_float_2 ]
360 [ run test_sf_import_c99.cpp : : : <define>TEST_CPP_BIN_FLOAT_2 : test_sf_import_c99_cpp_bin_float_3 ]
362 [ run test_move.cpp mpfr gmp no_eh_support
367 [ check-target-builds ../config//has_mpfr : : <build>no ]
370 [ run test_move.cpp mpc mpfr gmp no_eh_support
375 [ check-target-builds ../config//has_mpc : : <build>no ]
378 [ run test_move.cpp gmp no_eh_support
383 [ check-target-builds ../config//has_gmp : : <build>no ]
386 [ run test_move.cpp $(TOMMATH) no_eh_support
391 [ check-target-builds ../config//has_tommath : : <build>no ]
392 : test_move_tommath ]
394 [ run test_move.cpp no_eh_support
399 : test_move_cpp_int ]
401 [ get_function_tests ]
404 test-suite conversions :
406 [ run test_gmp_conversions.cpp gmp no_eh_support
410 [ check-target-builds ../config//has_gmp : : <build>no ] ]
412 [ run test_mpfr_conversions.cpp gmp mpfr no_eh_support
416 [ check-target-builds ../config//has_mpfr : : <build>no ] ]
418 [ run test_mpc_conversions.cpp gmp mpfr mpc no_eh_support
422 [ check-target-builds ../config//has_mpc : : <build>no ] ]
424 [ run test_constants.cpp gmp no_eh_support
429 [ check-target-builds ../config//has_gmp : : <build>no ]
430 : test_constants_mpf50 ]
432 [ run test_constants.cpp mpfr gmp no_eh_support
437 [ check-target-builds ../config//has_mpfr : : <build>no ]
438 : test_constants_mpfr_50 ]
440 [ run test_constants.cpp no_eh_support
444 <define>TEST_CPP_DEC_FLOAT
445 : test_constants_cpp_dec_float ]
448 [ run test_test.cpp ]
449 [ run test_cpp_int_lit.cpp no_eh_support ]
452 # Interconversion tests:
454 [ run test_convert_from_cpp_int.cpp
458 [ check-target-builds ../config//has_gmp : <define>HAS_GMP <source>gmp : ]
459 [ check-target-builds ../config//has_mpfr : <define>HAS_MPFR <source>gmp <source>mpfr : ]
460 [ check-target-builds ../config//has_mpfi : <define>HAS_MPFI <source>gmp <source>mpfr <source>mpfi : ]
461 [ check-target-builds ../config//has_tommath : <define>HAS_TOMMATH <source>tommath : ]
462 [ check-target-builds ../config//has_float128 : <define>HAS_FLOAT128 <source>quadmath : ]
464 [ run test_convert_from_mpz_int.cpp
468 [ check-target-builds ../config//has_gmp : <define>HAS_GMP <source>gmp : ]
469 [ check-target-builds ../config//has_mpfr : <define>HAS_MPFR <source>gmp <source>mpfr : ]
470 [ check-target-builds ../config//has_mpfi : <define>HAS_MPFI <source>gmp <source>mpfr <source>mpfi : ]
471 [ check-target-builds ../config//has_tommath : <define>HAS_TOMMATH <source>tommath : ]
472 [ check-target-builds ../config//has_float128 : <define>HAS_FLOAT128 <source>quadmath : ]
474 [ run test_convert_from_tom_int.cpp
478 [ check-target-builds ../config//has_gmp : <define>HAS_GMP <source>gmp : ]
479 [ check-target-builds ../config//has_mpfr : <define>HAS_MPFR <source>gmp <source>mpfr : ]
480 [ check-target-builds ../config//has_mpfi : <define>HAS_MPFI <source>gmp <source>mpfr <source>mpfi : ]
481 [ check-target-builds ../config//has_tommath : <define>HAS_TOMMATH <source>tommath : ]
482 [ check-target-builds ../config//has_float128 : <define>HAS_FLOAT128 <source>quadmath : ]
484 [ run test_convert_from_cpp_rational.cpp
488 [ check-target-builds ../config//has_gmp : <define>HAS_GMP <source>gmp : ]
489 [ check-target-builds ../config//has_mpfr : <define>HAS_MPFR <source>gmp <source>mpfr : ]
490 [ check-target-builds ../config//has_mpfi : <define>HAS_MPFI <source>gmp <source>mpfr <source>mpfi : ]
491 [ check-target-builds ../config//has_tommath : <define>HAS_TOMMATH <source>tommath : ]
492 [ check-target-builds ../config//has_float128 : <define>HAS_FLOAT128 <source>quadmath : ]
494 [ run test_convert_from_gmp_rational.cpp
498 [ check-target-builds ../config//has_gmp : <define>HAS_GMP <source>gmp : ]
499 [ check-target-builds ../config//has_mpfr : <define>HAS_MPFR <source>gmp <source>mpfr : ]
500 [ check-target-builds ../config//has_mpfi : <define>HAS_MPFI <source>gmp <source>mpfr <source>mpfi : ]
501 [ check-target-builds ../config//has_tommath : <define>HAS_TOMMATH <source>tommath : ]
502 [ check-target-builds ../config//has_float128 : <define>HAS_FLOAT128 <source>quadmath : ]
504 [ run test_convert_from_tom_rational.cpp
508 [ check-target-builds ../config//has_gmp : <define>HAS_GMP <source>gmp : ]
509 [ check-target-builds ../config//has_mpfr : <define>HAS_MPFR <source>gmp <source>mpfr : ]
510 [ check-target-builds ../config//has_mpfi : <define>HAS_MPFI <source>gmp <source>mpfr <source>mpfi : ]
511 [ check-target-builds ../config//has_tommath : <define>HAS_TOMMATH <source>tommath : ]
512 [ check-target-builds ../config//has_float128 : <define>HAS_FLOAT128 <source>quadmath : ]
514 [ run test_convert_from_cpp_bin_float.cpp
518 [ check-target-builds ../config//has_gmp : <define>HAS_GMP <source>gmp : ]
519 [ check-target-builds ../config//has_mpfr : <define>HAS_MPFR <source>gmp <source>mpfr : ]
520 [ check-target-builds ../config//has_mpfi : <define>HAS_MPFI <source>gmp <source>mpfr <source>mpfi : ]
521 [ check-target-builds ../config//has_tommath : <define>HAS_TOMMATH <source>tommath : ]
522 [ check-target-builds ../config//has_float128 : <define>HAS_FLOAT128 <source>quadmath : ]
524 [ run test_convert_from_cpp_dec_float.cpp
528 [ check-target-builds ../config//has_gmp : <define>HAS_GMP <source>gmp : ]
529 [ check-target-builds ../config//has_mpfr : <define>HAS_MPFR <source>gmp <source>mpfr : ]
530 [ check-target-builds ../config//has_mpfi : <define>HAS_MPFI <source>gmp <source>mpfr <source>mpfi : ]
531 [ check-target-builds ../config//has_tommath : <define>HAS_TOMMATH <source>tommath : ]
532 [ check-target-builds ../config//has_float128 : <define>HAS_FLOAT128 <source>quadmath : ]
534 [ run test_convert_from_mpf_float.cpp
538 [ check-target-builds ../config//has_gmp : <define>HAS_GMP <source>gmp : ]
539 [ check-target-builds ../config//has_mpfr : <define>HAS_MPFR <source>gmp <source>mpfr : ]
540 [ check-target-builds ../config//has_mpfi : <define>HAS_MPFI <source>gmp <source>mpfr <source>mpfi : ]
541 [ check-target-builds ../config//has_tommath : <define>HAS_TOMMATH <source>tommath : ]
542 [ check-target-builds ../config//has_float128 : <define>HAS_FLOAT128 <source>quadmath : ]
544 [ run test_convert_from_mpfr_float.cpp
548 [ check-target-builds ../config//has_gmp : <define>HAS_GMP <source>gmp : ]
549 [ check-target-builds ../config//has_mpfr : <define>HAS_MPFR <source>gmp <source>mpfr : ]
550 [ check-target-builds ../config//has_mpfi : <define>HAS_MPFI <source>gmp <source>mpfr <source>mpfi : ]
551 [ check-target-builds ../config//has_tommath : <define>HAS_TOMMATH <source>tommath : ]
552 [ check-target-builds ../config//has_float128 : <define>HAS_FLOAT128 <source>quadmath : ]
554 [ run test_convert_from_mpfi_float.cpp
558 [ check-target-builds ../config//has_gmp : <define>HAS_GMP <source>gmp : ]
559 [ check-target-builds ../config//has_mpfr : <define>HAS_MPFR <source>gmp <source>mpfr : ]
560 [ check-target-builds ../config//has_mpfi : <define>HAS_MPFI <source>gmp <source>mpfr <source>mpfi : ]
561 [ check-target-builds ../config//has_tommath : <define>HAS_TOMMATH <source>tommath : ]
562 [ check-target-builds ../config//has_float128 : <define>HAS_FLOAT128 <source>quadmath : ]
564 [ run test_convert_from_float128.cpp
568 [ check-target-builds ../config//has_gmp : <define>HAS_GMP <source>gmp : ]
569 [ check-target-builds ../config//has_mpfr : <define>HAS_MPFR <source>gmp <source>mpfr : ]
570 [ check-target-builds ../config//has_mpfi : <define>HAS_MPFI <source>gmp <source>mpfr <source>mpfi : ]
571 [ check-target-builds ../config//has_tommath : <define>HAS_TOMMATH <source>tommath : ]
572 [ check-target-builds ../config//has_float128 : <define>HAS_FLOAT128 <source>quadmath : ]
575 [ run test_cpp_bin_float_conv.cpp ]
577 [ run test_cpp_bin_float_io.cpp no_eh_support /boost/system//boost_system /boost/chrono//boost_chrono
581 <define>TEST_CPP_BIN_FLOAT
583 release # Otherwise [ runtime is slow
584 : test_cpp_bin_float_io_1
587 [ run test_cpp_bin_float_io.cpp no_eh_support /boost/system//boost_system /boost/chrono//boost_chrono
591 <define>TEST_CPP_BIN_FLOAT
593 release # Otherwise [ runtime is slow
594 : test_cpp_bin_float_io_2
597 [ run test_cpp_bin_float.cpp no_eh_support mpfr gmp /boost/system//boost_system /boost/chrono//boost_chrono
602 [ check-target-builds ../config//has_mpfr : : <build>no ]
603 release # Otherwise [ runtime is slow
606 [ run test_float_io.cpp no_eh_support
610 <define>TEST_CPP_DEC_FLOAT
611 release # Otherwise [ runtime is slow
612 : test_float_io_cpp_dec_float ]
614 [ run test_float_io.cpp gmp no_eh_support
619 release # Otherwise [ runtime is slow
620 [ check-target-builds ../config//has_gmp : : <build>no ]
621 : test_float_io_mpf ]
623 [ run test_float_io.cpp mpfr gmp no_eh_support
628 release # Otherwise [ runtime is slow
629 [ check-target-builds ../config//has_mpfr : : <build>no ]
630 : test_float_io_mpfr ]
632 [ run test_float_io.cpp mpfi mpfr gmp no_eh_support
637 release # Otherwise [ runtime is slow
638 [ check-target-builds ../config//has_mpfi : : <build>no ]
639 : test_float_io_mpfi ]
641 [ run test_float_io.cpp quadmath no_eh_support
645 <define>TEST_FLOAT128
646 release # Otherwise [ runtime is slow
647 [ check-target-builds ../config//has_float128 : : <build>no ]
648 : test_float_io_float128 ]
649 [ run test_float_io.cpp no_eh_support
653 <define>TEST_FLOAT128
654 release # Otherwise [ runtime is slow
655 [ check-target-builds ../config//has_intel_quad : <cxxflags>-Qoption,cpp,--extended_float_type : <build>no ] [ check-target-builds ../config//has_float128 : <source>quadmath ]
656 : test_float_io_intel_quad ]
658 [ run test_int_io.cpp no_eh_support $(TOMMATH)
663 release # Otherwise [ runtime is slow
664 [ check-target-builds ../config//has_tommath : : <build>no ]
665 : test_int_io_tommath ]
667 [ run test_int_io.cpp no_eh_support gmp
672 release # Otherwise [ runtime is slow
673 [ check-target-builds ../config//has_gmp : : <build>no ]
679 test-suite cpp_int_tests :
681 [ run test_int_io.cpp no_eh_support
686 release # Otherwise [ runtime is slow
687 : test_int_io_cpp_int ]
689 [ run test_cpp_int_left_shift.cpp gmp no_eh_support
693 [ check-target-builds ../config//has_gmp : : <build>no ]
694 release # otherwise [ runtime is too slow!!
697 [ run test_cpp_int.cpp gmp no_eh_support
701 [ check-target-builds ../config//has_gmp : : <build>no ]
702 release # otherwise [ runtime is too slow!!
707 [ run test_cpp_int.cpp gmp no_eh_support
711 [ check-target-builds ../config//has_gmp : : <build>no ]
712 release # otherwise [ runtime is too slow!!
717 [ run test_cpp_int.cpp gmp no_eh_support
721 [ check-target-builds ../config//has_gmp : : <build>no ]
722 release # otherwise [ runtime is too slow!!
727 [ run test_cpp_int.cpp gmp no_eh_support
731 [ check-target-builds ../config//has_gmp : : <build>no ]
732 release # otherwise [ runtime is too slow!!
737 [ run test_cpp_int.cpp gmp no_eh_support
741 [ check-target-builds ../config//has_gmp : : <build>no ]
742 release # otherwise [ runtime is too slow!!
747 [ run test_cpp_int.cpp gmp no_eh_support
751 [ check-target-builds ../config//has_gmp : : <build>no ]
752 release # otherwise [ runtime is too slow!!
757 [ run test_cpp_int_karatsuba.cpp gmp no_eh_support
761 [ check-target-builds ../config//has_gmp : : <build>no ]
762 release # otherwise [ runtime is too slow!!
764 : test_cpp_int_karatsuba_1
766 [ run test_cpp_int_karatsuba.cpp gmp no_eh_support
770 [ check-target-builds ../config//has_gmp : : <build>no ]
771 release # otherwise [ runtime is too slow!!
773 : test_cpp_int_karatsuba_2
775 [ run test_cpp_int_karatsuba.cpp gmp no_eh_support
779 [ check-target-builds ../config//has_gmp : : <build>no ]
780 release # otherwise [ runtime is too slow!!
782 : test_cpp_int_karatsuba_3
784 [ run test_cpp_int_karatsuba.cpp gmp no_eh_support
788 [ check-target-builds ../config//has_gmp : : <build>no ]
789 release # otherwise [ runtime is too slow!!
791 : test_cpp_int_karatsuba_4
794 [ run test_checked_cpp_int.cpp no_eh_support ]
795 [ run test_unchecked_cpp_int.cpp no_eh_support : : : release ]
797 [ run test_cpp_int_serial.cpp ../../serialization/build//boost_serialization : : : release <define>TEST1 <toolset>gcc-mingw:<link>static : test_cpp_int_serial_1 ]
798 [ run test_cpp_int_serial.cpp ../../serialization/build//boost_serialization : : : release <define>TEST2 <toolset>gcc-mingw:<link>static : test_cpp_int_serial_2 ]
799 [ run test_cpp_int_serial.cpp ../../serialization/build//boost_serialization : : : release <define>TEST3 <toolset>gcc-mingw:<link>static : test_cpp_int_serial_3 ]
800 [ run test_cpp_int_serial.cpp ../../serialization/build//boost_serialization : : : release <define>TEST4 <toolset>gcc-mingw:<link>static : test_cpp_int_serial_4 ]
801 [ run test_cpp_int_deserial.cpp ../../serialization/build//boost_serialization ../../filesystem/build//boost_filesystem : $(here)/serial_txts : : release <toolset>gcc-mingw:<link>static ]
802 [ run test_cpp_rat_serial.cpp ../../serialization/build//boost_serialization : : : release <toolset>gcc-mingw:<link>static ]
808 [ compile test_constexpr.cpp :
809 [ check-target-builds ../config//has_float128 : <define>HAVE_FLOAT128 : ]
810 [ check-target-builds ../config//has_intel_quad : <cxxflags>-Qoption,cpp,--extended_float_type <define>HAVE_FLOAT128 : ]
811 [ requires cxx11_constexpr cxx11_user_defined_literals ] ]
813 [ compile constexpr_test_arithmetic_backend.cpp :
814 [ requires cxx14_constexpr cxx17_if_constexpr ] ]
815 [ compile constexpr_test_float128.cpp :
816 [ requires cxx14_constexpr cxx17_if_constexpr ] [ check-target-builds ../config//has_float128 : <source>quadmath : <build>no ] ]
818 [ run constexpr_test_cpp_int.cpp : : : [ requires cxx14_constexpr cxx17_if_constexpr ] [ check-target-builds ../config//has_is_constant_evaluated : : <build>no ] ]
819 [ run constexpr_test_cpp_int_2.cpp : : : [ requires cxx14_constexpr cxx17_if_constexpr ] [ check-target-builds ../config//has_is_constant_evaluated : : <build>no ] ]
820 [ run constexpr_test_cpp_int_3.cpp : : : [ requires cxx14_constexpr cxx17_if_constexpr ] [ check-target-builds ../config//has_is_constant_evaluated : : <build>no ] ]
821 [ run constexpr_test_cpp_int_4.cpp : : : [ requires cxx14_constexpr cxx17_if_constexpr ] [ check-target-builds ../config//has_is_constant_evaluated : : <build>no ] ]
822 [ run constexpr_test_cpp_int_5.cpp : : : [ requires cxx14_constexpr cxx17_if_constexpr ] [ check-target-builds ../config//has_is_constant_evaluated : : <build>no ] ]
823 [ run constexpr_test_cpp_int_6.cpp : : : [ requires cxx14_constexpr cxx17_if_constexpr ] [ check-target-builds ../config//has_is_constant_evaluated : <toolset>msvc:<cxxflags>-constexpr:steps10000000 <toolset>clang:<cxxflags>-fconstexpr-steps=268435456 : <build>no ] [ check-target-builds ../config//has_constexpr_limits : <cxxflags>-fconstexpr-ops-limit=268435456 ] ]
824 [ run constexpr_test_cpp_int_7.cpp : : : [ requires cxx14_constexpr cxx17_if_constexpr ] [ check-target-builds ../config//has_is_constant_evaluated : <toolset>msvc:<cxxflags>-constexpr:steps10000000 <toolset>clang:<cxxflags>-fconstexpr-steps=268435456 : <build>no ] ]
826 [ compile test_nothrow_cpp_int.cpp ]
827 [ compile test_nothrow_cpp_rational.cpp ]
828 [ compile test_nothrow_cpp_bin_float.cpp ]
829 [ compile test_nothrow_cpp_dec_float.cpp ]
830 [ compile test_nothrow_float128.cpp : [ check-target-builds ../config//has_float128 : : <build>no ] ]
831 [ compile test_nothrow_gmp.cpp : [ check-target-builds ../config//has_gmp : : <build>no ] ]
832 [ compile test_nothrow_mpfr.cpp : [ check-target-builds ../config//has_mpfr : : <build>no ] ]
834 [ run test_miller_rabin.cpp no_eh_support gmp
838 [ check-target-builds ../config//has_gmp : : <build>no ]
839 release # otherwise [ runtime is too slow!!
842 [ run test_rational_io.cpp $(TOMMATH) no_eh_support
847 [ check-target-builds ../config//has_tommath : : <build>no ]
848 release # Otherwise [ runtime is slow
849 : test_rational_io_tommath ]
851 [ run test_rational_io.cpp gmp no_eh_support
856 [ check-target-builds ../config//has_gmp : : <build>no ]
857 release # Otherwise [ runtime is slow
858 : test_rational_io_mpz ]
860 [ run test_rational_io.cpp no_eh_support
865 release # Otherwise [ runtime is slow
866 : test_rational_io_cpp_int ]
868 [ run test_generic_conv.cpp no_eh_support
872 [ check-target-builds ../config//has_gmp : <define>TEST_GMP <source>gmp : ]
873 [ check-target-builds ../config//has_tommath : <define>TEST_TOMMATH <source>$(TOMMATH) : ]
874 [ check-target-builds ../config//has_mpfr : <define>TEST_MPFR <source>mpfr : ]
875 release # Otherwise [ runtime is slow
878 [ run test_rat_float_interconv.cpp no_eh_support /boost/system//boost_system /boost/chrono//boost_chrono
884 : test_rat_float_interconv_1 ]
886 [ run test_rat_float_interconv.cpp no_eh_support /boost/system//boost_system /boost/chrono//boost_chrono
892 : test_rat_float_interconv_2 ]
894 [ run test_rat_float_interconv.cpp no_eh_support /boost/system//boost_system /boost/chrono//boost_chrono
900 : test_rat_float_interconv_3 ]
902 [ run test_rat_float_interconv.cpp no_eh_support /boost/system//boost_system /boost/chrono//boost_chrono
908 : test_rat_float_interconv_4 ]
910 [ run test_rat_float_interconv.cpp no_eh_support /boost/system//boost_system /boost/chrono//boost_chrono mpfr gmp
915 [ check-target-builds ../config//has_mpfr : : <build>no ]
917 : test_rat_float_interconv_5 ]
919 [ run test_rat_float_interconv.cpp no_eh_support /boost/system//boost_system /boost/chrono//boost_chrono mpfr gmp
924 [ check-target-builds ../config//has_mpfr : : <build>no ]
926 : test_rat_float_interconv_6 ]
928 [ run test_rat_float_interconv.cpp no_eh_support /boost/system//boost_system /boost/chrono//boost_chrono mpfr gmp
933 [ check-target-builds ../config//has_mpfr : : <build>no ]
935 : test_rat_float_interconv_7 ]
937 [ run test_rat_float_interconv.cpp no_eh_support /boost/system//boost_system /boost/chrono//boost_chrono mpfr gmp
942 [ check-target-builds ../config//has_mpfr : : <build>no ]
944 : test_rat_float_interconv_8 ]
946 [ run test_cpp_int_conv.cpp no_eh_support ]
947 [ run test_cpp_int_import_export.cpp no_eh_support ]
948 [ run test_native_integer.cpp no_eh_support ]
950 [ run test_mixed_cpp_int.cpp no_eh_support ]
951 [ run test_mixed_float.cpp no_eh_support
955 [ check-target-builds ../config//has_gmp : <define>TEST_GMP <library>gmp : ]
956 [ check-target-builds ../config//has_mpfr : <define>TEST_MPFR <library>mpfr <library>gmp : ] ]
957 [ compile include_test/mpfr_include_test.cpp
959 [ check-target-builds ../config//has_mpfr : : <build>no ] ]
960 [ compile include_test/gmp_include_test.cpp
962 [ check-target-builds ../config//has_gmp : : <build>no ] ]
963 [ compile include_test/tommath_include_test.cpp
965 [ check-target-builds ../config//has_tommath : : <build>no ] ]
966 [ compile include_test/cpp_int_include_test.cpp ]
967 [ compile include_test/cpp_dec_float_include_test.cpp ]
968 [ compile include_test/cpp_bin_float_include_test.cpp ]
970 [ run ublas_interop/test1.cpp ublas_interop/test11.cpp ublas_interop/test12.cpp ublas_interop/test13.cpp no_eh_support ]
971 [ run ublas_interop/test2.cpp ublas_interop/test21.cpp ublas_interop/test22.cpp ublas_interop/test23.cpp no_eh_support ]
972 #[ run ublas_interop/test3.cpp ublas_interop/test31.cpp ublas_interop/test32.cpp ublas_interop/test33.cpp ]
973 [ run ublas_interop/test4.cpp ublas_interop/test42.cpp ublas_interop/test43.cpp no_eh_support ]
974 [ run ublas_interop/test5.cpp ublas_interop/test52.cpp ublas_interop/test53.cpp no_eh_support ]
975 [ run ublas_interop/test6.cpp ublas_interop/test62.cpp ublas_interop/test63.cpp no_eh_support ]
976 #[ run ublas_interop/test7.cpp ublas_interop/test71.cpp ublas_interop/test72.cpp ublas_interop/test73.cpp ]
978 [ run ublas_interop/test1.cpp ublas_interop/test11.cpp ublas_interop/test12.cpp ublas_interop/test13.cpp no_eh_support : : : <define>TEST_ET=1 : ublas1_et ]
979 [ run ublas_interop/test2.cpp ublas_interop/test21.cpp ublas_interop/test22.cpp ublas_interop/test23.cpp no_eh_support : : : <define>TEST_ET=1 : ublas2_et ]
980 #[ run ublas_interop/test3.cpp ublas_interop/test31.cpp ublas_interop/test32.cpp ublas_interop/test33.cpp : : : <define>TEST_ET=1 : ublas3_et ]
981 [ run ublas_interop/test4.cpp ublas_interop/test42.cpp ublas_interop/test43.cpp no_eh_support : : : <define>TEST_ET=1 : ublas3_et ]
982 [ run ublas_interop/test5.cpp ublas_interop/test52.cpp ublas_interop/test53.cpp no_eh_support : : : <define>TEST_ET=1 : ublas4_et ]
983 [ run ublas_interop/test6.cpp ublas_interop/test62.cpp ublas_interop/test63.cpp no_eh_support : : : <define>TEST_ET=1 : ublas5_et ]
984 #[ run ublas_interop/test7.cpp ublas_interop/test71.cpp ublas_interop/test72.cpp ublas_interop/test73.cpp : : : <define>TEST_ET=1 : ublas6_et ]
987 # Serialization tests, run in release mode so we cycle through more values:
989 [ run test_adapt_serial.cpp ../../serialization/build//boost_serialization : : : release <toolset>gcc-mingw:<link>static ]
990 [ run test_cpp_dec_float_serial.cpp ../../serialization/build//boost_serialization : : : release <define>TEST1 <toolset>gcc-mingw:<link>static : test_cpp_dec_float_serial_1 ]
991 [ run test_cpp_dec_float_serial.cpp ../../serialization/build//boost_serialization : : : release <define>TEST2 <toolset>gcc-mingw:<link>static : test_cpp_dec_float_serial_2 ]
992 [ run test_float128_serial.cpp ../../serialization/build//boost_serialization quadmath : : : release <toolset>gcc-mingw:<link>static [ check-target-builds ../config//has_float128 : : <build>no ] ]
993 [ run test_cpp_bin_float_serial.cpp ../../serialization/build//boost_serialization : : : release <toolset>gcc-mingw:<link>static <define>TEST1 : test_bin_dec_float_serial_1 ]
994 [ run test_cpp_bin_float_serial.cpp ../../serialization/build//boost_serialization : : : release <define>TEST2 <toolset>gcc-mingw:<link>static : test_bin_dec_float_serial_2 ]
997 # Mixed mode comparison tests, see: https://svn.boost.org/trac/boost/ticket/11328
999 [ run test_checked_mixed_cpp_int.cpp no_eh_support ]
1000 [ run test_mixed_cpp_bin_float.cpp no_eh_support ]
1001 [ run test_mixed_cpp_dec_float.cpp no_eh_support ]
1002 [ run test_mixed_mpf_float.cpp gmp no_eh_support : : : [ check-target-builds ../config//has_gmp : : <build>no ] ]
1003 [ run test_mixed_mpfr_float.cpp mpfr gmp no_eh_support : : : [ check-target-builds ../config//has_mpfr : : <build>no ] ]
1005 # Check for narrowing conversions:
1007 [ run test_float_conversions.cpp no_eh_support ]
1009 # specific bug cases:
1011 [ compile bug11922.cpp ]
1012 [ run bug12039.cpp no_eh_support ]
1013 [ compile git_issue_30.cpp ]
1014 [ run git_issue_167.cpp ]
1015 [ run git_issue_175.cpp ]
1016 [ compile git_issue_98.cpp :
1017 [ check-target-builds ../config//has_float128 : <define>TEST_FLOAT128 <source>quadmath : ]
1018 [ check-target-builds ../config//has_gmp : <define>TEST_GMP <source>gmp : ]
1019 [ check-target-builds ../config//has_mpfr : <define>TEST_MPFR <source>gmp <source>mpfr : ]
1020 [ check-target-builds ../config//has_mpc : <define>TEST_MPC <source>gmp <source>mpfr <source>mpc : ] ]
1021 [ run issue_13301.cpp ]
1022 [ run issue_13148.cpp ]
1023 [ run test_hash.cpp : : :
1024 [ check-target-builds ../config//has_float128 : <define>TEST_FLOAT128 <source>quadmath : ]
1025 [ check-target-builds ../config//has_gmp : <define>TEST_GMP <source>gmp : ]
1026 [ check-target-builds ../config//has_mpfr : <define>TEST_MPFR <source>gmp <source>mpfr : ]
1027 [ check-target-builds ../config//has_mpfi : <define>TEST_MPFI <source>gmp <source>mpfr <source>mpfi : ]
1028 [ check-target-builds ../config//has_tommath : <define>TEST_TOMMATH <source>tommath : ]
1030 [ run test_optional_compat.cpp ]
1032 # Eigen interoperability:
1034 [ run test_eigen_interop_cpp_int.cpp : : : release [ check-target-builds ../config//has_eigen : : <build>no ] ]
1035 [ run test_eigen_interop_cpp_dec_float.cpp : : : release [ check-target-builds ../config//has_eigen : : <build>no ] ]
1036 [ run test_eigen_interop_cpp_dec_float_2.cpp : : : release [ check-target-builds ../config//has_eigen : : <build>no ] ]
1037 [ run test_eigen_interop_cpp_dec_float_3.cpp : : : release [ check-target-builds ../config//has_eigen : : <build>no ] ]
1038 [ run test_eigen_interop_cpp_bin_float_1.cpp : : : release [ check-target-builds ../config//has_eigen : : <build>no ] ]
1039 [ run test_eigen_interop_cpp_bin_float_2.cpp : : : release [ check-target-builds ../config//has_eigen : : <build>no ] ]
1040 [ run test_eigen_interop_cpp_bin_float_3.cpp : : : release [ check-target-builds ../config//has_eigen : : <build>no ] ]
1041 [ run test_eigen_interop_mpfr_1.cpp mpfr gmp : : : release [ check-target-builds ../config//has_eigen : : <build>no ] [ check-target-builds ../config//has_mpfr : : <build>no ] ]
1042 [ run test_eigen_interop_mpfr_2.cpp mpfr gmp : : : release [ check-target-builds ../config//has_eigen : : <build>no ] [ check-target-builds ../config//has_mpfr : : <build>no ] ]
1043 [ run test_eigen_interop_mpfr_3.cpp mpfr gmp : : : release [ check-target-builds ../config//has_eigen : : <build>no ] [ check-target-builds ../config//has_mpfr : : <build>no ] ]
1044 [ run test_eigen_interop_gmp.cpp gmp : : : release [ check-target-builds ../config//has_eigen : : <build>no ] [ check-target-builds ../config//has_gmp : : <build>no ] ]
1045 [ run test_eigen_interop_mpc.cpp mpc mpfr gmp : : : release [ check-target-builds ../config//has_eigen : : <build>no ] [ check-target-builds ../config//has_mpc : : <build>no ] ]
1050 # This take too long to run as a regular part of the tests:
1052 run test_cpp_bin_float_round.cpp mpfr gmp ;
1053 explicit test_cpp_bin_float_round ;
1055 rule get_specfun_tests
1058 for local source in [ glob math/*.cpp ]
1060 result += [ run $(source) mpfr gmp
1061 /boost/test//boost_unit_test_framework/<link>static
1062 /boost/regex//boost_regex/<link>static
1063 math/instances//test_instances_mpfr/<link>static
1067 [ check-target-builds ../config//has_mpfr : : <build>no ]
1068 <define>TEST_MPFR_50
1070 <define>BOOST_ALL_NO_LIB
1071 <define>BOOST_OPTIONAL_USE_OLD_DEFINITION_OF_NONE
1072 <toolset>msvc:<cxxflags>-bigobj
1073 <include>../../math/include_private
1075 : $(source:B)_mpfr ] ;
1076 result += [ run $(source) gmp
1077 /boost/test//boost_unit_test_framework/<link>static
1078 /boost/regex//boost_regex/<link>static
1079 math/instances//test_instances_mpf/<link>static
1083 [ check-target-builds ../config//has_gmp : : <build>no ]
1086 <define>BOOST_ALL_NO_LIB
1087 <define>BOOST_OPTIONAL_USE_OLD_DEFINITION_OF_NONE
1088 <toolset>msvc:<cxxflags>-bigobj
1089 <include>../../math/include_private
1091 : $(source:B)_mpf ] ;
1092 result += [ run $(source) /boost/test//boost_unit_test_framework/<link>static
1093 /boost/regex//boost_regex/<link>static
1094 math/instances//test_instances_cpp_dec_float/<link>static
1098 <define>TEST_CPP_DEC_FLOAT
1099 <define>BOOST_ALL_NO_LIB
1100 <define>BOOST_OPTIONAL_USE_OLD_DEFINITION_OF_NONE
1102 <toolset>msvc:<cxxflags>-bigobj
1103 <include>../../math/include_private
1105 : $(source:B)_cpp_dec_float ] ;
1106 result += [ run $(source) /boost/test//boost_unit_test_framework/<link>static
1107 /boost/regex//boost_regex/<link>static
1108 math/instances//test_instances_cpp_bin_float/<link>static
1112 <define>TEST_CPP_BIN_FLOAT
1113 <define>BOOST_ALL_NO_LIB
1114 <define>BOOST_OPTIONAL_USE_OLD_DEFINITION_OF_NONE
1116 <toolset>msvc:<cxxflags>-bigobj
1117 <include>../../math/include_private
1119 : $(source:B)_cpp_bin_float ] ;
1120 result += [ run $(source) quadmath
1121 /boost/test//boost_unit_test_framework/<link>static
1122 /boost/regex//boost_regex/<link>static
1123 math/instances//test_instances_float128/<link>static
1127 [ check-target-builds ../config//has_float128 : : <build>no ]
1129 <define>TEST_FLOAT128
1130 <define>BOOST_ALL_NO_LIB
1131 <define>BOOST_OPTIONAL_USE_OLD_DEFINITION_OF_NONE
1132 <toolset>msvc:<cxxflags>-bigobj
1133 <include>../../math/include_private
1135 : $(source:B)_float128 ] ;
1136 result += [ run $(source)
1137 /boost/test//boost_unit_test_framework/<link>static
1138 /boost/regex//boost_regex/<link>static
1139 math/instances//test_instances_intel_quad/<link>static
1143 [ check-target-builds ../config//has_intel_quad : <cxxflags>-Qoption,cpp,--extended_float_type : <build>no ] [ check-target-builds ../config//has_float128 : <source>quadmath ]
1145 <define>TEST_FLOAT128
1146 <define>BOOST_ALL_NO_LIB
1147 <define>BOOST_OPTIONAL_USE_OLD_DEFINITION_OF_NONE
1148 <toolset>msvc:<cxxflags>-bigobj
1149 <include>../../math/include_private
1151 : $(source:B)_intel_quad ] ;
1154 # High precision tests are rather different, as they test only one
1155 # multiprecision type and are more a test of Boost.Math:
1157 for local source in [ glob math/high_prec/*.cpp ]
1159 result += [ run $(source)
1160 /boost/test//boost_unit_test_framework/<link>static
1161 /boost/regex//boost_regex/<link>static
1166 <define>BOOST_ALL_NO_LIB
1167 <define>BOOST_OPTIONAL_USE_OLD_DEFINITION_OF_NONE
1168 <toolset>msvc:<cxxflags>-bigobj
1169 [ check-target-builds ../config//has_mpfr : <define>TEST_MPFR <source>gmp <source>mpfr : ]
1170 <include>../../math/include_private
1176 test-suite specfun : [ get_specfun_tests ] ;
1179 rule get_compile_fail_tests
1182 local compile_fail_tests ;
1184 for local source in [ glob compile_fail/*.cpp ]
1186 compile_fail_tests += $(source:B) ;
1187 compile-fail $(source)
1189 [ check-target-builds ../config//has_gmp : <define>TEST_GMP <debug-symbols>off : ]
1190 [ check-target-builds ../config//has_mpfr : <define>TEST_MPFR <debug-symbols>off : ]
1193 return $(compile_fail_tests) ;
1196 test-suite compile_fail : [ get_compile_fail_tests ] ;
1198 rule get_concept_checks
1201 for local source in [ glob concepts/*.cpp ]
1204 result += [ compile $(source) mpfr
1206 <define>TEST_MPFR_50
1207 [ check-target-builds ../config//has_mpfr : : <build>no ]
1210 : $(source:B)_mpfr_50 ] ;
1212 result += [ compile $(source) mpfr
1215 [ check-target-builds ../config//has_mpfr : : <build>no ]
1218 : $(source:B)_mpfr_6 ] ;
1220 result += [ compile $(source) mpfr
1222 <define>TEST_MPFR_15
1223 [ check-target-builds ../config//has_mpfr : : <build>no ]
1226 : $(source:B)_mpfr_15 ] ;
1228 result += [ compile $(source) mpfr
1230 <define>TEST_MPFR_17
1231 [ check-target-builds ../config//has_mpfr : : <build>no ]
1234 : $(source:B)_mpfr_17 ] ;
1236 result += [ compile $(source) mpfr
1238 <define>TEST_MPFR_30
1239 [ check-target-builds ../config//has_mpfr : : <build>no ]
1242 : $(source:B)_mpfr_30 ] ;
1244 result += [ compile $(source) gmp
1247 [ check-target-builds ../config//has_gmp : : <build>no ]
1250 : $(source:B)_mpf50 ] ;
1252 result += [ compile $(source)
1254 <define>TEST_CPP_DEC_FLOAT
1257 : $(source:B)_cpp_dec_float ] ;
1259 result += [ compile $(source)
1261 <define>TEST_CPP_BIN_FLOAT
1264 : $(source:B)_cpp_bin_float ] ;
1266 result += [ compile $(source)
1268 <define>TEST_CPP_DEC_FLOAT_NO_ET
1271 : $(source:B)_cpp_dec_float_no_et ] ;
1273 result += [ compile $(source)
1275 <define>TEST_BACKEND
1278 : $(source:B)_backend_concept ] ;
1280 result += [ compile $(source)
1282 <define>TEST_LOGGED_ADAPTER
1285 : $(source:B)_logged_adaptor ] ;
1290 test-suite concepts : [ get_concept_checks ] ;
1292 test-suite examples : ../example//examples ;
1293 test-suite performance : ../performance//performance ;