passenger 6.1.0 → 6.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (440) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +32 -2
  3. data/Rakefile +6 -13
  4. data/bin/passenger-install-apache2-module +15 -19
  5. data/bin/passenger-install-nginx-module +42 -44
  6. data/bin/passenger-status +9 -10
  7. data/build/common_library.rb +4 -4
  8. data/build/support/vendor/cxxcodebuilder/lib/cxxcodebuilder/builder.rb +1 -1
  9. data/build/test_basics.rb +4 -3
  10. data/dev/copy_boost_headers +54 -40
  11. data/dev/ruby_server.rb +1 -1
  12. data/src/agent/Core/Config.h +1 -1
  13. data/src/agent/Core/Controller/Config.h +1 -1
  14. data/src/agent/Watchdog/Config.h +1 -1
  15. data/src/cxx_supportlib/Constants.h +1 -1
  16. data/src/cxx_supportlib/vendor-modified/boost/assert/source_location.hpp +8 -1
  17. data/src/cxx_supportlib/vendor-modified/boost/assert.hpp +6 -0
  18. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic.hpp +94 -110
  19. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic_flag.hpp +2 -2
  20. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic_ref.hpp +14 -14
  21. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/addressof.hpp +3 -3
  22. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_flag_impl.hpp +52 -24
  23. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_impl.hpp +641 -285
  24. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_ref_impl.hpp +593 -260
  25. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_cast.hpp +37 -24
  26. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_fp_cast.hpp +9 -9
  27. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/cas_based_exchange.hpp +3 -3
  28. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/chrono.hpp +93 -0
  29. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/classify.hpp +16 -17
  30. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/config.hpp +25 -34
  31. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_aarch32.hpp +204 -97
  32. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_aarch64.hpp +251 -122
  33. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_alpha.hpp +56 -56
  34. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_arm.hpp +129 -129
  35. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_ppc.hpp +253 -125
  36. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_sparc.hpp +25 -25
  37. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_x86.hpp +193 -126
  38. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_msvc_arm.hpp +57 -57
  39. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_msvc_x86.hpp +96 -97
  40. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_operations_emulated.hpp +24 -24
  41. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_cas_based.hpp +10 -10
  42. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_gcc_atomic.hpp +27 -24
  43. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_gcc_sync.hpp +39 -37
  44. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_linux_arm.hpp +17 -17
  45. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extending_cas_based_arithmetic.hpp +5 -5
  46. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_ops_emulated.hpp +12 -12
  47. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_ops_generic.hpp +21 -21
  48. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_emulated.hpp +30 -30
  49. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_aarch32.hpp +170 -98
  50. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_aarch64.hpp +209 -119
  51. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_arm.hpp +95 -95
  52. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_ppc.hpp +148 -76
  53. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_x86.hpp +293 -123
  54. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_generic.hpp +87 -71
  55. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_msvc_arm.hpp +5 -5
  56. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_msvc_x86.hpp +88 -88
  57. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_operations.hpp +2 -2
  58. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_aarch32.hpp +4 -5
  59. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_aarch64.hpp +4 -4
  60. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_alpha.hpp +4 -4
  61. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_arm.hpp +9 -9
  62. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_ppc.hpp +4 -4
  63. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_sparc.hpp +4 -4
  64. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_x86.hpp +4 -4
  65. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_msvc_arm.hpp +5 -5
  66. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_msvc_x86.hpp +6 -6
  67. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_operations.hpp +2 -2
  68. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_operations_emulated.hpp +2 -2
  69. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_gcc_atomic.hpp +5 -5
  70. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_gcc_sync.hpp +4 -4
  71. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_linux_arm.hpp +7 -7
  72. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_ops_emulated.hpp +7 -7
  73. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_ops_generic.hpp +6 -6
  74. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/futex.hpp +110 -49
  75. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/gcc_atomic_memory_order_utils.hpp +1 -1
  76. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/has_posix_clock_traits.hpp +51 -0
  77. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/int_sizes.hpp +26 -32
  78. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/integral_conversions.hpp +15 -15
  79. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/interlocked.hpp +69 -30
  80. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/intptr.hpp +8 -8
  81. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/lock_pool.hpp +51 -31
  82. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/memory_order_utils.hpp +2 -2
  83. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/once_flag.hpp +2 -2
  84. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_arm_common.hpp +6 -6
  85. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_ppc_common.hpp +4 -4
  86. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/platform.hpp +5 -5
  87. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/storage_traits.hpp +31 -31
  88. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/alignment_of.hpp +2 -3
  89. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/has_unique_object_representations.hpp +2 -5
  90. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_floating_point.hpp +3 -3
  91. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_iec559.hpp +2 -2
  92. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_integral.hpp +3 -3
  93. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_signed.hpp +3 -3
  94. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_trivially_copyable.hpp +20 -13
  95. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_trivially_default_constructible.hpp +13 -13
  96. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/make_signed.hpp +3 -3
  97. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/make_unsigned.hpp +3 -3
  98. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_darwin_ulock.hpp +90 -16
  99. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_dragonfly_umtx.hpp +80 -11
  100. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_emulated.hpp +160 -15
  101. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_freebsd_umtx.hpp +327 -38
  102. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_futex.hpp +276 -33
  103. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_generic.hpp +260 -20
  104. data/src/cxx_supportlib/vendor-modified/boost/atomic/fences.hpp +4 -3
  105. data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic.hpp +14 -18
  106. data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic_flag.hpp +2 -2
  107. data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic_ref.hpp +13 -13
  108. data/src/cxx_supportlib/vendor-modified/boost/atomic/posix_clock_traits_fwd.hpp +59 -0
  109. data/src/cxx_supportlib/vendor-modified/boost/atomic/thread_pause.hpp +102 -0
  110. data/src/cxx_supportlib/vendor-modified/boost/atomic/wait_result.hpp +56 -0
  111. data/src/cxx_supportlib/vendor-modified/boost/atomic.hpp +4 -1
  112. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcpp.hpp +5 -0
  113. data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +1 -1
  114. data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +108 -41
  115. data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +1235 -1009
  116. data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +3 -2
  117. data/src/cxx_supportlib/vendor-modified/boost/container/detail/algorithm.hpp +56 -0
  118. data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_helpers.hpp +1 -0
  119. data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_lib.h +9 -9
  120. data/src/cxx_supportlib/vendor-modified/boost/container/detail/compare_functors.hpp +23 -2
  121. data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_begin.hpp +0 -1
  122. data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +88 -23
  123. data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +2 -1
  124. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool_impl.hpp +2 -2
  125. data/src/cxx_supportlib/vendor-modified/boost/container/detail/operator_new_helpers.hpp +68 -0
  126. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +72 -13
  127. data/src/cxx_supportlib/vendor-modified/boost/container/detail/std_fwd.hpp +13 -0
  128. data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +8 -5
  129. data/src/cxx_supportlib/vendor-modified/boost/container/devector.hpp +31 -10
  130. data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +37 -10
  131. data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +19 -0
  132. data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +23 -1
  133. data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +72 -5
  134. data/src/cxx_supportlib/vendor-modified/boost/container/new_allocator.hpp +3 -10
  135. data/src/cxx_supportlib/vendor-modified/boost/container/options.hpp +54 -23
  136. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/devector.hpp +6 -4
  137. data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +19 -0
  138. data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +32 -5
  139. data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +27 -2
  140. data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +22 -0
  141. data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +37 -17
  142. data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +23 -1
  143. data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +41 -20
  144. data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash.hpp +5 -8
  145. data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash_fwd.hpp +3 -1
  146. data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash_is_avalanching.hpp +57 -0
  147. data/src/cxx_supportlib/vendor-modified/boost/core/bit.hpp +29 -29
  148. data/src/cxx_supportlib/vendor-modified/boost/core/cmath.hpp +3 -3
  149. data/src/cxx_supportlib/vendor-modified/boost/core/data.hpp +15 -1
  150. data/src/cxx_supportlib/vendor-modified/boost/core/default_allocator.hpp +1 -0
  151. data/src/cxx_supportlib/vendor-modified/boost/core/demangle.hpp +1 -1
  152. data/src/cxx_supportlib/vendor-modified/boost/core/detail/assert.hpp +18 -0
  153. data/src/cxx_supportlib/vendor-modified/boost/core/detail/sp_thread_sleep.hpp +2 -2
  154. data/src/cxx_supportlib/vendor-modified/boost/core/detail/static_assert.hpp +42 -0
  155. data/src/cxx_supportlib/vendor-modified/boost/core/detail/string_view.hpp +16 -10
  156. data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +35 -27
  157. data/src/cxx_supportlib/vendor-modified/boost/core/scoped_enum.hpp +1 -1
  158. data/src/cxx_supportlib/vendor-modified/boost/core/size.hpp +14 -0
  159. data/src/cxx_supportlib/vendor-modified/boost/core/span.hpp +20 -9
  160. data/src/cxx_supportlib/vendor-modified/boost/cregex.hpp +0 -5
  161. data/src/cxx_supportlib/vendor-modified/boost/describe/detail/config.hpp +8 -0
  162. data/src/cxx_supportlib/vendor-modified/boost/describe/modifiers.hpp +1 -1
  163. data/src/cxx_supportlib/vendor-modified/boost/foreach.hpp +1 -0
  164. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/ebo_functor_holder.hpp +4 -4
  165. data/src/cxx_supportlib/vendor-modified/boost/intrusive/list.hpp +2 -2
  166. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_rebind.hpp +9 -0
  167. data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree_algorithms.hpp +1 -0
  168. data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist.hpp +2 -2
  169. data/src/cxx_supportlib/vendor-modified/boost/iterator/advance.hpp +43 -64
  170. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/config_def.hpp +0 -83
  171. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/config_undef.hpp +1 -5
  172. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/eval_if_default.hpp +44 -0
  173. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/facade_iterator_category.hpp +103 -117
  174. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/type_traits/conjunction.hpp +53 -0
  175. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/type_traits/disjunction.hpp +53 -0
  176. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/type_traits/negation.hpp +53 -0
  177. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/type_traits/type_identity.hpp +54 -0
  178. data/src/cxx_supportlib/vendor-modified/boost/iterator/distance.hpp +32 -38
  179. data/src/cxx_supportlib/vendor-modified/boost/iterator/enable_if_convertible.hpp +84 -0
  180. data/src/cxx_supportlib/vendor-modified/boost/iterator/interoperable.hpp +22 -34
  181. data/src/cxx_supportlib/vendor-modified/boost/iterator/is_iterator.hpp +16 -16
  182. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_adaptor.hpp +162 -309
  183. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_categories.hpp +52 -161
  184. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_concepts.hpp +3 -11
  185. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_facade.hpp +804 -977
  186. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_traits.hpp +24 -17
  187. data/src/cxx_supportlib/vendor-modified/boost/iterator/min_category.hpp +83 -0
  188. data/src/cxx_supportlib/vendor-modified/boost/iterator/minimum_category.hpp +11 -73
  189. data/src/cxx_supportlib/vendor-modified/boost/iterator/reverse_iterator.hpp +56 -57
  190. data/src/cxx_supportlib/vendor-modified/boost/iterator/transform_iterator.hpp +123 -156
  191. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/bad_lexical_cast.hpp +1 -1
  192. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/buffer_view.hpp +1 -1
  193. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical.hpp +36 -33
  194. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +43 -50
  195. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_numeric.hpp +23 -27
  196. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/inf_nan.hpp +1 -1
  197. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/is_character.hpp +10 -11
  198. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_basic_unlockedbuf.hpp +1 -1
  199. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_char_constants.hpp +1 -1
  200. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_unsigned_converters.hpp +6 -7
  201. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/type_traits.hpp +81 -0
  202. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/widest_char.hpp +4 -4
  203. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/try_lexical_convert.hpp +8 -9
  204. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast.hpp +1 -1
  205. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/wide_posix_api.cpp +1 -12
  206. data/src/cxx_supportlib/vendor-modified/boost/memory_order.hpp +8 -26
  207. data/src/cxx_supportlib/vendor-modified/boost/move/detail/iterator_to_raw_pointer.hpp +1 -1
  208. data/src/cxx_supportlib/vendor-modified/boost/move/detail/launder.hpp +1 -1
  209. data/src/cxx_supportlib/vendor-modified/boost/move/detail/std_ns_begin.hpp +6 -0
  210. data/src/cxx_supportlib/vendor-modified/boost/move/detail/unique_ptr_meta_utils.hpp +2 -2
  211. data/src/cxx_supportlib/vendor-modified/boost/mp11/algorithm.hpp +11 -44
  212. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_map_find.hpp +34 -0
  213. data/src/cxx_supportlib/vendor-modified/boost/mp11/set.hpp +33 -1
  214. data/src/cxx_supportlib/vendor-modified/boost/mp11/version.hpp +1 -1
  215. data/src/cxx_supportlib/vendor-modified/boost/mpl/and.hpp +4 -8
  216. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/na_assert.hpp +1 -1
  217. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/ptr_to_ref.hpp +1 -1
  218. data/src/cxx_supportlib/vendor-modified/boost/mpl/bitand.hpp +2 -6
  219. data/src/cxx_supportlib/vendor-modified/boost/mpl/bitor.hpp +2 -6
  220. data/src/cxx_supportlib/vendor-modified/boost/mpl/or.hpp +2 -6
  221. data/src/cxx_supportlib/vendor-modified/boost/pool/pool.hpp +1 -1
  222. data/src/cxx_supportlib/vendor-modified/boost/pool/simple_segregated_storage.hpp +0 -13
  223. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/limits/to_seq_256.hpp +190 -190
  224. data/src/cxx_supportlib/vendor-modified/boost/random/beta_distribution.hpp +12 -2
  225. data/src/cxx_supportlib/vendor-modified/boost/random/detail/config.hpp +4 -0
  226. data/src/cxx_supportlib/vendor-modified/boost/random/detail/size.hpp +41 -0
  227. data/src/cxx_supportlib/vendor-modified/boost/random/detail/xoshiro_base.hpp +472 -0
  228. data/src/cxx_supportlib/vendor-modified/boost/random/discrete_distribution.hpp +7 -10
  229. data/src/cxx_supportlib/vendor-modified/boost/random/gamma_distribution.hpp +1 -1
  230. data/src/cxx_supportlib/vendor-modified/boost/random/generalized_inverse_gaussian_distribution.hpp +339 -0
  231. data/src/cxx_supportlib/vendor-modified/boost/random/hyperexponential_distribution.hpp +12 -14
  232. data/src/cxx_supportlib/vendor-modified/boost/random/inverse_gaussian_distribution.hpp +226 -0
  233. data/src/cxx_supportlib/vendor-modified/boost/random/mersenne_twister.hpp +1 -4
  234. data/src/cxx_supportlib/vendor-modified/boost/random/mixmax.hpp +63 -63
  235. data/src/cxx_supportlib/vendor-modified/boost/random/piecewise_constant_distribution.hpp +7 -10
  236. data/src/cxx_supportlib/vendor-modified/boost/random/piecewise_linear_distribution.hpp +8 -11
  237. data/src/cxx_supportlib/vendor-modified/boost/random/seed_seq.hpp +1 -3
  238. data/src/cxx_supportlib/vendor-modified/boost/random/splitmix64.hpp +1 -4
  239. data/src/cxx_supportlib/vendor-modified/boost/random/xoshiro.hpp +488 -0
  240. data/src/cxx_supportlib/vendor-modified/boost/random.hpp +3 -0
  241. data/src/cxx_supportlib/vendor-modified/boost/range/concepts.hpp +2 -0
  242. data/src/cxx_supportlib/vendor-modified/boost/range/detail/has_member_size.hpp +1 -0
  243. data/src/cxx_supportlib/vendor-modified/boost/range/detail/msvc_has_iterator_workaround.hpp +2 -0
  244. data/src/cxx_supportlib/vendor-modified/boost/range/has_range_iterator.hpp +1 -1
  245. data/src/cxx_supportlib/vendor-modified/boost/range/iterator.hpp +1 -0
  246. data/src/cxx_supportlib/vendor-modified/boost/range/iterator_range_core.hpp +4 -1
  247. data/src/cxx_supportlib/vendor-modified/boost/range/size_type.hpp +1 -1
  248. data/src/cxx_supportlib/vendor-modified/boost/regex/concepts.hpp +35 -18
  249. data/src/cxx_supportlib/vendor-modified/boost/regex/config.hpp +18 -101
  250. data/src/cxx_supportlib/vendor-modified/boost/regex/pattern_except.hpp +0 -4
  251. data/src/cxx_supportlib/vendor-modified/boost/regex/pending/object_cache.hpp +0 -4
  252. data/src/cxx_supportlib/vendor-modified/boost/regex/pending/unicode_iterator.hpp +0 -6
  253. data/src/cxx_supportlib/vendor-modified/boost/regex/regex_traits.hpp +0 -4
  254. data/src/cxx_supportlib/vendor-modified/boost/regex/user.hpp +4 -10
  255. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/basic_regex.hpp +63 -17
  256. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/basic_regex_creator.hpp +71 -16
  257. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/basic_regex_parser.hpp +22 -1
  258. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/c_regex_traits.hpp +11 -4
  259. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/char_regex_traits.hpp +2 -0
  260. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/cpp_regex_traits.hpp +11 -8
  261. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/cregex.hpp +2 -1
  262. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/error_type.hpp +1 -1
  263. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/icu.hpp +40 -38
  264. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/iterator_category.hpp +2 -0
  265. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/iterator_traits.hpp +4 -0
  266. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/match_flags.hpp +39 -37
  267. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/match_results.hpp +46 -9
  268. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/mem_block_cache.hpp +4 -0
  269. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/object_cache.hpp +2 -0
  270. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/pattern_except.hpp +6 -4
  271. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/perl_matcher.hpp +57 -8
  272. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/perl_matcher_common.hpp +21 -6
  273. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/perl_matcher_non_recursive.hpp +18 -3
  274. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regbase.hpp +4 -2
  275. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex.hpp +6 -6
  276. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_format.hpp +23 -18
  277. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_fwd.hpp +9 -9
  278. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_grep.hpp +9 -5
  279. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_iterator.hpp +11 -7
  280. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_match.hpp +10 -7
  281. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_merge.hpp +4 -4
  282. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_raw_buffer.hpp +3 -0
  283. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_replace.hpp +6 -2
  284. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_search.hpp +12 -9
  285. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_split.hpp +6 -3
  286. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_token_iterator.hpp +16 -11
  287. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_traits.hpp +1 -1
  288. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_traits_defaults.hpp +2 -0
  289. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_workaround.hpp +2 -0
  290. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/states.hpp +7 -0
  291. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/sub_match.hpp +54 -49
  292. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/syntax_type.hpp +64 -62
  293. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/u32regex_iterator.hpp +16 -0
  294. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/u32regex_token_iterator.hpp +12 -0
  295. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/unicode_iterator.hpp +6 -4
  296. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/w32_regex_traits.hpp +3 -1
  297. data/src/cxx_supportlib/vendor-modified/boost/regex.hpp +0 -4
  298. data/src/cxx_supportlib/vendor-modified/boost/regex_fwd.hpp +0 -4
  299. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count.hpp +1 -43
  300. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/deprecated_macros.hpp +7 -7
  301. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/shared_count.hpp +2 -77
  302. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base.hpp +1 -64
  303. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_nt.hpp +3 -3
  304. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_impl.hpp +0 -77
  305. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_cxx20_constexpr.hpp +37 -0
  306. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock.hpp +5 -28
  307. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ptr.hpp +41 -40
  308. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_array.hpp +0 -15
  309. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_ptr.hpp +0 -18
  310. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_ptr.hpp +1 -1
  311. data/src/cxx_supportlib/vendor-modified/boost/thread/future.hpp +1 -1
  312. data/src/cxx_supportlib/vendor-modified/boost/tuple/detail/tuple_basic.hpp +1 -0
  313. data/src/cxx_supportlib/vendor-modified/boost/type_traits/integral_constant.hpp +8 -6
  314. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_complete.hpp +31 -10
  315. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fca.hpp +34 -8
  316. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/core.hpp +6 -4
  317. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/table.hpp +9 -1
  318. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/implementation.hpp +5 -5
  319. data/src/cxx_supportlib/vendor-modified/boost/unordered/{unordered_printers.hpp → detail/unordered_printers.hpp} +34 -36
  320. data/src/cxx_supportlib/vendor-modified/boost/unordered/hash_traits.hpp +6 -49
  321. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map.hpp +6 -1
  322. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set.hpp +6 -1
  323. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_map.hpp +6 -1
  324. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_set.hpp +6 -1
  325. data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
  326. data/src/nginx_module/ContentHandler.c +2 -0
  327. data/src/ruby_supportlib/phusion_passenger/config/download_agent_command.rb +3 -5
  328. data/src/ruby_supportlib/phusion_passenger/config/download_nginx_engine_command.rb +3 -5
  329. data/src/ruby_supportlib/phusion_passenger/config/install_agent_command.rb +3 -5
  330. data/src/ruby_supportlib/phusion_passenger/config/install_standalone_runtime_command.rb +3 -5
  331. data/src/ruby_supportlib/phusion_passenger/config/installation_utils.rb +1 -1
  332. data/src/ruby_supportlib/phusion_passenger/config/nginx_engine_compiler.rb +2 -2
  333. data/src/ruby_supportlib/phusion_passenger/loader_shared_helpers.rb +5 -3
  334. data/src/ruby_supportlib/phusion_passenger/platform_info/apache.rb +2 -2
  335. data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +6 -13
  336. data/src/ruby_supportlib/phusion_passenger/platform_info/cxx_portability.rb +29 -30
  337. data/src/ruby_supportlib/phusion_passenger/request_handler/thread_handler.rb +2 -3
  338. data/src/ruby_supportlib/phusion_passenger/standalone/config_utils.rb +2 -0
  339. data/src/ruby_supportlib/phusion_passenger/standalone/start_command/builtin_engine.rb +1 -1
  340. data/src/ruby_supportlib/phusion_passenger/utils/json.rb +1 -1
  341. data/src/ruby_supportlib/phusion_passenger/utils/terminal_choice_menu.rb +1 -1
  342. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/gdb_controller.rb +1 -1
  343. data/src/ruby_supportlib/phusion_passenger.rb +8 -8
  344. metadata +26 -99
  345. data/src/cxx_supportlib/vendor-modified/boost/align/aligned_alloc.hpp +0 -47
  346. data/src/cxx_supportlib/vendor-modified/boost/align/detail/aligned_alloc_posix.hpp +0 -41
  347. data/src/cxx_supportlib/vendor-modified/boost/align/detail/aligned_alloc_sunos.hpp +0 -34
  348. data/src/cxx_supportlib/vendor-modified/boost/align/detail/is_alignment.hpp +0 -28
  349. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/pause.hpp +0 -68
  350. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/conditional.hpp +0 -42
  351. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/integral_constant.hpp +0 -46
  352. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_enum.hpp +0 -42
  353. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_function.hpp +0 -42
  354. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_nothrow_default_constructible.hpp +0 -46
  355. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/remove_cv.hpp +0 -42
  356. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_on_address.hpp +0 -64
  357. data/src/cxx_supportlib/vendor-modified/boost/cerrno.hpp +0 -15
  358. data/src/cxx_supportlib/vendor-modified/boost/detail/indirect_traits.hpp +0 -195
  359. data/src/cxx_supportlib/vendor-modified/boost/detail/select_type.hpp +0 -36
  360. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/enable_if.hpp +0 -83
  361. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/internals.hpp +0 -35
  362. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/regex.cpp +0 -120
  363. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/regex_debug.cpp +0 -59
  364. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/static_mutex.cpp +0 -189
  365. data/src/cxx_supportlib/vendor-modified/boost/libs/system/src/error_code.cpp +0 -31
  366. data/src/cxx_supportlib/vendor-modified/boost/regex/config/borland.hpp +0 -72
  367. data/src/cxx_supportlib/vendor-modified/boost/regex/config/cwchar.hpp +0 -207
  368. data/src/cxx_supportlib/vendor-modified/boost/regex/pending/static_mutex.hpp +0 -182
  369. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex.hpp +0 -797
  370. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_creator.hpp +0 -1598
  371. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_parser.hpp +0 -3174
  372. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/c_regex_traits.hpp +0 -511
  373. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/char_regex_traits.hpp +0 -81
  374. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/cpp_regex_traits.hpp +0 -1237
  375. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/cregex.hpp +0 -213
  376. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/error_type.hpp +0 -59
  377. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/icu.hpp +0 -1516
  378. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/indexed_bit_flag.hpp +0 -54
  379. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/iterator_category.hpp +0 -91
  380. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/iterator_traits.hpp +0 -135
  381. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_flags.hpp +0 -161
  382. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_results.hpp +0 -716
  383. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/mem_block_cache.hpp +0 -183
  384. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/object_cache.hpp +0 -171
  385. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/pattern_except.hpp +0 -128
  386. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher.hpp +0 -645
  387. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_common.hpp +0 -1030
  388. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_non_recursive.hpp +0 -1947
  389. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_recursive.hpp +0 -1131
  390. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/primary_transform.hpp +0 -146
  391. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/protected_call.hpp +0 -83
  392. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regbase.hpp +0 -180
  393. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex.hpp +0 -166
  394. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_format.hpp +0 -1158
  395. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_fwd.hpp +0 -73
  396. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_grep.hpp +0 -155
  397. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_iterator.hpp +0 -195
  398. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_match.hpp +0 -382
  399. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_merge.hpp +0 -93
  400. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_raw_buffer.hpp +0 -241
  401. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_replace.hpp +0 -99
  402. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_search.hpp +0 -217
  403. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_split.hpp +0 -174
  404. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_token_iterator.hpp +0 -327
  405. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits.hpp +0 -189
  406. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits_defaults.hpp +0 -997
  407. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_workaround.hpp +0 -237
  408. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/states.hpp +0 -321
  409. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/sub_match.hpp +0 -516
  410. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/syntax_type.hpp +0 -105
  411. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/u32regex_iterator.hpp +0 -185
  412. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/u32regex_token_iterator.hpp +0 -360
  413. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/unicode_iterator.hpp +0 -871
  414. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/w32_regex_traits.hpp +0 -1229
  415. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_gcc.hpp +0 -79
  416. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_gcc_atomic.hpp +0 -63
  417. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_gcc_x86.hpp +0 -88
  418. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_pt.hpp +0 -104
  419. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_spin.hpp +0 -69
  420. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_sync.hpp +0 -72
  421. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp +0 -163
  422. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_aix.hpp +0 -152
  423. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp +0 -185
  424. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_atomic.hpp +0 -148
  425. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp +0 -170
  426. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp +0 -200
  427. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp +0 -194
  428. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp +0 -179
  429. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp +0 -186
  430. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_pt.hpp +0 -147
  431. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp +0 -174
  432. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_spin.hpp +0 -141
  433. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_sync.hpp +0 -165
  434. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp +0 -163
  435. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_has_gcc_intrinsics.hpp +0 -30
  436. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_has_sync_intrinsics.hpp +0 -69
  437. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_gcc_arm.hpp +0 -128
  438. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_nt.hpp +0 -96
  439. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_pt.hpp +0 -86
  440. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_sync.hpp +0 -94
