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. 5 6import testing ; 7import modules ; 8import path ; 9import ../../config/checks/config : requires ; 10 11local ntl-path = [ modules.peek : NTL_PATH ] ; 12local gmp_path = [ modules.peek : GMP_PATH ] ; 13local mpfr_path = [ modules.peek : MPFR_PATH ] ; 14local mpfi_path = [ modules.peek : MPFI_PATH ] ; 15local tommath_path = [ modules.peek : TOMMATH_PATH ] ; 16 17 18####################################################################################### 19# 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: 22# 23# arithmetic_tests 24# functions_and_limits 25# conversions 26# cpp_int_tests 27# misc 28# specfun 29# compile_fail 30# concepts 31# examples 32# 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. 35# 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. 39# 40####################################################################################################### 41 42path-constant here : . ; 43 44project : requirements 45 <include>$(gmp_path) 46 <include>$(gmp_path)/mpfr 47 <include>$(gmp_path)/gmpfrxx 48 <include>$(mpfr_path) 49 <include>$(mpfi_path) 50 <include>$(mpfi_path)/src 51 <include>$(tommath_path) 52 <include>../include 53 <include>../../.. 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 65 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. 73 74 # Speed up compiles: 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 84 ; 85 86local enable-specfun = [ MATCH (--enable-specfun) : [ modules.peek : ARGV ] ] ; 87local disable-concepts = [ MATCH (--disable-concepts) : [ modules.peek : ARGV ] ] ; 88 89lib gmp : : <search>$(gmp_path) ; 90lib mpfr : : <search>$(gmp_path) <search>$(mpfr_path) <search>$(mpfr_path)/build.vc10/lib/Win32/Debug ; 91lib mpfi : : <search>$(gmp_path) <search>$(mpfr_path) <search>$(mpfr_path)/build.vc10/lib/Win32/Debug <search>$(mpfi_path) <search>$(mpfi_path)/src ; 92lib quadmath ; 93lib mpc ; 94 95if $(tommath_path) 96{ 97 lib tommath : [ GLOB $(tommath_path) : *.c ] : <visibility>global ; 98 TOMMATH = tommath ; 99} 100else 101{ 102 lib tommath : : <search>$(tommath_path) ; 103 TOMMATH = tommath ; 104} 105 106lib no_eh_support : no_eh_test_support.cpp ; 107 108test-suite arithmetic_tests : 109 110 [ run test_arithmetic_backend_concept.cpp no_eh_support ] 111 [ compile test_arithmetic_skeleton.cpp ] 112 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 ] 117 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 ] 122 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 ] ] 129 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 ] ] 133 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 ] ] 137 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 ] 158 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 ] 162 163 [ run test_cpp_dec_float_round.cpp no_eh_support ] 164 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 ] 167 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 ] 171 172 [ run test_arithmetic_mpfi_50.cpp mpfi mpfr gmp no_eh_support : : : [ check-target-builds ../config//has_mpfi : : <build>no ] ] 173 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 ] 176 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 ] ] 185 186; 187 188rule get_function_tests 189{ 190 local result ; 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 192 { 193 result += [ run $(source) gmp no_eh_support 194 : # command line 195 : # input files 196 : # requirements 197 [ check-target-builds ../config//has_gmp : : <build>no ] 198 <define>TEST_MPF_50 199 : $(source:B)_mpf50 ] ; 200 result += [ run $(source) mpfr gmp no_eh_support 201 : # command line 202 : # input files 203 : # requirements 204 [ check-target-builds ../config//has_mpfr : : <build>no ] 205 <define>TEST_MPFR_50 206 : $(source:B)_mpfr50 ] ; 207 result += [ run $(source) mpfi mpfr gmp no_eh_support 208 : # command line 209 : # input files 210 : # requirements 211 [ check-target-builds ../config//has_mpfi : : <build>no ] 212 <define>TEST_MPFI_50 213 : $(source:B)_mpfi50 ] ; 214 result += [ run $(source) no_eh_support 215 : # command line 216 : # input files 217 : # requirements 218 <define>TEST_CPP_DEC_FLOAT 219 : $(source:B)_cpp_dec_float ] ; 220 result += [ run $(source) no_eh_support 221 : # command line 222 : # input files 223 : # requirements 224 <define>TEST_CPP_BIN_FLOAT 225 : $(source:B)_cpp_bin_float ] ; 226 result += [ run $(source) quadmath no_eh_support 227 : # command line 228 : # input files 229 : # requirements 230 [ check-target-builds ../config//has_float128 : : <build>no ] 231 <define>TEST_FLOAT128 232 : $(source:B)_float128 ] ; 233 result += [ run $(source) no_eh_support 234 : # command line 235 : # input files 236 : # requirements 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 ] ; 240 } 241 return $(result) ; 242} 243 244test-suite functions_and_limits : 245 246 [ run test_numeric_limits.cpp no_eh_support 247 : # command line 248 : # input files 249 : # requirements 250 <define>TEST_BACKEND 251 : test_numeric_limits_backend_concept ] 252 253 [ run test_numeric_limits.cpp gmp no_eh_support 254 : # command line 255 : # input files 256 : # requirements 257 <define>TEST_MPF_50 258 [ check-target-builds ../config//has_gmp : : <build>no ] 259 : test_numeric_limits_mpf50 ] 260 261 [ run test_numeric_limits.cpp gmp no_eh_support 262 : # command line 263 : # input files 264 : # requirements 265 <define>TEST_MPF 266 [ check-target-builds ../config//has_gmp : : <build>no ] 267 : test_numeric_limits_mpf ] 268 269 [ run test_numeric_limits.cpp gmp no_eh_support 270 : # command line 271 : # input files 272 : # requirements 273 <define>TEST_MPZ 274 [ check-target-builds ../config//has_gmp : : <build>no ] 275 : test_numeric_limits_mpz ] 276 277 [ run test_numeric_limits.cpp gmp no_eh_support 278 : # command line 279 : # input files 280 : # requirements 281 <define>TEST_MPQ 282 [ check-target-builds ../config//has_gmp : : <build>no ] 283 : test_numeric_limits_mpq ] 284 285 [ run test_numeric_limits.cpp mpfr gmp no_eh_support 286 : # command line 287 : # input files 288 : # requirements 289 <define>TEST_MPFR 290 [ check-target-builds ../config//has_mpfr : : <build>no ] 291 : test_numeric_limits_mpfr ] 292 293 [ run test_numeric_limits.cpp mpfr gmp no_eh_support 294 : # command line 295 : # input files 296 : # requirements 297 <define>TEST_MPFR_50 298 [ check-target-builds ../config//has_mpfr : : <build>no ] 299 : test_numeric_limits_mpfr_50 ] 300 301 [ run test_numeric_limits.cpp no_eh_support 302 : # command line 303 : # input files 304 : # requirements 305 <define>TEST_CPP_DEC_FLOAT 306 : test_numeric_limits_cpp_dec_float ] 307 308 [ run test_numeric_limits.cpp no_eh_support 309 : # command line 310 : # input files 311 : # requirements 312 <define>TEST_CPP_BIN_FLOAT 313 : test_numeric_limits_cpp_bin_float ] 314 315 [ run test_numeric_limits.cpp $(TOMMATH) no_eh_support 316 : # command line 317 : # input files 318 : # requirements 319 <define>TEST_TOMMATH 320 [ check-target-builds ../config//has_tommath : : <build>no ] 321 : test_numeric_limits_tommath ] 322 323 [ run test_numeric_limits.cpp no_eh_support 324 : # command line 325 : # input files 326 : # requirements 327 <define>TEST_CPP_INT 328 : test_numeric_limits_cpp_int ] 329 330 [ run test_numeric_limits.cpp mpfi mpfr gmp no_eh_support 331 : # command line 332 : # input files 333 : # requirements 334 <define>TEST_MPFI_50 335 [ check-target-builds ../config//has_mpfi : : <build>no ] 336 : test_numeric_limits_mpfi_50 ] 337 338 [ run test_numeric_limits.cpp quadmath no_eh_support 339 : # command line 340 : # input files 341 : # requirements 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 346 : # command line 347 : # input files 348 : # requirements 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 ] 352 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 ] 358 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 ] 361 362 [ run test_move.cpp mpfr gmp no_eh_support 363 : # command line 364 : # input files 365 : # requirements 366 <define>TEST_MPFR 367 [ check-target-builds ../config//has_mpfr : : <build>no ] 368 : test_move_mpfr ] 369 370 [ run test_move.cpp mpc mpfr gmp no_eh_support 371 : # command line 372 : # input files 373 : # requirements 374 <define>TEST_MPC 375 [ check-target-builds ../config//has_mpc : : <build>no ] 376 : test_move_mpc ] 377 378 [ run test_move.cpp gmp no_eh_support 379 : # command line 380 : # input files 381 : # requirements 382 <define>TEST_GMP 383 [ check-target-builds ../config//has_gmp : : <build>no ] 384 : test_move_gmp ] 385 386 [ run test_move.cpp $(TOMMATH) no_eh_support 387 : # command line 388 : # input files 389 : # requirements 390 <define>TEST_TOMMATH 391 [ check-target-builds ../config//has_tommath : : <build>no ] 392 : test_move_tommath ] 393 394 [ run test_move.cpp no_eh_support 395 : # command line 396 : # input files 397 : # requirements 398 <define>TEST_CPP_INT 399 : test_move_cpp_int ] 400 401 [ get_function_tests ] 402; 403 404test-suite conversions : 405 406 [ run test_gmp_conversions.cpp gmp no_eh_support 407 : # command line 408 : # input files 409 : # requirements 410 [ check-target-builds ../config//has_gmp : : <build>no ] ] 411 412 [ run test_mpfr_conversions.cpp gmp mpfr no_eh_support 413 : # command line 414 : # input files 415 : # requirements 416 [ check-target-builds ../config//has_mpfr : : <build>no ] ] 417 418 [ run test_mpc_conversions.cpp gmp mpfr mpc no_eh_support 419 : # command line 420 : # input files 421 : # requirements 422 [ check-target-builds ../config//has_mpc : : <build>no ] ] 423 424 [ run test_constants.cpp gmp no_eh_support 425 : # command line 426 : # input files 427 : # requirements 428 <define>TEST_MPF_50 429 [ check-target-builds ../config//has_gmp : : <build>no ] 430 : test_constants_mpf50 ] 431 432 [ run test_constants.cpp mpfr gmp no_eh_support 433 : # command line 434 : # input files 435 : # requirements 436 <define>TEST_MPFR_50 437 [ check-target-builds ../config//has_mpfr : : <build>no ] 438 : test_constants_mpfr_50 ] 439 440 [ run test_constants.cpp no_eh_support 441 : # command line 442 : # input files 443 : # requirements 444 <define>TEST_CPP_DEC_FLOAT 445 : test_constants_cpp_dec_float ] 446 447 448 [ run test_test.cpp ] 449 [ run test_cpp_int_lit.cpp no_eh_support ] 450 451 # 452 # Interconversion tests: 453 # 454 [ run test_convert_from_cpp_int.cpp 455 : # command line 456 : # input files 457 : # requirements 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 : ] 463 ] 464 [ run test_convert_from_mpz_int.cpp 465 : # command line 466 : # input files 467 : # requirements 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 : ] 473 ] 474 [ run test_convert_from_tom_int.cpp 475 : # command line 476 : # input files 477 : # requirements 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 : ] 483 ] 484 [ run test_convert_from_cpp_rational.cpp 485 : # command line 486 : # input files 487 : # requirements 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 : ] 493 ] 494 [ run test_convert_from_gmp_rational.cpp 495 : # command line 496 : # input files 497 : # requirements 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 : ] 503 ] 504 [ run test_convert_from_tom_rational.cpp 505 : # command line 506 : # input files 507 : # requirements 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 : ] 513 ] 514 [ run test_convert_from_cpp_bin_float.cpp 515 : # command line 516 : # input files 517 : # requirements 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 : ] 523 ] 524 [ run test_convert_from_cpp_dec_float.cpp 525 : # command line 526 : # input files 527 : # requirements 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 : ] 533 ] 534 [ run test_convert_from_mpf_float.cpp 535 : # command line 536 : # input files 537 : # requirements 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 : ] 543 ] 544 [ run test_convert_from_mpfr_float.cpp 545 : # command line 546 : # input files 547 : # requirements 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 : ] 553 ] 554 [ run test_convert_from_mpfi_float.cpp 555 : # command line 556 : # input files 557 : # requirements 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 : ] 563 ] 564 [ run test_convert_from_float128.cpp 565 : # command line 566 : # input files 567 : # requirements 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 : ] 573 ] 574 575 [ run test_cpp_bin_float_conv.cpp ] 576 577 [ run test_cpp_bin_float_io.cpp no_eh_support /boost/system//boost_system /boost/chrono//boost_chrono 578 : # command line 579 : # input files 580 : # requirements 581 <define>TEST_CPP_BIN_FLOAT 582 <define>TEST1 583 release # Otherwise [ runtime is slow 584 : test_cpp_bin_float_io_1 585 ] 586 587 [ run test_cpp_bin_float_io.cpp no_eh_support /boost/system//boost_system /boost/chrono//boost_chrono 588 : # command line 589 : # input files 590 : # requirements 591 <define>TEST_CPP_BIN_FLOAT 592 <define>TEST2 593 release # Otherwise [ runtime is slow 594 : test_cpp_bin_float_io_2 595 ] 596 597 [ run test_cpp_bin_float.cpp no_eh_support mpfr gmp /boost/system//boost_system /boost/chrono//boost_chrono 598 : # command line 599 : # input files 600 : # requirements 601 <define>TEST_MPFR 602 [ check-target-builds ../config//has_mpfr : : <build>no ] 603 release # Otherwise [ runtime is slow 604 ] 605 606 [ run test_float_io.cpp no_eh_support 607 : # command line 608 : # input files 609 : # requirements 610 <define>TEST_CPP_DEC_FLOAT 611 release # Otherwise [ runtime is slow 612 : test_float_io_cpp_dec_float ] 613 614 [ run test_float_io.cpp gmp no_eh_support 615 : # command line 616 : # input files 617 : # requirements 618 <define>TEST_MPF_50 619 release # Otherwise [ runtime is slow 620 [ check-target-builds ../config//has_gmp : : <build>no ] 621 : test_float_io_mpf ] 622 623 [ run test_float_io.cpp mpfr gmp no_eh_support 624 : # command line 625 : # input files 626 : # requirements 627 <define>TEST_MPFR_50 628 release # Otherwise [ runtime is slow 629 [ check-target-builds ../config//has_mpfr : : <build>no ] 630 : test_float_io_mpfr ] 631 632 [ run test_float_io.cpp mpfi mpfr gmp no_eh_support 633 : # command line 634 : # input files 635 : # requirements 636 <define>TEST_MPFI_50 637 release # Otherwise [ runtime is slow 638 [ check-target-builds ../config//has_mpfi : : <build>no ] 639 : test_float_io_mpfi ] 640 641 [ run test_float_io.cpp quadmath no_eh_support 642 : # command line 643 : # input files 644 : # requirements 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 650 : # command line 651 : # input files 652 : # requirements 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 ] 657 658 [ run test_int_io.cpp no_eh_support $(TOMMATH) 659 : # command line 660 : # input files 661 : # requirements 662 <define>TEST_TOMMATH 663 release # Otherwise [ runtime is slow 664 [ check-target-builds ../config//has_tommath : : <build>no ] 665 : test_int_io_tommath ] 666 667 [ run test_int_io.cpp no_eh_support gmp 668 : # command line 669 : # input files 670 : # requirements 671 <define>TEST_MPZ 672 release # Otherwise [ runtime is slow 673 [ check-target-builds ../config//has_gmp : : <build>no ] 674 : test_int_io_mpz ] 675 676; 677 678 679test-suite cpp_int_tests : 680 681 [ run test_int_io.cpp no_eh_support 682 : # command line 683 : # input files 684 : # requirements 685 <define>TEST_CPP_INT 686 release # Otherwise [ runtime is slow 687 : test_int_io_cpp_int ] 688 689 [ run test_cpp_int_left_shift.cpp gmp no_eh_support 690 : # command line 691 : # input files 692 : # requirements 693 [ check-target-builds ../config//has_gmp : : <build>no ] 694 release # otherwise [ runtime is too slow!! 695 ] 696 697 [ run test_cpp_int.cpp gmp no_eh_support 698 : # command line 699 : # input files 700 : # requirements 701 [ check-target-builds ../config//has_gmp : : <build>no ] 702 release # otherwise [ runtime is too slow!! 703 <define>TEST1 704 : test_cpp_int_1 705 ] 706 707 [ run test_cpp_int.cpp gmp no_eh_support 708 : # command line 709 : # input files 710 : # requirements 711 [ check-target-builds ../config//has_gmp : : <build>no ] 712 release # otherwise [ runtime is too slow!! 713 <define>TEST2 714 : test_cpp_int_2 715 ] 716 717 [ run test_cpp_int.cpp gmp no_eh_support 718 : # command line 719 : # input files 720 : # requirements 721 [ check-target-builds ../config//has_gmp : : <build>no ] 722 release # otherwise [ runtime is too slow!! 723 <define>TEST3 724 : test_cpp_int_3 725 ] 726 727 [ run test_cpp_int.cpp gmp no_eh_support 728 : # command line 729 : # input files 730 : # requirements 731 [ check-target-builds ../config//has_gmp : : <build>no ] 732 release # otherwise [ runtime is too slow!! 733 <define>TEST4 734 : test_cpp_int_4 735 ] 736 737 [ run test_cpp_int.cpp gmp no_eh_support 738 : # command line 739 : # input files 740 : # requirements 741 [ check-target-builds ../config//has_gmp : : <build>no ] 742 release # otherwise [ runtime is too slow!! 743 <define>TEST5 744 : test_cpp_int_5 745 ] 746 747 [ run test_cpp_int.cpp gmp no_eh_support 748 : # command line 749 : # input files 750 : # requirements 751 [ check-target-builds ../config//has_gmp : : <build>no ] 752 release # otherwise [ runtime is too slow!! 753 <define>TEST6 754 : test_cpp_int_6 755 ] 756 757 [ run test_cpp_int_karatsuba.cpp gmp no_eh_support 758 : # command line 759 : # input files 760 : # requirements 761 [ check-target-builds ../config//has_gmp : : <build>no ] 762 release # otherwise [ runtime is too slow!! 763 <define>TEST=1 764 : test_cpp_int_karatsuba_1 765 ] 766 [ run test_cpp_int_karatsuba.cpp gmp no_eh_support 767 : # command line 768 : # input files 769 : # requirements 770 [ check-target-builds ../config//has_gmp : : <build>no ] 771 release # otherwise [ runtime is too slow!! 772 <define>TEST=2 773 : test_cpp_int_karatsuba_2 774 ] 775 [ run test_cpp_int_karatsuba.cpp gmp no_eh_support 776 : # command line 777 : # input files 778 : # requirements 779 [ check-target-builds ../config//has_gmp : : <build>no ] 780 release # otherwise [ runtime is too slow!! 781 <define>TEST=3 782 : test_cpp_int_karatsuba_3 783 ] 784 [ run test_cpp_int_karatsuba.cpp gmp no_eh_support 785 : # command line 786 : # input files 787 : # requirements 788 [ check-target-builds ../config//has_gmp : : <build>no ] 789 release # otherwise [ runtime is too slow!! 790 <define>TEST=4 791 : test_cpp_int_karatsuba_4 792 ] 793 794 [ run test_checked_cpp_int.cpp no_eh_support ] 795 [ run test_unchecked_cpp_int.cpp no_eh_support : : : release ] 796 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 ] 803 804; 805 806test-suite misc : 807 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 ] ] 812 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 ] ] 817 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 ] ] 825 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 ] ] 833 834 [ run test_miller_rabin.cpp no_eh_support gmp 835 : # command line 836 : # input files 837 : # requirements 838 [ check-target-builds ../config//has_gmp : : <build>no ] 839 release # otherwise [ runtime is too slow!! 840 ] 841 842 [ run test_rational_io.cpp $(TOMMATH) no_eh_support 843 : # command line 844 : # input files 845 : # requirements 846 <define>TEST_TOMMATH 847 [ check-target-builds ../config//has_tommath : : <build>no ] 848 release # Otherwise [ runtime is slow 849 : test_rational_io_tommath ] 850 851 [ run test_rational_io.cpp gmp no_eh_support 852 : # command line 853 : # input files 854 : # requirements 855 <define>TEST_MPQ 856 [ check-target-builds ../config//has_gmp : : <build>no ] 857 release # Otherwise [ runtime is slow 858 : test_rational_io_mpz ] 859 860 [ run test_rational_io.cpp no_eh_support 861 : # command line 862 : # input files 863 : # requirements 864 <define>TEST_CPP_INT 865 release # Otherwise [ runtime is slow 866 : test_rational_io_cpp_int ] 867 868 [ run test_generic_conv.cpp no_eh_support 869 : # command line 870 : # input files 871 : # requirements 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 876 ] 877 878 [ run test_rat_float_interconv.cpp no_eh_support /boost/system//boost_system /boost/chrono//boost_chrono 879 : # command line 880 : # input files 881 : # requirements 882 <define>TEST1 883 release 884 : test_rat_float_interconv_1 ] 885 886 [ run test_rat_float_interconv.cpp no_eh_support /boost/system//boost_system /boost/chrono//boost_chrono 887 : # command line 888 : # input files 889 : # requirements 890 <define>TEST2 891 release 892 : test_rat_float_interconv_2 ] 893 894 [ run test_rat_float_interconv.cpp no_eh_support /boost/system//boost_system /boost/chrono//boost_chrono 895 : # command line 896 : # input files 897 : # requirements 898 <define>TEST3 899 release 900 : test_rat_float_interconv_3 ] 901 902 [ run test_rat_float_interconv.cpp no_eh_support /boost/system//boost_system /boost/chrono//boost_chrono 903 : # command line 904 : # input files 905 : # requirements 906 <define>TEST4 907 release 908 : test_rat_float_interconv_4 ] 909 910 [ run test_rat_float_interconv.cpp no_eh_support /boost/system//boost_system /boost/chrono//boost_chrono mpfr gmp 911 : # command line 912 : # input files 913 : # requirements 914 <define>TEST5 915 [ check-target-builds ../config//has_mpfr : : <build>no ] 916 release 917 : test_rat_float_interconv_5 ] 918 919 [ run test_rat_float_interconv.cpp no_eh_support /boost/system//boost_system /boost/chrono//boost_chrono mpfr gmp 920 : # command line 921 : # input files 922 : # requirements 923 <define>TEST6 924 [ check-target-builds ../config//has_mpfr : : <build>no ] 925 release 926 : test_rat_float_interconv_6 ] 927 928 [ run test_rat_float_interconv.cpp no_eh_support /boost/system//boost_system /boost/chrono//boost_chrono mpfr gmp 929 : # command line 930 : # input files 931 : # requirements 932 <define>TEST7 933 [ check-target-builds ../config//has_mpfr : : <build>no ] 934 release 935 : test_rat_float_interconv_7 ] 936 937 [ run test_rat_float_interconv.cpp no_eh_support /boost/system//boost_system /boost/chrono//boost_chrono mpfr gmp 938 : # command line 939 : # input files 940 : # requirements 941 <define>TEST8 942 [ check-target-builds ../config//has_mpfr : : <build>no ] 943 release 944 : test_rat_float_interconv_8 ] 945 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 ] 949 950 [ run test_mixed_cpp_int.cpp no_eh_support ] 951 [ run test_mixed_float.cpp no_eh_support 952 : # command line 953 : # input files 954 : # requirements 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 958 : # requirements 959 [ check-target-builds ../config//has_mpfr : : <build>no ] ] 960 [ compile include_test/gmp_include_test.cpp 961 : # requirements 962 [ check-target-builds ../config//has_gmp : : <build>no ] ] 963 [ compile include_test/tommath_include_test.cpp 964 : # requirements 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 ] 969 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 ] 977 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 ] 985 986 # 987 # Serialization tests, run in release mode so we cycle through more values: 988 # 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 ] 995 996 # 997 # Mixed mode comparison tests, see: https://svn.boost.org/trac/boost/ticket/11328 998 # 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 ] ] 1004 # 1005 # Check for narrowing conversions: 1006 # 1007 [ run test_float_conversions.cpp no_eh_support ] 1008 # 1009 # specific bug cases: 1010 # 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 : ] 1029 ] 1030 [ run test_optional_compat.cpp ] 1031 # 1032 # Eigen interoperability: 1033 # 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 ] ] 1046; 1047 1048 1049# 1050# This take too long to run as a regular part of the tests: 1051# 1052run test_cpp_bin_float_round.cpp mpfr gmp ; 1053explicit test_cpp_bin_float_round ; 1054 1055rule get_specfun_tests 1056{ 1057 local result ; 1058 for local source in [ glob math/*.cpp ] 1059 { 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 1064 : # command line 1065 : # input files 1066 : # requirements 1067 [ check-target-builds ../config//has_mpfr : : <build>no ] 1068 <define>TEST_MPFR_50 1069 <optimization>speed 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 1074 release 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 1080 : # command line 1081 : # input files 1082 : # requirements 1083 [ check-target-builds ../config//has_gmp : : <build>no ] 1084 <optimization>speed 1085 <define>TEST_MPF_50 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 1090 release 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 1095 : # command line 1096 : # input files 1097 : # requirements 1098 <define>TEST_CPP_DEC_FLOAT 1099 <define>BOOST_ALL_NO_LIB 1100 <define>BOOST_OPTIONAL_USE_OLD_DEFINITION_OF_NONE 1101 <optimization>speed 1102 <toolset>msvc:<cxxflags>-bigobj 1103 <include>../../math/include_private 1104 release 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 1109 : # command line 1110 : # input files 1111 : # requirements 1112 <define>TEST_CPP_BIN_FLOAT 1113 <define>BOOST_ALL_NO_LIB 1114 <define>BOOST_OPTIONAL_USE_OLD_DEFINITION_OF_NONE 1115 <optimization>speed 1116 <toolset>msvc:<cxxflags>-bigobj 1117 <include>../../math/include_private 1118 release 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 1124 : # command line 1125 : # input files 1126 : # requirements 1127 [ check-target-builds ../config//has_float128 : : <build>no ] 1128 <optimization>speed 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 1134 release 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 1140 : # command line 1141 : # input files 1142 : # requirements 1143 [ check-target-builds ../config//has_intel_quad : <cxxflags>-Qoption,cpp,--extended_float_type : <build>no ] [ check-target-builds ../config//has_float128 : <source>quadmath ] 1144 <optimization>speed 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 1150 release 1151 : $(source:B)_intel_quad ] ; 1152 } 1153 # 1154 # High precision tests are rather different, as they test only one 1155 # multiprecision type and are more a test of Boost.Math: 1156 # 1157 for local source in [ glob math/high_prec/*.cpp ] 1158 { 1159 result += [ run $(source) 1160 /boost/test//boost_unit_test_framework/<link>static 1161 /boost/regex//boost_regex/<link>static 1162 : # command line 1163 : # input files 1164 : # requirements 1165 <optimization>speed 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 1171 release ] ; 1172 } 1173 return $(result) ; 1174} 1175 1176test-suite specfun : [ get_specfun_tests ] ; 1177explicit specfun ; 1178 1179rule get_compile_fail_tests 1180{ 1181 1182 local compile_fail_tests ; 1183 1184 for local source in [ glob compile_fail/*.cpp ] 1185 { 1186 compile_fail_tests += $(source:B) ; 1187 compile-fail $(source) 1188 : 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 : ] 1191 ; 1192 } 1193 return $(compile_fail_tests) ; 1194} 1195 1196test-suite compile_fail : [ get_compile_fail_tests ] ; 1197 1198rule get_concept_checks 1199{ 1200 local result ; 1201 for local source in [ glob concepts/*.cpp ] 1202 { 1203 1204 result += [ compile $(source) mpfr 1205 : # requirements 1206 <define>TEST_MPFR_50 1207 [ check-target-builds ../config//has_mpfr : : <build>no ] 1208 <debug-symbols>off 1209 <optimization>space 1210 : $(source:B)_mpfr_50 ] ; 1211 1212 result += [ compile $(source) mpfr 1213 : # requirements 1214 <define>TEST_MPFR_6 1215 [ check-target-builds ../config//has_mpfr : : <build>no ] 1216 <debug-symbols>off 1217 <optimization>space 1218 : $(source:B)_mpfr_6 ] ; 1219 1220 result += [ compile $(source) mpfr 1221 : # requirements 1222 <define>TEST_MPFR_15 1223 [ check-target-builds ../config//has_mpfr : : <build>no ] 1224 <debug-symbols>off 1225 <optimization>space 1226 : $(source:B)_mpfr_15 ] ; 1227 1228 result += [ compile $(source) mpfr 1229 : # requirements 1230 <define>TEST_MPFR_17 1231 [ check-target-builds ../config//has_mpfr : : <build>no ] 1232 <debug-symbols>off 1233 <optimization>space 1234 : $(source:B)_mpfr_17 ] ; 1235 1236 result += [ compile $(source) mpfr 1237 : # requirements 1238 <define>TEST_MPFR_30 1239 [ check-target-builds ../config//has_mpfr : : <build>no ] 1240 <debug-symbols>off 1241 <optimization>space 1242 : $(source:B)_mpfr_30 ] ; 1243 1244 result += [ compile $(source) gmp 1245 : # requirements 1246 <define>TEST_MPF_50 1247 [ check-target-builds ../config//has_gmp : : <build>no ] 1248 <debug-symbols>off 1249 <optimization>space 1250 : $(source:B)_mpf50 ] ; 1251 1252 result += [ compile $(source) 1253 : # requirements 1254 <define>TEST_CPP_DEC_FLOAT 1255 <debug-symbols>off 1256 <optimization>space 1257 : $(source:B)_cpp_dec_float ] ; 1258 1259 result += [ compile $(source) 1260 : # requirements 1261 <define>TEST_CPP_BIN_FLOAT 1262 <debug-symbols>off 1263 <optimization>space 1264 : $(source:B)_cpp_bin_float ] ; 1265 1266 result += [ compile $(source) 1267 : # requirements 1268 <define>TEST_CPP_DEC_FLOAT_NO_ET 1269 <debug-symbols>off 1270 <optimization>space 1271 : $(source:B)_cpp_dec_float_no_et ] ; 1272 1273 result += [ compile $(source) 1274 : # requirements 1275 <define>TEST_BACKEND 1276 <debug-symbols>off 1277 <optimization>space 1278 : $(source:B)_backend_concept ] ; 1279 1280 result += [ compile $(source) 1281 : # requirements 1282 <define>TEST_LOGGED_ADAPTER 1283 <debug-symbols>off 1284 <optimization>space 1285 : $(source:B)_logged_adaptor ] ; 1286 } 1287 return $(result) ; 1288} 1289 1290test-suite concepts : [ get_concept_checks ] ; 1291 1292test-suite examples : ../example//examples ; 1293test-suite performance : ../performance//performance ; 1294