boost.cxx 0.0.2 → 1.90.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 (327) hide show
  1. package/README.md +29 -2
  2. package/boost/cast.hpp +20 -0
  3. package/boost/numeric/conversion/bounds.hpp +24 -0
  4. package/boost/numeric/conversion/cast.hpp +61 -0
  5. package/boost/numeric/conversion/conversion_traits.hpp +32 -0
  6. package/boost/numeric/conversion/converter.hpp +68 -0
  7. package/boost/numeric/conversion/converter_policies.hpp +194 -0
  8. package/boost/numeric/conversion/detail/bounds.hpp +58 -0
  9. package/boost/numeric/conversion/detail/conversion_traits.hpp +97 -0
  10. package/boost/numeric/conversion/detail/converter.hpp +593 -0
  11. package/boost/numeric/conversion/detail/int_float_mixture.hpp +72 -0
  12. package/boost/numeric/conversion/detail/is_subranged.hpp +234 -0
  13. package/boost/numeric/conversion/detail/meta.hpp +120 -0
  14. package/boost/numeric/conversion/detail/numeric_cast_traits.hpp +138 -0
  15. package/boost/numeric/conversion/detail/old_numeric_cast.hpp +308 -0
  16. package/boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_common.hpp +1741 -0
  17. package/boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_long_long.hpp +347 -0
  18. package/boost/numeric/conversion/detail/sign_mixture.hpp +72 -0
  19. package/boost/numeric/conversion/detail/udt_builtin_mixture.hpp +69 -0
  20. package/boost/numeric/conversion/int_float_mixture.hpp +30 -0
  21. package/boost/numeric/conversion/int_float_mixture_enum.hpp +29 -0
  22. package/boost/numeric/conversion/is_subranged.hpp +27 -0
  23. package/boost/numeric/conversion/numeric_cast_traits.hpp +31 -0
  24. package/boost/numeric/conversion/sign_mixture.hpp +30 -0
  25. package/boost/numeric/conversion/sign_mixture_enum.hpp +29 -0
  26. package/boost/numeric/conversion/udt_builtin_mixture.hpp +28 -0
  27. package/boost/numeric/conversion/udt_builtin_mixture_enum.hpp +26 -0
  28. package/boost/numeric/interval/arith.hpp +305 -0
  29. package/boost/numeric/interval/arith2.hpp +304 -0
  30. package/boost/numeric/interval/arith3.hpp +69 -0
  31. package/boost/numeric/interval/checking.hpp +130 -0
  32. package/boost/numeric/interval/compare/certain.hpp +113 -0
  33. package/boost/numeric/interval/compare/explicit.hpp +248 -0
  34. package/boost/numeric/interval/compare/lexicographic.hpp +122 -0
  35. package/boost/numeric/interval/compare/possible.hpp +113 -0
  36. package/boost/numeric/interval/compare/set.hpp +101 -0
  37. package/boost/numeric/interval/compare/tribool.hpp +138 -0
  38. package/boost/numeric/interval/compare.hpp +19 -0
  39. package/boost/numeric/interval/constants.hpp +85 -0
  40. package/boost/numeric/interval/detail/alpha_rounding_control.hpp +113 -0
  41. package/boost/numeric/interval/detail/bcc_rounding_control.hpp +57 -0
  42. package/boost/numeric/interval/detail/bugs.hpp +48 -0
  43. package/boost/numeric/interval/detail/c99_rounding_control.hpp +50 -0
  44. package/boost/numeric/interval/detail/c99sub_rounding_control.hpp +43 -0
  45. package/boost/numeric/interval/detail/division.hpp +194 -0
  46. package/boost/numeric/interval/detail/ia64_rounding_control.hpp +83 -0
  47. package/boost/numeric/interval/detail/interval_prototype.hpp +41 -0
  48. package/boost/numeric/interval/detail/msvc_rounding_control.hpp +113 -0
  49. package/boost/numeric/interval/detail/ppc_rounding_control.hpp +99 -0
  50. package/boost/numeric/interval/detail/sparc_rounding_control.hpp +112 -0
  51. package/boost/numeric/interval/detail/test_input.hpp +76 -0
  52. package/boost/numeric/interval/detail/x86_rounding_control.hpp +108 -0
  53. package/boost/numeric/interval/detail/x86gcc_rounding_control.hpp +51 -0
  54. package/boost/numeric/interval/ext/integer.hpp +70 -0
  55. package/boost/numeric/interval/ext/x86_fast_rounding_control.hpp +70 -0
  56. package/boost/numeric/interval/hw_rounding.hpp +73 -0
  57. package/boost/numeric/interval/interval.hpp +450 -0
  58. package/boost/numeric/interval/io.hpp +41 -0
  59. package/boost/numeric/interval/limits.hpp +49 -0
  60. package/boost/numeric/interval/policies.hpp +75 -0
  61. package/boost/numeric/interval/rounded_arith.hpp +120 -0
  62. package/boost/numeric/interval/rounded_transc.hpp +140 -0
  63. package/boost/numeric/interval/rounding.hpp +101 -0
  64. package/boost/numeric/interval/transc.hpp +232 -0
  65. package/boost/numeric/interval/utility.hpp +335 -0
  66. package/boost/numeric/interval/utility_fwd.hpp +172 -0
  67. package/boost/numeric/interval.hpp +32 -0
  68. package/boost/numeric/odeint/algebra/algebra_dispatcher.hpp +86 -0
  69. package/boost/numeric/odeint/algebra/array_algebra.hpp +293 -0
  70. package/boost/numeric/odeint/algebra/default_operations.hpp +599 -0
  71. package/boost/numeric/odeint/algebra/detail/extract_value_type.hpp +51 -0
  72. package/boost/numeric/odeint/algebra/detail/for_each.hpp +165 -0
  73. package/boost/numeric/odeint/algebra/detail/macros.hpp +35 -0
  74. package/boost/numeric/odeint/algebra/detail/norm_inf.hpp +46 -0
  75. package/boost/numeric/odeint/algebra/fusion_algebra.hpp +216 -0
  76. package/boost/numeric/odeint/algebra/fusion_algebra_dispatcher.hpp +48 -0
  77. package/boost/numeric/odeint/algebra/multi_array_algebra.hpp +146 -0
  78. package/boost/numeric/odeint/algebra/norm_result_type.hpp +33 -0
  79. package/boost/numeric/odeint/algebra/operations_dispatcher.hpp +41 -0
  80. package/boost/numeric/odeint/algebra/range_algebra.hpp +142 -0
  81. package/boost/numeric/odeint/algebra/vector_space_algebra.hpp +175 -0
  82. package/boost/numeric/odeint/config.hpp +53 -0
  83. package/boost/numeric/odeint/external/blaze/blaze_algebra_dispatcher.hpp +55 -0
  84. package/boost/numeric/odeint/external/blaze/blaze_resize.hpp +64 -0
  85. package/boost/numeric/odeint/external/compute/compute.hpp +27 -0
  86. package/boost/numeric/odeint/external/compute/compute_algebra.hpp +65 -0
  87. package/boost/numeric/odeint/external/compute/compute_algebra_dispatcher.hpp +41 -0
  88. package/boost/numeric/odeint/external/compute/compute_operations.hpp +198 -0
  89. package/boost/numeric/odeint/external/compute/compute_operations_dispatcher.hpp +44 -0
  90. package/boost/numeric/odeint/external/compute/compute_resize.hpp +92 -0
  91. package/boost/numeric/odeint/external/eigen/eigen.hpp +27 -0
  92. package/boost/numeric/odeint/external/eigen/eigen_algebra.hpp +98 -0
  93. package/boost/numeric/odeint/external/eigen/eigen_algebra_dispatcher.hpp +49 -0
  94. package/boost/numeric/odeint/external/eigen/eigen_resize.hpp +103 -0
  95. package/boost/numeric/odeint/external/gsl/gsl_wrapper.hpp +228 -0
  96. package/boost/numeric/odeint/external/mkl/mkl_operations.hpp +181 -0
  97. package/boost/numeric/odeint/external/mpi/mpi.hpp +25 -0
  98. package/boost/numeric/odeint/external/mpi/mpi_nested_algebra.hpp +62 -0
  99. package/boost/numeric/odeint/external/mpi/mpi_state.hpp +113 -0
  100. package/boost/numeric/odeint/external/mpi/mpi_vector_state.hpp +95 -0
  101. package/boost/numeric/odeint/external/mtl4/implicit_euler_mtl4.hpp +161 -0
  102. package/boost/numeric/odeint/external/mtl4/mtl4.hpp +23 -0
  103. package/boost/numeric/odeint/external/mtl4/mtl4_algebra_dispatcher.hpp +99 -0
  104. package/boost/numeric/odeint/external/mtl4/mtl4_resize.hpp +134 -0
  105. package/boost/numeric/odeint/external/nt2/nt2_algebra_dispatcher.hpp +25 -0
  106. package/boost/numeric/odeint/external/nt2/nt2_copy.hpp +33 -0
  107. package/boost/numeric/odeint/external/nt2/nt2_norm_inf.hpp +31 -0
  108. package/boost/numeric/odeint/external/nt2/nt2_resize.hpp +54 -0
  109. package/boost/numeric/odeint/external/openmp/openmp.hpp +31 -0
  110. package/boost/numeric/odeint/external/openmp/openmp_nested_algebra.hpp +281 -0
  111. package/boost/numeric/odeint/external/openmp/openmp_range_algebra.hpp +276 -0
  112. package/boost/numeric/odeint/external/openmp/openmp_state.hpp +172 -0
  113. package/boost/numeric/odeint/external/thrust/thrust.hpp +27 -0
  114. package/boost/numeric/odeint/external/thrust/thrust_algebra.hpp +217 -0
  115. package/boost/numeric/odeint/external/thrust/thrust_algebra_dispatcher.hpp +118 -0
  116. package/boost/numeric/odeint/external/thrust/thrust_operations.hpp +233 -0
  117. package/boost/numeric/odeint/external/thrust/thrust_operations_dispatcher.hpp +118 -0
  118. package/boost/numeric/odeint/external/thrust/thrust_resize.hpp +197 -0
  119. package/boost/numeric/odeint/external/vexcl/vexcl.hpp +28 -0
  120. package/boost/numeric/odeint/external/vexcl/vexcl_abs.hpp +61 -0
  121. package/boost/numeric/odeint/external/vexcl/vexcl_algebra_dispatcher.hpp +51 -0
  122. package/boost/numeric/odeint/external/vexcl/vexcl_copy.hpp +55 -0
  123. package/boost/numeric/odeint/external/vexcl/vexcl_norm_inf.hpp +68 -0
  124. package/boost/numeric/odeint/external/vexcl/vexcl_resize.hpp +96 -0
  125. package/boost/numeric/odeint/external/vexcl/vexcl_same_instance.hpp +58 -0
  126. package/boost/numeric/odeint/external/viennacl/viennacl_operations.hpp +226 -0
  127. package/boost/numeric/odeint/external/viennacl/viennacl_resize.hpp +68 -0
  128. package/boost/numeric/odeint/integrate/check_adapter.hpp +222 -0
  129. package/boost/numeric/odeint/integrate/detail/functors.hpp +70 -0
  130. package/boost/numeric/odeint/integrate/detail/integrate_adaptive.hpp +161 -0
  131. package/boost/numeric/odeint/integrate/detail/integrate_const.hpp +167 -0
  132. package/boost/numeric/odeint/integrate/detail/integrate_n_steps.hpp +161 -0
  133. package/boost/numeric/odeint/integrate/detail/integrate_times.hpp +179 -0
  134. package/boost/numeric/odeint/integrate/integrate.hpp +133 -0
  135. package/boost/numeric/odeint/integrate/integrate_adaptive.hpp +127 -0
  136. package/boost/numeric/odeint/integrate/integrate_const.hpp +195 -0
  137. package/boost/numeric/odeint/integrate/integrate_n_steps.hpp +178 -0
  138. package/boost/numeric/odeint/integrate/integrate_times.hpp +220 -0
  139. package/boost/numeric/odeint/integrate/max_step_checker.hpp +114 -0
  140. package/boost/numeric/odeint/integrate/null_observer.hpp +38 -0
  141. package/boost/numeric/odeint/integrate/observer_collection.hpp +55 -0
  142. package/boost/numeric/odeint/iterator/adaptive_iterator.hpp +183 -0
  143. package/boost/numeric/odeint/iterator/adaptive_time_iterator.hpp +175 -0
  144. package/boost/numeric/odeint/iterator/const_step_iterator.hpp +180 -0
  145. package/boost/numeric/odeint/iterator/const_step_time_iterator.hpp +173 -0
  146. package/boost/numeric/odeint/iterator/detail/ode_iterator_base.hpp +199 -0
  147. package/boost/numeric/odeint/iterator/impl/adaptive_iterator_impl.hpp +251 -0
  148. package/boost/numeric/odeint/iterator/impl/const_step_iterator_impl.hpp +228 -0
  149. package/boost/numeric/odeint/iterator/impl/n_step_iterator_impl.hpp +239 -0
  150. package/boost/numeric/odeint/iterator/impl/times_iterator_impl.hpp +369 -0
  151. package/boost/numeric/odeint/iterator/integrate/detail/functors.hpp +70 -0
  152. package/boost/numeric/odeint/iterator/integrate/detail/integrate_adaptive.hpp +121 -0
  153. package/boost/numeric/odeint/iterator/integrate/detail/integrate_const.hpp +111 -0
  154. package/boost/numeric/odeint/iterator/integrate/detail/integrate_n_steps.hpp +107 -0
  155. package/boost/numeric/odeint/iterator/integrate/detail/integrate_times.hpp +67 -0
  156. package/boost/numeric/odeint/iterator/integrate/integrate.hpp +111 -0
  157. package/boost/numeric/odeint/iterator/integrate/integrate_adaptive.hpp +127 -0
  158. package/boost/numeric/odeint/iterator/integrate/integrate_const.hpp +158 -0
  159. package/boost/numeric/odeint/iterator/integrate/integrate_n_steps.hpp +123 -0
  160. package/boost/numeric/odeint/iterator/integrate/integrate_times.hpp +131 -0
  161. package/boost/numeric/odeint/iterator/integrate/null_observer.hpp +38 -0
  162. package/boost/numeric/odeint/iterator/integrate/observer_collection.hpp +55 -0
  163. package/boost/numeric/odeint/iterator/n_step_iterator.hpp +168 -0
  164. package/boost/numeric/odeint/iterator/n_step_time_iterator.hpp +169 -0
  165. package/boost/numeric/odeint/iterator/times_iterator.hpp +189 -0
  166. package/boost/numeric/odeint/iterator/times_time_iterator.hpp +193 -0
  167. package/boost/numeric/odeint/stepper/adams_bashforth.hpp +418 -0
  168. package/boost/numeric/odeint/stepper/adams_bashforth_moulton.hpp +313 -0
  169. package/boost/numeric/odeint/stepper/adams_moulton.hpp +201 -0
  170. package/boost/numeric/odeint/stepper/adaptive_adams_bashforth_moulton.hpp +237 -0
  171. package/boost/numeric/odeint/stepper/base/algebra_stepper_base.hpp +91 -0
  172. package/boost/numeric/odeint/stepper/base/explicit_error_stepper_base.hpp +588 -0
  173. package/boost/numeric/odeint/stepper/base/explicit_error_stepper_fsal_base.hpp +677 -0
  174. package/boost/numeric/odeint/stepper/base/explicit_stepper_base.hpp +415 -0
  175. package/boost/numeric/odeint/stepper/base/symplectic_rkn_stepper_base.hpp +431 -0
  176. package/boost/numeric/odeint/stepper/bulirsch_stoer.hpp +642 -0
  177. package/boost/numeric/odeint/stepper/bulirsch_stoer_dense_out.hpp +838 -0
  178. package/boost/numeric/odeint/stepper/controlled_adams_bashforth_moulton.hpp +322 -0
  179. package/boost/numeric/odeint/stepper/controlled_runge_kutta.hpp +1018 -0
  180. package/boost/numeric/odeint/stepper/controlled_step_result.hpp +42 -0
  181. package/boost/numeric/odeint/stepper/dense_output_runge_kutta.hpp +476 -0
  182. package/boost/numeric/odeint/stepper/detail/adams_bashforth_call_algebra.hpp +148 -0
  183. package/boost/numeric/odeint/stepper/detail/adams_bashforth_coefficients.hpp +168 -0
  184. package/boost/numeric/odeint/stepper/detail/adams_moulton_call_algebra.hpp +148 -0
  185. package/boost/numeric/odeint/stepper/detail/adams_moulton_coefficients.hpp +168 -0
  186. package/boost/numeric/odeint/stepper/detail/adaptive_adams_coefficients.hpp +207 -0
  187. package/boost/numeric/odeint/stepper/detail/generic_rk_algorithm.hpp +247 -0
  188. package/boost/numeric/odeint/stepper/detail/generic_rk_call_algebra.hpp +263 -0
  189. package/boost/numeric/odeint/stepper/detail/generic_rk_operations.hpp +252 -0
  190. package/boost/numeric/odeint/stepper/detail/pid_step_adjuster.hpp +199 -0
  191. package/boost/numeric/odeint/stepper/detail/pid_step_adjuster_coefficients.hpp +180 -0
  192. package/boost/numeric/odeint/stepper/detail/rotating_buffer.hpp +84 -0
  193. package/boost/numeric/odeint/stepper/euler.hpp +166 -0
  194. package/boost/numeric/odeint/stepper/explicit_error_generic_rk.hpp +255 -0
  195. package/boost/numeric/odeint/stepper/explicit_generic_rk.hpp +246 -0
  196. package/boost/numeric/odeint/stepper/extrapolation_stepper.hpp +288 -0
  197. package/boost/numeric/odeint/stepper/generation/generation_controlled_adams_bashforth_moulton.hpp +59 -0
  198. package/boost/numeric/odeint/stepper/generation/generation_controlled_runge_kutta.hpp +61 -0
  199. package/boost/numeric/odeint/stepper/generation/generation_dense_output_runge_kutta.hpp +65 -0
  200. package/boost/numeric/odeint/stepper/generation/generation_rosenbrock4.hpp +79 -0
  201. package/boost/numeric/odeint/stepper/generation/generation_runge_kutta_cash_karp54.hpp +47 -0
  202. package/boost/numeric/odeint/stepper/generation/generation_runge_kutta_cash_karp54_classic.hpp +48 -0
  203. package/boost/numeric/odeint/stepper/generation/generation_runge_kutta_dopri5.hpp +56 -0
  204. package/boost/numeric/odeint/stepper/generation/generation_runge_kutta_fehlberg78.hpp +46 -0
  205. package/boost/numeric/odeint/stepper/generation/make_controlled.hpp +103 -0
  206. package/boost/numeric/odeint/stepper/generation/make_dense_output.hpp +100 -0
  207. package/boost/numeric/odeint/stepper/generation.hpp +37 -0
  208. package/boost/numeric/odeint/stepper/implicit_euler.hpp +170 -0
  209. package/boost/numeric/odeint/stepper/modified_midpoint.hpp +315 -0
  210. package/boost/numeric/odeint/stepper/rosenbrock4.hpp +346 -0
  211. package/boost/numeric/odeint/stepper/rosenbrock4_controller.hpp +240 -0
  212. package/boost/numeric/odeint/stepper/rosenbrock4_dense_output.hpp +204 -0
  213. package/boost/numeric/odeint/stepper/runge_kutta4.hpp +181 -0
  214. package/boost/numeric/odeint/stepper/runge_kutta4_classic.hpp +232 -0
  215. package/boost/numeric/odeint/stepper/runge_kutta_cash_karp54.hpp +231 -0
  216. package/boost/numeric/odeint/stepper/runge_kutta_cash_karp54_classic.hpp +289 -0
  217. package/boost/numeric/odeint/stepper/runge_kutta_dopri5.hpp +403 -0
  218. package/boost/numeric/odeint/stepper/runge_kutta_fehlberg78.hpp +374 -0
  219. package/boost/numeric/odeint/stepper/stepper_categories.hpp +66 -0
  220. package/boost/numeric/odeint/stepper/symplectic_euler.hpp +136 -0
  221. package/boost/numeric/odeint/stepper/symplectic_rkn_sb3a_m4_mclachlan.hpp +160 -0
  222. package/boost/numeric/odeint/stepper/symplectic_rkn_sb3a_mclachlan.hpp +162 -0
  223. package/boost/numeric/odeint/stepper/velocity_verlet.hpp +375 -0
  224. package/boost/numeric/odeint/tools/assert.hpp +30 -0
  225. package/boost/numeric/odeint/tools/is_standalone.hpp +21 -0
  226. package/boost/numeric/odeint/tools/traits.hpp +39 -0
  227. package/boost/numeric/odeint/util/bind.hpp +35 -0
  228. package/boost/numeric/odeint/util/copy.hpp +88 -0
  229. package/boost/numeric/odeint/util/detail/is_range.hpp +127 -0
  230. package/boost/numeric/odeint/util/detail/less_with_sign.hpp +78 -0
  231. package/boost/numeric/odeint/util/is_pair.hpp +42 -0
  232. package/boost/numeric/odeint/util/is_resizeable.hpp +84 -0
  233. package/boost/numeric/odeint/util/multi_array_adaption.hpp +131 -0
  234. package/boost/numeric/odeint/util/n_ary_helper.hpp +96 -0
  235. package/boost/numeric/odeint/util/odeint_error.hpp +77 -0
  236. package/boost/numeric/odeint/util/resize.hpp +120 -0
  237. package/boost/numeric/odeint/util/resizer.hpp +94 -0
  238. package/boost/numeric/odeint/util/same_instance.hpp +56 -0
  239. package/boost/numeric/odeint/util/same_size.hpp +117 -0
  240. package/boost/numeric/odeint/util/split.hpp +64 -0
  241. package/boost/numeric/odeint/util/split_adaptor.hpp +103 -0
  242. package/boost/numeric/odeint/util/state_wrapper.hpp +50 -0
  243. package/boost/numeric/odeint/util/stepper_traits.hpp +63 -0
  244. package/boost/numeric/odeint/util/ublas_matrix_expression.patch +6 -0
  245. package/boost/numeric/odeint/util/ublas_wrapper.hpp +297 -0
  246. package/boost/numeric/odeint/util/unit_helper.hpp +151 -0
  247. package/boost/numeric/odeint/util/unwrap_reference.hpp +141 -0
  248. package/boost/numeric/odeint/version.hpp +55 -0
  249. package/boost/numeric/odeint.hpp +87 -0
  250. package/boost/numeric/ublas/assignment.hpp +1288 -0
  251. package/boost/numeric/ublas/banded.hpp +2372 -0
  252. package/boost/numeric/ublas/blas.hpp +499 -0
  253. package/boost/numeric/ublas/detail/concepts.hpp +1465 -0
  254. package/boost/numeric/ublas/detail/config.hpp +304 -0
  255. package/boost/numeric/ublas/detail/definitions.hpp +212 -0
  256. package/boost/numeric/ublas/detail/documentation.hpp +33 -0
  257. package/boost/numeric/ublas/detail/duff.hpp +56 -0
  258. package/boost/numeric/ublas/detail/iterator.hpp +1448 -0
  259. package/boost/numeric/ublas/detail/matrix_assign.hpp +1785 -0
  260. package/boost/numeric/ublas/detail/raw.hpp +878 -0
  261. package/boost/numeric/ublas/detail/returntype_deduction.hpp +174 -0
  262. package/boost/numeric/ublas/detail/temporary.hpp +33 -0
  263. package/boost/numeric/ublas/detail/vector_assign.hpp +609 -0
  264. package/boost/numeric/ublas/doxydoc.hpp +58 -0
  265. package/boost/numeric/ublas/exception.hpp +297 -0
  266. package/boost/numeric/ublas/experimental/sparse_view.hpp +317 -0
  267. package/boost/numeric/ublas/expression_types.hpp +506 -0
  268. package/boost/numeric/ublas/functional.hpp +2112 -0
  269. package/boost/numeric/ublas/fwd.hpp +229 -0
  270. package/boost/numeric/ublas/hermitian.hpp +2633 -0
  271. package/boost/numeric/ublas/io.hpp +355 -0
  272. package/boost/numeric/ublas/lu.hpp +350 -0
  273. package/boost/numeric/ublas/matrix.hpp +6013 -0
  274. package/boost/numeric/ublas/matrix_expression.hpp +5693 -0
  275. package/boost/numeric/ublas/matrix_proxy.hpp +5457 -0
  276. package/boost/numeric/ublas/matrix_sparse.hpp +5773 -0
  277. package/boost/numeric/ublas/matrix_vector.hpp +406 -0
  278. package/boost/numeric/ublas/opencl/elementwise.hpp +508 -0
  279. package/boost/numeric/ublas/opencl/library.hpp +38 -0
  280. package/boost/numeric/ublas/opencl/matrix.hpp +123 -0
  281. package/boost/numeric/ublas/opencl/misc.hpp +182 -0
  282. package/boost/numeric/ublas/opencl/operations.hpp +18 -0
  283. package/boost/numeric/ublas/opencl/prod.hpp +364 -0
  284. package/boost/numeric/ublas/opencl/transpose.hpp +142 -0
  285. package/boost/numeric/ublas/opencl/vector.hpp +90 -0
  286. package/boost/numeric/ublas/opencl.hpp +16 -0
  287. package/boost/numeric/ublas/operation/begin.hpp +318 -0
  288. package/boost/numeric/ublas/operation/c_array.hpp +41 -0
  289. package/boost/numeric/ublas/operation/end.hpp +318 -0
  290. package/boost/numeric/ublas/operation/num_columns.hpp +45 -0
  291. package/boost/numeric/ublas/operation/num_rows.hpp +44 -0
  292. package/boost/numeric/ublas/operation/size.hpp +350 -0
  293. package/boost/numeric/ublas/operation.hpp +830 -0
  294. package/boost/numeric/ublas/operation_blocked.hpp +266 -0
  295. package/boost/numeric/ublas/operation_sparse.hpp +198 -0
  296. package/boost/numeric/ublas/operations.hpp +26 -0
  297. package/boost/numeric/ublas/storage.hpp +2131 -0
  298. package/boost/numeric/ublas/storage_sparse.hpp +578 -0
  299. package/boost/numeric/ublas/symmetric.hpp +2309 -0
  300. package/boost/numeric/ublas/tags.hpp +37 -0
  301. package/boost/numeric/ublas/tensor/algorithms.hpp +345 -0
  302. package/boost/numeric/ublas/tensor/expression.hpp +181 -0
  303. package/boost/numeric/ublas/tensor/expression_evaluation.hpp +288 -0
  304. package/boost/numeric/ublas/tensor/extents.hpp +335 -0
  305. package/boost/numeric/ublas/tensor/functions.hpp +558 -0
  306. package/boost/numeric/ublas/tensor/index.hpp +89 -0
  307. package/boost/numeric/ublas/tensor/multi_index.hpp +110 -0
  308. package/boost/numeric/ublas/tensor/multi_index_utility.hpp +364 -0
  309. package/boost/numeric/ublas/tensor/multiplication.hpp +945 -0
  310. package/boost/numeric/ublas/tensor/operators_arithmetic.hpp +244 -0
  311. package/boost/numeric/ublas/tensor/operators_comparison.hpp +175 -0
  312. package/boost/numeric/ublas/tensor/ostream.hpp +122 -0
  313. package/boost/numeric/ublas/tensor/storage_traits.hpp +84 -0
  314. package/boost/numeric/ublas/tensor/strides.hpp +251 -0
  315. package/boost/numeric/ublas/tensor/tensor.hpp +734 -0
  316. package/boost/numeric/ublas/tensor.hpp +26 -0
  317. package/boost/numeric/ublas/traits/c_array.hpp +110 -0
  318. package/boost/numeric/ublas/traits/const_iterator_type.hpp +127 -0
  319. package/boost/numeric/ublas/traits/iterator_type.hpp +126 -0
  320. package/boost/numeric/ublas/traits.hpp +753 -0
  321. package/boost/numeric/ublas/triangular.hpp +2775 -0
  322. package/boost/numeric/ublas/vector.hpp +2947 -0
  323. package/boost/numeric/ublas/vector_expression.hpp +1762 -0
  324. package/boost/numeric/ublas/vector_of_vector.hpp +1347 -0
  325. package/boost/numeric/ublas/vector_proxy.hpp +1697 -0
  326. package/boost/numeric/ublas/vector_sparse.hpp +2246 -0
  327. package/package.json +3 -7