@@ -0,0 +1,339 @@
1
+ /* boost random/generalized_inverse_gaussian_distribution.hpp header file
2
+ *
3
+ * Copyright Young Geun Kim 2025
4
+ * Distributed under the Boost Software License, Version 1.0. (See
5
+ * accompanying file LICENSE_1_0.txt or copy at
6
+ * http://www.boost.org/LICENSE_1_0.txt)
7
+ *
8
+ * See http://www.boost.org for most recent version including documentation.
9
+ *
10
+ * $Id$
11
+ */
12
+
13
+ #ifndef BOOST_GENERALIZED_RANDOM_INVERSE_GAUSSIAN_DISTRIBUTION_HPP
14
+ #define BOOST_GENERALIZED_RANDOM_INVERSE_GAUSSIAN_DISTRIBUTION_HPP
15
+
16
+ #include <boost/config/no_tr1/cmath.hpp>
17
+ #include <istream>
18
+ #include <iosfwd>
19
+ #include <limits>
20
+ #include <boost/assert.hpp>
21
+ #include <boost/limits.hpp>
22
+ #include <boost/random/detail/config.hpp>
23
+ #include <boost/random/detail/operators.hpp>
24
+ #include <boost/random/uniform_01.hpp>
25
+
26
+ namespace boost {
27
+ namespace random {
28
+
29
+ /**
30
+ * The generalized inverse gaussian distribution is a real-valued distribution with
31
+ * three parameters p, a, and b. It produced values > 0.
32
+ *
33
+ * It has
34
+ * \f$\displaystyle p(x) = \frac{(a / b)^{p / 2}}{2 K_{p}(\sqrt{a b})} x^{p - 1} e^{-(a x + b / 2) / 2}\f$.
35
+ * where \f$\displaystyle K_{p}\f$ is a modified Bessel function of the second kind.
36
+ *
37
+ * The algorithm used is from
38
+ *
39
+ * @blockquote
40
+ * "Random variate generation for the generalized inverse Gaussian distribution",
41
+ * Luc Devroye,
42
+ * Statistics and Computing,
43
+ * Volume 24, 2014, Pages 236 - 246
44
+ * @endblockquote
45
+ */
46
+ template<class RealType = double>
47
+ class generalized_inverse_gaussian_distribution
48
+ {
49
+ public:
50
+ typedef RealType result_type;
51
+ typedef RealType input_type;
52
+
53
+ class param_type {
54
+ public:
55
+ typedef generalized_inverse_gaussian_distribution distribution_type;
56
+
57
+ /**
58
+ * Constructs a @c param_type object from the "p", "a", and "b"
59
+ * parameters.
60
+ *
61
+ * Requires:
62
+ * a > 0 && b >= 0 if p > 0,
63
+ * a > 0 && b > 0 if p == 0,
64
+ * a >= 0 && b > 0 if p < 0
65
+ */
66
+ explicit param_type(RealType p_arg = RealType(1.0),
67
+ RealType a_arg = RealType(1.0),
68
+ RealType b_arg = RealType(1.0))
69
+ : _p(p_arg), _a(a_arg), _b(b_arg)
70
+ {
71
+ BOOST_ASSERT(
72
+ (p_arg > RealType(0) && a_arg > RealType(0) && b_arg >= RealType(0)) ||
73
+ (p_arg == RealType(0) && a_arg > RealType(0) && b_arg > RealType(0)) ||
74
+ (p_arg < RealType(0) && a_arg >= RealType(0) && b_arg > RealType(0))
75
+ );
76
+ }
77
+
78
+ /** Returns the "p" parameter of the distribution. */
79
+ RealType p() const { return _p; }
80
+ /** Returns the "a" parameter of the distribution. */
81
+ RealType a() const { return _a; }
82
+ /** Returns the "b" parameter of the distribution. */
83
+ RealType b() const { return _b; }
84
+
85
+ /** Writes a @c param_type to a @c std::ostream. */
86
+ BOOST_RANDOM_DETAIL_OSTREAM_OPERATOR(os, param_type, parm)
87
+ {
88
+ os << parm._p << ' ' << parm._a << ' ' << parm._b;
89
+ return os;
90
+ }
91
+
92
+ /** Reads a @c param_type from a @c std::istream. */
93
+ BOOST_RANDOM_DETAIL_ISTREAM_OPERATOR(is, param_type, parm)
94
+ {
95
+ is >> parm._p >> std::ws >> parm._a >> std::ws >> parm._b;
96
+ return is;
97
+ }
98
+
99
+ /** Returns true if the two sets of parameters are the same. */
100
+ BOOST_RANDOM_DETAIL_EQUALITY_OPERATOR(param_type, lhs, rhs)
101
+ { return lhs._p == rhs._p && lhs._a == rhs._a && lhs._b == rhs._b; }
102
+
103
+ /** Returns true if the two sets of parameters are different. */
104
+ BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(param_type)
105
+
106
+ private:
107
+ RealType _p;
108
+ RealType _a;
109
+ RealType _b;
110
+ };
111
+
112
+ #ifndef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
113
+ BOOST_STATIC_ASSERT(!std::numeric_limits<RealType>::is_integer);
114
+ #endif
115
+
116
+ /**
117
+ * Constructs an @c generalized_inverse_gaussian_distribution from its "p", "a", and "b" parameters.
118
+ *
119
+ * Requires:
120
+ * a > 0 && b >= 0 if p > 0,
121
+ * a > 0 && b > 0 if p == 0,
122
+ * a >= 0 && b > 0 if p < 0
123
+ */
124
+ explicit generalized_inverse_gaussian_distribution(RealType p_arg = RealType(1.0),
125
+ RealType a_arg = RealType(1.0),
126
+ RealType b_arg = RealType(1.0))
127
+ : _p(p_arg), _a(a_arg), _b(b_arg)
128
+ {
129
+ BOOST_ASSERT(
130
+ (p_arg > RealType(0) && a_arg > RealType(0) && b_arg >= RealType(0)) ||
131
+ (p_arg == RealType(0) && a_arg > RealType(0) && b_arg > RealType(0)) ||
132
+ (p_arg < RealType(0) && a_arg >= RealType(0) && b_arg > RealType(0))
133
+ );
134
+ init();
135
+ }
136
+ /** Constructs an @c generalized_inverse_gaussian_distribution from its parameters. */
137
+ explicit generalized_inverse_gaussian_distribution(const param_type& parm)
138
+ : _p(parm.p()), _a(parm.a()), _b(parm.b())
139
+ {
140
+ init();
141
+ }
142
+
143
+ /**
144
+ * Returns a random variate distributed according to the
145
+ * generalized inverse gaussian distribution.
146
+ */
147
+ template<class URNG>
148
+ RealType operator()(URNG& urng) const
149
+ {
150
+ #ifndef BOOST_NO_STDC_NAMESPACE
151
+ using std::sqrt;
152
+ using std::log;
153
+ using std::min;
154
+ using std::exp;
155
+ using std::cosh;
156
+ #endif
157
+ RealType t = result_type(1);
158
+ RealType s = result_type(1);
159
+ RealType log_concave = -psi(result_type(1));
160
+ if (log_concave >= result_type(.5) && log_concave <= result_type(2)) {
161
+ t = result_type(1);
162
+ } else if (log_concave > result_type(2)) {
163
+ t = sqrt(result_type(2) / (_alpha + _abs_p));
164
+ } else if (log_concave < result_type(.5)) {
165
+ t = log(result_type(4) / (_alpha + result_type(2) * _abs_p));
166
+ }
167
+ log_concave = -psi(result_type(-1));
168
+ if (log_concave >= result_type(.5) && log_concave <= result_type(2)) {
169
+ s = result_type(1);
170
+ } else if (log_concave > result_type(2)) {
171
+ s = sqrt(result_type(4) / (_alpha * cosh(1) + _abs_p));
172
+ } else if (log_concave < result_type(.5)) {
173
+ s = min(result_type(1) / _abs_p, log(result_type(1) + result_type(1) / _alpha + sqrt(result_type(1) / (_alpha * _alpha) + result_type(2) / _alpha)));
174
+ }
175
+ RealType eta = -psi(t);
176
+ RealType zeta = -psi_deriv(t);
177
+ RealType theta = -psi(-s);
178
+ RealType xi = psi_deriv(-s);
179
+ RealType p = result_type(1) / xi;
180
+ RealType r = result_type(1) / zeta;
181
+ RealType t_deriv = t - r * eta;
182
+ RealType s_deriv = s - p * theta;
183
+ RealType q = t_deriv + s_deriv;
184
+ RealType u = result_type(0);
185
+ RealType v = result_type(0);
186
+ RealType w = result_type(0);
187
+ RealType cand = result_type(0);
188
+ do
189
+ {
190
+ u = uniform_01<RealType>()(urng);
191
+ v = uniform_01<RealType>()(urng);
192
+ w = uniform_01<RealType>()(urng);
193
+ if (u < q / (p + q + r)) {
194
+ cand = -s_deriv + q * v;
195
+ } else if (u < (q + r) / (p + q + r)) {
196
+ cand = t_deriv - r * log(v);
197
+ } else {
198
+ cand = -s_deriv + p * log(v);
199
+ }
200
+ } while (w * chi(cand, s, t, s_deriv, t_deriv, eta, zeta, theta, xi) > exp(psi(cand)));
201
+ cand = (_abs_p / _omega + sqrt(result_type(1) + _abs_p * _abs_p / (_omega * _omega))) * exp(cand);
202
+ return _p > 0 ? cand * sqrt(_b / _a) : sqrt(_b / _a) / cand;
203
+ }
204
+
205
+ /**
206
+ * Returns a random variate distributed accordint to the beta
207
+ * distribution with parameters specified by @c param.
208
+ */
209
+ template<class URNG>
210
+ result_type operator()(URNG& urng, const param_type& parm) const
211
+ {
212
+ return generalized_inverse_gaussian_distribution(parm)(urng);
213
+ }
214
+
215
+ /** Returns the "p" parameter of the distribution. */
216
+ RealType p() const { return _p; }
217
+ /** Returns the "a" parameter of the distribution. */
218
+ RealType a() const { return _a; }
219
+ /** Returns the "b" parameter of the distribution. */
220
+ RealType b() const { return _b; }
221
+
222
+ /** Returns the smallest value that the distribution can produce. */
223
+ RealType min BOOST_PREVENT_MACRO_SUBSTITUTION () const
224
+ { return RealType(0.0); }
225
+ /** Returns the largest value that the distribution can produce. */
226
+ RealType max BOOST_PREVENT_MACRO_SUBSTITUTION () const
227
+ { return (std::numeric_limits<RealType>::infinity)(); }
228
+
229
+ /** Returns the parameters of the distribution. */
230
+ param_type param() const { return param_type(_p, _a, _b); }
231
+ /** Sets the parameters of the distribution. */
232
+ void param(const param_type& parm)
233
+ {
234
+ _p = parm.p();
235
+ _a = parm.a();
236
+ _b = parm.b();
237
+ init();
238
+ }
239
+
240
+ /**
241
+ * Effects: Subsequent uses of the distribution do not depend
242
+ * on values produced by any engine prior to invoking reset.
243
+ */
244
+ void reset() { }
245
+
246
+ /** Writes an @c generalized_inverse_gaussian_distribution to a @c std::ostream. */
247
+ BOOST_RANDOM_DETAIL_OSTREAM_OPERATOR(os, generalized_inverse_gaussian_distribution, wd)
248
+ {
249
+ os << wd.param();
250
+ return os;
251
+ }
252
+
253
+ /** Reads an @c generalized_inverse_gaussian_distribution from a @c std::istream. */
254
+ BOOST_RANDOM_DETAIL_ISTREAM_OPERATOR(is, generalized_inverse_gaussian_distribution, wd)
255
+ {
256
+ param_type parm;
257
+ if(is >> parm) {
258
+ wd.param(parm);
259
+ }
260
+ return is;
261
+ }
262
+
263
+ /**
264
+ * Returns true if the two instances of @c generalized_inverse_gaussian_distribution will
265
+ * return identical sequences of values given equal generators.
266
+ */
267
+ BOOST_RANDOM_DETAIL_EQUALITY_OPERATOR(generalized_inverse_gaussian_distribution, lhs, rhs)
268
+ { return lhs._p == rhs._p && lhs._a == rhs._a && lhs._b == rhs._b; }
269
+
270
+ /**
271
+ * Returns true if the two instances of @c generalized_inverse_gaussian_distribution will
272
+ * return different sequences of values given equal generators.
273
+ */
274
+ BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(generalized_inverse_gaussian_distribution)
275
+
276
+ private:
277
+ RealType _p;
278
+ RealType _a;
279
+ RealType _b;
280
+ // some data precomputed from the parameters
281
+ RealType _abs_p;
282
+ RealType _omega;
283
+ RealType _alpha;
284
+
285
+ /// \cond hide_private_members
286
+ void init()
287
+ {
288
+ #ifndef BOOST_NO_STDC_NAMESPACE
289
+ using std::abs;
290
+ using std::sqrt;
291
+ #endif
292
+ _abs_p = abs(_p);
293
+ _omega = sqrt(_a * _b); // two-parameter representation (p, omega)
294
+ _alpha = sqrt(_omega * _omega + _abs_p * _abs_p) - _abs_p;
295
+ }
296
+
297
+ result_type psi(const RealType& x) const
298
+ {
299
+ #ifndef BOOST_NO_STDC_NAMESPACE
300
+ using std::cosh;
301
+ using std::exp;
302
+ #endif
303
+ return -_alpha * (cosh(x) - result_type(1)) - _abs_p * (exp(x) - x - result_type(1));
304
+ }
305
+
306
+ result_type psi_deriv(const RealType& x) const
307
+ {
308
+ #ifndef BOOST_NO_STDC_NAMESPACE
309
+ using std::sinh;
310
+ using std::exp;
311
+ #endif
312
+ return -_alpha * sinh(x) - _abs_p * (exp(x) - result_type(1));
313
+ }
314
+
315
+ static result_type chi(const RealType& x,
316
+ const RealType& s, const RealType& t,
317
+ const RealType& s_deriv, const RealType& t_deriv,
318
+ const RealType& eta, const RealType& zeta, const RealType& theta, const RealType& xi)
319
+ {
320
+ #ifndef BOOST_NO_STDC_NAMESPACE
321
+ using std::exp;
322
+ #endif
323
+ if (x >= -s_deriv && x <= t_deriv) {
324
+ return result_type(1);
325
+ } else if (x > t_deriv) {
326
+ return exp(-eta - zeta * (x - t));
327
+ }
328
+ return exp(-theta + xi * (x + s));
329
+ }
330
+ /// \endcond
331
+ };
332
+
333
+ } // namespace random
334
+
335
+ using random::generalized_inverse_gaussian_distribution;
336
+
337
+ } // namespace boost
338
+
339
+ #endif // BOOST_GENERALIZED_RANDOM_INVERSE_GAUSSIAN_DISTRIBUTION_HPP
@@ -23,11 +23,9 @@
23
23
  #include <boost/core/cmath.hpp>
