diff --git a/.drone.star b/.drone.star index 987562d8f4..691246e337 100644 --- a/.drone.star +++ b/.drone.star @@ -18,7 +18,7 @@ def main(ctx): things_to_test = [ "special_fun", "distribution_tests", "mp", "misc", "interpolators", "quadrature", "autodiff", "long-running-tests", "float128_tests", "concepts" ] gcc13_things_to_test = [ "special_fun", "distribution_tests", "mp", "misc", "interpolators", "quadrature", "autodiff", "long-running-tests", "float128_tests", "concepts", "new_floats" ] sanitizer_test = [ "special_fun", "distribution_tests", "misc", "interpolators", "quadrature", "float128_tests" ] - reverse_mode_autodiff_test = [ "test_reverse_mode_autodiff", "autodiff-long-running-tests" ] + reverse_mode_autodiff_test = [ "test_reverse_mode_autodiff", "autodiff-long-running-tests", "gradient_based_optimizers" ] gnu_5_stds = [ "gnu++14", "c++14" ] gnu_6_stds = [ "gnu++14", "c++14", "gnu++17", "c++17" ] clang_6_stds = [ "c++14", "c++17" ] diff --git a/.github/workflows/codecov.yml b/.github/workflows/codecov.yml index b879117d0e..6c76d1f238 100644 --- a/.github/workflows/codecov.yml +++ b/.github/workflows/codecov.yml @@ -55,6 +55,8 @@ jobs: compiler: gcc-12, cxxstd: '20', os: ubuntu-22.04, install: 'g++-12-multilib', address-model: '64', suite: 'autodiff' } - { name: Collect coverage reverse-autodiff, coverage: yes, compiler: gcc-12, cxxstd: '20', os: ubuntu-22.04, install: 'g++-12-multilib', address-model: '64', suite: 'test_reverse_mode_autodiff' } + - { name: Collect coverage gradient-optimizers, coverage: yes, + compiler: gcc-12, cxxstd: '20', os: ubuntu-22.04, install: 'g++-12-multilib', address-model: '64', suite: 'gradient_based_optimizers' } timeout-minutes: 360 runs-on: ${{matrix.os}} container: ${{matrix.container}} diff --git a/doc/equations/autodiff/thomson_potential.svg b/doc/equations/autodiff/thomson_potential.svg new file mode 100644 index 0000000000..dd01ba10d2 --- /dev/null +++ b/doc/equations/autodiff/thomson_potential.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/doc/equations/gradient_based_optimizers/thomson_potential.svg b/doc/equations/gradient_based_optimizers/thomson_potential.svg new file mode 100644 index 0000000000..dd01ba10d2 --- /dev/null +++ b/doc/equations/gradient_based_optimizers/thomson_potential.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/doc/graphs/gradient_based_optimizers/lbfgs_to_nag_and_gd_comparison.svg b/doc/graphs/gradient_based_optimizers/lbfgs_to_nag_and_gd_comparison.svg new file mode 100644 index 0000000000..0610220afa --- /dev/null +++ b/doc/graphs/gradient_based_optimizers/lbfgs_to_nag_and_gd_comparison.svg @@ -0,0 +1,1195 @@ + + + + + + + + 2026-01-28T21:18:00.560497 + image/svg+xml + + + Matplotlib v3.10.8, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/graphs/gradient_based_optimizers/nag_to_gd_comparison.svg b/doc/graphs/gradient_based_optimizers/nag_to_gd_comparison.svg new file mode 100644 index 0000000000..4daa2db302 --- /dev/null +++ b/doc/graphs/gradient_based_optimizers/nag_to_gd_comparison.svg @@ -0,0 +1,961 @@ + + + + + + + + 2026-01-28T20:44:00.469139 + image/svg+xml + + + Matplotlib v3.10.8, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/graphs/gradient_based_optimizers/thomson_energy_error_gradient_descent.svg b/doc/graphs/gradient_based_optimizers/thomson_energy_error_gradient_descent.svg new file mode 100644 index 0000000000..5d4e04814c --- /dev/null +++ b/doc/graphs/gradient_based_optimizers/thomson_energy_error_gradient_descent.svg @@ -0,0 +1,1860 @@ + + + + + + + + 2026-01-28T20:44:52.460257 + image/svg+xml + + + Matplotlib v3.10.8, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/graphs/gradient_based_optimizers/thomson_sphere_2to8.png b/doc/graphs/gradient_based_optimizers/thomson_sphere_2to8.png new file mode 100644 index 0000000000..f1a85e049a Binary files /dev/null and b/doc/graphs/gradient_based_optimizers/thomson_sphere_2to8.png differ diff --git a/doc/graphs/gradient_based_optimizers/thomson_sphere_2to8.svg b/doc/graphs/gradient_based_optimizers/thomson_sphere_2to8.svg new file mode 100644 index 0000000000..d8b9ef90df --- /dev/null +++ b/doc/graphs/gradient_based_optimizers/thomson_sphere_2to8.svg @@ -0,0 +1,9313 @@ + + + + + + + + 2026-01-28T14:07:45.541041 + image/svg+xml + + + Matplotlib v3.10.8, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/html/backgrounders.html b/doc/html/backgrounders.html index 6ed338bf81..50718a2643 100644 --- a/doc/html/backgrounders.html +++ b/doc/html/backgrounders.html @@ -1,9 +1,9 @@ - + Chapter 24. Backgrounders - + @@ -55,7 +55,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

+ Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

diff --git a/doc/html/constants.html b/doc/html/constants.html index 2c6e0c52d8..8932775607 100644 --- a/doc/html/constants.html +++ b/doc/html/constants.html @@ -1,9 +1,9 @@ - + Chapter 4. Mathematical Constants - + @@ -48,7 +48,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

+ Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

diff --git a/doc/html/cstdfloat.html b/doc/html/cstdfloat.html index 76449322e1..e08f03957b 100644 --- a/doc/html/cstdfloat.html +++ b/doc/html/cstdfloat.html @@ -1,9 +1,9 @@ - + Chapter 3. Specified-width floating-point typedefs - + @@ -56,7 +56,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

+ Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

diff --git a/doc/html/dist.html b/doc/html/dist.html index 125f3fb0c2..ae3f75ed7c 100644 --- a/doc/html/dist.html +++ b/doc/html/dist.html @@ -1,9 +1,9 @@ - + Chapter 5. Statistical Distributions and Functions - + @@ -160,6 +160,8 @@ Erlang) Distribution
Geometric Distribution
+
Holtsmark + Distribution
Hyperexponential Distribution
Hypergeometric @@ -172,11 +174,14 @@ Gaussian (or Inverse Normal) Distribution
Kolmogorov-Smirnov Distribution
+
Landau Distribution
Laplace Distribution
Logistic Distribution
Log Normal Distribution
+
Map-Airy + Distribution
Negative Binomial Distribution
Noncentral @@ -192,6 +197,8 @@
Pareto Distribution
Poisson Distribution
Rayleigh Distribution
+
SαS Point5 + Distribution
Skew Normal Distribution
Students @@ -211,7 +218,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

+ Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

diff --git a/doc/html/extern_c.html b/doc/html/extern_c.html index bac9d3e2e2..b660da54f0 100644 --- a/doc/html/extern_c.html +++ b/doc/html/extern_c.html @@ -1,9 +1,9 @@ - + Chapter 9. TR1 and C99 external "C" Functions - + @@ -39,7 +39,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

+ Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

diff --git a/doc/html/filters.html b/doc/html/filters.html index bd75b2a9fc..b2d5ae9c13 100644 --- a/doc/html/filters.html +++ b/doc/html/filters.html @@ -1,9 +1,9 @@ - + Chapter 15. Filters - + @@ -35,7 +35,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

+ Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

diff --git a/doc/html/gcd_lcm.html b/doc/html/gcd_lcm.html index bdff04e201..850bf18421 100644 --- a/doc/html/gcd_lcm.html +++ b/doc/html/gcd_lcm.html @@ -1,9 +1,9 @@ - + Chapter 19. Integer Utilities (Greatest Common Divisor and Least Common Multiple) - + @@ -40,7 +40,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

+ Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

diff --git a/doc/html/index.html b/doc/html/index.html index 7f4e54c239..534943afb5 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -1,9 +1,9 @@ - + Math Toolkit 4.2.1 - + @@ -82,6 +82,9 @@

Xiaogang Zhang

+

+Maksym Zhelyeznyakov +

This manual is also available in printer @@ -91,7 +94,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

+ Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/doc/html/indexes.html b/doc/html/indexes.html index 503e08acb3..5851d685dc 100644 --- a/doc/html/indexes.html +++ b/doc/html/indexes.html @@ -1,9 +1,9 @@ - + Chapter 26. Indexes - + @@ -41,7 +41,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

+ Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

diff --git a/doc/html/indexes/s01.html b/doc/html/indexes/s01.html index 60131cc276..493ce79f1e 100644 --- a/doc/html/indexes/s01.html +++ b/doc/html/indexes/s01.html @@ -1,9 +1,9 @@ - + Function Index - + @@ -25,7 +25,7 @@

-Function Index

+Function Index

1 2 4 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z _

@@ -129,10 +128,18 @@
  • +

    add_checkpoint

    + +
  • +
  • add_fn

  • +

    adjoint

    + +
  • +
  • agm

  • differential_evolution

  • @@ -971,6 +1013,23 @@
  • +

    dist

    + +
  • +
  • distribution

  • @@ -1323,10 +1383,16 @@
  • C99 C Functions

  • +
  • exponential_distribution

  • +
  • +

    exp_sinh_integrate

    + +
  • extended_kindlmann

  • +
  • extreme_value_distribution

  • F @@ -1413,6 +1479,10 @@
  • +

    fisher_f_distribution

    + +
  • +
  • float

  • @@ -1546,6 +1616,7 @@
  • Error Function Inverses

  • Finding Zeros of Airy Functions

  • Generic operations common to all distributions are non-member functions

  • +
  • Gradient Descent

  • Heuman Lambda Function

  • Implementation

  • Inverse Chi Squared Distribution

  • @@ -1577,6 +1648,10 @@
  • +

    function_constraint

    + +
  • +
  • fvar

  • @@ -1593,6 +1668,10 @@
  • +

    gamma_distribution

    + +
  • +
  • gamma_p

    H @@ -1667,7 +1767,7 @@
  • +
  • inverse_chi_squared_distribution

  • +
  • inverse_gamma_distribution

  • +
  • +

    inverse_gaussian_distribution

    + +
  • iround

  • +

    l2_ball_constraint

    + +
  • +
  • l2_distance

  • @@ -2278,6 +2401,8 @@

    lambert_wm1_prime

    +
  • landau_distribution

  • +
  • laplace_distribution

  • ldexp

  • +

    logcdf

    + +
  • +
  • logistic_distribution

  • +
  • logistic_sigmoid

  • +
  • logit

  • +
  • +

    lognormal_distribution

    + +
  • +
  • +

    logpdf

    + +
  • +
  • logsumexp

  • @@ -2516,6 +2670,7 @@
  • @@ -2603,6 +2758,22 @@
  • +

    make_gradient_descent

    + +
  • +
  • +

    make_lbfgs

    + +
  • +
  • +

    make_nag

    + +
  • +
  • +

    mapairy_distribution

    + +
  • +
  • mean

  • +
  • negative_binomial_distribution

  • newton_raphson_iterate

    - +
  • nextafter

    @@ -2801,8 +2973,21 @@
  • +

    non_central_beta_distribution

    + +
  • +
  • +

    non_central_chi_squared_distribution

    + +
  • +
  • +

    non_central_f_distribution

    + +
  • +
  • norm

    A B C D E F G H I J K L M N O P Q R S T U V W

    A
    -
    +
    B
    @@ -55,6 +65,10 @@
  • binomial_distribution

  • +
  • +

    box_constraints

    + +
  • C @@ -114,6 +128,10 @@
  • +

    combined_convergence_policy

    + +
  • +
  • complex

  • N @@ -312,6 +373,14 @@
  • negative_binomial_distribution

  • +

    nesterov_accelerated_gradient

    + +
  • +
  • +

    nesterov_update_policy

    + +
  • +
  • nonfinite_num_get

  • @@ -320,6 +389,10 @@
  • +

    nonnegativity_constraint

    + +
  • +
  • non_central_beta_distribution

  • @@ -349,6 +422,10 @@
    P @@ -409,13 +490,46 @@

    random_search_parameters

    +
  • +

    random_uniform_initializer_rvar

    + +
  • rayleigh_distribution

  • +
  • +

    relative_objective_tol_policy

    + +
  • +
  • +

    reverse_mode_function_eval_policy

    + +
  • +
  • +

    reverse_mode_gradient_evaluation_policy

    + +
  • +
  • +

    rvar

    + +
  • S
  • +

    tape_initializer_rvar

    + +
  • +
  • triangular_distribution

    • Additional Implementation Notes

    • @@ -460,8 +578,16 @@

      ulps_plot

      +
    • +

      unconstrained_policy

      + +
    • uniform_distribution

    • +

      unit_sphere_constraint

      + +
    • +
    • upper_incomplete_gamma_fract

      • Continued Fraction Evaluation

      • @@ -480,6 +606,10 @@ W
          +
        • +

          wallclock_termination_policy

          + +
        • weibull_distribution

        • whittaker_shannon

          @@ -492,7 +622,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

          + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

          Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

          diff --git a/doc/html/indexes/s03.html b/doc/html/indexes/s03.html index 9596923cd3..46825b4526 100644 --- a/doc/html/indexes/s03.html +++ b/doc/html/indexes/s03.html @@ -1,9 +1,9 @@ - + Typedef Index - + @@ -25,8 +25,8 @@

        -Typedef Index

        -

        A B C D E F G H I K L N P R S T U V W

        +Typedef Index
    +

    A B C D E F G H I K L M N P R S T U V W

    A @@ -154,6 +154,10 @@

    -Macro Index

    +Macro Index

    B F

    @@ -97,10 +97,6 @@
  • -

    BOOST_HAS_LOG1P

    - -
  • -
  • BOOST_MATH_ASSERT

  • +

    BOOST_MATH_BUFFER_SIZE

    + +
  • +
  • BOOST_MATH_CONTROL_FP

  • +

    BOOST_MATH_CUDA_ENABLED

    + +
  • +
  • BOOST_MATH_DECLARE_DISTRIBUTIONS

  • +

    BOOST_MATH_REVERSE_MODE_ET_ON

    + +
  • +
  • BOOST_MATH_ROUNDING_ERROR_POLICY

  • @@ -370,7 +458,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/indexes/s05.html b/doc/html/indexes/s05.html index f9fe4007e2..db583578ad 100644 --- a/doc/html/indexes/s05.html +++ b/doc/html/indexes/s05.html @@ -1,9 +1,9 @@ - + Index - + @@ -24,7 +24,7 @@

    -Index

    +Index

    1 2 4 5 7 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z _

    @@ -90,7 +90,6 @@
  • Rational Method Comparison with Intel C++ C++0x mode version 1910 on linux

  • Rational Method Comparison with Microsoft Visual C++ version 14.2 on Windows x64

  • Spherical Harmonics

  • -
  • Weibull Distribution

  • @@ -187,6 +186,10 @@
  • +

    abstract_optimizer

    + +
  • +
  • accuracy

  • Geometric Distribution
    +
    Holtsmark + Distribution
    Hyperexponential Distribution
    Hypergeometric @@ -63,11 +65,14 @@ Gaussian (or Inverse Normal) Distribution
    Kolmogorov-Smirnov Distribution
    +
    Landau Distribution
    Laplace Distribution
    Logistic Distribution
    Log Normal Distribution
    +
    Map-Airy + Distribution
    Negative Binomial Distribution
    Noncentral @@ -83,6 +88,8 @@
    Pareto Distribution
    Poisson Distribution
    Rayleigh Distribution
    +
    SαS Point5 + Distribution
    Skew Normal Distribution
    Students @@ -99,7 +106,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/dist_ref/dist_algorithms.html b/doc/html/math_toolkit/dist_ref/dist_algorithms.html index ffda71c14b..dab64cbe27 100644 --- a/doc/html/math_toolkit/dist_ref/dist_algorithms.html +++ b/doc/html/math_toolkit/dist_ref/dist_algorithms.html @@ -1,9 +1,9 @@ - + Distribution Algorithms - + @@ -122,7 +122,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/dist_ref/dists.html b/doc/html/math_toolkit/dist_ref/dists.html index 0cbf649144..698cafb7fb 100644 --- a/doc/html/math_toolkit/dist_ref/dists.html +++ b/doc/html/math_toolkit/dist_ref/dists.html @@ -1,9 +1,9 @@ - + Distributions - + @@ -48,6 +48,8 @@ Erlang) Distribution
    Geometric Distribution
    +
    Holtsmark + Distribution
    Hyperexponential Distribution
    Hypergeometric @@ -60,11 +62,14 @@ Gaussian (or Inverse Normal) Distribution
    Kolmogorov-Smirnov Distribution
    +
    Landau Distribution
    Laplace Distribution
    Logistic Distribution
    Log Normal Distribution
    +
    Map-Airy + Distribution
    Negative Binomial Distribution
    Noncentral @@ -80,6 +85,8 @@
    Pareto Distribution
    Poisson Distribution
    Rayleigh Distribution
    +
    SαS Point5 + Distribution
    Skew Normal Distribution
    Students @@ -94,7 +101,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/dist_ref/dists/arcine_dist.html b/doc/html/math_toolkit/dist_ref/dists/arcine_dist.html index 4f4afed843..ffafc8a220 100644 --- a/doc/html/math_toolkit/dist_ref/dists/arcine_dist.html +++ b/doc/html/math_toolkit/dist_ref/dists/arcine_dist.html @@ -1,9 +1,9 @@ - + Arcsine Distribution - + @@ -44,11 +44,11 @@ typedef Policy policy_type; // Constructor from two range parameters, x_min and x_max: - arcsine_distribution(RealType x_min = 0, RealType x_max = 1); + BOOST_MATH_GPU_ENABLED arcsine_distribution(RealType x_min = 0, RealType x_max = 1); // Range Parameter accessors: - RealType x_min() const; - RealType x_max() const; + BOOST_MATH_GPU_ENABLED RealType x_min() const; + BOOST_MATH_GPU_ENABLED RealType x_max() const; }; }} // namespaces @@ -168,8 +168,8 @@
    Parameter Accessors
    -
    RealType x_min() const;
    -RealType x_max() const;
    +
    BOOST_MATH_GPU_ENABLED RealType x_min() const;
    +BOOST_MATH_GPU_ENABLED RealType x_max() const;
     

    Return the parameter x_min or x_max @@ -195,11 +195,13 @@

    Cumulative Distribution Function, Probability Density Function, Quantile, Hazard Function, Cumulative Hazard Function, - mean, median, - mode, variance, - standard deviation, - skewness, kurtosis, kurtosis_excess, - range and support. + __logcdf, __logpdf, mean, + median, mode, + variance, standard deviation, skewness, kurtosis, + kurtosis_excess, + range and support. For this distribution + all non-member accessor functions are marked with BOOST_MATH_GPU_ENABLED + and can be run on both host and device.

    The formulae for calculating these are shown in the table below, and at @@ -633,7 +635,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/dist_ref/dists/bernoulli_dist.html b/doc/html/math_toolkit/dist_ref/dists/bernoulli_dist.html index a70a19cecd..bbf907f88c 100644 --- a/doc/html/math_toolkit/dist_ref/dists/bernoulli_dist.html +++ b/doc/html/math_toolkit/dist_ref/dists/bernoulli_dist.html @@ -1,9 +1,9 @@ - + Bernoulli Distribution - + @@ -43,9 +43,9 @@ typedef RealType value_type; typedef Policy policy_type; - bernoulli_distribution(RealType p); // Constructor. + BOOST_MATH_GPU_ENABLED bernoulli_distribution(RealType p); // Constructor. // Accessor function. - RealType success_fraction() const + BOOST_MATH_GPU_ENABLED RealType success_fraction() const // Probability of success (as a fraction). }; }} // namespaces @@ -98,13 +98,13 @@
    Member Functions
    -
    bernoulli_distribution(RealType p);
    +
    BOOST_MATH_GPU_ENABLED bernoulli_distribution(RealType p);
     

    Constructs a bernoulli distribution with success_fraction p.

    -
    RealType success_fraction() const
    +
    BOOST_MATH_GPU_ENABLED RealType success_fraction() const
     

    Returns the success_fraction parameter of this distribution. @@ -120,11 +120,13 @@

    Cumulative Distribution Function, Probability Density Function, Quantile, Hazard Function, Cumulative Hazard Function, - mean, median, - mode, variance, - standard deviation, - skewness, kurtosis, kurtosis_excess, - range and support. + __logcdf, __logpdf, mean, + median, mode, + variance, standard deviation, skewness, kurtosis, + kurtosis_excess, + range and support. For this distribution + all non-member accessor functions are marked with BOOST_MATH_GPU_ENABLED + and can be run on both host and device.

    The domain of the random variable is 0 and 1, and the useful supported @@ -353,7 +355,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/dist_ref/dists/beta_dist.html b/doc/html/math_toolkit/dist_ref/dists/beta_dist.html index b1cf114fd9..e82b8f7c65 100644 --- a/doc/html/math_toolkit/dist_ref/dists/beta_dist.html +++ b/doc/html/math_toolkit/dist_ref/dists/beta_dist.html @@ -1,9 +1,9 @@ - + Beta Distribution - + @@ -45,30 +45,30 @@ typedef RealType value_type; typedef Policy policy_type; // Constructor from two shape parameters, alpha & beta: - beta_distribution(RealType a, RealType b); + BOOST_MATH_GPU_ENABLED beta_distribution(RealType a, RealType b); // Parameter accessors: - RealType alpha() const; - RealType beta() const; + BOOST_MATH_GPU_ENABLED RealType alpha() const; + BOOST_MATH_GPU_ENABLED RealType beta() const; // Parameter estimators of alpha or beta from mean and variance. - static RealType find_alpha( + BOOST_MATH_GPU_ENABLED static RealType find_alpha( RealType mean, // Expected value of mean. RealType variance); // Expected value of variance. - static RealType find_beta( + BOOST_MATH_GPU_ENABLED static RealType find_beta( RealType mean, // Expected value of mean. RealType variance); // Expected value of variance. // Parameter estimators from // either alpha or beta, and x and probability. - static RealType find_alpha( + BOOST_MATH_GPU_ENABLED static RealType find_alpha( RealType beta, // from beta. RealType x, // x. RealType probability); // cdf - static RealType find_beta( + BOOST_MATH_GPU_ENABLED static RealType find_beta( RealType alpha, // alpha. RealType x, // probability x. RealType probability); // probability cdf. @@ -137,7 +137,7 @@
    Constructor
    -
    beta_distribution(RealType alpha, RealType beta);
    +
    BOOST_MATH_GPU_ENABLED beta_distribution(RealType alpha, RealType beta);
     

    Constructs a beta distribution with shape parameters alpha @@ -165,13 +165,13 @@

    Parameter Accessors
    -
    RealType alpha() const;
    +
    BOOST_MATH_GPU_ENABLED RealType alpha() const;
     

    Returns the parameter alpha from which this distribution was constructed.

    -
    RealType beta() const;
    +
    BOOST_MATH_GPU_ENABLED RealType beta() const;
     

    Returns the parameter beta from which this distribution @@ -248,11 +248,13 @@

    Cumulative Distribution Function, Probability Density Function, Quantile, Hazard Function, Cumulative Hazard Function, - mean, median, - mode, variance, - standard deviation, - skewness, kurtosis, kurtosis_excess, - range and support. + __logcdf, __logpdf, mean, + median, mode, + variance, standard deviation, skewness, kurtosis, + kurtosis_excess, + range and support. For this distribution + all non-member accessor functions are marked with BOOST_MATH_GPU_ENABLED + and can be run on both host and device.

    The formulae for calculating these are shown in the table below, and at @@ -606,7 +608,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/dist_ref/dists/binomial_dist.html b/doc/html/math_toolkit/dist_ref/dists/binomial_dist.html index 0cec272b91..da6b498058 100644 --- a/doc/html/math_toolkit/dist_ref/dists/binomial_dist.html +++ b/doc/html/math_toolkit/dist_ref/dists/binomial_dist.html @@ -1,9 +1,9 @@ - + Binomial Distribution - + @@ -479,10 +479,10 @@
    Cumulative Distribution Function, Probability Density Function, Quantile, Hazard Function, Cumulative Hazard Function, - mean, median, - mode, variance, - standard deviation, - skewness, kurtosis, kurtosis_excess, + __logcdf, __logpdf, mean, + median, mode, + variance, standard deviation, skewness, kurtosis, + kurtosis_excess, range and support.

    @@ -890,7 +890,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/dist_ref/dists/cauchy_dist.html b/doc/html/math_toolkit/dist_ref/dists/cauchy_dist.html index 79f041a239..045032f91a 100644 --- a/doc/html/math_toolkit/dist_ref/dists/cauchy_dist.html +++ b/doc/html/math_toolkit/dist_ref/dists/cauchy_dist.html @@ -1,9 +1,9 @@ - + Cauchy-Lorentz Distribution - + @@ -42,10 +42,10 @@ typedef RealType value_type; typedef Policy policy_type; - cauchy_distribution(RealType location = 0, RealType scale = 1); + BOOST_MATH_GPU_ENABLED cauchy_distribution(RealType location = 0, RealType scale = 1); - RealType location()const; - RealType scale()const; + BOOST_MATH_GPU_ENABLED RealType location()const; + BOOST_MATH_GPU_ENABLED RealType scale()const; };

    @@ -92,7 +92,7 @@

    Member Functions
    -
    cauchy_distribution(RealType location = 0, RealType scale = 1);
    +
    BOOST_MATH_GPU_ENABLED cauchy_distribution(RealType location = 0, RealType scale = 1);
     

    Constructs a Cauchy distribution, with location parameter location @@ -103,12 +103,12 @@

    Requires scale > 0, otherwise calls domain_error.

    -
    RealType location()const;
    +
    BOOST_MATH_GPU_ENABLED RealType location()const;
     

    Returns the location parameter of the distribution.

    -
    RealType scale()const;
    +
    BOOST_MATH_GPU_ENABLED RealType scale()const;
     

    Returns the scale parameter of the distribution. @@ -124,11 +124,13 @@

    Cumulative Distribution Function, Probability Density Function, Quantile, Hazard Function, Cumulative Hazard Function, - mean, median, - mode, variance, - standard deviation, - skewness, kurtosis, kurtosis_excess, - range and support. + __logcdf, __logpdf, mean, + median, mode, + variance, standard deviation, skewness, kurtosis, + kurtosis_excess, + range and support. For this distribution + all non-member accessor functions are marked with BOOST_MATH_GPU_ENABLED + and can be run on both host and device.

    Note however that the Cauchy distribution does not have a mean, standard @@ -192,7 +194,7 @@

    Using the relation: pdf = 1 / (π * γ * (1 + ((x - x0 ) - / γ)2) + / γ)2))

    @@ -210,30 +212,21 @@
    p = 0.5 + atan(x)/π

    - But that suffers from cancellation error as x -> -∞. So recall - that for x < - 0: + But that suffers from cancellation error as x -> -∞.

    -

    - atan(x) = -π/2 - atan(1/x) -

    - Substituting into the above we get: + Instead, the mathematically equivalent expression based on the + function atan2 is used:

    - p = -atan(1/x)/π ; x < 0 + p = atan2(1, -x)/π

    - So the procedure is to calculate the cdf for -fabs(x) using the - above formula. Note that to factor in the location and scale - parameters you must substitute (x - x0 ) / γ for x in the above. -

    -

    - This procedure yields the smaller of p and - q, so the result may need subtracting from - 1 depending on whether we want the complement or not, and whether - x is less than x0 or not. + By symmetry, the complement is

    +

    + q = atan2(1, x)/π +

    @@ -296,7 +289,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/dist_ref/dists/chi_squared_dist.html b/doc/html/math_toolkit/dist_ref/dists/chi_squared_dist.html index 2629b7bb98..bd5a433ef4 100644 --- a/doc/html/math_toolkit/dist_ref/dists/chi_squared_dist.html +++ b/doc/html/math_toolkit/dist_ref/dists/chi_squared_dist.html @@ -1,9 +1,9 @@ - + Chi Squared Distribution - + @@ -45,13 +45,13 @@ typedef Policy policy_type; // Constructor: - chi_squared_distribution(RealType i); + BOOST_MATH_GPU_ENABLED chi_squared_distribution(RealType i); // Accessor to parameter: - RealType degrees_of_freedom()const; + BOOST_MATH_GPU_ENABLED RealType degrees_of_freedom()const; // Parameter estimation: - static RealType find_degrees_of_freedom( + BOOST_MATH_GPU_ENABLED static RealType find_degrees_of_freedom( RealType difference_from_mean, RealType alpha, RealType beta, @@ -178,11 +178,13 @@
    Cumulative Distribution Function, Probability Density Function, Quantile, Hazard Function, Cumulative Hazard Function, - mean, median, - mode, variance, - standard deviation, - skewness, kurtosis, kurtosis_excess, - range and support. + __logcdf, __logpdf, mean, + median, mode, + variance, standard deviation, skewness, kurtosis, + kurtosis_excess, + range and support. For this distribution + all non-member accessor functions are marked with BOOST_MATH_GPU_ENABLED + and can be run on both host and device.

    (We have followed the usual restriction of the mode to degrees of freedom @@ -399,7 +401,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/dist_ref/dists/empirical_cdf.html b/doc/html/math_toolkit/dist_ref/dists/empirical_cdf.html index 4e99d3da77..671ea188e1 100644 --- a/doc/html/math_toolkit/dist_ref/dists/empirical_cdf.html +++ b/doc/html/math_toolkit/dist_ref/dists/empirical_cdf.html @@ -1,9 +1,9 @@ - + Empirical Cumulative Distribution Function - + @@ -190,7 +190,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/dist_ref/dists/exp_dist.html b/doc/html/math_toolkit/dist_ref/dists/exp_dist.html index bd580bac34..8dc61f2c6d 100644 --- a/doc/html/math_toolkit/dist_ref/dists/exp_dist.html +++ b/doc/html/math_toolkit/dist_ref/dists/exp_dist.html @@ -1,9 +1,9 @@ - + Exponential Distribution - + @@ -41,9 +41,9 @@ typedef RealType value_type; typedef Policy policy_type; - exponential_distribution(RealType lambda = 1); + BOOST_MATH_GPU_ENABLED exponential_distribution(RealType lambda = 1); - RealType lambda()const; + BOOST_MATH_GPU_ENABLED RealType lambda()const; };

    @@ -72,7 +72,7 @@

    Member Functions
    -
    exponential_distribution(RealType lambda = 1);
    +
    BOOST_MATH_GPU_ENABLED exponential_distribution(RealType lambda = 1);
     

    Constructs an Exponential @@ -82,7 +82,7 @@

    Requires lambda > 0, otherwise calls domain_error.

    -
    RealType lambda()const;
    +
    BOOST_MATH_GPU_ENABLED RealType lambda()const;
     

    Accessor function returns the lambda parameter of the distribution. @@ -98,15 +98,22 @@

    Cumulative Distribution Function, Probability Density Function, Quantile, Hazard Function, Cumulative Hazard Function, - mean, median, - mode, variance, - standard deviation, - skewness, kurtosis, kurtosis_excess, - range and support. + __logcdf, __logpdf, mean, + median, mode, + variance, standard deviation, skewness, kurtosis, + kurtosis_excess, + range and support. For this distribution + all non-member accessor functions are marked with BOOST_MATH_GPU_ENABLED + and can be run on both host and device.

    The domain of the random variable is [0, +∞].

    +

    + In this distribution the implementation of both logcdf, + and logpdf are specialized + to improve numerical accuracy. +

    Accuracy @@ -157,6 +164,18 @@
    + +

    + logpdf +

    + + +

    + log(pdf) = -expm1(-x * λ) +

    + + +

    cdf @@ -169,6 +188,18 @@

    + +

    + logcdf +

    + + +

    + log(cdf) = log1p(-exp(-x * λ)) +

    + + +

    cdf complement @@ -316,7 +347,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/dist_ref/dists/extreme_dist.html b/doc/html/math_toolkit/dist_ref/dists/extreme_dist.html index 7ca6ac89c2..816534b975 100644 --- a/doc/html/math_toolkit/dist_ref/dists/extreme_dist.html +++ b/doc/html/math_toolkit/dist_ref/dists/extreme_dist.html @@ -1,9 +1,9 @@ - + Extreme Value Distribution - + @@ -41,10 +41,10 @@ public: typedef RealType value_type; - extreme_value_distribution(RealType location = 0, RealType scale = 1); + BOOST_MATH_GPU_ENABLED extreme_value_distribution(RealType location = 0, RealType scale = 1); - RealType scale()const; - RealType location()const; + BOOST_MATH_GPU_ENABLED RealType scale()const; + BOOST_MATH_GPU_ENABLED RealType location()const; };

    @@ -101,7 +101,7 @@

    Member Functions
    -
    extreme_value_distribution(RealType location = 0, RealType scale = 1);
    +
    BOOST_MATH_GPU_ENABLED extreme_value_distribution(RealType location = 0, RealType scale = 1);
     

    Constructs an Extreme Value distribution with the specified location and @@ -111,12 +111,12 @@

    Requires scale > 0, otherwise calls domain_error.

    -
    RealType location()const;
    +
    BOOST_MATH_GPU_ENABLED RealType location()const;
     

    Returns the location parameter of the distribution.

    -
    RealType scale()const;
    +
    BOOST_MATH_GPU_ENABLED RealType scale()const;
     

    Returns the scale parameter of the distribution. @@ -132,15 +132,22 @@

    Cumulative Distribution Function, Probability Density Function, Quantile, Hazard Function, Cumulative Hazard Function, - mean, median, - mode, variance, - standard deviation, - skewness, kurtosis, kurtosis_excess, - range and support. + __logcdf, __logpdf, mean, + median, mode, + variance, standard deviation, skewness, kurtosis, + kurtosis_excess, + range and support. For this distribution + all non-member accessor functions are marked with BOOST_MATH_GPU_ENABLED + and can be run on both host and device.

    The domain of the random parameter is [-∞, +∞].

    +

    + In this distribution the implementation of both logcdf, + and logpdf are specialized + to improve numerical accuracy. +

    Accuracy @@ -192,6 +199,18 @@
    + +

    + logpdf +

    + + +

    + log(pdf) = log(1/b) + e - exp(e) +

    + + +

    cdf @@ -204,6 +223,18 @@

    + +

    + logcdf +

    + + +

    + log(cdf) = -exp((a-x)/b) +

    + + +

    cdf complement @@ -319,7 +350,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/dist_ref/dists/f_dist.html b/doc/html/math_toolkit/dist_ref/dists/f_dist.html index cb967469c8..fbd996af22 100644 --- a/doc/html/math_toolkit/dist_ref/dists/f_dist.html +++ b/doc/html/math_toolkit/dist_ref/dists/f_dist.html @@ -1,9 +1,9 @@ - + F Distribution - + @@ -43,11 +43,11 @@ typedef RealType value_type; // Construct: - fisher_f_distribution(const RealType& i, const RealType& j); + BOOST_MATH_GPU_ENABLED fisher_f_distribution(const RealType& i, const RealType& j); // Accessors: - RealType degrees_of_freedom1()const; - RealType degrees_of_freedom2()const; + BOOST_MATH_GPU_ENABLED RealType degrees_of_freedom1()const; + BOOST_MATH_GPU_ENABLED RealType degrees_of_freedom2()const; }; }} //namespaces @@ -81,7 +81,7 @@
    Member Functions
    -
    fisher_f_distribution(const RealType& df1, const RealType& df2);
    +
    BOOST_MATH_GPU_ENABLED fisher_f_distribution(const RealType& df1, const RealType& df2);
     

    Constructs an F-distribution with numerator degrees of freedom df1 @@ -92,12 +92,12 @@

    both greater than zero, otherwise domain_error is called.

    -
    RealType degrees_of_freedom1()const;
    +
    BOOST_MATH_GPU_ENABLED RealType degrees_of_freedom1()const;
     

    Returns the numerator degrees of freedom parameter of the distribution.

    -
    RealType degrees_of_freedom2()const;
    +
    BOOST_MATH_GPU_ENABLED RealType degrees_of_freedom2()const;
     

    Returns the denominator degrees of freedom parameter of the distribution. @@ -113,11 +113,13 @@

    Cumulative Distribution Function, Probability Density Function, Quantile, Hazard Function, Cumulative Hazard Function, - mean, median, - mode, variance, - standard deviation, - skewness, kurtosis, kurtosis_excess, - range and support. + __logcdf, __logpdf, mean, + median, mode, + variance, standard deviation, skewness, kurtosis, + kurtosis_excess, + range and support. For this distribution + all non-member accessor functions are marked with BOOST_MATH_GPU_ENABLED + and can be run on both host and device.

    The domain of the random variable is [0, +∞]. @@ -423,7 +425,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/dist_ref/dists/gamma_dist.html b/doc/html/math_toolkit/dist_ref/dists/gamma_dist.html index a07236561a..b2f2d0a845 100644 --- a/doc/html/math_toolkit/dist_ref/dists/gamma_dist.html +++ b/doc/html/math_toolkit/dist_ref/dists/gamma_dist.html @@ -1,9 +1,9 @@ - + Gamma (and Erlang) Distribution - + @@ -39,10 +39,10 @@ typedef RealType value_type; typedef Policy policy_type; - gamma_distribution(RealType shape, RealType scale = 1) + BOOST_MATH_GPU_ENABLED gamma_distribution(RealType shape, RealType scale = 1) - RealType shape()const; - RealType scale()const; + BOOST_MATH_GPU_ENABLED RealType shape()const; + BOOST_MATH_GPU_ENABLED RealType scale()const; }; }} // namespaces @@ -130,7 +130,7 @@
    Member Functions
    -
    gamma_distribution(RealType shape, RealType scale = 1);
    +
    BOOST_MATH_GPU_ENABLED gamma_distribution(RealType shape, RealType scale = 1);
     

    Constructs a gamma distribution with shape shape and @@ -140,12 +140,12 @@

    Requires that the shape and scale parameters are greater than zero, otherwise calls domain_error.

    -
    RealType shape()const;
    +
    BOOST_MATH_GPU_ENABLED RealType shape()const;
     

    Returns the shape parameter of this distribution.

    -
    RealType scale()const;
    +
    BOOST_MATH_GPU_ENABLED RealType scale()const;
     

    Returns the scale parameter of this distribution. @@ -161,15 +161,21 @@

    Cumulative Distribution Function, Probability Density Function, Quantile, Hazard Function, Cumulative Hazard Function, - mean, median, - mode, variance, - standard deviation, - skewness, kurtosis, kurtosis_excess, - range and support. + __logcdf, __logpdf, mean, + median, mode, + variance, standard deviation, skewness, kurtosis, + kurtosis_excess, + range and support. For this distribution + all non-member accessor functions are marked with BOOST_MATH_GPU_ENABLED + and can be run on both host and device.

    The domain of the random variable is [0,+∞].

    +

    + In this distribution the implementation of logpdf + is specialized to improve numerical accuracy. +

    Accuracy @@ -224,6 +230,18 @@
    + +

    + logpdf +

    + + +

    + log(pdf) = -k*log(θ) + (k-1)*log(x) - lgamma(k) - (x/θ) +

    + + +

    cdf @@ -354,7 +372,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/dist_ref/dists/geometric_dist.html b/doc/html/math_toolkit/dist_ref/dists/geometric_dist.html index bbf0ad2eb1..b561b87dd8 100644 --- a/doc/html/math_toolkit/dist_ref/dists/geometric_dist.html +++ b/doc/html/math_toolkit/dist_ref/dists/geometric_dist.html @@ -1,13 +1,13 @@ - + Geometric Distribution - + - + @@ -21,7 +21,7 @@
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -44,28 +44,28 @@ typedef RealType value_type; typedef Policy policy_type; // Constructor from success_fraction: - geometric_distribution(RealType p); + BOOST_MATH_GPU_ENABLED geometric_distribution(RealType p); // Parameter accessors: - RealType success_fraction() const; - RealType successes() const; + BOOST_MATH_GPU_ENABLED RealType success_fraction() const; + BOOST_MATH_GPU_ENABLED RealType successes() const; // Bounds on success fraction: - static RealType find_lower_bound_on_p( + BOOST_MATH_GPU_ENABLED static RealType find_lower_bound_on_p( RealType trials, RealType successes, RealType probability); // alpha - static RealType find_upper_bound_on_p( + BOOST_MATH_GPU_ENABLED static RealType find_upper_bound_on_p( RealType trials, RealType successes, RealType probability); // alpha // Estimate min/max number of trials: - static RealType find_minimum_number_of_trials( + BOOST_MATH_GPU_ENABLED static RealType find_minimum_number_of_trials( RealType k, // Number of failures. RealType p, // Success fraction. RealType probability); // Probability threshold alpha. - static RealType find_maximum_number_of_trials( + BOOST_MATH_GPU_ENABLED static RealType find_maximum_number_of_trials( RealType k, // Number of failures. RealType p, // Success fraction. RealType probability); // Probability threshold alpha. @@ -469,11 +469,13 @@

    Cumulative Distribution Function, Probability Density Function, Quantile, Hazard Function, Cumulative Hazard Function, - mean, median, - mode, variance, - standard deviation, - skewness, kurtosis, kurtosis_excess, - range and support. + __logcdf, __logpdf, mean, + median, mode, + variance, standard deviation, skewness, kurtosis, + kurtosis_excess, + range and support. For this distribution + all non-member accessor functions are marked with BOOST_MATH_GPU_ENABLED + and can be run on both host and device.

    However it's worth taking a moment to define what these actually mean in @@ -587,7 +589,11 @@

    -
    +

    + In this distribution the implementation of logcdf + is specialized to improve numerical accuracy. +

    +
    Accuracy
    @@ -652,6 +658,18 @@
    + +

    + logcdf +

    + + +

    + log(cdf) = log1p(-exp(log1p(-p) * (k+1))) +

    + + +

    cdf complement @@ -831,14 +849,14 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/math_toolkit/dist_ref/dists/holtsmark_dist.html b/doc/html/math_toolkit/dist_ref/dists/holtsmark_dist.html index 854d8cfe56..8dde3c727e 100644 --- a/doc/html/math_toolkit/dist_ref/dists/holtsmark_dist.html +++ b/doc/html/math_toolkit/dist_ref/dists/holtsmark_dist.html @@ -1,6 +1,6 @@ - + Holtsmark Distribution @@ -194,7 +194,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/dist_ref/dists/hyperexponential_dist.html b/doc/html/math_toolkit/dist_ref/dists/hyperexponential_dist.html index a3fedd35e8..424b49cf2f 100644 --- a/doc/html/math_toolkit/dist_ref/dists/hyperexponential_dist.html +++ b/doc/html/math_toolkit/dist_ref/dists/hyperexponential_dist.html @@ -1,12 +1,12 @@ - + Hyperexponential Distribution - + - + @@ -21,7 +21,7 @@
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -1191,10 +1191,10 @@

    Cumulative Distribution Function, Probability Density Function, Quantile, Hazard Function, Cumulative Hazard Function, - mean, median, - mode, variance, - standard deviation, - skewness, kurtosis, kurtosis_excess, + __logcdf, __logpdf, mean, + median, mode, + variance, standard deviation, skewness, kurtosis, + kurtosis_excess, range and support.

    @@ -1457,14 +1457,14 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/math_toolkit/dist_ref/dists/hypergeometric_dist.html b/doc/html/math_toolkit/dist_ref/dists/hypergeometric_dist.html index 8846f8061a..ed7f053de1 100644 --- a/doc/html/math_toolkit/dist_ref/dists/hypergeometric_dist.html +++ b/doc/html/math_toolkit/dist_ref/dists/hypergeometric_dist.html @@ -1,9 +1,9 @@ - + Hypergeometric Distribution - + @@ -152,10 +152,10 @@
    Cumulative Distribution Function, Probability Density Function, Quantile, Hazard Function, Cumulative Hazard Function, - mean, median, - mode, variance, - standard deviation, - skewness, kurtosis, kurtosis_excess, + __logcdf, __logpdf, mean, + median, mode, + variance, standard deviation, skewness, kurtosis, + kurtosis_excess, range and support.

    @@ -348,7 +348,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/dist_ref/dists/inverse_chi_squared_dist.html b/doc/html/math_toolkit/dist_ref/dists/inverse_chi_squared_dist.html index feeef7fda7..eeca2b5c5d 100644 --- a/doc/html/math_toolkit/dist_ref/dists/inverse_chi_squared_dist.html +++ b/doc/html/math_toolkit/dist_ref/dists/inverse_chi_squared_dist.html @@ -1,9 +1,9 @@ - + Inverse Chi Squared Distribution - + @@ -39,11 +39,11 @@ typedef RealType value_type; typedef Policy policy_type; - inverse_chi_squared_distribution(RealType df = 1); // Not explicitly scaled, default 1/df. - inverse_chi_squared_distribution(RealType df, RealType scale = 1/df); // Scaled. + BOOST_MATH_GPU_ENABLED inverse_chi_squared_distribution(RealType df = 1); // Not explicitly scaled, default 1/df. + BOOST_MATH_GPU_ENABLED inverse_chi_squared_distribution(RealType df, RealType scale = 1/df); // Scaled. - RealType degrees_of_freedom()const; // Default 1. - RealType scale()const; // Optional scale [xi] (variance), default 1/degrees_of_freedom. + BOOST_MATH_GPU_ENABLED RealType degrees_of_freedom()const; // Default 1. + BOOST_MATH_GPU_ENABLED RealType scale()const; // Optional scale [xi] (variance), default 1/degrees_of_freedom. }; }} // namespace boost // namespace math @@ -192,8 +192,8 @@
    Member Functions
    -
    inverse_chi_squared_distribution(RealType df = 1); // Implicitly scaled 1/df.
    -inverse_chi_squared_distribution(RealType df = 1, RealType scale); // Explicitly scaled.
    +
    BOOST_MATH_GPU_ENABLED inverse_chi_squared_distribution(RealType df = 1); // Implicitly scaled 1/df.
    +BOOST_MATH_GPU_ENABLED inverse_chi_squared_distribution(RealType df = 1, RealType scale); // Explicitly scaled.
     

    Constructs an inverse chi_squared distribution with ν degrees of freedom @@ -204,12 +204,12 @@

    Requires that the degrees of freedom ν parameter is greater than zero, otherwise calls domain_error.

    -
    RealType degrees_of_freedom()const;
    +
    BOOST_MATH_GPU_ENABLED RealType degrees_of_freedom()const;
     

    Returns the degrees_of_freedom ν parameter of this distribution.

    -
    RealType scale()const;
    +
    BOOST_MATH_GPU_ENABLED RealType scale()const;
     

    Returns the scale ξ parameter of this distribution. @@ -225,11 +225,13 @@

    Cumulative Distribution Function, Probability Density Function, Quantile, Hazard Function, Cumulative Hazard Function, - mean, median, - mode, variance, - standard deviation, - skewness, kurtosis, kurtosis_excess, - range and support. + __logcdf, __logpdf, mean, + median, mode, + variance, standard deviation, skewness, kurtosis, + kurtosis_excess, + range and support. For this distribution + all non-member accessor functions are marked with BOOST_MATH_GPU_ENABLED + and can be run on both host and device.

    The domain of the random variate is [0,+∞]. @@ -461,7 +463,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/dist_ref/dists/inverse_gamma_dist.html b/doc/html/math_toolkit/dist_ref/dists/inverse_gamma_dist.html index 01972b3856..b5a0eec54f 100644 --- a/doc/html/math_toolkit/dist_ref/dists/inverse_gamma_dist.html +++ b/doc/html/math_toolkit/dist_ref/dists/inverse_gamma_dist.html @@ -1,9 +1,9 @@ - + Inverse Gamma Distribution - + @@ -39,10 +39,10 @@ typedef RealType value_type; typedef Policy policy_type; - inverse_gamma_distribution(RealType shape, RealType scale = 1) + BOOST_MATH_GPU_ENABLED inverse_gamma_distribution(RealType shape, RealType scale = 1) - RealType shape()const; - RealType scale()const; + BOOST_MATH_GPU_ENABLED RealType shape()const; + BOOST_MATH_GPU_ENABLED RealType scale()const; }; }} // namespaces @@ -121,7 +121,7 @@
    Member Functions
    -
    inverse_gamma_distribution(RealType shape = 1, RealType scale = 1);
    +
    BOOST_MATH_GPU_ENABLED inverse_gamma_distribution(RealType shape = 1, RealType scale = 1);
     

    Constructs an inverse gamma distribution with shape α and scale β. @@ -130,12 +130,12 @@

    Requires that the shape and scale parameters are greater than zero, otherwise calls domain_error.

    -
    RealType shape()const;
    +
    BOOST_MATH_GPU_ENABLED RealType shape()const;
     

    Returns the α shape parameter of this inverse gamma distribution.

    -
    RealType scale()const;
    +
    BOOST_MATH_GPU_ENABLED RealType scale()const;
     

    Returns the β scale parameter of this inverse gamma distribution. @@ -151,11 +151,13 @@

    Cumulative Distribution Function, Probability Density Function, Quantile, Hazard Function, Cumulative Hazard Function, - mean, median, - mode, variance, - standard deviation, - skewness, kurtosis, kurtosis_excess, - range and support. + __logcdf, __logpdf, mean, + median, mode, + variance, standard deviation, skewness, kurtosis, + kurtosis_excess, + range and support. For this distribution + all non-member accessor functions are marked with BOOST_MATH_GPU_ENABLED + and can be run on both host and device.

    The domain of the random variate is [0,+∞]. @@ -170,6 +172,10 @@

    equal to zero as a special case, returning zero for pdf and cdf.

    +

    + In this distribution the implementation of logpdf + is specialized to improve numerical accuracy. +

    Accuracy @@ -189,7 +195,7 @@
    Implementation

    - In the following table α is the shape parameter of the distribution, α is its + In the following table α is the shape parameter of the distribution, β is its scale parameter, x is the random variate, p is the probability and q = 1-p.

    @@ -225,6 +231,18 @@
    + +

    + logpdf +

    + + +

    + log(pdf) = α * log(β) + (-α-1)*log(x) - lgamma(α) - (β/x) +

    + + +

    cdf @@ -355,7 +373,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/dist_ref/dists/inverse_gaussian_dist.html b/doc/html/math_toolkit/dist_ref/dists/inverse_gaussian_dist.html index 4589d47197..8919ea1145 100644 --- a/doc/html/math_toolkit/dist_ref/dists/inverse_gaussian_dist.html +++ b/doc/html/math_toolkit/dist_ref/dists/inverse_gaussian_dist.html @@ -1,9 +1,9 @@ - + Inverse Gaussian (or Inverse Normal) Distribution - + @@ -39,11 +39,11 @@ typedef RealType value_type; typedef Policy policy_type; - inverse_gaussian_distribution(RealType mean = 1, RealType scale = 1); + BOOST_MATH_GPU_ENABLED inverse_gaussian_distribution(RealType mean = 1, RealType scale = 1); - RealType mean()const; // mean default 1. - RealType scale()const; // Optional scale, default 1 (unscaled). - RealType shape()const; // Shape = scale/mean. + BOOST_MATH_GPU_ENABLED RealType mean()const; // mean default 1. + BOOST_MATH_GPU_ENABLED RealType scale()const; // Optional scale, default 1 (unscaled). + BOOST_MATH_GPU_ENABLED RealType shape()const; // Shape = scale/mean. }; typedef inverse_gaussian_distribution<double> inverse_gaussian; @@ -144,7 +144,7 @@
    Member Functions
    -
    inverse_gaussian_distribution(RealType df = 1, RealType scale = 1); // optionally scaled.
    +
    BOOST_MATH_GPU_ENABLED inverse_gaussian_distribution(RealType df = 1, RealType scale = 1); // optionally scaled.
     

    Constructs an inverse_gaussian distribution with μ mean, and scale λ, with @@ -154,12 +154,12 @@

    Requires that both the mean μ parameter and scale λ are greater than zero, otherwise calls domain_error.

    -
    RealType mean()const;
    +
    BOOST_MATH_GPU_ENABLED RealType mean()const;
     

    Returns the mean μ parameter of this distribution.

    -
    RealType scale()const;
    +
    BOOST_MATH_GPU_ENABLED RealType scale()const;
     

    Returns the scale λ parameter of this distribution. @@ -175,11 +175,13 @@

    Cumulative Distribution Function, Probability Density Function, Quantile, Hazard Function, Cumulative Hazard Function, - mean, median, - mode, variance, - standard deviation, - skewness, kurtosis, kurtosis_excess, - range and support. + __logcdf, __logpdf, mean, + median, mode, + variance, standard deviation, skewness, kurtosis, + kurtosis_excess, + range and support. For this distribution + all non-member accessor functions are marked with BOOST_MATH_GPU_ENABLED + and can be run on both host and device.

    The domain of the random variate is [0,+∞). @@ -194,6 +196,10 @@

    equal to zero as a special case, returning zero for both pdf and cdf.

    +

    + In this distribution the implementation of logpdf + is specialized to improve numerical accuracy. +

    Accuracy @@ -247,6 +253,19 @@
    + +

    + logpdf +

    + + +

    + log(pdf) = (-λ*pow(μ-x, 2)/(x*μ2) + log(λ) - 3*log(x) - log(2*π)) + / 2 +

    + + +

    cdf @@ -434,7 +453,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/dist_ref/dists/kolmogorov_smirnov_dist.html b/doc/html/math_toolkit/dist_ref/dists/kolmogorov_smirnov_dist.html index eb2e5ca315..b583c90761 100644 --- a/doc/html/math_toolkit/dist_ref/dists/kolmogorov_smirnov_dist.html +++ b/doc/html/math_toolkit/dist_ref/dists/kolmogorov_smirnov_dist.html @@ -1,13 +1,13 @@ - + Kolmogorov-Smirnov Distribution - + - + @@ -21,7 +21,7 @@
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -123,10 +123,10 @@

    Cumulative Distribution Function, Probability Density Function, Quantile, Hazard Function, Cumulative Hazard Function, - mean, median, - mode, variance, - standard deviation, - skewness, kurtosis, kurtosis_excess, + __logcdf, __logpdf, mean, + median, mode, + variance, standard deviation, skewness, kurtosis, + kurtosis_excess, range and support.

    @@ -320,7 +320,7 @@



    [2] @@ -338,14 +338,14 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/math_toolkit/dist_ref/dists/landau_dist.html b/doc/html/math_toolkit/dist_ref/dists/landau_dist.html index 5150c3544f..52eadc6791 100644 --- a/doc/html/math_toolkit/dist_ref/dists/landau_dist.html +++ b/doc/html/math_toolkit/dist_ref/dists/landau_dist.html @@ -1,6 +1,6 @@ - + Landau Distribution @@ -211,7 +211,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/dist_ref/dists/laplace_dist.html b/doc/html/math_toolkit/dist_ref/dists/laplace_dist.html index 816ebf4e32..cd04d642da 100644 --- a/doc/html/math_toolkit/dist_ref/dists/laplace_dist.html +++ b/doc/html/math_toolkit/dist_ref/dists/laplace_dist.html @@ -1,12 +1,12 @@ - + Laplace Distribution - + - + @@ -21,7 +21,7 @@
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -43,10 +43,10 @@ typedef RealType value_type; typedef Policy policy_type; // Construct: - laplace_distribution(RealType location = 0, RealType scale = 1); + BOOST_MATH_GPU_ENABLED laplace_distribution(RealType location = 0, RealType scale = 1); // Accessors: - RealType location()const; - RealType scale()const; + BOOST_MATH_GPU_ENABLED RealType location()const; + BOOST_MATH_GPU_ENABLED RealType scale()const; }; }} // namespaces @@ -82,7 +82,7 @@

    Member Functions
    -
    laplace_distribution(RealType location = 0, RealType scale = 1);
    +
    BOOST_MATH_GPU_ENABLED laplace_distribution(RealType location = 0, RealType scale = 1);
     

    Constructs a laplace distribution with location location @@ -99,12 +99,12 @@

    Requires that the scale parameter is greater than zero, otherwise calls domain_error.

    -
    RealType location()const;
    +
    BOOST_MATH_GPU_ENABLED RealType location()const;
     

    Returns the location parameter of this distribution.

    -
    RealType scale()const;
    +
    BOOST_MATH_GPU_ENABLED RealType scale()const;
     

    Returns the scale parameter of this distribution. @@ -120,15 +120,22 @@

    Cumulative Distribution Function, Probability Density Function, Quantile, Hazard Function, Cumulative Hazard Function, - mean, median, - mode, variance, - standard deviation, - skewness, kurtosis, kurtosis_excess, - range and support. + __logcdf, __logpdf, mean, + median, mode, + variance, standard deviation, skewness, kurtosis, + kurtosis_excess, + range and support. For this distribution + all non-member accessor functions are marked with BOOST_MATH_GPU_ENABLED + and can be run on both host and device.

    The domain of the random variable is [-∞,+∞].

    +

    + In this distribution the implementation of both logcdf, + and logpdf are specialized + to improve numerical accuracy. +

    Accuracy @@ -177,6 +184,18 @@
    + +

    + logpdf +

    + + +

    + log(pdf) = -abs(x-μ)/σ - log(σ) - log(2) +

    + + +

    cdf @@ -196,6 +215,24 @@

    + +

    + logcdf +

    + + +

    + log(cdf) = +

    +

    + x < μ : p = ((x - μ) / σ) - ln(2) +

    +

    + x >= μ : p = log1p(-exp((μ-x) / σ) / 2) +

    + + +

    cdf complement @@ -348,14 +385,14 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/math_toolkit/dist_ref/dists/logistic_dist.html b/doc/html/math_toolkit/dist_ref/dists/logistic_dist.html index 61a1be7286..ebee833e0e 100644 --- a/doc/html/math_toolkit/dist_ref/dists/logistic_dist.html +++ b/doc/html/math_toolkit/dist_ref/dists/logistic_dist.html @@ -1,9 +1,9 @@ - + Logistic Distribution - + @@ -42,10 +42,10 @@ typedef RealType value_type; typedef Policy policy_type; // Construct: - logistic_distribution(RealType location = 0, RealType scale = 1); + BOOST_MATH_GPU_ENABLED logistic_distribution(RealType location = 0, RealType scale = 1); // Accessors: - RealType location()const; // location. - RealType scale()const; // scale. + BOOST_MATH_GPU_ENABLED RealType location()const; // location. + BOOST_MATH_GPU_ENABLED RealType scale()const; // scale. }; @@ -73,7 +73,7 @@
    Member Functions
    -
    logistic_distribution(RealType u = 0, RealType s = 1);
    +
    BOOST_MATH_GPU_ENABLED logistic_distribution(RealType u = 0, RealType s = 1);
     

    Constructs a logistic distribution with location u @@ -84,12 +84,12 @@

    0, otherwise a domain_error is raised.

    -
    RealType location()const;
    +
    BOOST_MATH_GPU_ENABLED RealType location()const;
     

    Returns the location of this distribution.

    -
    RealType scale()const;
    +
    BOOST_MATH_GPU_ENABLED RealType scale()const;
     

    Returns the scale of this distribution. @@ -105,11 +105,13 @@

    Cumulative Distribution Function, Probability Density Function, Quantile, Hazard Function, Cumulative Hazard Function, - mean, median, - mode, variance, - standard deviation, - skewness, kurtosis, kurtosis_excess, - range and support. + __logcdf, __logpdf, mean, + median, mode, + variance, standard deviation, skewness, kurtosis, + kurtosis_excess, + range and support. For this distribution + all non-member accessor functions are marked with BOOST_MATH_GPU_ENABLED + and can be run on both host and device.

    The domain of the random variable is [-[max_value], +[min_value]]. However, @@ -124,6 +126,10 @@

    and +overflow_error respectively.

    +

    + In this distribution the implementation of logcdf + is specialized to improve numerical accuracy. +

    Accuracy @@ -183,6 +189,18 @@
    + +

    + logcdf +

    + + +

    + log(cdf) = -log1p(exp((u-x)/s)) +

    + + +

    cdf complement @@ -285,7 +303,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/dist_ref/dists/lognormal_dist.html b/doc/html/math_toolkit/dist_ref/dists/lognormal_dist.html index d4e3b8f55e..e117c3341b 100644 --- a/doc/html/math_toolkit/dist_ref/dists/lognormal_dist.html +++ b/doc/html/math_toolkit/dist_ref/dists/lognormal_dist.html @@ -1,13 +1,13 @@ - + Log Normal Distribution - + - + @@ -21,7 +21,7 @@
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -44,10 +44,10 @@ typedef RealType value_type; typedef Policy policy_type; // Construct: - lognormal_distribution(RealType location = 0, RealType scale = 1); + BOOST_MATH_GPU_ENABLED lognormal_distribution(RealType location = 0, RealType scale = 1); // Accessors: - RealType location()const; - RealType scale()const; + BOOST_MATH_GPU_ENABLED RealType location()const; + BOOST_MATH_GPU_ENABLED RealType scale()const; }; }} // namespaces @@ -91,7 +91,7 @@

    Member Functions
    -
    lognormal_distribution(RealType location = 0, RealType scale = 1);
    +
    BOOST_MATH_GPU_ENABLED lognormal_distribution(RealType location = 0, RealType scale = 1);
     

    Constructs a lognormal distribution with location location @@ -109,12 +109,12 @@

    Requires that the scale parameter is greater than zero, otherwise calls domain_error.

    -
    RealType location()const;
    +
    BOOST_MATH_GPU_ENABLED RealType location()const;
     

    Returns the location parameter of this distribution.

    -
    RealType scale()const;
    +
    BOOST_MATH_GPU_ENABLED RealType scale()const;
     

    Returns the scale parameter of this distribution. @@ -130,11 +130,13 @@

    Cumulative Distribution Function, Probability Density Function, Quantile, Hazard Function, Cumulative Hazard Function, - mean, median, - mode, variance, - standard deviation, - skewness, kurtosis, kurtosis_excess, - range and support. + __logcdf, __logpdf, mean, + median, mode, + variance, standard deviation, skewness, kurtosis, + kurtosis_excess, + range and support. For this distribution + all non-member accessor functions are marked with BOOST_MATH_GPU_ENABLED + and can be run on both host and device.

    The domain of the random variable is [0,+∞]. @@ -319,14 +321,14 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/math_toolkit/dist_ref/dists/mapairy_dist.html b/doc/html/math_toolkit/dist_ref/dists/mapairy_dist.html index d76e354c02..9ff7956de6 100644 --- a/doc/html/math_toolkit/dist_ref/dists/mapairy_dist.html +++ b/doc/html/math_toolkit/dist_ref/dists/mapairy_dist.html @@ -1,6 +1,6 @@ - + Map-Airy Distribution @@ -202,7 +202,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/dist_ref/dists/nc_beta_dist.html b/doc/html/math_toolkit/dist_ref/dists/nc_beta_dist.html index 192e2948a3..2ac65c2015 100644 --- a/doc/html/math_toolkit/dist_ref/dists/nc_beta_dist.html +++ b/doc/html/math_toolkit/dist_ref/dists/nc_beta_dist.html @@ -1,9 +1,9 @@ - + Noncentral Beta Distribution - + @@ -45,14 +45,14 @@ typedef Policy policy_type; // Constructor: - non_central_beta_distribution(RealType alpha, RealType beta, RealType lambda); + BOOST_MATH_GPU_ENABLED non_central_beta_distribution(RealType alpha, RealType beta, RealType lambda); // Accessor to shape parameters: - RealType alpha()const; - RealType beta()const; + BOOST_MATH_GPU_ENABLED RealType alpha()const; + BOOST_MATH_GPU_ENABLED RealType beta()const; // Accessor to non-centrality parameter lambda: - RealType non_centrality()const; + BOOST_MATH_GPU_ENABLED RealType non_centrality()const; }; }} // namespaces @@ -103,7 +103,7 @@
    Member Functions
    -
    non_central_beta_distribution(RealType a, RealType b, RealType lambda);
    +
    BOOST_MATH_GPU_ENABLED non_central_beta_distribution(RealType a, RealType b, RealType lambda);
     

    Constructs a noncentral beta distribution with shape parameters a @@ -112,19 +112,19 @@

    Requires a > 0, b > 0 and lambda >= 0, otherwise calls domain_error.

    -
    RealType alpha()const;
    +
    BOOST_MATH_GPU_ENABLED RealType alpha()const;
     

    Returns the parameter a from which this object was constructed.

    -
    RealType beta()const;
    +
    BOOST_MATH_GPU_ENABLED RealType beta()const;
     

    Returns the parameter b from which this object was constructed.

    -
    RealType non_centrality()const;
    +
    BOOST_MATH_GPU_ENABLED RealType non_centrality()const;
     

    Returns the parameter lambda from which this object @@ -145,7 +145,9 @@

    median, mode, Hazard Function, Cumulative Hazard Function, - range and support. + range and support. For this distribution + these functions are marked with BOOST_MATH_GPU_ENABLED + and can be run on both host and device.

    Mean and variance are implemented using hypergeometric pfq functions and @@ -481,7 +483,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/dist_ref/dists/nc_chi_squared_dist.html b/doc/html/math_toolkit/dist_ref/dists/nc_chi_squared_dist.html index fab03c0adb..0dc811db54 100644 --- a/doc/html/math_toolkit/dist_ref/dists/nc_chi_squared_dist.html +++ b/doc/html/math_toolkit/dist_ref/dists/nc_chi_squared_dist.html @@ -1,9 +1,9 @@ - + Noncentral Chi-Squared Distribution - + @@ -45,22 +45,22 @@ typedef Policy policy_type; // Constructor: - non_central_chi_squared_distribution(RealType v, RealType lambda); + BOOST_MATH_GPU_ENABLED non_central_chi_squared_distribution(RealType v, RealType lambda); // Accessor to degrees of freedom parameter v: - RealType degrees_of_freedom()const; + BOOST_MATH_GPU_ENABLED RealType degrees_of_freedom()const; // Accessor to non centrality parameter lambda: - RealType non_centrality()const; + BOOST_MATH_GPU_ENABLED RealType non_centrality()const; // Parameter finders: - static RealType find_degrees_of_freedom(RealType lambda, RealType x, RealType p); + BOOST_MATH_GPU_ENABLED static RealType find_degrees_of_freedom(RealType lambda, RealType x, RealType p); template <class A, class B, class C> - static RealType find_degrees_of_freedom(const complemented3_type<A,B,C>& c); + BOOST_MATH_GPU_ENABLED static RealType find_degrees_of_freedom(const complemented3_type<A,B,C>& c); - static RealType find_non_centrality(RealType v, RealType x, RealType p); + BOOST_MATH_GPU_ENABLED static RealType find_non_centrality(RealType v, RealType x, RealType p); template <class A, class B, class C> - static RealType find_non_centrality(const complemented3_type<A,B,C>& c); + BOOST_MATH_GPU_ENABLED static RealType find_non_centrality(const complemented3_type<A,B,C>& c); }; }} // namespaces @@ -116,7 +116,7 @@
    Member Functions
    -
    non_central_chi_squared_distribution(RealType v, RealType lambda);
    +
    BOOST_MATH_GPU_ENABLED non_central_chi_squared_distribution(RealType v, RealType lambda);
     

    Constructs a Chi-Squared distribution with ν degrees of freedom and non-centrality @@ -125,24 +125,24 @@

    Requires ν > 0 and lambda >= 0, otherwise calls domain_error.

    -
    RealType degrees_of_freedom()const;
    +
    BOOST_MATH_GPU_ENABLED RealType degrees_of_freedom()const;
     

    Returns the parameter ν from which this object was constructed.

    -
    RealType non_centrality()const;
    +
    BOOST_MATH_GPU_ENABLED RealType non_centrality()const;
     

    Returns the parameter lambda from which this object was constructed.

    -
    static RealType find_degrees_of_freedom(RealType lambda, RealType x, RealType p);
    +
    BOOST_MATH_GPU_ENABLED static RealType find_degrees_of_freedom(RealType lambda, RealType x, RealType p);
     

    This function returns the number of degrees of freedom ν such that: cdf(non_central_chi_squared<RealType, Policy>(v, lambda), x) == p

    template <class A, class B, class C>
    -static RealType find_degrees_of_freedom(const complemented3_type<A,B,C>& c);
    +BOOST_MATH_GPU_ENABLED static RealType find_degrees_of_freedom(const complemented3_type<A,B,C>& c);
     

    When called with argument boost::math::complement(lambda, x, @@ -152,7 +152,7 @@

    cdf(complement(non_central_chi_squared<RealType, Policy>(v, lambda), x)) == q.

    -
    static RealType find_non_centrality(RealType v, RealType x, RealType p);
    +
    BOOST_MATH_GPU_ENABLED static RealType find_non_centrality(RealType v, RealType x, RealType p);
     

    This function returns the non centrality parameter lambda @@ -162,7 +162,7 @@

    cdf(non_central_chi_squared<RealType, Policy>(v, lambda), x) == p

    template <class A, class B, class C>
    -static RealType find_non_centrality(const complemented3_type<A,B,C>& c);
    +BOOST_MATH_GPU_ENABLED static RealType find_non_centrality(const complemented3_type<A,B,C>& c);
     

    When called with argument boost::math::complement(v, @@ -185,11 +185,13 @@

    Cumulative Distribution Function, Probability Density Function, Quantile, Hazard Function, Cumulative Hazard Function, - mean, median, - mode, variance, - standard deviation, - skewness, kurtosis, kurtosis_excess, - range and support. + __logcdf, __logpdf, mean, + median, mode, + variance, standard deviation, skewness, kurtosis, + kurtosis_excess, + range and support. For this distribution + all non-member accessor functions are marked with BOOST_MATH_GPU_ENABLED + and can be run on both host and device.

    The domain of the random variable is [0, +∞]. @@ -566,7 +568,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/dist_ref/dists/nc_f_dist.html b/doc/html/math_toolkit/dist_ref/dists/nc_f_dist.html index cc058b0565..ef4c833847 100644 --- a/doc/html/math_toolkit/dist_ref/dists/nc_f_dist.html +++ b/doc/html/math_toolkit/dist_ref/dists/nc_f_dist.html @@ -1,9 +1,9 @@ - + Noncentral F Distribution - + @@ -45,14 +45,14 @@ typedef Policy policy_type; // Constructor: - non_central_f_distribution(RealType v1, RealType v2, RealType lambda); + BOOST_MATH_GPU_ENABLED non_central_f_distribution(RealType v1, RealType v2, RealType lambda); // Accessor to degrees_of_freedom parameters v1 & v2: - RealType degrees_of_freedom1()const; - RealType degrees_of_freedom2()const; + BOOST_MATH_GPU_ENABLED RealType degrees_of_freedom1()const; + BOOST_MATH_GPU_ENABLED RealType degrees_of_freedom2()const; // Accessor to non-centrality parameter lambda: - RealType non_centrality()const; + BOOST_MATH_GPU_ENABLED RealType non_centrality()const; }; }} // namespaces @@ -99,7 +99,7 @@
    Member Functions
    -
    non_central_f_distribution(RealType v1, RealType v2, RealType lambda);
    +
    BOOST_MATH_GPU_ENABLED non_central_f_distribution(RealType v1, RealType v2, RealType lambda);
     

    Constructs a non-central beta distribution with parameters v1 @@ -109,19 +109,19 @@

    Requires v1 > 0, v2 > 0 and lambda >= 0, otherwise calls domain_error.

    -
    RealType degrees_of_freedom1()const;
    +
    BOOST_MATH_GPU_ENABLED RealType degrees_of_freedom1()const;
     

    Returns the parameter v1 from which this object was constructed.

    -
    RealType degrees_of_freedom2()const;
    +
    BOOST_MATH_GPU_ENABLED RealType degrees_of_freedom2()const;
     

    Returns the parameter v2 from which this object was constructed.

    -
    RealType non_centrality()const;
    +
    BOOST_MATH_GPU_ENABLED RealType non_centrality()const;
     

    Returns the non-centrality parameter lambda from which @@ -138,11 +138,13 @@

    Cumulative Distribution Function, Probability Density Function, Quantile, Hazard Function, Cumulative Hazard Function, - mean, median, - mode, variance, - standard deviation, - skewness, kurtosis, kurtosis_excess, - range and support. + __logcdf, __logpdf, mean, + median, mode, + variance, standard deviation, skewness, kurtosis, + kurtosis_excess, + range and support. For this distribution + all non-member accessor functions are marked with BOOST_MATH_GPU_ENABLED + and can be run on both host and device.

    The domain of the random variable is [0, +∞]. @@ -406,7 +408,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/dist_ref/dists/nc_t_dist.html b/doc/html/math_toolkit/dist_ref/dists/nc_t_dist.html index d7dd9fbb08..974db746ca 100644 --- a/doc/html/math_toolkit/dist_ref/dists/nc_t_dist.html +++ b/doc/html/math_toolkit/dist_ref/dists/nc_t_dist.html @@ -1,9 +1,9 @@ - + Noncentral T Distribution - + @@ -125,10 +125,10 @@
    Cumulative Distribution Function, Probability Density Function, Quantile, Hazard Function, Cumulative Hazard Function, - mean, median, - mode, variance, - standard deviation, - skewness, kurtosis, kurtosis_excess, + __logcdf, __logpdf, mean, + median, mode, + variance, standard deviation, skewness, kurtosis, + kurtosis_excess, range and support.

    @@ -562,7 +562,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/dist_ref/dists/negative_binomial_dist.html b/doc/html/math_toolkit/dist_ref/dists/negative_binomial_dist.html index 7a3d2c2702..5fbc8302bd 100644 --- a/doc/html/math_toolkit/dist_ref/dists/negative_binomial_dist.html +++ b/doc/html/math_toolkit/dist_ref/dists/negative_binomial_dist.html @@ -1,12 +1,12 @@ - + Negative Binomial Distribution - + - + @@ -21,7 +21,7 @@
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -44,28 +44,28 @@ typedef RealType value_type; typedef Policy policy_type; // Constructor from successes and success_fraction: - negative_binomial_distribution(RealType r, RealType p); + BOOST_MATH_GPU_ENABLED negative_binomial_distribution(RealType r, RealType p); // Parameter accessors: - RealType success_fraction() const; - RealType successes() const; + BOOST_MATH_GPU_ENABLED RealType success_fraction() const; + BOOST_MATH_GPU_ENABLED RealType successes() const; // Bounds on success fraction: - static RealType find_lower_bound_on_p( + BOOST_MATH_GPU_ENABLED static RealType find_lower_bound_on_p( RealType trials, RealType successes, RealType probability); // alpha - static RealType find_upper_bound_on_p( + BOOST_MATH_GPU_ENABLED static RealType find_upper_bound_on_p( RealType trials, RealType successes, RealType probability); // alpha // Estimate min/max number of trials: - static RealType find_minimum_number_of_trials( + BOOST_MATH_GPU_ENABLED static RealType find_minimum_number_of_trials( RealType k, // Number of failures. RealType p, // Success fraction. RealType probability); // Probability threshold alpha. - static RealType find_maximum_number_of_trials( + BOOST_MATH_GPU_ENABLED static RealType find_maximum_number_of_trials( RealType k, // Number of failures. RealType p, // Success fraction. RealType probability); // Probability threshold alpha. @@ -202,7 +202,7 @@

    Construct
    -
    negative_binomial_distribution(RealType r, RealType p);
    +
    BOOST_MATH_GPU_ENABLED negative_binomial_distribution(RealType r, RealType p);
     

    Constructor: r is the total number of successes, @@ -218,13 +218,13 @@

    Accessors
    -
    RealType success_fraction() const; // successes / trials (0 <= p <= 1)
    +
    BOOST_MATH_GPU_ENABLED RealType success_fraction() const; // successes / trials (0 <= p <= 1)
     

    Returns the parameter p from which this distribution was constructed.

    -
    RealType successes() const; // required successes (r > 0)
    +
    BOOST_MATH_GPU_ENABLED RealType successes() const; // required successes (r > 0)
     

    Returns the parameter r from which this distribution @@ -240,7 +240,7 @@

    Lower Bound on Parameter p
    -
    static RealType find_lower_bound_on_p(
    +
    BOOST_MATH_GPU_ENABLED static RealType find_lower_bound_on_p(
       RealType failures,
       RealType successes,
       RealType probability) // (0 <= alpha <= 1), 0.05 equivalent to 95% confidence.
    @@ -301,7 +301,7 @@ 
    Upper Bound on Parameter p
    -
    static RealType find_upper_bound_on_p(
    +
    BOOST_MATH_GPU_ENABLED static RealType find_upper_bound_on_p(
        RealType trials,
        RealType successes,
        RealType alpha); // (0 <= alpha <= 1), 0.05 equivalent to 95% confidence.
    @@ -361,7 +361,7 @@ 
    Estimating Number of Trials to Ensure at Least a Certain Number of Failures
    -
    static RealType find_minimum_number_of_trials(
    +
    BOOST_MATH_GPU_ENABLED static RealType find_minimum_number_of_trials(
        RealType k,     // number of failures.
        RealType p,     // success fraction.
        RealType alpha); // probability threshold (0.05 equivalent to 95%).
    @@ -412,7 +412,7 @@ 
    Estimating Number of Trials to Ensure a Maximum Number of Failures or Less
    -
    static RealType find_maximum_number_of_trials(
    +
    BOOST_MATH_GPU_ENABLED static RealType find_maximum_number_of_trials(
        RealType k,     // number of failures.
        RealType p,     // success fraction.
        RealType alpha); // probability threshold (0.05 equivalent to 95%).
    @@ -466,11 +466,13 @@ 
    Cumulative Distribution Function, Probability Density Function, Quantile, Hazard Function, Cumulative Hazard Function, - mean, median, - mode, variance, - standard deviation, - skewness, kurtosis, kurtosis_excess, - range and support. + __logcdf, __logpdf, mean, + median, mode, + variance, standard deviation, skewness, kurtosis, + kurtosis_excess, + range and support. For this distribution + all non-member accessor functions are marked with BOOST_MATH_GPU_ENABLED + and can be run on both host and device.

    However it's worth taking a moment to define what these actually mean in @@ -872,14 +874,14 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/math_toolkit/dist_ref/dists/normal_dist.html b/doc/html/math_toolkit/dist_ref/dists/normal_dist.html index 9378403bf5..6d283b712d 100644 --- a/doc/html/math_toolkit/dist_ref/dists/normal_dist.html +++ b/doc/html/math_toolkit/dist_ref/dists/normal_dist.html @@ -1,9 +1,9 @@ - + Normal (Gaussian) Distribution - + @@ -44,13 +44,13 @@ typedef RealType value_type; typedef Policy policy_type; // Construct: - normal_distribution(RealType mean = 0, RealType sd = 1); + BOOST_MATH_GPU_ENABLED normal_distribution(RealType mean = 0, RealType sd = 1); // Accessors: - RealType mean()const; // location. - RealType standard_deviation()const; // scale. + BOOST_MATH_GPU_ENABLED RealType mean()const; // location. + BOOST_MATH_GPU_ENABLED RealType standard_deviation()const; // scale. // Synonyms, provided to allow generic use of find_location and find_scale. - RealType location()const; - RealType scale()const; + BOOST_MATH_GPU_ENABLED RealType location()const; + BOOST_MATH_GPU_ENABLED RealType scale()const; }; }} // namespaces @@ -95,7 +95,7 @@
    Member Functions
    -
    normal_distribution(RealType mean = 0, RealType sd = 1);
    +
    BOOST_MATH_GPU_ENABLED normal_distribution(RealType mean = 0, RealType sd = 1);
     

    Constructs a normal distribution with mean mean and @@ -105,14 +105,14 @@

    Requires sd > 0, otherwise domain_error is called.

    -
    RealType mean()const;
    -RealType location()const;
    +
    BOOST_MATH_GPU_ENABLED RealType mean()const;
    +BOOST_MATH_GPU_ENABLED RealType location()const;
     

    both return the mean of this distribution.

    -
    RealType standard_deviation()const;
    -RealType scale()const;
    +
    BOOST_MATH_GPU_ENABLED RealType standard_deviation()const;
    +BOOST_MATH_GPU_ENABLED RealType scale()const;
     

    both return the standard deviation of this distribution. @@ -131,11 +131,13 @@

    Cumulative Distribution Function, Probability Density Function, Quantile, Hazard Function, Cumulative Hazard Function, - mean, median, - mode, variance, - standard deviation, - skewness, kurtosis, kurtosis_excess, - range and support. + __logcdf, __logpdf, mean, + median, mode, + variance, standard deviation, skewness, kurtosis, + kurtosis_excess, + range and support. For this distribution + all non-member accessor functions are marked with BOOST_MATH_GPU_ENABLED + and can be run on both host and device.

    The domain of the random variable is [-[max_value], +[min_value]]. However, @@ -189,6 +191,18 @@

    + +

    + logpdf +

    + + +

    + log(pdf) = -log(s) - log(2*π)/2 - (x-mean)2/(2*s2) +

    + + +

    cdf @@ -315,7 +329,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/dist_ref/dists/pareto.html b/doc/html/math_toolkit/dist_ref/dists/pareto.html index 2cc90b5d5c..626d3860b2 100644 --- a/doc/html/math_toolkit/dist_ref/dists/pareto.html +++ b/doc/html/math_toolkit/dist_ref/dists/pareto.html @@ -1,9 +1,9 @@ - + Pareto Distribution - + @@ -42,10 +42,10 @@ public: typedef RealType value_type; // Constructor: - pareto_distribution(RealType scale = 1, RealType shape = 1) + BOOST_MATH_GPU_ENABLED pareto_distribution(RealType scale = 1, RealType shape = 1) // Accessors: - RealType scale()const; - RealType shape()const; + BOOST_MATH_GPU_ENABLED RealType scale()const; + BOOST_MATH_GPU_ENABLED RealType shape()const; }; }} // namespaces @@ -92,7 +92,7 @@
    Member Functions
    -
    pareto_distribution(RealType scale = 1, RealType shape = 1);
    +
    BOOST_MATH_GPU_ENABLED pareto_distribution(RealType scale = 1, RealType shape = 1);
     

    Constructs a pareto @@ -102,12 +102,12 @@

    Requires that the shape and scale parameters are both greater than zero, otherwise calls domain_error.

    -
    RealType scale()const;
    +
    BOOST_MATH_GPU_ENABLED RealType scale()const;
     

    Returns the scale parameter of this distribution.

    -
    RealType shape()const;
    +
    BOOST_MATH_GPU_ENABLED RealType shape()const;
     

    Returns the shape parameter of this distribution. @@ -123,15 +123,21 @@

    Cumulative Distribution Function, Probability Density Function, Quantile, Hazard Function, Cumulative Hazard Function, - mean, median, - mode, variance, - standard deviation, - skewness, kurtosis, kurtosis_excess, - range and support. + __logcdf, __logpdf, mean, + median, mode, + variance, standard deviation, skewness, kurtosis, + kurtosis_excess, + range and support. For this distribution + all non-member accessor functions are marked with BOOST_MATH_GPU_ENABLED + and can be run on both host and device.

    The supported domain of the random variable is [scale, ∞].

    +

    + In this distribution the implementation of logcdf + is specialized to improve numerical accuracy. +

    Accuracy @@ -198,6 +204,18 @@
    + +

    + logcdf +

    + + +

    + log(cdf) = log1p(-pow(β/x, α)) +

    + + +

    cdf complement @@ -338,7 +356,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/dist_ref/dists/poisson_dist.html b/doc/html/math_toolkit/dist_ref/dists/poisson_dist.html index 9c3d2f7579..f7cdaed26d 100644 --- a/doc/html/math_toolkit/dist_ref/dists/poisson_dist.html +++ b/doc/html/math_toolkit/dist_ref/dists/poisson_dist.html @@ -1,9 +1,9 @@ - + Poisson Distribution - + @@ -43,8 +43,8 @@ typedef RealType value_type; typedef Policy policy_type; - poisson_distribution(RealType mean = 1); // Constructor. - RealType mean()const; // Accessor. + BOOST_MATH_GPU_ENABLED poisson_distribution(RealType mean = 1); // Constructor. + BOOST_MATH_GPU_ENABLED RealType mean()const; // Accessor. } }} // namespaces boost::math @@ -116,12 +116,12 @@
    Member Functions
    -
    poisson_distribution(RealType mean = 1);
    +
    BOOST_MATH_GPU_ENABLED poisson_distribution(RealType mean = 1);
     

    Constructs a poisson distribution with mean mean.

    -
    RealType mean()const;
    +
    BOOST_MATH_GPU_ENABLED RealType mean()const;
     

    Returns the mean of this distribution. @@ -137,15 +137,21 @@

    Cumulative Distribution Function, Probability Density Function, Quantile, Hazard Function, Cumulative Hazard Function, - mean, median, - mode, variance, - standard deviation, - skewness, kurtosis, kurtosis_excess, - range and support. + __logcdf, __logpdf, mean, + median, mode, + variance, standard deviation, skewness, kurtosis, + kurtosis_excess, + range and support. For this distribution + all non-member accessor functions are marked with BOOST_MATH_GPU_ENABLED + and can be run on both host and device.

    The domain of the random variable is [0, ∞].

    +

    + In this distribution the implementation of logpdf + is specialized to improve numerical accuracy. +

    Accuracy @@ -200,6 +206,18 @@
    + +

    + logpdf +

    + + +

    + log(pdf) = -lgamma(k+1) + k*log(λ) - λ if k > 0 and λ > 0 +

    + + +

    cdf @@ -318,7 +336,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/dist_ref/dists/rayleigh.html b/doc/html/math_toolkit/dist_ref/dists/rayleigh.html index 9dc5db4bb9..cc44da9bf7 100644 --- a/doc/html/math_toolkit/dist_ref/dists/rayleigh.html +++ b/doc/html/math_toolkit/dist_ref/dists/rayleigh.html @@ -1,13 +1,13 @@ - + Rayleigh Distribution - + - + @@ -21,7 +21,7 @@
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -43,9 +43,9 @@ typedef RealType value_type; typedef Policy policy_type; // Construct: - rayleigh_distribution(RealType sigma = 1) + BOOST_MATH_GPU_ENABLED rayleigh_distribution(RealType sigma = 1) // Accessors: - RealType sigma()const; + BOOST_MATH_GPU_ENABLED RealType sigma()const; }; }} // namespaces @@ -104,7 +104,7 @@

    Member Functions
    -
    rayleigh_distribution(RealType sigma = 1);
    +
    BOOST_MATH_GPU_ENABLED rayleigh_distribution(RealType sigma = 1);
     

    Constructs a Rayleigh @@ -113,7 +113,7 @@

    Requires that the σ parameter is greater than zero, otherwise calls domain_error.

    -
    RealType sigma()const;
    +
    BOOST_MATH_GPU_ENABLED RealType sigma()const;
     

    Returns the sigma parameter of this distribution. @@ -129,15 +129,22 @@

    Cumulative Distribution Function, Probability Density Function, Quantile, Hazard Function, Cumulative Hazard Function, - mean, median, - mode, variance, - standard deviation, - skewness, kurtosis, kurtosis_excess, - range and support. + __logcdf, __logpdf, mean, + median, mode, + variance, standard deviation, skewness, kurtosis, + kurtosis_excess, + range and support. For this distribution + all non-member accessor functions are marked with BOOST_MATH_GPU_ENABLED + and can be run on both host and device.

    The domain of the random variable is [0, max_value].

    +

    + In this distribution the implementation of both logcdf, + and logpdf are specialized + to improve numerical accuracy. +

    Accuracy @@ -188,6 +195,18 @@
    + +

    + logpdf +

    + + +

    + log(pdf) = -(x2)/(2*σ2) - 2*log(σ) + log(x) +

    + + +

    cdf @@ -201,6 +220,18 @@

    + +

    + logcdf +

    + + +

    + log(cdf) = log1p(-exp(-x2 / (2*σ2))) +

    + + +

    cdf complement @@ -336,14 +367,14 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/math_toolkit/dist_ref/dists/saspoint5_dist.html b/doc/html/math_toolkit/dist_ref/dists/saspoint5_dist.html index 69c25d20fd..ddffc80b2c 100644 --- a/doc/html/math_toolkit/dist_ref/dists/saspoint5_dist.html +++ b/doc/html/math_toolkit/dist_ref/dists/saspoint5_dist.html @@ -1,6 +1,6 @@ - + SαS Point5 Distribution @@ -186,7 +186,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/dist_ref/dists/skew_normal_dist.html b/doc/html/math_toolkit/dist_ref/dists/skew_normal_dist.html index 5d664fb951..1ee03b3b0e 100644 --- a/doc/html/math_toolkit/dist_ref/dists/skew_normal_dist.html +++ b/doc/html/math_toolkit/dist_ref/dists/skew_normal_dist.html @@ -1,12 +1,12 @@ - + Skew Normal Distribution - + - + @@ -21,7 +21,7 @@
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -208,10 +208,10 @@

    Cumulative Distribution Function, Probability Density Function, Quantile, Hazard Function, Cumulative Hazard Function, - mean, median, - mode, variance, - standard deviation, - skewness, kurtosis, kurtosis_excess, + __logcdf, __logpdf, mean, + median, mode, + variance, standard deviation, skewness, kurtosis, + kurtosis_excess, range and support.

    @@ -510,14 +510,14 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/math_toolkit/dist_ref/dists/students_t_dist.html b/doc/html/math_toolkit/dist_ref/dists/students_t_dist.html index 92c010e04d..60557b726a 100644 --- a/doc/html/math_toolkit/dist_ref/dists/students_t_dist.html +++ b/doc/html/math_toolkit/dist_ref/dists/students_t_dist.html @@ -1,9 +1,9 @@ - + Students t Distribution - + @@ -44,13 +44,13 @@ typedef Policy policy_type; // Constructor: - students_t_distribution(const RealType& v); + BOOST_MATH_GPU_ENABLED students_t_distribution(const RealType& v); // Accessor: - RealType degrees_of_freedom()const; + BOOST_MATH_GPU_ENABLED RealType degrees_of_freedom()const; // degrees of freedom estimation: - static RealType find_degrees_of_freedom( + BOOST_MATH_GPU_ENABLED static RealType find_degrees_of_freedom( RealType difference_from_mean, RealType alpha, RealType beta, @@ -104,7 +104,7 @@
    Member Functions
    -
    students_t_distribution(const RealType& v);
    +
    BOOST_MATH_GPU_ENABLED students_t_distribution(const RealType& v);
     

    Constructs a Student's t-distribution with v degrees @@ -116,12 +116,12 @@

    Note that non-integral degrees of freedom are supported, and are meaningful under certain circumstances.

    -
    RealType degrees_of_freedom()const;
    +
    BOOST_MATH_GPU_ENABLED RealType degrees_of_freedom()const;
     

    returns the number of degrees of freedom of this distribution.

    -
    static RealType find_degrees_of_freedom(
    +
    BOOST_MATH_GPU_ENABLED static RealType find_degrees_of_freedom(
        RealType difference_from_mean,
        RealType alpha,
        RealType beta,
    @@ -188,11 +188,13 @@ 
    Cumulative Distribution Function, Probability Density Function, Quantile, Hazard Function, Cumulative Hazard Function, - mean, median, - mode, variance, - standard deviation, - skewness, kurtosis, kurtosis_excess, - range and support. + __logcdf, __logpdf, mean, + median, mode, + variance, standard deviation, skewness, kurtosis, + kurtosis_excess, + range and support. For this distribution + all non-member accessor functions are marked with BOOST_MATH_GPU_ENABLED + and can be run on both host and device.

    The domain of the random variable is [-∞, +∞]. @@ -430,7 +432,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/dist_ref/dists/triangular_dist.html b/doc/html/math_toolkit/dist_ref/dists/triangular_dist.html index 459e1dec05..fd32f19c12 100644 --- a/doc/html/math_toolkit/dist_ref/dists/triangular_dist.html +++ b/doc/html/math_toolkit/dist_ref/dists/triangular_dist.html @@ -1,9 +1,9 @@ - + Triangular Distribution - + @@ -43,12 +43,12 @@ typedef RealType value_type; typedef Policy policy_type; - triangular_distribution(RealType lower = -1, RealType mode = 0, RealType upper = 1); // Constructor. + BOOST_MATH_GPU_ENABLED triangular_distribution(RealType lower = -1, RealType mode = 0, RealType upper = 1); // Constructor. : m_lower(lower), m_mode(mode), m_upper(upper) // Default is -1, 0, +1 symmetric triangular distribution. // Accessor functions. - RealType lower()const; - RealType mode()const; - RealType upper()const; + BOOST_MATH_GPU_ENABLED RealType lower()const; + BOOST_MATH_GPU_ENABLED RealType mode()const; + BOOST_MATH_GPU_ENABLED RealType upper()const; }; // class triangular_distribution }} // namespaces @@ -126,7 +126,7 @@
    Member Functions
    -
    triangular_distribution(RealType lower = 0, RealType mode = 0 RealType upper = 1);
    +
    BOOST_MATH_GPU_ENABLED triangular_distribution(RealType lower = 0, RealType mode = 0 RealType upper = 1);
     

    Constructs a triangular @@ -168,19 +168,19 @@

    The parameters of a distribution can be obtained using these member functions:

    -
    RealType lower()const;
    +
    BOOST_MATH_GPU_ENABLED RealType lower()const;
     

    Returns the lower parameter of this distribution (default -1).

    -
    RealType mode()const;
    +
    BOOST_MATH_GPU_ENABLED RealType mode()const;
     

    Returns the mode parameter of this distribution (default 0).

    -
    RealType upper()const;
    +
    BOOST_MATH_GPU_ENABLED RealType upper()const;
     

    Returns the upper parameter of this distribution (default+1). @@ -196,11 +196,13 @@

    Cumulative Distribution Function, Probability Density Function, Quantile, Hazard Function, Cumulative Hazard Function, - mean, median, - mode, variance, - standard deviation, - skewness, kurtosis, kurtosis_excess, - range and support. + __logcdf, __logpdf, mean, + median, mode, + variance, standard deviation, skewness, kurtosis, + kurtosis_excess, + range and support. For this distribution + all non-member accessor functions are marked with BOOST_MATH_GPU_ENABLED + and can be run on both host and device.

    The domain of the random variable is \lowerto \upper, and the supported @@ -430,7 +432,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/dist_ref/dists/uniform_dist.html b/doc/html/math_toolkit/dist_ref/dists/uniform_dist.html index 5101d858a5..39dc3e4201 100644 --- a/doc/html/math_toolkit/dist_ref/dists/uniform_dist.html +++ b/doc/html/math_toolkit/dist_ref/dists/uniform_dist.html @@ -1,9 +1,9 @@ - + Uniform Distribution - + @@ -41,11 +41,11 @@ public: typedef RealType value_type; - uniform_distribution(RealType lower = 0, RealType upper = 1); // Constructor. + BOOST_MATH_GPU_ENABLED uniform_distribution(RealType lower = 0, RealType upper = 1); // Constructor. : m_lower(lower), m_upper(upper) // Default is standard uniform distribution. // Accessor functions. - RealType lower()const; - RealType upper()const; + BOOST_MATH_GPU_ENABLED RealType lower()const; + BOOST_MATH_GPU_ENABLED RealType upper()const; }; // class uniform_distribution }} // namespaces @@ -116,7 +116,7 @@
    Member Functions
    -
    uniform_distribution(RealType lower = 0, RealType upper = 1);
    +
    BOOST_MATH_GPU_ENABLED uniform_distribution(RealType lower = 0, RealType upper = 1);
     

    Constructs a uniform @@ -127,12 +127,12 @@

    Requires that the lower and upper parameters are both finite; otherwise if infinity or NaN then calls domain_error.

    -
    RealType lower()const;
    +
    BOOST_MATH_GPU_ENABLED RealType lower()const;
     

    Returns the lower parameter of this distribution.

    -
    RealType upper()const;
    +
    BOOST_MATH_GPU_ENABLED RealType upper()const;
     

    Returns the upper parameter of this distribution. @@ -148,11 +148,13 @@

    Cumulative Distribution Function, Probability Density Function, Quantile, Hazard Function, Cumulative Hazard Function, - mean, median, - mode, variance, - standard deviation, - skewness, kurtosis, kurtosis_excess, - range and support. + __logcdf, __logpdf, mean, + median, mode, + variance, standard deviation, skewness, kurtosis, + kurtosis_excess, + range and support. For this distribution + all non-member accessor functions are marked with BOOST_MATH_GPU_ENABLED + and can be run on both host and device.

    The domain of the random variable is any finite value, but the supported @@ -353,7 +355,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/dist_ref/dists/weibull_dist.html b/doc/html/math_toolkit/dist_ref/dists/weibull_dist.html index 33be3dc4b8..91a58136a3 100644 --- a/doc/html/math_toolkit/dist_ref/dists/weibull_dist.html +++ b/doc/html/math_toolkit/dist_ref/dists/weibull_dist.html @@ -1,9 +1,9 @@ - + Weibull Distribution - + @@ -43,10 +43,10 @@ typedef RealType value_type; typedef Policy policy_type; // Construct: - weibull_distribution(RealType shape, RealType scale = 1) + BOOST_MATH_GPU_ENABLED weibull_distribution(RealType shape, RealType scale = 1) // Accessors: - RealType shape()const; - RealType scale()const; + BOOST_MATH_GPU_ENABLED RealType shape()const; + BOOST_MATH_GPU_ENABLED RealType scale()const; }; }} // namespaces @@ -118,7 +118,7 @@
    Member Functions
    -
    weibull_distribution(RealType shape, RealType scale = 1);
    +
    BOOST_MATH_GPU_ENABLED weibull_distribution(RealType shape, RealType scale = 1);
     

    Constructs a Weibull @@ -128,12 +128,12 @@

    Requires that the shape and scale parameters are both greater than zero, otherwise calls domain_error.

    -
    RealType shape()const;
    +
    BOOST_MATH_GPU_ENABLED RealType shape()const;
     

    Returns the shape parameter of this distribution.

    -
    RealType scale()const;
    +
    BOOST_MATH_GPU_ENABLED RealType scale()const;
     

    Returns the scale parameter of this distribution. @@ -149,15 +149,22 @@

    Cumulative Distribution Function, Probability Density Function, Quantile, Hazard Function, Cumulative Hazard Function, - mean, median, - mode, variance, - standard deviation, - skewness, kurtosis, kurtosis_excess, - range and support. + __logcdf, __logpdf, mean, + median, mode, + variance, standard deviation, skewness, kurtosis, + kurtosis_excess, + range and support. For this distribution + all non-member accessor functions are marked with BOOST_MATH_GPU_ENABLED + and can be run on both host and device.

    The domain of the random variable is [0, ∞].

    +

    + In this distribution the implementation of both logcdf, + and logpdf are specialized + to improve numerical accuracy. +

    Accuracy @@ -210,6 +217,18 @@
    + +

    + logpdf +

    + + +

    + log(pdf) = log(α) - α * log(β) + log(x) * (α-1) - pow(x/β, α) +

    + + +

    cdf @@ -222,6 +241,18 @@

    + +

    + logcdf +

    + + +

    + log(cdf) = log1p(-exp(-pow(x / β, α))) +

    + + +

    cdf complement @@ -360,7 +391,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/dist_ref/nmp.html b/doc/html/math_toolkit/dist_ref/nmp.html index 9f62e2a8bb..5e9f4bc52d 100644 --- a/doc/html/math_toolkit/dist_ref/nmp.html +++ b/doc/html/math_toolkit/dist_ref/nmp.html @@ -1,9 +1,9 @@ - + Non-Member Properties - + @@ -64,6 +64,12 @@
  • kurtosis_excess
  • +
  • + __logcdf. +
  • +
  • + __logpdf. +
  • mean.
  • @@ -615,6 +621,28 @@

    + Natural + Log of the Cumulative Distribution Function +
    +
    template <class RealType, Policy>
    +RealType logcdf(const Distribution-Type<RealType, Policy>& dist);
    +
    +

    + Returns the natural log of the CDF of distribution dist. +

    +
    + + Natural + Log of the Probability Density Function +
    +
    template <class RealType, Policy>
    +RealType logcdf(const Distribution-Type<RealType, Policy>& dist);
    +
    +

    + Returns the natural log of the CDF of distribution dist. +

    +
    + P and Q
    @@ -625,7 +653,7 @@
    returned by these functions.

    - + Percent Point Function or Percentile
    @@ -634,7 +662,7 @@
    the Quantile.

    - + Inverse CDF Function.
    @@ -643,7 +671,7 @@
    Quantile.

    - + Inverse Survival Function.
    @@ -652,7 +680,7 @@
    of the probability.

    - + Probability Mass Function
    @@ -666,7 +694,7 @@
    Function applies to continuous distributions.

    - + Lower Critical Value.
    @@ -676,7 +704,7 @@
    the Quantile.

    - + Upper Critical Value.
    @@ -687,7 +715,7 @@
    complement of the probability.

    - + Survival Function
    @@ -696,7 +724,7 @@
    the Cumulative Distribution Function.

    - + Entropy

    @@ -719,7 +747,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/double_exponential.html b/doc/html/math_toolkit/double_exponential.html index 7d1fbfe4b1..9a23fcc2dd 100644 --- a/doc/html/math_toolkit/double_exponential.html +++ b/doc/html/math_toolkit/double_exponential.html @@ -1,9 +1,9 @@ - + Double-exponential quadrature - + @@ -40,6 +40,7 @@ Maximum Interval Halvings and Memory Requirements
    Thread Safety
    Caveats
    +
    GPU Usage
    References
    @@ -47,7 +48,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/double_exponential/de_caveats.html b/doc/html/math_toolkit/double_exponential/de_caveats.html index f21351117f..985c9921d1 100644 --- a/doc/html/math_toolkit/double_exponential/de_caveats.html +++ b/doc/html/math_toolkit/double_exponential/de_caveats.html @@ -1,13 +1,13 @@ - + Caveats - + - + @@ -21,7 +21,7 @@
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -174,14 +174,14 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/math_toolkit/double_exponential/de_exp_sinh.html b/doc/html/math_toolkit/double_exponential/de_exp_sinh.html index 4f4198222c..94998119b3 100644 --- a/doc/html/math_toolkit/double_exponential/de_exp_sinh.html +++ b/doc/html/math_toolkit/double_exponential/de_exp_sinh.html @@ -1,9 +1,9 @@ - + exp_sinh - + @@ -104,7 +104,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/double_exponential/de_levels.html b/doc/html/math_toolkit/double_exponential/de_levels.html index a0c89c0d7d..85b9fe8c5a 100644 --- a/doc/html/math_toolkit/double_exponential/de_levels.html +++ b/doc/html/math_toolkit/double_exponential/de_levels.html @@ -1,9 +1,9 @@ - + Setting the Maximum Interval Halvings and Memory Requirements - + @@ -65,7 +65,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/double_exponential/de_overview.html b/doc/html/math_toolkit/double_exponential/de_overview.html index 777811872f..7d5c401a8b 100644 --- a/doc/html/math_toolkit/double_exponential/de_overview.html +++ b/doc/html/math_toolkit/double_exponential/de_overview.html @@ -1,9 +1,9 @@ - + Overview - + @@ -218,7 +218,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/double_exponential/de_refes.html b/doc/html/math_toolkit/double_exponential/de_refes.html index 6bbbef9f3f..b4412efe3d 100644 --- a/doc/html/math_toolkit/double_exponential/de_refes.html +++ b/doc/html/math_toolkit/double_exponential/de_refes.html @@ -1,12 +1,12 @@ - + References - + - + @@ -21,7 +21,7 @@
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -53,14 +53,14 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/math_toolkit/double_exponential/de_sinh_sinh.html b/doc/html/math_toolkit/double_exponential/de_sinh_sinh.html index b56fe65307..d794b09ee3 100644 --- a/doc/html/math_toolkit/double_exponential/de_sinh_sinh.html +++ b/doc/html/math_toolkit/double_exponential/de_sinh_sinh.html @@ -1,9 +1,9 @@ - + sinh_sinh - + @@ -82,7 +82,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/double_exponential/de_tanh_sinh.html b/doc/html/math_toolkit/double_exponential/de_tanh_sinh.html index 920e6736b3..44f21ff02f 100644 --- a/doc/html/math_toolkit/double_exponential/de_tanh_sinh.html +++ b/doc/html/math_toolkit/double_exponential/de_tanh_sinh.html @@ -1,9 +1,9 @@ - + tanh_sinh - + @@ -527,7 +527,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/double_exponential/de_tanh_sinh_2_arg.html b/doc/html/math_toolkit/double_exponential/de_tanh_sinh_2_arg.html index 2049f610c4..2c961c40de 100644 --- a/doc/html/math_toolkit/double_exponential/de_tanh_sinh_2_arg.html +++ b/doc/html/math_toolkit/double_exponential/de_tanh_sinh_2_arg.html @@ -1,9 +1,9 @@ - + Handling functions with large features near an endpoint with tanh-sinh quadrature - + @@ -89,7 +89,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/double_exponential/de_thread.html b/doc/html/math_toolkit/double_exponential/de_thread.html index 2f91b8c780..b4f27cd078 100644 --- a/doc/html/math_toolkit/double_exponential/de_thread.html +++ b/doc/html/math_toolkit/double_exponential/de_thread.html @@ -1,9 +1,9 @@ - + Thread Safety - + @@ -52,7 +52,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/double_exponential/de_tol.html b/doc/html/math_toolkit/double_exponential/de_tol.html index 37dee12afc..2cdf33c6dd 100644 --- a/doc/html/math_toolkit/double_exponential/de_tol.html +++ b/doc/html/math_toolkit/double_exponential/de_tol.html @@ -1,9 +1,9 @@ - + Setting the Termination Condition for Integration - + @@ -62,7 +62,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/double_exponential/gpu_usage.html b/doc/html/math_toolkit/double_exponential/gpu_usage.html index 4ddae60909..3877734384 100644 --- a/doc/html/math_toolkit/double_exponential/gpu_usage.html +++ b/doc/html/math_toolkit/double_exponential/gpu_usage.html @@ -1,6 +1,6 @@ - + GPU Usage @@ -53,7 +53,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/ellint.html b/doc/html/math_toolkit/ellint.html index 160d7cb49c..82d15af7ba 100644 --- a/doc/html/math_toolkit/ellint.html +++ b/doc/html/math_toolkit/ellint.html @@ -1,9 +1,9 @@ - + Elliptic Integrals - + @@ -47,7 +47,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/ellint/ellint_1.html b/doc/html/math_toolkit/ellint/ellint_1.html index 0f998085af..8a5c7626c8 100644 --- a/doc/html/math_toolkit/ellint/ellint_1.html +++ b/doc/html/math_toolkit/ellint/ellint_1.html @@ -1,9 +1,9 @@ - + Elliptic Integrals of the First Kind - Legendre Form - + @@ -37,16 +37,16 @@
    namespace boost { namespace math {
     
     template <class T1, class T2>
    -calculated-result-type ellint_1(T1 k, T2 phi);
    +BOOST_MATH_GPU_ENABLED calculated-result-type ellint_1(T1 k, T2 phi);
     
     template <class T1, class T2, class Policy>
    -calculated-result-type ellint_1(T1 k, T2 phi, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type ellint_1(T1 k, T2 phi, const Policy&);
     
     template <class T>
    -calculated-result-type ellint_1(T k);
    +BOOST_MATH_GPU_ENABLED calculated-result-type ellint_1(T k);
     
     template <class T, class Policy>
    -calculated-result-type ellint_1(T k, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type ellint_1(T k, const Policy&);
     
     }} // namespaces
     
    @@ -69,10 +69,10 @@
    when they are the same type then the result is the same type as the arguments.

    template <class T1, class T2>
    -calculated-result-type ellint_1(T1 k, T2 phi);
    +BOOST_MATH_GPU_ENABLED calculated-result-type ellint_1(T1 k, T2 phi);
     
     template <class T1, class T2, class Policy>
    -calculated-result-type ellint_1(T1 k, T2 phi, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type ellint_1(T1 k, T2 phi, const Policy&);
     

    Returns the incomplete elliptic integral of the first kind F(φ, @@ -92,10 +92,10 @@

    documentation for more details.

    template <class T>
    -calculated-result-type ellint_1(T k);
    +BOOST_MATH_GPU_ENABLED calculated-result-type ellint_1(T k);
     
     template <class T>
    -calculated-result-type ellint_1(T k, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type ellint_1(T k, const Policy&);
     

    Returns the complete elliptic integral of the first kind K(k): @@ -280,7 +280,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/ellint/ellint_2.html b/doc/html/math_toolkit/ellint/ellint_2.html index 72a10be887..70f80e3a51 100644 --- a/doc/html/math_toolkit/ellint/ellint_2.html +++ b/doc/html/math_toolkit/ellint/ellint_2.html @@ -1,9 +1,9 @@ - + Elliptic Integrals of the Second Kind - Legendre Form - + @@ -37,16 +37,16 @@
    namespace boost { namespace math {
     
     template <class T1, class T2>
    -calculated-result-type ellint_2(T1 k, T2 phi);
    +BOOST_MATH_GPU_ENABLED calculated-result-type ellint_2(T1 k, T2 phi);
     
     template <class T1, class T2, class Policy>
    -calculated-result-type ellint_2(T1 k, T2 phi, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type ellint_2(T1 k, T2 phi, const Policy&);
     
     template <class T>
    -calculated-result-type ellint_2(T k);
    +BOOST_MATH_GPU_ENABLED calculated-result-type ellint_2(T k);
     
     template <class T, class Policy>
    -calculated-result-type ellint_2(T k, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type ellint_2(T k, const Policy&);
     
     }} // namespaces
     
    @@ -69,10 +69,10 @@
    when they are the same type then the result is the same type as the arguments.

    template <class T1, class T2>
    -calculated-result-type ellint_2(T1 k, T2 phi);
    +BOOST_MATH_GPU_ENABLED calculated-result-type ellint_2(T1 k, T2 phi);
     
     template <class T1, class T2, class Policy>
    -calculated-result-type ellint_2(T1 k, T2 phi, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type ellint_2(T1 k, T2 phi, const Policy&);
     

    Returns the incomplete elliptic integral of the second kind E(φ, @@ -92,10 +92,10 @@

    documentation for more details.

    template <class T>
    -calculated-result-type ellint_2(T k);
    +BOOST_MATH_GPU_ENABLED calculated-result-type ellint_2(T k);
     
     template <class T>
    -calculated-result-type ellint_2(T k, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type ellint_2(T k, const Policy&);
     

    Returns the complete elliptic integral of the second kind E(k): @@ -309,7 +309,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/ellint/ellint_3.html b/doc/html/math_toolkit/ellint/ellint_3.html index 9692430fff..eeddba12c5 100644 --- a/doc/html/math_toolkit/ellint/ellint_3.html +++ b/doc/html/math_toolkit/ellint/ellint_3.html @@ -1,9 +1,9 @@ - + Elliptic Integrals of the Third Kind - Legendre Form - + @@ -37,16 +37,16 @@
    namespace boost { namespace math {
     
     template <class T1, class T2, class T3>
    -calculated-result-type ellint_3(T1 k, T2 n, T3 phi);
    +BOOST_MATH_CUDA_ENABLED calculated-result-type ellint_3(T1 k, T2 n, T3 phi);
     
     template <class T1, class T2, class T3, class Policy>
    -calculated-result-type ellint_3(T1 k, T2 n, T3 phi, const Policy&);
    +BOOST_MATH_CUDA_ENABLED calculated-result-type ellint_3(T1 k, T2 n, T3 phi, const Policy&);
     
     template <class T1, class T2>
    -calculated-result-type ellint_3(T1 k, T2 n);
    +BOOST_MATH_CUDA_ENABLED calculated-result-type ellint_3(T1 k, T2 n);
     
     template <class T1, class T2, class Policy>
    -calculated-result-type ellint_3(T1 k, T2 n, const Policy&);
    +BOOST_MATH_CUDA_ENABLED calculated-result-type ellint_3(T1 k, T2 n, const Policy&);
     
     }} // namespaces
     
    @@ -70,10 +70,10 @@
    arguments.

    template <class T1, class T2, class T3>
    -calculated-result-type ellint_3(T1 k, T2 n, T3 phi);
    +BOOST_MATH_CUDA_ENABLED calculated-result-type ellint_3(T1 k, T2 n, T3 phi);
     
     template <class T1, class T2, class T3, class Policy>
    -calculated-result-type ellint_3(T1 k, T2 n, T3 phi, const Policy&);
    +BOOST_MATH_CUDA_ENABLED calculated-result-type ellint_3(T1 k, T2 n, T3 phi, const Policy&);
     

    Returns the incomplete elliptic integral of the third kind Π(n, @@ -95,10 +95,10 @@

    documentation for more details.

    template <class T1, class T2>
    -calculated-result-type ellint_3(T1 k, T2 n);
    +BOOST_MATH_CUDA_ENABLED calculated-result-type ellint_3(T1 k, T2 n);
     
     template <class T1, class T2, class Policy>
    -calculated-result-type ellint_3(T1 k, T2 n, const Policy&);
    +BOOST_MATH_CUDA_ENABLED calculated-result-type ellint_3(T1 k, T2 n, const Policy&);
     

    Returns the complete elliptic integral of the first kind Π(n, k): @@ -348,7 +348,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/ellint/ellint_carlson.html b/doc/html/math_toolkit/ellint/ellint_carlson.html index d598490ed4..3e8a9ec22a 100644 --- a/doc/html/math_toolkit/ellint/ellint_carlson.html +++ b/doc/html/math_toolkit/ellint/ellint_carlson.html @@ -1,9 +1,9 @@ - + Elliptic Integrals - Carlson Form - + @@ -37,10 +37,10 @@
    namespace boost { namespace math {
     
     template <class T1, class T2, class T3>
    -calculated-result-type ellint_rf(T1 x, T2 y, T3 z)
    +BOOST_MATH_GPU_ENABLED calculated-result-type ellint_rf(T1 x, T2 y, T3 z)
     
     template <class T1, class T2, class T3, class Policy>
    -calculated-result-type ellint_rf(T1 x, T2 y, T3 z, const Policy&)
    +BOOST_MATH_GPU_ENABLED calculated-result-type ellint_rf(T1 x, T2 y, T3 z, const Policy&)
     
     }} // namespaces
     
    @@ -49,10 +49,10 @@
    namespace boost { namespace math {
     
     template <class T1, class T2, class T3>
    -calculated-result-type ellint_rd(T1 x, T2 y, T3 z)
    +BOOST_MATH_GPU_ENABLED calculated-result-type ellint_rd(T1 x, T2 y, T3 z)
     
     template <class T1, class T2, class T3, class Policy>
    -calculated-result-type ellint_rd(T1 x, T2 y, T3 z, const Policy&)
    +BOOST_MATH_GPU_ENABLED calculated-result-type ellint_rd(T1 x, T2 y, T3 z, const Policy&)
     
     }} // namespaces
     
    @@ -61,10 +61,10 @@
    namespace boost { namespace math {
     
     template <class T1, class T2, class T3, class T4>
    -calculated-result-type ellint_rj(T1 x, T2 y, T3 z, T4 p)
    +BOOST_MATH_GPU_ENABLED calculated-result-type ellint_rj(T1 x, T2 y, T3 z, T4 p)
     
     template <class T1, class T2, class T3, class T4, class Policy>
    -calculated-result-type ellint_rj(T1 x, T2 y, T3 z, T4 p, const Policy&)
    +BOOST_MATH_GPU_ENABLED calculated-result-type ellint_rj(T1 x, T2 y, T3 z, T4 p, const Policy&)
     
     }} // namespaces
     
    @@ -73,10 +73,10 @@
    namespace boost { namespace math {
     
     template <class T1, class T2>
    -calculated-result-type ellint_rc(T1 x, T2 y)
    +BOOST_MATH_GPU_ENABLED calculated-result-type ellint_rc(T1 x, T2 y)
     
     template <class T1, class T2, class Policy>
    -calculated-result-type ellint_rc(T1 x, T2 y, const Policy&)
    +BOOST_MATH_GPU_ENABLED calculated-result-type ellint_rc(T1 x, T2 y, const Policy&)
     
     }} // namespaces
     
    @@ -85,10 +85,10 @@
    namespace boost { namespace math {
     
     template <class T1, class T2, class T3>
    -calculated-result-type ellint_rg(T1 x, T2 y, T3 z)
    +BOOST_MATH_GPU_ENABLED calculated-result-type ellint_rg(T1 x, T2 y, T3 z)
     
     template <class T1, class T2, class T3, class Policy>
    -calculated-result-type ellint_rg(T1 x, T2 y, T3 z, const Policy&)
    +BOOST_MATH_GPU_ENABLED calculated-result-type ellint_rg(T1 x, T2 y, T3 z, const Policy&)
     
     }} // namespaces
     
    @@ -111,10 +111,10 @@
    types: otherwise the return is the same type as the arguments.

    template <class T1, class T2, class T3>
    -calculated-result-type ellint_rf(T1 x, T2 y, T3 z)
    +BOOST_MATH_GPU_ENABLED calculated-result-type ellint_rf(T1 x, T2 y, T3 z)
     
     template <class T1, class T2, class T3, class Policy>
    -calculated-result-type ellint_rf(T1 x, T2 y, T3 z, const Policy&)
    +BOOST_MATH_GPU_ENABLED calculated-result-type ellint_rf(T1 x, T2 y, T3 z, const Policy&)
     

    Returns Carlson's Elliptic Integral RF: @@ -134,10 +134,10 @@

    documentation for more details.

    template <class T1, class T2, class T3>
    -calculated-result-type ellint_rd(T1 x, T2 y, T3 z)
    +BOOST_MATH_GPU_ENABLED calculated-result-type ellint_rd(T1 x, T2 y, T3 z)
     
     template <class T1, class T2, class T3, class Policy>
    -calculated-result-type ellint_rd(T1 x, T2 y, T3 z, const Policy&)
    +BOOST_MATH_GPU_ENABLED calculated-result-type ellint_rd(T1 x, T2 y, T3 z, const Policy&)
     

    Returns Carlson's elliptic integral RD: @@ -157,10 +157,10 @@

    documentation for more details.

    template <class T1, class T2, class T3, class T4>
    -calculated-result-type ellint_rj(T1 x, T2 y, T3 z, T4 p)
    +BOOST_MATH_GPU_ENABLED calculated-result-type ellint_rj(T1 x, T2 y, T3 z, T4 p)
     
     template <class T1, class T2, class T3, class T4, class Policy>
    -calculated-result-type ellint_rj(T1 x, T2 y, T3 z, T4 p, const Policy&)
    +BOOST_MATH_GPU_ENABLED calculated-result-type ellint_rj(T1 x, T2 y, T3 z, T4 p, const Policy&)
     

    Returns Carlson's elliptic integral RJ: @@ -188,10 +188,10 @@

    template <class T1, class T2>
    -calculated-result-type ellint_rc(T1 x, T2 y)
    +BOOST_MATH_GPU_ENABLED calculated-result-type ellint_rc(T1 x, T2 y)
     
     template <class T1, class T2, class Policy>
    -calculated-result-type ellint_rc(T1 x, T2 y, const Policy&)
    +BOOST_MATH_GPU_ENABLED calculated-result-type ellint_rc(T1 x, T2 y, const Policy&)
     

    Returns Carlson's elliptic integral RC: @@ -219,10 +219,10 @@

    template <class T1, class T2, class T3>
    -calculated-result-type ellint_rg(T1 x, T2 y, T3 z)
    +BOOST_MATH_GPU_ENABLED calculated-result-type ellint_rg(T1 x, T2 y, T3 z)
     
     template <class T1, class T2, class T3, class Policy>
    -calculated-result-type ellint_rg(T1 x, T2 y, T3 z, const Policy&)
    +BOOST_MATH_GPU_ENABLED calculated-result-type ellint_rg(T1 x, T2 y, T3 z, const Policy&)
     

    Returns Carlson's elliptic integral RG: @@ -986,7 +986,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/ellint/ellint_d.html b/doc/html/math_toolkit/ellint/ellint_d.html index aac40f1135..f5ecca7c94 100644 --- a/doc/html/math_toolkit/ellint/ellint_d.html +++ b/doc/html/math_toolkit/ellint/ellint_d.html @@ -1,9 +1,9 @@ - + Elliptic Integral D - Legendre Form - + @@ -37,16 +37,16 @@
    namespace boost { namespace math {
     
     template <class T1, class T2>
    -calculated-result-type ellint_d(T1 k, T2 phi);
    +BOOST_MATH_GPU_ENABLED calculated-result-type ellint_d(T1 k, T2 phi);
     
     template <class T1, class T2, class Policy>
    -calculated-result-type ellint_d(T1 k, T2 phi, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type ellint_d(T1 k, T2 phi, const Policy&);
     
     template <class T1>
    -calculated-result-type ellint_d(T1 k);
    +BOOST_MATH_GPU_ENABLED calculated-result-type ellint_d(T1 k);
     
     template <class T1, class Policy>
    -calculated-result-type ellint_d(T1 k, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type ellint_d(T1 k, const Policy&);
     
     }} // namespaces
     
    @@ -65,10 +65,10 @@
    arguments.

    template <class T1, class T2>
    -calculated-result-type ellint_d(T1 k, T2 phi);
    +BOOST_MATH_GPU_ENABLED calculated-result-type ellint_d(T1 k, T2 phi);
     
     template <class T1, class T2, class Policy>
    -calculated-result-type ellint_3(T1 k, T2 phi, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type ellint_3(T1 k, T2 phi, const Policy&);
     

    Returns the incomplete elliptic integral: @@ -89,10 +89,10 @@

    documentation for more details.

    template <class T1>
    -calculated-result-type ellint_d(T1 k);
    +BOOST_MATH_GPU_ENABLED calculated-result-type ellint_d(T1 k);
     
     template <class T1, class Policy>
    -calculated-result-type ellint_d(T1 k, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type ellint_d(T1 k, const Policy&);
     

    Returns the complete elliptic integral D(k) = D(π/2, k) @@ -367,7 +367,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/ellint/ellint_intro.html b/doc/html/math_toolkit/ellint/ellint_intro.html index d050d4db4f..2666ba1a9b 100644 --- a/doc/html/math_toolkit/ellint/ellint_intro.html +++ b/doc/html/math_toolkit/ellint/ellint_intro.html @@ -1,9 +1,9 @@ - + Elliptic Integral Overview - + @@ -487,7 +487,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/ellint/heuman_lambda.html b/doc/html/math_toolkit/ellint/heuman_lambda.html index a8141636c7..8889a2ab45 100644 --- a/doc/html/math_toolkit/ellint/heuman_lambda.html +++ b/doc/html/math_toolkit/ellint/heuman_lambda.html @@ -1,9 +1,9 @@ - + Heuman Lambda Function - + @@ -36,10 +36,10 @@
    namespace boost { namespace math {
     
     template <class T1, class T2>
    -calculated-result-type heuman_lambda(T1 k, T2 phi);
    +BOOST_MATH_GPU_ENABLED calculated-result-type heuman_lambda(T1 k, T2 phi);
     
     template <class T1, class T2, class Policy>
    -calculated-result-type heuman_lambda(T1 k, T2 phi, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type heuman_lambda(T1 k, T2 phi, const Policy&);
     
     }} // namespaces
     
    @@ -210,7 +210,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/ellint/jacobi_zeta.html b/doc/html/math_toolkit/ellint/jacobi_zeta.html index e73e75808a..445075da95 100644 --- a/doc/html/math_toolkit/ellint/jacobi_zeta.html +++ b/doc/html/math_toolkit/ellint/jacobi_zeta.html @@ -1,9 +1,9 @@ - + Jacobi Zeta Function - + @@ -36,10 +36,10 @@
    namespace boost { namespace math {
     
     template <class T1, class T2>
    -calculated-result-type jacobi_zeta(T1 k, T2 phi);
    +BOOST_MATH_GPU_ENABLED calculated-result-type jacobi_zeta(T1 k, T2 phi);
     
     template <class T1, class T2, class Policy>
    -calculated-result-type jacobi_zeta(T1 k, T2 phi, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type jacobi_zeta(T1 k, T2 phi, const Policy&);
     
     }} // namespaces
     
    @@ -265,7 +265,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/error_handling.html b/doc/html/math_toolkit/error_handling.html index 82db089a74..412838390e 100644 --- a/doc/html/math_toolkit/error_handling.html +++ b/doc/html/math_toolkit/error_handling.html @@ -1,13 +1,13 @@ - + Error Handling - + - + @@ -21,7 +21,7 @@
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -1108,14 +1108,14 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/math_toolkit/estrin.html b/doc/html/math_toolkit/estrin.html index cbed796eb8..72726e2008 100644 --- a/doc/html/math_toolkit/estrin.html +++ b/doc/html/math_toolkit/estrin.html @@ -1,9 +1,9 @@ - + Estrin's method for polynomial evaluation - + @@ -89,7 +89,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/exact_typdefs.html b/doc/html/math_toolkit/exact_typdefs.html index d6d28ea2ce..f704bba2fc 100644 --- a/doc/html/math_toolkit/exact_typdefs.html +++ b/doc/html/math_toolkit/exact_typdefs.html @@ -1,9 +1,9 @@ - + Exact-Width Floating-Point typedefs - + @@ -161,7 +161,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/examples.html b/doc/html/math_toolkit/examples.html index 6e12374fd1..50f36ff25a 100644 --- a/doc/html/math_toolkit/examples.html +++ b/doc/html/math_toolkit/examples.html @@ -1,9 +1,9 @@ - + Examples - + @@ -126,7 +126,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/exp.html b/doc/html/math_toolkit/exp.html index cd76870c14..fb4507c750 100644 --- a/doc/html/math_toolkit/exp.html +++ b/doc/html/math_toolkit/exp.html @@ -1,9 +1,9 @@ - + The Quaternionic Exponential - + @@ -44,7 +44,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/expint.html b/doc/html/math_toolkit/expint.html index 1567aee256..069f24d2c7 100644 --- a/doc/html/math_toolkit/expint.html +++ b/doc/html/math_toolkit/expint.html @@ -1,9 +1,9 @@ - + Exponential Integrals - + @@ -36,7 +36,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/expint/expint_i.html b/doc/html/math_toolkit/expint/expint_i.html index 05279e2307..80c8be37b4 100644 --- a/doc/html/math_toolkit/expint/expint_i.html +++ b/doc/html/math_toolkit/expint/expint_i.html @@ -1,9 +1,9 @@ - + Exponential Integral Ei - + @@ -36,10 +36,10 @@

    namespace boost{ namespace math{
     
     template <class T>
    -calculated-result-type expint(T z);
    +BOOST_MATH_GPU_ENABLED calculated-result-type expint(T z);
     
     template <class T, class Policy>
    -calculated-result-type expint(T z, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type expint(T z, const Policy&);
     
     }} // namespaces
     
    @@ -58,10 +58,10 @@
    Description
    template <class T>
    -calculated-result-type expint(T z);
    +BOOST_MATH_GPU_ENABLED calculated-result-type expint(T z);
     
     template <class T, class Policy>
    -calculated-result-type expint(T z, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type expint(T z, const Policy&);
     

    Returns the exponential @@ -324,7 +324,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/expint/expint_n.html b/doc/html/math_toolkit/expint/expint_n.html index 94d41d38f9..c642f1eb25 100644 --- a/doc/html/math_toolkit/expint/expint_n.html +++ b/doc/html/math_toolkit/expint/expint_n.html @@ -1,9 +1,9 @@ - + Exponential Integral En - + @@ -36,10 +36,10 @@
    namespace boost{ namespace math{
     
     template <class T>
    -calculated-result-type expint(unsigned n, T z);
    +BOOST_MATH_GPU_ENABLED calculated-result-type expint(unsigned n, T z);
     
     template <class T, class Policy>
    -calculated-result-type expint(unsigned n, T z, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type expint(unsigned n, T z, const Policy&);
     
     }} // namespaces
     
    @@ -58,10 +58,10 @@
    Description
    template <class T>
    -calculated-result-type expint(unsigned n, T z);
    +BOOST_MATH_GPU_ENABLED calculated-result-type expint(unsigned n, T z);
     
     template <class T, class Policy>
    -calculated-result-type expint(unsigned n, T z, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type expint(unsigned n, T z, const Policy&);
     

    Returns the exponential @@ -276,7 +276,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/factorials.html b/doc/html/math_toolkit/factorials.html index 67590f79b5..8b1b580feb 100644 --- a/doc/html/math_toolkit/factorials.html +++ b/doc/html/math_toolkit/factorials.html @@ -1,9 +1,9 @@ - + Factorials and Binomial Coefficients - + @@ -40,7 +40,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/factorials/sf_binomial.html b/doc/html/math_toolkit/factorials/sf_binomial.html index a938003baf..50e4854b21 100644 --- a/doc/html/math_toolkit/factorials/sf_binomial.html +++ b/doc/html/math_toolkit/factorials/sf_binomial.html @@ -1,9 +1,9 @@ - + Binomial Coefficients - + @@ -132,7 +132,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/factorials/sf_double_factorial.html b/doc/html/math_toolkit/factorials/sf_double_factorial.html index 15aeeec541..3f34edc4f3 100644 --- a/doc/html/math_toolkit/factorials/sf_double_factorial.html +++ b/doc/html/math_toolkit/factorials/sf_double_factorial.html @@ -1,9 +1,9 @@ - + Double Factorial - + @@ -148,7 +148,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/factorials/sf_factorial.html b/doc/html/math_toolkit/factorials/sf_factorial.html index 8bfb0ff33b..6635744753 100644 --- a/doc/html/math_toolkit/factorials/sf_factorial.html +++ b/doc/html/math_toolkit/factorials/sf_factorial.html @@ -1,9 +1,9 @@ - + Factorial - + @@ -183,7 +183,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/factorials/sf_falling_factorial.html b/doc/html/math_toolkit/factorials/sf_falling_factorial.html index 1c0386179a..1a0dbd3cca 100644 --- a/doc/html/math_toolkit/factorials/sf_falling_factorial.html +++ b/doc/html/math_toolkit/factorials/sf_falling_factorial.html @@ -1,9 +1,9 @@ - + Falling Factorial - + @@ -96,7 +96,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/factorials/sf_rising_factorial.html b/doc/html/math_toolkit/factorials/sf_rising_factorial.html index 932e1b38ca..66d34f2399 100644 --- a/doc/html/math_toolkit/factorials/sf_rising_factorial.html +++ b/doc/html/math_toolkit/factorials/sf_rising_factorial.html @@ -1,9 +1,9 @@ - + Rising Factorial - + @@ -101,7 +101,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/fastest_typdefs.html b/doc/html/math_toolkit/fastest_typdefs.html index aa0993a5dd..feb8eee353 100644 --- a/doc/html/math_toolkit/fastest_typdefs.html +++ b/doc/html/math_toolkit/fastest_typdefs.html @@ -1,9 +1,9 @@ - + Fastest floating-point typedefs - + @@ -50,7 +50,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/float128.html b/doc/html/math_toolkit/float128.html index 6ad37935d4..e4a1319feb 100644 --- a/doc/html/math_toolkit/float128.html +++ b/doc/html/math_toolkit/float128.html @@ -1,9 +1,9 @@ - + Implementation of Float128 type - + @@ -158,7 +158,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/float128/exp_function.html b/doc/html/math_toolkit/float128/exp_function.html index 76fcf8f8c0..d9f80c442d 100644 --- a/doc/html/math_toolkit/float128/exp_function.html +++ b/doc/html/math_toolkit/float128/exp_function.html @@ -1,9 +1,9 @@ - + Exponential function - + @@ -58,7 +58,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/float128/overloading.html b/doc/html/math_toolkit/float128/overloading.html index f8da72f63a..69c2e47bf1 100644 --- a/doc/html/math_toolkit/float128/overloading.html +++ b/doc/html/math_toolkit/float128/overloading.html @@ -1,9 +1,9 @@ - + Overloading template functions with float128_t - + @@ -83,7 +83,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/float128/typeinfo.html b/doc/html/math_toolkit/float128/typeinfo.html index 12fd81c5b8..f1373b7eb4 100644 --- a/doc/html/math_toolkit/float128/typeinfo.html +++ b/doc/html/math_toolkit/float128/typeinfo.html @@ -1,9 +1,9 @@ - + typeinfo - + @@ -64,7 +64,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/float128_hints.html b/doc/html/math_toolkit/float128_hints.html index 8db013b065..67477905fb 100644 --- a/doc/html/math_toolkit/float128_hints.html +++ b/doc/html/math_toolkit/float128_hints.html @@ -1,9 +1,9 @@ - + Hints on using float128 (and __float128) - + @@ -93,7 +93,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/float_comparison.html b/doc/html/math_toolkit/float_comparison.html index 38dc6381da..3d7e65050c 100644 --- a/doc/html/math_toolkit/float_comparison.html +++ b/doc/html/math_toolkit/float_comparison.html @@ -1,9 +1,9 @@ - + Floating-point Comparison - + @@ -400,7 +400,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/fourier_integrals.html b/doc/html/math_toolkit/fourier_integrals.html index 007296b3ca..a7e120b3d9 100644 --- a/doc/html/math_toolkit/fourier_integrals.html +++ b/doc/html/math_toolkit/fourier_integrals.html @@ -1,9 +1,9 @@ - + Fourier Integrals - + @@ -302,7 +302,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/fp_facets.html b/doc/html/math_toolkit/fp_facets.html index 894829bbc4..2a1bc8856d 100644 --- a/doc/html/math_toolkit/fp_facets.html +++ b/doc/html/math_toolkit/fp_facets.html @@ -1,9 +1,9 @@ - + Facets for Floating-Point Infinities and NaNs - + @@ -78,7 +78,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/fp_facets/examples.html b/doc/html/math_toolkit/fp_facets/examples.html index 875286bb88..0aa3958450 100644 --- a/doc/html/math_toolkit/fp_facets/examples.html +++ b/doc/html/math_toolkit/fp_facets/examples.html @@ -1,9 +1,9 @@ - + Examples - + @@ -244,7 +244,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/fp_facets/facets_intro.html b/doc/html/math_toolkit/fp_facets/facets_intro.html index 33cf16e5bc..d79265f8c5 100644 --- a/doc/html/math_toolkit/fp_facets/facets_intro.html +++ b/doc/html/math_toolkit/fp_facets/facets_intro.html @@ -1,9 +1,9 @@ - + Introduction - + @@ -366,7 +366,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/fp_facets/portability.html b/doc/html/math_toolkit/fp_facets/portability.html index df321165dd..ab1fd80ff3 100644 --- a/doc/html/math_toolkit/fp_facets/portability.html +++ b/doc/html/math_toolkit/fp_facets/portability.html @@ -1,9 +1,9 @@ - + Portability - + @@ -37,7 +37,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/fp_facets/rationale.html b/doc/html/math_toolkit/fp_facets/rationale.html index a83be60e0f..aa31f7b64f 100644 --- a/doc/html/math_toolkit/fp_facets/rationale.html +++ b/doc/html/math_toolkit/fp_facets/rationale.html @@ -1,9 +1,9 @@ - + Design Rationale - + @@ -54,7 +54,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/fp_facets/reference.html b/doc/html/math_toolkit/fp_facets/reference.html index ffbd211b8e..69087574e3 100644 --- a/doc/html/math_toolkit/fp_facets/reference.html +++ b/doc/html/math_toolkit/fp_facets/reference.html @@ -1,9 +1,9 @@ - + Reference - + @@ -477,7 +477,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/fpclass.html b/doc/html/math_toolkit/fpclass.html index c7760c86e8..2b86c1f742 100644 --- a/doc/html/math_toolkit/fpclass.html +++ b/doc/html/math_toolkit/fpclass.html @@ -1,9 +1,9 @@ - + Floating-Point Classification: Infinities and NaNs - + @@ -238,7 +238,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/future.html b/doc/html/math_toolkit/future.html index 251e23aa74..d17cfe6f4d 100644 --- a/doc/html/math_toolkit/future.html +++ b/doc/html/math_toolkit/future.html @@ -1,9 +1,9 @@ - + Extras/Future Directions - + @@ -134,7 +134,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/gauss.html b/doc/html/math_toolkit/gauss.html index 92d50b6ea4..81e111932e 100644 --- a/doc/html/math_toolkit/gauss.html +++ b/doc/html/math_toolkit/gauss.html @@ -1,9 +1,9 @@ - + Gauss-Legendre quadrature - + @@ -201,7 +201,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/gauss_kronrod.html b/doc/html/math_toolkit/gauss_kronrod.html index 07cf7c02ab..9fc69aae2a 100644 --- a/doc/html/math_toolkit/gauss_kronrod.html +++ b/doc/html/math_toolkit/gauss_kronrod.html @@ -1,9 +1,9 @@ - + Gauss-Kronrod Quadrature - + @@ -273,7 +273,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/gd_opt.html b/doc/html/math_toolkit/gd_opt.html new file mode 100644 index 0000000000..22171405f9 --- /dev/null +++ b/doc/html/math_toolkit/gd_opt.html @@ -0,0 +1,54 @@ + + + +Gradient Based Optimizers + + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    + + +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/math_toolkit/gd_opt/gradient_descent.html b/doc/html/math_toolkit/gd_opt/gradient_descent.html new file mode 100644 index 0000000000..6df1e2b137 --- /dev/null +++ b/doc/html/math_toolkit/gd_opt/gradient_descent.html @@ -0,0 +1,419 @@ + + + +Gradient Descent + + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Synopsis +
    +
    #include <boost/math/optimization/gradient_descent.hpp>
    +
    +template<typename ArgumentContainer,
    +         typename RealType,
    +     class Objective,
    +     class InitializationPolicy,
    +     class ObjectiveEvalPolicy,
    +     class GradEvalPolicy>
    +class gradient_descent {
    +  public:
    +    void step();
    +}
    +
    +/* Convenience overloads  */
    +/* make gradient descent by providing
    + ** objective function
    + ** variables to optimize over
    + ** optionally learing rate
    + *
    + * requires that code is written using boost::math::differentiation::rvar
    + */
    +template<class Objective, typename ArgumentContainer, typename RealType>
    +auto make_gradient_descent(Objective&& obj, ArgumentContainer& x, RealType lr = RealType{ 0.01 });
    +
    +/* make gradient descent by providing
    + * objective function
    + ** variables to optimize over
    + ** learning rate (not optional)
    + ** initialization policy
    + *
    + * requires that code is written using boost::math::differentiation::rvar
    + */
    +
    +template<class Objective, typename ArgumentContainer, typename RealType, class InitializationPolicy>
    +    auto make_gradient_descent(Objective&& obj,
    +                               ArgumentContainer& x,
    +                               RealType lr,
    +                               InitializationPolicy&& ip);
    +/* make gradient descent by providing
    +** objective function
    +** variables to optimize over
    +** learning rate (not optional)
    +** variable initialization policy
    +** objective evaluation policy
    +** gradient evaluation policy
    +*
    +* code does not have to use boost::math::differentiation::rvar
    +*/
    +template<typename ArgumentContainer,
    +             typename RealType,
    +     class Objective,
    +         class InitializationPolicy,
    +             class ObjectiveEvalPolicy,
    +             class GradEvalPolicy>
    +auto make_gradient_descent(Objective&& obj,
    +                           ArgumentContainer& x,
    +                               RealType& lr,
    +                               InitializationPolicy&& ip,
    +                               ObjectiveEvalPolicy&& oep,
    +                               GradEvalPolicy&& gep)
    +
    +

    + Gradient descent iteratively updates parameters x + in the direction opposite to the gradient of the objective function (minimizing + the objective). +

    +
    x[i] -= lr * g[i]
    +
    +

    + where lr is a user defined + learning rate. For a more complete description of the theoretical principle + check the wikipedia + page +

    +

    + The implementation delegates: - the initialization of differentiable variables + to an initialization policy - objective evaluation to an objective evaluation + policy - the gradient computation to a gradient evaluation policy - the parameter + updates to an update policy +

    +

    + The interface is intended to be pytorch-like, where a optimizer object is + constructed and progressed with a step() method. A helper minimize + method is also provided. +

    +
    + + Parameters +
    +
      +
    • + Objective&& + obj : objective function to + minimize +
    • +
    • + ArgumentContainer& + x : variables to optimize over +
    • +
    • + RealType& + lr : learning rate. A larger + value takes larger steps during descent, leading to faster, but more + unstable convergence. Conversely, small values are more stable but take + longer to converge. +
    • +
    • + InitializationPolicy&& ip + : Initialization policy for optimizer state and variables. Users may + supply a custom initialization policy to control how the argument container + and any AD specific runtime state : i.e. reverse-mode tape attachment/reset + are initialized. By default, the optimizer uses the user-provided initial + values in x and performs the standard reverse mode AD initialization + required for gradient evaluation. Custom initialization policies are + useful for randomized starts, non rvar AD types, or when gradients are + supplied externally. See the reverse-mode autodiff policy documentation + for the required initialization policy interface when writing custom + policies. +
    • +
    • + ObjectiveEvalPolicy&& + oep : tells the optimizer how + to evaluate the objective function. By default reverse_mode_function_eval_policy<RealType>. +
    • +
    • + GradEvalPolicy&& + gep : tells the optimizer how + to evaluate the gradient of the objective function. By default reverse_mode_gradient_evaluation_policy<RealType> +
    • +
    +
    + + Example + using a manual optimization +
    +

    + In this section we will present an example for finding optimal configurations + of electrically charged particles confined to a R + = 1 + sphere. This problem is also known as the Thomson + problem. In summary, we are looking for the configuration of an N-electron + system subject to the Coulomb potential confined to the $S^2$ sphere. The + Coulomb potential is given by: +

    +

    + +

    +

    + The code below manually minimizes the above potential energy function for + N particles over their two angular positions. +

    +
    #include <boost/math/differentiation/autodiff_reverse.hpp>
    +#include <boost/math/optimization/gradient_descent.hpp>
    +#include <boost/math/optimization/minimizer.hpp>
    +#include <cmath>
    +#include <fstream>
    +#include <iostream>
    +#include <random>
    +#include <string>
    +namespace rdiff = boost::math::differentiation::reverse_mode;
    +namespace bopt  = boost::math::optimization;
    +double random_double(double min = 0.0, double max = 1.0)
    +{
    +    static thread_local std::mt19937       rng{std::random_device{}()};
    +    std::uniform_real_distribution<double> dist(min, max);
    +    return dist(rng);
    +}
    +
    +template<typename S>
    +struct vec3
    +{
    +    /**
    +    * @brief R^3 coordinates of particle on Thomson Sphere
    +    */
    +    S x, y, z;
    +};
    +
    +template<class S>
    +static inline vec3<S> sph_to_xyz(const S& theta, const S& phi)
    +{
    +    /**
    +     * convenience overload to convert from [theta,phi] -> x, y, z
    +     */
    +    return {sin(theta) * cos(phi), sin(theta) * sin(phi), cos(theta)};
    +}
    +
    +template<typename T>
    +T thomson_energy(std::vector<T>& r)
    +{
    +    const size_t N    = r.size() / 2;
    +    const T      tiny = T(1e-12);
    +
    +    T E = 0;
    +    for (size_t i = 0; i < N; ++i) {
    +        const T& theta_i = r[2 * i + 0];
    +        const T& phi_i   = r[2 * i + 1];
    +        auto     ri      = sph_to_xyz(theta_i, phi_i);
    +
    +        for (size_t j = i + 1; j < N; ++j) {
    +            const T& theta_j = r[2 * j + 0];
    +            const T& phi_j   = r[2 * j + 1];
    +            auto     rj      = sph_to_xyz(theta_j, phi_j);
    +
    +            T dx = ri.x - rj.x;
    +            T dy = ri.y - rj.y;
    +        T dz = ri.z - rj.z;
    +
    +            T d2 = dx * dx + dy * dy + dz * dz + tiny;
    +            E += 1.0 / sqrt(d2);
    +        }
    +    }
    +    return E;
    +}
    +
    +template<class T>
    +std::vector<rdiff::rvar<T, 1>> init_theta_phi_uniform(size_t N, unsigned seed = 12345)
    +{
    +    const T pi = T(3.1415926535897932384626433832795);
    +
    +    std::mt19937                      rng(seed);
    +    std::uniform_real_distribution<T> unif01(T(0), T(1));
    +    std::uniform_real_distribution<T> unifm11(T(-1), T(1));
    +
    +    std::vector<rdiff::rvar<T, 1>> u;
    +    u.reserve(2 * N);
    +
    +    for (size_t i = 0; i < N; ++i) {
    +        T z     = unifm11(rng);
    +        T phi   = (T(2) * pi) * unif01(rng) - pi;
    +        T theta = std::acos(z);
    +
    +        u.emplace_back(theta);
    +        u.emplace_back(phi);
    +    }
    +    return u;
    +}
    +
    +int main(int argc, char* argv[])
    +{
    +    if (argc != 2) {
    +        std::cerr << "Usage: " << argv[0] << " <N>\n";
    +        return 1;
    +    }
    +
    +    const int    N      = std::stoi(argv[1]);
    +    const int    NSTEPS = 100000;
    +    const double lr     = 1e-3;
    +
    +    auto u_ad = init_theta_phi_uniform<double>(N);
    +
    +        auto gdopt = bopt::make_gradient_descent(&thomson_energy<rdiff::rvar<double, 1>>, u_ad, lr);
    +
    +    // filenames
    +    std::string pos_filename    = "thomson_" + std::to_string(N) + ".csv";
    +    std::string energy_filename = "energy_" + std::to_string(N) + ".csv";
    +
    +        std::ofstream pos_out(pos_filename);
    +        std::ofstream energy_out(energy_filename);
    +
    +        pos_out << "step,particle,x,y,z\n";
    +        energy_out << "step,energy\n";
    +
    +    for (int step = 0; step < NSTEPS; ++step) {
    +            gdopt.step();
    +            for (int pi = 0; pi < N; ++pi) {
    +                double theta = u_ad[2 * pi + 0].item();
    +                double phi   = u_ad[2 * pi + 1].item();
    +                auto   r     = sph_to_xyz(theta, phi);
    +                pos_out << step << "," << pi << "," << r.x << "," << r.y << "," << r.z << "\n";
    +            }
    +        auto E = gdopt.objective_value();
    +        energy_out << step << "," << E << "\n";
    +        }
    +
    +        pos_out.close();
    +        energy_out.close();
    +
    +        return 0;
    +}
    +
    +

    + The variable +

    +
    const int    N      = std::stoi(argv[1]);
    +

    + is the number of particles read from the command line +

    +
    const int    NSTEPS = 100000;
    +

    + is the number of optimization steps +

    +
    const double lr     = 1e-3;
    +

    + is the optimizer learning rate. Using the code the way its written, the optimizer + runs for 100000 steps. Running the program with +

    +
    ./thomson_sphere N
    +
    +

    + optimizes the N particle system. Below is a plot of several optimal configurations + for N=2,...8 particles. +

    +

    + +

    +

    + Below is a plot of the final energy of the system, and its deviation from + the theoretically predicted values. The table of theoretical energy values + for the problem is from wikipedia. +

    +

    + [gbo_graphi thomson_energy_error_gradient_descent.svg] +

    +
    + + Example + using minimize +
    +

    + Often, we don't want to actually implement our own stepping function, i.e. + we care about certain convergence criteria. In the above example, we need + to include the minimizer.hpp header: +

    +
    #include <boost/math/optimization/minimizer.hpp>
    +
    +

    + and replace the optimization loop: +

    +
    for (int step = 0; step < NSTEPS; ++step) {
    +           gdopt.step();
    +           for (int pi = 0; pi < N; ++pi) {
    +               double theta = u_ad[2 * pi + 0].item();
    +               double phi   = u_ad[2 * pi + 1].item();
    +               auto   r     = sph_to_xyz(theta, phi);
    +               pos_out << step << "," << pi << "," << r.x << "," << r.y << "," << r.z << "\n";
    +           }
    +       auto E = gdopt.objective_value();
    +       energy_out << step << "," << E << "\n";
    +       }
    +
    +

    + with +

    +
    auto result = minimize(gdopt);
    +
    +

    + minimize returns a +

    +
    optimization_result<typename Optimizer::real_type_t>
    +

    + , a struct with the following fields: +

    +
    size_t num_iter;
    +RealType objective_value;
    +std::vector<RealType> objective_history;
    +bool converged;
    +
    +

    + where num_iter is the number + of iterations the optimizer went through, objective_value + is the final objective value, objective_history + are the intermediate objective values, and converged + is whether the convergence criterion was satisfied. By default, minimize(optimizer) + uses a gradient norm convergence criterion. If norm(gradient_vector) < + 1e-3, the criterion is satisfied. Maximum number of iterations is set at + 100000. For more info on how to use minimize + check the minimize docs. With default parameters, gradient descent solves + the N=2 problem in 93799 + steps. +

    +
    + +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/math_toolkit/gd_opt/introduction.html b/doc/html/math_toolkit/gd_opt/introduction.html new file mode 100644 index 0000000000..dd3794f438 --- /dev/null +++ b/doc/html/math_toolkit/gd_opt/introduction.html @@ -0,0 +1,753 @@ + + + +Introduction + + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +

    + Gradient based optimizers are algorithms that use the gradient of a function + to iteratively find locally extreme points of functions over a set of parameters. + This sections provides a description of a set of gradient optimizers. The + optimizers are written with boost::math::differentiation::reverse_mode::rvar + in mind, however if a way to evaluate the funciton and its gradient is provided, + the optimizers should work in exactly the same way. +

    +

    + Below is a table that summarizes the intended usage patterns of the provided + optimizers and policies, and is meant as a practical guide rather than a + strict prescription: +

    +

    + + List + of Optimizers +

    +
    ++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Optimizer +

    +
    +

    + Order +

    +
    +

    + Uses Curvature +

    +
    +

    + Memory Cost +

    +
    +

    + Intended Problem Class +

    +
    +

    + When to Use +

    +
    +

    + gradient descent +

    +
    +

    + first +

    +
    +

    + no +

    +
    +

    + low +

    +
    +

    + Smooth, well-scaled objectives +

    +
    +

    + Baseline method; debugging; when behavior transparency matters +

    +
    +

    + nesterov accelerated gradient +

    +
    +

    + first +

    +
    +

    + no +

    +
    +

    + low +

    +
    +

    + Ill-conditioned or narrow-valley problems +

    +
    +

    + When plain gradient descent converges slowly or oscillates +

    +
    +

    + L-BFGS +

    +
    +

    + quasi second order +

    +
    +

    + approximate +

    +
    +

    + medium +

    +
    +

    + Smooth, deterministic objectives +

    +
    +

    + When gradients are reliable and faster convergence is needed +

    +
    +

    + + Optimizer + Policies +

    +
    + + Initialization + Policies +
    +
    +++++ + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Policy +

    +
    +

    + Use case +

    +
    +

    + Responsibilities +

    +
    +

    + tape_initializer_rvar +

    +
    +

    + User initialzes all varibles manually +

    +
    +

    + initializes tape +

    +
    +

    + random_uniform_initializer_rvar +

    +
    +

    + Initializes all variables with a random number between a min and + max value +

    +
    +

    + Initializes variables. Initializes tape. +

    +
    +

    + costant_initializer_rvar +

    +
    +

    + Initializes all variables with a constant +

    +
    +

    + Initializes variables. Initializes tape. +

    +
    +
    + + Evaluation + Policies +
    +
    +++++ + + + + + + + + + + + + + + + + + +
    +

    + Policy +

    +
    +

    + Use case +

    +
    +

    + Responsibilities +

    +
    +

    + reverse_mode_function_eval_policy +

    +
    +

    + Default. User with boost reverse mode autodiff +

    +
    +

    + tells the optimizer how to evaluate the objective +

    +
    +

    + reverse_mode_gradient_evaluation_policy +

    +
    +

    + Default. User with boost reverse mode autodiff +

    +
    +

    + tells the optimizer how to evaluate the gradients of an objective +

    +
    +

    + These policies are intended to use with boost reverse mode autodiff. If you + need to use the optimizers with a custom AD variable, or by providing the + gradient of an objective manually, check the docs for policies to see how + the policies are implemented. +

    +

    + + LBFGS line + search policies +

    +

    + the table below summarizes the two line search policies provided for use + with LBFGS. +

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Policy +

    +
    +

    + Enforced Conditions +

    +
    +

    + Per iteration cost +

    +
    +

    + Convergence +

    +
    +

    + Use case +

    +
    +

    + Strong Wolfe +

    +
    +

    + function decrease. curvature condition +

    +
    +

    + higher +

    +
    +

    + faster +

    +
    +

    + most of the time +

    +
    +

    + Armijo +

    +
    +

    + function decrease only +

    +
    +

    + lower +

    +
    +

    + slower +

    +
    +

    + you know what you're doing +

    +
    +

    + + Minimizer + Policies +

    +
    + + Convergence + Policies +
    +
    +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Policy +

    +
    +

    + Criterion +

    +
    +

    + When to Use +

    +
    +

    + gradient_norm_convergence_policy +

    +
    +

    + gradient norm < tol +

    +
    +

    + Default. Stationarity based condition +

    +
    +

    + objective_tol_convergence_policy +

    +
    +

    + absolute difference between objective steps is small +

    +
    +

    + Well-scaled objectives +

    +
    +

    + relative_objective_tol_policy +

    +
    +

    + relative difference between objective steps is small +

    +
    +

    + Scale-invariant convergence +

    +
    +

    + combined_convergence_policy +

    +
    +

    + logical combination OR +

    +
    +

    + you need a combination of convergence conditions +

    +
    +
    + + Termination + Policies +
    +
    +++++ + + + + + + + + + + + + + + + + + +
    +

    + Policy +

    +
    +

    + Controls +

    +
    +

    + When to Use +

    +
    +

    + max_iter_termination_policy +

    +
    +

    + iteration count +

    +
    +

    + Hard safety bound (almost always recommended) +

    +
    +

    + wallclock_termination_policy +

    +
    +

    + wall clock time +

    +
    +

    + benchmarking, real-time constraints +

    +
    +
    + + Constraint + and Projection Policies +
    +
    ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Policy +

    +
    +

    + Constraint Type +

    +
    +

    + unconstrained_policy +

    +
    +

    + No constraint +

    +
    +

    + box_constraints +

    +
    +

    + upper/lower bound clip +

    +
    +

    + nonnegativity_constraint +

    +
    +

    + set everything below 0, to 0 +

    +
    +

    + l2_ball_constraint +

    +
    +

    + 2-norm(x) < r +

    +
    +

    + l1_ball_constraint +

    +
    +

    + 1-norm(x) < r +

    +
    +

    + simplex_constraint +

    +
    +

    + Probability simplex +

    +
    +

    + function_constraint +

    +
    +

    + custom user provided function wrapper +

    +
    +

    + unit_sphere_constraint +

    +
    +

    + 2-norm(x) = 1 +

    +
    +
    + +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/math_toolkit/gd_opt/lbfgs.html b/doc/html/math_toolkit/gd_opt/lbfgs.html new file mode 100644 index 0000000000..ae95747272 --- /dev/null +++ b/doc/html/math_toolkit/gd_opt/lbfgs.html @@ -0,0 +1,412 @@ + + + +L-BFGS + + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    +

    +L-BFGS +

    +
    + + Synopsis +
    +
    #include <boost/math/optimization/lbfgs.hpp>
    +
    +namespace boost {
    +namespace math {
    +namespace optimization {
    +
    +namespace rdiff = boost::math::differentiation::reverse_mode;
    +
    +/**
    + *
    + * @brief Limited-memory BFGS (L-BFGS) optimizer
    + *
    + * The `lbfgs` class implements the Limited-memory BFGS optimization algorithm,
    + * a quasi-Newton method that approximates the inverse Hessian using a rolling
    + * window of the last `m` updates. It is suitable for medium- to large-scale
    + * optimization problems where full Hessian storage is infeasible.
    + *
    + * @tparam> ArgumentContainer: container type for parameters, e.g.
    + * std::vector<RealType>
    + * @tparam> RealType scalar floating type (e.g. double, float)
    + * @tparam> Objective: objective function. must support "f(x)" evaluation
    + * @tparam> InitializationPolicy: policy for initializing x
    + * @tparam> ObjectiveEvalPolicy: policy for computing the objective value
    + * @tparam> GradEvalPolicy: policy for computing gradients
    + * @tparam> LineaSearchPolicy: e.g. Armijo, StrongWolfe
    + *
    + * https://en.wikipedia.org/wiki/Limited-memory_BFGS
    + */
    +
    +template<typename ArgumentContainer,
    +         typename RealType,
    +         class Objective,
    +         class InitializationPolicy,
    +         class ObjectiveEvalPolicy,
    +         class GradEvalPolicy,
    +         class LineSearchPolicy>
    +class lbfgs
    +{
    +public:
    +  lbfgs(Objective&& objective,
    +        ArgumentContainer& x,
    +        size_t m,
    +        InitializationPolicy&& ip,
    +        ObjectiveEvalPolicy&& oep,
    +        GradEvalPolicy&& gep,
    +        lbfgs_update_policy<RealType>&& up,
    +        LineSearchPolicy&& lsp);
    +
    +  void step();
    +};
    +
    +/* Convenience overloads */
    +/* create l-bfgs optimizer with
    + * objective function
    + * argument container
    + * optional
    + * - history size : how far to look in the past
    + */
    +template<class Objective, typename ArgumentContainer>
    +auto make_lbfgs(Objective&& obj, ArgumentContainer& x, std::size_t m = 10);
    +
    +template<class Objective,
    +         typename ArgumentContainer,
    +         class InitializationPolicy>
    +auto make_lbfgs(Objective&& obj,
    +           ArgumentContainer& x,
    +           std::size_t m,
    +           InitializationPolicy&& ip)
    +
    +/* construct lbfgs with a custom initialization and line search policy */
    +template<class Objective,
    +         typename ArgumentContainer,
    +         class InitializationPolicy,
    +         class LineSearchPolicy>
    +auto make_lbfgs(Objective&& obj,
    +           ArgumentContainer& x,
    +           std::size_t m,
    +           InitializationPolicy&& ip,
    +           LineSearchPolicy&& lsp);
    +
    +/* construct lbfgs optimizer with:
    + * custom initialization policy
    + * function evaluation policy
    + * gradient evaluation policy
    + * line search policy
    + */
    +template<class Objective,
    +         typename ArgumentContainer,
    +         class InitializationPolicy,
    +         class FunctionEvalPolicy,
    +         class GradientEvalPolicy,
    +         class LineSearchPolicy>
    +auto make_lbfgs(Objective&& obj,
    +           ArgumentContainer& x,
    +           std::size_t m,
    +           InitializationPolicy&& ip,
    +           FunctionEvalPolicy&& fep,
    +           GradientEvalPolicy&& gep,
    +           LineSearchPolicy&& lsp);
    +
    +} // namespace optimization
    +} // namespace math
    +} // namespace boost
    +
    +

    + LBFGS (limited memory BFGS) is a quasi-Newton optimizer that builds an approximation + to the inverse Hessian using only first-order information (function values + and gradients). Unlike full BFGS, it does not store or update a dense matrix; + instead it maintains a fixed size history of the most recent m correction + pairs and computes the search direction using a two loop recursion. In practice, + LBFGS often converges in significantly fewer iterations than normal gradient + based methods, especially on smooth, ill-conditioned objectives. +

    +
    + + Algorithm +
    +

    + At each iteration k, LBFGS: * Evaluates the gradient g_k = grad(f(x_k)). + * Computes a quasi-Newton search direction using the last m updates. * Chooses + a step length alpha_k using a line search policy. * Updates parameters: +

    +
    x_k += alpha_k p_k
    +
    +

    + * Forms the correction pairs: +

    +
    s_k = x_k - x_prev y_k = g_k - g_prev
    +
    +

    + and stores up to the last m + pairs (s_k, y_k). +

    +

    + The line search is a key part of practical LBFGS: it typically removes the + need to hand-tune a learning rate and improves robustness. +

    +
    + + Parameters +
    +
      +
    • + Objective&& + obj : objective function to + minimize. +
    • +
    • + ArgumentContainer& + x : variables to optimize over. + Updated in-place. +
    • +
    • + std::size_t m + : history size. Typical values are 5–20. Default is 10. Larger m can + improve directions but increases memory and per-step cost. +
    • +
    • + InitializationPolicy&& ip + : Initialization policy for optimizer state and variables. Users may + supply a custom initialization policy to control how the argument container + and any AD-specific runtime state : i.e. reverse-mode tape attachment/reset + are initialized. By default, the optimizer uses the same initialization + as gradient descent, taking the user provided initial values in x and + initializing the internal momentum/velocity state to zero. Custom initialization + policies are useful for randomized starts, non rvar AD types, or when + gradients are supplied externally. Check the docs for Reverse Mode autodiff + policies for initialization policy structure to write custom policies. +
    • +
    • + ObjectiveEvalPolicy&& + oep : policy for evaluating + the objective function value at a given x. By default this is a reverse-mode + AD evaluation policy when using rvar. +
    • +
    • + GradEvalPolicy&& + gep : policy for evaluating + the gradient of the objective. By default this is a reverse-mode AD gradient + evaluation policy when using rvar. +
    • +
    • +

      + LineSearchPolicy&& + lsp : policy for selecting + the step length alpha along a search direction. Determines the acceptance + criteria and how many function/gradient evaluations may be performed + during a step Default is Strong Wolfe, but Armijo is an option. Strong + Wolfe uses both function and gradient information to ensure good curvature + conditions, while Armijo relies only on function decrease and is simpler + but less robust for quasi-Newton methods. +

      +
      + + Notes +
      +
    • +
    • + LBFGS assumes the objective is sufficiently smooth for gradients to be + informative. It is typically most effective on unconstrained smooth problems. +
    • +
    • + LBFGS usually requires fewer iterations than gradient descent, but each + iteration is more expensive because it performs multiple objective/gradient + evaluations during line search. +
    • +
    +
    + + Example + : Thomson Problem +
    +
    #include <boost/math/differentiation/autodiff_reverse.hpp>
    +#include <boost/math/optimization/lbfgs.hpp>
    +#include <boost/math/optimization/minimizer.hpp>
    +#include <cmath>
    +#include <fstream>
    +#include <iostream>
    +#include <random>
    +#include <string>
    +namespace rdiff = boost::math::differentiation::reverse_mode;
    +namespace bopt  = boost::math::optimization;
    +double random_double(double min = 0.0, double max = 1.0)
    +{
    +    static thread_local std::mt19937       rng{std::random_device{}()};
    +    std::uniform_real_distribution<double> dist(min, max);
    +    return dist(rng);
    +}
    +
    +template<typename S>
    +struct vec3
    +{
    +    /**
    +     * @brief R^3 coordinates of particle on Thomson Sphere
    +     */
    +    S x, y, z;
    +};
    +
    +template<class S>
    +static inline vec3<S> sph_to_xyz(const S& theta, const S& phi)
    +{
    +    /**
    +     * convenience overload to convert from [theta,phi] -> x, y, z
    +     */
    +    return {sin(theta) * cos(phi), sin(theta) * sin(phi), cos(theta)};
    +}
    +
    +template<typename T>
    +T thomson_energy(std::vector<T>& r)
    +{
    +    /* inverse square law
    +     */
    +    const size_t N    = r.size() / 2;
    +    const T      tiny = T(1e-12);
    +
    +    T E = 0;
    +    for (size_t i = 0; i < N; ++i) {
    +        const T& theta_i = r[2 * i + 0];
    +        const T& phi_i   = r[2 * i + 1];
    +        auto     ri      = sph_to_xyz(theta_i, phi_i);
    +
    +        for (size_t j = i + 1; j < N; ++j) {
    +            const T& theta_j = r[2 * j + 0];
    +            const T& phi_j   = r[2 * j + 1];
    +            auto     rj      = sph_to_xyz(theta_j, phi_j);
    +
    +            T dx = ri.x - rj.x;
    +            T dy = ri.y - rj.y;
    +            T dz = ri.z - rj.z;
    +
    +            T d2 = dx * dx + dy * dy + dz * dz + tiny;
    +            E += 1.0 / sqrt(d2);
    +        }
    +    }
    +    return E;
    +}
    +
    +template<class T>
    +std::vector<rdiff::rvar<T, 1>> init_theta_phi_uniform(size_t N, unsigned seed = 12345)
    +{
    +    const T pi = T(3.1415926535897932384626433832795);
    +
    +    std::mt19937                      rng(seed);
    +    std::uniform_real_distribution<T> unif01(T(0), T(1));
    +    std::uniform_real_distribution<T> unifm11(T(-1), T(1));
    +
    +    std::vector<rdiff::rvar<T, 1>> u;
    +    u.reserve(2 * N);
    +
    +    for (size_t i = 0; i < N; ++i) {
    +        T z     = unifm11(rng);
    +        T phi   = (T(2) * pi) * unif01(rng) - pi;
    +        T theta = std::acos(z);
    +
    +        u.emplace_back(theta);
    +        u.emplace_back(phi);
    +    }
    +    return u;
    +}
    +
    +int main(int argc, char* argv[])
    +{
    +
    +    if (argc != 2) {
    +        std::cerr << "Usage: " << argv[0] << " <N>\n";
    +        return 1;
    +    }
    +
    +    const int    N      = std::stoi(argv[1]);
    +    auto u_ad = init_theta_phi_uniform<double>(N);
    +
    +    auto lbfgs_opt = bopt::make_lbfgs(&thomson_energy<rdiff::rvar<double, 1>>, u_ad);
    +
    +    // filenames
    +    std::string pos_filename    = "thomson_" + std::to_string(N) + ".csv";
    +    std::string energy_filename = "lbfgs_energy_" + std::to_string(N) + ".csv";
    +
    +    std::ofstream pos_out(pos_filename);
    +    std::ofstream energy_out(energy_filename);
    +
    +    energy_out << "step,energy\n";
    +
    +    auto result = minimize(lbfgs_opt);
    +    for (int pi = 0; pi < N; ++pi) {
    +        double theta = u_ad[2 * pi + 0].item();
    +        double phi   = u_ad[2 * pi + 1].item();
    +        auto   r     = sph_to_xyz(theta, phi);
    +        pos_out << pi << "," << r.x << "," << r.y << "," << r.z << "\n";
    +    }
    +    auto E = lbfgs_opt.objective_value();
    +    int i = 0;
    +    for(auto& obj_hist : result.objective_history)
    +    {
    +        energy_out << i << "," << obj_hist << "\n";
    +        ++i;
    +    }
    +    energy_out << "," << E << "\n";
    +
    +    pos_out.close();
    +    energy_out.close();
    +
    +    return 0;
    +}
    +
    +

    + For the N = + 2 case, LBFGS requires only 5 iterations + to converge, the nesterov version of this problem converges in 4663 iterations with default parameters, and + gradient descent requires 93799 + iterations. Convergence is assumed to mean the norm of the gradient is less + than 1e-3. Below is a plot showcasing + the 3 different methods for the N=20 particle + case. +

    +

    + +

    +

    + In this case, gradient descent reaches the maximum number of iterations, + and does not converge, nag converges in 150 + iterations, and LBFGS converges in 67 + iterations. +

    +
    + +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/math_toolkit/gd_opt/minimize.html b/doc/html/math_toolkit/gd_opt/minimize.html new file mode 100644 index 0000000000..daed072a6e --- /dev/null +++ b/doc/html/math_toolkit/gd_opt/minimize.html @@ -0,0 +1,333 @@ + + + +minimize + + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Synopsis +
    +
    #include <boost/math/optimization/minimizer.hpp>
    +
    +namespace boost {
    +namespace math {
    +namespace optimization {
    +template<typename RealType>
    +struct optimization_result
    +{
    +  size_t num_iter = 0;
    +  RealType objective_value;
    +  std::vector<RealType> objective_history;
    +  bool converged;
    +};
    +
    +/* Minimize an objective using a given optimizer.
    + *
    + * The optimizer `opt` must expose a `step()` method and the associated
    + * typedefs:
    + *   - argument_container_t
    + *   - real_type_t
    + *
    + * The behavior of the minimization loop is controlled by policy objects:
    + *  - ConstraintPolicy: projects variables onto a feasible set
    + *  - ConvergencePolicy: determines when convergence has been reached
    + *  - TerminationPolicy: determines when optimization must stop regardless
    + *    of convergence (e.g. max iterations)
    + *
    + * The function returns an `optimization_result` summarizing the run.
    + */
    +template<class Optimizer,
    +         class ConstraintPolicy =
    +           unconstrained_policy<typename Optimizer::argument_container_t>,
    +         class ConvergencePolicy =
    +           gradient_norm_convergence_policy<typename Optimizer::real_type_t>,
    +         class TerminationPolicy = max_iter_termination_policy>
    +auto minimize(Optimizer& opt,
    +         ConstraintPolicy project = ConstraintPolicy{},
    +         ConvergencePolicy converged =
    +           ConvergencePolicy{
    +             static_cast<typename Optimizer::real_type_t>(1e-3) },
    +         TerminationPolicy terminate = TerminationPolicy(100000),
    +         bool history = true)
    +
    +

    + This header provides a generic driver function minimize + that repeatedly advances an optimizer via step(), optionally projects parameters onto a + constraint set, and stops when either a convergence criterion is met or a + termination criterion triggers. +

    +
    + + Parameters +
    +
      +
    • + Optimizer& + opt : Optimizer instance. +
    • +
    • + ConstraintPolicy project + : Projection policy applied after each step(). Default is unconstrained_policy + (no projection). +
    • +
    • + ConvergencePolicy converged + : Stopping criterion. Default is gradient_norm_convergence_policy(tol=1e-3). +
    • +
    • + TerminationPolicy terminate + : Hard stop criterion. Default is max_iter_termination_policy(100000). +
    • +
    • + bool history + : If true, records opt.objective_value() after each iteration in optimization_result::objective_history. +
    • +
    +
    + + Convergence + Policies +
    +

    + Convergence policies decide when the optimization has converged. Each policy + has the signature: +

    +
    bool operator()(const GradientContainer& g, RealType objective_value) const;
    +
    +
    + + gradient_norm_convergence_policy +
    +

    + Stops when the Euclidean norm of the gradient falls below a tolerance: +

    +
    template<typename RealType>
    +struct gradient_norm_convergence_policy
    +{
    +explicit gradient_norm_convergence_policy(RealType tol);
    +
    +template<class GradientContainer>
    +bool operator()(const GradientContainer& g, RealType objective_v) const;
    +};
    +
    +
    + + objective_tol_convergence_policy +
    +

    + Stops when the absolute change in objective value between successive iterations + drops below a tolerance: +

    +
    template<typename RealType>
    +struct objective_tol_convergence_policy
    +{
    +explicit objective_tol_convergence_policy(RealType tol);
    +
    +template<class GradientContainer>
    +bool operator()(const GradientContainer&, RealType objective_v) const;
    +};
    +
    +

    + The first call always returns false +

    +
    + + relative_objective_tol_policy +
    +

    + Stops when the relative objective change drops below a tolerance: +

    +
    template<typename RealType>
    +struct relative_objective_tol_policy
    +{
    +explicit relative_objective_tol_policy(RealType rel_tol);
    +
    +template<class GradientContainer>
    +bool operator()(const GradientContainer&, RealType objective_v) const;
    +};
    +
    +

    + The relative change is computed as: +

    +
    abs(obj - last_obj) / max(1, abs(last_obj))
    +
    +
    + + combined_convergence_policy +
    +

    + Combines two convergence policies and stops when either triggers: +

    +
    template<class Policy1, class Policy2>
    +struct combined_convergence_policy
    +{
    +combined_convergence_policy(Policy1 p1, Policy2 p2);
    +
    +template<class GradientContainer, class RealType>
    +bool operator()(const GradientContainer& g, RealType obj) const;
    +};
    +
    +
    + + Termination + Policies +
    +

    + Termination policies provide a hard stop independent of convergence. Each + policy has the signature: +

    +
    bool operator()(size_t iter);
    +
    +
    + + max_iter_termination_policy +
    +

    + Stops after a fixed number of iterations +

    +
    struct max_iter_termination_policy { explicit max_iter_termination_policy(size_t max_iter); bool operator()(size_t iter); };
    +
    +
    + + wallclock_termination_policy +
    +

    + Stops after a wall-clock time budget: +

    +
    struct wallclock_termination_policy { explicit wallclock_termination_policy(std::chrono::milliseconds max_time); bool operator()(size_t iter) const; };
    +
    +
    + + Constraint + and Projection Policies +
    +

    + Projection policies modify the optimizer variables after each step. Each + policy has the signature: +

    +
    void operator()(ArgumentContainer& x) const;
    +
    +
    + + unconstrained_policy +
    +

    + No projection; leaves parameters unchanged +

    +
    template<typename ArgumentContainer> struct unconstrained_policy { void operator()(ArgumentContainer&); };
    +
    +
    + + box_constraints +
    +

    + Clamps each variable into [min, max] +

    +
    template<typename ArgumentContainer, typename RealType> struct box_constraints { box_constraints(RealType min, RealType max); void operator()(ArgumentContainer& x); };
    +
    +
    + + nonnegativity_constraint +
    +

    + Sets anything less than 0 to + 0 +

    +
    template<typename ArgumentContainer, typename RealType> struct nonnegativity_constraint { void operator()(ArgumentContainer& x) const; };
    +
    +
    + + l2_ball_constraint +
    +

    + Projects onto the L2 ball + of radius radius by uniform + scaling when needed +

    +
    template<typename ArgumentContainer, typename RealType> struct l2_ball_constraint { explicit l2_ball_constraint(RealType radius); void operator()(ArgumentContainer& x) const; };
    +
    +
    + + l1_ball_constraint +
    +

    + Projects onto the L1 ball + of radius radius by uniform + scaling +

    +
    template<typename ArgumentContainer, typename RealType> struct l1_ball_constraint { explicit l1_ball_constraint(RealType radius); void operator()(ArgumentContainer& x) const; };
    +
    +

    + This is not the exact Euclidean projection onto the L1 ball; it is a simple + scaling-based constraint +

    +
    + + simplex_constraint +
    +

    + Projects onto the scaled probability simplex by clipping negatives to 0 and renormalizing to sum to 1 +

    +
    template<typename ArgumentContainer, typename RealType> struct simplex_constraint { void operator()(ArgumentContainer& x) const; };
    +
    +
    + + function_constraint +
    +

    + Wraps a user-provided projection function +

    +
    template<typename ArgumentContainer> struct function_constraint { using func_t = void (*)(ArgumentContainer&); explicit function_constraint(func_t f); void operator()(ArgumentContainer& x) const; };
    +
    +
    + + unit_sphere_constraint +
    +

    + Normalizes the vector to unit L2 norm +

    +
    template<typename ArgumentContainer, typename RealType> struct unit_sphere_constraint { void operator()(ArgumentContainer& x) const; };
    +
    +

    + This projects onto the unit sphere (if ||x||_2 > 0) +

    +
    + +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/math_toolkit/gd_opt/minimze.html b/doc/html/math_toolkit/gd_opt/minimze.html new file mode 100644 index 0000000000..6165f4d2bb --- /dev/null +++ b/doc/html/math_toolkit/gd_opt/minimze.html @@ -0,0 +1,43 @@ + + + +minimize + + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    + + +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/math_toolkit/gd_opt/nesterov.html b/doc/html/math_toolkit/gd_opt/nesterov.html new file mode 100644 index 0000000000..8152ed5d48 --- /dev/null +++ b/doc/html/math_toolkit/gd_opt/nesterov.html @@ -0,0 +1,393 @@ + + + +Nesterov Accelerated Gradient Descent + + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Synopsis +
    +
    #include <boost/math/optimization/nesterov.hpp>
    +
    +namespace boost {
    +namespace math {
    +namespace optimization {
    +
    +namespace rdiff = boost::math::differentiation::reverse_mode;
    +
    +/**
    + * @brief The nesterov_accelerated_gradient class
    + *
    + * https://jlmelville.github.io/mize/nesterov.html
    + */
    +template<typename ArgumentContainer,
    +         typename RealType,
    +         class Objective,
    +         class InitializationPolicy,
    +         class ObjectiveEvalPolicy,
    +         class GradEvalPolicy>
    +class nesterov_accelerated_gradient
    +  : public abstract_optimizer<
    +      ArgumentContainer,
    +      RealType,
    +      Objective,
    +      InitializationPolicy,
    +      ObjectiveEvalPolicy,
    +      GradEvalPolicy,
    +      nesterov_update_policy<RealType>,
    +      nesterov_accelerated_gradient<ArgumentContainer,
    +                                    RealType,
    +                                    Objective,
    +                                    InitializationPolicy,
    +                                    ObjectiveEvalPolicy,
    +                                    GradEvalPolicy>>
    +{
    +public:
    +  nesterov_accelerated_gradient(Objective&& objective,
    +                                ArgumentContainer& x,
    +                                InitializationPolicy&& ip,
    +                                ObjectiveEvalPolicy&& oep,
    +                                GradEvalPolicy&& gep,
    +                                nesterov_update_policy<RealType>&& up);
    +  void step();
    +};
    +
    +/* Convenience overloads  */
    +/* make nesterov accelerated gradient descent by providing
    + ** objective function
    + ** variables to optimize over
    + ** Optionally
    + *  - lr: learning rate / step size (typical: 1e-4 .. 1e-1 depending on scaling)
    + *  - mu: momentum coefficient in [0, 1) (typical: 0.8 .. 0.99)
    + */
    +
    +template<class Objective, typename ArgumentContainer, typename RealType>
    +auto make_nag(Objective&& obj,
    +              ArgumentContainer& x,
    +              RealType lr = RealType{ 0.01 },
    +              RealType mu = RealType{ 0.95 });
    +
    +/* provide initialization policy
    + * lr, and mu no longer optional
    + */
    +template<class Objective,
    +         typename ArgumentContainer,
    +         typename RealType,
    +         class InitializationPolicy>
    +auto make_nag(Objective&& obj,
    +         ArgumentContainer& x,
    +         RealType lr,
    +         RealType mu,
    +         InitializationPolicy&& ip);
    +
    +/* provide
    + * initialization policy
    + * objective evaluation policy
    + * gradient evaluation policy
    + */
    +template<typename ArgumentContainer,
    +         typename RealType,
    +         class Objective,
    +         class InitializationPolicy,
    +         class ObjectiveEvalPolicy,
    +         class GradEvalPolicy>
    +auto make_nag(Objective&& obj,
    +         ArgumentContainer& x,
    +         RealType lr,
    +         RealType mu,
    +         InitializationPolicy&& ip,
    +         ObjectiveEvalPolicy&& oep,
    +         GradEvalPolicy&& gep);
    +
    +} // namespace optimization
    +} // namespace math
    +} // namespace boost
    +
    +

    + Nesterov accelerated gradient (NAG) is a first-order optimizer that augments + gradient descent with a momentum term and evaluates the gradient at a "lookahead" + point. In practice this often improves convergence speed compared to vanilla + gradient descent, especially in narrow valleys and ill-conditioned problems. +

    +
    + + Algorithm +
    +

    + NAG maintains a "velocity" vector v (same shape as x). At iteration + k it performs: +

    +
    v = mu * v - lr * g;
    +x += -mu * v_prev + (1 + mu) *v
    +
    +

    + where: +

    +

    + lr is the learning rate / step size +

    +

    + mu is the momentum coefficient (typically close to 1) +

    +

    + Setting mu = 0 reduces NAG to standard gradient descent. +

    +
    + + Parameters +
    +
      +
    • + Objective&& + obj : objective function to + minimize. +
    • +
    • + ArgumentContainer& + x : variables to optimize over. + Updated in place. +
    • +
    • + RealType lr + : learning rate. Larger values take larger steps (faster but potentially + unstable). Smaller values are more stable but converge more slowly. +
    • +
    • + RealType mu + : momentum coefficient in [0,1). Higher values, e.g. 0.9 to 0.99, typically + accelerate convergence but may require a smaller lr +
    • +
    • + InitializationPolicy&& ip + : Initialization policy for optimizer state and variables. Users may + supply a custom initialization policy to control how the argument container + and any AD-specific runtime state : i.e. reverse-mode tape attachment/reset + are initialized. By default, the optimizer uses the same initialization + as gradient descent, taking the user provided initial values in x and + initializing the internal momentum/velocity state to zero. Custom initialization + policies are useful for randomized starts, non rvar AD types, or when + gradients are supplied externally. Check the docs for Reverse Mode autodiff + policies for initialization policy structure to write custom policies. +
    • +
    • + ObjectiveEvalPolicy&& + oep : objective evaluation + policy. By default reverse_mode_function_eval_policy<RealType> +
    • +
    • + GradEvalPolicy&& + gep : gradient evaluation policy. + By default reverse_mode_gradient_evaluation_policy<RealType> +
    • +
    +
    + + Notes +
    +
      +
    • + NAG uses the same policy-based design as gradient descent: initialization, + objective evaluation, and gradient evaluation can be customized independently. +
    • +
    • + When using reverse-mode AD rvar, + the objective should be written in terms of AD variables so gradients + can be obtained automatically by the default gradient evaluation policy. +
    • +
    • + Typical tuning: start with mu + = 0.9 + or 0.95; if the objective + oscillates or diverges, reduce lr + (or slightly reduce mu). +
    • +
    +
    + + Example + : Thomson Sphere +
    +
    #include <boost/math/differentiation/autodiff_reverse.hpp>
    +#include <boost/math/optimization/gradient_descent.hpp>
    +#include <boost/math/optimization/minimizer.hpp>
    +#include <cmath>
    +#include <fstream>
    +#include <iostream>
    +#include <random>
    +#include <string>
    +namespace rdiff = boost::math::differentiation::reverse_mode;
    +namespace bopt  = boost::math::optimization;
    +double random_double(double min = 0.0, double max = 1.0)
    +{
    +    static thread_local std::mt19937       rng{std::random_device{}()};
    +    std::uniform_real_distribution<double> dist(min, max);
    +    return dist(rng);
    +}
    +
    +template<typename S>
    +struct vec3
    +{
    +    /**
    +     * @brief R^3 coordinates of particle on Thomson Sphere
    +     */
    +    S x, y, z;
    +};
    +
    +template<class S>
    +static inline vec3<S> sph_to_xyz(const S& theta, const S& phi)
    +{
    +    /**
    +     * convenience overload to convert from [theta,phi] -> x, y, z
    +     */
    +    return {sin(theta) * cos(phi), sin(theta) * sin(phi), cos(theta)};
    +}
    +
    +template<typename T>
    +T thomson_energy(std::vector<T>& r)
    +{
    +    /* inverse square law
    +     */
    +    const size_t N    = r.size() / 2;
    +    const T      tiny = T(1e-12);
    +
    +    T E = 0;
    +    for (size_t i = 0; i < N; ++i) {
    +        const T& theta_i = r[2 * i + 0];
    +        const T& phi_i   = r[2 * i + 1];
    +        auto     ri      = sph_to_xyz(theta_i, phi_i);
    +
    +        for (size_t j = i + 1; j < N; ++j) {
    +            const T& theta_j = r[2 * j + 0];
    +            const T& phi_j   = r[2 * j + 1];
    +            auto     rj      = sph_to_xyz(theta_j, phi_j);
    +
    +            T dx = ri.x - rj.x;
    +            T dy = ri.y - rj.y;
    +            T dz = ri.z - rj.z;
    +
    +            T d2 = dx * dx + dy * dy + dz * dz + tiny;
    +            E += 1.0 / sqrt(d2);
    +        }
    +    }
    +    return E;
    +}
    +
    +template<class T>
    +std::vector<rdiff::rvar<T, 1>> init_theta_phi_uniform(size_t N, unsigned seed = 12345)
    +{
    +    const T pi = T(3.1415926535897932384626433832795);
    +
    +    std::mt19937                      rng(seed);
    +    std::uniform_real_distribution<T> unif01(T(0), T(1));
    +    std::uniform_real_distribution<T> unifm11(T(-1), T(1));
    +
    +    std::vector<rdiff::rvar<T, 1>> u;
    +    u.reserve(2 * N);
    +
    +    for (size_t i = 0; i < N; ++i) {
    +        T z     = unifm11(rng);
    +        T phi   = (T(2) * pi) * unif01(rng) - pi;
    +        T theta = std::acos(z);
    +
    +        u.emplace_back(theta);
    +        u.emplace_back(phi);
    +    }
    +    return u;
    +}
    +
    +int main(int argc, char* argv[])
    +{
    +
    +    if (argc != 2) {
    +        std::cerr << "Usage: " << argv[0] << " <N>\n";
    +        return 1;
    +    }
    +
    +    const int    N      = std::stoi(argv[1]);
    +    const double lr     = 1e-3;
    +    const double mu 	= 0.95;
    +    auto u_ad = init_theta_phi_uniform<double>(N);
    +
    +    auto nesterov_opt = bopt::make_nag(&thomson_energy<rdiff::rvar<double, 1>>, u_ad, lr, mu);
    +
    +    // filenames
    +    std::string pos_filename    = "thomson_" + std::to_string(N) + ".csv";
    +    std::string energy_filename = "nesterov_energy_" + std::to_string(N) + ".csv";
    +
    +    std::ofstream pos_out(pos_filename);
    +    std::ofstream energy_out(energy_filename);
    +
    +    energy_out << "step,energy\n";
    +
    +    auto result = minimize(nesterov_opt);
    +    for (int pi = 0; pi < N; ++pi) {
    +        double theta = u_ad[2 * pi + 0].item();
    +        double phi   = u_ad[2 * pi + 1].item();
    +        auto   r     = sph_to_xyz(theta, phi);
    +        pos_out << pi << "," << r.x << "," << r.y << "," << r.z << "\n";
    +    }
    +    auto E = nesterov_opt.objective_value();
    +    int i = 0;
    +    for(auto& obj_hist : result.objective_history)
    +    {
    +        energy_out << i << "," << obj_hist << "\n";
    +        ++i;
    +    }
    +    energy_out << "," << E << "\n";
    +
    +    pos_out.close();
    +    energy_out.close();
    +
    +    return 0;
    +}
    +
    +

    + The nesterov version of this problem converges much faster than regular gradient + descent, in only 4663 iterations + with default parameters, vs the 93799 + iterations required by gradient descent. +

    +

    + +

    +
    + +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/math_toolkit/gd_opt/policies.html b/doc/html/math_toolkit/gd_opt/policies.html new file mode 100644 index 0000000000..df2a87cfb2 --- /dev/null +++ b/doc/html/math_toolkit/gd_opt/policies.html @@ -0,0 +1,255 @@ + + + +Reverse Mode autodiff policies + + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +

    + This header provides default policy implementations for using the gradient-based + optimizers with boost::math::differentiation::reverse_mode::rvar These policies handle: +

    +
      +
    • + preparing the reverse-mode tape before evaluating an objective, +
    • +
    • + extracting gradients from rvar arguments after backpropagation, +
    • +
    • + initializing rvar containers + and establishing tape checkpoints. +
    • +
    +
    + + Synopsis +
    +
    #include <boost/math/optimization/detail/rdiff_optimization_policies>
    +
    +namespace boost {
    +namespace math {
    +namespace optimization {
    +
    +namespace rdiff = boost::math::differentiation::reverse_mode;
    +
    +/**
    + * @brief> function evaluation policy for reverse mode autodiff
    + * @arg objective> objective function to evaluate
    + * @arg x> argument list
    + */
    +template<typename RealType>
    +struct reverse_mode_function_eval_policy
    +{
    +  template<typename Objective, class ArgumentContainer>
    +  rdiff::rvar<RealType, 1> operator()(Objective&& objective,
    +                                      ArgumentContainer& x);
    +};
    +
    +/**
    + * @brief> gradient evaluation policy
    + * @arg obj_f> objective
    + * @arg x> argument list
    + * @arg f_eval_olicy> funciton evaluation policy. These need to be
    + *                    done in tandem
    + * @arg obj_v> reference to variable inside gradient class
    + */
    +template<typename RealType>
    +struct reverse_mode_gradient_evaluation_policy
    +{
    +  template<class Objective,
    +           class ArgumentContainer,
    +           class FunctionEvaluationPolicy>
    +  void operator()(Objective&& obj_f,
    +                  ArgumentContainer& x,
    +                  FunctionEvaluationPolicy&& f_eval_pol,
    +                  RealType& obj_v,
    +                  std::vector<RealType>& g)
    +};
    + /*
    + * init policies
    + */
    +
    +/* default rvar policy */
    +template<typename RealType>
    +struct tape_initializer_rvar
    +{
    +    template<class ArgumentContainer>
    +    void operator()(ArgumentContainer& x) const noexcept;
    +};
    +
    +/* random uniform */
    +template<typename RealType>
    +struct random_uniform_initializer_rvar
    +{
    +  RealType low_, high_;
    +  size_t seed_;
    +  random_uniform_initializer_rvar(RealType low = 0,
    +                                  RealType high = 1,
    +                                  size_t seed = std::random_device{}());
    +
    +  template<class ArgumentContainer>
    +  void operator()(ArgumentContainer& x) const;
    +};
    +
    +/* constant initializer */
    +template<typename RealType>
    +struct costant_initializer_rvar
    +{
    +  RealType constant;
    +  explicit costant_initializer_rvar(RealType v = 0);
    +
    +  template<class ArgumentContainer>
    +  void operator()(ArgumentContainer& x) const;
    +};
    +} // namespace optimization
    +} // namespace math
    +} // namespace boost
    +
    +
    + + Function + evaluation policies +
    +

    + A function evaluation policy defines how an objective is evaluated at the + current parameters, and is responsible for any AD bookkeeping required before + the call. +

    +
    + + reverse_mode_function_eval_policy +
    +
    template<typename RealType> struct reverse_mode_function_eval_policy { template<typename Objective, class ArgumentContainer> rdiff::rvar<RealType, 1> operator()(Objective&& objective, ArgumentContainer& x); };
    +
    +

    + This policy evaluates the objective objective(x) using reverse-mode AD and + ensures the active tape is in a valid state before evaluation: +

    +

    + ArgumentContainer must contain rdiff::rvar<RealType,1> values. +

    +
    + + Gradient + evaluation policies +
    +

    + A gradient evaluation policy defines how gradients are computed and extracted + into an ordinary numeric container. +

    +
    + + reverse_mode_gradient_evaluation_policy +
    +
    template<typename RealType> struct reverse_mode_gradient_evaluation_policy { template<class Objective, class ArgumentContainer, class FunctionEvaluationPolicy> void operator()(Objective&& obj_f, ArgumentContainer& x, FunctionEvaluationPolicy&& f_eval_pol, RealType& obj_v, std::vector<RealType>& g); };
    +
    +

    + This policy computes the objective value and gradient using reverse-mode + autodiff +

    +
    + + Initialization + policies +
    +

    + Initialization policies prepare the argument container and the reverse-mode + tape for optimization. They establish tape checkpoints that are later used + by function/gradient evaluation policies. +

    +
    + + tape_initializer_rvar +
    +
    template<typename RealType> struct tape_initializer_rvar { template<class ArgumentContainer> void operator()(ArgumentContainer& x) const noexcept; };
    +
    +

    + This policy: * statically requires ArgumentContainer::value_type + to be rdiff::rvar<RealType,1>, * adds + a checkpoint to the active reverse-mode tape via tape.add_checkpoint() +

    +
    + + random_uniform_initializer_rvar +
    +
    template<typename RealType>
    +struct random_uniform_initializer_rvar
    +{
    +random_uniform_initializer_rvar(RealType low = 0,
    +RealType high = 1,
    +size_t seed = std::random_device{}());
    +
    +template<class ArgumentContainer>
    +void operator()(ArgumentContainer& x) const;
    +};
    +
    +

    + This policy initializes each element of x independently as: +

    +
    x[i] = rdiff::rvar<RealType,1>(U(low, high))
    +
    +

    + using +

    +
    boost::random::mt19937
    +
    +

    + and +

    +
    boost::random::uniform_real_distribution<RealType>
    +
    +
    + + costant_initializer_rvar +
    +
    template<typename RealType>
    +struct costant_initializer_rvar
    +{
    +explicit costant_initializer_rvar(RealType v = 0);
    +
    +template<class ArgumentContainer>
    +void operator()(ArgumentContainer& x) const;
    +};
    +
    +

    + This policy initializes each element of x to the constant value v +

    +
    + +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/math_toolkit/gd_opt/policies/init_pol.html b/doc/html/math_toolkit/gd_opt/policies/init_pol.html new file mode 100644 index 0000000000..864fa860c0 --- /dev/null +++ b/doc/html/math_toolkit/gd_opt/policies/init_pol.html @@ -0,0 +1,44 @@ + + + +Initialization Policies + + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    + + +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/math_toolkit/getting_best.html b/doc/html/math_toolkit/getting_best.html index 01d1940e01..d2b2c9ce08 100644 --- a/doc/html/math_toolkit/getting_best.html +++ b/doc/html/math_toolkit/getting_best.html @@ -1,9 +1,9 @@ - + Getting the Best Performance from this Library: Compiler and Compiler Options - + @@ -142,7 +142,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/gpu.html b/doc/html/math_toolkit/gpu.html index 78fdfc9a5e..4416b66463 100644 --- a/doc/html/math_toolkit/gpu.html +++ b/doc/html/math_toolkit/gpu.html @@ -1,6 +1,6 @@ - + Support for GPU programming in Boost.Math @@ -108,7 +108,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/greatest_typdefs.html b/doc/html/math_toolkit/greatest_typdefs.html index 023cf911f3..fe96da362a 100644 --- a/doc/html/math_toolkit/greatest_typdefs.html +++ b/doc/html/math_toolkit/greatest_typdefs.html @@ -1,9 +1,9 @@ - + Greatest-width floating-point typedef - + @@ -82,7 +82,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/hankel.html b/doc/html/math_toolkit/hankel.html index 9f8a0a8123..91f903a078 100644 --- a/doc/html/math_toolkit/hankel.html +++ b/doc/html/math_toolkit/hankel.html @@ -1,9 +1,9 @@ - + Hankel Functions - + @@ -36,7 +36,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/hankel/cyl_hankel.html b/doc/html/math_toolkit/hankel/cyl_hankel.html index d36754bdc5..6b67f4c8fc 100644 --- a/doc/html/math_toolkit/hankel/cyl_hankel.html +++ b/doc/html/math_toolkit/hankel/cyl_hankel.html @@ -1,9 +1,9 @@ - + Cyclic Hankel Functions - + @@ -31,17 +31,35 @@
    Synopsis
    -
    template <class T1, class T2>
    -std::complex<calculated-result-type> cyl_hankel_1(T1 v, T2 x);
    +
    #if !defined(__CUDACC__) && !defined(__CUDACC_RTC__)
    +
    +template <class T1, class T2>
    +BOOST_MATH_GPU_ENABLED std::complex<calculated-result-type> cyl_hankel_1(T1 v, T2 x);
    +
    +template <class T1, class T2, class Policy>
    +BOOST_MATH_GPU_ENABLED std::complex<calculated-result-type> cyl_hankel_1(T1 v, T2 x, const Policy&);
    +
    +template <class T1, class T2>
    +BOOST_MATH_GPU_ENABLED std::complex<calculated-result-type> cyl_hankel_2(T1 v, T2 x);
     
     template <class T1, class T2, class Policy>
    -std::complex<calculated-result-type> cyl_hankel_1(T1 v, T2 x, const Policy&);
    +BOOST_MATH_GPU_ENABLED std::complex<calculated-result-type> cyl_hankel_2(T1 v, T2 x, const Policy&);
    +
    +#else // When using cuda we use namespace cuda::std:: instead of std::
    +
    +template <class T1, class T2>
    +BOOST_MATH_GPU_ENABLED cuda::std::complex<calculated-result-type> cyl_hankel_1(T1 v, T2 x);
    +
    +template <class T1, class T2, class Policy>
    +BOOST_MATH_GPU_ENABLED cuda::std::complex<calculated-result-type> cyl_hankel_1(T1 v, T2 x, const Policy&);
     
     template <class T1, class T2>
    -std::complex<calculated-result-type> cyl_hankel_2(T1 v, T2 x);
    +BOOST_MATH_GPU_ENABLED cuda::std::complex<calculated-result-type> cyl_hankel_2(T1 v, T2 x);
     
     template <class T1, class T2, class Policy>
    -std::complex<calculated-result-type> cyl_hankel_2(T1 v, T2 x, const Policy&);
    +BOOST_MATH_GPU_ENABLED cuda::std::complex<calculated-result-type> cyl_hankel_2(T1 v, T2 x, const Policy&);
    +
    +#endif
     
    @@ -162,7 +180,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/hankel/sph_hankel.html b/doc/html/math_toolkit/hankel/sph_hankel.html index 8da5a9f789..e0c2d922e6 100644 --- a/doc/html/math_toolkit/hankel/sph_hankel.html +++ b/doc/html/math_toolkit/hankel/sph_hankel.html @@ -1,9 +1,9 @@ - + Spherical Hankel Functions - + @@ -31,17 +31,35 @@
    Synopsis
    -
    template <class T1, class T2>
    -std::complex<calculated-result-type> sph_hankel_1(T1 v, T2 x);
    +
    #if !defined(__CUDACC__) && !defined(__CUDACC_RTC__)
    +
    +template <class T1, class T2>
    +BOOST_MATH_GPU_ENABLED std::complex<calculated-result-type> sph_hankel_1(T1 v, T2 x);
    +
    +template <class T1, class T2, class Policy>
    +BOOST_MATH_GPU_ENABLED std::complex<calculated-result-type> sph_hankel_1(T1 v, T2 x, const Policy&);
    +
    +template <class T1, class T2>
    +BOOST_MATH_GPU_ENABLED std::complex<calculated-result-type> sph_hankel_2(T1 v, T2 x);
     
     template <class T1, class T2, class Policy>
    -std::complex<calculated-result-type> sph_hankel_1(T1 v, T2 x, const Policy&);
    +BOOST_MATH_GPU_ENABLED std::complex<calculated-result-type> sph_hankel_2(T1 v, T2 x, const Policy&);
    +
    +#else // When using cuda we use namespace cuda::std:: instead of std::
    +
    +template <class T1, class T2>
    +BOOST_MATH_GPU_ENABLED cuda::std::complex<calculated-result-type> sph_hankel_1(T1 v, T2 x);
    +
    +template <class T1, class T2, class Policy>
    +BOOST_MATH_GPU_ENABLED cuda::std::complex<calculated-result-type> sph_hankel_1(T1 v, T2 x, const Policy&);
     
     template <class T1, class T2>
    -std::complex<calculated-result-type> sph_hankel_2(T1 v, T2 x);
    +BOOST_MATH_GPU_ENABLED cuda::std::complex<calculated-result-type> sph_hankel_2(T1 v, T2 x);
     
     template <class T1, class T2, class Policy>
    -std::complex<calculated-result-type> sph_hankel_2(T1 v, T2 x, const Policy&);
    +BOOST_MATH_GPU_ENABLED cuda::std::complex<calculated-result-type> sph_hankel_2(T1 v, T2 x, const Policy&);
    +
    +#endif
     
    @@ -112,7 +130,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/high_precision.html b/doc/html/math_toolkit/high_precision.html index 91922e1106..bb990c9411 100644 --- a/doc/html/math_toolkit/high_precision.html +++ b/doc/html/math_toolkit/high_precision.html @@ -1,9 +1,9 @@ - + Using Boost.Math with High-Precision Floating-Point Libraries - + @@ -101,7 +101,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/high_precision/e_float.html b/doc/html/math_toolkit/high_precision/e_float.html index dded564393..1704d20cf2 100644 --- a/doc/html/math_toolkit/high_precision/e_float.html +++ b/doc/html/math_toolkit/high_precision/e_float.html @@ -1,9 +1,9 @@ - + Using e_float Library - + @@ -47,7 +47,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/high_precision/float128.html b/doc/html/math_toolkit/high_precision/float128.html index fd51196dcb..d115614d4e 100644 --- a/doc/html/math_toolkit/high_precision/float128.html +++ b/doc/html/math_toolkit/high_precision/float128.html @@ -1,9 +1,9 @@ - + Using with GCC's __float128 datatype - + @@ -52,7 +52,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/high_precision/use_mpfr.html b/doc/html/math_toolkit/high_precision/use_mpfr.html index ebf1d47b9c..63e4a7dfed 100644 --- a/doc/html/math_toolkit/high_precision/use_mpfr.html +++ b/doc/html/math_toolkit/high_precision/use_mpfr.html @@ -1,9 +1,9 @@ - + Using With MPFR or GMP - High-Precision Floating-Point Library - + @@ -95,7 +95,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/high_precision/use_multiprecision.html b/doc/html/math_toolkit/high_precision/use_multiprecision.html index 8b2be3fb16..4bca9e6377 100644 --- a/doc/html/math_toolkit/high_precision/use_multiprecision.html +++ b/doc/html/math_toolkit/high_precision/use_multiprecision.html @@ -1,9 +1,9 @@ - + Using Boost.Multiprecision - + @@ -285,7 +285,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/high_precision/use_ntl.html b/doc/html/math_toolkit/high_precision/use_ntl.html index 7c38a23eb5..822fcb5256 100644 --- a/doc/html/math_toolkit/high_precision/use_ntl.html +++ b/doc/html/math_toolkit/high_precision/use_ntl.html @@ -1,9 +1,9 @@ - + Using NTL Library - + @@ -60,7 +60,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/high_precision/using_test.html b/doc/html/math_toolkit/high_precision/using_test.html index f06fc876e3..61567c08d9 100644 --- a/doc/html/math_toolkit/high_precision/using_test.html +++ b/doc/html/math_toolkit/high_precision/using_test.html @@ -1,9 +1,9 @@ - + Using without expression templates for Boost.Test and others - + @@ -130,7 +130,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/high_precision/why_high_precision.html b/doc/html/math_toolkit/high_precision/why_high_precision.html index 3fe5c901cb..73c66541ea 100644 --- a/doc/html/math_toolkit/high_precision/why_high_precision.html +++ b/doc/html/math_toolkit/high_precision/why_high_precision.html @@ -1,9 +1,9 @@ - + Why use a high-precision library rather than built-in floating-point types? - + @@ -126,7 +126,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/hints.html b/doc/html/math_toolkit/hints.html index 76b95114d9..c002de82ab 100644 --- a/doc/html/math_toolkit/hints.html +++ b/doc/html/math_toolkit/hints.html @@ -1,9 +1,9 @@ - + Other Hints and tips - + @@ -121,7 +121,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/history1.html b/doc/html/math_toolkit/history1.html index 713350e8ed..5eba9e040e 100644 --- a/doc/html/math_toolkit/history1.html +++ b/doc/html/math_toolkit/history1.html @@ -1,9 +1,9 @@ - + History and What's New - + @@ -1866,7 +1866,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/history2.html b/doc/html/math_toolkit/history2.html index e91c823737..d29d142e0b 100644 --- a/doc/html/math_toolkit/history2.html +++ b/doc/html/math_toolkit/history2.html @@ -1,9 +1,9 @@ - + History and What's New - + @@ -1866,7 +1866,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/hypergeometric.html b/doc/html/math_toolkit/hypergeometric.html index 74e8a2b75b..032263b141 100644 --- a/doc/html/math_toolkit/hypergeometric.html +++ b/doc/html/math_toolkit/hypergeometric.html @@ -1,9 +1,9 @@ - + Hypergeometric Functions - + @@ -46,7 +46,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/hypergeometric/hypergeometric_0f1.html b/doc/html/math_toolkit/hypergeometric/hypergeometric_0f1.html index 432dfa0fd6..4f247b97e2 100644 --- a/doc/html/math_toolkit/hypergeometric/hypergeometric_0f1.html +++ b/doc/html/math_toolkit/hypergeometric/hypergeometric_0f1.html @@ -1,9 +1,9 @@ - + Hypergeometric 0F1 - + @@ -98,7 +98,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/hypergeometric/hypergeometric_1f0.html b/doc/html/math_toolkit/hypergeometric/hypergeometric_1f0.html index 26c5761b13..b1f0bb6f6f 100644 --- a/doc/html/math_toolkit/hypergeometric/hypergeometric_1f0.html +++ b/doc/html/math_toolkit/hypergeometric/hypergeometric_1f0.html @@ -1,9 +1,9 @@ - + Hypergeometric 1F0 - + @@ -86,7 +86,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/hypergeometric/hypergeometric_1f1.html b/doc/html/math_toolkit/hypergeometric/hypergeometric_1f1.html index fd8bc8cccd..157d633b6a 100644 --- a/doc/html/math_toolkit/hypergeometric/hypergeometric_1f1.html +++ b/doc/html/math_toolkit/hypergeometric/hypergeometric_1f1.html @@ -1,9 +1,9 @@ - + Hypergeometric 1F1 - + @@ -777,7 +777,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/hypergeometric/hypergeometric_2f0.html b/doc/html/math_toolkit/hypergeometric/hypergeometric_2f0.html index ba2c4a9c11..6adff6831d 100644 --- a/doc/html/math_toolkit/hypergeometric/hypergeometric_2f0.html +++ b/doc/html/math_toolkit/hypergeometric/hypergeometric_2f0.html @@ -1,9 +1,9 @@ - + Hypergeometric 2F0 - + @@ -107,7 +107,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/hypergeometric/hypergeometric_pfq.html b/doc/html/math_toolkit/hypergeometric/hypergeometric_pfq.html index 2fc2fdc245..fa7ca51a2f 100644 --- a/doc/html/math_toolkit/hypergeometric/hypergeometric_pfq.html +++ b/doc/html/math_toolkit/hypergeometric/hypergeometric_pfq.html @@ -1,9 +1,9 @@ - + Hypergeometric pFq - + @@ -144,7 +144,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/hypergeometric/hypergeometric_refs.html b/doc/html/math_toolkit/hypergeometric/hypergeometric_refs.html index 7df5c309ad..c31d2631b5 100644 --- a/doc/html/math_toolkit/hypergeometric/hypergeometric_refs.html +++ b/doc/html/math_toolkit/hypergeometric/hypergeometric_refs.html @@ -1,9 +1,9 @@ - + Hypergeometric References - + @@ -96,7 +96,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/internals.html b/doc/html/math_toolkit/internals.html index e49ea9df2f..8669259891 100644 --- a/doc/html/math_toolkit/internals.html +++ b/doc/html/math_toolkit/internals.html @@ -1,9 +1,9 @@ - + Internal tools - + @@ -54,7 +54,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/internals/agm.html b/doc/html/math_toolkit/internals/agm.html index eb08be2030..0743bef1d7 100644 --- a/doc/html/math_toolkit/internals/agm.html +++ b/doc/html/math_toolkit/internals/agm.html @@ -1,9 +1,9 @@ - + Arithmetic-Geometric Mean - + @@ -121,7 +121,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/internals/centered_continued_fraction.html b/doc/html/math_toolkit/internals/centered_continued_fraction.html index 036a56b811..5e8494c811 100644 --- a/doc/html/math_toolkit/internals/centered_continued_fraction.html +++ b/doc/html/math_toolkit/internals/centered_continued_fraction.html @@ -1,9 +1,9 @@ - + Centered Continued Fractions - + @@ -92,7 +92,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/internals/cf.html b/doc/html/math_toolkit/internals/cf.html index 38d9655903..648be0dcc8 100644 --- a/doc/html/math_toolkit/internals/cf.html +++ b/doc/html/math_toolkit/internals/cf.html @@ -1,9 +1,9 @@ - + Continued Fraction Evaluation - + @@ -372,7 +372,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/internals/cohen_acceleration.html b/doc/html/math_toolkit/internals/cohen_acceleration.html index df9e28f353..aa558d907b 100644 --- a/doc/html/math_toolkit/internals/cohen_acceleration.html +++ b/doc/html/math_toolkit/internals/cohen_acceleration.html @@ -1,9 +1,9 @@ - + Cohen Acceleration - + @@ -156,7 +156,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/internals/color_maps.html b/doc/html/math_toolkit/internals/color_maps.html index 240ba42775..7135476b9c 100644 --- a/doc/html/math_toolkit/internals/color_maps.html +++ b/doc/html/math_toolkit/internals/color_maps.html @@ -1,9 +1,9 @@ - + Color Maps - + @@ -161,7 +161,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/internals/engel_expansion.html b/doc/html/math_toolkit/internals/engel_expansion.html index cf74a40d51..3ad6b3dbe4 100644 --- a/doc/html/math_toolkit/internals/engel_expansion.html +++ b/doc/html/math_toolkit/internals/engel_expansion.html @@ -1,9 +1,9 @@ - + Engel Expansion - + @@ -70,7 +70,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/internals/error_test.html b/doc/html/math_toolkit/internals/error_test.html index b622ec1f89..b7951f74bc 100644 --- a/doc/html/math_toolkit/internals/error_test.html +++ b/doc/html/math_toolkit/internals/error_test.html @@ -1,9 +1,9 @@ - + Relative Error and Testing - + @@ -225,7 +225,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/internals/luroth_expansion.html b/doc/html/math_toolkit/internals/luroth_expansion.html index 8d88cb9574..6ee2553422 100644 --- a/doc/html/math_toolkit/internals/luroth_expansion.html +++ b/doc/html/math_toolkit/internals/luroth_expansion.html @@ -1,9 +1,9 @@ - + Luroth Expansions - + @@ -102,7 +102,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/internals/minimax.html b/doc/html/math_toolkit/internals/minimax.html index 949ea2ef85..e7d75b8b74 100644 --- a/doc/html/math_toolkit/internals/minimax.html +++ b/doc/html/math_toolkit/internals/minimax.html @@ -1,9 +1,9 @@ - + Minimax Approximations and the Remez Algorithm - + @@ -270,7 +270,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/internals/recurrence.html b/doc/html/math_toolkit/internals/recurrence.html index 2cbde0402b..7911c04d61 100644 --- a/doc/html/math_toolkit/internals/recurrence.html +++ b/doc/html/math_toolkit/internals/recurrence.html @@ -1,9 +1,9 @@ - + Tools For 3-Term Recurrence Relations - + @@ -288,7 +288,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/internals/series_evaluation.html b/doc/html/math_toolkit/internals/series_evaluation.html index 24f0196be9..ebc2069a98 100644 --- a/doc/html/math_toolkit/internals/series_evaluation.html +++ b/doc/html/math_toolkit/internals/series_evaluation.html @@ -1,9 +1,9 @@ - + Series Evaluation - + @@ -239,7 +239,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/internals/simple_continued_fraction.html b/doc/html/math_toolkit/internals/simple_continued_fraction.html index af6834515a..82cbbe9e07 100644 --- a/doc/html/math_toolkit/internals/simple_continued_fraction.html +++ b/doc/html/math_toolkit/internals/simple_continued_fraction.html @@ -1,9 +1,9 @@ - + Simple Continued Fractions - + @@ -107,7 +107,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/internals/test_data.html b/doc/html/math_toolkit/internals/test_data.html index 5b893620be..c747b3c39c 100644 --- a/doc/html/math_toolkit/internals/test_data.html +++ b/doc/html/math_toolkit/internals/test_data.html @@ -1,9 +1,9 @@ - + Graphing, Profiling, and Generating Test Data for Special Functions - + @@ -550,7 +550,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/internals/tuples.html b/doc/html/math_toolkit/internals/tuples.html index ac3578ee00..5a92e9753f 100644 --- a/doc/html/math_toolkit/internals/tuples.html +++ b/doc/html/math_toolkit/internals/tuples.html @@ -1,9 +1,9 @@ - + Tuples - + @@ -71,7 +71,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/internals_overview.html b/doc/html/math_toolkit/internals_overview.html index 2ab4751169..89f4d95b94 100644 --- a/doc/html/math_toolkit/internals_overview.html +++ b/doc/html/math_toolkit/internals_overview.html @@ -1,9 +1,9 @@ - + Overview - + @@ -47,7 +47,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/interp.html b/doc/html/math_toolkit/interp.html index 4b38b830e2..d175c81cda 100644 --- a/doc/html/math_toolkit/interp.html +++ b/doc/html/math_toolkit/interp.html @@ -1,9 +1,9 @@ - + Interpreting these Results - + @@ -60,7 +60,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/intro_pol_overview.html b/doc/html/math_toolkit/intro_pol_overview.html index fa996551fc..643825b2f8 100644 --- a/doc/html/math_toolkit/intro_pol_overview.html +++ b/doc/html/math_toolkit/intro_pol_overview.html @@ -1,9 +1,9 @@ - + Policies - + @@ -104,7 +104,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/inv_hyper.html b/doc/html/math_toolkit/inv_hyper.html index ad9c144e07..4f594acd21 100644 --- a/doc/html/math_toolkit/inv_hyper.html +++ b/doc/html/math_toolkit/inv_hyper.html @@ -1,9 +1,9 @@ - + Inverse Hyperbolic Functions - + @@ -39,7 +39,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/inv_hyper/acosh.html b/doc/html/math_toolkit/inv_hyper/acosh.html index 3b6112fdb0..460035c1fa 100644 --- a/doc/html/math_toolkit/inv_hyper/acosh.html +++ b/doc/html/math_toolkit/inv_hyper/acosh.html @@ -1,9 +1,9 @@ - + acosh - + @@ -122,7 +122,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/inv_hyper/asinh.html b/doc/html/math_toolkit/inv_hyper/asinh.html index 3fa19efe8e..2af4fe4020 100644 --- a/doc/html/math_toolkit/inv_hyper/asinh.html +++ b/doc/html/math_toolkit/inv_hyper/asinh.html @@ -1,9 +1,9 @@ - + asinh - + @@ -117,7 +117,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/inv_hyper/atanh.html b/doc/html/math_toolkit/inv_hyper/atanh.html index 740dada613..68d8ce9c9c 100644 --- a/doc/html/math_toolkit/inv_hyper/atanh.html +++ b/doc/html/math_toolkit/inv_hyper/atanh.html @@ -1,9 +1,9 @@ - + atanh - + @@ -126,7 +126,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/inv_hyper/inv_hyper_over.html b/doc/html/math_toolkit/inv_hyper/inv_hyper_over.html index 8811dde4fb..41fdce2e35 100644 --- a/doc/html/math_toolkit/inv_hyper/inv_hyper_over.html +++ b/doc/html/math_toolkit/inv_hyper/inv_hyper_over.html @@ -1,9 +1,9 @@ - + Inverse Hyperbolic Functions Overview - + @@ -137,7 +137,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/issues.html b/doc/html/math_toolkit/issues.html index f2c62a3c63..f6501219f0 100644 --- a/doc/html/math_toolkit/issues.html +++ b/doc/html/math_toolkit/issues.html @@ -1,9 +1,9 @@ - + Known Issues, and TODO List - + @@ -1193,7 +1193,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/jacobi.html b/doc/html/math_toolkit/jacobi.html index 24ce7b425a..89c4cda569 100644 --- a/doc/html/math_toolkit/jacobi.html +++ b/doc/html/math_toolkit/jacobi.html @@ -1,9 +1,9 @@ - + Jacobi Elliptic Functions - + @@ -62,7 +62,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/jacobi/jac_over.html b/doc/html/math_toolkit/jacobi/jac_over.html index 29d0ad2ea3..b42d118c37 100644 --- a/doc/html/math_toolkit/jacobi/jac_over.html +++ b/doc/html/math_toolkit/jacobi/jac_over.html @@ -1,9 +1,9 @@ - + Overview of the Jacobi Elliptic Functions - + @@ -124,7 +124,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/jacobi/jacobi_cd.html b/doc/html/math_toolkit/jacobi/jacobi_cd.html index f04b899f25..5075a7405e 100644 --- a/doc/html/math_toolkit/jacobi/jacobi_cd.html +++ b/doc/html/math_toolkit/jacobi/jacobi_cd.html @@ -1,9 +1,9 @@ - + Jacobi Elliptic Function cd - + @@ -73,7 +73,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/jacobi/jacobi_cn.html b/doc/html/math_toolkit/jacobi/jacobi_cn.html index e65cbe29c6..a039ad88da 100644 --- a/doc/html/math_toolkit/jacobi/jacobi_cn.html +++ b/doc/html/math_toolkit/jacobi/jacobi_cn.html @@ -1,9 +1,9 @@ - + Jacobi Elliptic Function cn - + @@ -69,7 +69,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/jacobi/jacobi_cs.html b/doc/html/math_toolkit/jacobi/jacobi_cs.html index b6d4500be5..a7dead50f5 100644 --- a/doc/html/math_toolkit/jacobi/jacobi_cs.html +++ b/doc/html/math_toolkit/jacobi/jacobi_cs.html @@ -1,9 +1,9 @@ - + Jacobi Elliptic Function cs - + @@ -73,7 +73,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/jacobi/jacobi_dc.html b/doc/html/math_toolkit/jacobi/jacobi_dc.html index a2add0ca3d..37593bd1b3 100644 --- a/doc/html/math_toolkit/jacobi/jacobi_dc.html +++ b/doc/html/math_toolkit/jacobi/jacobi_dc.html @@ -1,9 +1,9 @@ - + Jacobi Elliptic Function dc - + @@ -73,7 +73,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/jacobi/jacobi_dn.html b/doc/html/math_toolkit/jacobi/jacobi_dn.html index 8f62efd77f..e0cb448d79 100644 --- a/doc/html/math_toolkit/jacobi/jacobi_dn.html +++ b/doc/html/math_toolkit/jacobi/jacobi_dn.html @@ -1,9 +1,9 @@ - + Jacobi Elliptic Function dn - + @@ -69,7 +69,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/jacobi/jacobi_ds.html b/doc/html/math_toolkit/jacobi/jacobi_ds.html index 322255d1bf..4ea24eef53 100644 --- a/doc/html/math_toolkit/jacobi/jacobi_ds.html +++ b/doc/html/math_toolkit/jacobi/jacobi_ds.html @@ -1,9 +1,9 @@ - + Jacobi Elliptic Function ds - + @@ -73,7 +73,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/jacobi/jacobi_elliptic.html b/doc/html/math_toolkit/jacobi/jacobi_elliptic.html index 9a2c1faed3..b7cec248fd 100644 --- a/doc/html/math_toolkit/jacobi/jacobi_elliptic.html +++ b/doc/html/math_toolkit/jacobi/jacobi_elliptic.html @@ -1,9 +1,9 @@ - + Jacobi Elliptic SN, CN and DN - + @@ -759,7 +759,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/jacobi/jacobi_nc.html b/doc/html/math_toolkit/jacobi/jacobi_nc.html index 4410b42af9..51a0808ae5 100644 --- a/doc/html/math_toolkit/jacobi/jacobi_nc.html +++ b/doc/html/math_toolkit/jacobi/jacobi_nc.html @@ -1,9 +1,9 @@ - + Jacobi Elliptic Function nc - + @@ -73,7 +73,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/jacobi/jacobi_nd.html b/doc/html/math_toolkit/jacobi/jacobi_nd.html index ca9c4034c9..0b180eb242 100644 --- a/doc/html/math_toolkit/jacobi/jacobi_nd.html +++ b/doc/html/math_toolkit/jacobi/jacobi_nd.html @@ -1,9 +1,9 @@ - + Jacobi Elliptic Function nd - + @@ -73,7 +73,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/jacobi/jacobi_ns.html b/doc/html/math_toolkit/jacobi/jacobi_ns.html index 627715fb19..5a2d647718 100644 --- a/doc/html/math_toolkit/jacobi/jacobi_ns.html +++ b/doc/html/math_toolkit/jacobi/jacobi_ns.html @@ -1,9 +1,9 @@ - + Jacobi Elliptic Function ns - + @@ -73,7 +73,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/jacobi/jacobi_sc.html b/doc/html/math_toolkit/jacobi/jacobi_sc.html index e4fd594646..5ed2db0bdb 100644 --- a/doc/html/math_toolkit/jacobi/jacobi_sc.html +++ b/doc/html/math_toolkit/jacobi/jacobi_sc.html @@ -1,9 +1,9 @@ - + Jacobi Elliptic Function sc - + @@ -73,7 +73,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/jacobi/jacobi_sd.html b/doc/html/math_toolkit/jacobi/jacobi_sd.html index 787328015e..c1185637f9 100644 --- a/doc/html/math_toolkit/jacobi/jacobi_sd.html +++ b/doc/html/math_toolkit/jacobi/jacobi_sd.html @@ -1,9 +1,9 @@ - + Jacobi Elliptic Function sd - + @@ -73,7 +73,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/jacobi/jacobi_sn.html b/doc/html/math_toolkit/jacobi/jacobi_sn.html index b8f417be3a..a3e6ca16f7 100644 --- a/doc/html/math_toolkit/jacobi/jacobi_sn.html +++ b/doc/html/math_toolkit/jacobi/jacobi_sn.html @@ -1,9 +1,9 @@ - + Jacobi Elliptic Function sn - + @@ -69,7 +69,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/jacobi_theta.html b/doc/html/math_toolkit/jacobi_theta.html index a1cece63ad..f5e4f060b8 100644 --- a/doc/html/math_toolkit/jacobi_theta.html +++ b/doc/html/math_toolkit/jacobi_theta.html @@ -1,9 +1,9 @@ - + Jacobi Theta Functions - + @@ -44,7 +44,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/jacobi_theta/jacobi_theta1.html b/doc/html/math_toolkit/jacobi_theta/jacobi_theta1.html index 8043b6f25e..a7c05f3d48 100644 --- a/doc/html/math_toolkit/jacobi_theta/jacobi_theta1.html +++ b/doc/html/math_toolkit/jacobi_theta/jacobi_theta1.html @@ -1,9 +1,9 @@ - + Jacobi Theta Function θ1 - + @@ -138,7 +138,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/jacobi_theta/jacobi_theta2.html b/doc/html/math_toolkit/jacobi_theta/jacobi_theta2.html index 5aae8ceeb0..1259b161ba 100644 --- a/doc/html/math_toolkit/jacobi_theta/jacobi_theta2.html +++ b/doc/html/math_toolkit/jacobi_theta/jacobi_theta2.html @@ -1,9 +1,9 @@ - + Jacobi Theta Function θ2 - + @@ -138,7 +138,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/jacobi_theta/jacobi_theta3.html b/doc/html/math_toolkit/jacobi_theta/jacobi_theta3.html index 1aaab7be9b..d0e2788a24 100644 --- a/doc/html/math_toolkit/jacobi_theta/jacobi_theta3.html +++ b/doc/html/math_toolkit/jacobi_theta/jacobi_theta3.html @@ -1,9 +1,9 @@ - + Jacobi Theta Function θ3 - + @@ -155,7 +155,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/jacobi_theta/jacobi_theta4.html b/doc/html/math_toolkit/jacobi_theta/jacobi_theta4.html index fb99431dac..8f09a8aac2 100644 --- a/doc/html/math_toolkit/jacobi_theta/jacobi_theta4.html +++ b/doc/html/math_toolkit/jacobi_theta/jacobi_theta4.html @@ -1,9 +1,9 @@ - + Jacobi Theta Function θ4 - + @@ -155,7 +155,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/jacobi_theta/jacobi_theta_overview.html b/doc/html/math_toolkit/jacobi_theta/jacobi_theta_overview.html index e1a5601873..5915ee1936 100644 --- a/doc/html/math_toolkit/jacobi_theta/jacobi_theta_overview.html +++ b/doc/html/math_toolkit/jacobi_theta/jacobi_theta_overview.html @@ -1,9 +1,9 @@ - + Overview of the Jacobi Theta Functions - + @@ -161,7 +161,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/jso.html b/doc/html/math_toolkit/jso.html index 8e0cc038c2..6c21b843bd 100644 --- a/doc/html/math_toolkit/jso.html +++ b/doc/html/math_toolkit/jso.html @@ -1,9 +1,9 @@ - + Algorithm jSO - + @@ -206,7 +206,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/lambert_w.html b/doc/html/math_toolkit/lambert_w.html index dba2238c66..0463f87d4d 100644 --- a/doc/html/math_toolkit/lambert_w.html +++ b/doc/html/math_toolkit/lambert_w.html @@ -1,9 +1,9 @@ - + Lambert W function - + @@ -1913,7 +1913,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/lanczos.html b/doc/html/math_toolkit/lanczos.html index 7d59785da6..ff3388ce25 100644 --- a/doc/html/math_toolkit/lanczos.html +++ b/doc/html/math_toolkit/lanczos.html @@ -1,9 +1,9 @@ - + The Lanczos Approximation - + @@ -573,7 +573,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/linear_regression.html b/doc/html/math_toolkit/linear_regression.html index bed68e01cf..6b5842c86f 100644 --- a/doc/html/math_toolkit/linear_regression.html +++ b/doc/html/math_toolkit/linear_regression.html @@ -1,9 +1,9 @@ - + Linear Regression - + @@ -216,7 +216,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/ljung_box.html b/doc/html/math_toolkit/ljung_box.html index 7d4040d0b9..694719e50e 100644 --- a/doc/html/math_toolkit/ljung_box.html +++ b/doc/html/math_toolkit/ljung_box.html @@ -1,9 +1,9 @@ - + The Ljung-Box Test - + @@ -119,7 +119,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/logistic.html b/doc/html/math_toolkit/logistic.html index 63c960f2e8..69304efd82 100644 --- a/doc/html/math_toolkit/logistic.html +++ b/doc/html/math_toolkit/logistic.html @@ -1,6 +1,6 @@ - + Logistic Functions @@ -36,7 +36,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/logistic/logistic_sigmoid.html b/doc/html/math_toolkit/logistic/logistic_sigmoid.html index 4aaa918404..a1a04a30d8 100644 --- a/doc/html/math_toolkit/logistic/logistic_sigmoid.html +++ b/doc/html/math_toolkit/logistic/logistic_sigmoid.html @@ -1,6 +1,6 @@ - + logistic_sigmoid @@ -58,7 +58,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/logistic/logit.html b/doc/html/math_toolkit/logistic/logit.html index 3a4551177d..77d1425742 100644 --- a/doc/html/math_toolkit/logistic/logit.html +++ b/doc/html/math_toolkit/logistic/logit.html @@ -1,6 +1,6 @@ - + logit @@ -57,7 +57,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/logs_and_tables.html b/doc/html/math_toolkit/logs_and_tables.html index 67878a8c7a..93fc1904df 100644 --- a/doc/html/math_toolkit/logs_and_tables.html +++ b/doc/html/math_toolkit/logs_and_tables.html @@ -1,9 +1,9 @@ - + Error logs and tables - + @@ -38,7 +38,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/logs_and_tables/all_table.html b/doc/html/math_toolkit/logs_and_tables/all_table.html index fcd6fd1f82..aae8612141 100644 --- a/doc/html/math_toolkit/logs_and_tables/all_table.html +++ b/doc/html/math_toolkit/logs_and_tables/all_table.html @@ -1,9 +1,9 @@ - + Tables of Error Rates for all Functions - + @@ -12051,7 +12051,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/logs_and_tables/logs.html b/doc/html/math_toolkit/logs_and_tables/logs.html index a7a768b862..fd17a7d3d0 100644 --- a/doc/html/math_toolkit/logs_and_tables/logs.html +++ b/doc/html/math_toolkit/logs_and_tables/logs.html @@ -1,9 +1,9 @@ - + Error Logs For Error Rate Tables - + @@ -3144,7 +3144,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/macros.html b/doc/html/math_toolkit/macros.html index 20aa6a6de5..d81b2c7a23 100644 --- a/doc/html/math_toolkit/macros.html +++ b/doc/html/math_toolkit/macros.html @@ -1,9 +1,9 @@ - + Floating-Point Constant Macros - + @@ -74,7 +74,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/main_faq.html b/doc/html/math_toolkit/main_faq.html index ba09069cf0..a7af4bce62 100644 --- a/doc/html/math_toolkit/main_faq.html +++ b/doc/html/math_toolkit/main_faq.html @@ -1,9 +1,9 @@ - + Boost.Math Frequently Asked Questions (FAQs) - + @@ -102,10 +102,10 @@ Density Function, Quantile, Hazard Function, Cumulative Hazard Function, - mean, median, - mode, variance, - standard deviation, - skewness, kurtosis, kurtosis_excess, + __logcdf, __logpdf, mean, + median, mode, + variance, standard deviation, skewness, kurtosis, + kurtosis_excess, range and support.

    @@ -373,7 +373,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/main_intro.html b/doc/html/math_toolkit/main_intro.html index 6248b1712b..294a4b3a79 100644 --- a/doc/html/math_toolkit/main_intro.html +++ b/doc/html/math_toolkit/main_intro.html @@ -1,9 +1,9 @@ - + About the Math Toolkit - + @@ -183,7 +183,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/main_tr1.html b/doc/html/math_toolkit/main_tr1.html index bdf7cb6bd4..5b0bca7da2 100644 --- a/doc/html/math_toolkit/main_tr1.html +++ b/doc/html/math_toolkit/main_tr1.html @@ -1,12 +1,12 @@ - + C99 and TR1 C Functions Overview - + - - + + @@ -603,7 +603,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/makima.html b/doc/html/math_toolkit/makima.html index 2c147bcc19..a808e64439 100644 --- a/doc/html/math_toolkit/makima.html +++ b/doc/html/math_toolkit/makima.html @@ -1,9 +1,9 @@ - + Modified Akima interpolation - + @@ -131,7 +131,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/mem_typedef.html b/doc/html/math_toolkit/mem_typedef.html index 417ef86786..97e7cc0c41 100644 --- a/doc/html/math_toolkit/mem_typedef.html +++ b/doc/html/math_toolkit/mem_typedef.html @@ -1,9 +1,9 @@ - + Quaternion Member Typedefs - + @@ -58,7 +58,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/minimum_typdefs.html b/doc/html/math_toolkit/minimum_typdefs.html index cfe2d97a30..ae9c80f98c 100644 --- a/doc/html/math_toolkit/minimum_typdefs.html +++ b/doc/html/math_toolkit/minimum_typdefs.html @@ -1,9 +1,9 @@ - + Minimum-width floating-point typedefs - + @@ -48,7 +48,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/multiprecision.html b/doc/html/math_toolkit/multiprecision.html index 4a1598a130..5621a14c16 100644 --- a/doc/html/math_toolkit/multiprecision.html +++ b/doc/html/math_toolkit/multiprecision.html @@ -1,9 +1,9 @@ - + Cost of High-Precision Non-built-in Floating-point - + @@ -112,7 +112,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/naive_monte_carlo.html b/doc/html/math_toolkit/naive_monte_carlo.html index 4b1856b298..49ccb45176 100644 --- a/doc/html/math_toolkit/naive_monte_carlo.html +++ b/doc/html/math_toolkit/naive_monte_carlo.html @@ -1,9 +1,9 @@ - + Naive Monte Carlo Integration - + @@ -223,7 +223,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/namespaces.html b/doc/html/math_toolkit/namespaces.html index 000cdf2ca2..b96ccf409a 100644 --- a/doc/html/math_toolkit/namespaces.html +++ b/doc/html/math_toolkit/namespaces.html @@ -1,9 +1,9 @@ - + Namespaces - + @@ -91,7 +91,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/navigation.html b/doc/html/math_toolkit/navigation.html index ce4c419a1d..7ae0278709 100644 --- a/doc/html/math_toolkit/navigation.html +++ b/doc/html/math_toolkit/navigation.html @@ -1,9 +1,9 @@ - + Navigation - + @@ -28,7 +28,7 @@ Navigation

    - +

    Boost.Math documentation is provided in both HTML and PDF formats. @@ -90,7 +90,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/new_const.html b/doc/html/math_toolkit/new_const.html index 868e3bcb6c..8ae1818a38 100644 --- a/doc/html/math_toolkit/new_const.html +++ b/doc/html/math_toolkit/new_const.html @@ -1,9 +1,9 @@ - + Defining New Constants - + @@ -249,7 +249,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/next_float.html b/doc/html/math_toolkit/next_float.html index 31a2fc5619..49276814fc 100644 --- a/doc/html/math_toolkit/next_float.html +++ b/doc/html/math_toolkit/next_float.html @@ -1,9 +1,9 @@ - + Floating-Point Representation Distance (ULP), and Finding Adjacent Floating-Point Values - + @@ -102,7 +102,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/next_float/float_advance.html b/doc/html/math_toolkit/next_float/float_advance.html index d7db8b931a..03e2e71caa 100644 --- a/doc/html/math_toolkit/next_float/float_advance.html +++ b/doc/html/math_toolkit/next_float/float_advance.html @@ -1,9 +1,9 @@ - + Advancing a floating-point Value by a Specific Representation Distance (ULP) float_advance - + @@ -58,7 +58,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/next_float/float_distance.html b/doc/html/math_toolkit/next_float/float_distance.html index ea794357cc..668ecdaaf1 100644 --- a/doc/html/math_toolkit/next_float/float_distance.html +++ b/doc/html/math_toolkit/next_float/float_distance.html @@ -1,9 +1,9 @@ - + Calculating the Representation Distance Between Two floating-point Values (ULP) float_distance - + @@ -92,7 +92,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/next_float/float_next.html b/doc/html/math_toolkit/next_float/float_next.html index 13b6f9c604..d475f68553 100644 --- a/doc/html/math_toolkit/next_float/float_next.html +++ b/doc/html/math_toolkit/next_float/float_next.html @@ -1,9 +1,9 @@ - + Finding the Next Greater Representable Value (float_next) - + @@ -62,7 +62,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/next_float/float_prior.html b/doc/html/math_toolkit/next_float/float_prior.html index f78c965cc0..a3862d147c 100644 --- a/doc/html/math_toolkit/next_float/float_prior.html +++ b/doc/html/math_toolkit/next_float/float_prior.html @@ -1,9 +1,9 @@ - + Finding the Next Smaller Representable Value (float_prior) - + @@ -62,7 +62,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/next_float/nextafter.html b/doc/html/math_toolkit/next_float/nextafter.html index 282e5de846..7403d94fa9 100644 --- a/doc/html/math_toolkit/next_float/nextafter.html +++ b/doc/html/math_toolkit/next_float/nextafter.html @@ -1,9 +1,9 @@ - + Finding the Next Representable Value in a Specific Direction (nextafter) - + @@ -116,7 +116,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/next_float/ulp.html b/doc/html/math_toolkit/next_float/ulp.html index d05e76e9b9..e68f2dcb6c 100644 --- a/doc/html/math_toolkit/next_float/ulp.html +++ b/doc/html/math_toolkit/next_float/ulp.html @@ -1,9 +1,9 @@ - + Obtaining the Size of a Unit In the Last Place - ULP - + @@ -149,7 +149,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/norms.html b/doc/html/math_toolkit/norms.html index 7f148db217..89c85cf60f 100644 --- a/doc/html/math_toolkit/norms.html +++ b/doc/html/math_toolkit/norms.html @@ -1,9 +1,9 @@ - + Norms - + @@ -365,7 +365,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/number_series.html b/doc/html/math_toolkit/number_series.html index f6862de61f..11e894ad39 100644 --- a/doc/html/math_toolkit/number_series.html +++ b/doc/html/math_toolkit/number_series.html @@ -1,9 +1,9 @@ - + Number Series - + @@ -40,7 +40,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/number_series/bernoulli_numbers.html b/doc/html/math_toolkit/number_series/bernoulli_numbers.html index 81f6900ab5..48e3fb07dc 100644 --- a/doc/html/math_toolkit/number_series/bernoulli_numbers.html +++ b/doc/html/math_toolkit/number_series/bernoulli_numbers.html @@ -1,9 +1,9 @@ - + Bernoulli Numbers - + @@ -370,7 +370,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/number_series/fibonacci_numbers.html b/doc/html/math_toolkit/number_series/fibonacci_numbers.html index 518eb90e1d..27117b9d0d 100644 --- a/doc/html/math_toolkit/number_series/fibonacci_numbers.html +++ b/doc/html/math_toolkit/number_series/fibonacci_numbers.html @@ -1,9 +1,9 @@ - + Fibonacci Numbers - + @@ -183,7 +183,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/number_series/primes.html b/doc/html/math_toolkit/number_series/primes.html index 060a2bd38b..99392e41c0 100644 --- a/doc/html/math_toolkit/number_series/primes.html +++ b/doc/html/math_toolkit/number_series/primes.html @@ -1,9 +1,9 @@ - + Prime Numbers - + @@ -74,7 +74,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/number_series/tangent_numbers.html b/doc/html/math_toolkit/number_series/tangent_numbers.html index 92872bee58..74330fb816 100644 --- a/doc/html/math_toolkit/number_series/tangent_numbers.html +++ b/doc/html/math_toolkit/number_series/tangent_numbers.html @@ -1,9 +1,9 @@ - + Tangent Numbers - + @@ -126,7 +126,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/oct_create.html b/doc/html/math_toolkit/oct_create.html index b27488e7cd..956dde9e83 100644 --- a/doc/html/math_toolkit/oct_create.html +++ b/doc/html/math_toolkit/oct_create.html @@ -1,9 +1,9 @@ - + Octonion Creation Functions - + @@ -70,7 +70,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/oct_header.html b/doc/html/math_toolkit/oct_header.html index d943454009..32362b5b96 100644 --- a/doc/html/math_toolkit/oct_header.html +++ b/doc/html/math_toolkit/oct_header.html @@ -1,9 +1,9 @@ - + Header File - + @@ -35,7 +35,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/oct_history.html b/doc/html/math_toolkit/oct_history.html index cf31768a3a..1c0110f95a 100644 --- a/doc/html/math_toolkit/oct_history.html +++ b/doc/html/math_toolkit/oct_history.html @@ -1,9 +1,9 @@ - + History - + @@ -97,7 +97,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/oct_mem_fun.html b/doc/html/math_toolkit/oct_mem_fun.html index c269d1ff1a..b9c2f225be 100644 --- a/doc/html/math_toolkit/oct_mem_fun.html +++ b/doc/html/math_toolkit/oct_mem_fun.html @@ -1,9 +1,9 @@ - + Octonion Member Functions - + @@ -245,7 +245,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/oct_non_mem.html b/doc/html/math_toolkit/oct_non_mem.html index 80c727e211..d9e1db5206 100644 --- a/doc/html/math_toolkit/oct_non_mem.html +++ b/doc/html/math_toolkit/oct_non_mem.html @@ -1,9 +1,9 @@ - + Octonion Non-Member Operators - + @@ -209,7 +209,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/oct_overview.html b/doc/html/math_toolkit/oct_overview.html index 48a8ecfd71..7159450c5c 100644 --- a/doc/html/math_toolkit/oct_overview.html +++ b/doc/html/math_toolkit/oct_overview.html @@ -1,9 +1,9 @@ - + Overview - + @@ -72,7 +72,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/oct_specialization.html b/doc/html/math_toolkit/oct_specialization.html index ba45f49849..a8844888a6 100644 --- a/doc/html/math_toolkit/oct_specialization.html +++ b/doc/html/math_toolkit/oct_specialization.html @@ -1,9 +1,9 @@ - + Octonion Specializations - + @@ -228,7 +228,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/oct_synopsis.html b/doc/html/math_toolkit/oct_synopsis.html index 3561c1c484..c8193fe3da 100644 --- a/doc/html/math_toolkit/oct_synopsis.html +++ b/doc/html/math_toolkit/oct_synopsis.html @@ -1,9 +1,9 @@ - + Synopsis - + @@ -127,7 +127,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/oct_tests.html b/doc/html/math_toolkit/oct_tests.html index bd2209a678..98fa24b74a 100644 --- a/doc/html/math_toolkit/oct_tests.html +++ b/doc/html/math_toolkit/oct_tests.html @@ -1,9 +1,9 @@ - + Test Program - + @@ -46,7 +46,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/oct_todo.html b/doc/html/math_toolkit/oct_todo.html index f83fd64df4..660c6c28ed 100644 --- a/doc/html/math_toolkit/oct_todo.html +++ b/doc/html/math_toolkit/oct_todo.html @@ -1,9 +1,9 @@ - + To Do - + @@ -43,7 +43,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/oct_trans.html b/doc/html/math_toolkit/oct_trans.html index 4ddbf83eab..5407b13e85 100644 --- a/doc/html/math_toolkit/oct_trans.html +++ b/doc/html/math_toolkit/oct_trans.html @@ -1,9 +1,9 @@ - + Octonions Transcendentals - + @@ -134,7 +134,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/oct_typedefs.html b/doc/html/math_toolkit/oct_typedefs.html index f09e24d5aa..16ffe874ed 100644 --- a/doc/html/math_toolkit/oct_typedefs.html +++ b/doc/html/math_toolkit/oct_typedefs.html @@ -1,9 +1,9 @@ - + Octonion Member Typedefs - + @@ -58,7 +58,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/oct_value_ops.html b/doc/html/math_toolkit/oct_value_ops.html index fd1de4f4e5..0db15307b2 100644 --- a/doc/html/math_toolkit/oct_value_ops.html +++ b/doc/html/math_toolkit/oct_value_ops.html @@ -1,9 +1,9 @@ - + Octonion Value Operations - + @@ -94,7 +94,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/octonion.html b/doc/html/math_toolkit/octonion.html index e40d03a3e8..5723ff71d8 100644 --- a/doc/html/math_toolkit/octonion.html +++ b/doc/html/math_toolkit/octonion.html @@ -1,9 +1,9 @@ - + Template Class octonion - + @@ -100,7 +100,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/overview_tr1.html b/doc/html/math_toolkit/overview_tr1.html index e462e7f5ba..0e58c0d6a1 100644 --- a/doc/html/math_toolkit/overview_tr1.html +++ b/doc/html/math_toolkit/overview_tr1.html @@ -1,9 +1,9 @@ - + C99 and C++ TR1 C-style Functions - + @@ -603,7 +603,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/owens_t.html b/doc/html/math_toolkit/owens_t.html index 9c38592428..c111a25897 100644 --- a/doc/html/math_toolkit/owens_t.html +++ b/doc/html/math_toolkit/owens_t.html @@ -1,9 +1,9 @@ - + Owen's T function - + @@ -309,7 +309,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/pchip.html b/doc/html/math_toolkit/pchip.html index 727afb510e..6fa2903b13 100644 --- a/doc/html/math_toolkit/pchip.html +++ b/doc/html/math_toolkit/pchip.html @@ -1,9 +1,9 @@ - + PCHIP interpolation - + @@ -124,7 +124,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/perf_over1.html b/doc/html/math_toolkit/perf_over1.html index 76bc4cd8f1..65e8213a58 100644 --- a/doc/html/math_toolkit/perf_over1.html +++ b/doc/html/math_toolkit/perf_over1.html @@ -1,9 +1,9 @@ - + Performance - + @@ -74,7 +74,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/perf_over2.html b/doc/html/math_toolkit/perf_over2.html index ed0b43391b..51c8ac8348 100644 --- a/doc/html/math_toolkit/perf_over2.html +++ b/doc/html/math_toolkit/perf_over2.html @@ -1,9 +1,9 @@ - + Performance Overview - + @@ -74,7 +74,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/perf_test_app.html b/doc/html/math_toolkit/perf_test_app.html index 2e5f2675e3..58190e982b 100644 --- a/doc/html/math_toolkit/perf_test_app.html +++ b/doc/html/math_toolkit/perf_test_app.html @@ -1,9 +1,9 @@ - + The Performance Test Applications - + @@ -104,7 +104,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/pol_overview.html b/doc/html/math_toolkit/pol_overview.html index 02fa9dac49..addca53426 100644 --- a/doc/html/math_toolkit/pol_overview.html +++ b/doc/html/math_toolkit/pol_overview.html @@ -1,9 +1,9 @@ - + Policy Overview - + @@ -104,7 +104,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/pol_ref.html b/doc/html/math_toolkit/pol_ref.html index dc9be5cfbc..6835be56f7 100644 --- a/doc/html/math_toolkit/pol_ref.html +++ b/doc/html/math_toolkit/pol_ref.html @@ -1,9 +1,9 @@ - + Policy Reference - + @@ -50,7 +50,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/pol_ref/assert_undefined.html b/doc/html/math_toolkit/pol_ref/assert_undefined.html index b2f804f4a0..21be08ade9 100644 --- a/doc/html/math_toolkit/pol_ref/assert_undefined.html +++ b/doc/html/math_toolkit/pol_ref/assert_undefined.html @@ -1,9 +1,9 @@ - + Mathematically Undefined Function Policies - + @@ -88,7 +88,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/pol_ref/discrete_quant_ref.html b/doc/html/math_toolkit/pol_ref/discrete_quant_ref.html index cd312d0d90..0061c8f801 100644 --- a/doc/html/math_toolkit/pol_ref/discrete_quant_ref.html +++ b/doc/html/math_toolkit/pol_ref/discrete_quant_ref.html @@ -1,9 +1,9 @@ - + Discrete Quantile Policies - + @@ -238,7 +238,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/pol_ref/error_handling_policies.html b/doc/html/math_toolkit/pol_ref/error_handling_policies.html index bae066d44c..5604bb73d6 100644 --- a/doc/html/math_toolkit/pol_ref/error_handling_policies.html +++ b/doc/html/math_toolkit/pol_ref/error_handling_policies.html @@ -1,9 +1,9 @@ - + Error Handling Policies - + @@ -759,7 +759,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/pol_ref/internal_promotion.html b/doc/html/math_toolkit/pol_ref/internal_promotion.html index 1f1a4fc244..3b937c6ced 100644 --- a/doc/html/math_toolkit/pol_ref/internal_promotion.html +++ b/doc/html/math_toolkit/pol_ref/internal_promotion.html @@ -1,9 +1,9 @@ - + Internal Floating-point Promotion Policies - + @@ -136,7 +136,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/pol_ref/iteration_pol.html b/doc/html/math_toolkit/pol_ref/iteration_pol.html index f6e0305b9f..c76b896e6c 100644 --- a/doc/html/math_toolkit/pol_ref/iteration_pol.html +++ b/doc/html/math_toolkit/pol_ref/iteration_pol.html @@ -1,9 +1,9 @@ - + Iteration Limits Policies - + @@ -53,7 +53,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/pol_ref/namespace_pol.html b/doc/html/math_toolkit/pol_ref/namespace_pol.html index f194b25607..18087c8cf8 100644 --- a/doc/html/math_toolkit/pol_ref/namespace_pol.html +++ b/doc/html/math_toolkit/pol_ref/namespace_pol.html @@ -1,9 +1,9 @@ - + Setting Polices at Namespace Scope - + @@ -144,7 +144,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/pol_ref/pol_ref_ref.html b/doc/html/math_toolkit/pol_ref/pol_ref_ref.html index f9aad696ed..98ffc08758 100644 --- a/doc/html/math_toolkit/pol_ref/pol_ref_ref.html +++ b/doc/html/math_toolkit/pol_ref/pol_ref_ref.html @@ -1,9 +1,9 @@ - + Policy Class Reference - + @@ -247,7 +247,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/pol_ref/policy_defaults.html b/doc/html/math_toolkit/pol_ref/policy_defaults.html index eeb506ab00..ef9661e9bd 100644 --- a/doc/html/math_toolkit/pol_ref/policy_defaults.html +++ b/doc/html/math_toolkit/pol_ref/policy_defaults.html @@ -1,9 +1,9 @@ - + Using Macros to Change the Policy Defaults - + @@ -244,7 +244,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/pol_ref/precision_pol.html b/doc/html/math_toolkit/pol_ref/precision_pol.html index cf6cd0c193..6e5ce9157f 100644 --- a/doc/html/math_toolkit/pol_ref/precision_pol.html +++ b/doc/html/math_toolkit/pol_ref/precision_pol.html @@ -1,9 +1,9 @@ - + Precision Policies - + @@ -96,7 +96,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/pol_tutorial.html b/doc/html/math_toolkit/pol_tutorial.html index 5fa1936a3a..1a5d4e8d4d 100644 --- a/doc/html/math_toolkit/pol_tutorial.html +++ b/doc/html/math_toolkit/pol_tutorial.html @@ -1,9 +1,9 @@ - + Policy Tutorial - + @@ -52,7 +52,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/pol_tutorial/ad_hoc_dist_policies.html b/doc/html/math_toolkit/pol_tutorial/ad_hoc_dist_policies.html index 4d82db7553..e3dff0f7da 100644 --- a/doc/html/math_toolkit/pol_tutorial/ad_hoc_dist_policies.html +++ b/doc/html/math_toolkit/pol_tutorial/ad_hoc_dist_policies.html @@ -1,9 +1,9 @@ - + Setting Policies for Distributions on an Ad Hoc Basis - + @@ -91,7 +91,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/pol_tutorial/ad_hoc_sf_policies.html b/doc/html/math_toolkit/pol_tutorial/ad_hoc_sf_policies.html index f33c278644..067d5bb769 100644 --- a/doc/html/math_toolkit/pol_tutorial/ad_hoc_sf_policies.html +++ b/doc/html/math_toolkit/pol_tutorial/ad_hoc_sf_policies.html @@ -1,9 +1,9 @@ - + Changing the Policy on an Ad Hoc Basis for the Special Functions - + @@ -160,7 +160,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/pol_tutorial/changing_policy_defaults.html b/doc/html/math_toolkit/pol_tutorial/changing_policy_defaults.html index 608b8d5e83..70b6008c72 100644 --- a/doc/html/math_toolkit/pol_tutorial/changing_policy_defaults.html +++ b/doc/html/math_toolkit/pol_tutorial/changing_policy_defaults.html @@ -1,9 +1,9 @@ - + Changing the Policy Defaults - + @@ -244,7 +244,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/pol_tutorial/namespace_policies.html b/doc/html/math_toolkit/pol_tutorial/namespace_policies.html index 91a570fdab..1dd787cb51 100644 --- a/doc/html/math_toolkit/pol_tutorial/namespace_policies.html +++ b/doc/html/math_toolkit/pol_tutorial/namespace_policies.html @@ -1,9 +1,9 @@ - + Setting Policies at Namespace or Translation Unit Scope - + @@ -352,7 +352,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/pol_tutorial/policy_tut_defaults.html b/doc/html/math_toolkit/pol_tutorial/policy_tut_defaults.html index 30f2369262..f61f777c6f 100644 --- a/doc/html/math_toolkit/pol_tutorial/policy_tut_defaults.html +++ b/doc/html/math_toolkit/pol_tutorial/policy_tut_defaults.html @@ -1,9 +1,9 @@ - + Policies Have Sensible Defaults - + @@ -144,7 +144,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/pol_tutorial/policy_usage.html b/doc/html/math_toolkit/pol_tutorial/policy_usage.html index a970d06878..91c8a7ef54 100644 --- a/doc/html/math_toolkit/pol_tutorial/policy_usage.html +++ b/doc/html/math_toolkit/pol_tutorial/policy_usage.html @@ -1,9 +1,9 @@ - + So How are Policies Used Anyway? - + @@ -59,7 +59,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/pol_tutorial/understand_dis_quant.html b/doc/html/math_toolkit/pol_tutorial/understand_dis_quant.html index 90867e22ed..a90c046526 100644 --- a/doc/html/math_toolkit/pol_tutorial/understand_dis_quant.html +++ b/doc/html/math_toolkit/pol_tutorial/understand_dis_quant.html @@ -1,9 +1,9 @@ - + Understanding Quantiles of Discrete Distributions - + @@ -403,7 +403,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/pol_tutorial/user_def_err_pol.html b/doc/html/math_toolkit/pol_tutorial/user_def_err_pol.html index b0b82167e3..111fa613f4 100644 --- a/doc/html/math_toolkit/pol_tutorial/user_def_err_pol.html +++ b/doc/html/math_toolkit/pol_tutorial/user_def_err_pol.html @@ -1,9 +1,9 @@ - + Calling User Defined Error Handlers - + @@ -440,7 +440,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/pol_tutorial/what_is_a_policy.html b/doc/html/math_toolkit/pol_tutorial/what_is_a_policy.html index 338d6469d9..b746a310a1 100644 --- a/doc/html/math_toolkit/pol_tutorial/what_is_a_policy.html +++ b/doc/html/math_toolkit/pol_tutorial/what_is_a_policy.html @@ -1,9 +1,9 @@ - + So Just What is a Policy Anyway? - + @@ -87,7 +87,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/polynomials.html b/doc/html/math_toolkit/polynomials.html index fab79b6baf..ef1facec7a 100644 --- a/doc/html/math_toolkit/polynomials.html +++ b/doc/html/math_toolkit/polynomials.html @@ -1,9 +1,9 @@ - + Polynomials - + @@ -322,7 +322,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/powers.html b/doc/html/math_toolkit/powers.html index de2ec36367..ebcaa2babb 100644 --- a/doc/html/math_toolkit/powers.html +++ b/doc/html/math_toolkit/powers.html @@ -1,9 +1,9 @@ - + Basic Functions - + @@ -46,7 +46,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/powers/cbrt.html b/doc/html/math_toolkit/powers/cbrt.html index 6f0f0aef8b..ce6463c2ae 100644 --- a/doc/html/math_toolkit/powers/cbrt.html +++ b/doc/html/math_toolkit/powers/cbrt.html @@ -1,9 +1,9 @@ - + cbrt - + @@ -151,7 +151,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/powers/cos_pi.html b/doc/html/math_toolkit/powers/cos_pi.html index 3e1d33e328..e8abb5be31 100644 --- a/doc/html/math_toolkit/powers/cos_pi.html +++ b/doc/html/math_toolkit/powers/cos_pi.html @@ -1,9 +1,9 @@ - + cos_pi - + @@ -155,7 +155,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/powers/ct_pow.html b/doc/html/math_toolkit/powers/ct_pow.html index ec6bb6e3a6..f0f2ddb441 100644 --- a/doc/html/math_toolkit/powers/ct_pow.html +++ b/doc/html/math_toolkit/powers/ct_pow.html @@ -1,9 +1,9 @@ - + Compile Time Power of a Runtime Base - + @@ -42,10 +42,10 @@
    namespace boost { namespace math {
     
     template <int N, typename T>
    -constexpr calculated-result-type pow(T base);
    +BOOST_MATH_GPU_ENABLED constexpr calculated-result-type pow(T base);
     
     template <int N, typename T, class Policy>
    -constexpr calculated-result-type pow(T base, const Policy& policy);
    +BOOST_MATH_GPU_ENABLED constexpr calculated-result-type pow(T base, const Policy& policy);
     
     }}
     
    @@ -260,7 +260,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/powers/expm1.html b/doc/html/math_toolkit/powers/expm1.html index 81e0e3649f..c7ef7227ce 100644 --- a/doc/html/math_toolkit/powers/expm1.html +++ b/doc/html/math_toolkit/powers/expm1.html @@ -1,9 +1,9 @@ - + expm1 - + @@ -161,7 +161,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/powers/hypot.html b/doc/html/math_toolkit/powers/hypot.html index 00c6ec88c3..2bae0e4385 100644 --- a/doc/html/math_toolkit/powers/hypot.html +++ b/doc/html/math_toolkit/powers/hypot.html @@ -1,9 +1,9 @@ - + hypot - + @@ -32,6 +32,12 @@ template <class T1, class T2, class Policy> calculated-result-type hypot(T1 x, T2 y, const Policy&); + +template <class T1, class T2, class T3> +calculated-result-type hypot(T1 x, T2 y, T3 z); + +template <class T1, class T2, class T3, class Policy> +calculated-result-type hypot(T1 x, T2 y, T3 z, const Policy&);

    Effects: computes @@ -45,8 +51,8 @@

    The return type of this function is computed using the result - type calculation rules when T1 and T2 are of different - types. + type calculation rules when T1 and T2 (and or T3) are of + different types.

    The final Policy argument is optional and can @@ -77,6 +83,14 @@

    Then if x * ε >= y we can simply return x.

    +

    + In the 3-arg case the approach is to scale by the largest argument, and then + calculate +

    +

    + const auto a = max(max(x, y), z); return a == 0 ? 0 : a * sqrt(x/a * x/a + + y/a * y/a + z/a * z/a); +

    Otherwise the result is given by:

    @@ -89,7 +103,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/powers/log1p.html b/doc/html/math_toolkit/powers/log1p.html index 9894c3fd72..ef84ff9ef8 100644 --- a/doc/html/math_toolkit/powers/log1p.html +++ b/doc/html/math_toolkit/powers/log1p.html @@ -1,9 +1,9 @@ - + log1p - + @@ -176,7 +176,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/powers/logaddexp.html b/doc/html/math_toolkit/powers/logaddexp.html index e0d5d989fb..a3a7077c5a 100644 --- a/doc/html/math_toolkit/powers/logaddexp.html +++ b/doc/html/math_toolkit/powers/logaddexp.html @@ -1,9 +1,9 @@ - + logaddexp and logsumexp - + @@ -151,7 +151,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/powers/powm1.html b/doc/html/math_toolkit/powers/powm1.html index a1fca99ed9..4914fff32c 100644 --- a/doc/html/math_toolkit/powers/powm1.html +++ b/doc/html/math_toolkit/powers/powm1.html @@ -1,9 +1,9 @@ - + powm1 - + @@ -155,7 +155,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/powers/rsqrt.html b/doc/html/math_toolkit/powers/rsqrt.html index bd60816563..6c7b37a471 100644 --- a/doc/html/math_toolkit/powers/rsqrt.html +++ b/doc/html/math_toolkit/powers/rsqrt.html @@ -1,9 +1,9 @@ - + Reciprocal square root - + @@ -101,7 +101,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/powers/sin_pi.html b/doc/html/math_toolkit/powers/sin_pi.html index c362a9331a..ade1318d9a 100644 --- a/doc/html/math_toolkit/powers/sin_pi.html +++ b/doc/html/math_toolkit/powers/sin_pi.html @@ -1,9 +1,9 @@ - + sin_pi - + @@ -155,7 +155,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/powers/sqrt1pm1.html b/doc/html/math_toolkit/powers/sqrt1pm1.html index 3eba5d089f..b854a46d9d 100644 --- a/doc/html/math_toolkit/powers/sqrt1pm1.html +++ b/doc/html/math_toolkit/powers/sqrt1pm1.html @@ -1,9 +1,9 @@ - + sqrt1pm1 - + @@ -153,7 +153,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/quartic_roots.html b/doc/html/math_toolkit/quartic_roots.html index 41b2cbc48d..f62bc17cb5 100644 --- a/doc/html/math_toolkit/quartic_roots.html +++ b/doc/html/math_toolkit/quartic_roots.html @@ -1,9 +1,9 @@ - + Roots of Quartic Polynomials - + @@ -73,7 +73,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/quat.html b/doc/html/math_toolkit/quat.html index 0e09d5efef..9ec33ea9dd 100644 --- a/doc/html/math_toolkit/quat.html +++ b/doc/html/math_toolkit/quat.html @@ -1,9 +1,9 @@ - + Template Class quaternion - + @@ -85,7 +85,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/quat_header.html b/doc/html/math_toolkit/quat_header.html index 1cf29bde83..cc9bfae94f 100644 --- a/doc/html/math_toolkit/quat_header.html +++ b/doc/html/math_toolkit/quat_header.html @@ -1,9 +1,9 @@ - + Header File - + @@ -35,7 +35,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/quat_history.html b/doc/html/math_toolkit/quat_history.html index dca6835c16..d12e1b7a71 100644 --- a/doc/html/math_toolkit/quat_history.html +++ b/doc/html/math_toolkit/quat_history.html @@ -1,9 +1,9 @@ - + History - + @@ -99,7 +99,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/quat_mem_fun.html b/doc/html/math_toolkit/quat_mem_fun.html index f8fe80d4e2..ccac63d8a3 100644 --- a/doc/html/math_toolkit/quat_mem_fun.html +++ b/doc/html/math_toolkit/quat_mem_fun.html @@ -1,9 +1,9 @@ - + Quaternion Member Functions - + @@ -222,7 +222,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/quat_non_mem.html b/doc/html/math_toolkit/quat_non_mem.html index 347edfdfe9..ffedc707bd 100644 --- a/doc/html/math_toolkit/quat_non_mem.html +++ b/doc/html/math_toolkit/quat_non_mem.html @@ -1,9 +1,9 @@ - + Quaternion Non-Member Operators - + @@ -210,7 +210,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/quat_overview.html b/doc/html/math_toolkit/quat_overview.html index c40d4fadba..2e139fc879 100644 --- a/doc/html/math_toolkit/quat_overview.html +++ b/doc/html/math_toolkit/quat_overview.html @@ -1,9 +1,9 @@ - + Overview - + @@ -82,7 +82,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/quat_synopsis.html b/doc/html/math_toolkit/quat_synopsis.html index 09d605d64d..942bf1780d 100644 --- a/doc/html/math_toolkit/quat_synopsis.html +++ b/doc/html/math_toolkit/quat_synopsis.html @@ -1,9 +1,9 @@ - + Synopsis - + @@ -114,7 +114,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/quat_tests.html b/doc/html/math_toolkit/quat_tests.html index 25b30c45e0..f30408e4ba 100644 --- a/doc/html/math_toolkit/quat_tests.html +++ b/doc/html/math_toolkit/quat_tests.html @@ -1,9 +1,9 @@ - + Test Program - + @@ -47,7 +47,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/quat_todo.html b/doc/html/math_toolkit/quat_todo.html index 0e87d4c26d..2cc0150e94 100644 --- a/doc/html/math_toolkit/quat_todo.html +++ b/doc/html/math_toolkit/quat_todo.html @@ -1,9 +1,9 @@ - + To Do - + @@ -47,7 +47,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/quintic_hermite.html b/doc/html/math_toolkit/quintic_hermite.html index 6b40ccb2fe..97d713c82a 100644 --- a/doc/html/math_toolkit/quintic_hermite.html +++ b/doc/html/math_toolkit/quintic_hermite.html @@ -1,9 +1,9 @@ - + Quintic Hermite interpolation - + @@ -227,7 +227,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/random_search.html b/doc/html/math_toolkit/random_search.html index 5c8f036466..e80c07d57c 100644 --- a/doc/html/math_toolkit/random_search.html +++ b/doc/html/math_toolkit/random_search.html @@ -1,9 +1,9 @@ - + Random Search - + @@ -184,7 +184,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/rational.html b/doc/html/math_toolkit/rational.html index 6be0b987b9..2d401927a5 100644 --- a/doc/html/math_toolkit/rational.html +++ b/doc/html/math_toolkit/rational.html @@ -1,9 +1,9 @@ - + Polynomial and Rational Function Evaluation - + @@ -217,7 +217,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/rationale.html b/doc/html/math_toolkit/rationale.html index da3f66ff0b..3426e0facc 100644 --- a/doc/html/math_toolkit/rationale.html +++ b/doc/html/math_toolkit/rationale.html @@ -1,9 +1,9 @@ - + Rationale - + @@ -141,7 +141,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/real_concepts.html b/doc/html/math_toolkit/real_concepts.html index 24e43fa396..f0c4dcf274 100644 --- a/doc/html/math_toolkit/real_concepts.html +++ b/doc/html/math_toolkit/real_concepts.html @@ -1,9 +1,9 @@ - + Conceptual Requirements for Real Number Types - + @@ -1362,7 +1362,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/refs.html b/doc/html/math_toolkit/refs.html index 747f4e1a16..db920cb200 100644 --- a/doc/html/math_toolkit/refs.html +++ b/doc/html/math_toolkit/refs.html @@ -1,9 +1,9 @@ - + References - + @@ -201,7 +201,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/relative_error.html b/doc/html/math_toolkit/relative_error.html index 01140ec60f..108a69bd74 100644 --- a/doc/html/math_toolkit/relative_error.html +++ b/doc/html/math_toolkit/relative_error.html @@ -1,9 +1,9 @@ - + Relative Error - + @@ -111,7 +111,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/remez.html b/doc/html/math_toolkit/remez.html index bb873ab912..7bbe445b68 100644 --- a/doc/html/math_toolkit/remez.html +++ b/doc/html/math_toolkit/remez.html @@ -1,9 +1,9 @@ - + The Remez Method - + @@ -541,7 +541,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/result_type.html b/doc/html/math_toolkit/result_type.html index 35ab5f7aa1..752f899313 100644 --- a/doc/html/math_toolkit/result_type.html +++ b/doc/html/math_toolkit/result_type.html @@ -1,9 +1,9 @@ - + Calculation of the Type of the Result - + @@ -170,7 +170,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/root_comparison.html b/doc/html/math_toolkit/root_comparison.html index d9913d9bc2..756a19c2da 100644 --- a/doc/html/math_toolkit/root_comparison.html +++ b/doc/html/math_toolkit/root_comparison.html @@ -1,9 +1,9 @@ - + Comparison of Root Finding Algorithms - + @@ -41,7 +41,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/root_comparison/cbrt_comparison.html b/doc/html/math_toolkit/root_comparison/cbrt_comparison.html index 70fabe399d..dc3200b450 100644 --- a/doc/html/math_toolkit/root_comparison/cbrt_comparison.html +++ b/doc/html/math_toolkit/root_comparison/cbrt_comparison.html @@ -1,9 +1,9 @@ - + Comparison of Cube Root Finding Algorithms - + @@ -1574,7 +1574,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/root_comparison/elliptic_comparison.html b/doc/html/math_toolkit/root_comparison/elliptic_comparison.html index 74028299d5..a1c74cbd9b 100644 --- a/doc/html/math_toolkit/root_comparison/elliptic_comparison.html +++ b/doc/html/math_toolkit/root_comparison/elliptic_comparison.html @@ -1,9 +1,9 @@ - + Comparison of Elliptic Integral Root Finding Algorithms - + @@ -1855,7 +1855,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/root_comparison/root_n_comparison.html b/doc/html/math_toolkit/root_comparison/root_n_comparison.html index e1ce065da3..1afdaf8f29 100644 --- a/doc/html/math_toolkit/root_comparison/root_n_comparison.html +++ b/doc/html/math_toolkit/root_comparison/root_n_comparison.html @@ -1,9 +1,9 @@ - + Comparison of Nth-root Finding Algorithms - + @@ -5272,7 +5272,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/root_finding_examples.html b/doc/html/math_toolkit/root_finding_examples.html index 3bc995d0d1..ca1f8aa79c 100644 --- a/doc/html/math_toolkit/root_finding_examples.html +++ b/doc/html/math_toolkit/root_finding_examples.html @@ -1,9 +1,9 @@ - + Examples of Root-Finding (with and without derivatives) - + @@ -75,7 +75,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/root_finding_examples/5th_root_eg.html b/doc/html/math_toolkit/root_finding_examples/5th_root_eg.html index 5e96e0742d..eb13257fcb 100644 --- a/doc/html/math_toolkit/root_finding_examples/5th_root_eg.html +++ b/doc/html/math_toolkit/root_finding_examples/5th_root_eg.html @@ -1,9 +1,9 @@ - + Computing the Fifth Root - + @@ -152,7 +152,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/root_finding_examples/cbrt_eg.html b/doc/html/math_toolkit/root_finding_examples/cbrt_eg.html index c6d6dd8379..d7ef9c934e 100644 --- a/doc/html/math_toolkit/root_finding_examples/cbrt_eg.html +++ b/doc/html/math_toolkit/root_finding_examples/cbrt_eg.html @@ -1,9 +1,9 @@ - + Finding the Cubed Root With and Without Derivatives - + @@ -470,7 +470,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/root_finding_examples/elliptic_eg.html b/doc/html/math_toolkit/root_finding_examples/elliptic_eg.html index 6713531608..c744e83c74 100644 --- a/doc/html/math_toolkit/root_finding_examples/elliptic_eg.html +++ b/doc/html/math_toolkit/root_finding_examples/elliptic_eg.html @@ -1,9 +1,9 @@ - + A More complex example - Inverting the Elliptic Integrals - + @@ -258,7 +258,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/root_finding_examples/lambda.html b/doc/html/math_toolkit/root_finding_examples/lambda.html index 1f63c954e8..ebe430ad53 100644 --- a/doc/html/math_toolkit/root_finding_examples/lambda.html +++ b/doc/html/math_toolkit/root_finding_examples/lambda.html @@ -1,9 +1,9 @@ - + Using C++11 Lambda's - + @@ -64,7 +64,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/root_finding_examples/multiprecision_root.html b/doc/html/math_toolkit/root_finding_examples/multiprecision_root.html index 5cc76e6489..a02f502dce 100644 --- a/doc/html/math_toolkit/root_finding_examples/multiprecision_root.html +++ b/doc/html/math_toolkit/root_finding_examples/multiprecision_root.html @@ -1,9 +1,9 @@ - + Root-finding using Boost.Multiprecision - + @@ -276,7 +276,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/root_finding_examples/nth_root.html b/doc/html/math_toolkit/root_finding_examples/nth_root.html index 8f702d8314..fea311fb47 100644 --- a/doc/html/math_toolkit/root_finding_examples/nth_root.html +++ b/doc/html/math_toolkit/root_finding_examples/nth_root.html @@ -1,9 +1,9 @@ - + Generalizing to Compute the nth root - + @@ -173,7 +173,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/roots_deriv.html b/doc/html/math_toolkit/roots_deriv.html index 9d03cae8b2..612e8dcaa3 100644 --- a/doc/html/math_toolkit/roots_deriv.html +++ b/doc/html/math_toolkit/roots_deriv.html @@ -1,9 +1,9 @@ - -Root Finding With Derivatives: Newton-Raphson, Halley & Schröder + +Root Finding With Derivatives: Newton-Raphson, Halley & Schroeder - + @@ -25,8 +25,8 @@

    @@ -38,10 +38,10 @@
    namespace tools { // Note namespace boost::math::tools. // Newton-Raphson template <class F, class T> -T newton_raphson_iterate(F f, T guess, T min, T max, int digits); +BOOST_MATH_GPU_ENABLED T newton_raphson_iterate(F f, T guess, T min, T max, int digits); template <class F, class T> -T newton_raphson_iterate(F f, T guess, T min, T max, int digits, std::uintmax_t& max_iter); +BOOST_MATH_GPU_ENABLED T newton_raphson_iterate(F f, T guess, T min, T max, int digits, std::uintmax_t& max_iter); // Halley template <class F, class T> @@ -50,7 +50,7 @@
    template <class F, class T> T halley_iterate(F f, T guess, T min, T max, int digits, std::uintmax_t& max_iter); -// Schr'''&#xf6;'''der +// Schroeder template <class F, class T> T schroder_iterate(F f, T guess, T min, T max, int digits); @@ -111,7 +111,7 @@

    For the third-order methods (Halley - and Schröder) the tuple + and Schroeder) the tuple should have three elements containing the evaluation of the function and its first and second derivatives.

    @@ -270,7 +270,7 @@

    - Schröder's + Schroeder's Method

    @@ -294,10 +294,11 @@

    Under ideal conditions, the number of correct digits trebles with each iteration.

    - This is Schröder's general result (equation 18 from Stewart, + This is Schroeder's general result (equation 18 from Stewart, G. W. "On Infinitely Many Algorithms for Solving Equations." English - translation of Schröder's original paper. College Park, MD: University of Maryland, - Institute for Advanced Computer Studies, Department of Computer Science, 1993.) + translation of Schroeder's original paper. College Park, MD: University of + Maryland, Institute for Advanced Computer Studies, Department of Computer Science, + 1993.)

    This method guarantees at least quadratic convergence (the same as Newton's @@ -364,7 +365,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/roots_noderiv.html b/doc/html/math_toolkit/roots_noderiv.html index 8a29cac8d9..b61978bd7e 100644 --- a/doc/html/math_toolkit/roots_noderiv.html +++ b/doc/html/math_toolkit/roots_noderiv.html @@ -1,9 +1,9 @@ - + Root Finding Without Derivatives - + @@ -205,7 +205,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/roots_noderiv/TOMS748.html b/doc/html/math_toolkit/roots_noderiv/TOMS748.html index eae54122d8..00b9714f06 100644 --- a/doc/html/math_toolkit/roots_noderiv/TOMS748.html +++ b/doc/html/math_toolkit/roots_noderiv/TOMS748.html @@ -1,9 +1,9 @@ - + Algorithm TOMS 748: Alefeld, Potra and Shi: Enclosing zeros of continuous functions - + @@ -183,7 +183,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/roots_noderiv/bisect.html b/doc/html/math_toolkit/roots_noderiv/bisect.html index 1460bb12e6..21282cb7b8 100644 --- a/doc/html/math_toolkit/roots_noderiv/bisect.html +++ b/doc/html/math_toolkit/roots_noderiv/bisect.html @@ -1,9 +1,9 @@ - + Bisection - + @@ -140,7 +140,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/roots_noderiv/bracket_solve.html b/doc/html/math_toolkit/roots_noderiv/bracket_solve.html index c51bc11880..744457a39c 100644 --- a/doc/html/math_toolkit/roots_noderiv/bracket_solve.html +++ b/doc/html/math_toolkit/roots_noderiv/bracket_solve.html @@ -1,9 +1,9 @@ - + Bracket and Solve Root - + @@ -172,7 +172,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/roots_noderiv/brent.html b/doc/html/math_toolkit/roots_noderiv/brent.html index 6421dc8136..657146d925 100644 --- a/doc/html/math_toolkit/roots_noderiv/brent.html +++ b/doc/html/math_toolkit/roots_noderiv/brent.html @@ -1,9 +1,9 @@ - + Brent-Decker Algorithm - + @@ -39,7 +39,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/roots_noderiv/implementation.html b/doc/html/math_toolkit/roots_noderiv/implementation.html index 5243362fe4..0c60375441 100644 --- a/doc/html/math_toolkit/roots_noderiv/implementation.html +++ b/doc/html/math_toolkit/roots_noderiv/implementation.html @@ -1,13 +1,13 @@ - + Implementation - + - + @@ -49,7 +49,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/roots_noderiv/root_termination.html b/doc/html/math_toolkit/roots_noderiv/root_termination.html index eac179508d..3da791f08d 100644 --- a/doc/html/math_toolkit/roots_noderiv/root_termination.html +++ b/doc/html/math_toolkit/roots_noderiv/root_termination.html @@ -1,9 +1,9 @@ - + Termination Condition Functors - + @@ -88,7 +88,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/rounding.html b/doc/html/math_toolkit/rounding.html index 6cc26209c8..0c74e1cfa9 100644 --- a/doc/html/math_toolkit/rounding.html +++ b/doc/html/math_toolkit/rounding.html @@ -1,9 +1,9 @@ - + Rounding Truncation and Integer Conversion - + @@ -39,7 +39,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/rounding/modf.html b/doc/html/math_toolkit/rounding/modf.html index 383d732388..3644003c0f 100644 --- a/doc/html/math_toolkit/rounding/modf.html +++ b/doc/html/math_toolkit/rounding/modf.html @@ -1,9 +1,9 @@ - + Integer and Fractional Part Splitting (modf) - + @@ -69,7 +69,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/rounding/round.html b/doc/html/math_toolkit/rounding/round.html index a8d47d9baf..e64e9f8134 100644 --- a/doc/html/math_toolkit/rounding/round.html +++ b/doc/html/math_toolkit/rounding/round.html @@ -1,9 +1,9 @@ - + Rounding Functions - + @@ -69,7 +69,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/rounding/trunc.html b/doc/html/math_toolkit/rounding/trunc.html index 67c244f892..c22c6669bc 100644 --- a/doc/html/math_toolkit/rounding/trunc.html +++ b/doc/html/math_toolkit/rounding/trunc.html @@ -1,9 +1,9 @@ - + Truncation Functions - + @@ -71,7 +71,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/runs_test.html b/doc/html/math_toolkit/runs_test.html index bf8fc5cb7a..21ed9af240 100644 --- a/doc/html/math_toolkit/runs_test.html +++ b/doc/html/math_toolkit/runs_test.html @@ -1,9 +1,9 @@ - + Runs tests - + @@ -217,7 +217,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/sf_beta.html b/doc/html/math_toolkit/sf_beta.html index 29a4c0c4ef..2833e1bc38 100644 --- a/doc/html/math_toolkit/sf_beta.html +++ b/doc/html/math_toolkit/sf_beta.html @@ -1,9 +1,9 @@ - + Beta Functions - + @@ -41,7 +41,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/sf_beta/beta_derivative.html b/doc/html/math_toolkit/sf_beta/beta_derivative.html index 0f972a33b0..e2bcb63f94 100644 --- a/doc/html/math_toolkit/sf_beta/beta_derivative.html +++ b/doc/html/math_toolkit/sf_beta/beta_derivative.html @@ -1,9 +1,9 @@ - + Derivative of the Incomplete Beta Function - + @@ -37,10 +37,10 @@

    namespace boost{ namespace math{
     
     template <class T1, class T2, class T3>
    -calculated-result-type ibeta_derivative(T1 a, T2 b, T3 x);
    +BOOST_MATH_GPU_ENABLED calculated-result-type ibeta_derivative(T1 a, T2 b, T3 x);
     
     template <class T1, class T2, class T3, class Policy>
    -calculated-result-type ibeta_derivative(T1 a, T2 b, T3 x, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type ibeta_derivative(T1 a, T2 b, T3 x, const Policy&);
     
     }} // namespaces
     
    @@ -89,7 +89,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/sf_beta/beta_function.html b/doc/html/math_toolkit/sf_beta/beta_function.html index 19f38f361f..0295d5f0f5 100644 --- a/doc/html/math_toolkit/sf_beta/beta_function.html +++ b/doc/html/math_toolkit/sf_beta/beta_function.html @@ -1,9 +1,9 @@ - + Beta - + @@ -36,10 +36,10 @@
    namespace boost{ namespace math{
     
     template <class T1, class T2>
    -calculated-result-type beta(T1 a, T2 b);
    +BOOST_MATH_GPU_ENABLED calculated-result-type beta(T1 a, T2 b);
     
     template <class T1, class T2, class Policy>
    -calculated-result-type beta(T1 a, T2 b, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type beta(T1 a, T2 b, const Policy&);
     
     }} // namespaces
     
    @@ -291,7 +291,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/sf_beta/ibeta_function.html b/doc/html/math_toolkit/sf_beta/ibeta_function.html index f88171accd..eec414468c 100644 --- a/doc/html/math_toolkit/sf_beta/ibeta_function.html +++ b/doc/html/math_toolkit/sf_beta/ibeta_function.html @@ -1,9 +1,9 @@ - + Incomplete Beta Functions - + @@ -37,28 +37,28 @@
    namespace boost{ namespace math{
     
     template <class T1, class T2, class T3>
    -calculated-result-type ibeta(T1 a, T2 b, T3 x);
    +BOOST_MATH_GPU_ENABLED calculated-result-type ibeta(T1 a, T2 b, T3 x);
     
     template <class T1, class T2, class T3, class Policy>
    -calculated-result-type ibeta(T1 a, T2 b, T3 x, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type ibeta(T1 a, T2 b, T3 x, const Policy&);
     
     template <class T1, class T2, class T3>
    -calculated-result-type ibetac(T1 a, T2 b, T3 x);
    +BOOST_MATH_GPU_ENABLED calculated-result-type ibetac(T1 a, T2 b, T3 x);
     
     template <class T1, class T2, class T3, class Policy>
    -calculated-result-type ibetac(T1 a, T2 b, T3 x, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type ibetac(T1 a, T2 b, T3 x, const Policy&);
     
     template <class T1, class T2, class T3>
    -calculated-result-type beta(T1 a, T2 b, T3 x);
    +BOOST_MATH_GPU_ENABLED calculated-result-type beta(T1 a, T2 b, T3 x);
     
     template <class T1, class T2, class T3, class Policy>
    -calculated-result-type beta(T1 a, T2 b, T3 x, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type beta(T1 a, T2 b, T3 x, const Policy&);
     
     template <class T1, class T2, class T3>
    -calculated-result-type betac(T1 a, T2 b, T3 x);
    +BOOST_MATH_GPU_ENABLED calculated-result-type betac(T1 a, T2 b, T3 x);
     
     template <class T1, class T2, class T3, class Policy>
    -calculated-result-type betac(T1 a, T2 b, T3 x, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type betac(T1 a, T2 b, T3 x, const Policy&);
     
     }} // namespaces
     
    @@ -101,10 +101,10 @@
    documentation for more details.

    template <class T1, class T2, class T3>
    -calculated-result-type ibeta(T1 a, T2 b, T3 x);
    +BOOST_MATH_GPU_ENABLED calculated-result-type ibeta(T1 a, T2 b, T3 x);
     
     template <class T1, class T2, class T3, class Policy>
    -calculated-result-type ibeta(T1 a, T2 b, T3 x, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type ibeta(T1 a, T2 b, T3 x, const Policy&);
     

    Returns the normalised incomplete beta function of a, b and x: @@ -118,10 +118,10 @@

    template <class T1, class T2, class T3>
    -calculated-result-type ibetac(T1 a, T2 b, T3 x);
    +BOOST_MATH_GPU_ENABLED calculated-result-type ibetac(T1 a, T2 b, T3 x);
     
     template <class T1, class T2, class T3, class Policy>
    -calculated-result-type ibetac(T1 a, T2 b, T3 x, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type ibetac(T1 a, T2 b, T3 x, const Policy&);
     

    Returns the normalised complement of the incomplete beta function of a, b @@ -132,10 +132,10 @@

    template <class T1, class T2, class T3>
    -calculated-result-type beta(T1 a, T2 b, T3 x);
    +BOOST_MATH_GPU_ENABLED calculated-result-type beta(T1 a, T2 b, T3 x);
     
     template <class T1, class T2, class T3, class Policy>
    -calculated-result-type beta(T1 a, T2 b, T3 x, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type beta(T1 a, T2 b, T3 x, const Policy&);
     

    Returns the full (non-normalised) incomplete beta function of a, b and x: @@ -145,10 +145,10 @@

    template <class T1, class T2, class T3>
    -calculated-result-type betac(T1 a, T2 b, T3 x);
    +BOOST_MATH_GPU_ENABLED calculated-result-type betac(T1 a, T2 b, T3 x);
     
     template <class T1, class T2, class T3, class Policy>
    -calculated-result-type betac(T1 a, T2 b, T3 x, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type betac(T1 a, T2 b, T3 x, const Policy&);
     

    Returns the full (non-normalised) complement of the incomplete beta function @@ -887,7 +887,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/sf_beta/ibeta_inv_function.html b/doc/html/math_toolkit/sf_beta/ibeta_inv_function.html index 3e3e7c6fae..313a9fb7fb 100644 --- a/doc/html/math_toolkit/sf_beta/ibeta_inv_function.html +++ b/doc/html/math_toolkit/sf_beta/ibeta_inv_function.html @@ -1,9 +1,9 @@ - + The Incomplete Beta Function Inverses - + @@ -33,52 +33,52 @@
    namespace boost{ namespace math{
     
     template <class T1, class T2, class T3>
    -calculated-result-type ibeta_inv(T1 a, T2 b, T3 p);
    +BOOST_MATH_GPU_ENABLED calculated-result-type ibeta_inv(T1 a, T2 b, T3 p);
     
     template <class T1, class T2, class T3, class Policy>
    -calculated-result-type ibeta_inv(T1 a, T2 b, T3 p, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type ibeta_inv(T1 a, T2 b, T3 p, const Policy&);
     
     template <class T1, class T2, class T3, class T4>
    -calculated-result-type ibeta_inv(T1 a, T2 b, T3 p, T4* py);
    +BOOST_MATH_GPU_ENABLED calculated-result-type ibeta_inv(T1 a, T2 b, T3 p, T4* py);
     
     template <class T1, class T2, class T3, class T4, class Policy>
    -calculated-result-type ibeta_inv(T1 a, T2 b, T3 p, T4* py, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type ibeta_inv(T1 a, T2 b, T3 p, T4* py, const Policy&);
     
     template <class T1, class T2, class T3>
    -calculated-result-type ibetac_inv(T1 a, T2 b, T3 q);
    +BOOST_MATH_GPU_ENABLED calculated-result-type ibetac_inv(T1 a, T2 b, T3 q);
     
     template <class T1, class T2, class T3, class Policy>
    -calculated-result-type ibetac_inv(T1 a, T2 b, T3 q, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type ibetac_inv(T1 a, T2 b, T3 q, const Policy&);
     
     template <class T1, class T2, class T3, class T4>
    -calculated-result-type ibetac_inv(T1 a, T2 b, T3 q, T4* py);
    +BOOST_MATH_GPU_ENABLED calculated-result-type ibetac_inv(T1 a, T2 b, T3 q, T4* py);
     
     template <class T1, class T2, class T3, class T4, class Policy>
    -calculated-result-type ibetac_inv(T1 a, T2 b, T3 q, T4* py, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type ibetac_inv(T1 a, T2 b, T3 q, T4* py, const Policy&);
     
     template <class T1, class T2, class T3>
    -calculated-result-type ibeta_inva(T1 b, T2 x, T3 p);
    +BOOST_MATH_GPU_ENABLED calculated-result-type ibeta_inva(T1 b, T2 x, T3 p);
     
     template <class T1, class T2, class T3, class Policy>
    -calculated-result-type ibeta_inva(T1 b, T2 x, T3 p, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type ibeta_inva(T1 b, T2 x, T3 p, const Policy&);
     
     template <class T1, class T2, class T3>
    -calculated-result-type ibetac_inva(T1 b, T2 x, T3 q);
    +BOOST_MATH_GPU_ENABLED calculated-result-type ibetac_inva(T1 b, T2 x, T3 q);
     
     template <class T1, class T2, class T3, class Policy>
    -calculated-result-type ibetac_inva(T1 b, T2 x, T3 q, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type ibetac_inva(T1 b, T2 x, T3 q, const Policy&);
     
     template <class T1, class T2, class T3>
    -calculated-result-type ibeta_invb(T1 a, T2 x, T3 p);
    +BOOST_MATH_GPU_ENABLED calculated-result-type ibeta_invb(T1 a, T2 x, T3 p);
     
     template <class T1, class T2, class T3, class Policy>
    -calculated-result-type ibeta_invb(T1 a, T2 x, T3 p, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type ibeta_invb(T1 a, T2 x, T3 p, const Policy&);
     
     template <class T1, class T2, class T3>
    -calculated-result-type ibetac_invb(T1 a, T2 x, T3 q);
    +BOOST_MATH_GPU_ENABLED calculated-result-type ibetac_invb(T1 a, T2 x, T3 q);
     
     template <class T1, class T2, class T3, class Policy>
    -calculated-result-type ibetac_invb(T1 a, T2 x, T3 q, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type ibetac_invb(T1 a, T2 x, T3 q, const Policy&);
     
     }} // namespaces
     
    @@ -128,16 +128,16 @@
    of different types.

    template <class T1, class T2, class T3>
    -calculated-result-type ibeta_inv(T1 a, T2 b, T3 p);
    +BOOST_MATH_GPU_ENABLED calculated-result-type ibeta_inv(T1 a, T2 b, T3 p);
     
     template <class T1, class T2, class T3, class Policy>
    -calculated-result-type ibeta_inv(T1 a, T2 b, T3 p, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type ibeta_inv(T1 a, T2 b, T3 p, const Policy&);
     
     template <class T1, class T2, class T3, class T4>
    -calculated-result-type ibeta_inv(T1 a, T2 b, T3 p, T4* py);
    +BOOST_MATH_GPU_ENABLED calculated-result-type ibeta_inv(T1 a, T2 b, T3 p, T4* py);
     
     template <class T1, class T2, class T3, class T4, class Policy>
    -calculated-result-type ibeta_inv(T1 a, T2 b, T3 p, T4* py, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type ibeta_inv(T1 a, T2 b, T3 p, T4* py, const Policy&);
     

    Returns a value x such that: p @@ -163,16 +163,16 @@

    documentation for more details.

    template <class T1, class T2, class T3>
    -calculated-result-type ibetac_inv(T1 a, T2 b, T3 q);
    +BOOST_MATH_GPU_ENABLEDcalculated-result-type ibetac_inv(T1 a, T2 b, T3 q);
     
     template <class T1, class T2, class T3, class Policy>
    -calculated-result-type ibetac_inv(T1 a, T2 b, T3 q, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type ibetac_inv(T1 a, T2 b, T3 q, const Policy&);
     
     template <class T1, class T2, class T3, class T4>
    -calculated-result-type ibetac_inv(T1 a, T2 b, T3 q, T4* py);
    +BOOST_MATH_GPU_ENABLED calculated-result-type ibetac_inv(T1 a, T2 b, T3 q, T4* py);
     
     template <class T1, class T2, class T3, class T4, class Policy>
    -calculated-result-type ibetac_inv(T1 a, T2 b, T3 q, T4* py, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type ibetac_inv(T1 a, T2 b, T3 q, T4* py, const Policy&);
     

    Returns a value x such that: q @@ -198,10 +198,10 @@

    documentation for more details.

    template <class T1, class T2, class T3>
    -calculated-result-type ibeta_inva(T1 b, T2 x, T3 p);
    +BOOST_MATH_GPU_ENABLEDcalculated-result-type ibeta_inva(T1 b, T2 x, T3 p);
     
     template <class T1, class T2, class T3, class Policy>
    -calculated-result-type ibeta_inva(T1 b, T2 x, T3 p, const Policy&);
    +BOOST_MATH_GPU_ENABLEDcalculated-result-type ibeta_inva(T1 b, T2 x, T3 p, const Policy&);
     

    Returns a value a such that: p @@ -219,10 +219,10 @@

    documentation for more details.

    template <class T1, class T2, class T3>
    -calculated-result-type ibetac_inva(T1 b, T2 x, T3 p);
    +BOOST_MATH_GPU_ENABLEDcalculated-result-type ibetac_inva(T1 b, T2 x, T3 p);
     
     template <class T1, class T2, class T3, class Policy>
    -calculated-result-type ibetac_inva(T1 b, T2 x, T3 p, const Policy&);
    +BOOST_MATH_GPU_ENABLEDcalculated-result-type ibetac_inva(T1 b, T2 x, T3 p, const Policy&);
     

    Returns a value a such that: q @@ -240,10 +240,10 @@

    documentation for more details.

    template <class T1, class T2, class T3>
    -calculated-result-type ibeta_invb(T1 b, T2 x, T3 p);
    +BOOST_MATH_GPU_ENABLEDcalculated-result-type ibeta_invb(T1 b, T2 x, T3 p);
     
     template <class T1, class T2, class T3, class Policy>
    -calculated-result-type ibeta_invb(T1 b, T2 x, T3 p, const Policy&);
    +BOOST_MATH_GPU_ENABLEDcalculated-result-type ibeta_invb(T1 b, T2 x, T3 p, const Policy&);
     

    Returns a value b such that: p @@ -261,10 +261,10 @@

    documentation for more details.

    template <class T1, class T2, class T3>
    -calculated-result-type ibetac_invb(T1 b, T2 x, T3 p);
    +BOOST_MATH_GPU_ENABLEDcalculated-result-type ibetac_invb(T1 b, T2 x, T3 p);
     
     template <class T1, class T2, class T3, class Policy>
    -calculated-result-type ibetac_invb(T1 b, T2 x, T3 p, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type ibetac_invb(T1 b, T2 x, T3 p, const Policy&);
     

    Returns a value b such that: q @@ -909,7 +909,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/sf_erf.html b/doc/html/math_toolkit/sf_erf.html index 0e11e99721..248bf78dca 100644 --- a/doc/html/math_toolkit/sf_erf.html +++ b/doc/html/math_toolkit/sf_erf.html @@ -1,9 +1,9 @@ - + Error Functions - + @@ -37,7 +37,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/sf_erf/error_function.html b/doc/html/math_toolkit/sf_erf/error_function.html index 2d41758c3f..361f6a2d7e 100644 --- a/doc/html/math_toolkit/sf_erf/error_function.html +++ b/doc/html/math_toolkit/sf_erf/error_function.html @@ -1,9 +1,9 @@ - + Error Function erf and complement erfc - + @@ -37,16 +37,16 @@
    namespace boost{ namespace math{
     
     template <class T>
    -calculated-result-type erf(T z);
    +BOOST_MATH_GPU_ENABLED calculated-result-type erf(T z);
     
     template <class T, class Policy>
    -calculated-result-type erf(T z, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type erf(T z, const Policy&);
     
     template <class T>
    -calculated-result-type erfc(T z);
    +BOOST_MATH_GPU_ENABLED calculated-result-type erfc(T z);
     
     template <class T, class Policy>
    -calculated-result-type erfc(T z, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type erfc(T z, const Policy&);
     
     }} // namespaces
     
    @@ -65,10 +65,10 @@
    Description
    template <class T>
    -calculated-result-type erf(T z);
    +BOOST_MATH_GPU_ENABLED calculated-result-type erf(T z);
     
     template <class T, class Policy>
    -calculated-result-type erf(T z, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type erf(T z, const Policy&);
     

    Returns the error @@ -84,10 +84,10 @@

    template <class T>
    -calculated-result-type erfc(T z);
    +BOOST_MATH_GPU_ENABLED calculated-result-type erfc(T z);
     
     template <class T, class Policy>
    -calculated-result-type erfc(T z, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type erfc(T z, const Policy&);
     

    Returns the complement of the error @@ -528,7 +528,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/sf_erf/error_inv.html b/doc/html/math_toolkit/sf_erf/error_inv.html index dde4b93ed4..da7c8423e7 100644 --- a/doc/html/math_toolkit/sf_erf/error_inv.html +++ b/doc/html/math_toolkit/sf_erf/error_inv.html @@ -1,9 +1,9 @@ - + Error Function Inverses - + @@ -36,16 +36,16 @@
    namespace boost{ namespace math{
     
     template <class T>
    -calculated-result-type erf_inv(T p);
    +BOOST_MATH_GPU_ENABLED calculated-result-type erf_inv(T p);
     
     template <class T, class Policy>
    -calculated-result-type erf_inv(T p, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type erf_inv(T p, const Policy&);
     
     template <class T>
    -calculated-result-type erfc_inv(T p);
    +BOOST_MATH_GPU_ENABLED calculated-result-type erfc_inv(T p);
     
     template <class T, class Policy>
    -calculated-result-type erfc_inv(T p, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type erfc_inv(T p, const Policy&);
     
     }} // namespaces
     
    @@ -64,10 +64,10 @@
    Description
    template <class T>
    -calculated-result-type erf_inv(T z);
    +BOOST_MATH_GPU_ENABLED calculated-result-type erf_inv(T z);
     
     template <class T, class Policy>
    -calculated-result-type erf_inv(T z, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type erf_inv(T z, const Policy&);
     

    Returns the inverse @@ -81,10 +81,10 @@

    template <class T>
    -calculated-result-type erfc_inv(T z);
    +BOOST_MATH_GPU_ENABLED calculated-result-type erfc_inv(T z);
     
     template <class T, class Policy>
    -calculated-result-type erfc_inv(T z, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type erfc_inv(T z, const Policy&);
     

    Returns the inverse of the complement of the error function of z, that is @@ -363,7 +363,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/sf_gamma.html b/doc/html/math_toolkit/sf_gamma.html index ece4e529cb..976fc37c07 100644 --- a/doc/html/math_toolkit/sf_gamma.html +++ b/doc/html/math_toolkit/sf_gamma.html @@ -1,9 +1,9 @@ - + Gamma Functions - + @@ -45,7 +45,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/sf_gamma/digamma.html b/doc/html/math_toolkit/sf_gamma/digamma.html index 569432a435..cddb83bda0 100644 --- a/doc/html/math_toolkit/sf_gamma/digamma.html +++ b/doc/html/math_toolkit/sf_gamma/digamma.html @@ -1,9 +1,9 @@ - + Digamma - + @@ -36,10 +36,10 @@
    namespace boost{ namespace math{
     
     template <class T>
    -calculated-result-type digamma(T z);
    +BOOST_MATH_GPU_ENABLED calculated-result-type digamma(T z);
     
     template <class T, class Policy>
    -calculated-result-type digamma(T z, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type digamma(T z, const Policy&);
     
     }} // namespaces
     
    @@ -470,7 +470,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/sf_gamma/gamma_derivatives.html b/doc/html/math_toolkit/sf_gamma/gamma_derivatives.html index d5ca38ea64..b88cd6cc4a 100644 --- a/doc/html/math_toolkit/sf_gamma/gamma_derivatives.html +++ b/doc/html/math_toolkit/sf_gamma/gamma_derivatives.html @@ -1,9 +1,9 @@ - + Derivative of the Incomplete Gamma Function - + @@ -37,10 +37,10 @@
    namespace boost{ namespace math{
     
     template <class T1, class T2>
    -calculated-result-type gamma_p_derivative(T1 a, T2 x);
    +BOOST_MATH_GPU_ENABLED calculated-result-type gamma_p_derivative(T1 a, T2 x);
     
     template <class T1, class T2, class Policy>
    -calculated-result-type gamma_p_derivative(T1 a, T2 x, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type gamma_p_derivative(T1 a, T2 x, const Policy&);
     
     }} // namespaces
     
    @@ -94,7 +94,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/sf_gamma/gamma_ratios.html b/doc/html/math_toolkit/sf_gamma/gamma_ratios.html index 5522aaacdc..4f5ee0e779 100644 --- a/doc/html/math_toolkit/sf_gamma/gamma_ratios.html +++ b/doc/html/math_toolkit/sf_gamma/gamma_ratios.html @@ -1,9 +1,9 @@ - + Ratios of Gamma Functions - + @@ -32,16 +32,16 @@
    namespace boost{ namespace math{
     
     template <class T1, class T2>
    -calculated-result-type tgamma_ratio(T1 a, T2 b);
    +BOOST_MATH_GPU_ENABLED calculated-result-type tgamma_ratio(T1 a, T2 b);
     
     template <class T1, class T2, class Policy>
    -calculated-result-type tgamma_ratio(T1 a, T2 b, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type tgamma_ratio(T1 a, T2 b, const Policy&);
     
     template <class T1, class T2>
    -calculated-result-type tgamma_delta_ratio(T1 a, T2 delta);
    +BOOST_MATH_GPU_ENABLED calculated-result-type tgamma_delta_ratio(T1 a, T2 delta);
     
     template <class T1, class T2, class Policy>
    -calculated-result-type tgamma_delta_ratio(T1 a, T2 delta, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type tgamma_delta_ratio(T1 a, T2 delta, const Policy&);
     
     }} // namespaces
     
    @@ -50,10 +50,10 @@
    Description
    template <class T1, class T2>
    -calculated-result-type tgamma_ratio(T1 a, T2 b);
    +BOOST_MATH_GPU_ENABLED calculated-result-type tgamma_ratio(T1 a, T2 b);
     
     template <class T1, class T2, class Policy>
    -calculated-result-type tgamma_ratio(T1 a, T2 b, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type tgamma_ratio(T1 a, T2 b, const Policy&);
     

    Returns the ratio of gamma functions: @@ -73,10 +73,10 @@

    b-a).

    template <class T1, class T2>
    -calculated-result-type tgamma_delta_ratio(T1 a, T2 delta);
    +BOOST_MATH_GPU_ENABLED calculated-result-type tgamma_delta_ratio(T1 a, T2 delta);
     
     template <class T1, class T2, class Policy>
    -calculated-result-type tgamma_delta_ratio(T1 a, T2 delta, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type tgamma_delta_ratio(T1 a, T2 delta, const Policy&);
     

    Returns the ratio of gamma functions: @@ -407,7 +407,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/sf_gamma/igamma.html b/doc/html/math_toolkit/sf_gamma/igamma.html index 7b1d6801d2..1fe87286b1 100644 --- a/doc/html/math_toolkit/sf_gamma/igamma.html +++ b/doc/html/math_toolkit/sf_gamma/igamma.html @@ -1,9 +1,9 @@ - + Incomplete Gamma Functions - + @@ -36,28 +36,28 @@
    namespace boost{ namespace math{
     
     template <class T1, class T2>
    -calculated-result-type gamma_p(T1 a, T2 z);
    +BOOST_MATH_GPU_ENABLED calculated-result-type gamma_p(T1 a, T2 z);
     
     template <class T1, class T2, class Policy>
    -calculated-result-type gamma_p(T1 a, T2 z, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type gamma_p(T1 a, T2 z, const Policy&);
     
     template <class T1, class T2>
    -calculated-result-type gamma_q(T1 a, T2 z);
    +BOOST_MATH_GPU_ENABLED calculated-result-type gamma_q(T1 a, T2 z);
     
     template <class T1, class T2, class Policy>
    -calculated-result-type gamma_q(T1 a, T2 z, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type gamma_q(T1 a, T2 z, const Policy&);
     
     template <class T1, class T2>
    -calculated-result-type tgamma_lower(T1 a, T2 z);
    +BOOST_MATH_GPU_ENABLED calculated-result-type tgamma_lower(T1 a, T2 z);
     
     template <class T1, class T2, class Policy>
    -calculated-result-type tgamma_lower(T1 a, T2 z, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type tgamma_lower(T1 a, T2 z, const Policy&);
     
     template <class T1, class T2>
    -calculated-result-type tgamma(T1 a, T2 z);
    +BOOST_MATH_GPU_ENABLED calculated-result-type tgamma(T1 a, T2 z);
     
     template <class T1, class T2, class Policy>
    -calculated-result-type tgamma(T1 a, T2 z, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type tgamma(T1 a, T2 z, const Policy&);
     
     }} // namespaces
     
    @@ -89,10 +89,10 @@
    otherwise the return type is simply T1.

    template <class T1, class T2>
    -calculated-result-type gamma_p(T1 a, T2 z);
    +BOOST_MATH_GPU_ENABLED calculated-result-type gamma_p(T1 a, T2 z);
     
     template <class T1, class T2, class Policy>
    -calculated-result-type gamma_p(T1 a, T2 z, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type gamma_p(T1 a, T2 z, const Policy&);
     

    Returns the normalised lower incomplete gamma function of a and z: @@ -109,10 +109,10 @@

    template <class T1, class T2>
    -calculated-result-type gamma_q(T1 a, T2 z);
    +BOOST_MATH_GPU_ENABLED calculated-result-type gamma_q(T1 a, T2 z);
     
     template <class T1, class T2, class Policy>
    -calculated-result-type gamma_q(T1 a, T2 z, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type gamma_q(T1 a, T2 z, const Policy&);
     

    Returns the normalised upper incomplete gamma function of a and z: @@ -129,10 +129,10 @@

    template <class T1, class T2>
    -calculated-result-type tgamma_lower(T1 a, T2 z);
    +BOOST_MATH_GPU_ENABLED calculated-result-type tgamma_lower(T1 a, T2 z);
     
     template <class T1, class T2, class Policy>
    -calculated-result-type tgamma_lower(T1 a, T2 z, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type tgamma_lower(T1 a, T2 z, const Policy&);
     

    Returns the full (non-normalised) lower incomplete gamma function of a and @@ -143,10 +143,10 @@

    template <class T1, class T2>
    -calculated-result-type tgamma(T1 a, T2 z);
    +BOOST_MATH_GPU_ENABLED calculated-result-type tgamma(T1 a, T2 z);
     
     template <class T1, class T2, class Policy>
    -calculated-result-type tgamma(T1 a, T2 z, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type tgamma(T1 a, T2 z, const Policy&);
     

    Returns the full (non-normalised) upper incomplete gamma function of a and @@ -1002,7 +1002,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/sf_gamma/igamma_inv.html b/doc/html/math_toolkit/sf_gamma/igamma_inv.html index abda951bd5..c59f3b432f 100644 --- a/doc/html/math_toolkit/sf_gamma/igamma_inv.html +++ b/doc/html/math_toolkit/sf_gamma/igamma_inv.html @@ -1,9 +1,9 @@ - + Incomplete Gamma Function Inverses - + @@ -37,28 +37,28 @@
    namespace boost{ namespace math{
     
     template <class T1, class T2>
    -calculated-result-type gamma_q_inv(T1 a, T2 q);
    +BOOST_MATH_GPU_ENABLED calculated-result-type gamma_q_inv(T1 a, T2 q);
     
     template <class T1, class T2, class Policy>
    -calculated-result-type gamma_q_inv(T1 a, T2 q, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type gamma_q_inv(T1 a, T2 q, const Policy&);
     
     template <class T1, class T2>
    -calculated-result-type gamma_p_inv(T1 a, T2 p);
    +BOOST_MATH_GPU_ENABLED calculated-result-type gamma_p_inv(T1 a, T2 p);
     
     template <class T1, class T2, class Policy>
    -calculated-result-type gamma_p_inv(T1 a, T2 p, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type gamma_p_inv(T1 a, T2 p, const Policy&);
     
     template <class T1, class T2>
    -calculated-result-type gamma_q_inva(T1 x, T2 q);
    +BOOST_MATH_GPU_ENABLED calculated-result-type gamma_q_inva(T1 x, T2 q);
     
     template <class T1, class T2, class Policy>
    -calculated-result-type gamma_q_inva(T1 x, T2 q, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type gamma_q_inva(T1 x, T2 q, const Policy&);
     
     template <class T1, class T2>
    -calculated-result-type gamma_p_inva(T1 x, T2 p);
    +BOOST_MATH_GPU_ENABLED calculated-result-type gamma_p_inva(T1 x, T2 p);
     
     template <class T1, class T2, class Policy>
    -calculated-result-type gamma_p_inva(T1 x, T2 p, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type gamma_p_inva(T1 x, T2 p, const Policy&);
     
     }} // namespaces
     
    @@ -106,10 +106,10 @@
    template <class T1, class T2>
    -calculated-result-type gamma_q_inv(T1 a, T2 q);
    +BOOST_MATH_GPU_ENABLED calculated-result-type gamma_q_inv(T1 a, T2 q);
     
     template <class T1, class T2, class Policy>
    -calculated-result-type gamma_q_inv(T1 a, T2 q, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type gamma_q_inv(T1 a, T2 q, const Policy&);
     

    Returns a value x such that: q @@ -120,10 +120,10 @@

    Requires: a > 0 and 1 >= p,q >= 0.

    template <class T1, class T2>
    -calculated-result-type gamma_p_inv(T1 a, T2 p);
    +BOOST_MATH_GPU_ENABLED calculated-result-type gamma_p_inv(T1 a, T2 p);
     
     template <class T1, class T2, class Policy>
    -calculated-result-type gamma_p_inv(T1 a, T2 p, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type gamma_p_inv(T1 a, T2 p, const Policy&);
     

    Returns a value x such that: p @@ -134,10 +134,10 @@

    Requires: a > 0 and 1 >= p,q >= 0.

    template <class T1, class T2>
    -calculated-result-type gamma_q_inva(T1 x, T2 q);
    +BOOST_MATH_GPU_ENABLED calculated-result-type gamma_q_inva(T1 x, T2 q);
     
     template <class T1, class T2, class Policy>
    -calculated-result-type gamma_q_inva(T1 x, T2 q, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type gamma_q_inva(T1 x, T2 q, const Policy&);
     

    Returns a value a such that: q @@ -148,10 +148,10 @@

    Requires: x > 0 and 1 >= p,q >= 0.

    template <class T1, class T2>
    -calculated-result-type gamma_p_inva(T1 x, T2 p);
    +BOOST_MATH_GPU_ENABLED calculated-result-type gamma_p_inva(T1 x, T2 p);
     
     template <class T1, class T2, class Policy>
    -calculated-result-type gamma_p_inva(T1 x, T2 p, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type gamma_p_inva(T1 x, T2 p, const Policy&);
     

    Returns a value a such that: p @@ -612,7 +612,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/sf_gamma/lgamma.html b/doc/html/math_toolkit/sf_gamma/lgamma.html index d19124ad9a..9b29e773b0 100644 --- a/doc/html/math_toolkit/sf_gamma/lgamma.html +++ b/doc/html/math_toolkit/sf_gamma/lgamma.html @@ -1,9 +1,9 @@ - + Log Gamma - + @@ -36,16 +36,16 @@
    namespace boost{ namespace math{
     
     template <class T>
    -calculated-result-type lgamma(T z);
    +BOOST_MATH_GPU_ENABLED calculated-result-type lgamma(T z);
     
     template <class T, class Policy>
    -calculated-result-type lgamma(T z, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type lgamma(T z, const Policy&);
     
     template <class T>
    -calculated-result-type lgamma(T z, int* sign);
    +BOOST_MATH_GPU_ENABLED calculated-result-type lgamma(T z, int* sign);
     
     template <class T, class Policy>
    -calculated-result-type lgamma(T z, int* sign, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type lgamma(T z, int* sign, const Policy&);
     
     }} // namespaces
     
    @@ -481,7 +481,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/sf_gamma/polygamma.html b/doc/html/math_toolkit/sf_gamma/polygamma.html index 3edb16329b..e2eed2bf06 100644 --- a/doc/html/math_toolkit/sf_gamma/polygamma.html +++ b/doc/html/math_toolkit/sf_gamma/polygamma.html @@ -1,9 +1,9 @@ - + Polygamma - + @@ -406,7 +406,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/sf_gamma/tgamma.html b/doc/html/math_toolkit/sf_gamma/tgamma.html index bdcdb0e4f8..481dd53604 100644 --- a/doc/html/math_toolkit/sf_gamma/tgamma.html +++ b/doc/html/math_toolkit/sf_gamma/tgamma.html @@ -1,9 +1,9 @@ - + Gamma - + @@ -36,16 +36,16 @@
    namespace boost{ namespace math{
     
     template <class T>
    -calculated-result-type tgamma(T z);
    +BOOST_MATH_GPU_ENABLED calculated-result-type tgamma(T z);
     
     template <class T, class Policy>
    -calculated-result-type tgamma(T z, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type tgamma(T z, const Policy&);
     
     template <class T>
    -calculated-result-type tgamma1pm1(T dz);
    +BOOST_MATH_GPU_ENABLED calculated-result-type tgamma1pm1(T dz);
     
     template <class T, class Policy>
    -calculated-result-type tgamma1pm1(T dz, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type tgamma1pm1(T dz, const Policy&);
     
     }} // namespaces
     
    @@ -54,10 +54,10 @@
    Description
    template <class T>
    -calculated-result-type tgamma(T z);
    +BOOST_MATH_GPU_ENABLED calculated-result-type tgamma(T z);
     
     template <class T, class Policy>
    -calculated-result-type tgamma(T z, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type tgamma(T z, const Policy&);
     

    Returns the "true gamma" (hence name tgamma) of value z: @@ -82,10 +82,10 @@

    when T is an integer type, and T otherwise.

    template <class T>
    -calculated-result-type tgamma1pm1(T dz);
    +BOOST_MATH_GPU_ENABLED calculated-result-type tgamma1pm1(T dz);
     
     template <class T, class Policy>
    -calculated-result-type tgamma1pm1(T dz, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type tgamma1pm1(T dz, const Policy&);
     

    Returns tgamma(dz + 1) - 1. @@ -523,7 +523,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/sf_gamma/trigamma.html b/doc/html/math_toolkit/sf_gamma/trigamma.html index 5e97f21508..ee0f181790 100644 --- a/doc/html/math_toolkit/sf_gamma/trigamma.html +++ b/doc/html/math_toolkit/sf_gamma/trigamma.html @@ -1,9 +1,9 @@ - + Trigamma - + @@ -36,10 +36,10 @@
    namespace boost{ namespace math{
     
     template <class T>
    -calculated-result-type trigamma(T x);
    +BOOST_MATH_GPU_ENABLED calculated-result-type trigamma(T x);
     
     template <class T, class Policy>
    -calculated-result-type trigamma(T x, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type trigamma(T x, const Policy&);
     
     }} // namespaces
     
    @@ -215,7 +215,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/sf_implementation.html b/doc/html/math_toolkit/sf_implementation.html index e5839f63b6..620bfc9436 100644 --- a/doc/html/math_toolkit/sf_implementation.html +++ b/doc/html/math_toolkit/sf_implementation.html @@ -1,9 +1,9 @@ - + Additional Implementation Notes - + @@ -848,7 +848,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/sf_poly.html b/doc/html/math_toolkit/sf_poly.html index a61798359e..d99a2889fd 100644 --- a/doc/html/math_toolkit/sf_poly.html +++ b/doc/html/math_toolkit/sf_poly.html @@ -1,9 +1,9 @@ - + Polynomials - + @@ -46,7 +46,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/sf_poly/cardinal_b_splines.html b/doc/html/math_toolkit/sf_poly/cardinal_b_splines.html index eb4dac20d1..170b8997e2 100644 --- a/doc/html/math_toolkit/sf_poly/cardinal_b_splines.html +++ b/doc/html/math_toolkit/sf_poly/cardinal_b_splines.html @@ -1,9 +1,9 @@ - + Cardinal B-splines - + @@ -210,7 +210,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/sf_poly/chebyshev.html b/doc/html/math_toolkit/sf_poly/chebyshev.html index be6881bc51..83e10c6e79 100644 --- a/doc/html/math_toolkit/sf_poly/chebyshev.html +++ b/doc/html/math_toolkit/sf_poly/chebyshev.html @@ -1,9 +1,9 @@ - + Chebyshev Polynomials - + @@ -248,7 +248,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/sf_poly/gegenbauer.html b/doc/html/math_toolkit/sf_poly/gegenbauer.html index 8768c4e3f2..a8b618de9a 100644 --- a/doc/html/math_toolkit/sf_poly/gegenbauer.html +++ b/doc/html/math_toolkit/sf_poly/gegenbauer.html @@ -1,9 +1,9 @@ - + Gegenbauer Polynomials - + @@ -36,13 +36,13 @@
    namespace boost{ namespace math{
     
     template<typename Real>
    -Real gegenbauer(unsigned n, Real lambda, Real x);
    +BOOST_MATH_GPU_ENABLED Real gegenbauer(unsigned n, Real lambda, Real x);
     
     template<typename Real>
    -Real gegenbauer_prime(unsigned n, Real lambda, Real x);
    +BOOST_MATH_GPU_ENABLED Real gegenbauer_prime(unsigned n, Real lambda, Real x);
     
     template<typename Real>
    -Real gegenbauer_derivative(unsigned n, Real lambda, Real x, unsigned k);
    +BOOST_MATH_GPU_ENABLED Real gegenbauer_derivative(unsigned n, Real lambda, Real x, unsigned k);
     
     }} // namespaces
     
    @@ -154,7 +154,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/sf_poly/hermite.html b/doc/html/math_toolkit/sf_poly/hermite.html index 92693bbc4c..6e3adf7739 100644 --- a/doc/html/math_toolkit/sf_poly/hermite.html +++ b/doc/html/math_toolkit/sf_poly/hermite.html @@ -1,9 +1,9 @@ - + Hermite Polynomials - + @@ -36,13 +36,13 @@

    namespace boost{ namespace math{
     
     template <class T>
    -calculated-result-type hermite(unsigned n, T x);
    +BOOST_MATH_GPU_ENABLED calculated-result-type hermite(unsigned n, T x);
     
     template <class T, class Policy>
    -calculated-result-type hermite(unsigned n, T x, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type hermite(unsigned n, T x, const Policy&);
     
     template <class T1, class T2, class T3>
    -calculated-result-type hermite_next(unsigned n, T1 x, T2 Hn, T3 Hnm1);
    +BOOST_MATH_GPU_ENABLED calculated-result-type hermite_next(unsigned n, T1 x, T2 Hn, T3 Hnm1);
     
     }} // namespaces
     
    @@ -57,10 +57,10 @@
    type.

    template <class T>
    -calculated-result-type hermite(unsigned n, T x);
    +BOOST_MATH_GPU_ENABLED calculated-result-type hermite(unsigned n, T x);
     
     template <class T, class Policy>
    -calculated-result-type hermite(unsigned n, T x, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type hermite(unsigned n, T x, const Policy&);
     

    Returns the value of the Hermite Polynomial of order n @@ -84,7 +84,7 @@

    template <class T1, class T2, class T3>
    -calculated-result-type hermite_next(unsigned n, T1 x, T2 Hn, T3 Hnm1);
    +BOOST_MATH_GPU_ENABLED calculated-result-type hermite_next(unsigned n, T1 x, T2 Hn, T3 Hnm1);
     

    Implements the three term recurrence relation for the Hermite polynomials, @@ -232,7 +232,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/sf_poly/jacobi.html b/doc/html/math_toolkit/sf_poly/jacobi.html index 4cf07a1efa..9c3fec4c26 100644 --- a/doc/html/math_toolkit/sf_poly/jacobi.html +++ b/doc/html/math_toolkit/sf_poly/jacobi.html @@ -1,13 +1,13 @@ - + Jacobi Polynomials - + - + @@ -21,7 +21,7 @@
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -96,14 +96,14 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/math_toolkit/sf_poly/laguerre.html b/doc/html/math_toolkit/sf_poly/laguerre.html index ce282a103e..d4ed38b3c3 100644 --- a/doc/html/math_toolkit/sf_poly/laguerre.html +++ b/doc/html/math_toolkit/sf_poly/laguerre.html @@ -1,9 +1,9 @@ - + Laguerre (and Associated) Polynomials - + @@ -375,7 +375,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/sf_poly/legendre.html b/doc/html/math_toolkit/sf_poly/legendre.html index 65888f33e6..34199b1f85 100644 --- a/doc/html/math_toolkit/sf_poly/legendre.html +++ b/doc/html/math_toolkit/sf_poly/legendre.html @@ -1,9 +1,9 @@ - + Legendre (and Associated) Polynomials - + @@ -642,7 +642,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/sf_poly/legendre_stieltjes.html b/doc/html/math_toolkit/sf_poly/legendre_stieltjes.html index a8643d1a3e..31be823b2b 100644 --- a/doc/html/math_toolkit/sf_poly/legendre_stieltjes.html +++ b/doc/html/math_toolkit/sf_poly/legendre_stieltjes.html @@ -1,9 +1,9 @@ - + Legendre-Stieltjes Polynomials - + @@ -129,7 +129,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/sf_poly/sph_harm.html b/doc/html/math_toolkit/sf_poly/sph_harm.html index a8c6b3e68f..41aa452fa8 100644 --- a/doc/html/math_toolkit/sf_poly/sph_harm.html +++ b/doc/html/math_toolkit/sf_poly/sph_harm.html @@ -1,9 +1,9 @@ - + Spherical Harmonics - + @@ -323,7 +323,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/sign_functions.html b/doc/html/math_toolkit/sign_functions.html index d44a7585da..38d368887a 100644 --- a/doc/html/math_toolkit/sign_functions.html +++ b/doc/html/math_toolkit/sign_functions.html @@ -1,9 +1,9 @@ - + Sign Manipulation Functions - + @@ -237,7 +237,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/signal_statistics.html b/doc/html/math_toolkit/signal_statistics.html index 4fa6b987ba..ae6444e353 100644 --- a/doc/html/math_toolkit/signal_statistics.html +++ b/doc/html/math_toolkit/signal_statistics.html @@ -1,9 +1,9 @@ - + Signal Statistics - + @@ -321,7 +321,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/sinc.html b/doc/html/math_toolkit/sinc.html index 1e0e1bb0fb..8a1bf8a24b 100644 --- a/doc/html/math_toolkit/sinc.html +++ b/doc/html/math_toolkit/sinc.html @@ -1,9 +1,9 @@ - + Sinus Cardinal and Hyperbolic Sinus Cardinal Functions - + @@ -39,7 +39,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/sinc/sinc_overview.html b/doc/html/math_toolkit/sinc/sinc_overview.html index ab6d4fdd00..df63adb063 100644 --- a/doc/html/math_toolkit/sinc/sinc_overview.html +++ b/doc/html/math_toolkit/sinc/sinc_overview.html @@ -1,9 +1,9 @@ - + Sinus Cardinal and Hyperbolic Sinus Cardinal Functions Overview - + @@ -71,7 +71,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/sinc/sinc_pi.html b/doc/html/math_toolkit/sinc/sinc_pi.html index 4d8981998b..88d07b3e31 100644 --- a/doc/html/math_toolkit/sinc/sinc_pi.html +++ b/doc/html/math_toolkit/sinc/sinc_pi.html @@ -1,9 +1,9 @@ - + sinc_pi - + @@ -30,16 +30,16 @@
    #include <boost/math/special_functions/sinc.hpp>
     
    template<class T>
    -calculated-result-type sinc_pi(const T x);
    +BOOST_MATH_GPU_ENABLED calculated-result-type sinc_pi(const T x);
     
     template<class T, class Policy>
    -calculated-result-type sinc_pi(const T x, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type sinc_pi(const T x, const Policy&);
     
     template<class T, template<typename> class U>
    -U<T> sinc_pi(const U<T> x);
    +BOOST_MATH_GPU_ENABLED U<T> sinc_pi(const U<T> x);
     
     template<class T, template<typename> class U, class Policy>
    -U<T> sinc_pi(const U<T> x, const Policy&);
    +BOOST_MATH_GPU_ENABLED U<T> sinc_pi(const U<T> x, const Policy&);
     

    Computes the Sinus Cardinal @@ -67,7 +67,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/sinc/sinhc_pi.html b/doc/html/math_toolkit/sinc/sinhc_pi.html index 41e0e34453..92dede593e 100644 --- a/doc/html/math_toolkit/sinc/sinhc_pi.html +++ b/doc/html/math_toolkit/sinc/sinhc_pi.html @@ -1,9 +1,9 @@ - + sinhc_pi - + @@ -30,10 +30,10 @@
    #include <boost/math/special_functions/sinhc.hpp>
     
    template<class T>
    -calculated-result-type sinhc_pi(const T x);
    +BOOST_MATH_GPU_ENABLED calculated-result-type sinhc_pi(const T x);
     
     template<class T, class Policy>
    -calculated-result-type sinhc_pi(const T x, const Policy&);
    +BOOST_MATH_GPU_ENABLED calculated-result-type sinhc_pi(const T x, const Policy&);
     
     template<typename T, template<typename> class U>
     U<T> sinhc_pi(const U<T> x);
    @@ -72,7 +72,7 @@
           Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno
           Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde,
           Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle
    -      Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/spec.html b/doc/html/math_toolkit/spec.html index 54de65acb0..061b9f0cb9 100644 --- a/doc/html/math_toolkit/spec.html +++ b/doc/html/math_toolkit/spec.html @@ -1,9 +1,9 @@ - + Quaternion Specializations - + @@ -178,7 +178,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/special_tut.html b/doc/html/math_toolkit/special_tut.html index 2e2e958df2..d345e172bb 100644 --- a/doc/html/math_toolkit/special_tut.html +++ b/doc/html/math_toolkit/special_tut.html @@ -1,9 +1,9 @@ - + Tutorial: How to Write a New Special Function - + @@ -37,7 +37,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/special_tut/special_tut_impl.html b/doc/html/math_toolkit/special_tut/special_tut_impl.html index 21c5c37a3e..abb1f35f41 100644 --- a/doc/html/math_toolkit/special_tut/special_tut_impl.html +++ b/doc/html/math_toolkit/special_tut/special_tut_impl.html @@ -1,9 +1,9 @@ - + Implementation - + @@ -376,7 +376,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/special_tut/special_tut_test.html b/doc/html/math_toolkit/special_tut/special_tut_test.html index b88057e3bd..74844e00ee 100644 --- a/doc/html/math_toolkit/special_tut/special_tut_test.html +++ b/doc/html/math_toolkit/special_tut/special_tut_test.html @@ -1,9 +1,9 @@ - + Testing - + @@ -354,7 +354,7 @@
    std::cout << "<note>The long double tests have been disabled on this platform " "either because the long double overloads of the usual math functions are " "not available at all, or because they are too inaccurate for these tests " - "to pass.</note>" << std::cout; + "to pass.</note>" << std::endl; #endif }
    @@ -511,7 +511,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/specified_typedefs.html b/doc/html/math_toolkit/specified_typedefs.html index 01fb88dfd7..6009f99ce5 100644 --- a/doc/html/math_toolkit/specified_typedefs.html +++ b/doc/html/math_toolkit/specified_typedefs.html @@ -1,9 +1,9 @@ - + Overview - + @@ -94,7 +94,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/standalone.html b/doc/html/math_toolkit/standalone.html index 43137148e8..6b964fbc53 100644 --- a/doc/html/math_toolkit/standalone.html +++ b/doc/html/math_toolkit/standalone.html @@ -1,9 +1,9 @@ - + Standalone Usage - + @@ -72,7 +72,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/stat_tut.html b/doc/html/math_toolkit/stat_tut.html index 3dfa96eab6..8c82805373 100644 --- a/doc/html/math_toolkit/stat_tut.html +++ b/doc/html/math_toolkit/stat_tut.html @@ -1,9 +1,9 @@ - + Statistical Distributions Tutorial - + @@ -142,7 +142,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/stat_tut/dist_params.html b/doc/html/math_toolkit/stat_tut/dist_params.html index c2b57e7b9c..7a8019d2ab 100644 --- a/doc/html/math_toolkit/stat_tut/dist_params.html +++ b/doc/html/math_toolkit/stat_tut/dist_params.html @@ -1,9 +1,9 @@ - + Discrete Probability Distributions - + @@ -86,7 +86,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/stat_tut/overview.html b/doc/html/math_toolkit/stat_tut/overview.html index bbde10f4a8..da8f8b014a 100644 --- a/doc/html/math_toolkit/stat_tut/overview.html +++ b/doc/html/math_toolkit/stat_tut/overview.html @@ -1,9 +1,9 @@ - + Overview of Statistical Distributions - + @@ -46,7 +46,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/stat_tut/overview/complements.html b/doc/html/math_toolkit/stat_tut/overview/complements.html index 5f1f3fd6e4..577c1c221e 100644 --- a/doc/html/math_toolkit/stat_tut/overview/complements.html +++ b/doc/html/math_toolkit/stat_tut/overview/complements.html @@ -1,9 +1,9 @@ - + Complements are supported too - and when to use them - + @@ -186,7 +186,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/stat_tut/overview/generic.html b/doc/html/math_toolkit/stat_tut/overview/generic.html index 8fd3c26d3e..e8a1faf9dc 100644 --- a/doc/html/math_toolkit/stat_tut/overview/generic.html +++ b/doc/html/math_toolkit/stat_tut/overview/generic.html @@ -1,9 +1,9 @@ - + Generic operations common to all distributions are non-member functions - + @@ -46,6 +46,16 @@
    quantile(my_dist, p);  // Returns the value of the random variable x
                            // such that cdf(my_dist, x) == p.
     
    +

    + As are the logcdf (Natural log of the Cumulative Distribution Function): +

    +
    logcdf(my_dist, x); // Returns logcdf at at point x of distribution my_dist.
    +
    +

    + And the logpdf (Natural log of the Probability Density Function): +

    +
    logpdf(my_dist, x); // Returns logpdf at point x of distribution my_dist.
    +

    If you're wondering why these aren't member functions, it's to make the library more easily extensible: if you want to add additional generic operations @@ -53,6 +63,76 @@ do is add the appropriate non-member functions, overloaded for each implemented distribution type.

    +

    + The logcdf and logpdf functions are minimally calculated with log(cdf(my_dist, + x)), and log(pdf(my_dist, x)) respectively. The following distributions + have specialized implementations of the logcdf: +

    +
      +
    • + Exponential +
    • +
    • + Extreme Value +
    • +
    • + Geometric +
    • +
    • + Laplace +
    • +
    • + Logistic +
    • +
    • + Pareto +
    • +
    • + Rayleigh +
    • +
    • + Weibull +
    • +
    +

    + And the following distributions have specialized implementations of logpdf: +

    +
      +
    • + Exponential +
    • +
    • + Extreme Value +
    • +
    • + Gamma +
    • +
    • + Inverse Gamma +
    • +
    • + Inverse Gaussian +
    • +
    • + Laplace +
    • +
    • + Normal +
    • +
    • + Poisson +
    • +
    • + Rayleigh +
    • +
    • + Weibull +
    • +
    +

    + These above listed specialized implementations allow a higher degree of + precision than can be obtained through the naive generic method. +

    @@ -243,7 +323,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/stat_tut/overview/headers.html b/doc/html/math_toolkit/stat_tut/overview/headers.html index 8bd7edd3b0..205685b8b3 100644 --- a/doc/html/math_toolkit/stat_tut/overview/headers.html +++ b/doc/html/math_toolkit/stat_tut/overview/headers.html @@ -1,9 +1,9 @@ - +Headers and Namespaces - + @@ -65,7 +65,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/stat_tut/overview/objects.html b/doc/html/math_toolkit/stat_tut/overview/objects.html index b6394bc1bf..88588afcbc 100644 --- a/doc/html/math_toolkit/stat_tut/overview/objects.html +++ b/doc/html/math_toolkit/stat_tut/overview/objects.html @@ -1,9 +1,9 @@ - +Distributions are Objects - + @@ -121,7 +121,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/stat_tut/overview/parameters.html b/doc/html/math_toolkit/stat_tut/overview/parameters.html index 3776ae1e4a..fdaaca4a15 100644 --- a/doc/html/math_toolkit/stat_tut/overview/parameters.html +++ b/doc/html/math_toolkit/stat_tut/overview/parameters.html @@ -1,9 +1,9 @@ - +Parameters can be calculated - + @@ -59,7 +59,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/stat_tut/overview/summary.html b/doc/html/math_toolkit/stat_tut/overview/summary.html index 9acc5d898f..c39a766414 100644 --- a/doc/html/math_toolkit/stat_tut/overview/summary.html +++ b/doc/html/math_toolkit/stat_tut/overview/summary.html @@ -1,9 +1,9 @@ - +Summary - + @@ -61,7 +61,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/stat_tut/variates.html b/doc/html/math_toolkit/stat_tut/variates.html index e53c35131d..3cab42af96 100644 --- a/doc/html/math_toolkit/stat_tut/variates.html +++ b/doc/html/math_toolkit/stat_tut/variates.html @@ -1,9 +1,9 @@ - +Random Variates and Distribution Parameters - + @@ -62,7 +62,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/stat_tut/weg.html b/doc/html/math_toolkit/stat_tut/weg.html index ae65e05218..a4a4419f23 100644 --- a/doc/html/math_toolkit/stat_tut/weg.html +++ b/doc/html/math_toolkit/stat_tut/weg.html @@ -1,9 +1,9 @@ - +Worked Examples - + @@ -115,7 +115,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/stat_tut/weg/binom_eg.html b/doc/html/math_toolkit/stat_tut/weg/binom_eg.html index 10742eb644..b85a292e21 100644 --- a/doc/html/math_toolkit/stat_tut/weg/binom_eg.html +++ b/doc/html/math_toolkit/stat_tut/weg/binom_eg.html @@ -1,9 +1,9 @@ - +Binomial Distribution Examples - + @@ -47,7 +47,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/stat_tut/weg/binom_eg/binom_conf.html b/doc/html/math_toolkit/stat_tut/weg/binom_eg/binom_conf.html index bca6b5a781..e46a69c384 100644 --- a/doc/html/math_toolkit/stat_tut/weg/binom_eg/binom_conf.html +++ b/doc/html/math_toolkit/stat_tut/weg/binom_eg/binom_conf.html @@ -1,9 +1,9 @@ - +Calculating Confidence Limits on the Frequency of Occurrence for a Binomial Distribution - + @@ -227,7 +227,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/stat_tut/weg/binom_eg/binom_size_eg.html b/doc/html/math_toolkit/stat_tut/weg/binom_eg/binom_size_eg.html index 849d02f773..4de329bea1 100644 --- a/doc/html/math_toolkit/stat_tut/weg/binom_eg/binom_size_eg.html +++ b/doc/html/math_toolkit/stat_tut/weg/binom_eg/binom_size_eg.html @@ -1,9 +1,9 @@ - +Estimating Sample Sizes for a Binomial Distribution. - + @@ -146,7 +146,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/stat_tut/weg/binom_eg/binomial_coinflip_example.html b/doc/html/math_toolkit/stat_tut/weg/binom_eg/binomial_coinflip_example.html index 011b9763a0..0941643999 100644 --- a/doc/html/math_toolkit/stat_tut/weg/binom_eg/binomial_coinflip_example.html +++ b/doc/html/math_toolkit/stat_tut/weg/binom_eg/binomial_coinflip_example.html @@ -1,9 +1,9 @@ - +Binomial Coin-Flipping Example - + @@ -266,7 +266,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/stat_tut/weg/binom_eg/binomial_quiz_example.html b/doc/html/math_toolkit/stat_tut/weg/binom_eg/binomial_quiz_example.html index 55810e0379..cb50fd3787 100644 --- a/doc/html/math_toolkit/stat_tut/weg/binom_eg/binomial_quiz_example.html +++ b/doc/html/math_toolkit/stat_tut/weg/binom_eg/binomial_quiz_example.html @@ -1,9 +1,9 @@ - +Binomial Quiz Example - + @@ -444,7 +444,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/stat_tut/weg/c_sharp.html b/doc/html/math_toolkit/stat_tut/weg/c_sharp.html index e76d0706c1..8eb810aaf1 100644 --- a/doc/html/math_toolkit/stat_tut/weg/c_sharp.html +++ b/doc/html/math_toolkit/stat_tut/weg/c_sharp.html @@ -1,9 +1,9 @@ - + Using the Distributions from Within C# - + @@ -44,7 +44,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/stat_tut/weg/cs_eg.html b/doc/html/math_toolkit/stat_tut/weg/cs_eg.html index ca94a0da1a..560077f14e 100644 --- a/doc/html/math_toolkit/stat_tut/weg/cs_eg.html +++ b/doc/html/math_toolkit/stat_tut/weg/cs_eg.html @@ -1,9 +1,9 @@ - + Chi Squared Distribution Examples - + @@ -41,7 +41,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/stat_tut/weg/cs_eg/chi_sq_intervals.html b/doc/html/math_toolkit/stat_tut/weg/cs_eg/chi_sq_intervals.html index 6da1e2c5f2..30cef2efcc 100644 --- a/doc/html/math_toolkit/stat_tut/weg/cs_eg/chi_sq_intervals.html +++ b/doc/html/math_toolkit/stat_tut/weg/cs_eg/chi_sq_intervals.html @@ -1,9 +1,9 @@ - + Confidence Intervals on the Standard Deviation - + @@ -236,7 +236,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/stat_tut/weg/cs_eg/chi_sq_size.html b/doc/html/math_toolkit/stat_tut/weg/cs_eg/chi_sq_size.html index 866f3d33cb..fdf6d09cab 100644 --- a/doc/html/math_toolkit/stat_tut/weg/cs_eg/chi_sq_size.html +++ b/doc/html/math_toolkit/stat_tut/weg/cs_eg/chi_sq_size.html @@ -1,9 +1,9 @@ - + Estimating the Required Sample Sizes for a Chi-Square Test for the Standard Deviation - + @@ -168,7 +168,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/stat_tut/weg/cs_eg/chi_sq_test.html b/doc/html/math_toolkit/stat_tut/weg/cs_eg/chi_sq_test.html index 576368e838..b4b780a010 100644 --- a/doc/html/math_toolkit/stat_tut/weg/cs_eg/chi_sq_test.html +++ b/doc/html/math_toolkit/stat_tut/weg/cs_eg/chi_sq_test.html @@ -1,9 +1,9 @@ - + Chi-Square Test for the Standard Deviation - + @@ -283,7 +283,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/stat_tut/weg/dist_construct_eg.html b/doc/html/math_toolkit/stat_tut/weg/dist_construct_eg.html index b576708e26..520e2cefcf 100644 --- a/doc/html/math_toolkit/stat_tut/weg/dist_construct_eg.html +++ b/doc/html/math_toolkit/stat_tut/weg/dist_construct_eg.html @@ -1,9 +1,9 @@ - + Distribution Construction Examples - + @@ -334,7 +334,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/stat_tut/weg/error_eg.html b/doc/html/math_toolkit/stat_tut/weg/error_eg.html index 5fc9304fc7..10e39bcf29 100644 --- a/doc/html/math_toolkit/stat_tut/weg/error_eg.html +++ b/doc/html/math_toolkit/stat_tut/weg/error_eg.html @@ -1,9 +1,9 @@ - + Error Handling Example - + @@ -192,7 +192,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/stat_tut/weg/f_eg.html b/doc/html/math_toolkit/stat_tut/weg/f_eg.html index f60a138202..9bd848ecb0 100644 --- a/doc/html/math_toolkit/stat_tut/weg/f_eg.html +++ b/doc/html/math_toolkit/stat_tut/weg/f_eg.html @@ -1,9 +1,9 @@ - + F Distribution Examples - + @@ -315,7 +315,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/stat_tut/weg/find_eg.html b/doc/html/math_toolkit/stat_tut/weg/find_eg.html index 7390f77dd6..f06d0e5e9b 100644 --- a/doc/html/math_toolkit/stat_tut/weg/find_eg.html +++ b/doc/html/math_toolkit/stat_tut/weg/find_eg.html @@ -1,9 +1,9 @@ - + Find Location and Scale Examples - + @@ -41,7 +41,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/stat_tut/weg/find_eg/find_location_eg.html b/doc/html/math_toolkit/stat_tut/weg/find_eg/find_location_eg.html index bd4fcba8e1..8f0c53c349 100644 --- a/doc/html/math_toolkit/stat_tut/weg/find_eg/find_location_eg.html +++ b/doc/html/math_toolkit/stat_tut/weg/find_eg/find_location_eg.html @@ -1,9 +1,9 @@ - + Find Location (Mean) Example - + @@ -176,7 +176,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/stat_tut/weg/find_eg/find_mean_and_sd_eg.html b/doc/html/math_toolkit/stat_tut/weg/find_eg/find_mean_and_sd_eg.html index abc3db975b..c0623742ef 100644 --- a/doc/html/math_toolkit/stat_tut/weg/find_eg/find_mean_and_sd_eg.html +++ b/doc/html/math_toolkit/stat_tut/weg/find_eg/find_mean_and_sd_eg.html @@ -1,9 +1,9 @@ - + Find mean and standard deviation example - + @@ -441,7 +441,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/stat_tut/weg/find_eg/find_scale_eg.html b/doc/html/math_toolkit/stat_tut/weg/find_eg/find_scale_eg.html index 50a0fd162a..dddc3c391f 100644 --- a/doc/html/math_toolkit/stat_tut/weg/find_eg/find_scale_eg.html +++ b/doc/html/math_toolkit/stat_tut/weg/find_eg/find_scale_eg.html @@ -1,9 +1,9 @@ - + Find Scale (Standard Deviation) Example - + @@ -195,7 +195,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/stat_tut/weg/geometric_eg.html b/doc/html/math_toolkit/stat_tut/weg/geometric_eg.html index 500f6bf70a..1a7a75643a 100644 --- a/doc/html/math_toolkit/stat_tut/weg/geometric_eg.html +++ b/doc/html/math_toolkit/stat_tut/weg/geometric_eg.html @@ -1,9 +1,9 @@ - + Geometric Distribution Examples - + @@ -408,7 +408,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/stat_tut/weg/inverse_chi_squared_eg.html b/doc/html/math_toolkit/stat_tut/weg/inverse_chi_squared_eg.html index 788137d6dc..5195554090 100644 --- a/doc/html/math_toolkit/stat_tut/weg/inverse_chi_squared_eg.html +++ b/doc/html/math_toolkit/stat_tut/weg/inverse_chi_squared_eg.html @@ -1,9 +1,9 @@ - + Inverse Chi-Squared Distribution Bayes Example - + @@ -347,7 +347,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/stat_tut/weg/nag_library.html b/doc/html/math_toolkit/stat_tut/weg/nag_library.html index 52f9b177cd..87855e6073 100644 --- a/doc/html/math_toolkit/stat_tut/weg/nag_library.html +++ b/doc/html/math_toolkit/stat_tut/weg/nag_library.html @@ -1,9 +1,9 @@ - + Comparison with C, R, FORTRAN-style Free Functions - + @@ -102,7 +102,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/stat_tut/weg/nccs_eg.html b/doc/html/math_toolkit/stat_tut/weg/nccs_eg.html index bfeafc5a50..3adf085c55 100644 --- a/doc/html/math_toolkit/stat_tut/weg/nccs_eg.html +++ b/doc/html/math_toolkit/stat_tut/weg/nccs_eg.html @@ -1,9 +1,9 @@ - + Non Central Chi Squared Example - + @@ -39,7 +39,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/stat_tut/weg/nccs_eg/nccs_power_eg.html b/doc/html/math_toolkit/stat_tut/weg/nccs_eg/nccs_power_eg.html index 95f5fc6a76..820063e074 100644 --- a/doc/html/math_toolkit/stat_tut/weg/nccs_eg/nccs_power_eg.html +++ b/doc/html/math_toolkit/stat_tut/weg/nccs_eg/nccs_power_eg.html @@ -1,9 +1,9 @@ - + Tables of the power function of the chi2 test. - + @@ -1273,7 +1273,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/stat_tut/weg/neg_binom_eg.html b/doc/html/math_toolkit/stat_tut/weg/neg_binom_eg.html index 99d58c7ec5..ca2eb57745 100644 --- a/doc/html/math_toolkit/stat_tut/weg/neg_binom_eg.html +++ b/doc/html/math_toolkit/stat_tut/weg/neg_binom_eg.html @@ -1,9 +1,9 @@ - + Negative Binomial Distribution Examples - + @@ -48,7 +48,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/stat_tut/weg/neg_binom_eg/neg_binom_conf.html b/doc/html/math_toolkit/stat_tut/weg/neg_binom_eg/neg_binom_conf.html index 5af7b44af9..2ea63d8d8d 100644 --- a/doc/html/math_toolkit/stat_tut/weg/neg_binom_eg/neg_binom_conf.html +++ b/doc/html/math_toolkit/stat_tut/weg/neg_binom_eg/neg_binom_conf.html @@ -1,9 +1,9 @@ - + Calculating Confidence Limits on the Frequency of Occurrence for the Negative Binomial Distribution - + @@ -207,7 +207,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/stat_tut/weg/neg_binom_eg/neg_binom_size_eg.html b/doc/html/math_toolkit/stat_tut/weg/neg_binom_eg/neg_binom_size_eg.html index d424dca31d..df41deef96 100644 --- a/doc/html/math_toolkit/stat_tut/weg/neg_binom_eg/neg_binom_size_eg.html +++ b/doc/html/math_toolkit/stat_tut/weg/neg_binom_eg/neg_binom_size_eg.html @@ -1,9 +1,9 @@ - + Estimating Sample Sizes for the Negative Binomial. - + @@ -193,7 +193,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/stat_tut/weg/neg_binom_eg/negative_binomial_example1.html b/doc/html/math_toolkit/stat_tut/weg/neg_binom_eg/negative_binomial_example1.html index 5f9021533f..a67b42f898 100644 --- a/doc/html/math_toolkit/stat_tut/weg/neg_binom_eg/negative_binomial_example1.html +++ b/doc/html/math_toolkit/stat_tut/weg/neg_binom_eg/negative_binomial_example1.html @@ -1,9 +1,9 @@ - + Negative Binomial Sales Quota Example. - + @@ -481,7 +481,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/stat_tut/weg/neg_binom_eg/negative_binomial_example2.html b/doc/html/math_toolkit/stat_tut/weg/neg_binom_eg/negative_binomial_example2.html index 176f14a0cf..8ada4b306d 100644 --- a/doc/html/math_toolkit/stat_tut/weg/neg_binom_eg/negative_binomial_example2.html +++ b/doc/html/math_toolkit/stat_tut/weg/neg_binom_eg/negative_binomial_example2.html @@ -1,9 +1,9 @@ - + Negative Binomial Table Printing Example. - + @@ -122,7 +122,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/stat_tut/weg/normal_example.html b/doc/html/math_toolkit/stat_tut/weg/normal_example.html index 188a7a2977..c666e78c6d 100644 --- a/doc/html/math_toolkit/stat_tut/weg/normal_example.html +++ b/doc/html/math_toolkit/stat_tut/weg/normal_example.html @@ -1,9 +1,9 @@ - + Normal Distribution Examples - + @@ -39,7 +39,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/stat_tut/weg/normal_example/normal_misc.html b/doc/html/math_toolkit/stat_tut/weg/normal_example/normal_misc.html index 539ae54016..f1586ba7f1 100644 --- a/doc/html/math_toolkit/stat_tut/weg/normal_example/normal_misc.html +++ b/doc/html/math_toolkit/stat_tut/weg/normal_example/normal_misc.html @@ -1,9 +1,9 @@ - + Some Miscellaneous Examples of the Normal (Gaussian) Distribution - + @@ -504,7 +504,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/stat_tut/weg/st_eg.html b/doc/html/math_toolkit/stat_tut/weg/st_eg.html index 253fa04287..5868933c31 100644 --- a/doc/html/math_toolkit/stat_tut/weg/st_eg.html +++ b/doc/html/math_toolkit/stat_tut/weg/st_eg.html @@ -1,9 +1,9 @@ - + Student's t Distribution Examples - + @@ -46,7 +46,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/stat_tut/weg/st_eg/paired_st.html b/doc/html/math_toolkit/stat_tut/weg/st_eg/paired_st.html index 545837ce2c..befa26277b 100644 --- a/doc/html/math_toolkit/stat_tut/weg/st_eg/paired_st.html +++ b/doc/html/math_toolkit/stat_tut/weg/st_eg/paired_st.html @@ -1,9 +1,9 @@ - + Comparing two paired samples with the Student's t distribution - + @@ -51,7 +51,7 @@ that there is no change.
  • - Test + Test whether the true mean is zero. If the result is consistent with a true mean of zero, then we are unable to reject the null-hypothesis that there is no change. @@ -67,7 +67,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/stat_tut/weg/st_eg/tut_mean_intervals.html b/doc/html/math_toolkit/stat_tut/weg/st_eg/tut_mean_intervals.html index 53a6bf8f02..f44f04fcf1 100644 --- a/doc/html/math_toolkit/stat_tut/weg/st_eg/tut_mean_intervals.html +++ b/doc/html/math_toolkit/stat_tut/weg/st_eg/tut_mean_intervals.html @@ -1,13 +1,13 @@ - + Calculating confidence intervals on the mean with the Students-t distribution - + - + @@ -254,7 +254,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/stat_tut/weg/st_eg/tut_mean_size.html b/doc/html/math_toolkit/stat_tut/weg/st_eg/tut_mean_size.html index b517d9c5a0..692d5f50e5 100644 --- a/doc/html/math_toolkit/stat_tut/weg/st_eg/tut_mean_size.html +++ b/doc/html/math_toolkit/stat_tut/weg/st_eg/tut_mean_size.html @@ -1,12 +1,12 @@ - + Estimating how large a sample size would have to become in order to give a significant Students-t test result with a single sample test - + - + @@ -165,7 +165,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/stat_tut/weg/st_eg/tut_mean_test.html b/doc/html/math_toolkit/stat_tut/weg/st_eg/tut_mean_test.html index 151789b574..112fb4b1ba 100644 --- a/doc/html/math_toolkit/stat_tut/weg/st_eg/tut_mean_test.html +++ b/doc/html/math_toolkit/stat_tut/weg/st_eg/tut_mean_test.html @@ -1,9 +1,9 @@ - + Testing a sample mean for difference from a "true" mean - + @@ -25,7 +25,7 @@

    @@ -320,7 +320,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/stat_tut/weg/st_eg/two_sample_students_t.html b/doc/html/math_toolkit/stat_tut/weg/st_eg/two_sample_students_t.html index 3b79fbcd4a..1fa0c17f80 100644 --- a/doc/html/math_toolkit/stat_tut/weg/st_eg/two_sample_students_t.html +++ b/doc/html/math_toolkit/stat_tut/weg/st_eg/two_sample_students_t.html @@ -1,9 +1,9 @@ - + Comparing the means of two samples with the Students-t test - + @@ -348,7 +348,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/t_test.html b/doc/html/math_toolkit/t_test.html index dd984073ed..2cc2df91d1 100644 --- a/doc/html/math_toolkit/t_test.html +++ b/doc/html/math_toolkit/t_test.html @@ -1,9 +1,9 @@ - + t-tests - + @@ -259,7 +259,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/threads.html b/doc/html/math_toolkit/threads.html index 5ef7cfbd45..2fec37ebbe 100644 --- a/doc/html/math_toolkit/threads.html +++ b/doc/html/math_toolkit/threads.html @@ -1,9 +1,9 @@ - + Thread Safety - + @@ -38,7 +38,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/tr1_ref.html b/doc/html/math_toolkit/tr1_ref.html index 0ece2e9cdf..a42d4987dc 100644 --- a/doc/html/math_toolkit/tr1_ref.html +++ b/doc/html/math_toolkit/tr1_ref.html @@ -1,11 +1,11 @@ - + TR1 C Functions Quick Reference - + - + @@ -545,7 +545,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/tradoffs.html b/doc/html/math_toolkit/tradoffs.html index ef923c3d93..1cf66a31da 100644 --- a/doc/html/math_toolkit/tradoffs.html +++ b/doc/html/math_toolkit/tradoffs.html @@ -1,9 +1,9 @@ - + Trading Accuracy for Performance - + @@ -2554,7 +2554,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/trans.html b/doc/html/math_toolkit/trans.html index fa24f731af..73f44dbd70 100644 --- a/doc/html/math_toolkit/trans.html +++ b/doc/html/math_toolkit/trans.html @@ -1,9 +1,9 @@ - + Quaternion Transcendentals - + @@ -130,7 +130,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/trapezoidal.html b/doc/html/math_toolkit/trapezoidal.html index d94c49684f..f49eac7f2b 100644 --- a/doc/html/math_toolkit/trapezoidal.html +++ b/doc/html/math_toolkit/trapezoidal.html @@ -1,9 +1,9 @@ - + Trapezoidal Quadrature - + @@ -231,7 +231,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/tuning.html b/doc/html/math_toolkit/tuning.html index 5d76e2bba0..3ebb62263e 100644 --- a/doc/html/math_toolkit/tuning.html +++ b/doc/html/math_toolkit/tuning.html @@ -1,9 +1,9 @@ - + Performance Tuning Macros - + @@ -7914,7 +7914,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/tutorial.html b/doc/html/math_toolkit/tutorial.html index 64dc15bdaa..a443a5a082 100644 --- a/doc/html/math_toolkit/tutorial.html +++ b/doc/html/math_toolkit/tutorial.html @@ -1,9 +1,9 @@ - + Tutorial - + @@ -39,7 +39,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/tutorial/non_templ.html b/doc/html/math_toolkit/tutorial/non_templ.html index aaf075dcb1..55d526629b 100644 --- a/doc/html/math_toolkit/tutorial/non_templ.html +++ b/doc/html/math_toolkit/tutorial/non_templ.html @@ -1,9 +1,9 @@ - + Use in non-template code - + @@ -72,7 +72,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/tutorial/templ.html b/doc/html/math_toolkit/tutorial/templ.html index 53cf4e9296..85381c0c43 100644 --- a/doc/html/math_toolkit/tutorial/templ.html +++ b/doc/html/math_toolkit/tutorial/templ.html @@ -1,9 +1,9 @@ - + Use in template code - + @@ -143,7 +143,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/tutorial/user_def.html b/doc/html/math_toolkit/tutorial/user_def.html index 9d4a4402cc..9f7f06f035 100644 --- a/doc/html/math_toolkit/tutorial/user_def.html +++ b/doc/html/math_toolkit/tutorial/user_def.html @@ -1,9 +1,9 @@ - + Use With User-Defined Types - + @@ -250,6 +250,17 @@

  • [Tip]
    + GPU + Support +
    +

    + All Boost.Math constants are marked with BOOST_MATH_GPU_ENABLED + and can be used on both host and device. Note that when running on device + you are limited to using only float + and double types. +

    +
    + Custom Specializing a constant
    @@ -281,7 +292,7 @@
    }}}} // namespaces
    - + Diagnosing what meta-programmed code is doing
    @@ -322,7 +333,7 @@
    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/ulps_plots.html b/doc/html/math_toolkit/ulps_plots.html index f148160404..3a12a22ada 100644 --- a/doc/html/math_toolkit/ulps_plots.html +++ b/doc/html/math_toolkit/ulps_plots.html @@ -1,9 +1,9 @@ - + ULPs Plots - + @@ -213,7 +213,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/univariate_statistics.html b/doc/html/math_toolkit/univariate_statistics.html index c309f99c7e..06c5738fd7 100644 --- a/doc/html/math_toolkit/univariate_statistics.html +++ b/doc/html/math_toolkit/univariate_statistics.html @@ -1,9 +1,9 @@ - + Univariate Statistics - + @@ -528,7 +528,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/value_op.html b/doc/html/math_toolkit/value_op.html index cf4b6dc283..b587ffa3af 100644 --- a/doc/html/math_toolkit/value_op.html +++ b/doc/html/math_toolkit/value_op.html @@ -1,9 +1,9 @@ - + Quaternion Value Operations - + @@ -95,7 +95,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/vector_barycentric.html b/doc/html/math_toolkit/vector_barycentric.html index 3a7c3de9fd..64963ddc28 100644 --- a/doc/html/math_toolkit/vector_barycentric.html +++ b/doc/html/math_toolkit/vector_barycentric.html @@ -1,9 +1,9 @@ - + Vector-valued Barycentric Rational Interpolation - + @@ -114,7 +114,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/wavelet_transforms.html b/doc/html/math_toolkit/wavelet_transforms.html index 55e83a770a..b8922c9a62 100644 --- a/doc/html/math_toolkit/wavelet_transforms.html +++ b/doc/html/math_toolkit/wavelet_transforms.html @@ -1,9 +1,9 @@ - + Wavelet Transforms - + @@ -95,7 +95,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/whittaker_shannon.html b/doc/html/math_toolkit/whittaker_shannon.html index 242ee4306d..5ee076ac19 100644 --- a/doc/html/math_toolkit/whittaker_shannon.html +++ b/doc/html/math_toolkit/whittaker_shannon.html @@ -1,9 +1,9 @@ - + Whittaker-Shannon interpolation - + @@ -104,7 +104,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/z_test.html b/doc/html/math_toolkit/z_test.html index bbda367fae..1516664806 100644 --- a/doc/html/math_toolkit/z_test.html +++ b/doc/html/math_toolkit/z_test.html @@ -1,9 +1,9 @@ - + z-tests - + @@ -50,12 +50,6 @@

    template<typename Container, typename Real = typename Container::value_type> std::pair<Real, Real> two_sample_z_test(Container const & u, Container const & v); -template<typename ForwardIterator, typename Real = typename std::iterator_traits<ForwardIterator>::value_type> -std::pair<Real, Real> paired_samples_z_test(ForwardIterator begin_1, ForwardIterator end_1, ForwardIterator begin_2, ForwardIterator begin_2); - -template<typename Container, typename Real = typename Container::value_type> -std::pair<Real, Real> paired_samples_z_test(Container const & u, Container const & v); - }}}

    @@ -160,7 +154,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/zetas.html b/doc/html/math_toolkit/zetas.html index f38d0e8cec..d772417e1f 100644 --- a/doc/html/math_toolkit/zetas.html +++ b/doc/html/math_toolkit/zetas.html @@ -1,9 +1,9 @@ - + Zeta Functions - + @@ -33,7 +33,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/math_toolkit/zetas/zeta.html b/doc/html/math_toolkit/zetas/zeta.html index 4a517596c2..ca0fd26718 100644 --- a/doc/html/math_toolkit/zetas/zeta.html +++ b/doc/html/math_toolkit/zetas/zeta.html @@ -1,9 +1,9 @@ - + Riemann Zeta Function - + @@ -392,7 +392,7 @@

    Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/octonions.html b/doc/html/octonions.html index acb41c9d74..8f52090735 100644 --- a/doc/html/octonions.html +++ b/doc/html/octonions.html @@ -1,9 +1,9 @@ - + Chapter 18. Octonions - + @@ -51,7 +51,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/optimization.html b/doc/html/optimization.html index b4ab502bd4..56db636452 100644 --- a/doc/html/optimization.html +++ b/doc/html/optimization.html @@ -1,9 +1,9 @@ - + Chapter 11. Optimization - + @@ -34,6 +34,16 @@
    Random Search
    Evolution Strategy with Covariance Matrix Adaptation
    +
    Gradient Based Optimizers
    +
    +
    Introduction
    +
    Gradient Descent
    +
    Nesterov Accelerated Gradient + Descent
    +
    L-BFGS
    +
    minimize
    +
    Reverse Mode autodiff policies
    +
    @@ -41,7 +51,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/overview.html b/doc/html/overview.html index 2fe65ad1b5..7e7e6439ba 100644 --- a/doc/html/overview.html +++ b/doc/html/overview.html @@ -1,9 +1,9 @@ - + Chapter 1. Overview - + @@ -39,6 +39,7 @@
    Calculation of the Type of the Result
    Error Handling
    +
    Support for GPU programming in Boost.Math
    Compilers
    Configuration Macros
    Policies
    @@ -58,7 +59,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/perf.html b/doc/html/perf.html index 7b6abe893e..6d22b7787a 100644 --- a/doc/html/perf.html +++ b/doc/html/perf.html @@ -1,9 +1,9 @@ - + Chapter 23. Performance - + @@ -48,7 +48,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/policy.html b/doc/html/policy.html index e4ee830b81..7d7fe7821c 100644 --- a/doc/html/policy.html +++ b/doc/html/policy.html @@ -1,9 +1,9 @@ - + Chapter 22. Policies: Controlling Precision, Error Handling etc - + @@ -77,7 +77,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/poly.html b/doc/html/poly.html index 65fb08f74b..fac0cced93 100644 --- a/doc/html/poly.html +++ b/doc/html/poly.html @@ -1,12 +1,12 @@ - + Chapter 12. Polynomials and Rational Functions - + - + @@ -21,7 +21,7 @@
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -40,14 +40,14 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/quadrature.html b/doc/html/quadrature.html index 10a1e895ff..9041b488ae 100644 --- a/doc/html/quadrature.html +++ b/doc/html/quadrature.html @@ -1,9 +1,9 @@ - + Chapter 14. Quadrature and Differentiation - + @@ -46,6 +46,7 @@ Maximum Interval Halvings and Memory Requirements
    Thread Safety
    Caveats
    +
    GPU Usage
    References
    Fourier Integrals
    @@ -53,6 +54,7 @@
    Wavelet Transforms
    Numerical Differentiation
    Automatic Differentiation
    +
    Reverse Mode Automatic Differentiation
    Lanczos Smoothing Derivatives
    @@ -61,7 +63,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/quaternions.html b/doc/html/quaternions.html index c522167816..807213ad4b 100644 --- a/doc/html/quaternions.html +++ b/doc/html/quaternions.html @@ -1,9 +1,9 @@ - + Chapter 17. Quaternions - + @@ -52,7 +52,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/root_finding.html b/doc/html/root_finding.html index b5c76f8fba..76488e2bf2 100644 --- a/doc/html/root_finding.html +++ b/doc/html/root_finding.html @@ -1,9 +1,9 @@ - + Chapter 10. Root Finding & Minimization Algorithms - + @@ -42,7 +42,7 @@
    Implementation
    Root Finding With Derivatives: - Newton-Raphson, Halley & Schröder
    + Newton-Raphson, Halley & Schroeder
    Roots of Cubic Polynomials
    Roots of Quartic Polynomials
    Examples of Root-Finding @@ -89,7 +89,7 @@ algorithm.

    - For root-finding with derivatives + For root-finding with derivatives the methods of Newton-Raphson iteration, Halley, and Schröder are implemented. @@ -121,7 +121,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/special.html b/doc/html/special.html index d4a2388980..543c511377 100644 --- a/doc/html/special.html +++ b/doc/html/special.html @@ -1,9 +1,9 @@ - + Chapter 8. Special Functions - + @@ -92,6 +92,11 @@
    Gegenbauer Polynomials
    Jacobi Polynomials
    +
    Logistic Functions
    +
    +
    logit
    +
    logistic_sigmoid
    +
    Bessel Functions
    Bessel Function Overview
    @@ -245,7 +250,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/standalone_HTML.manifest b/doc/html/standalone_HTML.manifest index 864f3bad9b..57ce0d9d84 100644 --- a/doc/html/standalone_HTML.manifest +++ b/doc/html/standalone_HTML.manifest @@ -9,6 +9,7 @@ math_toolkit/namespaces.html math_toolkit/standalone.html math_toolkit/result_type.html math_toolkit/error_handling.html +math_toolkit/gpu.html math_toolkit/compilers_overview.html math_toolkit/config_macros.html math_toolkit/intro_pol_overview.html @@ -127,15 +128,18 @@ math_toolkit/dist_ref/dists/extreme_dist.html math_toolkit/dist_ref/dists/f_dist.html math_toolkit/dist_ref/dists/gamma_dist.html math_toolkit/dist_ref/dists/geometric_dist.html +math_toolkit/dist_ref/dists/holtsmark_dist.html math_toolkit/dist_ref/dists/hyperexponential_dist.html math_toolkit/dist_ref/dists/hypergeometric_dist.html math_toolkit/dist_ref/dists/inverse_chi_squared_dist.html math_toolkit/dist_ref/dists/inverse_gamma_dist.html math_toolkit/dist_ref/dists/inverse_gaussian_dist.html math_toolkit/dist_ref/dists/kolmogorov_smirnov_dist.html +math_toolkit/dist_ref/dists/landau_dist.html math_toolkit/dist_ref/dists/laplace_dist.html math_toolkit/dist_ref/dists/logistic_dist.html math_toolkit/dist_ref/dists/lognormal_dist.html +math_toolkit/dist_ref/dists/mapairy_dist.html math_toolkit/dist_ref/dists/negative_binomial_dist.html math_toolkit/dist_ref/dists/nc_beta_dist.html math_toolkit/dist_ref/dists/nc_chi_squared_dist.html @@ -145,6 +149,7 @@ math_toolkit/dist_ref/dists/normal_dist.html math_toolkit/dist_ref/dists/pareto.html math_toolkit/dist_ref/dists/poisson_dist.html math_toolkit/dist_ref/dists/rayleigh.html +math_toolkit/dist_ref/dists/saspoint5_dist.html math_toolkit/dist_ref/dists/skew_normal_dist.html math_toolkit/dist_ref/dists/students_t_dist.html math_toolkit/dist_ref/dists/triangular_dist.html @@ -205,6 +210,9 @@ math_toolkit/sf_poly/sph_harm.html math_toolkit/sf_poly/cardinal_b_splines.html math_toolkit/sf_poly/gegenbauer.html math_toolkit/sf_poly/jacobi.html +math_toolkit/logistic.html +math_toolkit/logistic/logit.html +math_toolkit/logistic/logistic_sigmoid.html math_toolkit/bessel.html math_toolkit/bessel/bessel_over.html math_toolkit/bessel/bessel_first.html @@ -322,6 +330,13 @@ math_toolkit/differential_evolution.html math_toolkit/jso.html math_toolkit/random_search.html math_toolkit/cma_es.html +math_toolkit/gd_opt.html +math_toolkit/gd_opt/introduction.html +math_toolkit/gd_opt/gradient_descent.html +math_toolkit/gd_opt/nesterov.html +math_toolkit/gd_opt/lbfgs.html +math_toolkit/gd_opt/minimize.html +math_toolkit/gd_opt/policies.html poly.html math_toolkit/polynomials.html math_toolkit/estrin.html @@ -355,12 +370,14 @@ math_toolkit/double_exponential/de_tol.html math_toolkit/double_exponential/de_levels.html math_toolkit/double_exponential/de_thread.html math_toolkit/double_exponential/de_caveats.html +math_toolkit/double_exponential/gpu_usage.html math_toolkit/double_exponential/de_refes.html math_toolkit/fourier_integrals.html math_toolkit/naive_monte_carlo.html math_toolkit/wavelet_transforms.html math_toolkit/diff.html math_toolkit/autodiff.html +math_toolkit/autodiff0.html math_toolkit/diff0.html filters.html math_toolkit/daubechies_filters.html diff --git a/doc/html/statistics.html b/doc/html/statistics.html index 4587fdcc9e..f341a83212 100644 --- a/doc/html/statistics.html +++ b/doc/html/statistics.html @@ -1,9 +1,9 @@ - + Chapter 6. Statistics - + @@ -46,7 +46,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/status.html b/doc/html/status.html index 7df20600cd..cd1290a292 100644 --- a/doc/html/status.html +++ b/doc/html/status.html @@ -1,9 +1,9 @@ - + Chapter 25. Library Status - + @@ -39,7 +39,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/using_udt.html b/doc/html/using_udt.html index 23f10a352a..b1cbbfc06f 100644 --- a/doc/html/using_udt.html +++ b/doc/html/using_udt.html @@ -1,9 +1,9 @@ - + Chapter 21. Use with User-Defined Floating-Point Types - Boost.Multiprecision and others - + @@ -59,7 +59,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/utils.html b/doc/html/utils.html index 1f860241c2..75406ad495 100644 --- a/doc/html/utils.html +++ b/doc/html/utils.html @@ -1,9 +1,9 @@ - + Chapter 2. Floating Point Utilities - + @@ -75,7 +75,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/html/vector_functionals.html b/doc/html/vector_functionals.html index 877256f5f5..264af3effe 100644 --- a/doc/html/vector_functionals.html +++ b/doc/html/vector_functionals.html @@ -1,9 +1,9 @@ - + Chapter 7. Vector Functionals - Norms - + @@ -35,7 +35,7 @@ Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle - Walker and Xiaogang Zhang

    + Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    diff --git a/doc/math.qbk b/doc/math.qbk index 1f479b2d48..f48c87b88c 100644 --- a/doc/math.qbk +++ b/doc/math.qbk @@ -1,13 +1,13 @@ [book Math Toolkit [quickbook 1.7] - [copyright 2006-2021 Nikhar Agrawal, Anton Bikineev, Matthew Borland, Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle Walker and Xiaogang Zhang] + [copyright 2006-2021 Nikhar Agrawal, Anton Bikineev, Matthew Borland, Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle Walker, Xiaogang Zhang, and Maksym Zhelyeznyakov] [/purpose ISBN 0-9504833-2-X 978-0-9504833-2-0, Classification 519.2-dc22] [license Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at [@http://www.boost.org/LICENSE_1_0.txt]) ] - [authors [Agrawal, Nikhar], [Bikineev, Anton], [Borland, Matthew], [Bristow, Paul A.], [Holin, Hubert], [Guazzone, Marco], [Kormanyos, Christopher], [Lalande, Bruno], [Maddock, John], [Miller, Evan], [Murphy, Jeremy W.], [Pulver, Matthew], [Råde, Johan], [Sobotta, Benjamin], [Sewani, Gautam], [Thompson, Nicholas], [van den Berg, Thijs], [Walker, Daryle], [Zhang, Xiaogang]] + [authors [Agrawal, Nikhar], [Bikineev, Anton], [Borland, Matthew], [Bristow, Paul A.], [Holin, Hubert], [Guazzone, Marco], [Kormanyos, Christopher], [Lalande, Bruno], [Maddock, John], [Miller, Evan], [Murphy, Jeremy W.], [Pulver, Matthew], [Råde, Johan], [Sobotta, Benjamin], [Sewani, Gautam], [Thompson, Nicholas], [van den Berg, Thijs], [Walker, Daryle], [Zhang, Xiaogang], [Zhelyeznyakov, Maksym]] [/last-revision $Date$] [version 4.2.1] ] @@ -739,6 +739,7 @@ and as a CD ISBN 0-9504833-2-X 978-0-9504833-2-0, Classification 519.2-dc22. [include optimization/jso.qbk] [include optimization/random_search.qbk] [include optimization/cma_es.qbk] +[include optimization/gradient_optimizers.qbk] [endmathpart] [/mathpart optimization Optimization] [mathpart poly Polynomials and Rational Functions] diff --git a/doc/optimization/gradient_optimizers.qbk b/doc/optimization/gradient_optimizers.qbk new file mode 100644 index 0000000000..f9c0001bd9 --- /dev/null +++ b/doc/optimization/gradient_optimizers.qbk @@ -0,0 +1,1318 @@ +[/ +Copyright (c) 2025-2026 Maksym Zhelyeznyakov +Use, modification and distribution are subject to the +Boost Software License, Version 1.0. (See accompanying file +LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +] + +[section:gd_opt Gradient Based Optimizers] +[template autodiff_equation[name] ''''''] +[template autodiff_graph[name] ''''''] +[template gbo_graph[name] ''''''] + +[section:introduction Introduction] +Gradient based optimizers are algorithms that use the gradient of a function to iteratively find locally extreme points of functions over a set of parameters. This sections provides a description of a set of gradient optimizers. The optimizers are written with `boost::math::differentiation::reverse_mode::rvar` in mind, however if a way to evaluate the funciton and its gradient is provided, the optimizers should work in exactly the same way. + +Below is a table that summarizes the intended usage patterns of the provided optimizers and policies, and is meant as a practical guide rather than a strict prescription: + +[h1:table-optimizers List of Optimizers] +[table + [[Optimizer] [Order] [Uses Curvature] [Memory Cost] [Intended Problem Class] [When to Use]] + [[gradient descent] [first] [no] [low] [Smooth, well-scaled objectives] [Baseline method; debugging; when behavior transparency matters]] + [[nesterov accelerated gradient] [first] [no] [low] [Ill-conditioned or narrow-valley problems] [When plain gradient descent converges slowly or oscillates]] + [[L-BFGS] [quasi second order] [approximate] [medium] [Smooth, deterministic objectives] [When gradients are reliable and faster convergence is needed]] +] + +[h1:table-optimizer-policies Optimizer Policies] +[heading Initialization Policies] +[table + [[Policy] [Use case] [Responsibilities]] + [[tape_initializer_rvar] [User initialzes all varibles manually] [initializes tape]] + [[random_uniform_initializer_rvar] [Initializes all variables with a random number between a min and max value] [Initializes variables. Initializes tape.]] + [[costant_initializer_rvar] [Initializes all variables with a constant] [Initializes variables. Initializes tape.]] +] + +[heading Evaluation Policies] +[table + [[Policy] [Use case] [Responsibilities]] + [[reverse_mode_function_eval_policy] [Default. User with boost reverse mode autodiff] [tells the optimizer how to evaluate the objective]] + [[reverse_mode_gradient_evaluation_policy] [Default. User with boost reverse mode autodiff] [tells the optimizer how to evaluate the gradients of an objective]] +] + +These policies are intended to use with boost reverse mode autodiff. If you need to use the optimizers with a custom AD variable, or by providing the gradient of an objective manually, check the docs for policies to see how the policies are implemented. + +[h1:line-search-policies LBFGS line search policies] +the table below summarizes the two line search policies provided for use with LBFGS. +[table + [[Policy] [Enforced Conditions] [Per iteration cost] [Convergence] [Use case]] + [[Strong Wolfe] [function decrease. curvature condition] [higher] [faster] [most of the time]] + [[Armijo] [function decrease only] [lower] [slower] [you know what you're doing]] +] +[h1:minimizer-policies Minimizer Policies] +[heading Convergence Policies] +[table + [[Policy] [Criterion] [When to Use]] + [[gradient_norm_convergence_policy] [gradient norm < tol] [Default. Stationarity based condition]] + [[objective_tol_convergence_policy] [absolute difference between objective steps is small] [Well-scaled objectives]] + [[relative_objective_tol_policy] [relative difference between objective steps is small] [Scale-invariant convergence]] + [[combined_convergence_policy] [logical combination OR] [you need a combination of convergence conditions]] +] + +[heading Termination Policies] +[table + [[Policy] [Controls] [When to Use]] + [[max_iter_termination_policy] [iteration count] [Hard safety bound (almost always recommended)]] + [[wallclock_termination_policy] [wall clock time] [benchmarking, real-time constraints]] +] + +[heading Constraint and Projection Policies] +[table + [[Policy] [Constraint Type]] + [[unconstrained_policy] [No constraint]] + [[box_constraints] [upper/lower bound clip]] + [[nonnegativity_constraint] [set everything below 0, to 0]] + [[l2_ball_constraint] [ 2-norm(x) < r]] + [[l1_ball_constraint] [ 1-norm(x) < r]] + [[simplex_constraint] [Probability simplex]] + [[function_constraint] [custom user provided function wrapper]] + [[unit_sphere_constraint] [2-norm(x) = 1]] +] +[endsect] [/section:introduction] + +[section:gradient_descent Gradient Descent] +[heading Synopsis] +`` + #include + + template + class gradient_descent { + public: + void step(); + } + + /* Convenience overloads */ + /* make gradient descent by providing + ** objective function + ** variables to optimize over + ** optionally learing rate + * + * requires that code is written using boost::math::differentiation::rvar + */ + template + auto make_gradient_descent(Objective&& obj, ArgumentContainer& x, RealType lr = RealType{ 0.01 }); + + /* make gradient descent by providing + * objective function + ** variables to optimize over + ** learning rate (not optional) + ** initialization policy + * + * requires that code is written using boost::math::differentiation::rvar + */ + + template + auto make_gradient_descent(Objective&& obj, + ArgumentContainer& x, + RealType lr, + InitializationPolicy&& ip); + /* make gradient descent by providing + ** objective function + ** variables to optimize over + ** learning rate (not optional) + ** variable initialization policy + ** objective evaluation policy + ** gradient evaluation policy + * + * code does not have to use boost::math::differentiation::rvar + */ + template + auto make_gradient_descent(Objective&& obj, + ArgumentContainer& x, + RealType& lr, + InitializationPolicy&& ip, + ObjectiveEvalPolicy&& oep, + GradEvalPolicy&& gep) +`` + +Gradient descent iteratively updates parameters `x` in the direction opposite to the gradient of the objective function (minimizing the objective). +`` +x[i] -= lr * g[i] +`` +where `lr` is a user defined learning rate. For a more complete description of the theoretical principle check [@https://en.wikipedia.org/wiki/Gradient_descent the wikipedia page] + +The implementation delegates: +- the initialization of differentiable variables to an initialization policy +- objective evaluation to an objective evaluation policy +- the gradient computation to a gradient evaluation policy +- the parameter updates to an update policy + +The interface is intended to be pytorch-like, where a optimizer object is constructed and progressed with a `step()` method. A helper `minimize` method is also provided. + +[heading Parameters] + +* `Objective&& obj` : objective function to minimize +* `ArgumentContainer& x` : variables to optimize over +* `RealType& lr` : learning rate. A larger value takes larger steps during descent, leading to faster, but more unstable convergence. Conversely, small values are more stable but take longer to converge. +* `InitializationPolicy&& ip` : Initialization policy for optimizer state and variables. Users may supply a custom initialization policy to control how the argument container and any AD specific runtime state : i.e. reverse-mode tape attachment/reset are initialized. By default, the optimizer uses the user-provided initial values in x and performs the standard reverse mode AD initialization required for gradient evaluation. Custom initialization policies are useful for randomized starts, non rvar AD types, or when gradients are supplied externally. See the reverse-mode autodiff policy documentation for the required initialization policy interface when writing custom policies. +* `ObjectiveEvalPolicy&& oep` : tells the optimizer how to evaluate the objective function. By default `reverse_mode_function_eval_policy`. +* `GradEvalPolicy&& gep` : tells the optimizer how to evaluate the gradient of the objective function. By default `reverse_mode_gradient_evaluation_policy` + +[heading Example using a manual optimization] +In this section we will present an example for finding optimal configurations of electrically charged particles confined to a `R = 1` sphere. This problem is also known as the [@https://en.wikipedia.org/wiki/Thomson_problem Thomson problem]. In summary, we are looking for the configuration of an N-electron system subject to the Coulomb potential confined to the $S^2$ sphere. The Coulomb potential is given by: + +[:[:[autodiff_equation thomson_potential.svg]]] + +The code below manually minimizes the above potential energy function for N particles over their two angular positions. + +`` + #include + #include + #include + #include + #include + #include + #include + #include + namespace rdiff = boost::math::differentiation::reverse_mode; + namespace bopt = boost::math::optimization; + double random_double(double min = 0.0, double max = 1.0) + { + static thread_local std::mt19937 rng{std::random_device{}()}; + std::uniform_real_distribution dist(min, max); + return dist(rng); + } + + template + struct vec3 + { + /** + * @brief R^3 coordinates of particle on Thomson Sphere + */ + S x, y, z; + }; + + template + static inline vec3 sph_to_xyz(const S& theta, const S& phi) + { + /** + * convenience overload to convert from [theta,phi] -> x, y, z + */ + return {sin(theta) * cos(phi), sin(theta) * sin(phi), cos(theta)}; + } + + template + T thomson_energy(std::vector& r) + { + const size_t N = r.size() / 2; + const T tiny = T(1e-12); + + T E = 0; + for (size_t i = 0; i < N; ++i) { + const T& theta_i = r[2 * i + 0]; + const T& phi_i = r[2 * i + 1]; + auto ri = sph_to_xyz(theta_i, phi_i); + + for (size_t j = i + 1; j < N; ++j) { + const T& theta_j = r[2 * j + 0]; + const T& phi_j = r[2 * j + 1]; + auto rj = sph_to_xyz(theta_j, phi_j); + + T dx = ri.x - rj.x; + T dy = ri.y - rj.y; + T dz = ri.z - rj.z; + + T d2 = dx * dx + dy * dy + dz * dz + tiny; + E += 1.0 / sqrt(d2); + } + } + return E; + } + + template + std::vector> init_theta_phi_uniform(size_t N, unsigned seed = 12345) + { + const T pi = T(3.1415926535897932384626433832795); + + std::mt19937 rng(seed); + std::uniform_real_distribution unif01(T(0), T(1)); + std::uniform_real_distribution unifm11(T(-1), T(1)); + + std::vector> u; + u.reserve(2 * N); + + for (size_t i = 0; i < N; ++i) { + T z = unifm11(rng); + T phi = (T(2) * pi) * unif01(rng) - pi; + T theta = std::acos(z); + + u.emplace_back(theta); + u.emplace_back(phi); + } + return u; + } + + int main(int argc, char* argv[]) + { + if (argc != 2) { + std::cerr << "Usage: " << argv[0] << " \n"; + return 1; + } + + const int N = std::stoi(argv[1]); + const int NSTEPS = 100000; + const double lr = 1e-3; + + auto u_ad = init_theta_phi_uniform(N); + + auto gdopt = bopt::make_gradient_descent(&thomson_energy>, u_ad, lr); + + // filenames + std::string pos_filename = "thomson_" + std::to_string(N) + ".csv"; + std::string energy_filename = "energy_" + std::to_string(N) + ".csv"; + + std::ofstream pos_out(pos_filename); + std::ofstream energy_out(energy_filename); + + pos_out << "step,particle,x,y,z\n"; + energy_out << "step,energy\n"; + + for (int step = 0; step < NSTEPS; ++step) { + gdopt.step(); + for (int pi = 0; pi < N; ++pi) { + double theta = u_ad[2 * pi + 0].item(); + double phi = u_ad[2 * pi + 1].item(); + auto r = sph_to_xyz(theta, phi); + pos_out << step << "," << pi << "," << r.x << "," << r.y << "," << r.z << "\n"; + } + auto E = gdopt.objective_value(); + energy_out << step << "," << E << "\n"; + } + + pos_out.close(); + energy_out.close(); + + return 0; + } +`` +The variable +``const int N = std::stoi(argv[1]);`` +is the number of particles read from the command line +``const int NSTEPS = 100000;`` +is the number of optimization steps +``const double lr = 1e-3;`` +is the optimizer learning rate. Using the code the way its written, the optimizer runs for 100000 steps. Running the program with +``` + ./thomson_sphere N +``` +optimizes the N particle system. Below is a plot of several optimal configurations for N=2,...8 particles. +[:[:[gbo_graph thomson_sphere_2to8.svg]]] + +Below is a plot of the final energy of the system, and its deviation from the theoretically predicted values. The table of theoretical energy values for the problem is from [@https://en.wikipedia.org/wiki/Thomson_problem wikipedia]. +[:[:[gbo_graphi thomson_energy_error_gradient_descent.svg]]] + +[heading Example using minimize] +Often, we don't want to actually implement our own stepping function, i.e. we care about certain convergence criteria. In the above example, we need to include the minimizer.hpp header: +``` + #include +``` + +and replace the optimization loop: +``` + for (int step = 0; step < NSTEPS; ++step) { + gdopt.step(); + for (int pi = 0; pi < N; ++pi) { + double theta = u_ad[2 * pi + 0].item(); + double phi = u_ad[2 * pi + 1].item(); + auto r = sph_to_xyz(theta, phi); + pos_out << step << "," << pi << "," << r.x << "," << r.y << "," << r.z << "\n"; + } + auto E = gdopt.objective_value(); + energy_out << step << "," << E << "\n"; + } + +``` +with +``` + auto result = minimize(gdopt); +``` +minimize returns a ``optimization_result``, a struct with the following fields: +``` + size_t num_iter; + RealType objective_value; + std::vector objective_history; + bool converged; +``` + +where `num_iter` is the number of iterations the optimizer went through, `objective_value` is the final objective value, `objective_history` are the intermediate objective values, and `converged` is whether the convergence criterion was satisfied. By default, `minimize(optimizer)` uses a gradient norm convergence criterion. If norm(gradient_vector) < 1e-3, the criterion is satisfied. Maximum number of iterations is set at 100000. For more info on how to use `minimize` check the minimize docs. With default parameters, gradient descent solves the `N=2` problem in `93799` steps. + +[endsect] [/section:gradient_descent] + +[section:nesterov Nesterov Accelerated Gradient Descent] +[heading Synopsis] +``` +#include + +namespace boost { +namespace math { +namespace optimization { + +namespace rdiff = boost::math::differentiation::reverse_mode; + +/** + * @brief The nesterov_accelerated_gradient class + * + * https://jlmelville.github.io/mize/nesterov.html + */ +template +class nesterov_accelerated_gradient + : public abstract_optimizer< + ArgumentContainer, + RealType, + Objective, + InitializationPolicy, + ObjectiveEvalPolicy, + GradEvalPolicy, + nesterov_update_policy, + nesterov_accelerated_gradient> +{ +public: + nesterov_accelerated_gradient(Objective&& objective, + ArgumentContainer& x, + InitializationPolicy&& ip, + ObjectiveEvalPolicy&& oep, + GradEvalPolicy&& gep, + nesterov_update_policy&& up); + void step(); +}; + +/* Convenience overloads */ +/* make nesterov accelerated gradient descent by providing + ** objective function + ** variables to optimize over + ** Optionally + * - lr: learning rate / step size (typical: 1e-4 .. 1e-1 depending on scaling) + * - mu: momentum coefficient in [0, 1) (typical: 0.8 .. 0.99) + */ + +template +auto make_nag(Objective&& obj, + ArgumentContainer& x, + RealType lr = RealType{ 0.01 }, + RealType mu = RealType{ 0.95 }); + +/* provide initialization policy + * lr, and mu no longer optional + */ +template +auto make_nag(Objective&& obj, + ArgumentContainer& x, + RealType lr, + RealType mu, + InitializationPolicy&& ip); + +/* provide + * initialization policy + * objective evaluation policy + * gradient evaluation policy + */ +template +auto make_nag(Objective&& obj, + ArgumentContainer& x, + RealType lr, + RealType mu, + InitializationPolicy&& ip, + ObjectiveEvalPolicy&& oep, + GradEvalPolicy&& gep); + +} // namespace optimization +} // namespace math +} // namespace boost +``` + +Nesterov accelerated gradient (NAG) is a first-order optimizer that augments gradient descent with a momentum term and evaluates the gradient at a "lookahead" point. In practice this often improves convergence speed compared to vanilla gradient descent, especially in narrow valleys and ill-conditioned problems. + +[heading Algorithm] + +NAG maintains a "velocity" vector v (same shape as x). At iteration k it performs: +``` +v = mu * v - lr * g; +x += -mu * v_prev + (1 + mu) *v +``` +where: + +lr is the learning rate / step size + +mu is the momentum coefficient (typically close to 1) + +Setting mu = 0 reduces NAG to standard gradient descent. +[heading Parameters] + +* `Objective&& obj` : objective function to minimize. +* `ArgumentContainer& x` : variables to optimize over. Updated in place. +* `RealType lr` : learning rate. Larger values take larger steps (faster but potentially unstable). Smaller values are more stable but converge more slowly. +* `RealType mu` : momentum coefficient in `[0,1)`. Higher values, e.g. 0.9 to 0.99, typically accelerate convergence but may require a smaller `lr` +* `InitializationPolicy&& ip` : Initialization policy for optimizer state and variables. Users may supply a custom initialization policy to control how the argument container and any AD-specific runtime state : i.e. reverse-mode tape attachment/reset are initialized. By default, the optimizer uses the same initialization as gradient descent, taking the user provided initial values in x and initializing the internal momentum/velocity state to zero. Custom initialization policies are useful for randomized starts, non rvar AD types, or when gradients are supplied externally. Check the docs for Reverse Mode autodiff policies for initialization policy structure to write custom policies. +* `ObjectiveEvalPolicy&& oep` : objective evaluation policy. By default `reverse_mode_function_eval_policy` +* `GradEvalPolicy&& gep` : gradient evaluation policy. By default `reverse_mode_gradient_evaluation_policy` + +[heading Notes] +* NAG uses the same policy-based design as gradient descent: initialization, objective evaluation, and gradient evaluation can be customized independently. +* When using reverse-mode AD `rvar`, the objective should be written in terms of AD variables so gradients can be obtained automatically by the default gradient evaluation policy. +* Typical tuning: start with `mu = 0.9` or `0.95`; if the objective oscillates or diverges, reduce `lr` (or slightly reduce `mu`). + +[heading Example : Thomson Sphere] +``` +#include +#include +#include +#include +#include +#include +#include +#include +namespace rdiff = boost::math::differentiation::reverse_mode; +namespace bopt = boost::math::optimization; +double random_double(double min = 0.0, double max = 1.0) +{ + static thread_local std::mt19937 rng{std::random_device{}()}; + std::uniform_real_distribution dist(min, max); + return dist(rng); +} + +template +struct vec3 +{ + /** + * @brief R^3 coordinates of particle on Thomson Sphere + */ + S x, y, z; +}; + +template +static inline vec3 sph_to_xyz(const S& theta, const S& phi) +{ + /** + * convenience overload to convert from [theta,phi] -> x, y, z + */ + return {sin(theta) * cos(phi), sin(theta) * sin(phi), cos(theta)}; +} + +template +T thomson_energy(std::vector& r) +{ + /* inverse square law + */ + const size_t N = r.size() / 2; + const T tiny = T(1e-12); + + T E = 0; + for (size_t i = 0; i < N; ++i) { + const T& theta_i = r[2 * i + 0]; + const T& phi_i = r[2 * i + 1]; + auto ri = sph_to_xyz(theta_i, phi_i); + + for (size_t j = i + 1; j < N; ++j) { + const T& theta_j = r[2 * j + 0]; + const T& phi_j = r[2 * j + 1]; + auto rj = sph_to_xyz(theta_j, phi_j); + + T dx = ri.x - rj.x; + T dy = ri.y - rj.y; + T dz = ri.z - rj.z; + + T d2 = dx * dx + dy * dy + dz * dz + tiny; + E += 1.0 / sqrt(d2); + } + } + return E; +} + +template +std::vector> init_theta_phi_uniform(size_t N, unsigned seed = 12345) +{ + const T pi = T(3.1415926535897932384626433832795); + + std::mt19937 rng(seed); + std::uniform_real_distribution unif01(T(0), T(1)); + std::uniform_real_distribution unifm11(T(-1), T(1)); + + std::vector> u; + u.reserve(2 * N); + + for (size_t i = 0; i < N; ++i) { + T z = unifm11(rng); + T phi = (T(2) * pi) * unif01(rng) - pi; + T theta = std::acos(z); + + u.emplace_back(theta); + u.emplace_back(phi); + } + return u; +} + +int main(int argc, char* argv[]) +{ + + if (argc != 2) { + std::cerr << "Usage: " << argv[0] << " \n"; + return 1; + } + + const int N = std::stoi(argv[1]); + const double lr = 1e-3; + const double mu = 0.95; + auto u_ad = init_theta_phi_uniform(N); + + auto nesterov_opt = bopt::make_nag(&thomson_energy>, u_ad, lr, mu); + + // filenames + std::string pos_filename = "thomson_" + std::to_string(N) + ".csv"; + std::string energy_filename = "nesterov_energy_" + std::to_string(N) + ".csv"; + + std::ofstream pos_out(pos_filename); + std::ofstream energy_out(energy_filename); + + energy_out << "step,energy\n"; + + auto result = minimize(nesterov_opt); + for (int pi = 0; pi < N; ++pi) { + double theta = u_ad[2 * pi + 0].item(); + double phi = u_ad[2 * pi + 1].item(); + auto r = sph_to_xyz(theta, phi); + pos_out << pi << "," << r.x << "," << r.y << "," << r.z << "\n"; + } + auto E = nesterov_opt.objective_value(); + int i = 0; + for(auto& obj_hist : result.objective_history) + { + energy_out << i << "," << obj_hist << "\n"; + ++i; + } + energy_out << "," << E << "\n"; + + pos_out.close(); + energy_out.close(); + + return 0; +} +``` + +The nesterov version of this problem converges much faster than regular gradient descent, in only `4663` iterations with default parameters, vs the `93799` iterations required by gradient descent. + +[:[:[gbo_graph nag_to_gd_comparison.svg]]] + +[endsect] [/section:nesterov] + +[section:lbfgs L-BFGS] +[heading Synopsis] +``` +#include + +namespace boost { +namespace math { +namespace optimization { + +namespace rdiff = boost::math::differentiation::reverse_mode; + +/** + * + * @brief Limited-memory BFGS (L-BFGS) optimizer + * + * The `lbfgs` class implements the Limited-memory BFGS optimization algorithm, + * a quasi-Newton method that approximates the inverse Hessian using a rolling + * window of the last `m` updates. It is suitable for medium- to large-scale + * optimization problems where full Hessian storage is infeasible. + * + * @tparam> ArgumentContainer: container type for parameters, e.g. + * std::vector + * @tparam> RealType scalar floating type (e.g. double, float) + * @tparam> Objective: objective function. must support "f(x)" evaluation + * @tparam> InitializationPolicy: policy for initializing x + * @tparam> ObjectiveEvalPolicy: policy for computing the objective value + * @tparam> GradEvalPolicy: policy for computing gradients + * @tparam> LineaSearchPolicy: e.g. Armijo, StrongWolfe + * + * https://en.wikipedia.org/wiki/Limited-memory_BFGS + */ + +template +class lbfgs +{ +public: + lbfgs(Objective&& objective, + ArgumentContainer& x, + size_t m, + InitializationPolicy&& ip, + ObjectiveEvalPolicy&& oep, + GradEvalPolicy&& gep, + lbfgs_update_policy&& up, + LineSearchPolicy&& lsp); + + void step(); +}; + +/* Convenience overloads */ +/* create l-bfgs optimizer with + * objective function + * argument container + * optional + * - history size : how far to look in the past + */ +template +auto make_lbfgs(Objective&& obj, ArgumentContainer& x, std::size_t m = 10); + +template +auto make_lbfgs(Objective&& obj, + ArgumentContainer& x, + std::size_t m, + InitializationPolicy&& ip) + +/* construct lbfgs with a custom initialization and line search policy */ +template +auto make_lbfgs(Objective&& obj, + ArgumentContainer& x, + std::size_t m, + InitializationPolicy&& ip, + LineSearchPolicy&& lsp); + +/* construct lbfgs optimizer with: + * custom initialization policy + * function evaluation policy + * gradient evaluation policy + * line search policy + */ +template +auto make_lbfgs(Objective&& obj, + ArgumentContainer& x, + std::size_t m, + InitializationPolicy&& ip, + FunctionEvalPolicy&& fep, + GradientEvalPolicy&& gep, + LineSearchPolicy&& lsp); + +} // namespace optimization +} // namespace math +} // namespace boost +``` + +LBFGS (limited memory BFGS) is a quasi-Newton optimizer that builds an approximation to the inverse Hessian using only first-order information (function values and gradients). Unlike full BFGS, it does not store or update a dense matrix; instead it maintains a fixed size history of the most recent m correction pairs and computes the search direction using a two loop recursion. In practice, LBFGS often converges in significantly fewer iterations than normal gradient based methods, especially on smooth, ill-conditioned objectives. + +[heading Algorithm] + +At each iteration k, LBFGS: +* Evaluates the gradient g_k = grad(f(x_k)). +* Computes a quasi-Newton search direction using the last m updates. +* Chooses a step length alpha_k using a line search policy. +* Updates parameters: +``` +x_k += alpha_k p_k +``` +* Forms the correction pairs: +``` +s_k = x_k - x_prev y_k = g_k - g_prev +``` +and stores up to the last `m` pairs `(s_k, y_k)`. + +The line search is a key part of practical LBFGS: it typically removes the need to hand-tune a learning rate and improves robustness. + +[heading Parameters] + +* `Objective&& obj` : objective function to minimize. +* `ArgumentContainer& x` : variables to optimize over. Updated in-place. +* `std::size_t m` : history size. Typical values are 5–20. Default is 10. Larger m can improve directions but increases memory and per-step cost. +* `InitializationPolicy&& ip` : Initialization policy for optimizer state and variables. Users may supply a custom initialization policy to control how the argument container and any AD-specific runtime state : i.e. reverse-mode tape attachment/reset are initialized. By default, the optimizer uses the same initialization as gradient descent, taking the user provided initial values in x and initializing the internal momentum/velocity state to zero. Custom initialization policies are useful for randomized starts, non rvar AD types, or when gradients are supplied externally. Check the docs for Reverse Mode autodiff policies for initialization policy structure to write custom policies. +* `ObjectiveEvalPolicy&& oep` : policy for evaluating the objective function value at a given x. By default this is a reverse-mode AD evaluation policy when using `rvar`. +* `GradEvalPolicy&& gep` : policy for evaluating the gradient of the objective. By default this is a reverse-mode AD gradient evaluation policy when using `rvar`. +* `LineSearchPolicy&& lsp` : policy for selecting the step length alpha along a search direction. Determines the acceptance criteria and how many function/gradient evaluations may be performed during a step Default is Strong Wolfe, but Armijo is an option. Strong Wolfe uses both function and gradient information to ensure good curvature conditions, while Armijo relies only on function decrease and is simpler but less robust for quasi-Newton methods. +[heading Notes] + +* LBFGS assumes the objective is sufficiently smooth for gradients to be informative. It is typically most effective on unconstrained smooth problems. + +* LBFGS usually requires fewer iterations than gradient descent, but each iteration is more expensive because it performs multiple objective/gradient evaluations during line search. + +[heading Example : Thomson Problem] +``` +#include +#include +#include +#include +#include +#include +#include +#include +namespace rdiff = boost::math::differentiation::reverse_mode; +namespace bopt = boost::math::optimization; +double random_double(double min = 0.0, double max = 1.0) +{ + static thread_local std::mt19937 rng{std::random_device{}()}; + std::uniform_real_distribution dist(min, max); + return dist(rng); +} + +template +struct vec3 +{ + /** + * @brief R^3 coordinates of particle on Thomson Sphere + */ + S x, y, z; +}; + +template +static inline vec3 sph_to_xyz(const S& theta, const S& phi) +{ + /** + * convenience overload to convert from [theta,phi] -> x, y, z + */ + return {sin(theta) * cos(phi), sin(theta) * sin(phi), cos(theta)}; +} + +template +T thomson_energy(std::vector& r) +{ + /* inverse square law + */ + const size_t N = r.size() / 2; + const T tiny = T(1e-12); + + T E = 0; + for (size_t i = 0; i < N; ++i) { + const T& theta_i = r[2 * i + 0]; + const T& phi_i = r[2 * i + 1]; + auto ri = sph_to_xyz(theta_i, phi_i); + + for (size_t j = i + 1; j < N; ++j) { + const T& theta_j = r[2 * j + 0]; + const T& phi_j = r[2 * j + 1]; + auto rj = sph_to_xyz(theta_j, phi_j); + + T dx = ri.x - rj.x; + T dy = ri.y - rj.y; + T dz = ri.z - rj.z; + + T d2 = dx * dx + dy * dy + dz * dz + tiny; + E += 1.0 / sqrt(d2); + } + } + return E; +} + +template +std::vector> init_theta_phi_uniform(size_t N, unsigned seed = 12345) +{ + const T pi = T(3.1415926535897932384626433832795); + + std::mt19937 rng(seed); + std::uniform_real_distribution unif01(T(0), T(1)); + std::uniform_real_distribution unifm11(T(-1), T(1)); + + std::vector> u; + u.reserve(2 * N); + + for (size_t i = 0; i < N; ++i) { + T z = unifm11(rng); + T phi = (T(2) * pi) * unif01(rng) - pi; + T theta = std::acos(z); + + u.emplace_back(theta); + u.emplace_back(phi); + } + return u; +} + +int main(int argc, char* argv[]) +{ + + if (argc != 2) { + std::cerr << "Usage: " << argv[0] << " \n"; + return 1; + } + + const int N = std::stoi(argv[1]); + auto u_ad = init_theta_phi_uniform(N); + + auto lbfgs_opt = bopt::make_lbfgs(&thomson_energy>, u_ad); + + // filenames + std::string pos_filename = "thomson_" + std::to_string(N) + ".csv"; + std::string energy_filename = "lbfgs_energy_" + std::to_string(N) + ".csv"; + + std::ofstream pos_out(pos_filename); + std::ofstream energy_out(energy_filename); + + energy_out << "step,energy\n"; + + auto result = minimize(lbfgs_opt); + for (int pi = 0; pi < N; ++pi) { + double theta = u_ad[2 * pi + 0].item(); + double phi = u_ad[2 * pi + 1].item(); + auto r = sph_to_xyz(theta, phi); + pos_out << pi << "," << r.x << "," << r.y << "," << r.z << "\n"; + } + auto E = lbfgs_opt.objective_value(); + int i = 0; + for(auto& obj_hist : result.objective_history) + { + energy_out << i << "," << obj_hist << "\n"; + ++i; + } + energy_out << "," << E << "\n"; + + pos_out.close(); + energy_out.close(); + + return 0; +} +``` +For the `N = 2` case, LBFGS requires only 5 iterations to converge, the nesterov version of this problem converges in `4663` iterations with default parameters, and gradient descent requires `93799` iterations. Convergence is assumed to mean the norm of the gradient is less than `1e-3`. Below is a plot showcasing the 3 different methods for the `N=20` particle case. + +[:[:[gbo_graph lbfgs_to_nag_and_gd_comparison.svg]]] + +In this case, gradient descent reaches the maximum number of iterations, and does not converge, nag converges in `150` iterations, and LBFGS converges in `67` iterations. + +[endsect] [/section:lbfgs] + +[section:minimize minimize] +[heading Synopsis] +``` +#include + +namespace boost { +namespace math { +namespace optimization { +template +struct optimization_result +{ + size_t num_iter = 0; + RealType objective_value; + std::vector objective_history; + bool converged; +}; + +/* Minimize an objective using a given optimizer. + * + * The optimizer `opt` must expose a `step()` method and the associated + * typedefs: + * - argument_container_t + * - real_type_t + * + * The behavior of the minimization loop is controlled by policy objects: + * - ConstraintPolicy: projects variables onto a feasible set + * - ConvergencePolicy: determines when convergence has been reached + * - TerminationPolicy: determines when optimization must stop regardless + * of convergence (e.g. max iterations) + * + * The function returns an `optimization_result` summarizing the run. + */ +template, + class ConvergencePolicy = + gradient_norm_convergence_policy, + class TerminationPolicy = max_iter_termination_policy> +auto minimize(Optimizer& opt, + ConstraintPolicy project = ConstraintPolicy{}, + ConvergencePolicy converged = + ConvergencePolicy{ + static_cast(1e-3) }, + TerminationPolicy terminate = TerminationPolicy(100000), + bool history = true) +``` + +This header provides a generic driver function `minimize` that repeatedly advances an optimizer via `step()`, optionally projects parameters onto a constraint set, and stops when either a convergence criterion is met or a termination criterion triggers. + +[heading Parameters] +* `Optimizer& opt` : Optimizer instance. +* `ConstraintPolicy project` : Projection policy applied after each `step()`. Default is `unconstrained_policy` (no projection). +* `ConvergencePolicy converged` : Stopping criterion. Default is `gradient_norm_convergence_policy(tol=1e-3)`. +* `TerminationPolicy terminate` : Hard stop criterion. Default is `max_iter_termination_policy(100000)`. +* `bool history` : If true, records `opt.objective_value()` after each iteration in `optimization_result::objective_history.` + +[heading Convergence Policies] +Convergence policies decide when the optimization has converged. Each policy has the signature: +``` +bool operator()(const GradientContainer& g, RealType objective_value) const; +``` +[heading gradient_norm_convergence_policy] + +Stops when the Euclidean norm of the gradient falls below a tolerance: +``` +template +struct gradient_norm_convergence_policy +{ +explicit gradient_norm_convergence_policy(RealType tol); + +template +bool operator()(const GradientContainer& g, RealType objective_v) const; +}; +``` +[heading objective_tol_convergence_policy] + +Stops when the absolute change in objective value between successive iterations drops below a tolerance: +``` +template +struct objective_tol_convergence_policy +{ +explicit objective_tol_convergence_policy(RealType tol); + +template +bool operator()(const GradientContainer&, RealType objective_v) const; +}; +``` +The first call always returns false + +[heading relative_objective_tol_policy] + +Stops when the relative objective change drops below a tolerance: +``` +template +struct relative_objective_tol_policy +{ +explicit relative_objective_tol_policy(RealType rel_tol); + +template +bool operator()(const GradientContainer&, RealType objective_v) const; +}; +``` +The relative change is computed as: +``` +abs(obj - last_obj) / max(1, abs(last_obj)) +``` + +[heading combined_convergence_policy] + +Combines two convergence policies and stops when either triggers: +``` +template +struct combined_convergence_policy +{ +combined_convergence_policy(Policy1 p1, Policy2 p2); + +template +bool operator()(const GradientContainer& g, RealType obj) const; +}; +``` + +[heading Termination Policies] + +Termination policies provide a hard stop independent of convergence. Each policy has the signature: + +``` +bool operator()(size_t iter); +``` + +[heading max_iter_termination_policy] + +Stops after a fixed number of iterations +``` +struct max_iter_termination_policy { explicit max_iter_termination_policy(size_t max_iter); bool operator()(size_t iter); }; +``` + +[heading wallclock_termination_policy] + +Stops after a wall-clock time budget: +``` +struct wallclock_termination_policy { explicit wallclock_termination_policy(std::chrono::milliseconds max_time); bool operator()(size_t iter) const; }; +``` + +[heading Constraint and Projection Policies] + +Projection policies modify the optimizer variables after each step. Each policy has the signature: + +``` +void operator()(ArgumentContainer& x) const; +``` + +[heading unconstrained_policy] + +No projection; leaves parameters unchanged + +``` +template struct unconstrained_policy { void operator()(ArgumentContainer&); }; +``` + +[heading box_constraints] + +Clamps each variable into `[min, max]` + +``` +template struct box_constraints { box_constraints(RealType min, RealType max); void operator()(ArgumentContainer& x); }; +``` + +[heading nonnegativity_constraint] + +Sets anything less than `0` to `0` + +``` +template struct nonnegativity_constraint { void operator()(ArgumentContainer& x) const; }; +``` + +[heading l2_ball_constraint] + +Projects onto the `L2` ball of radius `radius` by uniform scaling when needed + +``` +template struct l2_ball_constraint { explicit l2_ball_constraint(RealType radius); void operator()(ArgumentContainer& x) const; }; +``` + +[heading l1_ball_constraint] + +Projects onto the `L1` ball of radius `radius` by uniform scaling + +``` +template struct l1_ball_constraint { explicit l1_ball_constraint(RealType radius); void operator()(ArgumentContainer& x) const; }; +``` + +This is not the exact Euclidean projection onto the L1 ball; it is a simple scaling-based constraint + +[heading simplex_constraint] + +Projects onto the scaled probability simplex by clipping negatives to `0` and renormalizing to sum to `1` + +``` +template struct simplex_constraint { void operator()(ArgumentContainer& x) const; }; +``` + +[heading function_constraint] + +Wraps a user-provided projection function + +``` +template struct function_constraint { using func_t = void (*)(ArgumentContainer&); explicit function_constraint(func_t f); void operator()(ArgumentContainer& x) const; }; +``` + +[heading unit_sphere_constraint] + +Normalizes the vector to unit L2 norm + +``` +template struct unit_sphere_constraint { void operator()(ArgumentContainer& x) const; }; +``` + +This projects onto the unit sphere (if ||x||_2 > 0) + +[endsect] [/section:minimize] + +[section:policies Reverse Mode autodiff policies] +This header provides default policy implementations for using the gradient-based optimizers with `boost::math::differentiation::reverse_mode::rvar` These policies handle: + +* preparing the reverse-mode tape before evaluating an objective, +* extracting gradients from rvar arguments after backpropagation, +* initializing `rvar` containers and establishing tape checkpoints. + +[heading Synopsis] + +``` +#include + +namespace boost { +namespace math { +namespace optimization { + +namespace rdiff = boost::math::differentiation::reverse_mode; + +/** + * @brief> function evaluation policy for reverse mode autodiff + * @arg objective> objective function to evaluate + * @arg x> argument list + */ +template +struct reverse_mode_function_eval_policy +{ + template + rdiff::rvar operator()(Objective&& objective, + ArgumentContainer& x); +}; + +/** + * @brief> gradient evaluation policy + * @arg obj_f> objective + * @arg x> argument list + * @arg f_eval_olicy> funciton evaluation policy. These need to be + * done in tandem + * @arg obj_v> reference to variable inside gradient class + */ +template +struct reverse_mode_gradient_evaluation_policy +{ + template + void operator()(Objective&& obj_f, + ArgumentContainer& x, + FunctionEvaluationPolicy&& f_eval_pol, + RealType& obj_v, + std::vector& g) +}; + /* + * init policies + */ + +/* default rvar policy */ +template +struct tape_initializer_rvar +{ + template + void operator()(ArgumentContainer& x) const noexcept; +}; + +/* random uniform */ +template +struct random_uniform_initializer_rvar +{ + RealType low_, high_; + size_t seed_; + random_uniform_initializer_rvar(RealType low = 0, + RealType high = 1, + size_t seed = std::random_device{}()); + + template + void operator()(ArgumentContainer& x) const; +}; + +/* constant initializer */ +template +struct costant_initializer_rvar +{ + RealType constant; + explicit costant_initializer_rvar(RealType v = 0); + + template + void operator()(ArgumentContainer& x) const; +}; +} // namespace optimization +} // namespace math +} // namespace boost +``` + +[heading Function evaluation policies] + +A function evaluation policy defines how an objective is evaluated at the current parameters, and is responsible for any AD bookkeeping required before the call. + +[heading reverse_mode_function_eval_policy] +``` +template struct reverse_mode_function_eval_policy { template rdiff::rvar operator()(Objective&& objective, ArgumentContainer& x); }; +``` +This policy evaluates the objective objective(x) using reverse-mode AD and ensures the active tape is in a valid state before evaluation: + +ArgumentContainer must contain rdiff::rvar values. + +[heading Gradient evaluation policies] + +A gradient evaluation policy defines how gradients are computed and extracted into an ordinary numeric container. + +[heading reverse_mode_gradient_evaluation_policy] + +``` +template struct reverse_mode_gradient_evaluation_policy { template void operator()(Objective&& obj_f, ArgumentContainer& x, FunctionEvaluationPolicy&& f_eval_pol, RealType& obj_v, std::vector& g); }; +``` + +This policy computes the objective value and gradient using reverse-mode autodiff + +[heading Initialization policies] + +Initialization policies prepare the argument container and the reverse-mode tape for optimization. They establish tape checkpoints that are later used by function/gradient evaluation policies. + +[heading tape_initializer_rvar] + +``` +template struct tape_initializer_rvar { template void operator()(ArgumentContainer& x) const noexcept; }; +``` + +This policy: +* statically requires `ArgumentContainer::value_type` to be `rdiff::rvar`, +* adds a checkpoint to the active reverse-mode tape via `tape.add_checkpoint()` + +[heading random_uniform_initializer_rvar] + +``` +template +struct random_uniform_initializer_rvar +{ +random_uniform_initializer_rvar(RealType low = 0, +RealType high = 1, +size_t seed = std::random_device{}()); + +template +void operator()(ArgumentContainer& x) const; +}; +``` + +This policy initializes each element of x independently as: +``` +x[i] = rdiff::rvar(U(low, high)) +``` + +using +``` +boost::random::mt19937 +``` + +and + +``` +boost::random::uniform_real_distribution +``` + +[heading costant_initializer_rvar] + +``` +template +struct costant_initializer_rvar +{ +explicit costant_initializer_rvar(RealType v = 0); + +template +void operator()(ArgumentContainer& x) const; +}; +``` + +This policy initializes each element of x to the constant value v + +[endsect] [/section:policies] + +[endsect] [/section:gd_opt] diff --git a/example/.gradient_descent_example.cpp.swp b/example/.gradient_descent_example.cpp.swp new file mode 100644 index 0000000000..ab6c20b701 Binary files /dev/null and b/example/.gradient_descent_example.cpp.swp differ diff --git a/example/gradient_descent_example.cpp b/example/gradient_descent_example.cpp new file mode 100755 index 0000000000..25a7ad4dae --- /dev/null +++ b/example/gradient_descent_example.cpp @@ -0,0 +1,146 @@ +// Copyright Maksym Zhelyenzyakov 2026. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// https://www.boost.org/LICENSE_1_0.txt) +#include +#include +#include +#include +#include +#include +#include +#include +namespace rdiff = boost::math::differentiation::reverse_mode; +namespace bopt = boost::math::optimization; +double random_double(double min = 0.0, double max = 1.0) +{ + static thread_local std::mt19937 rng{std::random_device{}()}; + std::uniform_real_distribution dist(min, max); + return dist(rng); +} + +template +struct vec3 +{ + /** + * @brief R^3 coordinates of particle on Thomson Sphere + */ + S x, y, z; +}; + +template +static inline vec3 sph_to_xyz(const S& theta, const S& phi) +{ + /** + * convenience overload to convert from [theta,phi] -> x, y, z + */ + return {sin(theta) * cos(phi), sin(theta) * sin(phi), cos(theta)}; +} + +template +T thomson_energy(std::vector& r) +{ + /* inverse square law + */ + const size_t N = r.size() / 2; + const T tiny = T(1e-12); + + T E = 0; + for (size_t i = 0; i < N; ++i) { + const T& theta_i = r[2 * i + 0]; + const T& phi_i = r[2 * i + 1]; + auto ri = sph_to_xyz(theta_i, phi_i); + + for (size_t j = i + 1; j < N; ++j) { + const T& theta_j = r[2 * j + 0]; + const T& phi_j = r[2 * j + 1]; + auto rj = sph_to_xyz(theta_j, phi_j); + + T dx = ri.x - rj.x; + T dy = ri.y - rj.y; + T dz = ri.z - rj.z; + + T d2 = dx * dx + dy * dy + dz * dz + tiny; + E += 1.0 / sqrt(d2); + } + } + return E; +} + +template +std::vector> init_theta_phi_uniform(size_t N, unsigned seed = 12345) +{ + const T pi = T(3.1415926535897932384626433832795); + + std::mt19937 rng(seed); + std::uniform_real_distribution unif01(T(0), T(1)); + std::uniform_real_distribution unifm11(T(-1), T(1)); + + std::vector> u; + u.reserve(2 * N); + + for (size_t i = 0; i < N; ++i) { + T z = unifm11(rng); + T phi = (T(2) * pi) * unif01(rng) - pi; + T theta = std::acos(z); + + u.emplace_back(theta); + u.emplace_back(phi); + } + return u; +} + +int main(int argc, char* argv[]) +{ + /* + if (argc != 2) { + std::cerr << "Usage: " << argv[0] << " \n"; + return 1; + }*/ + + const int N = 2;// std::stoi(argv[1]); + const int NSTEPS = 100000; + const double lr = 1e-3; + + auto u_ad = init_theta_phi_uniform(N); + + auto gdopt = bopt::make_gradient_descent(&thomson_energy>, u_ad, lr); + + // filenames + std::string pos_filename = "thomson_" + std::to_string(N) + ".csv"; + std::string energy_filename = "energy_" + std::to_string(N) + ".csv"; + + std::ofstream pos_out(pos_filename); + std::ofstream energy_out(energy_filename); + + pos_out << "step,particle,x,y,z\n"; + energy_out << "step,energy\n"; + + /* + for (int step = 0; step < NSTEPS; ++step) { + gdopt.step(); + for (int pi = 0; pi < N; ++pi) { + double theta = u_ad[2 * pi + 0].item(); + double phi = u_ad[2 * pi + 1].item(); + auto r = sph_to_xyz(theta, phi); + pos_out << step << "," << pi << "," << r.x << "," << r.y << "," << r.z << "\n"; + } + auto E = gdopt.objective_value(); + energy_out << step << "," << E << "\n"; + }*/ + + auto result = minimize(gdopt); + for (int pi = 0; pi < N; ++pi) { + double theta = u_ad[2 * pi + 0].item(); + double phi = u_ad[2 * pi + 1].item(); + auto r = sph_to_xyz(theta, phi); + pos_out << pi << "," << r.x << "," << r.y << "," << r.z << "\n"; + } + auto E = gdopt.objective_value(); + energy_out << "," << E << "\n"; + + pos_out.close(); + energy_out.close(); + + return 0; +} diff --git a/example/lbfgs_example.cpp b/example/lbfgs_example.cpp new file mode 100755 index 0000000000..51980766ec --- /dev/null +++ b/example/lbfgs_example.cpp @@ -0,0 +1,135 @@ +// Copyright Maksym Zhelyenzyakov 2026. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// https://www.boost.org/LICENSE_1_0.txt) +#include +#include +#include +#include +#include +#include +#include +#include +namespace rdiff = boost::math::differentiation::reverse_mode; +namespace bopt = boost::math::optimization; +double random_double(double min = 0.0, double max = 1.0) +{ + static thread_local std::mt19937 rng{std::random_device{}()}; + std::uniform_real_distribution dist(min, max); + return dist(rng); +} + +template +struct vec3 +{ + /** + * @brief R^3 coordinates of particle on Thomson Sphere + */ + S x, y, z; +}; + +template +static inline vec3 sph_to_xyz(const S& theta, const S& phi) +{ + /** + * convenience overload to convert from [theta,phi] -> x, y, z + */ + return {sin(theta) * cos(phi), sin(theta) * sin(phi), cos(theta)}; +} + +template +T thomson_energy(std::vector& r) +{ + /* inverse square law + */ + const size_t N = r.size() / 2; + const T tiny = T(1e-12); + + T E = 0; + for (size_t i = 0; i < N; ++i) { + const T& theta_i = r[2 * i + 0]; + const T& phi_i = r[2 * i + 1]; + auto ri = sph_to_xyz(theta_i, phi_i); + + for (size_t j = i + 1; j < N; ++j) { + const T& theta_j = r[2 * j + 0]; + const T& phi_j = r[2 * j + 1]; + auto rj = sph_to_xyz(theta_j, phi_j); + + T dx = ri.x - rj.x; + T dy = ri.y - rj.y; + T dz = ri.z - rj.z; + + T d2 = dx * dx + dy * dy + dz * dz + tiny; + E += 1.0 / sqrt(d2); + } + } + return E; +} + +template +std::vector> init_theta_phi_uniform(size_t N, unsigned seed = 12345) +{ + const T pi = T(3.1415926535897932384626433832795); + + std::mt19937 rng(seed); + std::uniform_real_distribution unif01(T(0), T(1)); + std::uniform_real_distribution unifm11(T(-1), T(1)); + + std::vector> u; + u.reserve(2 * N); + + for (size_t i = 0; i < N; ++i) { + T z = unifm11(rng); + T phi = (T(2) * pi) * unif01(rng) - pi; + T theta = std::acos(z); + + u.emplace_back(theta); + u.emplace_back(phi); + } + return u; +} + +int main(int argc, char* argv[]) +{ + + if (argc != 2) { + std::cerr << "Usage: " << argv[0] << " \n"; + return 1; + } + + const int N = std::stoi(argv[1]); + auto u_ad = init_theta_phi_uniform(N); + + auto lbfgs_opt = bopt::make_lbfgs(&thomson_energy>, u_ad); + + // filenames + std::string pos_filename = "thomson_" + std::to_string(N) + ".csv"; + std::string energy_filename = "lbfgs_energy_" + std::to_string(N) + ".csv"; + + std::ofstream pos_out(pos_filename); + std::ofstream energy_out(energy_filename); + + energy_out << "step,energy\n"; + + auto result = minimize(lbfgs_opt); + for (int pi = 0; pi < N; ++pi) { + double theta = u_ad[2 * pi + 0].item(); + double phi = u_ad[2 * pi + 1].item(); + auto r = sph_to_xyz(theta, phi); + pos_out << pi << "," << r.x << "," << r.y << "," << r.z << "\n"; + } + auto E = lbfgs_opt.objective_value(); + int i = 0; + for(auto& obj_hist : result.objective_history) + { + energy_out << i << "," << obj_hist << "\n"; + ++i; + } + energy_out << "," << E << "\n"; + + pos_out.close(); + energy_out.close(); + + return 0; +} diff --git a/example/nesterov_example.cpp b/example/nesterov_example.cpp new file mode 100755 index 0000000000..2b4ff4e4f1 --- /dev/null +++ b/example/nesterov_example.cpp @@ -0,0 +1,137 @@ +// Copyright Maksym Zhelyenzyakov 2026. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// https://www.boost.org/LICENSE_1_0.txt) +#include +#include +#include +#include +#include +#include +#include +#include +namespace rdiff = boost::math::differentiation::reverse_mode; +namespace bopt = boost::math::optimization; +double random_double(double min = 0.0, double max = 1.0) +{ + static thread_local std::mt19937 rng{std::random_device{}()}; + std::uniform_real_distribution dist(min, max); + return dist(rng); +} + +template +struct vec3 +{ + /** + * @brief R^3 coordinates of particle on Thomson Sphere + */ + S x, y, z; +}; + +template +static inline vec3 sph_to_xyz(const S& theta, const S& phi) +{ + /** + * convenience overload to convert from [theta,phi] -> x, y, z + */ + return {sin(theta) * cos(phi), sin(theta) * sin(phi), cos(theta)}; +} + +template +T thomson_energy(std::vector& r) +{ + /* inverse square law + */ + const size_t N = r.size() / 2; + const T tiny = T(1e-12); + + T E = 0; + for (size_t i = 0; i < N; ++i) { + const T& theta_i = r[2 * i + 0]; + const T& phi_i = r[2 * i + 1]; + auto ri = sph_to_xyz(theta_i, phi_i); + + for (size_t j = i + 1; j < N; ++j) { + const T& theta_j = r[2 * j + 0]; + const T& phi_j = r[2 * j + 1]; + auto rj = sph_to_xyz(theta_j, phi_j); + + T dx = ri.x - rj.x; + T dy = ri.y - rj.y; + T dz = ri.z - rj.z; + + T d2 = dx * dx + dy * dy + dz * dz + tiny; + E += 1.0 / sqrt(d2); + } + } + return E; +} + +template +std::vector> init_theta_phi_uniform(size_t N, unsigned seed = 12345) +{ + const T pi = T(3.1415926535897932384626433832795); + + std::mt19937 rng(seed); + std::uniform_real_distribution unif01(T(0), T(1)); + std::uniform_real_distribution unifm11(T(-1), T(1)); + + std::vector> u; + u.reserve(2 * N); + + for (size_t i = 0; i < N; ++i) { + T z = unifm11(rng); + T phi = (T(2) * pi) * unif01(rng) - pi; + T theta = std::acos(z); + + u.emplace_back(theta); + u.emplace_back(phi); + } + return u; +} + +int main(int argc, char* argv[]) +{ + + if (argc != 2) { + std::cerr << "Usage: " << argv[0] << " \n"; + return 1; + } + + const int N = std::stoi(argv[1]); + const double lr = 1e-3; + const double mu = 0.95; + auto u_ad = init_theta_phi_uniform(N); + + auto nesterov_opt = bopt::make_nag(&thomson_energy>, u_ad, lr, mu); + + // filenames + std::string pos_filename = "thomson_" + std::to_string(N) + ".csv"; + std::string energy_filename = "nesterov_energy_" + std::to_string(N) + ".csv"; + + std::ofstream pos_out(pos_filename); + std::ofstream energy_out(energy_filename); + + energy_out << "step,energy\n"; + + auto result = minimize(nesterov_opt); + for (int pi = 0; pi < N; ++pi) { + double theta = u_ad[2 * pi + 0].item(); + double phi = u_ad[2 * pi + 1].item(); + auto r = sph_to_xyz(theta, phi); + pos_out << pi << "," << r.x << "," << r.y << "," << r.z << "\n"; + } + auto E = nesterov_opt.objective_value(); + int i = 0; + for(auto& obj_hist : result.objective_history) + { + energy_out << i << "," << obj_hist << "\n"; + ++i; + } + energy_out << "," << E << "\n"; + + pos_out.close(); + energy_out.close(); + + return 0; +} diff --git a/include/boost/math/differentiation/autodiff_reverse.hpp b/include/boost/math/differentiation/autodiff_reverse.hpp index 57584a765a..4670b1d138 100644 --- a/include/boost/math/differentiation/autodiff_reverse.hpp +++ b/include/boost/math/differentiation/autodiff_reverse.hpp @@ -580,6 +580,8 @@ class rvar : public expressionbackward(); } + + void set_item(RealType value) { value_ = inner_t(value); } }; template diff --git a/include/boost/math/differentiation/detail/reverse_mode_autodiff_erf_overloads.hpp b/include/boost/math/differentiation/detail/reverse_mode_autodiff_erf_overloads.hpp index 7f7fd9ce8a..a6a50e636d 100644 --- a/include/boost/math/differentiation/detail/reverse_mode_autodiff_erf_overloads.hpp +++ b/include/boost/math/differentiation/detail/reverse_mode_autodiff_erf_overloads.hpp @@ -16,7 +16,7 @@ #include #include -#include + namespace boost { namespace math { namespace differentiation { diff --git a/include/boost/math/differentiation/detail/reverse_mode_autodiff_memory_management.hpp b/include/boost/math/differentiation/detail/reverse_mode_autodiff_memory_management.hpp index b0b5ab0555..d13a5aca11 100644 --- a/include/boost/math/differentiation/detail/reverse_mode_autodiff_memory_management.hpp +++ b/include/boost/math/differentiation/detail/reverse_mode_autodiff_memory_management.hpp @@ -23,407 +23,435 @@ namespace detail { template class flat_linear_allocator_iterator { - /** + /** * @brief enables iterating over linear allocator with * c++ iterators */ public: - using raw_allocator_type = std::remove_const_t; - using value_type = typename allocator_type::value_type; - using pointer = typename allocator_type::value_type *; - using const_ptr_type = const value_type *; - using reference = typename allocator_type::value_type &; - using const_reference_type = const value_type &; - using iterator_category = std::random_access_iterator_tag; - using difference_type = ptrdiff_t; + using raw_allocator_type = std::remove_const_t; + using value_type = typename allocator_type::value_type; + using pointer = typename allocator_type::value_type*; + using const_ptr_type = const value_type*; + using reference = typename allocator_type::value_type&; + using const_reference_type = const value_type&; + using iterator_category = std::random_access_iterator_tag; + using difference_type = ptrdiff_t; private: - const allocator_type *storage_ = nullptr; - size_t index_ = 0; - size_t begin_ = 0; - size_t end_ = 0; + const allocator_type* storage_ = nullptr; + size_t index_ = 0; + size_t begin_ = 0; + size_t end_ = 0; public: - flat_linear_allocator_iterator() = default; - - explicit flat_linear_allocator_iterator(allocator_type *storage, size_t index) - : storage_(storage) - , index_(index) - , begin_(0) - , end_(storage->size()) - {} - - explicit flat_linear_allocator_iterator(allocator_type *storage, - size_t index, - size_t begin, - size_t end) - : storage_(storage) - , index_(index) - , begin_(begin) - , end_(end) - {} - - explicit flat_linear_allocator_iterator(const allocator_type *storage, size_t index) - : storage_(storage) - , index_(index) - , begin_(0) - , end_(storage->size()) - {} - - explicit flat_linear_allocator_iterator(const allocator_type *storage, - size_t index, - size_t begin, - size_t end) - : storage_(storage) - , index_(index) - , begin_(begin) - , end_(end) - {} - reference operator*() - { - BOOST_MATH_ASSERT(index_ >= begin_ && index_ < end_); - return (*storage_->data_[index_ / buffer_size])[index_ % buffer_size]; - } - - const_reference_type operator*() const - { - BOOST_MATH_ASSERT(index_ >= begin_ && index_ < end_); - return (*storage_->data_[index_ / buffer_size])[index_ % buffer_size]; - } - - pointer operator->() - { - BOOST_MATH_ASSERT(index_ >= begin_ && index_ < end_); - return &operator*(); - } - - const_ptr_type operator->() const - { - BOOST_MATH_ASSERT(index_ >= begin_ && index_ < end_); - return &operator*(); - } - flat_linear_allocator_iterator &operator++() - { - ++index_; - return *this; - } - - flat_linear_allocator_iterator operator++(int) - { - auto tmp = *this; - ++(*this); - return tmp; - } - - flat_linear_allocator_iterator &operator--() - { - --index_; - return *this; - } - - flat_linear_allocator_iterator operator--(int) - { - auto tmp = *this; - --(*this); - return tmp; - } - - bool operator==(const flat_linear_allocator_iterator &other) const - { - return index_ == other.index_ && storage_ == other.storage_; - } - - bool operator!=(const flat_linear_allocator_iterator &other) const { return !(*this == other); } - - flat_linear_allocator_iterator operator+(difference_type n) const - { - return flat_linear_allocator_iterator(storage_, index_ + static_cast(n), begin_, end_); - } - - flat_linear_allocator_iterator &operator+=(difference_type n) - { - index_ += n; - return *this; - } - - flat_linear_allocator_iterator operator-(difference_type n) const - { - return flat_linear_allocator_iterator(storage_, index_ - n, begin_, end_); - } - flat_linear_allocator_iterator &operator-=(difference_type n) - { - index_ -= n; - return *this; - } - - difference_type operator-(const flat_linear_allocator_iterator &other) const - { - return static_cast(index_) - static_cast(other.index_); - } - - reference operator[](difference_type n) { return *(*this + n); } - - const_reference_type operator[](difference_type n) const { return *(*this + n); } - - bool operator<(const flat_linear_allocator_iterator &other) const - { - return index_ < other.index_; - } - - bool operator>(const flat_linear_allocator_iterator &other) const - { - return index_ > other.index_; - } - - bool operator<=(const flat_linear_allocator_iterator &other) const - { - return index_ <= other.index_; - } - - bool operator>=(const flat_linear_allocator_iterator &other) const - { - return index_ >= other.index_; - } - - bool operator!() const noexcept { return storage_ == nullptr; } + flat_linear_allocator_iterator() = default; + + explicit flat_linear_allocator_iterator(allocator_type* storage, size_t index) + : storage_(storage) + , index_(index) + , begin_(0) + , end_(storage->size()) + { + } + + explicit flat_linear_allocator_iterator(allocator_type* storage, + size_t index, + size_t begin, + size_t end) + : storage_(storage) + , index_(index) + , begin_(begin) + , end_(end) + { + } + + explicit flat_linear_allocator_iterator(const allocator_type* storage, + size_t index) + : storage_(storage) + , index_(index) + , begin_(0) + , end_(storage->size()) + { + } + + explicit flat_linear_allocator_iterator(const allocator_type* storage, + size_t index, + size_t begin, + size_t end) + : storage_(storage) + , index_(index) + , begin_(begin) + , end_(end) + { + } + reference operator*() + { + BOOST_MATH_ASSERT(index_ >= begin_ && index_ < end_); + return (*storage_->data_[index_ / buffer_size])[index_ % buffer_size]; + } + + const_reference_type operator*() const + { + BOOST_MATH_ASSERT(index_ >= begin_ && index_ < end_); + return (*storage_->data_[index_ / buffer_size])[index_ % buffer_size]; + } + + pointer operator->() + { + BOOST_MATH_ASSERT(index_ >= begin_ && index_ < end_); + return &operator*(); + } + + const_ptr_type operator->() const + { + BOOST_MATH_ASSERT(index_ >= begin_ && index_ < end_); + return &operator*(); + } + flat_linear_allocator_iterator& operator++() + { + ++index_; + return *this; + } + + flat_linear_allocator_iterator operator++(int) + { + auto tmp = *this; + ++(*this); + return tmp; + } + + flat_linear_allocator_iterator& operator--() + { + --index_; + return *this; + } + + flat_linear_allocator_iterator operator--(int) + { + auto tmp = *this; + --(*this); + return tmp; + } + + bool operator==(const flat_linear_allocator_iterator& other) const + { + return index_ == other.index_ && storage_ == other.storage_; + } + + bool operator!=(const flat_linear_allocator_iterator& other) const + { + return !(*this == other); + } + + flat_linear_allocator_iterator operator+(difference_type n) const + { + return flat_linear_allocator_iterator( + storage_, index_ + static_cast(n), begin_, end_); + } + + flat_linear_allocator_iterator& operator+=(difference_type n) + { + index_ += n; + return *this; + } + + flat_linear_allocator_iterator operator-(difference_type n) const + { + return flat_linear_allocator_iterator(storage_, index_ - n, begin_, end_); + } + flat_linear_allocator_iterator& operator-=(difference_type n) + { + index_ -= n; + return *this; + } + + difference_type operator-(const flat_linear_allocator_iterator& other) const + { + return static_cast(index_) - + static_cast(other.index_); + } + + reference operator[](difference_type n) { return *(*this + n); } + + const_reference_type operator[](difference_type n) const + { + return *(*this + n); + } + + bool operator<(const flat_linear_allocator_iterator& other) const + { + return index_ < other.index_; + } + + bool operator>(const flat_linear_allocator_iterator& other) const + { + return index_ > other.index_; + } + + bool operator<=(const flat_linear_allocator_iterator& other) const + { + return index_ <= other.index_; + } + + bool operator>=(const flat_linear_allocator_iterator& other) const + { + return index_ >= other.index_; + } + + bool operator!() const noexcept { return storage_ == nullptr; } }; /* memory management helps for tape */ template class flat_linear_allocator { - /** @brief basically a vector> + /** @brief basically a vector> * intended to work like a vector that allocates memory in chunks * and doesn't invalidate references * */ public: - // store vector of unique pointers to arrays - // to avoid vector reference invalidation - using buffer_type = std::array; - using buffer_ptr = std::unique_ptr>; + // store vector of unique pointers to arrays + // to avoid vector reference invalidation + using buffer_type = std::array; + using buffer_ptr = std::unique_ptr>; private: - std::vector data_; - size_t total_size_ = 0; - std::vector checkpoints_; //{0}; + std::vector data_; + size_t total_size_ = 0; + std::vector checkpoints_; //{0}; public: - friend class flat_linear_allocator_iterator, - buffer_size>; - friend class flat_linear_allocator_iterator, - buffer_size>; - using value_type = RealType; - using iterator - = flat_linear_allocator_iterator, buffer_size>; - using const_iterator - = flat_linear_allocator_iterator, - buffer_size>; - - size_t buffer_id() const noexcept { return total_size_ / buffer_size; } - size_t item_id() const noexcept { return total_size_ % buffer_size; } + friend class flat_linear_allocator_iterator< + flat_linear_allocator, + buffer_size>; + friend class flat_linear_allocator_iterator< + const flat_linear_allocator, + buffer_size>; + using value_type = RealType; + using iterator = + flat_linear_allocator_iterator, + buffer_size>; + using const_iterator = flat_linear_allocator_iterator< + const flat_linear_allocator, + buffer_size>; + + size_t buffer_id() const noexcept { return total_size_ / buffer_size; } + size_t item_id() const noexcept { return total_size_ % buffer_size; } private: - void allocate_buffer() - { - data_.emplace_back(std::make_unique()); - } + void allocate_buffer() + { + data_.emplace_back(std::make_unique()); + } public: - flat_linear_allocator() { allocate_buffer(); } - flat_linear_allocator(const flat_linear_allocator &) = delete; - flat_linear_allocator &operator=(const flat_linear_allocator &) = delete; - flat_linear_allocator(flat_linear_allocator &&) = delete; - flat_linear_allocator &operator=(flat_linear_allocator &&) = delete; - ~flat_linear_allocator() - { - destroy_all(); - data_.clear(); - } - - void destroy_all() - { - for (size_t i = 0; i < total_size_; ++i) { - size_t bid = i / buffer_size; - size_t iid = i % buffer_size; - (*data_[bid])[iid].~RealType(); - } + flat_linear_allocator() { allocate_buffer(); } + flat_linear_allocator(const flat_linear_allocator&) = delete; + flat_linear_allocator& operator=(const flat_linear_allocator&) = delete; + flat_linear_allocator(flat_linear_allocator&&) = delete; + flat_linear_allocator& operator=(flat_linear_allocator&&) = delete; + ~flat_linear_allocator() + { + destroy_all(); + data_.clear(); + } + + void destroy_all() + { + for (size_t i = 0; i < total_size_; ++i) { + size_t bid = i / buffer_size; + size_t iid = i % buffer_size; + (*data_[bid])[iid].~RealType(); } - /** @brief + } + /** @brief * helper functions to clear tape and create block in tape */ - void clear() - { - data_.clear(); - total_size_ = 0; - checkpoints_.clear(); - allocate_buffer(); - } - - // doesn't delete anything, only sets the current index to zero - void reset() { total_size_ = 0; } - void rewind() { total_size_ = 0; }; - - // adds current index as a checkpoint to be able to walk back to - void add_checkpoint() - { - if (total_size_ > 0) { - checkpoints_.push_back(total_size_ - 1); - } else { - checkpoints_.push_back(0); - } - }; - - /** @brief clears all checkpoints + void clear() + { + data_.clear(); + total_size_ = 0; + checkpoints_.clear(); + allocate_buffer(); + } + + // doesn't delete anything, only sets the current index to zero + void reset() { total_size_ = 0; } + void rewind() { total_size_ = 0; }; + + // adds current index as a checkpoint to be able to walk back to + void add_checkpoint() + { + checkpoints_.push_back(total_size_); + /* + * if (total_size_ > 0) { + checkpoints_.push_back(total_size_ - 1); + } else { + checkpoints_.push_back(0); + }*/ + }; + + /** @brief clears all checkpoints * */ - void reset_checkpoints() { checkpoints_.clear(); } - - void rewind_to_last_checkpoint() { total_size_ = checkpoints_.back(); } - void rewind_to_checkpoint_at(size_t index) { total_size_ = checkpoints_[index]; } - - void fill(const RealType &val) - { - for (size_t i = 0; i < total_size_; ++i) { - size_t bid = i / buffer_size; - size_t iid = i % buffer_size; - (*data_[bid])[iid] = val; - } + void reset_checkpoints() { checkpoints_.clear(); } + + void rewind_to_last_checkpoint() { total_size_ = checkpoints_.back(); } + void rewind_to_checkpoint_at(size_t index) + { + total_size_ = checkpoints_[index]; + } + + void fill(const RealType& val) + { + for (size_t i = 0; i < total_size_; ++i) { + size_t bid = i / buffer_size; + size_t iid = i % buffer_size; + (*data_[bid])[iid] = val; } + } - /** @brief emplaces back object at the end of the + /** @brief emplaces back object at the end of the * data structure, calls default constructor */ - iterator emplace_back() - { - if (item_id() == 0 && total_size_ != 0) { - allocate_buffer(); - } - size_t bid = buffer_id(); - size_t iid = item_id(); - - RealType *ptr = &(*data_[bid])[iid]; - new (ptr) RealType(); - ++total_size_; - return iterator(this, total_size_ - 1); - }; - - /** @brief, emplaces back object at end of data structure, + iterator emplace_back() + { + if (item_id() == 0 && total_size_ != 0) { + allocate_buffer(); + } + size_t bid = buffer_id(); + size_t iid = item_id(); + + RealType* ptr = &(*data_[bid])[iid]; + new (ptr) RealType(); + ++total_size_; + return iterator(this, total_size_ - 1); + }; + + /** @brief, emplaces back object at end of data structure, * passes arguments to constructor */ - template - iterator emplace_back(Args &&...args) - { - if (item_id() == 0 && total_size_ != 0) { - allocate_buffer(); - } - BOOST_MATH_ASSERT(buffer_id() < data_.size()); - BOOST_MATH_ASSERT(item_id() < buffer_size); - RealType *ptr = &(*data_[buffer_id()])[item_id()]; - new (ptr) RealType(std::forward(args)...); - ++total_size_; - return iterator(this, total_size_ - 1); + template + iterator emplace_back(Args&&... args) + { + if (item_id() == 0 && total_size_ != 0) { + allocate_buffer(); } - /** @brief default constructs n objects at end of + BOOST_MATH_ASSERT(buffer_id() < data_.size()); + BOOST_MATH_ASSERT(item_id() < buffer_size); + RealType* ptr = &(*data_[buffer_id()])[item_id()]; + new (ptr) RealType(std::forward(args)...); + ++total_size_; + return iterator(this, total_size_ - 1); + } + /** @brief default constructs n objects at end of * data structure, n known at compile time */ - template - iterator emplace_back_n() - { - size_t bid = buffer_id(); - size_t iid = item_id(); - if (iid + n < buffer_size) { - RealType *ptr = &(*data_[bid])[iid]; - for (size_t i = 0; i < n; ++i) { - new (ptr + i) RealType(); - } - total_size_ += n; - return iterator(this, total_size_ - n, total_size_ - n, total_size_); - } else { - size_t allocs_in_curr_buffer = buffer_size - iid; - size_t allocs_in_next_buffer = n - (buffer_size - iid); - RealType *ptr = &(*data_[bid])[iid]; - for (size_t i = 0; i < allocs_in_curr_buffer; ++i) { - new (ptr + i) RealType(); - } - allocate_buffer(); - bid = data_.size() - 1; - iid = 0; - total_size_ += n; - - RealType *ptr2 = &(*data_[bid])[iid]; - for (size_t i = 0; i < allocs_in_next_buffer; i++) { - new (ptr2 + i) RealType(); - } - return iterator(this, total_size_ - n, total_size_ - n, total_size_); - } + template + iterator emplace_back_n() + { + size_t bid = buffer_id(); + size_t iid = item_id(); + if (iid + n < buffer_size) { + RealType* ptr = &(*data_[bid])[iid]; + for (size_t i = 0; i < n; ++i) { + new (ptr + i) RealType(); + } + total_size_ += n; + return iterator(this, total_size_ - n, total_size_ - n, total_size_); + } else { + size_t allocs_in_curr_buffer = buffer_size - iid; + size_t allocs_in_next_buffer = n - (buffer_size - iid); + RealType* ptr = &(*data_[bid])[iid]; + for (size_t i = 0; i < allocs_in_curr_buffer; ++i) { + new (ptr + i) RealType(); + } + allocate_buffer(); + bid = data_.size() - 1; + iid = 0; + total_size_ += n; + + RealType* ptr2 = &(*data_[bid])[iid]; + for (size_t i = 0; i < allocs_in_next_buffer; i++) { + new (ptr2 + i) RealType(); + } + return iterator(this, total_size_ - n, total_size_ - n, total_size_); } - /** @brief default constructs n objects at end of + } + /** @brief default constructs n objects at end of * data structure, n known at run time */ - iterator emplace_back_n(size_t n) - { - size_t bid = buffer_id(); - size_t iid = item_id(); - if (iid + n < buffer_size) { - RealType *ptr = &(*data_[bid])[iid]; - for (size_t i = 0; i < n; ++i) { - new (ptr + i) RealType(); - } - total_size_ += n; - return iterator(this, total_size_ - n, total_size_ - n, total_size_); - } else { - size_t allocs_in_curr_buffer = buffer_size - iid; - size_t allocs_in_next_buffer = n - (buffer_size - iid); - RealType *ptr = &(*data_[bid])[iid]; - for (size_t i = 0; i < allocs_in_curr_buffer; ++i) { - new (ptr + i) RealType(); - } - allocate_buffer(); - bid = data_.size() - 1; - iid = 0; - total_size_ += n; - - RealType *ptr2 = &(*data_[bid])[iid]; - for (size_t i = 0; i < allocs_in_next_buffer; i++) { - new (ptr2 + i) RealType(); - } - return iterator(this, total_size_ - n, total_size_ - n, total_size_); - } + iterator emplace_back_n(size_t n) + { + size_t bid = buffer_id(); + size_t iid = item_id(); + if (iid + n < buffer_size) { + RealType* ptr = &(*data_[bid])[iid]; + for (size_t i = 0; i < n; ++i) { + new (ptr + i) RealType(); + } + total_size_ += n; + return iterator(this, total_size_ - n, total_size_ - n, total_size_); + } else { + size_t allocs_in_curr_buffer = buffer_size - iid; + size_t allocs_in_next_buffer = n - (buffer_size - iid); + RealType* ptr = &(*data_[bid])[iid]; + for (size_t i = 0; i < allocs_in_curr_buffer; ++i) { + new (ptr + i) RealType(); + } + allocate_buffer(); + bid = data_.size() - 1; + iid = 0; + total_size_ += n; + + RealType* ptr2 = &(*data_[bid])[iid]; + for (size_t i = 0; i < allocs_in_next_buffer; i++) { + new (ptr2 + i) RealType(); + } + return iterator(this, total_size_ - n, total_size_ - n, total_size_); } - - /** @brief number of elements */ - size_t size() const { return total_size_; } - - /** @brief total capacity */ - size_t capacity() const { return data_.size() * buffer_size; } - - /** @brief iterator helpers */ - iterator begin() { return iterator(this, 0); } - iterator end() { return iterator(this, total_size_); } - const_iterator begin() const { return const_iterator(this, 0); } - const_iterator end() const { return const_iterator(this, total_size_); } - - iterator last_checkpoint() { return iterator(this, checkpoints_.back(), 0, total_size_); } - iterator first_checkpoint() { return iterator(this, checkpoints_[0], 0, total_size_); }; - iterator checkpoint_at(size_t index) - { - return iterator(this, checkpoints_[index], 0, total_size_); - }; - - /** @brief searches for item in allocator + } + + /** @brief number of elements */ + size_t size() const { return total_size_; } + + /** @brief total capacity */ + size_t capacity() const { return data_.size() * buffer_size; } + + /** @brief iterator helpers */ + iterator begin() { return iterator(this, 0); } + iterator end() { return iterator(this, total_size_); } + const_iterator begin() const { return const_iterator(this, 0); } + const_iterator end() const { return const_iterator(this, total_size_); } + + iterator last_checkpoint() + { + return iterator(this, checkpoints_.back(), 0, total_size_); + } + iterator first_checkpoint() + { + return iterator(this, checkpoints_[0], 0, total_size_); + }; + iterator checkpoint_at(size_t index) + { + return iterator(this, checkpoints_[index], 0, total_size_); + }; + + /** @brief searches for item in allocator * only used to find gradient nodes for propagation */ - iterator find(const RealType *const item) - { - return std::find_if(begin(), end(), [&](const RealType &val) { return &val == item; }); - } - /** @brief vector like access, + iterator find(const RealType* const item) + { + return std::find_if( + begin(), end(), [&](const RealType& val) { return &val == item; }); + } + /** @brief vector like access, * currently unused anywhere but very useful for debugging */ - RealType &operator[](std::size_t i) - { - BOOST_MATH_ASSERT(i < total_size_); - return (*data_[i / buffer_size])[i % buffer_size]; - } - const RealType &operator[](std::size_t i) const - { - BOOST_MATH_ASSERT(i < total_size_); - return (*data_[i / buffer_size])[i % buffer_size]; - } + RealType& operator[](std::size_t i) + { + BOOST_MATH_ASSERT(i < total_size_); + return (*data_[i / buffer_size])[i % buffer_size]; + } + const RealType& operator[](std::size_t i) const + { + BOOST_MATH_ASSERT(i < total_size_); + return (*data_[i / buffer_size])[i % buffer_size]; + } }; } // namespace detail } // namespace reverse_mode diff --git a/include/boost/math/optimization/detail/differentiable_opt_utilties.hpp b/include/boost/math/optimization/detail/differentiable_opt_utilties.hpp new file mode 100644 index 0000000000..8fd3c2a083 --- /dev/null +++ b/include/boost/math/optimization/detail/differentiable_opt_utilties.hpp @@ -0,0 +1,157 @@ +// Copyright Maksym Zhelyenzyakov 2025-2026. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// https://www.boost.org/LICENSE_1_0.txt) +#ifndef BOOST_MATH_OPTIMIZATION_DETAIL_DIFFERENTIABLE_OPT_UTILITIES_HPP +#define BOOST_MATH_OPTIMIZATION_DETAIL_DIFFERENTIABLE_OPT_UTILITIES_HPP +#include +#include +#include +#include +#include + +namespace boost { +namespace math { +namespace optimization { + +namespace rdiff = boost::math::differentiation::reverse_mode; + +/** @brief> helper to get the underlying realtype from + * update policy + * */ +template +struct update_policy_real_type; + +template class UpdPol, typename RealType> +struct update_policy_real_type> +{ + using type = RealType; +}; + +template +using update_policy_real_type_t = + typename update_policy_real_type::type>::type; + +/** @brief> get realtype from argument container + * */ +template +struct argument_container_t +{ + using type = typename argument_container_t::type>::type; +}; + +template +struct argument_container_t> +{ + using type = ValueType; +}; + +template +struct argument_container_t, N>> +{ + using type = RealType; +}; + +template class Container, typename ValueType, typename... Args> +struct argument_container_t> +{ + using type = ValueType; +}; + +template class Container, + typename RealType, + std::size_t N, + typename... Args> +struct argument_container_t, Args...>> +{ + using type = RealType; +}; +/******************************************************************************/ +/** @brief simple blas helpers + */ +template +auto +dot(const Container& x, const Container& y) -> typename Container::value_type +{ + using T = typename Container::value_type; + BOOST_MATH_ASSERT(x.size() == y.size()); + return std::inner_product(x.begin(), x.end(), y.begin(), T(0)); +} + +template +auto +norm_2(const Container& x) -> typename Container::value_type +{ + return sqrt(dot(x, x)); +} + +template +auto +norm_1(const Container& x) -> typename Container::value_type +{ + using T = typename Container::value_type; + T ret{ 0 }; + for (auto& xi : x) { + ret += abs(xi); + } + return ret; +} + +template +T +norm_inf(const std::vector& x) +{ + BOOST_ASSERT(!x.empty()); + + T max_val = std::abs(x[0]); + const std::size_t n = x.size(); + + for (std::size_t i = 1; i < n; ++i) { + const T abs_val = std::abs(x[i]); + if (abs_val > max_val) + max_val = abs_val; + } + return max_val; +} +/** @brief alpha*x (alpha is scalar, x is vector */ +template +void +scale(Container& x, const RealType& alpha) +{ + for (auto& xi : x) { + xi *= alpha; + } +} + +/** @brief y += alpha * x + */ +template +void +axpy(RealType alpha, const ContainerX& x, ContainerY& y) +{ + BOOST_MATH_ASSERT(x.size() == y.size()); + const size_t n = x.size(); + for (size_t i = 0; i < n; ++i) { + y[i] += alpha * x[i]; + } +} +/******************************************************************************/ +template +std::vector +random_vector(size_t n) +{ + /** @brief> generates a random std::vector of size n + * using mt19937 algorithm + */ + static std::mt19937 rng{ std::random_device{}() }; + static std::uniform_real_distribution dist(0.0, 1.0); + + std::vector result(n); + std::generate(result.begin(), result.end(), [&] { return static_cast(dist(rng)); }); + return result; +} + +} // namespace optimization +} // namespace math +} // namespace boost +#endif diff --git a/include/boost/math/optimization/detail/gradient_opt_base.hpp b/include/boost/math/optimization/detail/gradient_opt_base.hpp new file mode 100644 index 0000000000..e13b79279d --- /dev/null +++ b/include/boost/math/optimization/detail/gradient_opt_base.hpp @@ -0,0 +1,92 @@ +// Copyright Maksym Zhelyenzyakov 2025-2026. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// https://www.boost.org/LICENSE_1_0.txt) +#ifndef BOOST_MATH_OPTIMIZATION_DETAIL_GRADIENT_OPT_BASE_HPP +#define BOOST_MATH_OPTIMIZATION_DETAIL_GRADIENT_OPT_BASE_HPP +#include + +namespace boost { +namespace math { +namespace optimization { + +namespace rdiff = boost::math::differentiation::reverse_mode; + +/** + * @brief The abstract_optimizer class implementing common variables + * and methods across optimizers + * + * @tparam> ArgumentContainer + * @tparam> RealType + * @tparam> Objective + * @tparam> InitializationPolicy + * + */ + +template +class abstract_optimizer +{ +protected: + Objective objective_; // obj function + ArgumentContainer& x_; // arguments to objective function + std::vector g_; // container of references to gradients + ObjectiveEvalPolicy obj_eval_; // how to evaluate your funciton + GradEvalPolicy grad_eval_; // how to evaluate/bind gradients + InitializationPolicy init_; // how to initialize the problem + UpdatePolicy update_; // update step + RealType obj_v_; // objective value (for history) + // access derived class + DerivedOptimizer& derived() { return static_cast(*this); } + const DerivedOptimizer& derived() const + { + return static_cast(*this); + } + + void step_impl() + { + grad_eval_(objective_, x_, obj_eval_, obj_v_, g_); + for (size_t i = 0; i < x_.size(); ++i) { + update_(x_[i], g_[i]); + } + }; + +public: + using argument_container_t = ArgumentContainer; + using real_type_t = RealType; + + abstract_optimizer(Objective&& objective, + ArgumentContainer& x, + InitializationPolicy&& ip, + ObjectiveEvalPolicy&& oep, + GradEvalPolicy&& gep, + UpdatePolicy&& up) + : objective_(std::forward(objective)) + , x_(x) + , obj_eval_(std::forward(oep)) + , grad_eval_(std::forward(gep)) + , init_(std::forward(ip)) + , update_(std::forward(up)) + { + init_(x_); // initialize your problem + g_.resize(x_.size()); // initialize space for gradients + } + + ArgumentContainer& arguments() { return derived().x_; } + const ArgumentContainer& arguments() const { return derived().x_; } + + RealType& objective_value() { return derived().obj_v_; } + const RealType& objective_value() const { return derived().obj_v_; } + std::vector& gradients() { return derived().g_; } + const std::vector& gradients() const { return derived().g_; } +}; +} // namespace optimization +} // namespace math +} // namespace boost +#endif diff --git a/include/boost/math/optimization/detail/line_search_policies.hpp b/include/boost/math/optimization/detail/line_search_policies.hpp new file mode 100644 index 0000000000..1bc3c1cc4d --- /dev/null +++ b/include/boost/math/optimization/detail/line_search_policies.hpp @@ -0,0 +1,206 @@ +// Copyright Maksym Zhelyenzyakov 2025-2026. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// https://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_MATH_OPTIMIZATION_DETAIL_LINE_SEARCH_POLICIES_HPP +#define BOOST_MATH_OPTIMIZATION_DETAIL_LINE_SEARCH_POLICIES_HPP + +#include +#include +#include +namespace boost { +namespace math { +namespace optimization { + +/** + * @brief> Armijo condition backtracking line search + * https://en.wikipedia.org/wiki/Backtracking_line_search + * + * f(x+alpha p) <= f(x) + alpha * c * grad(f)^T + * + * Jorge Nocedal and Stephen J. Wright, + * Numerical Optimization, 2nd Edition, + * Springer, 2006. + * + * Algorithm 3.1: Backtracking Line Search + * (Page 37) + */ +template +class armijo_line_search_policy +{ +private: + RealType alpha0_; // initial step size + RealType c_; // sufficient decrease constant + RealType rho_; // backtracking factor + int max_iter_; // maximum backtracking steps + +public: + armijo_line_search_policy(RealType alpha0 = 1.0, + RealType c = 1e-4, + RealType rho = 0.5, + int max_iter = 20) + : alpha0_(alpha0) + , c_(c) + , rho_(rho) + , max_iter_(max_iter) + { + } + + template + RealType operator()(Objective& objective, + ObjectiveEvalPolicy& obj_eval, + GradientEvalPolicy& grad_eval, + ArgumentContainer& x, + const std::vector& g, + const std::vector& p, + RealType f_x) const + { + /** @brief> line search + * */ + RealType alpha = alpha0_; + ArgumentContainer x_trial; // = x; // copy + const RealType gTp = dot(g, p); + + for (int iter = 0; iter < max_iter_; ++iter) { + x_trial = x; + axpy(alpha, p, x_trial); + auto f_trial = obj_eval(objective, x_trial); + if (f_trial <= + f_x + c_ * alpha * gTp) // check if armijo condition is satisfied + return alpha; + alpha *= rho_; + } + return alpha; + } +}; + +/** @brief> Strong-Wolfe line search: + * Jorge Nocedal and Stephen J. Wright, + * Numerical Optimization, 2nd Edition, + * Springer, 2006. + * + * Algorithm 3.5 Line Search Algorithm (Strong Wolfe Conditions) + * pages 60-61 + */ +template +class strong_wolfe_line_search_policy +{ +private: + RealType alpha0_; // initial step size + RealType c1_; // Armijo constant (sufficient decrease) + RealType c2_; // curvature constant + RealType rho_; // backtracking factor + int max_iter_; // maximum iterations +public: + strong_wolfe_line_search_policy(RealType alpha0 = 1.0, + RealType c1 = 1e-4, + RealType c2 = 0.9, + RealType rho = 2.0, + int max_iter = 20) + : alpha0_(alpha0) + , c1_(c1) + , c2_(c2) + , rho_(rho) + , max_iter_(max_iter) + { + } + template + RealType operator()(Objective& objective, + ObjectiveEvalPolicy& obj_eval, + GradientEvalPolicy& grad_eval, + ArgumentContainer& x, + const std::vector& g, + const std::vector& p, + RealType f_x) const + { + RealType gTp0 = dot(g, p); + RealType alpha_prev{0}; + RealType f_prev = f_x; + RealType alpha = alpha0_; + + ArgumentContainer x_trial; + std::vector g_trial(g.size()); + for (int i = 0; i < max_iter_; ++i) { + x_trial = x; // explicit copy + axpy(alpha, p, x_trial); + RealType f_trial = static_cast(obj_eval(objective, x_trial)); + if ((f_trial > f_x + c1_ * alpha * gTp0) || + (i > 0 && f_trial >= f_prev)) { + return zoom( + objective, obj_eval, grad_eval, x, p, f_x, gTp0, alpha_prev, alpha); + } + grad_eval(objective, x_trial, obj_eval, f_trial, g_trial); + RealType gTp = dot(g_trial, p); + + if (fabs(gTp) <= c2_ * fabs(gTp0)) { + return alpha; + } + + if (gTp >= 0) { + return zoom( + objective, obj_eval, grad_eval, x, p, f_x, gTp0, alpha, alpha_prev); + } + alpha_prev = alpha; + f_prev = f_trial; + alpha *= rho_; + } + + return alpha; + } + +private: + template + RealType zoom(Objective& objective, + ObjectiveEvalPolicy& obj_eval, + GradientEvalPolicy& grad_eval, + ArgumentContainer& x, + const std::vector& p, + RealType f_x, + RealType gTp0, + RealType alpha_lo, + RealType alpha_hi) const + { + ArgumentContainer x_trial; + std::vector g_trial(p.size()); + + for (int iter = 0; iter < max_iter_; ++iter) { + const RealType alpha_mid = 0.5 * (alpha_lo + alpha_hi); + x_trial = x; + axpy(alpha_mid, p, x_trial); + RealType f_mid; + grad_eval(objective, x_trial, obj_eval, f_mid, g_trial); + RealType gTp_mid = dot(g_trial, p); + ArgumentContainer x_lo = x; + axpy(alpha_lo, p, x_lo); + RealType f_lo = static_cast(obj_eval(objective, x_lo)); + if ((f_mid > f_x + c1_ * alpha_mid * gTp0) || (f_mid >= f_lo)) { + alpha_hi = alpha_mid; + } else { + if (fabs(gTp_mid) <= c2_ * fabs(gTp0)) { + return alpha_mid; + } + if (gTp_mid * (alpha_hi - alpha_lo) >= 0) { + alpha_hi = alpha_lo; + } + alpha_lo = alpha_mid; + } + } + + return 0.5 * (alpha_lo + alpha_hi); + } +}; + +} // namespace optimization +} // namespace math +} // namespace boost +#endif // LINE_SEARCH_POLICIES_HPP diff --git a/include/boost/math/optimization/detail/rdiff_optimization_policies.hpp b/include/boost/math/optimization/detail/rdiff_optimization_policies.hpp new file mode 100644 index 0000000000..b4cad4b004 --- /dev/null +++ b/include/boost/math/optimization/detail/rdiff_optimization_policies.hpp @@ -0,0 +1,134 @@ +// Copyright Maksym Zhelyenzyakov 2025-2026. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// https://www.boost.org/LICENSE_1_0.txt) +#ifndef BOOST_MATH_OPTIMIZATION_DETAIL_RDIFF_OPTIMIZATION_POLICIES_HPP +#define BOOST_MATH_OPTIMIZATION_DETAIL_RDIFF_OPTIMIZATION_POLICIES_HPP + +#include +#include +#include + +namespace boost { +namespace math { +namespace optimization { + +namespace rdiff = boost::math::differentiation::reverse_mode; + +/******************************************************************/ +/** + * @brief> function evaluation policy for reverse mode autodiff + * @arg objective> objective function to evaluate + * @arg x> argument list + */ +template +struct reverse_mode_function_eval_policy +{ + template + rdiff::rvar operator()(Objective&& objective, + ArgumentContainer& x) + { + auto& tape = rdiff::get_active_tape(); + tape.zero_grad(); + tape.rewind_to_last_checkpoint(); + + return objective(x); + } +}; +/******************************************************************/ + +/** + * @brief> gradient evaluation policy + * @arg obj_f> objective + * @arg x> argument list + * @arg f_eval_olicy> funciton evaluation policy. These need to be + * done in tandem + * @arg obj_v> reference to variable inside gradient class + */ +template +struct reverse_mode_gradient_evaluation_policy +{ + template + void operator()(Objective&& obj_f, + ArgumentContainer& x, + FunctionEvaluationPolicy&& f_eval_pol, + RealType& obj_v, + std::vector& g) + { + // compute objective via eval policy that takes care of tape + rdiff::rvar v = f_eval_pol(obj_f, x); + v.backward(); + obj_v = v.item(); + g.resize(x.size()); + + // copy gradients into gradient vector + for (size_t i = 0; i < x.size(); ++i) { + g[i] = x[i].adjoint(); + } + } +}; +/****************************************************************** + * init policies + */ +template +struct tape_initializer_rvar +{ + template + void operator()(ArgumentContainer& x) const noexcept + { + static_assert(std::is_same>::value, + "ArgumentContainer::value_type must be rdiff::rvar"); + auto& tape = rdiff::get_active_tape(); + tape.add_checkpoint(); + } +}; + +template +struct random_uniform_initializer_rvar +{ + RealType low_, high_; + size_t seed_; + random_uniform_initializer_rvar(RealType low = 0, + RealType high = 1, + size_t seed = std::random_device{}()) + : low_(low) + , high_(high) + , seed_(seed) {}; + + template + void operator()(ArgumentContainer& x) const + { + static std::mt19937 gen{ std::random_device{}() }; + static std::uniform_real_distribution dist(0.0, 1.0); + for (auto& xi : x) { + xi = rdiff::rvar(static_cast(dist(gen))); + } + auto& tape = rdiff::get_active_tape(); + tape.add_checkpoint(); + } +}; + +template +struct costant_initializer_rvar +{ + RealType constant; + explicit costant_initializer_rvar(RealType v = 0) + : constant(v) {}; + template + void operator()(ArgumentContainer& x) const + { + for (auto& xi : x) { + xi = rdiff::rvar(constant); + } + auto& tape = rdiff::get_active_tape(); + tape.add_checkpoint(); + } +}; +} // namespace optimization +} // namespace math +} // namespace boost + +#endif diff --git a/include/boost/math/optimization/gradient_descent.hpp b/include/boost/math/optimization/gradient_descent.hpp new file mode 100644 index 0000000000..68972e2968 --- /dev/null +++ b/include/boost/math/optimization/gradient_descent.hpp @@ -0,0 +1,202 @@ +// Copyright Maksym Zhelyenzyakov 2025-2026. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// https://www.boost.org/LICENSE_1_0.txt) +#ifndef BOOST_MATH_OPTIMIZATION_GRADIENT_DESCENT_HPP +#define BOOST_MATH_OPTIMIZATION_GRADIENT_DESCENT_HPP +#include +#include +#include + +namespace boost { +namespace math { +namespace optimization { + +template +struct gradient_descent_update_policy +{ + RealType lr_; + gradient_descent_update_policy(RealType lr) + : lr_(lr) {}; + + template::value>::type> + void operator()(ArgumentType& x, RealType& g) + { + x.get_value() -= lr_ * g; + } + template::value, + int>::type = 0> + void operator()(ArgumentType& x, RealType& g) const + { + x -= lr_ * g; + } +}; + +/** + * @brief> Gradient Descent Optimizer. + * + * This class implements a gradient descent optimization strategy using the + * policies provided for initialization, objective evaluation, and gradient + * computation. It inherits from `abstract_optimizer`, which provides the + * general optimization framework. + * + * @tparam> ArgumentContainer Type of the parameter container (e.g. + * std::vector). + * @tparam> RealType Floating-point type + * @tparam> Objective Objective function type (functor or callable). + * @tparam> InitializationPolicy Policy controlling initialization of + * differentiable variables. + * @tparam> ObjectiveEvalPolicy Policy defining how the objective is evaluated. + * @tparam> GradEvalPolicy Policy defining how the gradient is computed. + */ + +template +class gradient_descent + : public abstract_optimizer, + gradient_descent> +{ + using base_opt = abstract_optimizer, + gradient_descent>; + +public: + using base_opt::base_opt; + /** + * @brief Perform one optimization step. + * + * defaults to a regular update inside abstract optimizer + * x -= lr * grad(f) + */ + void step() { this->step_impl(); } +}; + +/** + * @brief Create a gradient descent optimizer with default reverse-mode autodiff + policies. + * + * make_gradient_descent(objective, x) + * constructs gradient descent with objective function, and parameters x + * + * learning rate set to 0.01 by default + * + * initialization strategy : use specified, gradient tape taken care of by + * optimizer + * function eval policy : rvar function eval policy, to be used with + * boost::math::differentiation::reverse_mode::rvar + * + * gradient eval policy : rvar gradient evaluation policy + * + * gradient descent update policy : + * basically x -= lr * grad(f); + * + * make_gradient_descent(objective, x, lr) + * custom learning rate +*/ + +template +auto +make_gradient_descent(Objective&& obj, + ArgumentContainer& x, + RealType lr = RealType{ 0.01 }) +{ + return gradient_descent, + tape_initializer_rvar, + reverse_mode_function_eval_policy, + reverse_mode_gradient_evaluation_policy>( + std::forward(obj), + x, + tape_initializer_rvar{}, + reverse_mode_function_eval_policy{}, + reverse_mode_gradient_evaluation_policy{}, + gradient_descent_update_policy(lr)); +} + +template +auto +make_gradient_descent(Objective&& obj, + ArgumentContainer& x, + RealType lr, + InitializationPolicy&& ip) +{ + return gradient_descent, + InitializationPolicy, + reverse_mode_function_eval_policy, + reverse_mode_gradient_evaluation_policy>( + std::forward(obj), + x, + std::forward(ip), + reverse_mode_function_eval_policy{}, + reverse_mode_gradient_evaluation_policy{}, + gradient_descent_update_policy(lr)); +} + +template +auto +make_gradient_descent(Objective&& obj, + ArgumentContainer& x, + RealType& lr, + InitializationPolicy&& ip, + ObjectiveEvalPolicy&& oep, + GradEvalPolicy&& gep) +{ + return gradient_descent, + InitializationPolicy, + ObjectiveEvalPolicy, + GradEvalPolicy>( + std::forward(obj), + x, + std::forward(ip), + std::forward(oep), + std::forward(gep), + gradient_descent_update_policy{ lr }); +} + +} // namespace optimization +} // namespace math +} // namespace boost +#endif diff --git a/include/boost/math/optimization/gradient_optimizers.hpp b/include/boost/math/optimization/gradient_optimizers.hpp new file mode 100644 index 0000000000..f9e6a8de42 --- /dev/null +++ b/include/boost/math/optimization/gradient_optimizers.hpp @@ -0,0 +1,18 @@ +// Copyright Maksym Zhelyenzyakov 2025-2026. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// https://www.boost.org/LICENSE_1_0.txt) +#ifndef BOOST_MATH_OPTIMIZATION_GRADIENT_OPTIMIZERS_HPP +#define BOOST_MATH_OPTIMIZATION_GRADIENT_OPTIMIZERS_HPP +#include +#include +#include +#include + +namespace boost { +namespace math { +namespace optimization { +} // namespace optimization +} // namespace math +} // namespace boost +#endif diff --git a/include/boost/math/optimization/lbfgs.hpp b/include/boost/math/optimization/lbfgs.hpp new file mode 100644 index 0000000000..5554b7721d --- /dev/null +++ b/include/boost/math/optimization/lbfgs.hpp @@ -0,0 +1,382 @@ +// Copyright Maksym Zhelyenzyakov 2025-2026. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// https://www.boost.org/LICENSE_1_0.txt) +#ifndef BOOST_MATH_OPTIMIZATION_LBFGS_HPP +#define BOOST_MATH_OPTIMIZATION_LBFGS_HPP +#include +#include +#include +#include + +#include +#include + +namespace boost { +namespace math { +namespace optimization { + +/** @brief> Helper struct for L-BFGS + * + * stores state of L-BFGS optimizer + * @param> m = 10 -> history (how far back to look) + * @param> S - > x_k - x_{k-1} ( m states ) + * @param> Y - > g_k - g_{k-1} (m states) + * @param> rho - > 1/(y^T y) + * @param> g_prev, x_prev - > previous state of argument and gradient + * @param -> f_prev - > previous function value + * + * https://en.wikipedia.org/wiki/Limited-memory_BFGS + * + * Jorge Nocedal and Stephen J. Wright, + * Numerical Optimization, 2nd Edition, + * Springer, 2006. + * + * pages 176-180 + * algorithms 7.4/7.5 + * */ +template +struct lbfgs_optimizer_state +{ + size_t m = 10; // default history length + std::deque> S, Y; + std::deque rho; + std::vector g_prev, x_prev; + RealType f_prev = std::numeric_limits::quiet_NaN(); + const RealType EPS = std::numeric_limits::epsilon(); + + template + void update_state(ArgumentContainer& x, + std::vector& g_k, + RealType fk) + { + + // iteration 0 + if (g_prev.empty()) { + g_prev.assign(g_k.begin(), g_k.end()); + x_prev.resize(x.size()); + std::transform(x.begin(), x.end(), x_prev.begin(), [](const auto& xi) { + return static_cast(xi); + }); + f_prev = fk; + return; + } + + std::vector s_k(x.size()), y_k(g_k.size()); + for (size_t i = 0; i < x.size(); ++i) { + s_k[i] = static_cast(x[i]) - x_prev[i]; + y_k[i] = g_k[i] - g_prev[i]; + } + + RealType ys = dot(y_k, s_k); + RealType sn = sqrt(dot(s_k, s_k)); + RealType yn = sqrt(dot(y_k, y_k)); + + const RealType threshold = EPS * sn * yn; + if (ys > threshold && ys > RealType(0)) { // check if curvature if non-zero + if (S.size() == m) { // iteration > m + S.pop_front(); + Y.pop_front(); + rho.pop_front(); + } + S.push_back(std::move(s_k)); + Y.push_back(std::move(y_k)); + rho.push_back(RealType(1) / ys); + } + + g_prev.assign(g_k.begin(), g_k.end()); + // safely cast to realtype + std::transform(x.begin(), x.end(), x_prev.begin(), [](const auto& xi) { + return static_cast(xi); + }); + f_prev = fk; + } +}; + +/** @brief> helper update for l-bfgs + * x += alpha * search direction + * */ +template +struct lbfgs_update_policy +{ + template::value>::type> + void operator()(ArgumentType& x, RealType pk, RealType alpha) + { + x.get_value() += alpha * pk; + } + template::value, + int>::type = 0> + void operator()(ArgumentType& x, RealType pk, RealType alpha) + { + x += alpha * pk; + } +}; + +/** + * + * @brief Limited-memory BFGS (L-BFGS) optimizer + * + * The `lbfgs` class implements the Limited-memory BFGS optimization algorithm, + * a quasi-Newton method that approximates the inverse Hessian using a rolling + * window of the last `m` updates. It is suitable for medium- to large-scale + * optimization problems where full Hessian storage is infeasible. + * + * @tparam> ArgumentContainer: container type for parameters, e.g. + * std::vector + * @tparam> RealType scalar floating type (e.g. double, float) + * @tparam> Objective: objective function. must support "f(x)" evaluation + * @tparam> InitializationPolicy: policy for initializing x + * @tparam> ObjectiveEvalPolicy: policy for computing the objective value + * @tparam> GradEvalPolicy: policy for computing gradients + * @tparam> LineaSearchPolicy: e.g. Armijo, StrongWolfe + * + * https://en.wikipedia.org/wiki/Limited-memory_BFGS + */ + +template +class lbfgs + : public abstract_optimizer, + lbfgs> +{ + using base_opt = abstract_optimizer, + lbfgs>; + + const RealType EPS = std::numeric_limits::epsilon(); + lbfgs_optimizer_state state_; + LineSearchPolicy line_search_; + + std::vector compute_direction(const std::vector& gk) + { + const size_t n = gk.size(); + const size_t L = state_.S.size(); // since S changes when iter < m + + if (L == 0) { + std::vector p(n); + std::transform( + gk.begin(), gk.end(), p.begin(), [](RealType gi) { return -gi; }); + return p; + } + + std::vector q = gk; + std::vector alpha(L, RealType(0)); + for (size_t t = 0; t < L; ++t) { + const std::size_t i = L - 1 - t; // newest first + const RealType sTq = dot(state_.S[i], q); + alpha[i] = state_.rho[i] * sTq; + axpy(-alpha[i], state_.Y[i], q); + } + + const RealType sTy = dot(state_.S.back(), state_.Y.back()); + const RealType yTy = dot(state_.Y.back(), state_.Y.back()); + const RealType gamma = (yTy > RealType(0)) ? (sTy / yTy) : RealType(1); + + std::vector r = q; + scale(r, gamma); + + for (std::size_t i = 0; i < L; ++i) { + const RealType yTr = dot(state_.Y[i], r); + const RealType beta = state_.rho[i] * yTr; + axpy(alpha[i] - beta, state_.S[i], r); + } + scale(r, RealType{ -1 }); + return r; + } + +public: + using base_opt::base_opt; + lbfgs(Objective&& objective, + ArgumentContainer& x, + size_t m, + InitializationPolicy&& ip, + ObjectiveEvalPolicy&& oep, + GradEvalPolicy&& gep, + lbfgs_update_policy&& up, + LineSearchPolicy&& lsp) + : base_opt(std::forward(objective), + x, + std::forward(ip), + std::forward(oep), + std::forward(gep), + std::forward>(up)) + , line_search_(lsp) + { + state_.m = m; + + state_.S.clear(); + state_.Y.clear(); + state_.rho.clear(); + state_.g_prev.clear(); + state_.f_prev = std::numeric_limits::quiet_NaN(); + } + + void step() + { + auto& x = this->arguments(); + auto& g = this->gradients(); + auto& obj = this->objective_value(); + auto& obj_eval = this->obj_eval_; + auto& grad_eval = this->grad_eval_; + auto& objective = this->objective_; + auto& update = this->update_; + + grad_eval(objective, x, obj_eval, obj, g); + state_.update_state(x, g, obj); + std::vector p = compute_direction(g); + RealType alpha = line_search_(objective, obj_eval, grad_eval, x, g, p, obj); + for (size_t i = 0; i < x.size(); ++i) { + update(x[i], p[i], alpha); + } + } +}; + +template +auto +make_lbfgs(Objective&& obj, ArgumentContainer& x, std::size_t m = 10) +{ + using RealType = typename argument_container_t::type; + return lbfgs, + tape_initializer_rvar, + reverse_mode_function_eval_policy, + reverse_mode_gradient_evaluation_policy, + strong_wolfe_line_search_policy>( + std::forward(obj), + x, + m, + tape_initializer_rvar{}, + reverse_mode_function_eval_policy{}, + reverse_mode_gradient_evaluation_policy{}, + lbfgs_update_policy{}, + strong_wolfe_line_search_policy{}); +} + +template +auto +make_lbfgs(Objective&& obj, + ArgumentContainer& x, + std::size_t m, + InitializationPolicy&& ip) +{ + using RealType = typename argument_container_t::type; + + return lbfgs, + InitializationPolicy, + reverse_mode_function_eval_policy, + reverse_mode_gradient_evaluation_policy, + strong_wolfe_line_search_policy>( + std::forward(obj), + x, + m, + std::forward(ip), + reverse_mode_function_eval_policy{}, + reverse_mode_gradient_evaluation_policy{}, + lbfgs_update_policy{}, + strong_wolfe_line_search_policy{}); +} + +template +auto +make_lbfgs(Objective&& obj, + ArgumentContainer& x, + std::size_t m, + InitializationPolicy&& ip, + LineSearchPolicy&& lsp) +{ + using RealType = typename argument_container_t::type; + + return lbfgs, + InitializationPolicy, + reverse_mode_function_eval_policy, + reverse_mode_gradient_evaluation_policy, + LineSearchPolicy>( + std::forward(obj), + x, + m, + std::forward(ip), + reverse_mode_function_eval_policy{}, + reverse_mode_gradient_evaluation_policy{}, + lbfgs_update_policy{}, + std::forward(lsp)); +} + +template +auto +make_lbfgs(Objective&& obj, + ArgumentContainer& x, + std::size_t m, + InitializationPolicy&& ip, + FunctionEvalPolicy&& fep, + GradientEvalPolicy&& gep, + LineSearchPolicy&& lsp) +{ + using RealType = typename argument_container_t::type; + return lbfgs, + InitializationPolicy, + FunctionEvalPolicy, + GradientEvalPolicy, + LineSearchPolicy>(std::forward(obj), + x, + m, + std::forward(ip), + std::forward(fep), + std::forward(gep), + lbfgs_update_policy{}, + std::forward(lsp)); +} + +} // namespace optimization +} // namespace math +} // namespace boost +#endif diff --git a/include/boost/math/optimization/minimizer.hpp b/include/boost/math/optimization/minimizer.hpp new file mode 100644 index 0000000000..929c92b2f4 --- /dev/null +++ b/include/boost/math/optimization/minimizer.hpp @@ -0,0 +1,336 @@ +// Copyright Maksym Zhelyenzyakov 2025-2026. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// https://www.boost.org/LICENSE_1_0.txt) +#ifndef BOOST_MATH_OPTIMIZATION_MINIMIZER_HPP +#define BOOST_MATH_OPTIMIZATION_MINIMIZER_HPP +#include +#include +#include +#include +namespace boost { +namespace math { +namespace optimization { +template +struct optimization_result +{ + size_t num_iter = 0; + RealType objective_value; + std::vector objective_history; + bool converged; +}; + +template +std::ostream& +operator<<(std::ostream& os, const optimization_result& r) +{ + os << "optimization_result {\n" + << " num_iter = " << r.num_iter << "\n" + << " objective_value = " << r.objective_value << "\n" + << " converged = " << std::boolalpha << r.converged << "\n" + << " objective_history = ["; + + for (std::size_t i = 0; i < r.objective_history.size(); ++i) { + os << r.objective_history[i]; + if (i + 1 < r.objective_history.size()) { + os << ", "; + } + } + os << "]\n}\n"; + return os; +} +/*****************************************************************************************/ +template +struct gradient_norm_convergence_policy +{ + RealType tol_; + explicit gradient_norm_convergence_policy(RealType tol) + : tol_(tol) + { + } + + template + bool operator()(const GradientContainer& g, RealType /*objective_v*/) const + { + return norm_2(g) < tol_; + } +}; + +template +struct objective_tol_convergence_policy +{ + RealType tol_; + mutable RealType last_value_; + mutable bool first_call_; + + explicit objective_tol_convergence_policy(RealType tol) + : tol_(tol) + , last_value_(0) + , first_call_(true) + { + } + + template + bool operator()(const GradientContainer&, RealType objective_v) const + { + if (first_call_) { + last_value_ = objective_v; + first_call_ = false; + return false; + } + RealType diff = abs(objective_v - last_value_); + last_value_ = objective_v; + return diff < tol_; + } +}; + +template +struct relative_objective_tol_policy +{ + RealType rel_tol_; + mutable RealType last_value_; + mutable bool first_call_; + + explicit relative_objective_tol_policy(RealType rel_tol) + : rel_tol_(rel_tol) + , last_value_(0) + , first_call_(true) + { + } + + template + bool operator()(const GradientContainer&, RealType objective_v) const + { + if (first_call_) { + last_value_ = objective_v; + first_call_ = false; + return false; + } + RealType denom = max(1, abs(last_value_)); + RealType rel_diff = abs(objective_v - last_value_) / denom; + last_value_ = objective_v; + return rel_diff < rel_tol_; + } +}; + +template +struct combined_convergence_policy +{ + Policy1 p1_; + Policy2 p2_; + + combined_convergence_policy(Policy1 p1, Policy2 p2) + : p1_(p1) + , p2_(p2) + { + } + + template + bool operator()(const GradientContainer& g, RealType obj) const + { + return p1_(g, obj) || p2_(g, obj); + } +}; + +/*****************************************************************************************/ +struct max_iter_termination_policy +{ + size_t max_iter_; + max_iter_termination_policy(size_t max_iter) + : max_iter_(max_iter) {}; + bool operator()(size_t iter) + { + if (iter < max_iter_) { + return false; + } + return true; + } +}; + +struct wallclock_termination_policy +{ + std::chrono::steady_clock::time_point start_; + std::chrono::milliseconds max_time_; + + explicit wallclock_termination_policy(std::chrono::milliseconds max_time) + : start_(std::chrono::steady_clock::now()) + , max_time_(max_time) + { + } + + bool operator()(size_t /*iter*/) const + { + return std::chrono::steady_clock::now() - start_ > max_time_; + } +}; + +/*****************************************************************************************/ +template +struct unconstrained_policy +{ + void operator()(ArgumentContainer&) {} +}; + +template +struct box_constraints +{ + RealType min_, max_; + box_constraints(RealType min, RealType max) + : min_(min) + , max_(max) {}; + void operator()(ArgumentContainer& x) + { + for (auto& xi : x) { + xi = (xi < min_) ? min_ : (max_ < xi) ? max_ : xi; + } + } +}; + +template +struct nonnegativity_constraint +{ + void operator()(ArgumentContainer& x) const + { + for (auto& xi : x) { + if (xi < RealType{ 0 }) + xi = RealType{ 0 }; + } + } +}; +template +struct l2_ball_constraint +{ + RealType radius_; + + explicit l2_ball_constraint(RealType radius) + : radius_(radius) + { + } + + void operator()(ArgumentContainer& x) const + { + RealType norm2v = norm_2(x); + if (norm2v > radius_) { + RealType scale = radius_ / norm2v; + for (auto& xi : x) + xi *= scale; + } + } +}; + +template +struct l1_ball_constraint +{ + RealType radius_; + + explicit l1_ball_constraint(RealType radius) + : radius_(radius) + { + } + + void operator()(ArgumentContainer& x) const + { + RealType norm1v = norm_1(x); + + if (norm1v > radius_) { + RealType scale = radius_ / norm1v; + for (auto& xi : x) + xi *= scale; + } + } +}; +template +struct simplex_constraint +{ + void operator()(ArgumentContainer& x) const + { + RealType sum = RealType{ 0 }; + for (auto& xi : x) { + if (xi < RealType{ 0 }) + xi = RealType{ 0 }; // clip negatives + sum += xi; + } + if (sum > RealType{ 0 }) { + for (auto& xi : x) + xi /= sum; + } + } +}; + +template +struct function_constraint +{ + using func_t = void (*)(ArgumentContainer&); + + func_t f_; + + explicit function_constraint(func_t f) + : f_(f) + { + } + + void operator()(ArgumentContainer& x) const { f_(x); } +}; +template +struct unit_sphere_constraint +{ + void operator()(ArgumentContainer& x) const + { + RealType norm = norm_2(x); + if (norm > RealType{ 0 }) { + for (auto& xi : x) + xi /= norm; + } + } +}; +/*****************************************************************************************/ + +template +auto +minimize_impl(Optimizer& opt, + ConstraintPolicy project, + ConvergencePolicy converged, + TerminationPolicy terminate, + bool history) +{ + optimization_result result; + size_t iter = 0; + do { + opt.step(); + project(opt.arguments()); + ++iter; + if (history) { + result.objective_history.push_back(opt.objective_value()); + } + + } while (!converged(opt.gradients(), opt.objective_value()) && + !terminate(iter)); + result.num_iter = iter; + result.objective_value = opt.objective_value(); + result.converged = converged(opt.gradients(), opt.objective_value()); + return result; +} +template, + class ConvergencePolicy = + gradient_norm_convergence_policy, + class TerminationPolicy = max_iter_termination_policy> +auto +minimize(Optimizer& opt, + ConstraintPolicy project = ConstraintPolicy{}, + ConvergencePolicy converged = + ConvergencePolicy{ + static_cast(1e-3) }, + TerminationPolicy terminate = TerminationPolicy(100000), + bool history = true) +{ + return minimize_impl(opt, project, converged, terminate, history); +} +} // namespace optimization +} // namespace math +} // namespace boost +#endif diff --git a/include/boost/math/optimization/nesterov.hpp b/include/boost/math/optimization/nesterov.hpp new file mode 100644 index 0000000000..1c882f4019 --- /dev/null +++ b/include/boost/math/optimization/nesterov.hpp @@ -0,0 +1,208 @@ +// Copyright Maksym Zhelyenzyakov 2025-2026. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// https://www.boost.org/LICENSE_1_0.txt) +#ifndef BOOST_MATH_OPTIMIZATION_NESTEROV_HPP +#define BOOST_MATH_OPTIMIZATION_NESTEROV_HPP +#include +#include +#include +#include + +namespace boost { +namespace math { +namespace optimization { + +namespace rdiff = boost::math::differentiation::reverse_mode; + +/** + * @brief The nesterov_update_policy class + */ +template +struct nesterov_update_policy +{ + RealType lr_, mu_; + nesterov_update_policy(RealType lr, RealType mu) + : lr_(lr) + , mu_(mu) {}; + + template::value>::type> + void operator()(ArgumentType& x, RealType& g, RealType& v) + { + RealType v_prev = v; + v = mu_ * v - lr_ * g; + x.get_value() += -mu_ * v_prev + (static_cast(1) + mu_) * v; + } + template::value, + int>::type = 0> + void operator()(ArgumentType& x, RealType& g, RealType& v) const + { + const RealType v_prev = v; + v = mu_ * v - lr_ * g; + x += -mu_ * v_prev + (static_cast(1) + mu_) * v; + } + RealType lr() const noexcept { return lr_; } + RealType mu() const noexcept { return mu_; } +}; + +/** + * @brief The nesterov_accelerated_gradient class + * + * https://jlmelville.github.io/mize/nesterov.html + */ +template +class nesterov_accelerated_gradient + : public abstract_optimizer< + ArgumentContainer, + RealType, + Objective, + InitializationPolicy, + ObjectiveEvalPolicy, + GradEvalPolicy, + nesterov_update_policy, + nesterov_accelerated_gradient> +{ + using base_opt = + abstract_optimizer, + nesterov_accelerated_gradient>; + std::vector v_; + +public: + using base_opt::base_opt; + nesterov_accelerated_gradient(Objective&& objective, + ArgumentContainer& x, + InitializationPolicy&& ip, + ObjectiveEvalPolicy&& oep, + GradEvalPolicy&& gep, + nesterov_update_policy&& up) + : base_opt(std::forward(objective), + x, + std::forward(ip), + std::forward(oep), + std::forward(gep), + std::forward>(up)) + , v_(x.size(), RealType(0)) + { + } + + void step() + { + auto& x = this->arguments(); + auto& g = this->gradients(); + auto& obj = this->objective_value(); + auto& obj_eval = this->obj_eval_; + auto& grad_eval = this->grad_eval_; + auto& objective = this->objective_; + auto& update = this->update_; + + grad_eval(objective, x, obj_eval, obj, g); + + for (size_t i = 0; i < x.size(); ++i) { + update(x[i], g[i], v_[i]); + } + } +}; +template +auto +make_nag(Objective&& obj, + ArgumentContainer& x, + RealType lr = RealType{ 0.01 }, + RealType mu = RealType{ 0.95 }) +{ + return nesterov_accelerated_gradient< + ArgumentContainer, + RealType, + std::decay_t, + tape_initializer_rvar, + reverse_mode_function_eval_policy, + reverse_mode_gradient_evaluation_policy>( + std::forward(obj), + x, + tape_initializer_rvar{}, + reverse_mode_function_eval_policy{}, + reverse_mode_gradient_evaluation_policy{}, + nesterov_update_policy(lr, mu)); +} +template +auto +make_nag(Objective&& obj, + ArgumentContainer& x, + RealType lr, + RealType mu, + InitializationPolicy&& ip) +{ + return nesterov_accelerated_gradient< + ArgumentContainer, + RealType, + std::decay_t, + InitializationPolicy, + reverse_mode_function_eval_policy, + reverse_mode_gradient_evaluation_policy>( + std::forward(obj), + x, + std::forward(ip), + reverse_mode_function_eval_policy{}, + reverse_mode_gradient_evaluation_policy{}, + nesterov_update_policy(lr, mu)); +} +template +auto +make_nag(Objective&& obj, + ArgumentContainer& x, + RealType lr, + RealType mu, + InitializationPolicy&& ip, + ObjectiveEvalPolicy&& oep, + GradEvalPolicy&& gep) +{ + return nesterov_accelerated_gradient, + InitializationPolicy, + ObjectiveEvalPolicy, + GradEvalPolicy>( + std::forward(obj), + x, + std::forward(ip), + std::forward(oep), + std::forward(gep), + nesterov_update_policy{ lr, mu }); +} +} // namespace optimization +} // namespace math +} // namespace boost +#endif diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 279d547599..c5bde01635 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -1368,6 +1368,13 @@ test-suite test_reverse_mode_autodiff [ run test_reverse_mode_autodiff_basic_math_ops.cpp /boost/test//boost_unit_test_framework : : : gcc-mingw:-Wa,-mbig-obj off msvc:/bigobj release ] [ run test_reverse_mode_autodiff_error_functions.cpp /boost/test//boost_unit_test_framework : : : gcc-mingw:-Wa,-mbig-obj off msvc:/bigobj release ] ; + +test-suite gradient_based_optimizers + : + [ run test_gradient_descent_optimizer.cpp /boost/test//boost_unit_test_framework : : : gcc-mingw:-Wa,-mbig-obj off msvc:/bigobj release ] + [ run test_nesterov_optimizer.cpp /boost/test//boost_unit_test_framework : : : gcc-mingw:-Wa,-mbig-obj off msvc:/bigobj release ] + [ run test_lbfgs.cpp /boost/test//boost_unit_test_framework : : : gcc-mingw:-Wa,-mbig-obj off msvc:/bigobj release ] + ; # BEGIN AUTODIFF LONG RUNNING TESTS test-suite autodiff-long-running-tests : @@ -2355,6 +2362,6 @@ explicit no_eh_tests ; # Some aliases which group blocks of tests for CI testing: alias github_ci_block_1 : special_fun float128_tests distribution_tests mp misc concepts ; -alias github_ci_block_2 : quadrature interpolators autodiff test_reverse_mode_autodiff ../example//examples ../tools ; +alias github_ci_block_2 : quadrature interpolators autodiff test_reverse_mode_autodiff gradient_based_optimizers ../example//examples ../tools ; explicit github_ci_block_1 ; explicit github_ci_block_2 ; diff --git a/test/test_functions_for_optimization.hpp b/test/test_functions_for_optimization.hpp index b091984f8a..da989fc09e 100644 --- a/test/test_functions_for_optimization.hpp +++ b/test/test_functions_for_optimization.hpp @@ -12,13 +12,35 @@ #include #include +/* simple n-d quadratic function */ +template +RealType +quadratic(std::vector& x) +{ + RealType res{ 0.0 }; + for (auto& item : x) { + res += item * item; + } + return res; +} + +template +RealType +quadratic_high_cond_2D(std::vector& x) +{ + return 1000 * x[0] * x[0] + x[1] * x[1]; +} + // Taken from: https://en.wikipedia.org/wiki/Test_functions_for_optimization -template Real ackley(std::array const &v) { - using std::sqrt; +template +Real +ackley(std::array const& v) +{ + using boost::math::constants::e; + using boost::math::constants::two_pi; using std::cos; using std::exp; - using boost::math::constants::two_pi; - using boost::math::constants::e; + using std::sqrt; Real x = v[0]; Real y = v[1]; Real arg1 = -sqrt((x * x + y * y) / 2) / 5; @@ -26,16 +48,21 @@ template Real ackley(std::array const &v) { return -20 * exp(arg1) - exp(arg2 / 2) + 20 + e(); } -template auto rosenbrock_saddle(std::array const &v) -> Real { - Real x { v[0] }; - Real y { v[1] }; +template +auto +rosenbrock_saddle(std::array const& v) -> Real +{ + Real x{ v[0] }; + Real y{ v[1] }; return static_cast(100 * (x * x - y) * (x * x - y) + (1 - x) * (1 - x)); } - -template Real rastrigin(std::vector const &v) { - using std::cos; +template +Real +rastrigin(std::vector const& v) +{ using boost::math::constants::two_pi; + using std::cos; auto A = static_cast(10); auto y = static_cast(10 * v.size()); for (auto x : v) { @@ -46,7 +73,9 @@ template Real rastrigin(std::vector const &v) { // Useful for testing return-type != scalar argument type, // and robustness to NaNs: -double sphere(std::vector const &v) { +double +sphere(std::vector const& v) +{ double r = 0.0; for (auto x : v) { double x_ = static_cast(x); @@ -59,23 +88,27 @@ double sphere(std::vector const &v) { } template -Real three_hump_camel(std::array const & v) { +Real +three_hump_camel(std::array const& v) +{ Real x = v[0]; Real y = v[1]; - auto xsq = x*x; - return 2*xsq - (1 + Real(1)/Real(20))*xsq*xsq + xsq*xsq*xsq/6 + x*y + y*y; + auto xsq = x * x; + return 2 * xsq - (1 + Real(1) / Real(20)) * xsq * xsq + xsq * xsq * xsq / 6 + + x * y + y * y; } // Minima occurs at (3, 1/2) with value 0: template -Real beale(std::array const & v) { +Real +beale(std::array const& v) +{ Real x = v[0]; Real y = v[1]; - Real t1 = Real(3)/Real(2) -x + x*y; - Real t2 = Real(9)/Real(4) -x + x*y*y; - Real t3 = Real(21)/Real(8) -x + x*y*y*y; - return t1*t1 + t2*t2 + t3*t3; + Real t1 = Real(3) / Real(2) - x + x * y; + Real t2 = Real(9) / Real(4) - x + x * y * y; + Real t3 = Real(21) / Real(8) - x + x * y * y * y; + return t1 * t1 + t2 * t2 + t3 * t3; } - #endif diff --git a/test/test_gradient_descent_optimizer.cpp b/test/test_gradient_descent_optimizer.cpp new file mode 100644 index 0000000000..d44a89b987 --- /dev/null +++ b/test/test_gradient_descent_optimizer.cpp @@ -0,0 +1,339 @@ +// Copyright Maksym Zhelyenzyakov 2025-2026. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// https://www.boost.org/LICENSE_1_0.txt) +#include "test_autodiff_reverse.hpp" // reuse for some basic options +#include "test_functions_for_optimization.hpp" +#include +#include +#include +namespace rdiff = boost::math::differentiation::reverse_mode; +namespace bopt = boost::math::optimization; +BOOST_AUTO_TEST_SUITE(basic_gradient_descent) + +BOOST_AUTO_TEST_CASE_TEMPLATE(default_gd_test, T, all_float_types) +{ + size_t NITER = 2000; + size_t N = 15; + T lr = T{ 1e-2 }; + RandomSample rng{ T(-100), (100) }; + std::vector> x_ad; + T eps = T{ 1e-3 }; + for (size_t i = 0; i < N; ++i) { + x_ad.push_back(rng.next()); + } + auto gdopt = + bopt::make_gradient_descent(&quadratic>, x_ad, lr); + for (size_t i = 0; i < NITER; ++i) { + gdopt.step(); + } + for (auto& x : x_ad) { + BOOST_REQUIRE_SMALL(x.item(), eps); + } +} +BOOST_AUTO_TEST_CASE_TEMPLATE(test_minimize, T, all_float_types) +{ + size_t NITER = 2000; + size_t N = 15; + T lr = T{ 1e-2 }; + RandomSample rng{ T(-100), (100) }; + std::vector> x_ad; + T eps = T{ 1e-3 }; + for (size_t i = 0; i < N; ++i) { + x_ad.push_back(rng.next()); + } + auto gdopt = + bopt::make_gradient_descent(&quadratic>, x_ad, lr); + auto z = minimize(gdopt); + for (auto& x : x_ad) { + BOOST_REQUIRE_SMALL(x.item(), eps); + } +} +BOOST_AUTO_TEST_CASE_TEMPLATE(random_initializer_test, T, all_float_types) +{ + size_t N = 10; + T lr = T{ 1e-2 }; + std::vector> x(N); + + auto gdopt = + bopt::make_gradient_descent(&quadratic>, + x, + lr, + bopt::random_uniform_initializer_rvar( + T(-2.0), T(2.0), 1234)); + for (auto& xi : x) { + T v = xi.item(); + BOOST_TEST(v >= -2); + BOOST_TEST(v <= 2); + } + gdopt.step(); +} +BOOST_AUTO_TEST_CASE_TEMPLATE(const_initializer_test, T, all_float_types) +{ + size_t N = 10; + T lr = T{ 1e-2 }; + std::vector> x(N); + + auto gdopt = bopt::make_gradient_descent( + &quadratic>, + x, + lr, + bopt::costant_initializer_rvar(T{ 5.0 })); // all initialized to 5 + + for (auto& xi : x) { + T v = xi.item(); + BOOST_REQUIRE_CLOSE(v, T{ 5.0 }, T{ 1e-3 }); + } + gdopt.step(); +} + +BOOST_AUTO_TEST_CASE_TEMPLATE(box_constraint_test, T, all_float_types) +{ + size_t N = 5; + T lr = T{ 1e-2 }; + std::vector> x(N, T{ 10 }); + + auto gdopt = + bopt::make_gradient_descent(&quadratic>, x, lr); + + auto res = bopt::minimize( + gdopt, bopt::box_constraints>, T>(-1.0, 1.0)); + + for (auto& xi : x) { + BOOST_TEST(xi.item() >= -1.0); + BOOST_TEST(xi.item() <= 1.0); + } +} +BOOST_AUTO_TEST_CASE_TEMPLATE(max_iter_test, T, all_float_types) +{ + size_t N = 2; + T lr = T{ 1e-6 }; // very slow learning + std::vector> x = { T{ 5 }, T{ 5 } }; + + auto gdopt = + bopt::make_gradient_descent(&quadratic>, x, lr); + + size_t max_iter = 50; + auto res = + bopt::minimize(gdopt, + bopt::unconstrained_policy>>{}, + bopt::gradient_norm_convergence_policy(T{ 1e-20 }), + bopt::max_iter_termination_policy(max_iter)); + + BOOST_TEST(!res.converged); // should not converge with tiny lr + BOOST_REQUIRE_EQUAL(res.num_iter, max_iter); +} +BOOST_AUTO_TEST_CASE_TEMPLATE(history_tracking_test, T, all_float_types) +{ + size_t N = 3; + T lr = T{ 1e-2 }; + std::vector> x = { T{ 3 }, T{ -4 }, T{ 5 } }; + + auto gdopt = + bopt::make_gradient_descent(&quadratic>, x, lr); + + auto res = + bopt::minimize(gdopt, + bopt::unconstrained_policy>>{}, + bopt::gradient_norm_convergence_policy(T{ 1e-6 }), + bopt::max_iter_termination_policy(1000), + true); // enable history + + BOOST_TEST(!res.objective_history.empty()); + BOOST_TEST(res.objective_history.front() > res.objective_history.back()); +} +BOOST_AUTO_TEST_CASE_TEMPLATE(rosenbrock_test, T, all_float_types) +{ + std::array, 2> x = { T{ -1.2 }, T{ 1.0 } }; // bad start + T lr = T{ 1e-3 }; + + auto gdopt = + bopt::make_gradient_descent(&rosenbrock_saddle>, x, lr); + + auto res = bopt::minimize( + gdopt, + bopt::unconstrained_policy, 2>>{}, + bopt::gradient_norm_convergence_policy(T{ 1e-4 }), + bopt::max_iter_termination_policy(50000)); + BOOST_TEST(res.converged); + BOOST_REQUIRE_CLOSE(x[0].item(), T{ 1.0 }, T{ 1e-1 }); + BOOST_REQUIRE_CLOSE(x[1].item(), T{ 1.0 }, T{ 1e-1 }); +} +BOOST_AUTO_TEST_CASE_TEMPLATE(objective_tol_convergence_test, + T, + all_float_types) +{ + using policy_t = bopt::objective_tol_convergence_policy; + policy_t pol(1e-3); + std::vector dummy_grad; + + BOOST_TEST(!pol(dummy_grad, T{100.0})); + BOOST_TEST(!pol(dummy_grad, T{99.0})); + BOOST_TEST(pol(dummy_grad, T{99.0005})); +} + +BOOST_AUTO_TEST_CASE_TEMPLATE(relative_objective_tol_test, T, all_float_types) +{ + using policy_t = bopt::relative_objective_tol_policy; + policy_t pol(1e-3); + + std::vector dummy_grad; + BOOST_TEST(!pol(dummy_grad, T{1000.0})); + BOOST_TEST(!pol(dummy_grad, T{1010.0})); + BOOST_TEST(pol(dummy_grad, T{1010.5})); +} + +BOOST_AUTO_TEST_CASE_TEMPLATE(combined_policy_test, T, all_float_types) +{ + using pol_abs = bopt::objective_tol_convergence_policy; + using pol_rel = bopt::relative_objective_tol_policy; + using pol_comb = bopt::combined_convergence_policy; + + pol_abs abs_pol(1e-6); + pol_rel rel_pol(1e-3); + pol_comb comb(abs_pol, rel_pol); + + std::vector dummy_grad; + + BOOST_TEST(!comb(dummy_grad, T{100.0})); + BOOST_TEST(!comb(dummy_grad, T{110.0})); + BOOST_TEST(comb(dummy_grad, T{110.1})); + BOOST_TEST(comb(dummy_grad, T{110.1000001})); +} +BOOST_AUTO_TEST_CASE_TEMPLATE(nonnegativity_constraint_test, T, all_float_types) +{ + std::vector x = {T{1.0}, T{-2.0}, T{3.0}, T{-4.0}}; + + bopt::nonnegativity_constraint, T> proj; + proj(x); + + for (auto& xi : x) + BOOST_TEST(xi >= 0.0); + BOOST_TEST(x == std::vector({T{1.0}, T{0.0}, T{3.0}, T{0.0}})); +} + +BOOST_AUTO_TEST_CASE_TEMPLATE(l2_ball_constraint_test, T, all_float_types) +{ + std::vector x = {T{3.0}, T{4.0}}; // norm = 5 + bopt::l2_ball_constraint, T> proj(1.0); + proj(x); + + T norm = sqrt(x[0] * x[0] + x[1] * x[1]); + BOOST_TEST(abs(norm - T{1.0}) < T{1e-12}); // projected to unit circle +} + +BOOST_AUTO_TEST_CASE_TEMPLATE(l1_ball_constraint_test, T, all_float_types) +{ + std::vector x = {T{3.0}, T{4.0}}; // L1 norm = 7 + + bopt::l1_ball_constraint, T> proj(2.0); + proj(x); + + T norm1 = abs(x[0]) + abs(x[1]); + BOOST_TEST(abs(norm1 - T{2.0}) < T{1e-12}); +} + +BOOST_AUTO_TEST_CASE_TEMPLATE(simplex_constraint_test, T, all_float_types) +{ + std::vector x = {T{-1.0}, T{2.0}, T{3.0}}; // has negative and sum != 1 + + bopt::simplex_constraint, T> proj; + proj(x); + + T sum = 0.0; + for (auto& xi : x) { + BOOST_TEST(xi >= 0.0); // all nonnegative + sum += xi; + } + BOOST_TEST(abs(sum - T{1.0}) < T{1e-12}); // normalized to sum=1 +} + +BOOST_AUTO_TEST_CASE_TEMPLATE(unit_sphere_constraint_test, T, all_float_types) +{ + std::vector x = {T{0.3}, T{0.4}}; // norm = 0.5 + bopt::unit_sphere_constraint, T> proj; + proj(x); + + T norm = sqrt(x[0] * x[0] + x[1] * x[1]); + BOOST_TEST(abs(norm - T{1.0}) < T{1e-12}); // always projected to sphere +} + +BOOST_AUTO_TEST_CASE_TEMPLATE(function_constraint_test, T, all_float_types) +{ + auto clip_to_half = [](std::vector& v) { + for (auto& xi : v) + if (xi > 0.5) + xi = 0.5; + }; + + bopt::function_constraint> proj(clip_to_half); + std::vector x = {T{0.2}, T{0.7}, T{1.5}}; + proj(x); + + BOOST_TEST(x == std::vector({T{0.2}, T{0.5}, T{0.5}})); +} + +template +struct no_init_policy +{ + void operator()(std::vector& x) const noexcept {} +}; + +template +struct analytic_objective_eval_pol +{ + template + RealType operator()(Objective&& objective, ArgumentContainer& x) + { + return objective(x); + } +}; + +template +struct analytic_gradient_eval_pol +{ + template + void operator()(Objective&& obj_f, + ArgumentContainer& x, + FunctionEvaluationPolicy&& f_eval_pol, + RealType& obj_v, + std::vector& grad_container) + { + RealType v = f_eval_pol(obj_f, x); + obj_v = v; + grad_container.resize(x.size()); + for (size_t i = 0; i < x.size(); ++i) { + grad_container[i] = 2 * x[i]; + } + } +}; + +BOOST_AUTO_TEST_CASE_TEMPLATE(analytic_derivative_policies, T, all_float_types) +{ + std::vector x; + size_t NITER = 2000; + size_t N = 15; + T lr = T{ 1e-2 }; + RandomSample rng{ T(-100), (100) }; + T eps = T{ 1e-3 }; + for (size_t i = 0; i < N; ++i) { + x.push_back(rng.next()); + } + + auto gdopt = bopt::make_gradient_descent(&quadratic, + x, + lr, + no_init_policy{}, + analytic_objective_eval_pol{}, + analytic_gradient_eval_pol{}); + + for (size_t i = 0; i < NITER; ++i) { + gdopt.step(); + } + for (auto& xi : x) { + BOOST_REQUIRE_SMALL(xi, eps); + } +} +BOOST_AUTO_TEST_SUITE_END() diff --git a/test/test_lbfgs.cpp b/test/test_lbfgs.cpp new file mode 100644 index 0000000000..f89940ddcc --- /dev/null +++ b/test/test_lbfgs.cpp @@ -0,0 +1,124 @@ +// Copyright Maksym Zhelyenzyakov 2025-2026. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// https://www.boost.org/LICENSE_1_0.txt) +#include "test_autodiff_reverse.hpp" +#include "test_functions_for_optimization.hpp" +#include +#include +#include +#include + +namespace rdiff = boost::math::differentiation::reverse_mode; +namespace bopt = boost::math::optimization; + +BOOST_AUTO_TEST_SUITE(basic_lbfgs) + +BOOST_AUTO_TEST_CASE(default_lbfgs_test) //, T, all_float_types) +{ + using T = double; + constexpr size_t NITER = 10; + constexpr size_t M = 10; + const T eps = T{1e-5}; + + RandomSample rng{T(-10), T(10)}; + std::array, 2> x; + x[0] = rng.next(); + x[1] = rng.next(); + + auto opt = bopt::make_lbfgs(&rosenbrock_saddle>, x, M); + auto constraint = bopt::unconstrained_policy,2>>{}; + auto convergence_policy = bopt::gradient_norm_convergence_policy(T{ 1e-20 }); + + auto result = bopt::minimize(opt, constraint, convergence_policy); + for (auto& xi : x) { + BOOST_REQUIRE_CLOSE(xi, T{1.0}, eps); + } +} + +// Custom initialization policy that zeros out the parameters +template +struct zero_init_policy +{ + void operator()(std::vector& x) const noexcept + { + std::fill(x.begin(), x.end(), RealType{0}); + } +}; + +template +struct analytic_objective_eval_pol +{ + template + RealType operator()(Objective&& objective, ArgumentContainer& x) + { + return objective(x); + } +}; +template +struct analytic_gradient_eval_pol +{ + template + void operator()(Objective&& obj_f, + ArgumentContainer& x, + FunctionEvaluationPolicy&& f_eval_pol, + RealType& obj_v, + std::vector& grad_container) + { + RealType v = f_eval_pol(obj_f, x); + obj_v = v; + grad_container.resize(x.size()); + for (size_t i = 0; i < x.size(); ++i) { + grad_container[i] = 2 * x[i]; + } + } +}; + +BOOST_AUTO_TEST_CASE_TEMPLATE(custom_init_lbfgs_test, T, all_float_types) +{ + constexpr size_t M = 8; + const T eps = T{1e-6}; + + RandomSample rng{T(-5), T(5)}; + std::array, 2> x; + x[0] = rng.next(); + x[1] = rng.next(); + + auto opt = bopt::make_lbfgs(&rosenbrock_saddle>, + x, + M, + bopt::costant_initializer_rvar(0.0)); + auto constraint = bopt::unconstrained_policy,2>>{}; + auto convergence_policy = bopt::gradient_norm_convergence_policy(T{ 1e-8 }); + auto result = minimize(opt, constraint, convergence_policy); + + for (auto& xi : x) { + BOOST_REQUIRE_CLOSE(xi, T{1.0}, eps); + } +} + +BOOST_AUTO_TEST_CASE_TEMPLATE(analytic_lbfgs_test, T, all_float_types) +{ + constexpr size_t M = 10; + const T eps = T{1e-3}; + + RandomSample rng{T(-5), T(5)}; + std::vector x(3); + for (auto& xi : x) + xi = rng.next(); + + auto opt = bopt::make_lbfgs(&quadratic, // Objective + x, // Arguments + M, // History size + zero_init_policy{}, // Initialization + analytic_objective_eval_pol{}, // Function eval + analytic_gradient_eval_pol{}, // Gradient eval + bopt::armijo_line_search_policy{}); + + auto result = minimize(opt); + + for (auto& xi : x) { + BOOST_REQUIRE_SMALL(xi, eps); + } +} +BOOST_AUTO_TEST_SUITE_END() diff --git a/test/test_nesterov_optimizer.cpp b/test/test_nesterov_optimizer.cpp new file mode 100644 index 0000000000..bfda1de51a --- /dev/null +++ b/test/test_nesterov_optimizer.cpp @@ -0,0 +1,33 @@ +// Copyright Maksym Zhelyenzyakov 2025-2026. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// https://www.boost.org/LICENSE_1_0.txt) +#include "test_autodiff_reverse.hpp" // reuse for some basic options +#include "test_functions_for_optimization.hpp" +#include +#include +#include +namespace rdiff = boost::math::differentiation::reverse_mode; +namespace bopt = boost::math::optimization; +BOOST_AUTO_TEST_SUITE(nesterov_descent) + +BOOST_AUTO_TEST_CASE_TEMPLATE(default_nesterov_test, T, all_float_types) +{ + T lr = T{ 1e-5 }; + T mu = T{ 0.95 }; + RandomSample rng{ T(-10), (10) }; + std::vector> x; + x.push_back(rng.next()); + x.push_back(rng.next()); + T eps = T{ 1e-8 }; + auto nag = + bopt::make_nag(&quadratic_high_cond_2D>, x, lr, mu); + auto constraint = bopt::unconstrained_policy>>{}; + auto convergence_policy = bopt::gradient_norm_convergence_policy(T{ 1e-8 }); + + auto z = minimize(nag, constraint, convergence_policy); + for (auto& xi : x) { + BOOST_REQUIRE_SMALL(xi.item(), eps); + } +} +BOOST_AUTO_TEST_SUITE_END() diff --git a/test/test_reverse_mode_autodiff_flat_linear_allocator.cpp b/test/test_reverse_mode_autodiff_flat_linear_allocator.cpp index a2c2cfec84..5bb2c9b2d2 100644 --- a/test/test_reverse_mode_autodiff_flat_linear_allocator.cpp +++ b/test/test_reverse_mode_autodiff_flat_linear_allocator.cpp @@ -6,113 +6,129 @@ #include BOOST_AUTO_TEST_SUITE(test_flat_linear_allocator) -BOOST_AUTO_TEST_CASE_TEMPLATE(flat_linear_allocator_constructors, T, all_float_types) +BOOST_AUTO_TEST_CASE_TEMPLATE(flat_linear_allocator_constructors, + T, + all_float_types) { - size_t buffer_size = 16; - RandomSample rng{-1, 1}; - rdiff_detail::flat_linear_allocator float_allocator{}; - for (size_t i = 0; i < 2 * buffer_size - buffer_size / 2; i++) { - float_allocator.emplace_back(rng.next()); - } - - BOOST_CHECK_EQUAL(float_allocator.size(), - static_cast(2 * buffer_size - buffer_size / 2)); - BOOST_CHECK_EQUAL(float_allocator.capacity(), static_cast(2 * buffer_size)); - - float_allocator.clear(); - BOOST_CHECK_EQUAL(float_allocator.size(), static_cast(0)); - BOOST_CHECK_EQUAL(float_allocator.capacity(), buffer_size); - - for (size_t i = 0; i < 2 * buffer_size - buffer_size / 2; i++) { - float_allocator.emplace_back(rng.next()); - } - float_allocator.reset(); - BOOST_CHECK_EQUAL(float_allocator.size(), static_cast(0)); - BOOST_CHECK_EQUAL(float_allocator.capacity(), 2 * buffer_size); - - for (size_t i = 0; i < 2 * buffer_size - buffer_size / 2; i++) { - float_allocator.emplace_back(rng.next()); - } - T fill_value = T(0.25); - float_allocator.fill(fill_value); - for (size_t i = 0; i < float_allocator.size(); i++) { - BOOST_CHECK_EQUAL(float_allocator[i], fill_value); - } + size_t buffer_size = 16; + RandomSample rng{ -1, 1 }; + rdiff_detail::flat_linear_allocator float_allocator{}; + for (size_t i = 0; i < 2 * buffer_size - buffer_size / 2; i++) { + float_allocator.emplace_back(rng.next()); + } + + BOOST_CHECK_EQUAL(float_allocator.size(), + static_cast(2 * buffer_size - buffer_size / 2)); + BOOST_CHECK_EQUAL(float_allocator.capacity(), + static_cast(2 * buffer_size)); + + float_allocator.clear(); + BOOST_CHECK_EQUAL(float_allocator.size(), static_cast(0)); + BOOST_CHECK_EQUAL(float_allocator.capacity(), buffer_size); + + for (size_t i = 0; i < 2 * buffer_size - buffer_size / 2; i++) { + float_allocator.emplace_back(rng.next()); + } + float_allocator.reset(); + BOOST_CHECK_EQUAL(float_allocator.size(), static_cast(0)); + BOOST_CHECK_EQUAL(float_allocator.capacity(), 2 * buffer_size); + + for (size_t i = 0; i < 2 * buffer_size - buffer_size / 2; i++) { + float_allocator.emplace_back(rng.next()); + } + T fill_value = T(0.25); + float_allocator.fill(fill_value); + for (size_t i = 0; i < float_allocator.size(); i++) { + BOOST_CHECK_EQUAL(float_allocator[i], fill_value); + } } -BOOST_AUTO_TEST_CASE_TEMPLATE(flat_linear_allocator_test_emplace, T, all_float_types) +BOOST_AUTO_TEST_CASE_TEMPLATE(flat_linear_allocator_test_emplace, + T, + all_float_types) { - size_t buffer_size = 16; - RandomSample rng{-1, 1}; - rdiff_detail::flat_linear_allocator float_allocator{}; - std::vector test_vector; - - for (size_t i = 0; i < 2 * buffer_size - 1; i++) { - test_vector.push_back(rng.next()); - float_allocator.emplace_back(test_vector[i]); - } - - auto it1 = float_allocator.template emplace_back_n<4>(); - for (size_t i = 0; i < 4; i++) { - T literal = rng.next(); - test_vector.push_back(literal); - *(it1 + i) = literal; - } - - auto it2 = float_allocator.emplace_back_n(buffer_size); - for (size_t i = 0; i < buffer_size; i++) { - T literal = rng.next(); - test_vector.push_back(literal); - *(it2 + i) = literal; - } - - auto vit = test_vector.begin(); - auto alloc_it = float_allocator.begin(); - for (; vit != test_vector.end(); vit++, alloc_it++) { - BOOST_CHECK_EQUAL( - *vit, - *alloc_it); // should be ok to check floats like this since they are expected to be the same. - } - - for (size_t i = 0; i < test_vector.size(); i++) { - BOOST_CHECK_EQUAL(test_vector[i], float_allocator[i]); // check random access aswell; - } - - BOOST_CHECK_EQUAL(test_vector.size(), float_allocator.size()); + size_t buffer_size = 16; + RandomSample rng{ -1, 1 }; + rdiff_detail::flat_linear_allocator float_allocator{}; + std::vector test_vector; + + for (size_t i = 0; i < 2 * buffer_size - 1; i++) { + test_vector.push_back(rng.next()); + float_allocator.emplace_back(test_vector[i]); + } + + auto it1 = float_allocator.template emplace_back_n<4>(); + for (size_t i = 0; i < 4; i++) { + T literal = rng.next(); + test_vector.push_back(literal); + *(it1 + i) = literal; + } + + auto it2 = float_allocator.emplace_back_n(buffer_size); + for (size_t i = 0; i < buffer_size; i++) { + T literal = rng.next(); + test_vector.push_back(literal); + *(it2 + i) = literal; + } + + auto vit = test_vector.begin(); + auto alloc_it = float_allocator.begin(); + for (; vit != test_vector.end(); vit++, alloc_it++) { + BOOST_CHECK_EQUAL(*vit, + *alloc_it); // should be ok to check floats like this + // since they are expected to be the same. + } + + for (size_t i = 0; i < test_vector.size(); i++) { + BOOST_CHECK_EQUAL(test_vector[i], + float_allocator[i]); // check random access aswell; + } + + BOOST_CHECK_EQUAL(test_vector.size(), float_allocator.size()); } -BOOST_AUTO_TEST_CASE_TEMPLATE(flat_linear_allocator_test_checkpointing, T, all_float_types) + +BOOST_AUTO_TEST_CASE_TEMPLATE(flat_linear_allocator_test_checkpointing, + T, + all_float_types) { - size_t buffer_size = 16; - RandomSample rng{-1, 1}; - rdiff_detail::flat_linear_allocator float_allocator{}; - std::vector test_vector; - std::vector checkpoint_indices{2, 11, 15, 16, 17, 28}; - std::vector expected_value_at_checkpoint; - - size_t ckp_id = 0; - for (size_t i = 0; i < 2 * buffer_size; i++) { - T literal = rng.next(); - float_allocator.emplace_back(literal); - if (ckp_id < checkpoint_indices.size() && i == checkpoint_indices[ckp_id]) { - float_allocator.add_checkpoint(); - expected_value_at_checkpoint.push_back(literal); - ++ckp_id; - } - } - for (size_t i = 0; i < checkpoint_indices.size(); i++) { - auto it = float_allocator.checkpoint_at(i); - BOOST_CHECK_EQUAL(*it, expected_value_at_checkpoint[i]); + constexpr size_t buffer_size = 16; + RandomSample rng{ -1, 1 }; + rdiff_detail::flat_linear_allocator float_allocator{}; + std::vector checkpoint_indices{ 2, 11, 15, 16, 17, 28 }; + std::vector expected_value_at_checkpoint; + + size_t ckp_id = 0; + for (size_t i = 0; i < 2 * buffer_size; ++i) { + T literal = rng.next(); + float_allocator.emplace_back(literal); + + if (ckp_id < checkpoint_indices.size() && + (i + 1) == checkpoint_indices[ckp_id]) { + float_allocator.add_checkpoint(); + expected_value_at_checkpoint.push_back(literal); + ++ckp_id; } - - auto first_ckp = float_allocator.first_checkpoint(); - auto last_ckp = float_allocator.last_checkpoint(); - - BOOST_CHECK_EQUAL(*first_ckp, expected_value_at_checkpoint[0]); - BOOST_CHECK_EQUAL(*last_ckp, expected_value_at_checkpoint.back()); - - float_allocator.rewind_to_last_checkpoint(); - BOOST_CHECK_EQUAL(float_allocator.size(), checkpoint_indices.back()); - BOOST_CHECK_EQUAL(float_allocator.capacity(), 2 * buffer_size); + } + + for (size_t i = 0; i < checkpoint_indices.size(); ++i) { + auto it = float_allocator.checkpoint_at(i); + BOOST_REQUIRE(it != float_allocator.begin()); + --it; + BOOST_CHECK_EQUAL(*it, expected_value_at_checkpoint[i]); + } + + auto first_ckp = float_allocator.first_checkpoint(); + BOOST_REQUIRE(first_ckp != float_allocator.begin()); + --first_ckp; + BOOST_CHECK_EQUAL(*first_ckp, expected_value_at_checkpoint.front()); + + auto last_ckp = float_allocator.last_checkpoint(); + BOOST_REQUIRE(last_ckp != float_allocator.begin()); + --last_ckp; + BOOST_CHECK_EQUAL(*last_ckp, expected_value_at_checkpoint.back()); + + float_allocator.rewind_to_last_checkpoint(); + BOOST_CHECK_EQUAL(float_allocator.size(), checkpoint_indices.back()); + BOOST_CHECK_EQUAL(float_allocator.capacity(), 2 * buffer_size); } - BOOST_AUTO_TEST_SUITE_END()