package/README.md CHANGED
@@ -11,9 +11,36 @@ Run:
11
11
  $ npm i boost.cxx
12
12
  ```
13
13
 
14
- And then include `boost.cxx` as follows:
15
- ```c
14
+ And then include `boost/thread.hpp` as follows:
15
+
16
+ ```cxx
17
+ // main.cxx
16
18
  #include "node_modules/boost.cxx/boost/thread.hpp"
19
+
20
+ int main() { /* ... */ }
21
+ ```
22
+
23
+ And then compile with `clang++` or `g++` as usual.
24
+
25
+ ```bash
26
+ $ clang++ main.cxx # or, use g++
27
+ $ g++ main.cxx
28
+ ```
29
+
30
+ You may also use a simpler approach:
31
+
32
+ ```cxx
33
+ // main.cxx
34
+ #include <boost/thread.hpp>
35
+
36
+ int main() { /* ... */ }
37
+ ```
38
+
39
+ If you add the path `node_modules/boost.cxx` to your compiler's include paths.
40
+
41
+ ```bash
42
+ $ clang++ -I./node_modules/boost.cxx main.cxx # or, use g++
43
+ $ g++ -I./node_modules/boost.cxx main.cxx
17
44
  ```
18
45
 
19
46
  <br>
package/boost/cast.hpp ADDED
@@ -0,0 +1,20 @@
1
+ // boost cast.hpp header file
2
+ //
3
+ // (C) Copyright Antony Polukhin 2014.
4
+ //
5
+ // Distributed under the Boost
6
+ // Software License, Version 1.0. (See accompanying file
7
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
8
+ //
9
+ // See http://www.boost.org/libs/conversion for Documentation.
10
+
11
+ // This is a DEPRECATED header file!
12
+ // Use <boost/polymorphic_cast.hpp> or <boost/numeric/conversion/cast.hpp> instead
13
+
14
+ #ifndef BOOST_CAST_HPP
15
+ #define BOOST_CAST_HPP
16
+
17
+ # include <boost/polymorphic_cast.hpp>
18
+ # include <boost/numeric/conversion/cast.hpp>
19
+
20
+ #endif // BOOST_CAST_HPP
@@ -0,0 +1,24 @@
1
+ // (c) Copyright Fernando Luis Cacciola Carballal 2000-2004
2
+ // Use, modification, and distribution is subject to the Boost Software
3
+ // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
4
+ // http://www.boost.org/LICENSE_1_0.txt)
5
+
6
+ // See library home page at http://www.boost.org/libs/numeric/conversion
7
+ //
8
+ // Contact the author at: fernando_cacciola@hotmail.com
9
+ //
10
+ #ifndef BOOST_NUMERIC_CONVERSION_BOUNDS_12NOV2002_HPP
11
+ #define BOOST_NUMERIC_CONVERSION_BOUNDS_12NOV2002_HPP
12
+
13
+ #include "boost/numeric/conversion/detail/bounds.hpp"
14
+
15
+ namespace boost { namespace numeric
16
+ {
17
+
18
+ template<class N>
19
+ struct bounds : boundsdetail::get_impl<N>::type
20
+ {} ;
21
+
22
+ } } // namespace boost::numeric
23
+
24
+ #endif
@@ -0,0 +1,61 @@
1
+ // (c) Copyright Fernando Luis Cacciola Carballal 2000-2004
2
+ // Use, modification, and distribution is subject to the Boost Software
3
+ // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
4
+ // http://www.boost.org/LICENSE_1_0.txt)
5
+
6
+ // See library home page at http://www.boost.org/libs/numeric/conversion
7
+ //
8
+ // Contact the author at: fernando_cacciola@hotmail.com
9
+ //
10
+ //
11
+ // Revision History
12
+ //
13
+ // 19 Nov 2001 Syntatic changes as suggested by Darin Adler (Fernando Cacciola)
14
+ // 08 Nov 2001 Fixes to accommodate MSVC (Fernando Cacciola)
15
+ // 04 Nov 2001 Fixes to accommodate gcc2.92 (Fernando Cacciola)
16
+ // 30 Oct 2001 Some fixes suggested by Daryle Walker (Fernando Cacciola)
17
+ // 25 Oct 2001 Initial boostification (Fernando Cacciola)
18
+ // 23 Jan 2004 Inital add to cvs (post review)s
19
+ // 22 Jun 2011 Added support for specializing cast policies via numeric_cast_traits (Brandon Kohn).
20
+ //
21
+ #ifndef BOOST_NUMERIC_CONVERSION_CAST_25OCT2001_HPP
22
+ #define BOOST_NUMERIC_CONVERSION_CAST_25OCT2001_HPP
23
+
24
+ #include <boost/detail/workaround.hpp>
25
+
26
+ #if BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x582))
27
+
28
+ # include<boost/numeric/conversion/detail/old_numeric_cast.hpp>
29
+
30
+ #else
31
+
32
+ #include <boost/type.hpp>
33
+ #include <boost/numeric/conversion/converter.hpp>
34
+ #include <boost/numeric/conversion/numeric_cast_traits.hpp>
35
+
36
+ namespace boost
37
+ {
38
+ template <typename Target, typename Source>
39
+ inline Target numeric_cast( Source arg )
40
+ {
41
+ typedef numeric::conversion_traits<Target, Source> conv_traits;
42
+ typedef numeric::numeric_cast_traits<Target, Source> cast_traits;
43
+ typedef boost::numeric::converter
44
+ <
45
+ Target,
46
+ Source,
47
+ conv_traits,
48
+ typename cast_traits::overflow_policy,
49
+ typename cast_traits::rounding_policy,
50
+ boost::numeric::raw_converter< conv_traits >,
51
+ typename cast_traits::range_checking_policy
52
+ > converter;
53
+ return converter::convert(arg);
54
+ }
55
+
56
+ using numeric::bad_numeric_cast;
57
+ } // namespace boost
58
+
59
+ #endif
60
+
61
+ #endif
@@ -0,0 +1,32 @@
1
+ // (c) Copyright Fernando Luis Cacciola Carballal 2000-2004
2
+ // Use, modification, and distribution is subject to the Boost Software
3
+ // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
4
+ // http://www.boost.org/LICENSE_1_0.txt)
5
+
6
+ // See library home page at http://www.boost.org/libs/numeric/conversion
7
+ //
8
+ // Contact the author at: fernando_cacciola@hotmail.com
9
+ //
10
+ #ifndef BOOST_NUMERIC_CONVERSION_CONVERSION_TRAITS_FLC_12NOV2002_HPP
11
+ #define BOOST_NUMERIC_CONVERSION_CONVERSION_TRAITS_FLC_12NOV2002_HPP
12
+
13
+ #include "boost/numeric/conversion/detail/conversion_traits.hpp"
14
+ #include "boost/detail/workaround.hpp"
15
+ #include "boost/config.hpp"
16
+
17
+ namespace boost { namespace numeric
18
+ {
19
+
20
+ template<class T, class S>
21
+ struct conversion_traits
22
+ : convdetail::get_conversion_traits<T,S>::type
23
+ {
24
+ } ;
25
+
26
+ } } // namespace boost::numeric
27
+
28
+ #endif
29
+ //
30
+ ///////////////////////////////////////////////////////////////////////////////////////////////
31
+
32
+
@@ -0,0 +1,68 @@
1
+ // (c) Copyright Fernando Luis Cacciola Carballal 2000-2004
2
+ // Use, modification, and distribution is subject to the Boost Software
3
+ // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
4
+ // http://www.boost.org/LICENSE_1_0.txt)
5
+
6
+ // See library home page at http://www.boost.org/libs/numeric/conversion
7
+ //
8
+ // Contact the author at: fernando_cacciola@hotmail.com
9
+ //
10
+ #ifndef BOOST_NUMERIC_CONVERSION_CONVERTER_FLC_12NOV2002_HPP
11
+ #define BOOST_NUMERIC_CONVERSION_CONVERTER_FLC_12NOV2002_HPP
12
+
13
+ #include "boost/numeric/conversion/conversion_traits.hpp"
14
+ #include "boost/numeric/conversion/converter_policies.hpp"
15
+
16
+ #include "boost/numeric/conversion/detail/converter.hpp"
17
+
18
+ namespace boost { namespace numeric
19
+ {
20
+
21
+ template<class T,
22
+ class S,
23
+ class Traits = conversion_traits<T,S>,
24
+ class OverflowHandler = def_overflow_handler,
25
+ class Float2IntRounder = Trunc< BOOST_DEDUCED_TYPENAME Traits::source_type> ,
26
+ class RawConverter = raw_converter<Traits>,
27
+ class UserRangeChecker = UseInternalRangeChecker
28
+ >
29
+ struct converter : convdetail::get_converter_impl<Traits,
30
+ OverflowHandler,
31
+ Float2IntRounder,
32
+ RawConverter,
33
+ UserRangeChecker
34
+ >::type
35
+ {
36
+ typedef Traits traits ;
37
+
38
+ typedef typename Traits::argument_type argument_type ;
39
+ typedef typename Traits::result_type result_type ;
40
+
41
+ result_type operator() ( argument_type s ) const { return this->convert(s) ; }
42
+ } ;
43
+
44
+
45
+
46
+ template<class S,
47
+ class OverflowHandler = def_overflow_handler,
48
+ class Float2IntRounder = Trunc<S> ,
49
+ class UserRangeChecker = UseInternalRangeChecker
50
+ >
51
+ struct make_converter_from
52
+ {
53
+ template<class T,
54
+ class Traits = conversion_traits<T,S>,
55
+ class RawConverter = raw_converter<Traits>
56
+ >
57
+ struct to
58
+ {
59
+ typedef converter<T,S,Traits,OverflowHandler,Float2IntRounder,RawConverter,UserRangeChecker> type ;
60
+ } ;
61
+
62
+ } ;
63
+
64
+ } } // namespace boost::numeric
65
+
66
+ #endif
67
+
68
+
@@ -0,0 +1,194 @@
1
+ // (c) Copyright Fernando Luis Cacciola Carballal 2000-2004
2
+ // Use, modification, and distribution is subject to the Boost Software
3
+ // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
4
+ // http://www.boost.org/LICENSE_1_0.txt)
5
+
6
+ // See library home page at http://www.boost.org/libs/numeric/conversion
7
+ //
8
+ // Contact the author at: fernando_cacciola@hotmail.com
9
+ //
10
+ #ifndef BOOST_NUMERIC_CONVERSION_CONVERTER_POLICIES_FLC_12NOV2002_HPP
11
+ #define BOOST_NUMERIC_CONVERSION_CONVERTER_POLICIES_FLC_12NOV2002_HPP
12
+
13
+ #include <functional>
14
+ #include <typeinfo> // for std::bad_cast
15
+
16
+ #include <boost/config.hpp>
17
+ #include <boost/config/no_tr1/cmath.hpp> // for std::floor and std::ceil
18
+ #include <boost/throw_exception.hpp>
19
+
20
+ #include "boost/type_traits/is_arithmetic.hpp"
21
+
22
+ #include "boost/mpl/if.hpp"
23
+ #include "boost/mpl/integral_c.hpp"
24
+
25
+ namespace boost { namespace numeric
26
+ {
27
+
28
+ template<class S>
29
+ struct Trunc
30
+ {
31
+ typedef S source_type ;
32
+
33
+ typedef typename mpl::if_< is_arithmetic<S>,S,S const&>::type argument_type ;
34
+
35
+ static source_type nearbyint ( argument_type s )
36
+ {
37
+ #if !defined(BOOST_NO_STDC_NAMESPACE)
38
+ using std::floor ;
39
+ using std::ceil ;
40
+ #endif
41
+
42
+ return s < static_cast<S>(0) ? ceil(s) : floor(s) ;
43
+ }
44
+
45
+ typedef mpl::integral_c< std::float_round_style, std::round_toward_zero> round_style ;
46
+ } ;
47
+
48
+
49
+
50
+ template<class S>
51
+ struct Floor
52
+ {
53
+ typedef S source_type ;
54
+
55
+ typedef typename mpl::if_< is_arithmetic<S>,S,S const&>::type argument_type ;
56
+
57
+ static source_type nearbyint ( argument_type s )
58
+ {
59
+ #if !defined(BOOST_NO_STDC_NAMESPACE)
60
+ using std::floor ;
61
+ #endif
62
+
63
+ return floor(s) ;
64
+ }
65
+
66
+ typedef mpl::integral_c< std::float_round_style, std::round_toward_neg_infinity> round_style ;
67
+ } ;
68
+
69
+ template<class S>
70
+ struct Ceil
71
+ {
72
+ typedef S source_type ;
73
+
74
+ typedef typename mpl::if_< is_arithmetic<S>,S,S const&>::type argument_type ;
75
+
76
+ static source_type nearbyint ( argument_type s )
77
+ {
78
+ #if !defined(BOOST_NO_STDC_NAMESPACE)
79
+ using std::ceil ;
80
+ #endif
81
+
82
+ return ceil(s) ;
83
+ }
84
+
85
+ typedef mpl::integral_c< std::float_round_style, std::round_toward_infinity> round_style ;
86
+ } ;
87
+
88
+ template<class S>
89
+ struct RoundEven
90
+ {
91
+ typedef S source_type ;
92
+
93
+ typedef typename mpl::if_< is_arithmetic<S>,S,S const&>::type argument_type ;
94
+
95
+ static source_type nearbyint ( argument_type s )
96
+ {
97
+ // Algorithm contributed by Guillaume Melquiond
98
+
99
+ #if !defined(BOOST_NO_STDC_NAMESPACE)
100
+ using std::floor ;
101
+ using std::ceil ;
102
+ #endif
103
+
104
+ // only works inside the range not at the boundaries
105
+ S prev = floor(s);
106
+ S next = ceil(s);
107
+
108
+ S rt = (s - prev) - (next - s); // remainder type
109
+
110
+ S const zero(0.0);
111
+ S const two(2.0);
112
+
113
+ if ( rt < zero )
114
+ return prev;
115
+ else if ( rt > zero )
116
+ return next;
117
+ else
118
+ {
119
+ bool is_prev_even = two * floor(prev / two) == prev ;
120
+ return ( is_prev_even ? prev : next ) ;
121
+ }
122
+ }
123
+
124
+ typedef mpl::integral_c< std::float_round_style, std::round_to_nearest> round_style ;
125
+ } ;
126
+
127
+
128
+ enum range_check_result
129
+ {
130
+ cInRange = 0 ,
131
+ cNegOverflow = 1 ,
132
+ cPosOverflow = 2
133
+ } ;
134
+
135
+ class bad_numeric_cast : public std::bad_cast
136
+ {
137
+ public:
138
+
139
+ const char * what() const BOOST_NOEXCEPT_OR_NOTHROW BOOST_OVERRIDE
140
+ { return "bad numeric conversion: overflow"; }
141
+ };
142
+
143
+ class negative_overflow : public bad_numeric_cast
144
+ {
145
+ public:
146
+
147
+ const char * what() const BOOST_NOEXCEPT_OR_NOTHROW BOOST_OVERRIDE
148
+ { return "bad numeric conversion: negative overflow"; }
149
+ };
150
+ class positive_overflow : public bad_numeric_cast
151
+ {
152
+ public:
153
+
154
+ const char * what() const BOOST_NOEXCEPT_OR_NOTHROW BOOST_OVERRIDE
155
+ { return "bad numeric conversion: positive overflow"; }
156
+ };
157
+
158
+ struct def_overflow_handler
159
+ {
160
+ void operator() ( range_check_result r ) // throw(negative_overflow,positive_overflow)
161
+ {
162
+ #ifndef BOOST_NO_EXCEPTIONS
163
+ if ( r == cNegOverflow )
164
+ throw negative_overflow() ;
165
+ else if ( r == cPosOverflow )
166
+ throw positive_overflow() ;
167
+ #else
168
+ if ( r == cNegOverflow )
169
+ ::boost::throw_exception(negative_overflow()) ;
170
+ else if ( r == cPosOverflow )
171
+ ::boost::throw_exception(positive_overflow()) ;
172
+ #endif
173
+ }
174
+ } ;
175
+
176
+ struct silent_overflow_handler
177
+ {
178
+ void operator() ( range_check_result ) {} // throw()
179
+ } ;
180
+
181
+ template<class Traits>
182
+ struct raw_converter
183
+ {
184
+ typedef typename Traits::result_type result_type ;
185
+ typedef typename Traits::argument_type argument_type ;
186
+
187
+ static result_type low_level_convert ( argument_type s ) { return static_cast<result_type>(s) ; }
188
+ } ;
189
+
190
+ struct UseInternalRangeChecker {} ;
191
+
192
+ } } // namespace boost::numeric
193
+
194
+ #endif
@@ -0,0 +1,58 @@
1
+ // (c) Copyright Fernando Luis Cacciola Carballal 2000-2004
2
+ // Use, modification, and distribution is subject to the Boost Software
3
+ // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
4
+ // http://www.boost.org/LICENSE_1_0.txt)
5
+
6
+ // See library home page at http://www.boost.org/libs/numeric/conversion
7
+ //
8
+ // Contact the author at: fernando_cacciola@hotmail.com
9
+ //
10
+ #ifndef BOOST_NUMERIC_CONVERSION_BOUNDS_DETAIL_FLC_12NOV2002_HPP
11
+ #define BOOST_NUMERIC_CONVERSION_BOUNDS_DETAIL_FLC_12NOV2002_HPP
12
+
13
+ #include "boost/limits.hpp"
14
+ #include "boost/config.hpp"
15
+ #include "boost/mpl/if.hpp"
16
+
17
+ namespace boost { namespace numeric { namespace boundsdetail
18
+ {
19
+ template<class N>
20
+ class Integral
21
+ {
22
+ typedef std::numeric_limits<N> limits ;
23
+
24
+ public :
25
+
26
+ static N lowest () { return limits::min BOOST_PREVENT_MACRO_SUBSTITUTION (); }
27
+ static N highest () { return limits::max BOOST_PREVENT_MACRO_SUBSTITUTION (); }
28
+ static N smallest() { return static_cast<N>(1); }
29
+ } ;
30
+
31
+ template<class N>
32
+ class Float
33
+ {
34
+ typedef std::numeric_limits<N> limits ;
35
+
36
+ public :
37
+
38
+ static N lowest () { return static_cast<N>(-limits::max BOOST_PREVENT_MACRO_SUBSTITUTION ()) ; }
39
+ static N highest () { return limits::max BOOST_PREVENT_MACRO_SUBSTITUTION (); }
40
+ static N smallest() { return limits::min BOOST_PREVENT_MACRO_SUBSTITUTION (); }
41
+ } ;
42
+
43
+ template<class N>
44
+ struct get_impl
45
+ {
46
+ typedef mpl::bool_< ::std::numeric_limits<N>::is_integer > is_int ;
47
+
48
+ typedef Integral<N> impl_int ;
49
+ typedef Float <N> impl_float ;
50
+
51
+ typedef typename mpl::if_<is_int,impl_int,impl_float>::type type ;
52
+ } ;
53
+
54
+ } } } // namespace boost::numeric::boundsdetail.
55
+
56
+ #endif
57
+ //
58
+ ///////////////////////////////////////////////////////////////////////////////////////////////
@@ -0,0 +1,97 @@
1
+ // (c) Copyright Fernando Luis Cacciola Carballal 2000-2004
2
+ // Use, modification, and distribution is subject to the Boost Software
3
+ // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
4
+ // http://www.boost.org/LICENSE_1_0.txt)
5
+
6
+ // See library home page at http://www.boost.org/libs/numeric/conversion
7
+ //
8
+ // Contact the author at: fernando_cacciola@hotmail.com
9
+ //
10
+ #ifndef BOOST_NUMERIC_CONVERSION_DETAIL_CONVERSION_TRAITS_FLC_12NOV2002_HPP
11
+ #define BOOST_NUMERIC_CONVERSION_DETAIL_CONVERSION_TRAITS_FLC_12NOV2002_HPP
12
+
13
+ #include "boost/type_traits/is_arithmetic.hpp"
14
+ #include "boost/type_traits/is_same.hpp"
15
+ #include "boost/type_traits/remove_cv.hpp"
16
+
17
+ #include "boost/numeric/conversion/detail/meta.hpp"
18
+ #include "boost/numeric/conversion/detail/int_float_mixture.hpp"
19
+ #include "boost/numeric/conversion/detail/sign_mixture.hpp"
20
+ #include "boost/numeric/conversion/detail/udt_builtin_mixture.hpp"
21
+ #include "boost/numeric/conversion/detail/is_subranged.hpp"
22
+
23
+ namespace boost { namespace numeric { namespace convdetail
24
+ {
25
+ //-------------------------------------------------------------------
26
+ // Implementation of the Conversion Traits for T != S
27
+ //
28
+ // This is a VISIBLE base class of the user-level conversion_traits<> class.
29
+ //-------------------------------------------------------------------
30
+ template<class T,class S>
31
+ struct non_trivial_traits_impl
32
+ {
33
+ typedef typename get_int_float_mixture <T,S>::type int_float_mixture ;
34
+ typedef typename get_sign_mixture <T,S>::type sign_mixture ;
35
+ typedef typename get_udt_builtin_mixture <T,S>::type udt_builtin_mixture ;
36
+
37
+ typedef typename get_is_subranged<T,S>::type subranged ;
38
+
39
+ typedef mpl::false_ trivial ;
40
+
41
+ typedef T target_type ;
42
+ typedef S source_type ;
43
+ typedef T result_type ;
44
+
45
+ typedef typename mpl::if_< is_arithmetic<S>, S, S const&>::type argument_type ;
46
+
47
+ typedef typename mpl::if_<subranged,S,T>::type supertype ;
48
+ typedef typename mpl::if_<subranged,T,S>::type subtype ;
49
+ } ;
50
+
51
+ //-------------------------------------------------------------------
52
+ // Implementation of the Conversion Traits for T == S
53
+ //
54
+ // This is a VISIBLE base class of the user-level conversion_traits<> class.
55
+ //-------------------------------------------------------------------
56
+ template<class N>
57
+ struct trivial_traits_impl
58
+ {
59
+ typedef typename get_int_float_mixture <N,N>::type int_float_mixture ;
60
+ typedef typename get_sign_mixture <N,N>::type sign_mixture ;
61
+ typedef typename get_udt_builtin_mixture<N,N>::type udt_builtin_mixture ;
62
+
63
+ typedef mpl::false_ subranged ;
64
+ typedef mpl::true_ trivial ;
65
+
66
+ typedef N target_type ;
67
+ typedef N source_type ;
68
+ typedef N const& result_type ;
69
+ typedef N const& argument_type ;
70
+
71
+ typedef N supertype ;
72
+ typedef N subtype ;
73
+
74
+ } ;
75
+
76
+ //-------------------------------------------------------------------
77
+ // Top level implementation selector.
78
+ //-------------------------------------------------------------------
79
+ template<class T, class S>
80
+ struct get_conversion_traits
81
+ {
82
+ typedef typename remove_cv<T>::type target_type ;
83
+ typedef typename remove_cv<S>::type source_type ;
84
+
85
+ typedef typename is_same<target_type,source_type>::type is_trivial ;
86
+
87
+ typedef trivial_traits_impl <target_type> trivial_imp ;
88
+ typedef non_trivial_traits_impl<target_type,source_type> non_trivial_imp ;
89
+
90
+ typedef typename mpl::if_<is_trivial,trivial_imp,non_trivial_imp>::type type ;
91
+ } ;
92
+
93
+ } } } // namespace boost::numeric::convdetail
94
+
95
+ #endif
96
+
97
+