24
24
  #include <boost/random/detail/operators.hpp>
25
25
  #include <boost/random/detail/vector_io.hpp>
26
+ #include <boost/random/detail/size.hpp>
26
27
  #include <boost/random/discrete_distribution.hpp>
27
28
  #include <boost/random/exponential_distribution.hpp>
28
- #include <boost/range/begin.hpp>
29
- #include <boost/range/end.hpp>
30
- #include <boost/range/size.hpp>
31
29
  #include <boost/type_traits/has_pre_increment.hpp>
32
30
  #include <cmath>
33
31
  #include <cstddef>
@@ -294,8 +292,8 @@ class hyperexponential_distribution
294
292
  param_type(ProbRangeT const& prob_range,
295
293
  RateRangeT const& rate_range,
296
294
  typename boost::disable_if_c<boost::has_pre_increment<ProbRangeT>::value || boost::has_pre_increment<RateRangeT>::value>::type* = 0)
297
- : probs_(boost::begin(prob_range), boost::end(prob_range)),
298
- rates_(boost::begin(rate_range), boost::end(rate_range))
295
+ : probs_(std::begin(prob_range), std::end(prob_range)),
296
+ rates_(std::begin(rate_range), std::end(rate_range))
299
297
  {
300
298
  hyperexp_detail::normalize(probs_);
301
299
 
@@ -330,8 +328,8 @@ class hyperexponential_distribution
330
328
  // We SFINAE this out of existance if the argument type is
331
329
  // incrementable as in that case the type is probably an iterator.
332
330
  public: template <typename RateIterT>
333
- param_type(RateIterT rate_first,
334
- RateIterT rate_last,
331
+ param_type(RateIterT rate_first,
332
+ RateIterT rate_last,
335
333
  typename boost::enable_if_c<boost::has_pre_increment<RateIterT>::value>::type* = 0)
336
334
  : probs_(std::distance(rate_first, rate_last), 1), // will be normalized below
337
335
  rates_(rate_first, rate_last)
@@ -355,8 +353,8 @@ class hyperexponential_distribution
355
353
  */
356
354
  public: template <typename RateRangeT>
357
355
  param_type(RateRangeT const& rate_range)
358
- : probs_(boost::size(rate_range), 1), // Will be normalized below
359
- rates_(boost::begin(rate_range), boost::end(rate_range))
356
+ : probs_(boost::random::detail::size(rate_range), 1), // Will be normalized below
357
+ rates_(std::begin(rate_range), std::end(rate_range))
360
358
  {
361
359
  hyperexp_detail::normalize(probs_);
362
360
 
@@ -529,7 +527,7 @@ class hyperexponential_distribution
529
527
  return lhs.probs_ == rhs.probs_
530
528
  && lhs.rates_ == rhs.rates_;
531
529
  }
532
-
530
+
533
531
  /** Returns true if the two sets of parameters are the different. */
534
532
  public: BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(param_type)
535
533
 
@@ -608,7 +606,7 @@ class hyperexponential_distribution
608
606
  RateRangeT const& rate_range,
609
607
  typename boost::disable_if_c<boost::has_pre_increment<ProbRangeT>::value || boost::has_pre_increment<RateRangeT>::value>::type* = 0)
610
608
  : dd_(prob_range),
611
- rates_(boost::begin(rate_range), boost::end(rate_range))
609
+ rates_(std::begin(rate_range), std::end(rate_range))
612
610
  {
613
611
  BOOST_ASSERT( hyperexp_detail::check_params(dd_.probabilities(), rates_) );
614
612
  }
@@ -667,8 +665,8 @@ class hyperexponential_distribution
667
665
  */
668
666
  public: template <typename RateRangeT>
669
667
  hyperexponential_distribution(RateRangeT const& rate_range)
670
- : dd_(std::vector<RealT>(boost::size(rate_range), 1)),
671
- rates_(boost::begin(rate_range), boost::end(rate_range))
668
+ : dd_(std::vector<RealT>(boost::random::detail::size(rate_range), 1)),
669
+ rates_(std::begin(rate_range), std::end(rate_range))
672
670
  {
673
671
  BOOST_ASSERT( hyperexp_detail::check_params(dd_.probabilities(), rates_) );
674
672
  }
@@ -854,7 +852,7 @@ class hyperexponential_distribution
854
852
  return lhs.dd_ == rhs.dd_
855
853
  && lhs.rates_ == rhs.rates_;
856
854
  }
