passenger 3.0.21 → 3.9.1.beta
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of passenger might be problematic. Click here for more details.
- data/DEVELOPERS.TXT +4 -10
- data/NEWS +19 -27
- data/Rakefile +20 -19
- data/bin/passenger +3 -2
- data/bin/passenger-config +35 -5
- data/bin/passenger-install-apache2-module +12 -12
- data/bin/passenger-install-nginx-module +55 -38
- data/bin/passenger-memory-stats +3 -1
- data/bin/passenger-status +7 -35
- data/build/agents.rb +107 -21
- data/build/apache2.rb +11 -46
- data/build/basics.rb +61 -9
- data/build/common_library.rb +59 -142
- data/build/cxx_tests.rb +111 -110
- data/build/documentation.rb +33 -0
- data/build/misc.rb +30 -12
- data/build/nginx.rb +10 -39
- data/build/oxt_tests.rb +1 -0
- data/build/ruby_extension.rb +1 -5
- data/build/test_basics.rb +3 -2
- data/dev/copy_boost_headers.rb +2 -1
- data/doc/Architectural overview.html +49 -90
- data/doc/DebuggingAndStressTesting.txt.md +49 -0
- data/doc/Packaging.txt.md +254 -0
- data/doc/Security of user switching support.html +35 -66
- data/doc/Users guide Apache.html +588 -758
- data/doc/Users guide Apache.idmap.txt +253 -136
- data/doc/Users guide Apache.txt +154 -109
- data/doc/Users guide Nginx.html +544 -660
- data/doc/Users guide Nginx.idmap.txt +179 -91
- data/doc/Users guide Nginx.txt +192 -118
- data/doc/Users guide Standalone.html +65 -48
- data/doc/Users guide Standalone.idmap.txt +10 -2
- data/doc/Users guide Standalone.txt +4 -0
- data/doc/images/glyphicons-halflings-white.png +0 -0
- data/doc/images/glyphicons-halflings.png +0 -0
- data/doc/images/phusion_banner_small.png +0 -0
- data/doc/images/{smart-lv2.png → smart.png} +0 -0
- data/doc/images/{smart-lv2.svg → smart.svg} +0 -0
- data/doc/templates/bootstrap.min.css +397 -0
- data/doc/templates/markdown.html.erb +117 -0
- data/doc/users_guide_snippets/analysis_and_system_maintenance.txt +2 -1
- data/doc/users_guide_snippets/appendix_c_spawning_methods.txt +26 -48
- data/doc/users_guide_snippets/passenger_spawn_method.txt +18 -30
- data/doc/users_guide_snippets/support_information.txt +30 -0
- data/ext/apache2/Bucket.cpp +9 -26
- data/ext/apache2/Bucket.h +13 -10
- data/ext/apache2/Configuration.cpp +70 -58
- data/ext/apache2/Configuration.hpp +19 -47
- data/ext/apache2/DirectoryMapper.h +7 -7
- data/ext/apache2/Hooks.cpp +150 -313
- data/ext/boost/algorithm/string/detail/case_conv.hpp +4 -2
- data/ext/boost/algorithm/string/detail/find_format.hpp +20 -20
- data/ext/boost/algorithm/string/detail/find_format_all.hpp +23 -23
- data/ext/boost/algorithm/string/detail/find_format_store.hpp +2 -2
- data/ext/boost/algorithm/string/detail/formatter.hpp +25 -0
- data/ext/boost/algorithm/string/formatter.hpp +20 -3
- data/ext/boost/assert.hpp +85 -4
- data/ext/boost/bind/bind.hpp +1 -1
- data/ext/boost/concept/detail/backward_compatibility.hpp +1 -1
- data/ext/boost/concept_check.hpp +140 -64
- data/ext/boost/config.hpp +1 -1
- data/ext/boost/config/auto_link.hpp +8 -6
- data/ext/boost/config/compiler/borland.hpp +12 -2
- data/ext/boost/config/compiler/clang.hpp +89 -30
- data/ext/boost/config/compiler/codegear.hpp +3 -2
- data/ext/boost/config/compiler/common_edg.hpp +7 -5
- data/ext/boost/config/compiler/cray.hpp +61 -0
- data/ext/boost/config/compiler/digitalmars.hpp +9 -1
- data/ext/boost/config/compiler/gcc.hpp +33 -24
- data/ext/boost/config/compiler/gcc_xml.hpp +4 -0
- data/ext/boost/config/compiler/hp_acc.hpp +12 -1
- data/ext/boost/config/compiler/intel.hpp +78 -4
- data/ext/boost/config/compiler/metrowerks.hpp +4 -1
- data/ext/boost/config/compiler/mpw.hpp +4 -1
- data/ext/boost/config/compiler/nvcc.hpp +8 -66
- data/ext/boost/config/compiler/pathscale.hpp +80 -0
- data/ext/boost/config/compiler/pgi.hpp +5 -5
- data/ext/boost/config/compiler/sunpro_cc.hpp +4 -1
- data/ext/boost/config/compiler/vacpp.hpp +37 -13
- data/ext/boost/config/compiler/visualc.hpp +24 -11
- data/ext/boost/config/platform/bsd.hpp +1 -1
- data/ext/boost/config/platform/cray.hpp +18 -0
- data/ext/boost/config/platform/cygwin.hpp +10 -0
- data/ext/boost/config/platform/linux.hpp +5 -0
- data/ext/boost/config/platform/macos.hpp +5 -4
- data/ext/boost/config/platform/symbian.hpp +5 -2
- data/ext/boost/config/platform/vms.hpp +25 -0
- data/ext/boost/config/platform/win32.hpp +7 -1
- data/ext/boost/config/select_compiler_config.hpp +8 -25
- data/ext/boost/config/select_platform_config.hpp +8 -1
- data/ext/boost/config/select_stdlib_config.hpp +9 -1
- data/ext/boost/config/stdlib/dinkumware.hpp +6 -9
- data/ext/boost/config/stdlib/libcomo.hpp +1 -4
- data/ext/boost/config/stdlib/libcpp.hpp +36 -0
- data/ext/boost/config/stdlib/libstdcpp3.hpp +37 -11
- data/ext/boost/config/stdlib/modena.hpp +1 -4
- data/ext/boost/config/stdlib/msl.hpp +1 -4
- data/ext/boost/config/stdlib/roguewave.hpp +9 -6
- data/ext/boost/config/stdlib/sgi.hpp +12 -4
- data/ext/boost/config/stdlib/stlport.hpp +11 -4
- data/ext/boost/config/stdlib/vacpp.hpp +11 -4
- data/ext/boost/config/suffix.hpp +71 -6
- data/ext/boost/config/warning_disable.hpp +1 -1
- data/ext/boost/container/container_fwd.hpp +177 -0
- data/ext/boost/cstdint.hpp +17 -12
- data/ext/boost/current_function.hpp +2 -1
- data/ext/boost/date_time/c_time.hpp +17 -1
- data/ext/boost/date_time/compiler_config.hpp +13 -15
- data/ext/boost/date_time/date_formatting.hpp +7 -1
- data/ext/boost/date_time/filetime_functions.hpp +4 -4
- data/ext/boost/date_time/gregorian_calendar.ipp +2 -2
- data/ext/boost/date_time/strings_from_facet.hpp +3 -3
- data/ext/boost/date_time/time_facet.hpp +101 -101
- data/ext/boost/detail/endian.hpp +4 -2
- data/ext/boost/detail/fenv.hpp +74 -0
- data/ext/boost/detail/sp_typeinfo.hpp +6 -0
- data/ext/boost/exception/detail/clone_current_exception.hpp +47 -0
- data/ext/boost/exception/detail/exception_ptr.hpp +194 -122
- data/ext/boost/exception/detail/type_info.hpp +3 -3
- data/ext/boost/exception/diagnostic_information.hpp +37 -21
- data/ext/boost/exception/exception.hpp +21 -1
- data/ext/boost/exception/info.hpp +0 -1
- data/ext/boost/function.hpp +2 -2
- data/ext/boost/function/function_base.hpp +15 -9
- data/ext/boost/function/function_template.hpp +26 -48
- data/ext/boost/integer_fwd.hpp +0 -16
- data/ext/boost/integer_traits.hpp +2 -2
- data/ext/boost/iterator.hpp +1 -1
- data/ext/boost/iterator/iterator_adaptor.hpp +1 -7
- data/ext/boost/iterator/iterator_facade.hpp +13 -13
- data/ext/boost/iterator/transform_iterator.hpp +5 -20
- data/ext/boost/lexical_cast.hpp +1655 -673
- data/ext/boost/math/policies/policy.hpp +982 -0
- data/ext/boost/math/special_functions/detail/fp_traits.hpp +570 -0
- data/ext/boost/math/special_functions/detail/round_fwd.hpp +80 -0
- data/ext/boost/math/special_functions/fpclassify.hpp +533 -0
- data/ext/boost/math/special_functions/math_fwd.hpp +1070 -0
- data/ext/boost/math/special_functions/sign.hpp +145 -0
- data/ext/boost/math/tools/config.hpp +321 -0
- data/ext/boost/math/tools/promotion.hpp +150 -0
- data/ext/boost/math/tools/real_cast.hpp +29 -0
- data/ext/boost/math/tools/user.hpp +97 -0
- data/ext/boost/move/move.hpp +1222 -0
- data/ext/boost/mpl/O1_size.hpp +40 -0
- data/ext/boost/mpl/O1_size_fwd.hpp +24 -0
- data/ext/boost/mpl/advance.hpp +76 -0
- data/ext/boost/mpl/advance_fwd.hpp +28 -0
- data/ext/boost/mpl/at.hpp +52 -0
- data/ext/boost/mpl/at_fwd.hpp +24 -0
- data/ext/boost/mpl/aux_/O1_size_impl.hpp +87 -0
- data/ext/boost/mpl/aux_/advance_backward.hpp +128 -0
- data/ext/boost/mpl/aux_/advance_forward.hpp +127 -0
- data/ext/boost/mpl/aux_/arithmetic_op.hpp +92 -0
- data/ext/boost/mpl/aux_/at_impl.hpp +45 -0
- data/ext/boost/mpl/aux_/begin_end_impl.hpp +101 -0
- data/ext/boost/mpl/aux_/clear_impl.hpp +35 -0
- data/ext/boost/mpl/aux_/comparison_op.hpp +83 -0
- data/ext/boost/mpl/aux_/config/forwarding.hpp +27 -0
- data/ext/boost/mpl/aux_/config/typeof.hpp +38 -0
- data/ext/boost/mpl/aux_/contains_impl.hpp +61 -0
- data/ext/boost/mpl/aux_/find_if_pred.hpp +31 -0
- data/ext/boost/mpl/aux_/fold_impl.hpp +43 -0
- data/ext/boost/mpl/aux_/has_begin.hpp +23 -0
- data/ext/boost/mpl/aux_/has_size.hpp +23 -0
- data/ext/boost/mpl/aux_/has_tag.hpp +23 -0
- data/ext/boost/mpl/aux_/inserter_algorithm.hpp +159 -0
- data/ext/boost/mpl/aux_/is_msvc_eti_arg.hpp +64 -0
- data/ext/boost/mpl/aux_/iter_apply.hpp +47 -0
- data/ext/boost/mpl/aux_/iter_fold_if_impl.hpp +210 -0
- data/ext/boost/mpl/aux_/iter_fold_impl.hpp +42 -0
- data/ext/boost/mpl/aux_/lambda_spec.hpp +49 -0
- data/ext/boost/mpl/aux_/largest_int.hpp +63 -0
- data/ext/boost/mpl/aux_/msvc_eti_base.hpp +77 -0
- data/ext/boost/mpl/aux_/msvc_type.hpp +62 -0
- data/ext/boost/mpl/aux_/numeric_cast_utils.hpp +77 -0
- data/ext/boost/mpl/aux_/numeric_op.hpp +315 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/advance_backward.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/advance_forward.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/equal_to.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/fold_impl.hpp +180 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/greater.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/greater_equal.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/iter_fold_if_impl.hpp +133 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/iter_fold_impl.hpp +180 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/less.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/less_equal.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/list.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/minus.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/not_equal_to.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/plus.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/reverse_fold_impl.hpp +231 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/times.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/vector.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessor/default_params.hpp +67 -0
- data/ext/boost/mpl/aux_/push_back_impl.hpp +70 -0
- data/ext/boost/mpl/aux_/push_front_impl.hpp +71 -0
- data/ext/boost/mpl/aux_/reverse_fold_impl.hpp +44 -0
- data/ext/boost/mpl/aux_/size_impl.hpp +52 -0
- data/ext/boost/mpl/aux_/traits_lambda_spec.hpp +63 -0
- data/ext/boost/mpl/back_fwd.hpp +24 -0
- data/ext/boost/mpl/back_inserter.hpp +34 -0
- data/ext/boost/mpl/begin_end.hpp +57 -0
- data/ext/boost/mpl/begin_end_fwd.hpp +27 -0
- data/ext/boost/mpl/clear.hpp +39 -0
- data/ext/boost/mpl/clear_fwd.hpp +24 -0
- data/ext/boost/mpl/comparison.hpp +24 -0
- data/ext/boost/mpl/contains.hpp +41 -0
- data/ext/boost/mpl/contains_fwd.hpp +25 -0
- data/ext/boost/mpl/deref.hpp +41 -0
- data/ext/boost/mpl/distance.hpp +78 -0
- data/ext/boost/mpl/distance_fwd.hpp +28 -0
- data/ext/boost/mpl/empty_fwd.hpp +24 -0
- data/ext/boost/mpl/equal_to.hpp +21 -0
- data/ext/boost/mpl/find.hpp +38 -0
- data/ext/boost/mpl/find_if.hpp +50 -0
- data/ext/boost/mpl/fold.hpp +48 -0
- data/ext/boost/mpl/front_fwd.hpp +24 -0
- data/ext/boost/mpl/front_inserter.hpp +33 -0
- data/ext/boost/mpl/greater.hpp +21 -0
- data/ext/boost/mpl/greater_equal.hpp +21 -0
- data/ext/boost/mpl/inserter.hpp +32 -0
- data/ext/boost/mpl/iter_fold.hpp +49 -0
- data/ext/boost/mpl/iter_fold_if.hpp +117 -0
- data/ext/boost/mpl/iterator_range.hpp +42 -0
- data/ext/boost/mpl/iterator_tags.hpp +27 -0
- data/ext/boost/mpl/less.hpp +21 -0
- data/ext/boost/mpl/less_equal.hpp +21 -0
- data/ext/boost/mpl/limits/list.hpp +21 -0
- data/ext/boost/mpl/limits/vector.hpp +21 -0
- data/ext/boost/mpl/list.hpp +57 -0
- data/ext/boost/mpl/list/aux_/O1_size.hpp +33 -0
- data/ext/boost/mpl/list/aux_/begin_end.hpp +44 -0
- data/ext/boost/mpl/list/aux_/clear.hpp +34 -0
- data/ext/boost/mpl/list/aux_/empty.hpp +34 -0
- data/ext/boost/mpl/list/aux_/front.hpp +33 -0
- data/ext/boost/mpl/list/aux_/include_preprocessed.hpp +35 -0
- data/ext/boost/mpl/list/aux_/item.hpp +55 -0
- data/ext/boost/mpl/list/aux_/iterator.hpp +76 -0
- data/ext/boost/mpl/list/aux_/pop_front.hpp +34 -0
- data/ext/boost/mpl/list/aux_/preprocessed/plain/list10.hpp +149 -0
- data/ext/boost/mpl/list/aux_/preprocessed/plain/list20.hpp +169 -0
- data/ext/boost/mpl/list/aux_/push_back.hpp +36 -0
- data/ext/boost/mpl/list/aux_/push_front.hpp +39 -0
- data/ext/boost/mpl/list/aux_/size.hpp +33 -0
- data/ext/boost/mpl/list/aux_/tag.hpp +24 -0
- data/ext/boost/mpl/list/list0.hpp +42 -0
- data/ext/boost/mpl/list/list10.hpp +43 -0
- data/ext/boost/mpl/list/list20.hpp +43 -0
- data/ext/boost/mpl/long.hpp +22 -0
- data/ext/boost/mpl/long_fwd.hpp +27 -0
- data/ext/boost/mpl/minus.hpp +21 -0
- data/ext/boost/mpl/multiplies.hpp +53 -0
- data/ext/boost/mpl/negate.hpp +81 -0
- data/ext/boost/mpl/not_equal_to.hpp +21 -0
- data/ext/boost/mpl/numeric_cast.hpp +41 -0
- data/ext/boost/mpl/pair.hpp +70 -0
- data/ext/boost/mpl/plus.hpp +21 -0
- data/ext/boost/mpl/pop_back_fwd.hpp +24 -0
- data/ext/boost/mpl/pop_front_fwd.hpp +24 -0
- data/ext/boost/mpl/prior.hpp +19 -0
- data/ext/boost/mpl/push_back.hpp +53 -0
- data/ext/boost/mpl/push_back_fwd.hpp +24 -0
- data/ext/boost/mpl/push_front.hpp +52 -0
- data/ext/boost/mpl/push_front_fwd.hpp +24 -0
- data/ext/boost/mpl/remove_if.hpp +83 -0
- data/ext/boost/mpl/reverse_fold.hpp +50 -0
- data/ext/boost/mpl/same_as.hpp +55 -0
- data/ext/boost/mpl/sequence_tag.hpp +124 -0
- data/ext/boost/mpl/sequence_tag_fwd.hpp +26 -0
- data/ext/boost/mpl/size.hpp +42 -0
- data/ext/boost/mpl/size_fwd.hpp +24 -0
- data/ext/boost/mpl/tag.hpp +52 -0
- data/ext/boost/mpl/times.hpp +21 -0
- data/ext/boost/mpl/vector.hpp +57 -0
- data/ext/boost/mpl/vector/aux_/O1_size.hpp +56 -0
- data/ext/boost/mpl/vector/aux_/at.hpp +116 -0
- data/ext/boost/mpl/vector/aux_/back.hpp +59 -0
- data/ext/boost/mpl/vector/aux_/begin_end.hpp +49 -0
- data/ext/boost/mpl/vector/aux_/clear.hpp +55 -0
- data/ext/boost/mpl/vector/aux_/empty.hpp +68 -0
- data/ext/boost/mpl/vector/aux_/front.hpp +56 -0
- data/ext/boost/mpl/vector/aux_/include_preprocessed.hpp +55 -0
- data/ext/boost/mpl/vector/aux_/item.hpp +103 -0
- data/ext/boost/mpl/vector/aux_/iterator.hpp +130 -0
- data/ext/boost/mpl/vector/aux_/pop_back.hpp +40 -0
- data/ext/boost/mpl/vector/aux_/pop_front.hpp +40 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/plain/vector10.hpp +829 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/plain/vector20.hpp +1144 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/typeof_based/vector10.hpp +139 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/typeof_based/vector20.hpp +159 -0
- data/ext/boost/mpl/vector/aux_/push_back.hpp +40 -0
- data/ext/boost/mpl/vector/aux_/push_front.hpp +40 -0
- data/ext/boost/mpl/vector/aux_/size.hpp +49 -0
- data/ext/boost/mpl/vector/aux_/tag.hpp +32 -0
- data/ext/boost/mpl/vector/aux_/vector0.hpp +52 -0
- data/ext/boost/mpl/vector/vector0.hpp +34 -0
- data/ext/boost/mpl/vector/vector10.hpp +45 -0
- data/ext/boost/mpl/vector/vector20.hpp +45 -0
- data/ext/boost/none.hpp +1 -1
- data/ext/boost/numeric/conversion/bounds.hpp +24 -0
- data/ext/boost/numeric/conversion/cast.hpp +61 -0
- data/ext/boost/numeric/conversion/conversion_traits.hpp +39 -0
- data/ext/boost/numeric/conversion/converter.hpp +68 -0
- data/ext/boost/numeric/conversion/converter_policies.hpp +186 -0
- data/ext/boost/numeric/conversion/detail/bounds.hpp +58 -0
- data/ext/boost/numeric/conversion/detail/conversion_traits.hpp +97 -0
- data/ext/boost/numeric/conversion/detail/converter.hpp +602 -0
- data/ext/boost/numeric/conversion/detail/int_float_mixture.hpp +72 -0
- data/ext/boost/numeric/conversion/detail/is_subranged.hpp +234 -0
- data/ext/boost/numeric/conversion/detail/meta.hpp +120 -0
- data/ext/boost/numeric/conversion/detail/numeric_cast_traits.hpp +138 -0
- data/ext/boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_common.hpp +1741 -0
- data/ext/boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_long_long.hpp +347 -0
- data/ext/boost/numeric/conversion/detail/sign_mixture.hpp +72 -0
- data/ext/boost/numeric/conversion/detail/udt_builtin_mixture.hpp +69 -0
- data/ext/boost/numeric/conversion/int_float_mixture_enum.hpp +29 -0
- data/ext/boost/numeric/conversion/numeric_cast_traits.hpp +31 -0
- data/ext/boost/numeric/conversion/sign_mixture_enum.hpp +29 -0
- data/ext/boost/numeric/conversion/udt_builtin_mixture_enum.hpp +26 -0
- data/ext/boost/operators.hpp +3 -1
- data/ext/boost/optional/optional.hpp +146 -79
- data/ext/boost/optional/optional_fwd.hpp +8 -1
- data/ext/boost/preprocessor/cat.hpp +2 -2
- data/ext/boost/preprocessor/config/config.hpp +39 -4
- data/ext/boost/preprocessor/facilities/intercept.hpp +277 -0
- data/ext/boost/preprocessor/facilities/overload.hpp +25 -0
- data/ext/boost/preprocessor/iteration/detail/iter/forward1.hpp +3 -3
- data/ext/boost/preprocessor/iteration/iterate.hpp +3 -3
- data/ext/boost/preprocessor/punctuation/paren.hpp +23 -0
- data/ext/boost/preprocessor/repetition/enum_shifted_params.hpp +44 -0
- data/ext/boost/preprocessor/seq/cat.hpp +5 -4
- data/ext/boost/preprocessor/seq/size.hpp +0 -1
- data/ext/boost/preprocessor/tuple/eat.hpp +83 -34
- data/ext/boost/preprocessor/tuple/elem.hpp +161 -355
- data/ext/boost/preprocessor/tuple/rem.hpp +110 -48
- data/ext/boost/preprocessor/tuple/to_list.hpp +90 -36
- data/ext/boost/preprocessor/variadic/elem.hpp +94 -0
- data/ext/boost/preprocessor/variadic/size.hpp +30 -0
- data/ext/boost/range/begin.hpp +17 -6
- data/ext/boost/range/concepts.hpp +37 -2
- data/ext/boost/range/detail/safe_bool.hpp +72 -0
- data/ext/boost/range/end.hpp +14 -9
- data/ext/boost/range/iterator_range_core.hpp +120 -12
- data/ext/boost/range/size.hpp +21 -5
- data/ext/boost/smart_ptr/detail/shared_count.hpp +88 -0
- data/ext/boost/smart_ptr/detail/sp_counted_base.hpp +3 -0
- data/ext/boost/smart_ptr/detail/sp_counted_base_aix.hpp +142 -0
- data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp +9 -0
- data/ext/boost/smart_ptr/detail/sp_counted_impl.hpp +10 -2
- data/ext/boost/smart_ptr/detail/sp_has_sync.hpp +5 -1
- data/ext/boost/smart_ptr/detail/spinlock.hpp +4 -1
- data/ext/boost/smart_ptr/detail/spinlock_gcc_arm.hpp +20 -3
- data/ext/boost/smart_ptr/detail/spinlock_pool.hpp +4 -0
- data/ext/boost/smart_ptr/make_shared.hpp +591 -22
- data/ext/boost/smart_ptr/shared_array.hpp +29 -1
- data/ext/boost/smart_ptr/shared_ptr.hpp +29 -13
- data/ext/boost/smart_ptr/weak_ptr.hpp +24 -12
- data/ext/boost/src/pthread/once.cpp +9 -7
- data/ext/boost/src/pthread/thread.cpp +32 -28
- data/ext/boost/src/pthread/timeconv.inl +4 -5
- data/ext/boost/src/tss_null.cpp +5 -1
- data/ext/boost/static_assert.hpp +8 -2
- data/ext/boost/thread/detail/config.hpp +19 -4
- data/ext/boost/thread/detail/move.hpp +11 -5
- data/ext/boost/thread/detail/thread.hpp +59 -43
- data/ext/boost/thread/exceptions.hpp +9 -9
- data/ext/boost/thread/future.hpp +150 -82
- data/ext/boost/thread/locks.hpp +101 -60
- data/ext/boost/thread/pthread/condition_variable.hpp +79 -32
- data/ext/boost/thread/pthread/condition_variable_fwd.hpp +12 -3
- data/ext/boost/thread/pthread/mutex.hpp +17 -14
- data/ext/boost/thread/pthread/once.hpp +3 -4
- data/ext/boost/thread/pthread/pthread_mutex_scoped_lock.hpp +12 -2
- data/ext/boost/thread/pthread/recursive_mutex.hpp +19 -19
- data/ext/boost/thread/pthread/shared_mutex.hpp +13 -13
- data/ext/boost/thread/pthread/thread_data.hpp +40 -12
- data/ext/boost/thread/thread_time.hpp +5 -0
- data/ext/boost/throw_exception.hpp +1 -1
- data/ext/boost/token_functions.hpp +34 -10
- data/ext/boost/type_traits/add_rvalue_reference.hpp +66 -0
- data/ext/boost/type_traits/alignment_of.hpp +1 -1
- data/ext/boost/type_traits/detail/bool_trait_def.hpp +26 -3
- data/ext/boost/type_traits/detail/bool_trait_undef.hpp +3 -2
- data/ext/boost/type_traits/detail/cv_traits_impl.hpp +1 -1
- data/ext/boost/type_traits/detail/size_t_trait_def.hpp +6 -4
- data/ext/boost/type_traits/detail/type_trait_def.hpp +8 -2
- data/ext/boost/type_traits/function_traits.hpp +1 -1
- data/ext/boost/type_traits/has_nothrow_constructor.hpp +53 -0
- data/ext/boost/type_traits/has_nothrow_copy.hpp +19 -5
- data/ext/boost/type_traits/has_trivial_constructor.hpp +51 -0
- data/ext/boost/type_traits/has_trivial_copy.hpp +20 -5
- data/ext/boost/type_traits/has_trivial_destructor.hpp +12 -5
- data/ext/boost/type_traits/intrinsics.hpp +119 -71
- data/ext/boost/type_traits/is_const.hpp +5 -5
- data/ext/boost/type_traits/is_convertible.hpp +14 -13
- data/ext/boost/type_traits/is_enum.hpp +1 -1
- data/ext/boost/type_traits/is_floating_point.hpp +27 -0
- data/ext/boost/type_traits/is_function.hpp +3 -3
- data/ext/boost/type_traits/is_fundamental.hpp +1 -1
- data/ext/boost/type_traits/is_member_function_pointer.hpp +2 -2
- data/ext/boost/type_traits/is_member_pointer.hpp +2 -2
- data/ext/boost/type_traits/is_pod.hpp +11 -3
- data/ext/boost/type_traits/is_pointer.hpp +2 -2
- data/ext/boost/type_traits/is_signed.hpp +8 -3
- data/ext/boost/type_traits/is_union.hpp +8 -0
- data/ext/boost/type_traits/is_unsigned.hpp +9 -4
- data/ext/boost/type_traits/is_volatile.hpp +5 -5
- data/ext/boost/type_traits/remove_cv.hpp +4 -3
- data/ext/boost/type_traits/remove_pointer.hpp +51 -2
- data/ext/boost/type_traits/remove_reference.hpp +2 -2
- data/ext/boost/type_traits/type_with_alignment.hpp +8 -2
- data/ext/boost/utility/declval.hpp +44 -0
- data/ext/boost/utility/detail/in_place_factory_prefix.hpp +36 -0
- data/ext/boost/utility/detail/in_place_factory_suffix.hpp +23 -0
- data/ext/boost/utility/detail/result_of_iterate.hpp +142 -0
- data/ext/boost/utility/in_place_factory.hpp +88 -0
- data/ext/boost/utility/result_of.hpp +103 -0
- data/ext/boost/utility/swap.hpp +55 -0
- data/ext/common/AnsiColorConstants.h +36 -0
- data/ext/common/ApplicationPool2/Common.h +87 -0
- data/ext/common/ApplicationPool2/ComponentInfo.h +53 -0
- data/ext/common/ApplicationPool2/Group.h +648 -0
- data/ext/common/ApplicationPool2/Implementation.cpp +580 -0
- data/ext/common/ApplicationPool2/Options.h +576 -0
- data/ext/common/ApplicationPool2/PipeWatcher.h +61 -0
- data/ext/common/ApplicationPool2/Pool.h +1181 -0
- data/ext/common/ApplicationPool2/Process.h +425 -0
- data/ext/common/ApplicationPool2/README.md +96 -0
- data/ext/common/ApplicationPool2/Session.h +158 -0
- data/ext/common/ApplicationPool2/Socket.h +246 -0
- data/ext/common/ApplicationPool2/Spawner.h +2212 -0
- data/ext/common/ApplicationPool2/SuperGroup.h +749 -0
- data/ext/common/BackgroundEventLoop.cpp +129 -0
- data/ext/common/BackgroundEventLoop.h +61 -0
- data/ext/common/Constants.h +3 -1
- data/ext/common/EventedBufferedInput.h +331 -0
- data/ext/common/EventedMessageServer.h +17 -34
- data/ext/common/EventedServer.h +2 -2
- data/ext/common/Exceptions.h +71 -19
- data/ext/common/FileDescriptor.h +8 -6
- data/ext/common/HttpConstants.h +167 -0
- data/ext/common/IniFile.h +24 -0
- data/ext/common/Logging.h +62 -849
- data/ext/common/MessageReadersWriters.h +19 -0
- data/ext/common/MessageServer.h +11 -14
- data/ext/common/MultiLibeio.cpp +198 -0
- data/ext/common/MultiLibeio.h +67 -0
- data/ext/common/ResourceLocator.h +24 -41
- data/ext/common/SafeLibev.h +186 -14
- data/ext/common/StaticString.h +23 -3
- data/ext/common/UnionStation.h +972 -0
- data/ext/common/Utils.cpp +168 -24
- data/ext/common/Utils.h +25 -3
- data/ext/common/Utils/CachedFileStat.hpp +4 -3
- data/ext/common/Utils/FileChangeChecker.h +2 -2
- data/ext/common/Utils/HashMap.h +50 -0
- data/ext/common/Utils/IOUtils.cpp +229 -68
- data/ext/common/Utils/IOUtils.h +134 -3
- data/ext/common/Utils/Lock.h +28 -0
- data/ext/common/Utils/MemoryBarrier.h +52 -0
- data/ext/common/Utils/PriorityQueue.h +54 -0
- data/ext/common/Utils/ProcessMetricsCollector.h +9 -11
- data/ext/common/Utils/ScopeGuard.h +50 -1
- data/ext/common/Utils/SmallVector.h +653 -0
- data/ext/common/Utils/StrIntUtils.cpp +26 -2
- data/ext/common/Utils/StrIntUtils.h +18 -2
- data/ext/common/Utils/StringMap.h +125 -8
- data/ext/common/Utils/Template.h +212 -0
- data/ext/common/Utils/fib.c +699 -0
- data/ext/common/Utils/fib.h +101 -0
- data/ext/common/Utils/fibpriv.h +67 -0
- data/ext/common/Utils/json-forwards.h +249 -0
- data/ext/common/Utils/json.h +1855 -0
- data/ext/common/Utils/jsoncpp.cpp +4230 -0
- data/ext/common/agents/Base.cpp +1126 -0
- data/ext/common/{AgentBase.h → agents/Base.h} +5 -1
- data/ext/common/agents/EnvPrinter.c +16 -0
- data/ext/common/agents/HelperAgent/AgentOptions.h +81 -0
- data/ext/common/{HelperAgent → agents/HelperAgent}/BacktracesServer.h +3 -2
- data/ext/common/agents/HelperAgent/FileBackedPipe.h +732 -0
- data/ext/common/agents/HelperAgent/Main.cpp +497 -0
- data/ext/common/agents/HelperAgent/RequestHandler.cpp +283 -0
- data/ext/common/agents/HelperAgent/RequestHandler.h +2139 -0
- data/ext/common/agents/HelperAgent/ScgiRequestParser.h +451 -0
- data/ext/common/{LoggingAgent → agents/LoggingAgent}/DataStoreId.h +1 -1
- data/ext/common/{LoggingAgent → agents/LoggingAgent}/FilterSupport.cpp +1 -1
- data/ext/common/{LoggingAgent → agents/LoggingAgent}/FilterSupport.h +0 -0
- data/ext/common/{LoggingAgent → agents/LoggingAgent}/LoggingServer.h +18 -16
- data/ext/common/{LoggingAgent → agents/LoggingAgent}/Main.cpp +15 -13
- data/ext/common/{LoggingAgent → agents/LoggingAgent}/RemoteSender.h +6 -6
- data/ext/common/agents/SpawnPreparer.cpp +127 -0
- data/ext/common/{Watchdog.cpp → agents/Watchdog/Main.cpp} +63 -25
- data/ext/libeio/Changes +72 -0
- data/ext/{google/COPYING → libeio/LICENSE} +17 -9
- data/ext/libeio/Makefile.am +15 -0
- data/ext/libeio/Makefile.in +694 -0
- data/ext/libeio/aclocal.m4 +9418 -0
- data/ext/libeio/autogen.sh +3 -0
- data/ext/libeio/config.guess +1501 -0
- data/ext/libeio/config.h.in +136 -0
- data/ext/libeio/config.sub +1705 -0
- data/ext/libeio/configure +14822 -0
- data/ext/libeio/configure.ac +22 -0
- data/ext/libeio/demo.c +194 -0
- data/ext/libeio/ecb.h +457 -0
- data/ext/libeio/eio.c +2816 -0
- data/ext/libeio/eio.h +411 -0
- data/ext/libeio/install-sh +520 -0
- data/ext/libeio/libeio.m4 +211 -0
- data/ext/libeio/ltmain.sh +9636 -0
- data/ext/libeio/missing +376 -0
- data/ext/libeio/xthread.h +166 -0
- data/ext/libev/Changes +125 -7
- data/ext/libev/Makefile.am +5 -3
- data/ext/libev/Makefile.in +209 -120
- data/ext/libev/aclocal.m4 +6027 -4619
- data/ext/libev/autogen.sh +1 -4
- data/ext/libev/config.h.in +11 -7
- data/ext/libev/configure +7312 -14993
- data/ext/libev/configure.ac +12 -5
- data/ext/libev/depcomp +630 -0
- data/ext/libev/ev++.h +48 -32
- data/ext/libev/ev.c +1173 -391
- data/ext/libev/ev.h +315 -181
- data/ext/libev/ev_epoll.c +66 -15
- data/ext/libev/ev_kqueue.c +20 -18
- data/ext/libev/ev_poll.c +27 -23
- data/ext/libev/ev_port.c +39 -19
- data/ext/libev/ev_select.c +23 -17
- data/ext/libev/ev_vars.h +25 -8
- data/ext/libev/ev_win32.c +6 -6
- data/ext/libev/ev_wrap.h +22 -2
- data/ext/libev/event.c +18 -17
- data/ext/libev/event.h +16 -4
- data/ext/libev/libev.m4 +10 -6
- data/ext/libev/ltmain.sh +7353 -5811
- data/ext/nginx/Configuration.c +74 -42
- data/ext/nginx/Configuration.h +3 -5
- data/ext/nginx/ContentHandler.c +26 -83
- data/ext/nginx/ContentHandler.h +1 -1
- data/ext/nginx/config +13 -9
- data/ext/nginx/ngx_http_passenger_module.c +3 -7
- data/ext/oxt/detail/backtrace_enabled.hpp +5 -102
- data/ext/oxt/detail/context.hpp +90 -0
- data/ext/oxt/detail/spin_lock_darwin.hpp +4 -0
- data/ext/oxt/detail/spin_lock_gcc_x86.hpp +4 -0
- data/ext/oxt/detail/spin_lock_pthreads.hpp +14 -0
- data/ext/oxt/detail/tracable_exception_enabled.hpp +2 -2
- data/ext/oxt/dynamic_thread_group.hpp +27 -1
- data/ext/oxt/implementation.cpp +415 -0
- data/ext/oxt/{thread.cpp → initialize.hpp} +13 -6
- data/ext/oxt/macros.hpp +32 -1
- data/ext/oxt/spin_lock.hpp +6 -11
- data/ext/oxt/system_calls.cpp +204 -16
- data/ext/oxt/system_calls.hpp +85 -45
- data/ext/oxt/thread.hpp +13 -117
- data/ext/ruby/passenger_native_support.c +82 -237
- data/helper-scripts/backtrace-sanitizer.rb +114 -0
- data/helper-scripts/classic-rails-loader.rb +135 -0
- data/helper-scripts/classic-rails-preloader.rb +161 -0
- data/helper-scripts/node-loader.js +314 -0
- data/helper-scripts/rack-loader.rb +104 -0
- data/helper-scripts/rack-preloader.rb +132 -0
- data/helper-scripts/wsgi-loader.py +231 -0
- data/helper-scripts/wsgi-preloader.py +1 -0
- data/lib/phusion_passenger.rb +159 -61
- data/lib/phusion_passenger/abstract_installer.rb +182 -87
- data/lib/phusion_passenger/admin_tools/server_instance.rb +25 -19
- data/lib/phusion_passenger/analytics_logger.rb +5 -4
- data/lib/phusion_passenger/classic_rails/{request_handler.rb → thread_handler_extension.rb} +4 -40
- data/lib/phusion_passenger/classic_rails_extensions/init.rb +5 -3
- data/lib/phusion_passenger/common_library.rb +441 -0
- data/lib/phusion_passenger/console_text_template.rb +4 -16
- data/lib/phusion_passenger/constants.rb +1 -8
- data/lib/phusion_passenger/debug_logging.rb +5 -2
- data/lib/phusion_passenger/dependencies.rb +51 -13
- data/lib/phusion_passenger/loader_shared_helpers.rb +318 -0
- data/lib/phusion_passenger/message_channel.rb +3 -47
- data/lib/phusion_passenger/message_client.rb +2 -2
- data/lib/phusion_passenger/native_support.rb +36 -15
- data/lib/phusion_passenger/packaging.rb +8 -11
- data/lib/phusion_passenger/platform_info.rb +25 -17
- data/lib/phusion_passenger/platform_info/apache.rb +10 -7
- data/lib/phusion_passenger/platform_info/binary_compatibility.rb +10 -30
- data/lib/phusion_passenger/platform_info/compiler.rb +93 -34
- data/lib/phusion_passenger/platform_info/ruby.rb +37 -97
- data/lib/phusion_passenger/preloader_shared_helpers.rb +121 -0
- data/lib/phusion_passenger/public_api.rb +1 -4
- data/lib/phusion_passenger/rack/{request_handler.rb → thread_handler_extension.rb} +14 -63
- data/lib/phusion_passenger/rails3_extensions/init.rb +9 -8
- data/lib/phusion_passenger/request_handler.rb +500 -0
- data/lib/phusion_passenger/request_handler/thread_handler.rb +360 -0
- data/lib/phusion_passenger/ruby_core_enhancements.rb +142 -0
- data/lib/phusion_passenger/standalone/command.rb +36 -15
- data/lib/phusion_passenger/standalone/package_runtime_command.rb +16 -8
- data/lib/phusion_passenger/standalone/runtime_installer.rb +169 -72
- data/lib/phusion_passenger/standalone/start_command.rb +44 -39
- data/lib/phusion_passenger/standalone/utils.rb +5 -5
- data/lib/phusion_passenger/utils.rb +35 -914
- data/lib/phusion_passenger/utils/ansi_colors.rb +59 -0
- data/lib/phusion_passenger/utils/file_system_watcher.rb +1 -1
- data/lib/phusion_passenger/utils/robust_interruption.rb +134 -0
- data/lib/phusion_passenger/utils/tee_input.rb +174 -0
- data/lib/phusion_passenger/utils/tmpio.rb +33 -0
- data/lib/phusion_passenger/utils/unseekable_socket.rb +6 -0
- data/resources/mime.types +5 -1
- data/{lib/phusion_passenger/templates → resources}/standalone_default_root/index.html +0 -0
- data/{lib/phusion_passenger → resources}/templates/apache2/apache_must_be_compiled_with_compatible_mpm.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/apache2/config_snippets.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/apache2/deployment_example.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/apache2/no_write_permission_to_passenger_root.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/apache2/possible_solutions_for_compilation_and_installation_problems.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/apache2/run_installer_as_root.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/apache2/welcome.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/error_layout.css +6 -0
- data/resources/templates/error_layout.html.template +89 -0
- data/resources/templates/general_error.html.template +1 -0
- data/resources/templates/general_error_with_html.html.template +1 -0
- data/{lib/phusion_passenger → resources}/templates/nginx/ask_for_extra_configure_flags.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/nginx/cannot_write_to_dir.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/nginx/config_snippets.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/nginx/config_snippets_inserted.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/nginx/confirm_extra_configure_flags.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/nginx/deployment_example.txt.erb +0 -0
- data/resources/templates/nginx/not_available_when_natively_packaged.txt.erb +8 -0
- data/{lib/phusion_passenger → resources}/templates/nginx/pcre_could_not_be_downloaded.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/nginx/pcre_could_not_be_extracted.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/nginx/possible_solutions_for_compilation_and_installation_problems.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/nginx/possible_solutions_for_download_and_extraction_problems.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/nginx/query_download_and_install.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/nginx/run_installer_as_root.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/nginx/welcome.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/standalone/cannot_write_to_dir.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/standalone/config.erb +26 -5
- data/{lib/phusion_passenger → resources}/templates/standalone/possible_solutions_for_download_and_extraction_problems.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/standalone/run_installer_as_root.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/standalone/welcome.txt.erb +0 -0
- data/resources/templates/undisclosed_error.html.template +25 -0
- data/test/config.json.example +42 -0
- data/test/cxx/ApplicationPool2/DirectSpawnerTest.cpp +86 -0
- data/test/cxx/ApplicationPool2/OptionsTest.cpp +44 -0
- data/test/cxx/ApplicationPool2/PoolTest.cpp +1234 -0
- data/test/cxx/ApplicationPool2/ProcessTest.cpp +131 -0
- data/test/cxx/ApplicationPool2/SmartSpawnerTest.cpp +229 -0
- data/test/cxx/ApplicationPool2/SpawnerTestCases.cpp +744 -0
- data/test/cxx/BufferedIOTest.cpp +7 -7
- data/test/cxx/CxxTestMain.cpp +65 -2
- data/test/cxx/FileBackedPipeTest.cpp +626 -0
- data/test/cxx/FileChangeCheckerTest.cpp +20 -18
- data/test/cxx/FilterSupportTest.cpp +5 -5
- data/test/cxx/IOUtilsTest.cpp +11 -4
- data/test/cxx/MessageReadersWritersTest.cpp +1 -1
- data/test/cxx/MessageServerTest.cpp +31 -30
- data/test/cxx/RequestHandlerTest.cpp +777 -0
- data/test/cxx/ScgiRequestParserTest.cpp +36 -16
- data/test/cxx/ServerInstanceDirTest.cpp +1 -1
- data/test/cxx/StringMapTest.cpp +61 -0
- data/test/cxx/TemplateTest.cpp +118 -0
- data/test/cxx/TestSupport.cpp +25 -68
- data/test/cxx/TestSupport.h +81 -41
- data/test/cxx/{LoggingTest.cpp → UnionStationTest.cpp} +79 -74
- data/test/cxx/UtilsTest.cpp +59 -5
- data/test/integration_tests/apache2_tests.rb +2 -2
- data/test/integration_tests/nginx_tests.rb +1 -1
- data/test/integration_tests/spec_helper.rb +7 -5
- data/test/oxt/oxt_test_main.cpp +2 -0
- data/test/oxt/syscall_interruption_test.cpp +1 -0
- data/test/ruby/classic_rails/loader_spec.rb +48 -0
- data/test/ruby/classic_rails/preloader_spec.rb +54 -0
- data/test/ruby/rack/loader_spec.rb +62 -0
- data/test/ruby/rack/preloader_spec.rb +74 -0
- data/test/ruby/{abstract_request_handler_spec.rb → request_handler_spec.rb} +31 -68
- data/test/ruby/shared/loader_spec.rb +241 -0
- data/test/ruby/shared/rails/analytics_logging_extensions_spec.rb +141 -182
- data/test/ruby/shared/ruby_loader_spec.rb +55 -0
- data/test/ruby/spec_helper.rb +8 -53
- data/test/ruby/utils/file_system_watcher_spec.rb +9 -1
- data/test/ruby/utils_spec.rb +10 -683
- data/test/stub/rack/config.ru +28 -3
- data/test/stub/rack/start.rb +47 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/Rakefile +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/app/controllers/application_controller.rb +0 -2
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/app/controllers/bar_controller_1.rb +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/app/controllers/bar_controller_2.rb +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/app/controllers/foo_controller.rb +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/app/helpers/application_helper.rb +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/config/boot.rb +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/config/database.yml +3 -3
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/config/environment.rb +5 -2
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/config/environments/development.rb +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/config/environments/production.rb +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/config/environments/staging.rb +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/config/initializers/inflections.rb +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/config/initializers/mime_types.rb +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/config/routes.rb +1 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/about +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/console +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/dbconsole +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/destroy +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/generate +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/performance/benchmarker +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/performance/profiler +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/performance/request +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/plugin +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/process/inspector +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/process/reaper +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/process/spawner +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/runner +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/server +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/Gemfile +0 -0
- data/test/stub/rails3.0/Gemfile.lock +80 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/Rakefile +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/app/controllers/application_controller.rb +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/app/helpers/application_helper.rb +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/app/views/layouts/application.html.erb +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/config.ru +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/application.rb +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/boot.rb +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/database.yml +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/environment.rb +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/environments/development.rb +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/environments/production.rb +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/environments/test.rb +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/initializers/backtrace_silencers.rb +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/initializers/inflections.rb +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/initializers/mime_types.rb +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/initializers/passenger.rb +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/initializers/secret_token.rb +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/initializers/session_store.rb +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/locales/en.yml +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/routes.rb +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/db/seeds.rb +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/doc/README_FOR_APP +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/public/404.html +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/public/422.html +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/public/500.html +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/public/favicon.ico +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/public/index.html +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/public/robots.txt +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/script/rails +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/test/performance/browsing_test.rb +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/test/test_helper.rb +0 -0
- data/test/stub/start_error.pl +24 -0
- data/test/stub/wsgi/passenger_wsgi.py +71 -3
- data/test/support/apache2_controller.rb +2 -2
- data/test/support/placebo-preloader.rb +88 -0
- data/test/support/test_helper.rb +1 -14
- data/test/tut/tut.h +11 -4
- metadata +590 -326
- data.tar.gz.asc +0 -12
- data/PACKAGING.TXT +0 -25
- data/build/config.rb +0 -46
- data/ext/apache2/HelperAgent.cpp +0 -364
- data/ext/boost/call_traits.hpp +0 -24
- data/ext/boost/detail/call_traits.hpp +0 -164
- data/ext/common/AbstractSpawnManager.h +0 -110
- data/ext/common/AgentBase.cpp +0 -432
- data/ext/common/ApplicationPool/Client.h +0 -788
- data/ext/common/ApplicationPool/Interface.h +0 -295
- data/ext/common/ApplicationPool/Pool.h +0 -1327
- data/ext/common/ApplicationPool/Server.h +0 -479
- data/ext/common/MessageChannel.h +0 -494
- data/ext/common/PoolOptions.h +0 -518
- data/ext/common/Process.h +0 -253
- data/ext/common/Session.h +0 -436
- data/ext/common/SpawnManager.h +0 -611
- data/ext/google/ChangeLog +0 -167
- data/ext/google/dense_hash_map +0 -310
- data/ext/google/dense_hash_set +0 -287
- data/ext/google/sparse_hash_map +0 -294
- data/ext/google/sparse_hash_set +0 -275
- data/ext/google/sparsehash/densehashtable.h +0 -1062
- data/ext/google/sparsehash/sparseconfig.h +0 -55
- data/ext/google/sparsehash/sparsehashtable.h +0 -1015
- data/ext/google/sparsetable +0 -1468
- data/ext/google/type_traits.h +0 -250
- data/ext/nginx/HelperAgent.cpp +0 -1355
- data/ext/nginx/ScgiRequestParser.h +0 -375
- data/ext/oxt/backtrace.cpp +0 -185
- data/ext/oxt/tracable_exception.cpp +0 -89
- data/helper-scripts/passenger-spawn-server +0 -106
- data/lib/phusion_passenger/abstract_request_handler.rb +0 -766
- data/lib/phusion_passenger/abstract_server.rb +0 -372
- data/lib/phusion_passenger/abstract_server_collection.rb +0 -335
- data/lib/phusion_passenger/app_process.rb +0 -174
- data/lib/phusion_passenger/classic_rails/application_spawner.rb +0 -344
- data/lib/phusion_passenger/classic_rails/framework_spawner.rb +0 -311
- data/lib/phusion_passenger/exceptions.rb +0 -103
- data/lib/phusion_passenger/html_template.rb +0 -107
- data/lib/phusion_passenger/rack/application_spawner.rb +0 -231
- data/lib/phusion_passenger/spawn_manager.rb +0 -359
- data/lib/phusion_passenger/templates/app_exited_during_initialization.html.erb +0 -38
- data/lib/phusion_passenger/templates/app_init_error.html.erb +0 -64
- data/lib/phusion_passenger/templates/database_error.html.erb +0 -66
- data/lib/phusion_passenger/templates/error_layout.html.erb +0 -39
- data/lib/phusion_passenger/templates/framework_init_error.html.erb +0 -39
- data/lib/phusion_passenger/templates/general_error.html.erb +0 -22
- data/lib/phusion_passenger/templates/load_error.html.erb +0 -46
- data/lib/phusion_passenger/templates/version_not_found.html.erb +0 -34
- data/lib/phusion_passenger/utils/rewindable_input.rb +0 -125
- data/lib/phusion_passenger/wsgi/application_spawner.rb +0 -108
- data/test/config.yml.example +0 -41
- data/test/cxx/ApplicationPool_PoolTest.cpp +0 -33
- data/test/cxx/ApplicationPool_PoolTestCases.cpp +0 -1029
- data/test/cxx/ApplicationPool_ServerTest.cpp +0 -308
- data/test/cxx/ApplicationPool_Server_PoolTest.cpp +0 -80
- data/test/cxx/MessageChannelTest.cpp +0 -557
- data/test/cxx/PoolOptionsTest.cpp +0 -116
- data/test/cxx/SpawnManagerTest.cpp +0 -161
- data/test/ruby/abstract_server_collection_spec.rb +0 -247
- data/test/ruby/abstract_server_spec.rb +0 -61
- data/test/ruby/app_process_spec.rb +0 -43
- data/test/ruby/classic_rails/application_spawner_spec.rb +0 -89
- data/test/ruby/classic_rails/framework_spawner_spec.rb +0 -92
- data/test/ruby/rack/application_spawner_spec.rb +0 -116
- data/test/ruby/shared/abstract_server_spec.rb +0 -23
- data/test/ruby/shared/spawners/classic_rails/framework_spawner_spec.rb +0 -38
- data/test/ruby/shared/spawners/classic_rails/lack_of_rails_gem_version_spec.rb +0 -19
- data/test/ruby/shared/spawners/classic_rails/spawner_spec.rb +0 -15
- data/test/ruby/shared/spawners/non_preloading_spawner_spec.rb +0 -27
- data/test/ruby/shared/spawners/preloading_spawner_spec.rb +0 -29
- data/test/ruby/shared/spawners/reload_all_spec.rb +0 -36
- data/test/ruby/shared/spawners/reload_single_spec.rb +0 -52
- data/test/ruby/shared/spawners/spawn_server_spec.rb +0 -28
- data/test/ruby/shared/spawners/spawner_spec.rb +0 -273
- data/test/ruby/shared/utils/pseudo_io_spec.rb +0 -60
- data/test/ruby/spawn_manager_spec.rb +0 -134
- data/test/ruby/wsgi/application_spawner_spec.rb +0 -50
- data/test/stub/message_channel.rb +0 -11
- data/test/stub/message_channel_2.rb +0 -12
- data/test/stub/message_channel_3.rb +0 -19
- data/test/stub/rails_apps/3.0/empty/Gemfile.lock +0 -73
- data/test/stub/spawn_server.rb +0 -22
- metadata.gz.asc +0 -12
@@ -0,0 +1,1070 @@
|
|
1
|
+
// math_fwd.hpp
|
2
|
+
|
3
|
+
// TODO revise completely for new distribution classes.
|
4
|
+
|
5
|
+
// Copyright Paul A. Bristow 2006.
|
6
|
+
// Copyright John Maddock 2006.
|
7
|
+
|
8
|
+
// Use, modification and distribution are subject to the
|
9
|
+
// Boost Software License, Version 1.0.
|
10
|
+
// (See accompanying file LICENSE_1_0.txt
|
11
|
+
// or copy at http://www.boost.org/LICENSE_1_0.txt)
|
12
|
+
|
13
|
+
// Omnibus list of forward declarations of math special functions.
|
14
|
+
|
15
|
+
// IT = Integer type.
|
16
|
+
// RT = Real type (built-in floating-point types, float, double, long double) & User Defined Types
|
17
|
+
// AT = Integer or Real type
|
18
|
+
|
19
|
+
#ifndef BOOST_MATH_SPECIAL_MATH_FWD_HPP
|
20
|
+
#define BOOST_MATH_SPECIAL_MATH_FWD_HPP
|
21
|
+
|
22
|
+
#ifdef _MSC_VER
|
23
|
+
#pragma once
|
24
|
+
#endif
|
25
|
+
|
26
|
+
#include <boost/math/special_functions/detail/round_fwd.hpp>
|
27
|
+
#include <boost/math/tools/promotion.hpp> // for argument promotion.
|
28
|
+
#include <boost/math/policies/policy.hpp>
|
29
|
+
#include <boost/mpl/comparison.hpp>
|
30
|
+
#include <boost/config/no_tr1/complex.hpp>
|
31
|
+
|
32
|
+
#define BOOST_NO_MACRO_EXPAND /**/
|
33
|
+
|
34
|
+
namespace boost
|
35
|
+
{
|
36
|
+
namespace math
|
37
|
+
{ // Math functions (in roughly alphabetic order).
|
38
|
+
|
39
|
+
// Beta functions.
|
40
|
+
template <class RT1, class RT2>
|
41
|
+
typename tools::promote_args<RT1, RT2>::type
|
42
|
+
beta(RT1 a, RT2 b); // Beta function (2 arguments).
|
43
|
+
|
44
|
+
template <class RT1, class RT2, class A>
|
45
|
+
typename tools::promote_args<RT1, RT2, A>::type
|
46
|
+
beta(RT1 a, RT2 b, A x); // Beta function (3 arguments).
|
47
|
+
|
48
|
+
template <class RT1, class RT2, class RT3, class Policy>
|
49
|
+
typename tools::promote_args<RT1, RT2, RT3>::type
|
50
|
+
beta(RT1 a, RT2 b, RT3 x, const Policy& pol); // Beta function (3 arguments).
|
51
|
+
|
52
|
+
template <class RT1, class RT2, class RT3>
|
53
|
+
typename tools::promote_args<RT1, RT2, RT3>::type
|
54
|
+
betac(RT1 a, RT2 b, RT3 x);
|
55
|
+
|
56
|
+
template <class RT1, class RT2, class RT3, class Policy>
|
57
|
+
typename tools::promote_args<RT1, RT2, RT3>::type
|
58
|
+
betac(RT1 a, RT2 b, RT3 x, const Policy& pol);
|
59
|
+
|
60
|
+
template <class RT1, class RT2, class RT3>
|
61
|
+
typename tools::promote_args<RT1, RT2, RT3>::type
|
62
|
+
ibeta(RT1 a, RT2 b, RT3 x); // Incomplete beta function.
|
63
|
+
|
64
|
+
template <class RT1, class RT2, class RT3, class Policy>
|
65
|
+
typename tools::promote_args<RT1, RT2, RT3>::type
|
66
|
+
ibeta(RT1 a, RT2 b, RT3 x, const Policy& pol); // Incomplete beta function.
|
67
|
+
|
68
|
+
template <class RT1, class RT2, class RT3>
|
69
|
+
typename tools::promote_args<RT1, RT2, RT3>::type
|
70
|
+
ibetac(RT1 a, RT2 b, RT3 x); // Incomplete beta complement function.
|
71
|
+
|
72
|
+
template <class RT1, class RT2, class RT3, class Policy>
|
73
|
+
typename tools::promote_args<RT1, RT2, RT3>::type
|
74
|
+
ibetac(RT1 a, RT2 b, RT3 x, const Policy& pol); // Incomplete beta complement function.
|
75
|
+
|
76
|
+
template <class T1, class T2, class T3, class T4>
|
77
|
+
typename tools::promote_args<T1, T2, T3, T4>::type
|
78
|
+
ibeta_inv(T1 a, T2 b, T3 p, T4* py);
|
79
|
+
|
80
|
+
template <class T1, class T2, class T3, class T4, class Policy>
|
81
|
+
typename tools::promote_args<T1, T2, T3, T4>::type
|
82
|
+
ibeta_inv(T1 a, T2 b, T3 p, T4* py, const Policy& pol);
|
83
|
+
|
84
|
+
template <class RT1, class RT2, class RT3>
|
85
|
+
typename tools::promote_args<RT1, RT2, RT3>::type
|
86
|
+
ibeta_inv(RT1 a, RT2 b, RT3 p); // Incomplete beta inverse function.
|
87
|
+
|
88
|
+
template <class RT1, class RT2, class RT3, class Policy>
|
89
|
+
typename tools::promote_args<RT1, RT2, RT3>::type
|
90
|
+
ibeta_inv(RT1 a, RT2 b, RT3 p, const Policy&); // Incomplete beta inverse function.
|
91
|
+
|
92
|
+
template <class RT1, class RT2, class RT3>
|
93
|
+
typename tools::promote_args<RT1, RT2, RT3>::type
|
94
|
+
ibeta_inva(RT1 a, RT2 b, RT3 p); // Incomplete beta inverse function.
|
95
|
+
|
96
|
+
template <class RT1, class RT2, class RT3, class Policy>
|
97
|
+
typename tools::promote_args<RT1, RT2, RT3>::type
|
98
|
+
ibeta_inva(RT1 a, RT2 b, RT3 p, const Policy&); // Incomplete beta inverse function.
|
99
|
+
|
100
|
+
template <class RT1, class RT2, class RT3>
|
101
|
+
typename tools::promote_args<RT1, RT2, RT3>::type
|
102
|
+
ibeta_invb(RT1 a, RT2 b, RT3 p); // Incomplete beta inverse function.
|
103
|
+
|
104
|
+
template <class RT1, class RT2, class RT3, class Policy>
|
105
|
+
typename tools::promote_args<RT1, RT2, RT3>::type
|
106
|
+
ibeta_invb(RT1 a, RT2 b, RT3 p, const Policy&); // Incomplete beta inverse function.
|
107
|
+
|
108
|
+
template <class T1, class T2, class T3, class T4>
|
109
|
+
typename tools::promote_args<T1, T2, T3, T4>::type
|
110
|
+
ibetac_inv(T1 a, T2 b, T3 q, T4* py);
|
111
|
+
|
112
|
+
template <class T1, class T2, class T3, class T4, class Policy>
|
113
|
+
typename tools::promote_args<T1, T2, T3, T4>::type
|
114
|
+
ibetac_inv(T1 a, T2 b, T3 q, T4* py, const Policy& pol);
|
115
|
+
|
116
|
+
template <class RT1, class RT2, class RT3>
|
117
|
+
typename tools::promote_args<RT1, RT2, RT3>::type
|
118
|
+
ibetac_inv(RT1 a, RT2 b, RT3 q); // Incomplete beta complement inverse function.
|
119
|
+
|
120
|
+
template <class RT1, class RT2, class RT3, class Policy>
|
121
|
+
typename tools::promote_args<RT1, RT2, RT3>::type
|
122
|
+
ibetac_inv(RT1 a, RT2 b, RT3 q, const Policy&); // Incomplete beta complement inverse function.
|
123
|
+
|
124
|
+
template <class RT1, class RT2, class RT3>
|
125
|
+
typename tools::promote_args<RT1, RT2, RT3>::type
|
126
|
+
ibetac_inva(RT1 a, RT2 b, RT3 q); // Incomplete beta complement inverse function.
|
127
|
+
|
128
|
+
template <class RT1, class RT2, class RT3, class Policy>
|
129
|
+
typename tools::promote_args<RT1, RT2, RT3>::type
|
130
|
+
ibetac_inva(RT1 a, RT2 b, RT3 q, const Policy&); // Incomplete beta complement inverse function.
|
131
|
+
|
132
|
+
template <class RT1, class RT2, class RT3>
|
133
|
+
typename tools::promote_args<RT1, RT2, RT3>::type
|
134
|
+
ibetac_invb(RT1 a, RT2 b, RT3 q); // Incomplete beta complement inverse function.
|
135
|
+
|
136
|
+
template <class RT1, class RT2, class RT3, class Policy>
|
137
|
+
typename tools::promote_args<RT1, RT2, RT3>::type
|
138
|
+
ibetac_invb(RT1 a, RT2 b, RT3 q, const Policy&); // Incomplete beta complement inverse function.
|
139
|
+
|
140
|
+
template <class RT1, class RT2, class RT3>
|
141
|
+
typename tools::promote_args<RT1, RT2, RT3>::type
|
142
|
+
ibeta_derivative(RT1 a, RT2 b, RT3 x); // derivative of incomplete beta
|
143
|
+
|
144
|
+
template <class RT1, class RT2, class RT3, class Policy>
|
145
|
+
typename tools::promote_args<RT1, RT2, RT3>::type
|
146
|
+
ibeta_derivative(RT1 a, RT2 b, RT3 x, const Policy& pol); // derivative of incomplete beta
|
147
|
+
|
148
|
+
// erf & erfc error functions.
|
149
|
+
template <class RT> // Error function.
|
150
|
+
typename tools::promote_args<RT>::type erf(RT z);
|
151
|
+
template <class RT, class Policy> // Error function.
|
152
|
+
typename tools::promote_args<RT>::type erf(RT z, const Policy&);
|
153
|
+
|
154
|
+
template <class RT>// Error function complement.
|
155
|
+
typename tools::promote_args<RT>::type erfc(RT z);
|
156
|
+
template <class RT, class Policy>// Error function complement.
|
157
|
+
typename tools::promote_args<RT>::type erfc(RT z, const Policy&);
|
158
|
+
|
159
|
+
template <class RT>// Error function inverse.
|
160
|
+
typename tools::promote_args<RT>::type erf_inv(RT z);
|
161
|
+
template <class RT, class Policy>// Error function inverse.
|
162
|
+
typename tools::promote_args<RT>::type erf_inv(RT z, const Policy& pol);
|
163
|
+
|
164
|
+
template <class RT>// Error function complement inverse.
|
165
|
+
typename tools::promote_args<RT>::type erfc_inv(RT z);
|
166
|
+
template <class RT, class Policy>// Error function complement inverse.
|
167
|
+
typename tools::promote_args<RT>::type erfc_inv(RT z, const Policy& pol);
|
168
|
+
|
169
|
+
// Polynomials:
|
170
|
+
template <class T1, class T2, class T3>
|
171
|
+
typename tools::promote_args<T1, T2, T3>::type
|
172
|
+
legendre_next(unsigned l, T1 x, T2 Pl, T3 Plm1);
|
173
|
+
|
174
|
+
template <class T>
|
175
|
+
typename tools::promote_args<T>::type
|
176
|
+
legendre_p(int l, T x);
|
177
|
+
|
178
|
+
template <class T, class Policy>
|
179
|
+
typename tools::promote_args<T>::type
|
180
|
+
legendre_p(int l, T x, const Policy& pol);
|
181
|
+
|
182
|
+
template <class T>
|
183
|
+
typename tools::promote_args<T>::type
|
184
|
+
legendre_q(unsigned l, T x);
|
185
|
+
|
186
|
+
template <class T, class Policy>
|
187
|
+
typename tools::promote_args<T>::type
|
188
|
+
legendre_q(unsigned l, T x, const Policy& pol);
|
189
|
+
|
190
|
+
template <class T1, class T2, class T3>
|
191
|
+
typename tools::promote_args<T1, T2, T3>::type
|
192
|
+
legendre_next(unsigned l, unsigned m, T1 x, T2 Pl, T3 Plm1);
|
193
|
+
|
194
|
+
template <class T>
|
195
|
+
typename tools::promote_args<T>::type
|
196
|
+
legendre_p(int l, int m, T x);
|
197
|
+
|
198
|
+
template <class T, class Policy>
|
199
|
+
typename tools::promote_args<T>::type
|
200
|
+
legendre_p(int l, int m, T x, const Policy& pol);
|
201
|
+
|
202
|
+
template <class T1, class T2, class T3>
|
203
|
+
typename tools::promote_args<T1, T2, T3>::type
|
204
|
+
laguerre_next(unsigned n, T1 x, T2 Ln, T3 Lnm1);
|
205
|
+
|
206
|
+
template <class T1, class T2, class T3>
|
207
|
+
typename tools::promote_args<T1, T2, T3>::type
|
208
|
+
laguerre_next(unsigned n, unsigned l, T1 x, T2 Pl, T3 Plm1);
|
209
|
+
|
210
|
+
template <class T>
|
211
|
+
typename tools::promote_args<T>::type
|
212
|
+
laguerre(unsigned n, T x);
|
213
|
+
|
214
|
+
template <class T, class Policy>
|
215
|
+
typename tools::promote_args<T>::type
|
216
|
+
laguerre(unsigned n, unsigned m, T x, const Policy& pol);
|
217
|
+
|
218
|
+
template <class T1, class T2>
|
219
|
+
struct laguerre_result
|
220
|
+
{
|
221
|
+
typedef typename mpl::if_<
|
222
|
+
policies::is_policy<T2>,
|
223
|
+
typename tools::promote_args<T1>::type,
|
224
|
+
typename tools::promote_args<T2>::type
|
225
|
+
>::type type;
|
226
|
+
};
|
227
|
+
|
228
|
+
template <class T1, class T2>
|
229
|
+
typename laguerre_result<T1, T2>::type
|
230
|
+
laguerre(unsigned n, T1 m, T2 x);
|
231
|
+
|
232
|
+
template <class T>
|
233
|
+
typename tools::promote_args<T>::type
|
234
|
+
hermite(unsigned n, T x);
|
235
|
+
|
236
|
+
template <class T, class Policy>
|
237
|
+
typename tools::promote_args<T>::type
|
238
|
+
hermite(unsigned n, T x, const Policy& pol);
|
239
|
+
|
240
|
+
template <class T1, class T2, class T3>
|
241
|
+
typename tools::promote_args<T1, T2, T3>::type
|
242
|
+
hermite_next(unsigned n, T1 x, T2 Hn, T3 Hnm1);
|
243
|
+
|
244
|
+
template <class T1, class T2>
|
245
|
+
std::complex<typename tools::promote_args<T1, T2>::type>
|
246
|
+
spherical_harmonic(unsigned n, int m, T1 theta, T2 phi);
|
247
|
+
|
248
|
+
template <class T1, class T2, class Policy>
|
249
|
+
std::complex<typename tools::promote_args<T1, T2>::type>
|
250
|
+
spherical_harmonic(unsigned n, int m, T1 theta, T2 phi, const Policy& pol);
|
251
|
+
|
252
|
+
template <class T1, class T2>
|
253
|
+
typename tools::promote_args<T1, T2>::type
|
254
|
+
spherical_harmonic_r(unsigned n, int m, T1 theta, T2 phi);
|
255
|
+
|
256
|
+
template <class T1, class T2, class Policy>
|
257
|
+
typename tools::promote_args<T1, T2>::type
|
258
|
+
spherical_harmonic_r(unsigned n, int m, T1 theta, T2 phi, const Policy& pol);
|
259
|
+
|
260
|
+
template <class T1, class T2>
|
261
|
+
typename tools::promote_args<T1, T2>::type
|
262
|
+
spherical_harmonic_i(unsigned n, int m, T1 theta, T2 phi);
|
263
|
+
|
264
|
+
template <class T1, class T2, class Policy>
|
265
|
+
typename tools::promote_args<T1, T2>::type
|
266
|
+
spherical_harmonic_i(unsigned n, int m, T1 theta, T2 phi, const Policy& pol);
|
267
|
+
|
268
|
+
// Elliptic integrals:
|
269
|
+
template <class T1, class T2, class T3>
|
270
|
+
typename tools::promote_args<T1, T2, T3>::type
|
271
|
+
ellint_rf(T1 x, T2 y, T3 z);
|
272
|
+
|
273
|
+
template <class T1, class T2, class T3, class Policy>
|
274
|
+
typename tools::promote_args<T1, T2, T3>::type
|
275
|
+
ellint_rf(T1 x, T2 y, T3 z, const Policy& pol);
|
276
|
+
|
277
|
+
template <class T1, class T2, class T3>
|
278
|
+
typename tools::promote_args<T1, T2, T3>::type
|
279
|
+
ellint_rd(T1 x, T2 y, T3 z);
|
280
|
+
|
281
|
+
template <class T1, class T2, class T3, class Policy>
|
282
|
+
typename tools::promote_args<T1, T2, T3>::type
|
283
|
+
ellint_rd(T1 x, T2 y, T3 z, const Policy& pol);
|
284
|
+
|
285
|
+
template <class T1, class T2>
|
286
|
+
typename tools::promote_args<T1, T2>::type
|
287
|
+
ellint_rc(T1 x, T2 y);
|
288
|
+
|
289
|
+
template <class T1, class T2, class Policy>
|
290
|
+
typename tools::promote_args<T1, T2>::type
|
291
|
+
ellint_rc(T1 x, T2 y, const Policy& pol);
|
292
|
+
|
293
|
+
template <class T1, class T2, class T3, class T4>
|
294
|
+
typename tools::promote_args<T1, T2, T3, T4>::type
|
295
|
+
ellint_rj(T1 x, T2 y, T3 z, T4 p);
|
296
|
+
|
297
|
+
template <class T1, class T2, class T3, class T4, class Policy>
|
298
|
+
typename tools::promote_args<T1, T2, T3, T4>::type
|
299
|
+
ellint_rj(T1 x, T2 y, T3 z, T4 p, const Policy& pol);
|
300
|
+
|
301
|
+
template <typename T>
|
302
|
+
typename tools::promote_args<T>::type ellint_2(T k);
|
303
|
+
|
304
|
+
template <class T1, class T2>
|
305
|
+
typename tools::promote_args<T1, T2>::type ellint_2(T1 k, T2 phi);
|
306
|
+
|
307
|
+
template <class T1, class T2, class Policy>
|
308
|
+
typename tools::promote_args<T1, T2>::type ellint_2(T1 k, T2 phi, const Policy& pol);
|
309
|
+
|
310
|
+
template <typename T>
|
311
|
+
typename tools::promote_args<T>::type ellint_1(T k);
|
312
|
+
|
313
|
+
template <class T1, class T2>
|
314
|
+
typename tools::promote_args<T1, T2>::type ellint_1(T1 k, T2 phi);
|
315
|
+
|
316
|
+
template <class T1, class T2, class Policy>
|
317
|
+
typename tools::promote_args<T1, T2>::type ellint_1(T1 k, T2 phi, const Policy& pol);
|
318
|
+
|
319
|
+
namespace detail{
|
320
|
+
|
321
|
+
template <class T, class U, class V>
|
322
|
+
struct ellint_3_result
|
323
|
+
{
|
324
|
+
typedef typename mpl::if_<
|
325
|
+
policies::is_policy<V>,
|
326
|
+
typename tools::promote_args<T, U>::type,
|
327
|
+
typename tools::promote_args<T, U, V>::type
|
328
|
+
>::type type;
|
329
|
+
};
|
330
|
+
|
331
|
+
} // namespace detail
|
332
|
+
|
333
|
+
|
334
|
+
template <class T1, class T2, class T3>
|
335
|
+
typename detail::ellint_3_result<T1, T2, T3>::type ellint_3(T1 k, T2 v, T3 phi);
|
336
|
+
|
337
|
+
template <class T1, class T2, class T3, class Policy>
|
338
|
+
typename tools::promote_args<T1, T2, T3>::type ellint_3(T1 k, T2 v, T3 phi, const Policy& pol);
|
339
|
+
|
340
|
+
template <class T1, class T2>
|
341
|
+
typename tools::promote_args<T1, T2>::type ellint_3(T1 k, T2 v);
|
342
|
+
|
343
|
+
// Factorial functions.
|
344
|
+
// Note: not for integral types, at present.
|
345
|
+
template <class RT>
|
346
|
+
struct max_factorial;
|
347
|
+
template <class RT>
|
348
|
+
RT factorial(unsigned int);
|
349
|
+
template <class RT, class Policy>
|
350
|
+
RT factorial(unsigned int, const Policy& pol);
|
351
|
+
template <class RT>
|
352
|
+
RT unchecked_factorial(unsigned int BOOST_MATH_APPEND_EXPLICIT_TEMPLATE_TYPE(RT));
|
353
|
+
template <class RT>
|
354
|
+
RT double_factorial(unsigned i);
|
355
|
+
template <class RT, class Policy>
|
356
|
+
RT double_factorial(unsigned i, const Policy& pol);
|
357
|
+
|
358
|
+
template <class RT>
|
359
|
+
typename tools::promote_args<RT>::type falling_factorial(RT x, unsigned n);
|
360
|
+
|
361
|
+
template <class RT, class Policy>
|
362
|
+
typename tools::promote_args<RT>::type falling_factorial(RT x, unsigned n, const Policy& pol);
|
363
|
+
|
364
|
+
template <class RT>
|
365
|
+
typename tools::promote_args<RT>::type rising_factorial(RT x, int n);
|
366
|
+
|
367
|
+
template <class RT, class Policy>
|
368
|
+
typename tools::promote_args<RT>::type rising_factorial(RT x, int n, const Policy& pol);
|
369
|
+
|
370
|
+
// Gamma functions.
|
371
|
+
template <class RT>
|
372
|
+
typename tools::promote_args<RT>::type tgamma(RT z);
|
373
|
+
|
374
|
+
template <class RT>
|
375
|
+
typename tools::promote_args<RT>::type tgamma1pm1(RT z);
|
376
|
+
|
377
|
+
template <class RT, class Policy>
|
378
|
+
typename tools::promote_args<RT>::type tgamma1pm1(RT z, const Policy& pol);
|
379
|
+
|
380
|
+
template <class RT1, class RT2>
|
381
|
+
typename tools::promote_args<RT1, RT2>::type tgamma(RT1 a, RT2 z);
|
382
|
+
|
383
|
+
template <class RT1, class RT2, class Policy>
|
384
|
+
typename tools::promote_args<RT1, RT2>::type tgamma(RT1 a, RT2 z, const Policy& pol);
|
385
|
+
|
386
|
+
template <class RT>
|
387
|
+
typename tools::promote_args<RT>::type lgamma(RT z, int* sign);
|
388
|
+
|
389
|
+
template <class RT, class Policy>
|
390
|
+
typename tools::promote_args<RT>::type lgamma(RT z, int* sign, const Policy& pol);
|
391
|
+
|
392
|
+
template <class RT>
|
393
|
+
typename tools::promote_args<RT>::type lgamma(RT x);
|
394
|
+
|
395
|
+
template <class RT, class Policy>
|
396
|
+
typename tools::promote_args<RT>::type lgamma(RT x, const Policy& pol);
|
397
|
+
|
398
|
+
template <class RT1, class RT2>
|
399
|
+
typename tools::promote_args<RT1, RT2>::type tgamma_lower(RT1 a, RT2 z);
|
400
|
+
|
401
|
+
template <class RT1, class RT2, class Policy>
|
402
|
+
typename tools::promote_args<RT1, RT2>::type tgamma_lower(RT1 a, RT2 z, const Policy&);
|
403
|
+
|
404
|
+
template <class RT1, class RT2>
|
405
|
+
typename tools::promote_args<RT1, RT2>::type gamma_q(RT1 a, RT2 z);
|
406
|
+
|
407
|
+
template <class RT1, class RT2, class Policy>
|
408
|
+
typename tools::promote_args<RT1, RT2>::type gamma_q(RT1 a, RT2 z, const Policy&);
|
409
|
+
|
410
|
+
template <class RT1, class RT2>
|
411
|
+
typename tools::promote_args<RT1, RT2>::type gamma_p(RT1 a, RT2 z);
|
412
|
+
|
413
|
+
template <class RT1, class RT2, class Policy>
|
414
|
+
typename tools::promote_args<RT1, RT2>::type gamma_p(RT1 a, RT2 z, const Policy&);
|
415
|
+
|
416
|
+
template <class T1, class T2>
|
417
|
+
typename tools::promote_args<T1, T2>::type tgamma_delta_ratio(T1 z, T2 delta);
|
418
|
+
|
419
|
+
template <class T1, class T2, class Policy>
|
420
|
+
typename tools::promote_args<T1, T2>::type tgamma_delta_ratio(T1 z, T2 delta, const Policy&);
|
421
|
+
|
422
|
+
template <class T1, class T2>
|
423
|
+
typename tools::promote_args<T1, T2>::type tgamma_ratio(T1 a, T2 b);
|
424
|
+
|
425
|
+
template <class T1, class T2, class Policy>
|
426
|
+
typename tools::promote_args<T1, T2>::type tgamma_ratio(T1 a, T2 b, const Policy&);
|
427
|
+
|
428
|
+
template <class T1, class T2>
|
429
|
+
typename tools::promote_args<T1, T2>::type gamma_p_derivative(T1 a, T2 x);
|
430
|
+
|
431
|
+
template <class T1, class T2, class Policy>
|
432
|
+
typename tools::promote_args<T1, T2>::type gamma_p_derivative(T1 a, T2 x, const Policy&);
|
433
|
+
|
434
|
+
// gamma inverse.
|
435
|
+
template <class T1, class T2>
|
436
|
+
typename tools::promote_args<T1, T2>::type gamma_p_inv(T1 a, T2 p);
|
437
|
+
|
438
|
+
template <class T1, class T2, class Policy>
|
439
|
+
typename tools::promote_args<T1, T2>::type gamma_p_inva(T1 a, T2 p, const Policy&);
|
440
|
+
|
441
|
+
template <class T1, class T2>
|
442
|
+
typename tools::promote_args<T1, T2>::type gamma_p_inva(T1 a, T2 p);
|
443
|
+
|
444
|
+
template <class T1, class T2, class Policy>
|
445
|
+
typename tools::promote_args<T1, T2>::type gamma_p_inv(T1 a, T2 p, const Policy&);
|
446
|
+
|
447
|
+
template <class T1, class T2>
|
448
|
+
typename tools::promote_args<T1, T2>::type gamma_q_inv(T1 a, T2 q);
|
449
|
+
|
450
|
+
template <class T1, class T2, class Policy>
|
451
|
+
typename tools::promote_args<T1, T2>::type gamma_q_inv(T1 a, T2 q, const Policy&);
|
452
|
+
|
453
|
+
template <class T1, class T2>
|
454
|
+
typename tools::promote_args<T1, T2>::type gamma_q_inva(T1 a, T2 q);
|
455
|
+
|
456
|
+
template <class T1, class T2, class Policy>
|
457
|
+
typename tools::promote_args<T1, T2>::type gamma_q_inva(T1 a, T2 q, const Policy&);
|
458
|
+
|
459
|
+
// digamma:
|
460
|
+
template <class T>
|
461
|
+
typename tools::promote_args<T>::type digamma(T x);
|
462
|
+
|
463
|
+
template <class T, class Policy>
|
464
|
+
typename tools::promote_args<T>::type digamma(T x, const Policy&);
|
465
|
+
|
466
|
+
// Hypotenuse function sqrt(x ^ 2 + y ^ 2).
|
467
|
+
template <class T1, class T2>
|
468
|
+
typename tools::promote_args<T1, T2>::type
|
469
|
+
hypot(T1 x, T2 y);
|
470
|
+
|
471
|
+
template <class T1, class T2, class Policy>
|
472
|
+
typename tools::promote_args<T1, T2>::type
|
473
|
+
hypot(T1 x, T2 y, const Policy&);
|
474
|
+
|
475
|
+
// cbrt - cube root.
|
476
|
+
template <class RT>
|
477
|
+
typename tools::promote_args<RT>::type cbrt(RT z);
|
478
|
+
|
479
|
+
template <class RT, class Policy>
|
480
|
+
typename tools::promote_args<RT>::type cbrt(RT z, const Policy&);
|
481
|
+
|
482
|
+
// log1p is log(x + 1)
|
483
|
+
template <class T>
|
484
|
+
typename tools::promote_args<T>::type log1p(T);
|
485
|
+
|
486
|
+
template <class T, class Policy>
|
487
|
+
typename tools::promote_args<T>::type log1p(T, const Policy&);
|
488
|
+
|
489
|
+
// log1pmx is log(x + 1) - x
|
490
|
+
template <class T>
|
491
|
+
typename tools::promote_args<T>::type log1pmx(T);
|
492
|
+
|
493
|
+
template <class T, class Policy>
|
494
|
+
typename tools::promote_args<T>::type log1pmx(T, const Policy&);
|
495
|
+
|
496
|
+
// Exp (x) minus 1 functions.
|
497
|
+
template <class T>
|
498
|
+
typename tools::promote_args<T>::type expm1(T);
|
499
|
+
|
500
|
+
template <class T, class Policy>
|
501
|
+
typename tools::promote_args<T>::type expm1(T, const Policy&);
|
502
|
+
|
503
|
+
// Power - 1
|
504
|
+
template <class T1, class T2>
|
505
|
+
typename tools::promote_args<T1, T2>::type
|
506
|
+
powm1(const T1 a, const T2 z);
|
507
|
+
|
508
|
+
template <class T1, class T2, class Policy>
|
509
|
+
typename tools::promote_args<T1, T2>::type
|
510
|
+
powm1(const T1 a, const T2 z, const Policy&);
|
511
|
+
|
512
|
+
// sqrt(1+x) - 1
|
513
|
+
template <class T>
|
514
|
+
typename tools::promote_args<T>::type sqrt1pm1(const T& val);
|
515
|
+
|
516
|
+
template <class T, class Policy>
|
517
|
+
typename tools::promote_args<T>::type sqrt1pm1(const T& val, const Policy&);
|
518
|
+
|
519
|
+
// sinus cardinals:
|
520
|
+
template <class T>
|
521
|
+
typename tools::promote_args<T>::type sinc_pi(T x);
|
522
|
+
|
523
|
+
template <class T, class Policy>
|
524
|
+
typename tools::promote_args<T>::type sinc_pi(T x, const Policy&);
|
525
|
+
|
526
|
+
template <class T>
|
527
|
+
typename tools::promote_args<T>::type sinhc_pi(T x);
|
528
|
+
|
529
|
+
template <class T, class Policy>
|
530
|
+
typename tools::promote_args<T>::type sinhc_pi(T x, const Policy&);
|
531
|
+
|
532
|
+
// inverse hyperbolics:
|
533
|
+
template<typename T>
|
534
|
+
typename tools::promote_args<T>::type asinh(T x);
|
535
|
+
|
536
|
+
template<typename T, class Policy>
|
537
|
+
typename tools::promote_args<T>::type asinh(T x, const Policy&);
|
538
|
+
|
539
|
+
template<typename T>
|
540
|
+
typename tools::promote_args<T>::type acosh(T x);
|
541
|
+
|
542
|
+
template<typename T, class Policy>
|
543
|
+
typename tools::promote_args<T>::type acosh(T x, const Policy&);
|
544
|
+
|
545
|
+
template<typename T>
|
546
|
+
typename tools::promote_args<T>::type atanh(T x);
|
547
|
+
|
548
|
+
template<typename T, class Policy>
|
549
|
+
typename tools::promote_args<T>::type atanh(T x, const Policy&);
|
550
|
+
|
551
|
+
namespace detail{
|
552
|
+
|
553
|
+
typedef mpl::int_<0> bessel_no_int_tag; // No integer optimisation possible.
|
554
|
+
typedef mpl::int_<1> bessel_maybe_int_tag; // Maybe integer optimisation.
|
555
|
+
typedef mpl::int_<2> bessel_int_tag; // Definite integer optimistaion.
|
556
|
+
|
557
|
+
template <class T1, class T2, class Policy>
|
558
|
+
struct bessel_traits
|
559
|
+
{
|
560
|
+
typedef typename tools::promote_args<
|
561
|
+
T1, T2
|
562
|
+
>::type result_type;
|
563
|
+
|
564
|
+
typedef typename policies::precision<result_type, Policy>::type precision_type;
|
565
|
+
|
566
|
+
typedef typename mpl::if_<
|
567
|
+
mpl::or_<
|
568
|
+
mpl::less_equal<precision_type, mpl::int_<0> >,
|
569
|
+
mpl::greater<precision_type, mpl::int_<64> > >,
|
570
|
+
bessel_no_int_tag,
|
571
|
+
typename mpl::if_<
|
572
|
+
is_integral<T1>,
|
573
|
+
bessel_int_tag,
|
574
|
+
bessel_maybe_int_tag
|
575
|
+
>::type
|
576
|
+
>::type optimisation_tag;
|
577
|
+
};
|
578
|
+
} // detail
|
579
|
+
|
580
|
+
// Bessel functions:
|
581
|
+
template <class T1, class T2, class Policy>
|
582
|
+
typename detail::bessel_traits<T1, T2, Policy>::result_type cyl_bessel_j(T1 v, T2 x, const Policy& pol);
|
583
|
+
|
584
|
+
template <class T1, class T2>
|
585
|
+
typename detail::bessel_traits<T1, T2, policies::policy<> >::result_type cyl_bessel_j(T1 v, T2 x);
|
586
|
+
|
587
|
+
template <class T, class Policy>
|
588
|
+
typename detail::bessel_traits<T, T, Policy>::result_type sph_bessel(unsigned v, T x, const Policy& pol);
|
589
|
+
|
590
|
+
template <class T>
|
591
|
+
typename detail::bessel_traits<T, T, policies::policy<> >::result_type sph_bessel(unsigned v, T x);
|
592
|
+
|
593
|
+
template <class T1, class T2, class Policy>
|
594
|
+
typename detail::bessel_traits<T1, T2, Policy>::result_type cyl_bessel_i(T1 v, T2 x, const Policy& pol);
|
595
|
+
|
596
|
+
template <class T1, class T2>
|
597
|
+
typename detail::bessel_traits<T1, T2, policies::policy<> >::result_type cyl_bessel_i(T1 v, T2 x);
|
598
|
+
|
599
|
+
template <class T1, class T2, class Policy>
|
600
|
+
typename detail::bessel_traits<T1, T2, Policy>::result_type cyl_bessel_k(T1 v, T2 x, const Policy& pol);
|
601
|
+
|
602
|
+
template <class T1, class T2>
|
603
|
+
typename detail::bessel_traits<T1, T2, policies::policy<> >::result_type cyl_bessel_k(T1 v, T2 x);
|
604
|
+
|
605
|
+
template <class T1, class T2, class Policy>
|
606
|
+
typename detail::bessel_traits<T1, T2, Policy>::result_type cyl_neumann(T1 v, T2 x, const Policy& pol);
|
607
|
+
|
608
|
+
template <class T1, class T2>
|
609
|
+
typename detail::bessel_traits<T1, T2, policies::policy<> >::result_type cyl_neumann(T1 v, T2 x);
|
610
|
+
|
611
|
+
template <class T, class Policy>
|
612
|
+
typename detail::bessel_traits<T, T, Policy>::result_type sph_neumann(unsigned v, T x, const Policy& pol);
|
613
|
+
|
614
|
+
template <class T>
|
615
|
+
typename detail::bessel_traits<T, T, policies::policy<> >::result_type sph_neumann(unsigned v, T x);
|
616
|
+
|
617
|
+
template <class T, class Policy>
|
618
|
+
typename tools::promote_args<T>::type sin_pi(T x, const Policy&);
|
619
|
+
|
620
|
+
template <class T>
|
621
|
+
typename tools::promote_args<T>::type sin_pi(T x);
|
622
|
+
|
623
|
+
template <class T, class Policy>
|
624
|
+
typename tools::promote_args<T>::type cos_pi(T x, const Policy&);
|
625
|
+
|
626
|
+
template <class T>
|
627
|
+
typename tools::promote_args<T>::type cos_pi(T x);
|
628
|
+
|
629
|
+
template <class T>
|
630
|
+
int fpclassify BOOST_NO_MACRO_EXPAND(T t);
|
631
|
+
|
632
|
+
template <class T>
|
633
|
+
bool isfinite BOOST_NO_MACRO_EXPAND(T z);
|
634
|
+
|
635
|
+
template <class T>
|
636
|
+
bool isinf BOOST_NO_MACRO_EXPAND(T t);
|
637
|
+
|
638
|
+
template <class T>
|
639
|
+
bool isnan BOOST_NO_MACRO_EXPAND(T t);
|
640
|
+
|
641
|
+
template <class T>
|
642
|
+
bool isnormal BOOST_NO_MACRO_EXPAND(T t);
|
643
|
+
|
644
|
+
template<class T>
|
645
|
+
int signbit BOOST_NO_MACRO_EXPAND(T x);
|
646
|
+
|
647
|
+
template <class T>
|
648
|
+
int sign BOOST_NO_MACRO_EXPAND(const T& z);
|
649
|
+
|
650
|
+
template <class T>
|
651
|
+
T copysign BOOST_NO_MACRO_EXPAND(const T& x, const T& y);
|
652
|
+
|
653
|
+
template <class T>
|
654
|
+
T changesign BOOST_NO_MACRO_EXPAND(const T& z);
|
655
|
+
|
656
|
+
// Exponential integrals:
|
657
|
+
namespace detail{
|
658
|
+
|
659
|
+
template <class T, class U>
|
660
|
+
struct expint_result
|
661
|
+
{
|
662
|
+
typedef typename mpl::if_<
|
663
|
+
policies::is_policy<U>,
|
664
|
+
typename tools::promote_args<T>::type,
|
665
|
+
typename tools::promote_args<U>::type
|
666
|
+
>::type type;
|
667
|
+
};
|
668
|
+
|
669
|
+
} // namespace detail
|
670
|
+
|
671
|
+
template <class T, class Policy>
|
672
|
+
typename tools::promote_args<T>::type expint(unsigned n, T z, const Policy&);
|
673
|
+
|
674
|
+
template <class T, class U>
|
675
|
+
typename detail::expint_result<T, U>::type expint(T const z, U const u);
|
676
|
+
|
677
|
+
template <class T>
|
678
|
+
typename tools::promote_args<T>::type expint(T z);
|
679
|
+
|
680
|
+
// Zeta:
|
681
|
+
template <class T, class Policy>
|
682
|
+
typename tools::promote_args<T>::type zeta(T s, const Policy&);
|
683
|
+
|
684
|
+
template <class T>
|
685
|
+
typename tools::promote_args<T>::type zeta(T s);
|
686
|
+
|
687
|
+
// pow:
|
688
|
+
template <int N, typename T, class Policy>
|
689
|
+
typename tools::promote_args<T>::type pow(T base, const Policy& policy);
|
690
|
+
|
691
|
+
template <int N, typename T>
|
692
|
+
typename tools::promote_args<T>::type pow(T base);
|
693
|
+
|
694
|
+
// next:
|
695
|
+
template <class T, class Policy>
|
696
|
+
T nextafter(const T&, const T&, const Policy&);
|
697
|
+
template <class T>
|
698
|
+
T nextafter(const T&, const T&);
|
699
|
+
template <class T, class Policy>
|
700
|
+
T float_next(const T&, const Policy&);
|
701
|
+
template <class T>
|
702
|
+
T float_next(const T&);
|
703
|
+
template <class T, class Policy>
|
704
|
+
T float_prior(const T&, const Policy&);
|
705
|
+
template <class T>
|
706
|
+
T float_prior(const T&);
|
707
|
+
template <class T, class Policy>
|
708
|
+
T float_distance(const T&, const T&, const Policy&);
|
709
|
+
template <class T>
|
710
|
+
T float_distance(const T&, const T&);
|
711
|
+
|
712
|
+
} // namespace math
|
713
|
+
} // namespace boost
|
714
|
+
|
715
|
+
#ifdef BOOST_HAS_LONG_LONG
|
716
|
+
#define BOOST_MATH_DETAIL_LL_FUNC(Policy)\
|
717
|
+
\
|
718
|
+
template <class T>\
|
719
|
+
inline T modf(const T& v, boost::long_long_type* ipart){ using boost::math::modf; return modf(v, ipart, Policy()); }\
|
720
|
+
\
|
721
|
+
template <class T>\
|
722
|
+
inline boost::long_long_type lltrunc(const T& v){ using boost::math::lltrunc; return lltrunc(v, Policy()); }\
|
723
|
+
\
|
724
|
+
template <class T>\
|
725
|
+
inline boost::long_long_type llround(const T& v){ using boost::math::llround; return llround(v, Policy()); }\
|
726
|
+
|
727
|
+
#else
|
728
|
+
#define BOOST_MATH_DETAIL_LL_FUNC(Policy)
|
729
|
+
#endif
|
730
|
+
|
731
|
+
#define BOOST_MATH_DECLARE_SPECIAL_FUNCTIONS(Policy)\
|
732
|
+
\
|
733
|
+
BOOST_MATH_DETAIL_LL_FUNC(Policy)\
|
734
|
+
\
|
735
|
+
template <class RT1, class RT2>\
|
736
|
+
inline typename boost::math::tools::promote_args<RT1, RT2>::type \
|
737
|
+
beta(RT1 a, RT2 b) { return ::boost::math::beta(a, b, Policy()); }\
|
738
|
+
\
|
739
|
+
template <class RT1, class RT2, class A>\
|
740
|
+
inline typename boost::math::tools::promote_args<RT1, RT2, A>::type \
|
741
|
+
beta(RT1 a, RT2 b, A x){ return ::boost::math::beta(a, b, x, Policy()); }\
|
742
|
+
\
|
743
|
+
template <class RT1, class RT2, class RT3>\
|
744
|
+
inline typename boost::math::tools::promote_args<RT1, RT2, RT3>::type \
|
745
|
+
betac(RT1 a, RT2 b, RT3 x) { return ::boost::math::betac(a, b, x, Policy()); }\
|
746
|
+
\
|
747
|
+
template <class RT1, class RT2, class RT3>\
|
748
|
+
inline typename boost::math::tools::promote_args<RT1, RT2, RT3>::type \
|
749
|
+
ibeta(RT1 a, RT2 b, RT3 x){ return ::boost::math::ibeta(a, b, x, Policy()); }\
|
750
|
+
\
|
751
|
+
template <class RT1, class RT2, class RT3>\
|
752
|
+
inline typename boost::math::tools::promote_args<RT1, RT2, RT3>::type \
|
753
|
+
ibetac(RT1 a, RT2 b, RT3 x){ return ::boost::math::ibetac(a, b, x, Policy()); }\
|
754
|
+
\
|
755
|
+
template <class T1, class T2, class T3, class T4>\
|
756
|
+
inline typename boost::math::tools::promote_args<T1, T2, T3, T4>::type \
|
757
|
+
ibeta_inv(T1 a, T2 b, T3 p, T4* py){ return ::boost::math::ibeta_inv(a, b, p, py, Policy()); }\
|
758
|
+
\
|
759
|
+
template <class RT1, class RT2, class RT3>\
|
760
|
+
inline typename boost::math::tools::promote_args<RT1, RT2, RT3>::type \
|
761
|
+
ibeta_inv(RT1 a, RT2 b, RT3 p){ return ::boost::math::ibeta_inv(a, b, p, Policy()); }\
|
762
|
+
\
|
763
|
+
template <class T1, class T2, class T3, class T4>\
|
764
|
+
inline typename boost::math::tools::promote_args<T1, T2, T3, T4>::type \
|
765
|
+
ibetac_inv(T1 a, T2 b, T3 q, T4* py){ return ::boost::math::ibetac_inv(a, b, q, py, Policy()); }\
|
766
|
+
\
|
767
|
+
template <class RT1, class RT2, class RT3>\
|
768
|
+
inline typename boost::math::tools::promote_args<RT1, RT2, RT3>::type \
|
769
|
+
ibeta_inva(RT1 a, RT2 b, RT3 p){ return ::boost::math::ibeta_inva(a, b, p, Policy()); }\
|
770
|
+
\
|
771
|
+
template <class T1, class T2, class T3>\
|
772
|
+
inline typename boost::math::tools::promote_args<T1, T2, T3>::type \
|
773
|
+
ibetac_inva(T1 a, T2 b, T3 q){ return ::boost::math::ibetac_inva(a, b, q, Policy()); }\
|
774
|
+
\
|
775
|
+
template <class RT1, class RT2, class RT3>\
|
776
|
+
inline typename boost::math::tools::promote_args<RT1, RT2, RT3>::type \
|
777
|
+
ibeta_invb(RT1 a, RT2 b, RT3 p){ return ::boost::math::ibeta_invb(a, b, p, Policy()); }\
|
778
|
+
\
|
779
|
+
template <class T1, class T2, class T3>\
|
780
|
+
inline typename boost::math::tools::promote_args<T1, T2, T3>::type \
|
781
|
+
ibetac_invb(T1 a, T2 b, T3 q){ return ::boost::math::ibetac_invb(a, b, q, Policy()); }\
|
782
|
+
\
|
783
|
+
template <class RT1, class RT2, class RT3>\
|
784
|
+
inline typename boost::math::tools::promote_args<RT1, RT2, RT3>::type \
|
785
|
+
ibetac_inv(RT1 a, RT2 b, RT3 q){ return ::boost::math::ibetac_inv(a, b, q, Policy()); }\
|
786
|
+
\
|
787
|
+
template <class RT1, class RT2, class RT3>\
|
788
|
+
inline typename boost::math::tools::promote_args<RT1, RT2, RT3>::type \
|
789
|
+
ibeta_derivative(RT1 a, RT2 b, RT3 x){ return ::boost::math::ibeta_derivative(a, b, x, Policy()); }\
|
790
|
+
\
|
791
|
+
template <class RT>\
|
792
|
+
inline typename boost::math::tools::promote_args<RT>::type erf(RT z) { return ::boost::math::erf(z, Policy()); }\
|
793
|
+
\
|
794
|
+
template <class RT>\
|
795
|
+
inline typename boost::math::tools::promote_args<RT>::type erfc(RT z){ return ::boost::math::erfc(z, Policy()); }\
|
796
|
+
\
|
797
|
+
template <class RT>\
|
798
|
+
inline typename boost::math::tools::promote_args<RT>::type erf_inv(RT z) { return ::boost::math::erf_inv(z, Policy()); }\
|
799
|
+
\
|
800
|
+
template <class RT>\
|
801
|
+
inline typename boost::math::tools::promote_args<RT>::type erfc_inv(RT z){ return ::boost::math::erfc_inv(z, Policy()); }\
|
802
|
+
\
|
803
|
+
using boost::math::legendre_next;\
|
804
|
+
\
|
805
|
+
template <class T>\
|
806
|
+
inline typename boost::math::tools::promote_args<T>::type \
|
807
|
+
legendre_p(int l, T x){ return ::boost::math::legendre_p(l, x, Policy()); }\
|
808
|
+
\
|
809
|
+
template <class T>\
|
810
|
+
inline typename boost::math::tools::promote_args<T>::type \
|
811
|
+
legendre_q(unsigned l, T x){ return ::boost::math::legendre_q(l, x, Policy()); }\
|
812
|
+
\
|
813
|
+
using ::boost::math::legendre_next;\
|
814
|
+
\
|
815
|
+
template <class T>\
|
816
|
+
inline typename boost::math::tools::promote_args<T>::type \
|
817
|
+
legendre_p(int l, int m, T x){ return ::boost::math::legendre_p(l, m, x, Policy()); }\
|
818
|
+
\
|
819
|
+
using ::boost::math::laguerre_next;\
|
820
|
+
\
|
821
|
+
template <class T>\
|
822
|
+
inline typename boost::math::tools::promote_args<T>::type \
|
823
|
+
laguerre(unsigned n, T x){ return ::boost::math::laguerre(n, x, Policy()); }\
|
824
|
+
\
|
825
|
+
template <class T1, class T2>\
|
826
|
+
inline typename boost::math::laguerre_result<T1, T2>::type \
|
827
|
+
laguerre(unsigned n, T1 m, T2 x) { return ::boost::math::laguerre(n, m, x, Policy()); }\
|
828
|
+
\
|
829
|
+
template <class T>\
|
830
|
+
inline typename boost::math::tools::promote_args<T>::type \
|
831
|
+
hermite(unsigned n, T x){ return ::boost::math::hermite(n, x, Policy()); }\
|
832
|
+
\
|
833
|
+
using boost::math::hermite_next;\
|
834
|
+
\
|
835
|
+
template <class T1, class T2>\
|
836
|
+
inline std::complex<typename boost::math::tools::promote_args<T1, T2>::type> \
|
837
|
+
spherical_harmonic(unsigned n, int m, T1 theta, T2 phi){ return boost::math::spherical_harmonic(n, m, theta, phi, Policy()); }\
|
838
|
+
\
|
839
|
+
template <class T1, class T2>\
|
840
|
+
inline typename boost::math::tools::promote_args<T1, T2>::type \
|
841
|
+
spherical_harmonic_r(unsigned n, int m, T1 theta, T2 phi){ return ::boost::math::spherical_harmonic_r(n, m, theta, phi, Policy()); }\
|
842
|
+
\
|
843
|
+
template <class T1, class T2>\
|
844
|
+
inline typename boost::math::tools::promote_args<T1, T2>::type \
|
845
|
+
spherical_harmonic_i(unsigned n, int m, T1 theta, T2 phi){ return boost::math::spherical_harmonic_i(n, m, theta, phi, Policy()); }\
|
846
|
+
\
|
847
|
+
template <class T1, class T2, class Policy>\
|
848
|
+
inline typename boost::math::tools::promote_args<T1, T2>::type \
|
849
|
+
spherical_harmonic_i(unsigned n, int m, T1 theta, T2 phi, const Policy& pol);\
|
850
|
+
\
|
851
|
+
template <class T1, class T2, class T3>\
|
852
|
+
inline typename boost::math::tools::promote_args<T1, T2, T3>::type \
|
853
|
+
ellint_rf(T1 x, T2 y, T3 z){ return ::boost::math::ellint_rf(x, y, z, Policy()); }\
|
854
|
+
\
|
855
|
+
template <class T1, class T2, class T3>\
|
856
|
+
inline typename boost::math::tools::promote_args<T1, T2, T3>::type \
|
857
|
+
ellint_rd(T1 x, T2 y, T3 z){ return ::boost::math::ellint_rd(x, y, z, Policy()); }\
|
858
|
+
\
|
859
|
+
template <class T1, class T2>\
|
860
|
+
inline typename boost::math::tools::promote_args<T1, T2>::type \
|
861
|
+
ellint_rc(T1 x, T2 y){ return ::boost::math::ellint_rc(x, y, Policy()); }\
|
862
|
+
\
|
863
|
+
template <class T1, class T2, class T3, class T4>\
|
864
|
+
inline typename boost::math::tools::promote_args<T1, T2, T3, T4>::type \
|
865
|
+
ellint_rj(T1 x, T2 y, T3 z, T4 p){ return boost::math::ellint_rj(x, y, z, p, Policy()); }\
|
866
|
+
\
|
867
|
+
template <typename T>\
|
868
|
+
inline typename boost::math::tools::promote_args<T>::type ellint_2(T k){ return boost::math::ellint_2(k, Policy()); }\
|
869
|
+
\
|
870
|
+
template <class T1, class T2>\
|
871
|
+
inline typename boost::math::tools::promote_args<T1, T2>::type ellint_2(T1 k, T2 phi){ return boost::math::ellint_2(k, phi, Policy()); }\
|
872
|
+
\
|
873
|
+
template <typename T>\
|
874
|
+
inline typename boost::math::tools::promote_args<T>::type ellint_1(T k){ return boost::math::ellint_1(k, Policy()); }\
|
875
|
+
\
|
876
|
+
template <class T1, class T2>\
|
877
|
+
inline typename boost::math::tools::promote_args<T1, T2>::type ellint_1(T1 k, T2 phi){ return boost::math::ellint_1(k, phi, Policy()); }\
|
878
|
+
\
|
879
|
+
template <class T1, class T2, class T3>\
|
880
|
+
inline typename boost::math::tools::promote_args<T1, T2, T3>::type ellint_3(T1 k, T2 v, T3 phi){ return boost::math::ellint_3(k, v, phi, Policy()); }\
|
881
|
+
\
|
882
|
+
template <class T1, class T2>\
|
883
|
+
inline typename boost::math::tools::promote_args<T1, T2>::type ellint_3(T1 k, T2 v){ return boost::math::ellint_3(k, v, Policy()); }\
|
884
|
+
\
|
885
|
+
using boost::math::max_factorial;\
|
886
|
+
template <class RT>\
|
887
|
+
inline RT factorial(unsigned int i) { return boost::math::factorial<RT>(i, Policy()); }\
|
888
|
+
using boost::math::unchecked_factorial;\
|
889
|
+
template <class RT>\
|
890
|
+
inline RT double_factorial(unsigned i){ return boost::math::double_factorial<RT>(i, Policy()); }\
|
891
|
+
template <class RT>\
|
892
|
+
inline typename boost::math::tools::promote_args<RT>::type falling_factorial(RT x, unsigned n){ return boost::math::falling_factorial(x, n, Policy()); }\
|
893
|
+
template <class RT>\
|
894
|
+
inline typename boost::math::tools::promote_args<RT>::type rising_factorial(RT x, unsigned n){ return boost::math::rising_factorial(x, n, Policy()); }\
|
895
|
+
\
|
896
|
+
template <class RT>\
|
897
|
+
inline typename boost::math::tools::promote_args<RT>::type tgamma(RT z){ return boost::math::tgamma(z, Policy()); }\
|
898
|
+
\
|
899
|
+
template <class RT>\
|
900
|
+
inline typename boost::math::tools::promote_args<RT>::type tgamma1pm1(RT z){ return boost::math::tgamma1pm1(z, Policy()); }\
|
901
|
+
\
|
902
|
+
template <class RT1, class RT2>\
|
903
|
+
inline typename boost::math::tools::promote_args<RT1, RT2>::type tgamma(RT1 a, RT2 z){ return boost::math::tgamma(a, z, Policy()); }\
|
904
|
+
\
|
905
|
+
template <class RT>\
|
906
|
+
inline typename boost::math::tools::promote_args<RT>::type lgamma(RT z, int* sign){ return boost::math::lgamma(z, sign, Policy()); }\
|
907
|
+
\
|
908
|
+
template <class RT>\
|
909
|
+
inline typename boost::math::tools::promote_args<RT>::type lgamma(RT x){ return boost::math::lgamma(x, Policy()); }\
|
910
|
+
\
|
911
|
+
template <class RT1, class RT2>\
|
912
|
+
inline typename boost::math::tools::promote_args<RT1, RT2>::type tgamma_lower(RT1 a, RT2 z){ return boost::math::tgamma_lower(a, z, Policy()); }\
|
913
|
+
\
|
914
|
+
template <class RT1, class RT2>\
|
915
|
+
inline typename boost::math::tools::promote_args<RT1, RT2>::type gamma_q(RT1 a, RT2 z){ return boost::math::gamma_q(a, z, Policy()); }\
|
916
|
+
\
|
917
|
+
template <class RT1, class RT2>\
|
918
|
+
inline typename boost::math::tools::promote_args<RT1, RT2>::type gamma_p(RT1 a, RT2 z){ return boost::math::gamma_p(a, z, Policy()); }\
|
919
|
+
\
|
920
|
+
template <class T1, class T2>\
|
921
|
+
inline typename boost::math::tools::promote_args<T1, T2>::type tgamma_delta_ratio(T1 z, T2 delta){ return boost::math::tgamma_delta_ratio(z, delta, Policy()); }\
|
922
|
+
\
|
923
|
+
template <class T1, class T2>\
|
924
|
+
inline typename boost::math::tools::promote_args<T1, T2>::type tgamma_ratio(T1 a, T2 b) { return boost::math::tgamma_ratio(a, b, Policy()); }\
|
925
|
+
\
|
926
|
+
template <class T1, class T2>\
|
927
|
+
inline typename boost::math::tools::promote_args<T1, T2>::type gamma_p_derivative(T1 a, T2 x){ return boost::math::gamma_p_derivative(a, x, Policy()); }\
|
928
|
+
\
|
929
|
+
template <class T1, class T2>\
|
930
|
+
inline typename boost::math::tools::promote_args<T1, T2>::type gamma_p_inv(T1 a, T2 p){ return boost::math::gamma_p_inv(a, p, Policy()); }\
|
931
|
+
\
|
932
|
+
template <class T1, class T2>\
|
933
|
+
inline typename boost::math::tools::promote_args<T1, T2>::type gamma_p_inva(T1 a, T2 p){ return boost::math::gamma_p_inva(a, p, Policy()); }\
|
934
|
+
\
|
935
|
+
template <class T1, class T2>\
|
936
|
+
inline typename boost::math::tools::promote_args<T1, T2>::type gamma_q_inv(T1 a, T2 q){ return boost::math::gamma_q_inv(a, q, Policy()); }\
|
937
|
+
\
|
938
|
+
template <class T1, class T2>\
|
939
|
+
inline typename boost::math::tools::promote_args<T1, T2>::type gamma_q_inva(T1 a, T2 q){ return boost::math::gamma_q_inva(a, q, Policy()); }\
|
940
|
+
\
|
941
|
+
template <class T>\
|
942
|
+
inline typename boost::math::tools::promote_args<T>::type digamma(T x){ return boost::math::digamma(x, Policy()); }\
|
943
|
+
\
|
944
|
+
template <class T1, class T2>\
|
945
|
+
inline typename boost::math::tools::promote_args<T1, T2>::type \
|
946
|
+
hypot(T1 x, T2 y){ return boost::math::hypot(x, y, Policy()); }\
|
947
|
+
\
|
948
|
+
template <class RT>\
|
949
|
+
inline typename boost::math::tools::promote_args<RT>::type cbrt(RT z){ return boost::math::cbrt(z, Policy()); }\
|
950
|
+
\
|
951
|
+
template <class T>\
|
952
|
+
inline typename boost::math::tools::promote_args<T>::type log1p(T x){ return boost::math::log1p(x, Policy()); }\
|
953
|
+
\
|
954
|
+
template <class T>\
|
955
|
+
inline typename boost::math::tools::promote_args<T>::type log1pmx(T x){ return boost::math::log1pmx(x, Policy()); }\
|
956
|
+
\
|
957
|
+
template <class T>\
|
958
|
+
inline typename boost::math::tools::promote_args<T>::type expm1(T x){ return boost::math::expm1(x, Policy()); }\
|
959
|
+
\
|
960
|
+
template <class T1, class T2>\
|
961
|
+
inline typename boost::math::tools::promote_args<T1, T2>::type \
|
962
|
+
powm1(const T1 a, const T2 z){ return boost::math::powm1(a, z, Policy()); }\
|
963
|
+
\
|
964
|
+
template <class T>\
|
965
|
+
inline typename boost::math::tools::promote_args<T>::type sqrt1pm1(const T& val){ return boost::math::sqrt1pm1(val, Policy()); }\
|
966
|
+
\
|
967
|
+
template <class T>\
|
968
|
+
inline typename boost::math::tools::promote_args<T>::type sinc_pi(T x){ return boost::math::sinc_pi(x, Policy()); }\
|
969
|
+
\
|
970
|
+
template <class T>\
|
971
|
+
inline typename boost::math::tools::promote_args<T>::type sinhc_pi(T x){ return boost::math::sinhc_pi(x, Policy()); }\
|
972
|
+
\
|
973
|
+
template<typename T>\
|
974
|
+
inline typename boost::math::tools::promote_args<T>::type asinh(const T x){ return boost::math::asinh(x, Policy()); }\
|
975
|
+
\
|
976
|
+
template<typename T>\
|
977
|
+
inline typename boost::math::tools::promote_args<T>::type acosh(const T x){ return boost::math::acosh(x, Policy()); }\
|
978
|
+
\
|
979
|
+
template<typename T>\
|
980
|
+
inline typename boost::math::tools::promote_args<T>::type atanh(const T x){ return boost::math::atanh(x, Policy()); }\
|
981
|
+
\
|
982
|
+
template <class T1, class T2>\
|
983
|
+
inline typename boost::math::detail::bessel_traits<T1, T2, Policy >::result_type cyl_bessel_j(T1 v, T2 x)\
|
984
|
+
{ return boost::math::cyl_bessel_j(v, x, Policy()); }\
|
985
|
+
\
|
986
|
+
template <class T>\
|
987
|
+
inline typename boost::math::detail::bessel_traits<T, T, Policy >::result_type sph_bessel(unsigned v, T x)\
|
988
|
+
{ return boost::math::sph_bessel(v, x, Policy()); }\
|
989
|
+
\
|
990
|
+
template <class T1, class T2>\
|
991
|
+
inline typename boost::math::detail::bessel_traits<T1, T2, Policy >::result_type \
|
992
|
+
cyl_bessel_i(T1 v, T2 x) { return boost::math::cyl_bessel_i(v, x, Policy()); }\
|
993
|
+
\
|
994
|
+
template <class T1, class T2>\
|
995
|
+
inline typename boost::math::detail::bessel_traits<T1, T2, Policy >::result_type \
|
996
|
+
cyl_bessel_k(T1 v, T2 x) { return boost::math::cyl_bessel_k(v, x, Policy()); }\
|
997
|
+
\
|
998
|
+
template <class T1, class T2>\
|
999
|
+
inline typename boost::math::detail::bessel_traits<T1, T2, Policy >::result_type \
|
1000
|
+
cyl_neumann(T1 v, T2 x){ return boost::math::cyl_neumann(v, x, Policy()); }\
|
1001
|
+
\
|
1002
|
+
template <class T>\
|
1003
|
+
inline typename boost::math::detail::bessel_traits<T, T, Policy >::result_type \
|
1004
|
+
sph_neumann(unsigned v, T x){ return boost::math::sph_neumann(v, x, Policy()); }\
|
1005
|
+
\
|
1006
|
+
template <class T>\
|
1007
|
+
inline typename boost::math::tools::promote_args<T>::type sin_pi(T x){ return boost::math::sin_pi(x); }\
|
1008
|
+
\
|
1009
|
+
template <class T>\
|
1010
|
+
inline typename boost::math::tools::promote_args<T>::type cos_pi(T x){ return boost::math::cos_pi(x); }\
|
1011
|
+
\
|
1012
|
+
using boost::math::fpclassify;\
|
1013
|
+
using boost::math::isfinite;\
|
1014
|
+
using boost::math::isinf;\
|
1015
|
+
using boost::math::isnan;\
|
1016
|
+
using boost::math::isnormal;\
|
1017
|
+
using boost::math::signbit;\
|
1018
|
+
using boost::math::sign;\
|
1019
|
+
using boost::math::copysign;\
|
1020
|
+
using boost::math::changesign;\
|
1021
|
+
\
|
1022
|
+
template <class T, class U>\
|
1023
|
+
inline typename boost::math::tools::promote_args<T,U>::type expint(T const& z, U const& u)\
|
1024
|
+
{ return boost::math::expint(z, u, Policy()); }\
|
1025
|
+
\
|
1026
|
+
template <class T>\
|
1027
|
+
inline typename boost::math::tools::promote_args<T>::type expint(T z){ return boost::math::expint(z, Policy()); }\
|
1028
|
+
\
|
1029
|
+
template <class T>\
|
1030
|
+
inline typename boost::math::tools::promote_args<T>::type zeta(T s){ return boost::math::zeta(s, Policy()); }\
|
1031
|
+
\
|
1032
|
+
template <class T>\
|
1033
|
+
inline T round(const T& v){ using boost::math::round; return round(v, Policy()); }\
|
1034
|
+
\
|
1035
|
+
template <class T>\
|
1036
|
+
inline int iround(const T& v){ using boost::math::iround; return iround(v, Policy()); }\
|
1037
|
+
\
|
1038
|
+
template <class T>\
|
1039
|
+
inline long lround(const T& v){ using boost::math::lround; return lround(v, Policy()); }\
|
1040
|
+
\
|
1041
|
+
template <class T>\
|
1042
|
+
inline T trunc(const T& v){ using boost::math::trunc; return trunc(v, Policy()); }\
|
1043
|
+
\
|
1044
|
+
template <class T>\
|
1045
|
+
inline int itrunc(const T& v){ using boost::math::itrunc; return itrunc(v, Policy()); }\
|
1046
|
+
\
|
1047
|
+
template <class T>\
|
1048
|
+
inline long ltrunc(const T& v){ using boost::math::ltrunc; return ltrunc(v, Policy()); }\
|
1049
|
+
\
|
1050
|
+
template <class T>\
|
1051
|
+
inline T modf(const T& v, T* ipart){ using boost::math::modf; return modf(v, ipart, Policy()); }\
|
1052
|
+
\
|
1053
|
+
template <class T>\
|
1054
|
+
inline T modf(const T& v, int* ipart){ using boost::math::modf; return modf(v, ipart, Policy()); }\
|
1055
|
+
\
|
1056
|
+
template <class T>\
|
1057
|
+
inline T modf(const T& v, long* ipart){ using boost::math::modf; return modf(v, ipart, Policy()); }\
|
1058
|
+
\
|
1059
|
+
template <int N, class T>\
|
1060
|
+
inline typename boost::math::tools::promote_args<T>::type pow(T v){ return boost::math::pow<N>(v, Policy()); }\
|
1061
|
+
\
|
1062
|
+
template <class T> T nextafter(const T& a, const T& b){ return boost::math::nextafter(a, b, Policy()); }\
|
1063
|
+
template <class T> T float_next(const T& a){ return boost::math::float_next(a, Policy()); }\
|
1064
|
+
template <class T> T float_prior(const T& a){ return boost::math::float_prior(a, Policy()); }\
|
1065
|
+
template <class T> T float_distance(const T& a, const T& b){ return boost::math::float_distance(a, b, Policy()); }\
|
1066
|
+
|
1067
|
+
|
1068
|
+
#endif // BOOST_MATH_SPECIAL_MATH_FWD_HPP
|
1069
|
+
|
1070
|
+
|