857
-
855
+
858
856
  /**
859
857
  * Returns true if the two instances of @c hyperexponential_distribution will
860
858
  * return different sequences of values given equal generators.
@@ -0,0 +1,226 @@
1
+ /* boost random/inverse_gaussian_distribution.hpp header file
2
+ *
3
+ * Copyright Young Geun Kim 2025
4
+ * Distributed under the Boost Software License, Version 1.0. (See
5
+ * accompanying file LICENSE_1_0.txt or copy at
6
+ * http://www.boost.org/LICENSE_1_0.txt)
7
+ *
8
+ * See http://www.boost.org for most recent version including documentation.
9
+ *
10
+ * $Id$
11
+ */
12
+
13
+ #ifndef BOOST_RANDOM_INVERSE_GAUSSIAN_DISTRIBUTION_HPP
14
+ #define BOOST_RANDOM_INVERSE_GAUSSIAN_DISTRIBUTION_HPP
15
+
16
+ #include <boost/config/no_tr1/cmath.hpp>
17
+ #include <istream>
18
+ #include <iosfwd>
19
+ #include <limits>
20
+ #include <boost/assert.hpp>
21
+ #include <boost/limits.hpp>
22
+ #include <boost/random/detail/config.hpp>
23
+ #include <boost/random/detail/operators.hpp>
24
+ #include <boost/random/uniform_01.hpp>
25
+ #include <boost/random/chi_squared_distribution.hpp>
26
+
27
+ namespace boost {
28
+ namespace random {
29
+
30
+ /**
31
+ * The inverse gaussian distribution is a real-valued distribution with
32
+ * two parameters alpha (mean) and beta (shape). It produced values > 0.
33
+ *
34
+ * It has
35
+ * \f$\displaystyle p(x) = \sqrt{\beta / (2 \pi x^3)} \exp(-\frac{\beta (x - \alpha)^2}{2 \alpha^2 x})$.
36
+ *
37
+ * The algorithm used is from
38
+ *
39
+ * @blockquote
40
+ * "Generating Random Variates Using Transformations with Multiple Roots",
41
+ * Michael, J. R., Schucany, W. R. and Haas, R. W.,
42
+ * The American Statistician,
43
+ * Volume 30, Issue 2, 1976, Pages 88 - 90
44
+ * @endblockquote
45
+ */
46
+ template<class RealType = double>
47
+ class inverse_gaussian_distribution
48
+ {
49
+ public:
50
+ typedef RealType result_type;
51
+ typedef RealType input_type;
52
+
53
+ class param_type {
54
+ public:
55
+ typedef inverse_gaussian_distribution distribution_type;
56
+
57
+ /**
58
+ * Constructs a @c param_type object from the "alpha" and "beta"
59
+ * parameters.
60
+ *
61
+ * Requires: alpha > 0 && beta > 0
62
+ */
63
+ explicit param_type(RealType alpha_arg = RealType(1.0),
64
+ RealType beta_arg = RealType(1.0))
65
+ : _alpha(alpha_arg), _beta(beta_arg)
66
+ {
67
+ BOOST_ASSERT(alpha_arg > 0);
68
+ BOOST_ASSERT(beta_arg > 0);
69
+ }
70
+
71
+ /** Returns the "alpha" parameter of the distribution. */
72
+ RealType alpha() const { return _alpha; }
73
+ /** Returns the "beta" parameter of the distribution. */
74
+ RealType beta() const { return _beta; }
75
+
76
+ /** Writes a @c param_type to a @c std::ostream. */
77
+ BOOST_RANDOM_DETAIL_OSTREAM_OPERATOR(os, param_type, parm)
78
+ { os << parm._alpha << ' ' << parm._beta; return os; }
79
+
80
+ /** Reads a @c param_type from a @c std::istream. */
81
+ BOOST_RANDOM_DETAIL_ISTREAM_OPERATOR(is, param_type, parm)
82
+ { is >> parm._alpha >> std::ws >> parm._beta; return is; }
83
+
84
+ /** Returns true if the two sets of parameters are the same. */
85
+ BOOST_RANDOM_DETAIL_EQUALITY_OPERATOR(param_type, lhs, rhs)
86
+ { return lhs._alpha == rhs._alpha && lhs._beta == rhs._beta; }
87
+
88
+ /** Returns true if the two sets fo parameters are different. */
89
+ BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(param_type)
90
+
91
+ private:
92
+ RealType _alpha;
93
+ RealType _beta;
94
+ };
95
+
96
+ #ifndef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
97
+ BOOST_STATIC_ASSERT(!std::numeric_limits<RealType>::is_integer);
98
+ #endif
99
+
100
+ /**
101
+ * Constructs an @c inverse_gaussian_distribution from its "alpha" and "beta" parameters.
102
+ *
103
+ * Requires: alpha > 0, beta > 0
104
+ */
105
+ explicit inverse_gaussian_distribution(RealType alpha_arg = RealType(1.0),
106
+ RealType beta_arg = RealType(1.0))
107
+ : _alpha(alpha_arg), _beta(beta_arg)
108
+ {
109
+ BOOST_ASSERT(alpha_arg > 0);
110
+ BOOST_ASSERT(beta_arg > 0);
111
+ init();
112
+ }
113
+
114
+ /** Constructs an @c inverse_gaussian_distribution from its parameters. */
115
+ explicit inverse_gaussian_distribution(const param_type& parm)
116
+ : _alpha(parm.alpha()), _beta(parm.beta())
117
+ {
118
+ init();
119
+ }
120
+
121
+ /**
122
+ * Returns a random variate distributed according to the
123
+ * inverse gaussian distribution.
124
+ */
125
+ template<class URNG>
126
+ RealType operator()(URNG& urng) const
127
+ {
128
+ #ifndef BOOST_NO_STDC_NAMESPACE
129
+ using std::sqrt;
130
+ #endif
131
+ RealType w = _alpha * chi_squared_distribution<RealType>(result_type(1))(urng);
132
+ RealType cand = _alpha + _c * (w - sqrt(w * (result_type(4) * _beta + w)));
133
+ RealType u = uniform_01<RealType>()(urng);
134
+ if (u < _alpha / (_alpha + cand)) {
135
+ return cand;
136
+ }
137
+ return _alpha * _alpha / cand;
138
+ }
139
+
140
+ /**
141
+ * Returns a random variate distributed accordint to the beta
142
+ * distribution with parameters specified by @c param.
143
+ */
144
+ template<class URNG>
145
+ RealType operator()(URNG& urng, const param_type& parm) const
146
+ {
147
+ return inverse_gaussian_distribution(parm)(urng);
148
+ }
149
+
150
+ /** Returns the "alpha" parameter of the distribution. */
151
+ RealType alpha() const { return _alpha; }
152
+ /** Returns the "beta" parameter of the distribution. */
153
+ RealType beta() const { return _beta; }
154
+
155
+ /** Returns the smallest value that the distribution can produce. */
156
+ RealType min BOOST_PREVENT_MACRO_SUBSTITUTION () const
157
+ { return RealType(0.0); }
158
+ /** Returns the largest value that the distribution can produce. */
159
+ RealType max BOOST_PREVENT_MACRO_SUBSTITUTION () const
160
+ { return (std::numeric_limits<RealType>::infinity)(); }
161
+
162
+ /** Returns the parameters of the distribution. */
163
+ param_type param() const { return param_type(_alpha, _beta); }
164
+ /** Sets the parameters of the distribution. */
165
+ void param(const param_type& parm)
166
+ {
167
+ _alpha = parm.alpha();
168
+ _beta = parm.beta();
169
+ init();
170
+ }
171
+
172
+ /**
173
+ * Effects: Subsequent uses of the distribution do not depend
174
+ * on values produced by any engine prior to invoking reset.
175
+ */
176
+ void reset() { }
177
+
178
+ /** Writes an @c inverse_gaussian_distribution to a @c std::ostream. */
179
+ BOOST_RANDOM_DETAIL_OSTREAM_OPERATOR(os, inverse_gaussian_distribution, wd)
180
+ {
181
+ os << wd.param();
182
+ return os;
183
+ }
184
+
185
+ /** Reads an @c inverse_gaussian_distribution from a @c std::istream. */
186
+ BOOST_RANDOM_DETAIL_ISTREAM_OPERATOR(is, inverse_gaussian_distribution, wd)
187
+ {
188
+ param_type parm;
189
+ if(is >> parm) {
190
+ wd.param(parm);
191
+ }
192
+ return is;
193
+ }
194
+
195
+ /**
196
+ * Returns true if the two instances of @c inverse_gaussian_distribution will
197
+ * return identical sequences of values given equal generators.
198
+ */
199
+ BOOST_RANDOM_DETAIL_EQUALITY_OPERATOR(inverse_gaussian_distribution, lhs, rhs)
200
+ { return lhs._alpha == rhs._alpha && lhs._beta == rhs._beta; }
201
+
202
+ /**
203
+ * Returns true if the two instances of @c inverse_gaussian_distribution will
204
+ * return different sequences of values given equal generators.
205
+ */
206
+ BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(inverse_gaussian_distribution)
207
+
208
+ private:
209
+ result_type _alpha;
210
+ result_type _beta;
211
+ // some data precomputed from the parameters
212
+ result_type _c;
213
+
214
+ void init()
215
+ {
216
+ _c = _alpha / (result_type(2) * _beta);
217
+ }
218
+ };
219
+
220
+ } // namespace random
221
+
222
+ using random::inverse_gaussian_distribution;
223
+
224
+ } // namespace boost
225
+
226
+ #endif // BOOST_RANDOM_INVERSE_GAUSSIAN_DISTRIBUTION_HPP
@@ -434,10 +434,7 @@ private:
434
434
  // already know what they are.
435
435
  for(std::size_t j = 0; j < num_bits; ++j) {
436
436
  if(tmp.i >= n) tmp.twist();
437
- if(j == num_bits - 1)
438
- assert((tmp.x[tmp.i] & 1) == 1);
439
- else
440
- assert((tmp.x[tmp.i] & 1) == 0);
437
+ assert((tmp.x[tmp.i] & 1) == (j == num_bits - 1));
441
438
  ++tmp.i;
442
439
  }
443
440
  detail::polynomial phi;