diff --git a/.drone.star b/.drone.star index bc51cc7e0e..987562d8f4 100644 --- a/.drone.star +++ b/.drone.star @@ -18,6 +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" ] 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" ] @@ -68,6 +69,10 @@ def main(ctx): for cxx in gcc13_stds: result.append(linux_cxx("Ubuntu g++-13 " + cxx + " " + suite, "g++-13", packages="g++-13", buildtype="boost", image="cppalliance/droneubuntu2404:1", environment={'TOOLSET': 'gcc', 'COMPILER': 'g++-13', 'CXXSTD': cxx, 'TEST_SUITE': suite, }, globalenv=globalenv)) result.append(linux_cxx("Ubuntu g++-14 " + cxx + " " + suite, "g++-14", packages="g++-14", buildtype="boost", image="cppalliance/droneubuntu2404:1", environment={'TOOLSET': 'gcc', 'COMPILER': 'g++-14', 'CXXSTD': cxx, 'TEST_SUITE': suite, }, globalenv=globalenv)) + for suite in reverse_mode_autodiff_test: + for cxx in gcc13_stds: + result.append(linux_cxx("Ubuntu g++-13 " + cxx + " " + suite, "g++-13", packages="g++-13", buildtype="boost", image="cppalliance/droneubuntu2404:1", environment={'TOOLSET': 'gcc', 'COMPILER': 'g++-13', 'CXXSTD': cxx, 'TEST_SUITE': suite, }, globalenv=globalenv)) + result.append(linux_cxx("Ubuntu g++-14 " + cxx + " " + suite, "g++-14", packages="g++-14", buildtype="boost", image="cppalliance/droneubuntu2404:1", environment={'TOOLSET': 'gcc', 'COMPILER': 'g++-14', 'CXXSTD': cxx, 'TEST_SUITE': suite, }, globalenv=globalenv)) return result diff --git a/.github/workflows/codecov.yml b/.github/workflows/codecov.yml index 763b5e1d33..b879117d0e 100644 --- a/.github/workflows/codecov.yml +++ b/.github/workflows/codecov.yml @@ -53,10 +53,12 @@ jobs: compiler: gcc-12, cxxstd: '20', os: ubuntu-22.04, install: 'g++-12-multilib', address-model: '64', suite: 'interpolators' } - { name: Collect coverage autodiff, coverage: yes, 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' } timeout-minutes: 360 runs-on: ${{matrix.os}} container: ${{matrix.container}} - env: {B2_USE_CCACHE: 1} + env: {B2_USE_CCACHE: 0} steps: - name: Setup environment diff --git a/.gitignore b/.gitignore index 6435addffd..3158eb4a4b 100644 --- a/.gitignore +++ b/.gitignore @@ -10,10 +10,12 @@ test/cuda **/.temps/* build/* .vscode/* -*.svg +#*.svg tools/bin/** .idea/* - +# autogenerated for table in reverse mode docs +doc/differentiation/compilation_table.txt +test/test_reverse_mode_autodiff_special_functions_compile/generated_jam_compile_commands.txt # CMake Related Options *.a *.o @@ -28,3 +30,4 @@ cmake-build-debug/* build.ninja .ninja* a.out + diff --git a/CMakeLists.txt b/CMakeLists.txt index a1f6011d95..e5e843c3aa 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,9 +3,9 @@ # Distributed under the Boost Software License, Version 1.0. # https://www.boost.org/LICENSE_1_0.txt -cmake_minimum_required(VERSION 3.5...3.16) +cmake_minimum_required(VERSION 3.8...3.16) -project(boost_math VERSION 1.89.0 LANGUAGES CXX) +project(boost_math VERSION 1.90.0 LANGUAGES CXX) add_library(boost_math INTERFACE) @@ -45,6 +45,8 @@ else() endif() +target_compile_features(boost_math INTERFACE cxx_std_14) + if(BUILD_TESTING AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/test/CMakeLists.txt") add_subdirectory(test) diff --git a/doc/constants/constants.qbk b/doc/constants/constants.qbk index 9cce152da1..b65510a93c 100644 --- a/doc/constants/constants.qbk +++ b/doc/constants/constants.qbk @@ -340,6 +340,7 @@ This section lists the mathematical constants, their use(s) (and sometimes ratio [[pi_minus_three] [[pi]-3] [0.141593] [] ] [[four_minus_pi] [4 -[pi]] [0.858407] [] ] [[pi_pow_e] [[pi][super e]] [22.4591] [] ] +[[log_pi] [ln([pi])] [1.14473] [] ] [[pi_sqr] [[pi][super 2]] [9.86960] [] ] [[pi_sqr_div_six] [[pi][super 2]/6] [1.64493] [] ] diff --git a/doc/differentiation/autodiff_reverse.qbk b/doc/differentiation/autodiff_reverse.qbk new file mode 100644 index 0000000000..55ae6412e0 --- /dev/null +++ b/doc/differentiation/autodiff_reverse.qbk @@ -0,0 +1,809 @@ +[/ Copyright Maksym Zhelyeznyakov 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)] + +[section:autodiff Reverse Mode Automatic Differentiation] +[template autodiff_equation[name] ''''''] +[template autodiff_graph[name] ''''''] +[h1:synopsis Synopsis] + + /* enable or disable expression templates at compile time */ + #ifndef BOOST_MATH_REVERSE_MODE_ET_OFF + #define BOOST_MATH_REVERSE_MODE_ET_ON + #endif + + #include + + namespace boost { + namespace math { + namespace differentiation { + namespace reverse_mode { + + /* autodiff variable of type RealType (numeric types), stores derivatives up to DerivativeOrder + * rvar inherits from a generic expression base class + * expression> + * This is a Curiously Recurring Template Pattern(CRTP) + * The purpose is so that rvar acts as a terminal node in an expression graph, and can be combined + * with other expression-based types (sums, producs, etc..) to form expression graphs. + */ + template + class rvar : public expression> { + // inner_t of rvar = var + // used to store graphs of N-1 order derivatives + // rvar_t decays to RealType + using inner_t = rvar_t; + /* constructors */ + // default + rvar(); + // construct from numeric type + rvar(const RealType value); + // copy + rvar(const rvar other); + + /* assignment operators */ + // from numeric type + rvar &operator=(RealType v); + // from another rvar + rvar &operator=(const rvar &other); + // from a chain of expression templates + rvar &operator=(const expression &expr); + + // calculate all derivatives in computational graph + void backward(); + + // get RealType value in rvar + RealType item() const; + + // get accumulated adjoint of this variable + // returns inner_t + const inner_t &adjoint() const { return *node_->get_adjoint_ptr(); } + inner_t &adjoint() { return *node_->get_adjoint_ptr(); } + + // all arithmetic and comparison operators are overloaded + template + rvar &operator+=(const expression &expr); + + template + rvar &operator*=(const expression &expr) + + + } + + // gradient tape holds the computational graph + /* + * The expression graph is stored on a tape. The tape is closely related to the memory manegement + * system in the library. BOOST_MATH_BUFFER_SIZE is set to 65536. It controls the block size of the + * internal memory arena. Its a macro, and can be set at compile time. + */ + template + class gradient_tape { + + // clear tape + void clear(); + + // sets all derivatives to zero + void zero_grad(); + + // adds a checkpoint you can rewind to + void add_checkpoint(); + + // rewinds tape to last checkpoint set + void rewind_to_last_checkpoint(); + // index is "checkpoint" index. so // order which checkpoint was set + void rewind_to_checkpoint_at(size_t index); + // rewind to beginning of graph without clearing the tape + void rewind(); + } + + // tape access + template> + inline gradient_tape &get_active_tape(); + + // standard math functions are overloaded using expression templates + template + struct add_expr : public abstract_binary_expression> + + template add_expr operator+(const expression &lhs,const expression &rhs); + + // Standard math functions are overloaded and called via argument-dependent lookup (ADL). + template + floor_expr floor(const expression &arg); + + template + cos_expr cos(const expression &arg); + + // Helper gradient functions + // rvar decays into T + // returns vector> of gradients + template + auto grad(rvar &f, std::vector *> &x); + template + auto grad(rvar &f, First first, Other... other) + // returns a vector> representing the hessian matrix + template + auto hess(rvar &f, std::vector *> &x) + template + auto hess(rvar &f, First first, Other... other) + // returns N-d nested vector ... + // representing the tensor generalization of the N-d gradient + template + auto grad_nd(rvar &f, std::vector *> &x) + template + auto grad_nd(ftype &f, First first, Other... other) + // ... + + } // namespace reverse_mode + } // namespace differentiation + } // namespace math + } // namespace boost + +[h1:description Description] + +Reverse mode autodiff is a header-only C++ library the [@https://en.wikipedia.org/wiki/Automatic_differentiation +automatic differentiation] (reverse mode) of mathematical functions. This implementation builds a computational graph known as a tape, which stores all operations and their corresponding derivatives. The total gradients are then computed by reverse accumulation via the chain rule. + +Consider the following function + + template + T f(x,y) + { + return x*y+sin(x); + } + + int main() + { + rvar x = 1.0; + rvar y = 1.0; + rvar z = f(x,y); + z.backward(); + } + +and the associated computational graph. + +[:[:[autodiff_graph autodiff_reverse_graph.svg]]] + +Using reverse mode autodiff, the gradients are computed by traversing the graph backward: +[:[:[autodiff_equation reverse_mode_autodiff_ex_eq.svg]]] + +Some key points about reverse mode automatic differentiation: + +1. Reverse mode auto-diff is exceptionally efficient for computing the gradient of functions mapping from high to low dimensional space, f : [real][super n][rarr][real]. Unlike finite differences or forward mode autodiff which scale with the number of input variables, reverse mode autodiff calculates the entire gradient vector in time proportional to the original function's evaluation time. + +2. While forward-over-reverse is often the most efficient way to obtain Hessians or Jacobian–vector products, our implementation currently supports reverse-over-reverse only. This means higher-order derivatives are available, but at a higher computational cost.It is possible to compute higher order derivatives by applying reverse mode over reverse mode differentiation. The backward function builds a new computational tape over the gradient computation. This approach is conceptually sound, but it can become computationally expensive very quickly. Forward mode autodiff is generally preferrable when computing higher order derivatives. + +3. While reverse mode is fast for computing the gradient, it has to store all the intermediate values from the forward pass to be used during the backward pass. This can be a significant memory overhead, especially for deep networks or complex functions. + +[h1:overloaded-functions List of overloaded functions] +[table + [[Function] [argument types] [implementation] [return type] [left derivative] [right derivative]] + [[ + ] [expression, expression] [x+y] [expression] [1.0] [1.0]] + [[ + ] [expression, float] [x+y] [expresison] [1.0] []] + [[ + ] [float, expression] [x+y] [expression] [1.0] []] + + [[ \* ] [expression, expression] [x*y] [expression] [y] [x]] + [[ \* ] [expression, float] [x*y] [expression] [y] []] + [[ \* ] [float, expression] [x*y] [expression] [] [x]] + + [[ - ] [expression, expression] [x-y] [expression] [1.0] [-1.0]] + [[ - ] [expression, float] [x-y] [expression] [1.0] []] + [[ - ] [float, expression] [x-y] [expression] [] [-1.0]] + + [[ / ] [expression, expression] [x/y] [expression] [1/y] [-x/(y*y)]] + [[ / ] [expression, float] [x/y] [expression] [1/y] []] + [[ / ] [float, expression] [x/y] [expression] [] [-x/(y*y)]] + + [[fabs] [expression] [std::fabs(x)] [expression] [x > 0.0 ? 1.0 : -1.0] []] + [[abs] [expression] [fabs(x)] [expression] [x > 0.0 ? 1.0 : -1.0] []] + [[ceil] [expression] [std::ceil(x)] [expression] [0.0] []] + [[floor] [expression] [std::floor(x)] [expression] [0.0] []] + [[trunc] [expression] [std::trunc(x)] [expression] [0.0] []] + [[exp] [expression] [std::exp(x)] [expression] [exp(x)] []] + + [[pow] [expression, expression] [std::pow(x,y)] [expression] [y*pow(x,y-1)] [pow(x,y)*log(x)]] + [[pow] [expression, float] [std::pow(x,y)] [expression] [y*pow(x,y-1)] []] + [[pow] [float. expression] [std::pow(x,y)] [expression] [] [pow(x,y)*log(x)]] + + [[sqrt] [expression] [std::sqrt(x)] [expression] [1/(2 sqrt(x))] []] + [[log] [expression] [std::log(x)] [expression] [1/x] []] + [[cos] [expression] [std::cos(x)] [expression] [-sin(x)] []] + [[sin] [expression] [std::sin(x)] [expression] [cos(x)] []] + [[tan] [expression] [std::tan(x)] [expression] [1/(cos(x)*cos(x))] []] + [[acos] [expression] [std::acos(x)] [expression] [-1.0/(sqrt(1-x*x))] []] + [[asin] [expression] [std::asin(x)] [expression] [1.0/(sqrt(1-x*x))] []] + [[atan] [expression] [std::atan(x)] [expression] [1.0/(1+x*x)] []] + [[atan2] [expression,expression] [std::atan2(x,y)] [expression] [y/(x*x+y*y)] [-x/(x*x+y*y)]] + [[atan2] [expression,float] [std::atan2(x,y)] [expression] [y/(x*x+y*y)] []] + [[atan2] [float,expression] [std::atan2(x,y)] [expression] [] [-x/(x*x+y*y)]] + + [[round] [expression] [std::round(x)] [expression] [0.0] []] + [[cosh] [expression] [std::cosh(x)] [expression] [sinh(x)] []] + [[sinh] [expression] [std::sinh(x)] [expression] [cosh(x)] []] + [[tanh] [expression] [std::tanh(x)] [expression] [1/(cosh(x)*cosh(x))] []] + [[log10] [expression] [std::log10(x)] [expression] [1/(xlog(10.0)] []] + + [[acosh] [expression] [std::cosh(x)] [expression] [1.0/(sqrt(x-1)*sqrt(x+1))] []] + [[asinh] [expression] [std::sinh(x)] [expression] [1/(sqrt(1+x*x))] []] + [[atanh] [expression] [std::tanh(x)] [expression] [1/(1-x*x))] []] + [[fmod] [expression,expression] [std::fmod(x,y)] [expression] [1.0] [-1.0/trunc(x/y)]] + [[fmod] [expression,float] [std::fmod(x,y)] [expression] [1.0] []] + [[fmod] [float,expression] [std::fmod(x,y)] [expression] [] [-1.0/trunc(x/y)]] + + [[iround] [expression] [std::iround(x)] [int, this function breaks the autodiff chain] [] []] + [[lround] [expression] [std::lround(x)] [long, this function breaks the autodiff chain] [] []] + [[llround] [expression] [std::llround(x)] [long long, this function breaks the autodiff chain] [] []] + + [[itrunc] [expression] [std::itrunc(x)] [int, this function breaks the autodiff chain] [] []] + [[ltrunc] [expression] [std::ltrunc(x)] [long, this function breaks the autodiff chain] [] []] + [[lltrunc] [expression] [std::lltrunc(x)] [long long, this function breaks the autodiff chain] [] []] + + [[frexp] [expression, *int] [std::frexp(x.evaluate(),i); x/pow(2.0, *int) ] [expression] [1/pow(2.0,int)] []] + [[ldexp] [expression, &int] [ x*pow(2,int) ] [expression] [pow(2,int)] []] +] +[h1:table-of-specfuns Specfun Support] +\[/ BEGIN SPECFUN TABLE\] +[table +[[Function] [compiles with ET ON] [runs with ET ON] [compiles with ET OFF] [runs with ET OFF] [works with multiprecision] [known issues]] +[[tgamma] [True] [True] [True] [False] [False] [derivatives incorrect when argument is an integer]] +[[tgamma1pm1] [False] [N/A] [True] [False] [False] [N/A]] +[[lgamma] [True] [True] [True] [False] [False] [N/A]] +[[digamma] [True] [True] [True] [False] [False] [N/A]] +[[trigamma] [True] [True] [True] [False] [False] [N/A]] +[[polygamma] [False] [N/A] [True] [False] [False] [N/A]] +[[tgamma_ratio] [False] [N/A] [True] [False] [False] [N/A]] +[[tgamma_delta_ratio] [False] [N/A] [True] [False] [False] [N/A]] +[[gamma_p] [False] [N/A] [True] [False] [False] [N/A]] +[[gamma_q] [False] [N/A] [True] [False] [False] [N/A]] +[[tgamma_lower] [False] [N/A] [True] [False] [False] [N/A]] +[[rising_factorial] [False] [N/A] [True] [False] [False] [N/A]] +[[falling_factorial] [False] [N/A] [True] [False] [False] [N/A]] +[[beta] [False] [N/A] [True] [False] [False] [N/A]] +[[ibeta] [False] [N/A] [True] [False] [False] [N/A]] +[[ibetac] [False] [N/A] [True] [False] [False] [N/A]] +[[betac] [False] [N/A] [True] [False] [False] [N/A]] +[[ibeta_inv] [False] [N/A] [True] [False] [False] [N/A]] +[[ibetac_inv] [False] [N/A] [True] [False] [False] [N/A]] +[[ibeta_inva] [False] [N/A] [True] [False] [False] [N/A]] +[[ibetac_inva] [False] [N/A] [True] [False] [False] [N/A]] +[[ibeta_invb] [False] [N/A] [True] [False] [False] [N/A]] +[[ibetac_invb] [False] [N/A] [True] [False] [False] [N/A]] +[[ibeta_derivative] [False] [N/A] [True] [False] [False] [N/A]] +[[legendre_p] [False] [N/A] [True] [False] [False] [N/A]] +[[legendre_p_prime] [True] [True] [True] [False] [False] [N/A]] +[[legendre_q] [False] [N/A] [True] [False] [False] [N/A]] +[[laguerre] [True] [True] [True] [False] [False] [N/A]] +[[hermite] [True] [True] [True] [False] [False] [N/A]] +[[chebyshev_t] [True] [True] [True] [False] [False] [N/A]] +[[chebyshev_u] [True] [True] [True] [False] [False] [N/A]] +[[chebyshev_t_prime] [True] [True] [True] [False] [False] [N/A]] +[[spherical_harmonic] [False] [N/A] [False] [N/A] [False] [N/A]] +[[spherical_harmonic_r] [False] [N/A] [True] [False] [False] [N/A]] +[[spherical_harmonic_i] [False] [N/A] [True] [False] [False] [N/A]] +[[gegenbauer] [False] [N/A] [False] [N/A] [False] [N/A]] +[[gegenbauer_prime] [False] [N/A] [False] [N/A] [False] [N/A]] +[[gegenbauer_derivative] [False] [N/A] [False] [N/A] [False] [N/A]] +[[jacobi] [True] [True] [True] [False] [False] [N/A]] +[[jacobi_derivative] [True] [True] [True] [False] [False] [N/A]] +[[jacobi_prime] [True] [True] [True] [False] [False] [N/A]] +[[jacobi_double_prime] [True] [True] [True] [False] [False] [N/A]] +[[cyl_bessel_j] [False] [N/A] [True] [False] [False] [N/A]] +[[cyl_neumann] [False] [N/A] [True] [False] [False] [N/A]] +[[cyl_bessel_i] [False] [N/A] [True] [False] [False] [N/A]] +[[cyl_bessel_k] [False] [N/A] [True] [False] [False] [N/A]] +[[sph_bessel] [False] [N/A] [True] [False] [False] [N/A]] +[[sph_neumann] [False] [N/A] [True] [False] [False] [N/A]] +[[cyl_bessel_j_prime] [False] [N/A] [True] [False] [False] [N/A]] +[[cyl_neumann_prime] [False] [N/A] [True] [False] [False] [N/A]] +[[cyl_bessel_i_prime] [False] [N/A] [True] [False] [False] [N/A]] +[[cyl_bessel_k_prime] [False] [N/A] [True] [False] [False] [N/A]] +[[sph_bessel_prime] [False] [N/A] [False] [N/A] [False] [N/A]] +[[sph_neumann_prime] [False] [N/A] [False] [N/A] [False] [N/A]] +[[cyl_hankel_1] [False] [N/A] [False] [N/A] [False] [N/A]] +[[cyl_hankel_2] [False] [N/A] [False] [N/A] [False] [N/A]] +[[sph_hankel_1] [False] [N/A] [False] [N/A] [False] [N/A]] +[[sph_hankel_2] [False] [N/A] [False] [N/A] [False] [N/A]] +[[airy_ai] [False] [N/A] [True] [False] [False] [N/A]] +[[airy_bi] [False] [N/A] [True] [False] [False] [N/A]] +[[airy_ai_prime] [False] [N/A] [True] [False] [False] [N/A]] +[[airy_bi_prime] [False] [N/A] [True] [False] [False] [N/A]] +[[ellint_rf] [False] [N/A] [True] [False] [False] [N/A]] +[[ellint_rd] [False] [N/A] [True] [False] [False] [N/A]] +[[ellint_rj] [False] [N/A] [True] [False] [False] [N/A]] +[[ellint_rc] [False] [N/A] [True] [False] [False] [N/A]] +[[ellint_rg] [False] [N/A] [True] [False] [False] [N/A]] +[[ellint_1] [False] [N/A] [True] [False] [False] [N/A]] +[[ellint_2] [False] [N/A] [True] [False] [False] [N/A]] +[[ellint_3] [False] [N/A] [True] [False] [False] [N/A]] +[[ellint_d] [False] [N/A] [True] [False] [False] [N/A]] +[[jacobi_zeta] [False] [N/A] [True] [False] [False] [N/A]] +[[heuman_lambda] [False] [N/A] [True] [False] [False] [N/A]] +[[jacobi_cd] [True] [True] [True] [False] [False] [N/A]] +[[jacobi_cn] [True] [True] [True] [False] [False] [N/A]] +[[jacobi_cs] [True] [True] [True] [False] [False] [N/A]] +[[jacobi_dc] [True] [True] [True] [False] [False] [N/A]] +[[jacobi_dn] [True] [True] [True] [False] [False] [N/A]] +[[jacobi_ds] [True] [True] [True] [False] [False] [N/A]] +[[jacobi_nc] [True] [True] [True] [False] [False] [N/A]] +[[jacobi_nd] [True] [True] [True] [False] [False] [N/A]] +[[jacobi_ns] [True] [True] [True] [False] [False] [N/A]] +[[jacobi_sc] [True] [True] [True] [False] [False] [N/A]] +[[jacobi_sd] [True] [True] [True] [False] [False] [N/A]] +[[jacobi_sn] [True] [True] [True] [False] [False] [N/A]] +[[jacobi_theta1] [True] [True] [True] [False] [False] [N/A]] +[[jacobi_theta1tau] [True] [True] [True] [False] [False] [N/A]] +[[jacobi_theta2] [True] [True] [True] [False] [False] [N/A]] +[[jacobi_theta1tau] [True] [True] [True] [False] [False] [N/A]] +[[jacobi_theta3] [True] [True] [True] [False] [False] [N/A]] +[[jacobi_theta3tau] [True] [True] [True] [False] [False] [N/A]] +[[jacobi_theta3m1] [True] [True] [True] [False] [False] [N/A]] +[[jacobi_theta3m1tau] [True] [True] [True] [False] [False] [N/A]] +[[jacobi_theta4] [True] [True] [True] [False] [False] [N/A]] +[[jacobi_theta4tau] [True] [True] [True] [False] [False] [N/A]] +[[jacobi_theta4m1] [True] [True] [True] [False] [False] [N/A]] +[[jacobi_theta4m1tau] [True] [True] [True] [False] [False] [N/A]] +[[lambert_w0] [False] [N/A] [False] [N/A] [False] [N/A]] +[[lambert_wm1] [False] [N/A] [False] [N/A] [False] [N/A]] +[[lambert_w0_prime] [False] [N/A] [False] [N/A] [False] [N/A]] +[[lambert_wm1_prime] [False] [N/A] [False] [N/A] [False] [N/A]] +[[zeta] [False] [N/A] [True] [False] [False] [N/A]] +[[expint] [False] [N/A] [True] [False] [False] [N/A]] +[[hypergeometric_1F0] [True] [True] [True] [False] [False] [N/A]] +[[hypergeometric_0F1] [False] [N/A] [True] [False] [False] [N/A]] +[[hypergeometric_2F0] [False] [N/A] [True] [False] [False] [N/A]] +[[hypergeometric_1F1] [False] [N/A] [True] [False] [False] [N/A]] +[[sin_pi] [True] [True] [True] [False] [False] [N/A]] +[[cos_pi] [True] [True] [True] [False] [False] [N/A]] +[[log1p] [True] [True] [True] [False] [False] [N/A]] +[[expm1] [True] [True] [True] [False] [False] [N/A]] +[[cbrt] [True] [True] [True] [False] [False] [N/A]] +[[sqrt1pm1] [False] [N/A] [True] [False] [False] [N/A]] +[[powm1] [False] [N/A] [True] [False] [False] [N/A]] +[[hypot] [True] [True] [True] [False] [False] [N/A]] +[[rsqrt] [False] [N/A] [False] [N/A] [False] [N/A]] +[[logaddexp] [False] [N/A] [False] [N/A] [False] [N/A]] +[[logsumexp] [False] [N/A] [False] [N/A] [False] [N/A]] +[[sinc_pi] [True] [True] [True] [False] [False] [N/A]] +[[sinhc_pi] [True] [True] [True] [False] [False] [N/A]] +[[owens_t] [False] [N/A] [True] [False] [False] [N/A]] +] +\[/ END SPECFUN TABLE\] +[h1:expression_templates Example 1: Linear Regression] + +Although autodiff is overkill for linear regression, its a useful example for demonstrating a typical gradient based optimization usecase. + + #include + #include + #include + #include + #include + + using namespace boost::math::differentiation::reverse_mode; + double random_double(double min_val, double max_val) + { + static std::random_device rd; + static std::mt19937 gen(rd()); + std::uniform_real_distribution dist(min_val, max_val); + return dist(gen); + } + +This function generates a random double within a specified range, used to create the true slope, intercept, and noisy data. + + double noisy_linear_function(double intercept, double slope, double x) + { + return intercept + slope * x + random_double(-0.1, 0.1); + } + +Above is a simple data generating function that simulates some real-world data by adding a small amount of random noise to a perfect linear relationship. + template + rvar loss(std::array& y_target, std::array, N>& y_fit) + { + rvar loss_v = make_rvar(0.0); + for (size_t i = 0; i < N; ++i) { + loss_v += pow(abs(y_target[i] - y_fit[i]), 2) / N; + } + return loss_v; + } + +The loss function calculates the mean-squared error. It takes true values of y, and the "model's" predicted y values and computes their squared difference. + + template + std::array, N> model(rvar& a, rvar& b, std::array& x) + { + std::array, N> ret; + for (size_t i = 0; i < N; ++i) { + ret[i] = a * x[i] + b; + } + return ret; + } + +This function represents the "linear model" we're fitting to. y = ax + b. It takes slow a and intercept b as rvars and the "x" as data. The returned array of rvars holds predicted y values and all calcuations are tracked by the gradient tape. + + int main() + { + // 1. Generate noisy data with known slope and intercept + double slope = random_double(-5, 5); + double intercept = random_double(-5, 5); + const size_t num_data_samples = 100; + std::array noisy_data_x; + std::array noisy_data_y; + + for (size_t i = 0; i < num_data_samples; i++) { + double x = random_double(-1, 1); + double y = noisy_linear_function(intercept, slope, x); + noisy_data_x[i] = x; + noisy_data_y[i] = y; + } + +Above is the data generation stage. We generate a dataset of 100 (x,y) points where y us a linear function of plus some random noise. The "true" slop and intercept are stored to be compared in the final result. + + // 2. Initialize guess variables + double slope_guess = random_double(-5, 5); + double intercept_guess = random_double(-5, 5); + rvar a = make_rvar(slope_guess); + rvar b = make_rvar(intercept_guess); + +The initialization stage: the model's parameters a and b are initialized with random guesses. + + // 3. Get the gradient tape and add a checkpoint + gradient_tape& tape = get_active_tape(); + tape.add_checkpoint(); + +Tape management: `get_active_tape` returns a reference to a global tape that stores the computational graph. Checkpoints are essential for gradient descent loops. They allow the tape to be "rewound" at the beginning of each iteration preventing it from growing infinitely. + + // 4. Initial forward pass and loss calculation + auto y_fit = model(a, b, noisy_data_x); + rvar loss_v = loss(noisy_data_y, y_fit); + +The model and loss functions are called. This is just to initialize y_fit and loss_v to be used inside the while loop. + // 5. Gradient Descent Loop + double learning_rate = 1e-3; + +The learning rate controls how large a step we take in the direction of the +negative gradient each iteration. Intuitively, it sets the "velocity" of +descent toward a minimum. + +Too high: the optimization may overshoot minima, oscillate, or even diverge. +Too low: convergence will be very slow and may stall in shallow regions. + +In practice, values in the range [1e-4, 1e-1] are common starting points, +with 1e-3 being a typical safe default for many problems. The best choice +depends on the scale of the data, the model, and the curvature of the loss +landscape. + + while (loss_v > 0.005) { + tape.zero_grad(); // zero out all the adjoints + +It is essentially to zero out the gradients at every iteration so as to not reaccumulate them. if you were to call `loss_v.backward()` a second time, the derivative calculations will be incorrect. + + tape.rewind_to_last_checkpoint(); // Rewind the tape for a new iteration + +Rewinds the tape to right before the model and loss calculates were done. + y_fit = model(a, b, noisy_data_x); + loss_v = loss(noisy_data_y, y_fit); + loss_v.backward(); // backward pass +Calls the model and computes the gradeints. + a -= a.adjoint() * learning_rate; // Update 'a' by subtracting the gradient scaled by the learning rate + b -= b.adjoint() * learning_rate; // Update 'b' similarly + } +updates `a` and `b` based on their gradients. + + // 6. Print Results + std::cout << "Autodiff Linear Regression Summary \n"; + std::cout << "learning rate : " << learning_rate << "\n"; + std::cout << "true slope: " << slope; + std::cout << " regression: " << a.item() << "\n"; + + std::cout << "relative error (slope): " << relative_slope_error << "\n"; + std::cout << "absolute error (slope): " << slope_error << "\n"; + std::cout << "true intercept: " << intercept; + std::cout << " regression: " << b.item() << "\n"; + std::cout << "absolute error (intercept): " << intercept_error << "\n"; + std::cout << "aelative error (intercept): " << relative_intercept_error << "\n"; + std::cout << "-------------------------------" << std::endl; + } +A sample output of the above code + + Autodiff Linear Regression Summary + learning rate : 0.001 + true slope: 1.15677 regression: 1.24685 + relative error (slope): 0.0778782 + absolute error (slope): 0.0900868 + true intercept: 2.23378 regression: 2.22309 + absolute error (intercept): 0.0106901 + aelative error (intercept): 0.00478563 + ------------------------------- + +[h2:example-black-scholes Example 2: Black-Scholes Option Pricing with Greeks] +Below is effectively a rewrite of the forward mode autodiff Black Scholes example. Its a good example on how to compute higher oder gradients with reverse mode autodiff with helper functions like `grad()`, `hess()`, and `grad_nd()` + + #include + + using namespace boost::math::differentiation::reverse_mode; + using namespace boost::math::constants; + + template + Real phi(Real const& x) + { + return one_div_root_two_pi() * exp(-0.5 * x * x); + } + + template + Real Phi(Real const& x) + { + return 0.5 * erfc(-one_div_root_two() * x); + } + + enum class CP { call, put }; + + template + T black_scholes_option_price(CP cp, double K, T const& S, T const& sigma, T const& tau, T const& r) + { + using namespace std; + auto const d1 = (log(S / K) + (r + sigma * sigma / 2) * tau) / (sigma * sqrt(tau)); + auto const d2 = (log(S / K) + (r - sigma * sigma / 2) * tau) / (sigma * sqrt(tau)); + switch (cp) { + case CP::call: + return S * Phi(d1) - exp(-r * tau) * K * Phi(d2); + case CP::put: + return exp(-r * tau) * K * Phi(-d2) - S * Phi(-d1); + default: + throw runtime_error("Invalid CP value."); + } + } + + int main() + { + double const K = 100.0; + double S_val = 105.0; + double sigma_val = 5.0; + double tau_val = 30.0 / 365; + double r_val = 1.25 / 100; + rvar S = make_rvar(S_val); + rvar sigma = make_rvar(sigma_val); + rvar tau = make_rvar(tau_val); + rvar r = make_rvar(r_val); + + rvar call_price + = black_scholes_option_price>(CP::call, K, S, sigma, tau, r); + rvar put_price + = black_scholes_option_price>(CP::put, K, S, sigma, tau, r); + + double const d1 = ((log(S_val / K) + (r_val + sigma_val * sigma_val / 2) * tau_val) + / (sigma_val * sqrt(tau_val))); + double const d2 = ((log(S_val / K) + (r_val - sigma_val * sigma_val / 2) * tau_val) + / (sigma_val * sqrt(tau_val))); + double const formula_call_delta = +Phi(+d1); + double const formula_put_delta = -Phi(-d1); + double const formula_vega = (S_val * phi(d1) * sqrt(tau_val)); + double const formula_call_theta = (-S_val * phi(d1) * sigma_val / (2 * sqrt(tau_val)) + - r_val * K * exp(-r_val * tau_val) * Phi(+d2)); + + double const formula_put_theta = (-S_val * phi(d1) * sigma_val / (2 * sqrt(tau_val)) + + r_val * K * exp(-r_val * tau_val) * Phi(-d2)); + double const formula_call_rho = (+K * tau_val * exp(-r_val * tau_val) * Phi(+d2)); + double const formula_put_rho = (-K * tau_val * exp(-r_val * tau_val) * Phi(-d2)); + double const formula_gamma = (phi(d1) / (S_val * sigma_val * sqrt(tau_val))); + double const formula_vanna = (-phi(d1) * d2 / sigma_val); + double const formula_charm = (phi(d1) * (d2 * sigma_val * sqrt(tau_val) - 2 * r_val * tau_val) + / (2 * tau_val * sigma_val * sqrt(tau_val))); + double const formula_vomma = (S_val * phi(d1) * sqrt(tau_val) * d1 * d2 / sigma_val); + double const formula_veta = (-S_val * phi(d1) * sqrt(tau_val) + * (r_val * d1 / (sigma_val * sqrt(tau_val)) + - (1 + d1 * d2) / (2 * tau_val))); + double const formula_speed = (-phi(d1) * (d1 / (sigma_val * sqrt(tau_val)) + 1) + / (S_val * S_val * sigma_val * sqrt(tau_val))); + double const formula_zomma = (phi(d1) * (d1 * d2 - 1) + / (S_val * sigma_val * sigma_val * sqrt(tau_val))); + double const formula_color = (-phi(d1) / (2 * S_val * tau_val * sigma_val * sqrt(tau_val)) + * (1 + + (2 * r_val * tau_val - d2 * sigma_val * sqrt(tau_val)) * d1 + / (sigma_val * sqrt(tau_val)))); + double const formula_ultima = -formula_vega + * ((d1 * d2 * (1 - d1 * d2) + d1 * d1 + d2 * d2) + / (sigma_val * sigma_val)); + + auto call_greeks = grad(call_price, &S, &sigma, &tau, &r); + auto put_greeks = grad(put_price, &S, &sigma, &tau, &r); + +`grad(f, &x, &y, ...)` returns a `vector` correspond to the gradient vector of `f` w.r.t. `x`,`y`, etc... + + auto call_greeks_2nd_order = hess(call_price, &S, &sigma, &tau, &r); + auto put_greeks_2nd_order = hess(put_price, &S, &sigma, &tau, &r); + +`hess(f, &x, &y, ...)` returns a `vector>` correspond to the hessian of `f` w.r.t. `x`,`y`, etc... + + auto call_greeks_3rd_order = grad_nd<3>(call_price, &S, &sigma, &tau, &r); + auto put_greeks_3rd_order = grad_nd<3>(put_price, &S, &sigma, &tau, &r); + +`grad_nd(f, &x, &y, ...)` returns a `vector>...` correspond to the gradient tensor of `f` w.r.t. `x`,`y`, etc... + + std::cout << std::setprecision(std::numeric_limits::digits10) + << "autodiff black-scholes call price = " << call_price.item() << "\n" + << "autodiff black-scholes put price = " << put_price.item() << "\n" + << "\n ## First-order Greeks \n" + << "autodiff call delta = " << call_greeks[0].item() << "\n" + << "formula call delta = " << formula_call_delta << "\n" + << "autodiff call vega = " << call_greeks[1].item() << '\n' + << " formula call vega = " << formula_vega << '\n' + << "autodiff call theta = " << -call_greeks[2].item() << '\n' + << " formula call theta = " << formula_call_theta << '\n' + << "autodiff call rho = " << call_greeks[3].item() << 'n' + << " formula call rho = " << formula_call_rho << '\n' + << '\n' + << "autodiff put delta = " << put_greeks[0].item() << 'n' + << " formula put delta = " << formula_put_delta << '\n' + << "autodiff put vega = " << put_greeks[1].item() << '\n' + << " formula put vega = " << formula_vega << '\n' + << "autodiff put theta = " << -put_greeks[2].item() << '\n' + << " formula put theta = " << formula_put_theta << '\n' + << "autodiff put rho = " << put_greeks[3].item() << '\n' + << " formula put rho = " << formula_put_rho << '\n' + + << "\n## Second-order Greeks\n" + << "autodiff call gamma = " << call_greeks_2nd_order[0][0].item() << '\n' + << "autodiff put gamma = " << put_greeks_2nd_order[0][0].item() << '\n' + << " formula gamma = " << formula_gamma << '\n' + << "autodiff call vanna = " << call_greeks_2nd_order[0][1].item() << '\n' + << "autodiff put vanna = " << put_greeks_2nd_order[0][1].item() << '\n' + << " formula vanna = " << formula_vanna << '\n' + << "autodiff call charm = " << -call_greeks_2nd_order[0][2].item() << '\n' + << "autodiff put charm = " << -put_greeks_2nd_order[0][2].item() << '\n' + << " formula charm = " << formula_charm << '\n' + << "autodiff call vomma = " << call_greeks_2nd_order[1][1].item() << '\n' + << "autodiff put vomma = " << put_greeks_2nd_order[1][1].item() << '\n' + << " formula vomma = " << formula_vomma << '\n' + << "autodiff call veta = " << call_greeks_2nd_order[1][2].item() << '\n' + << "autodiff put veta = " << put_greeks_2nd_order[1][2].item() << '\n' + << " formula veta = " << formula_veta << '\n' + + << "\n## Third-order Greeks\n" + << "autodiff call speed = " << call_greeks_3rd_order[0][0][0] << '\n' + << "autodiff put speed = " << put_greeks_3rd_order[0][0][0] << '\n' + << " formula speed = " << formula_speed << '\n' + << "autodiff call zomma = " << call_greeks_3rd_order[0][0][1] << '\n' + << "autodiff put zomma = " << put_greeks_3rd_order[0][0][1] << '\n' + << " formula zomma = " << formula_zomma << '\n' + << "autodiff call color = " << call_greeks_3rd_order[0][0][2] << '\n' + << "autodiff put color = " << put_greeks_3rd_order[0][0][2] << '\n' + << " formula color = " << formula_color << '\n' + << "autodiff call ultima = " << call_greeks_3rd_order[1][1][1] << '\n' + << "autodiff put ultima = " << put_greeks_3rd_order[1][1][1] << '\n' + << " formula ultima = " << formula_ultima << '\n'; + return 0; + } + +Some notes on the implementations of `grad`, `hess`, and `grad_nd`. Internally these functions correctly clear the tape and zero out the gradients, so manual `tape.zero_grad()` isn't needed. They however return copies of the adjoint values in a vector, so there can be some performance overhead over using `f.backward()` directly. + +`grad`, `hess` and `grad_nd` are each overloaded twice. You can call + + grad(rvar &f, std::vector *> &x) + +if you want to take a gradient with respect to many variables, or conveniently + + grad(f, &x, &y) + +if you have only a few variables you need to take the gradient with respect to. +The order of operations for `grad` matters. Although something like below is generally safe: + + auto gv = grad(f,&x,&y,&z); + auto hv = grad(gv[0], &x, &y &z); + +The code below isn't, and will produce incorrect results: + + auto hv = hess(f,&x,&y,&z) + auto g3v = grad(hv[0][0], &x,&y,&z) + +or: + + auto hv = hess(f,&x,&y,&z) + auto g4v = hess(hv[0][0], &x,&y,&z) + +When in doubt, its always preferrable to compute higher order derivatives with: + + auto g4 = grad_nd<4>(f, &x,&y,&z) + +[h2:expression-templates-and-auto Expression Templates and auto] +Reverse mode autodiff is expression template (`BOOST_MATH_REVERSE_MODE_ET_ON`) based by default. If you'd like to disable expression templates (for debugging, benchmarking, or simplify integration with other systems), you must define the following macro at compile time: + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + +or pass it to the compiler via flag + + g++ -DBOOST_MATH_REVERSE_MODE_ET_OFF + +The expression templated version of this code doesn't currently interact nicely with the Boost.Math special function implementations, and will throw compile time errors. Disabling expression templates will often fix this, however various special functions are implemented in a way that breaks the automatic differentiation chain for certain values. Complete special function support may be added in the future. Below is the list of the current state of special function support. + + + +Furthermore, some care also has to be taken when writing code with expression templated types. For example consider the code below: + + rvar x = 1.0; + rvar y = 2.0; + rvar z = 3.0; + auto w = x+y*z; + +The type of `w` is not `rvar` but `add_expr,mult_expr,rvar>>` This means that the code below will not compile: + + template + T f(T x) + { + return x*x; + } + int main() + { + rvar x = 1.0; + auto v = f(2*x); + } +due to a type mismatch. It is also preferred to use auto for type deduction as often as possible. Consider the following 2 functions: + + #include + #include + #include + + using namespace boost::math::differentiation::reverse_mode; + template + T testfunc_noauto(T& x, T& y, T& z) + { + T w1 = log(1 + abs(x)) * exp(y) + z; + T w2 = pow(x + y, 2.5) / z; + T w3 = sqrt(1 + x * y) * z * z; + T w4 = w1 + w2 + w3; + T w5 = w4 * w2; + return w5; + } + + template + T testfunc_auto(T& x, T& y, T& z) + { + auto w1 = log(1 + abs(x)) * exp(y) + z; + auto w2 = pow(x + y, 2.5) / z; + auto w3 = sqrt(1 + x * y) * z * z; + auto w4 = w1 + w2 + w3; + auto w5 = w4 * w2; + return w5; + } + +and the corresponding benchmark: + + template + void BM_RVar(benchmark::State& state, Func f) + { + using T = rvar; + auto& tape = get_active_tape(); + for (auto _ : state) { + tape.clear(); + T x(1.0), y(2.0), z(3.0); + auto result = f(x, y, z); + benchmark::DoNotOptimize(result); + result.backward(); + benchmark::DoNotOptimize(x.adjoint()); + benchmark::DoNotOptimize(y.adjoint()); + benchmark::DoNotOptimize(z.adjoint()); + } + } + BENCHMARK([](benchmark::State& st) { BM_RVar(st, testfunc_auto>); }); + BENCHMARK([](benchmark::State& st) { BM_RVar(st, testfunc_noauto>); }); + BENCHMARK_MAIN(); + +Running this benchmark on a 13th Gen Intel(R) Core(TM) i7-13650HX, compiled with `-O3`: + + ./benchmark --benchmark_filter=testfunc_auto + + -------------------------------------------------------------------------------------------------------------------- + Benchmark Time CPU Iterations + -------------------------------------------------------------------------------------------------------------------- + [](benchmark::State& st) { BM_RVar(st, testfunc_auto>); } 199546 ns 199503 ns 10000 + +and + + ./benchmark --benchmark_filter=testfunc_noauto + + ---------------------------------------------------------------------------------------------------------------------- + Benchmark Time CPU Iterations + ---------------------------------------------------------------------------------------------------------------------- + [](benchmark::State& st) { BM_RVar(st, testfunc_noauto>); } 375731 ns 375669 ns 10000 + +You get nearly 2x speedup on the code that uses auto. + +[endsect] diff --git a/doc/equations/autodiff/reverse_mode_autodiff_ex_eq.svg b/doc/equations/autodiff/reverse_mode_autodiff_ex_eq.svg new file mode 100644 index 0000000000..a2ad4c200b --- /dev/null +++ b/doc/equations/autodiff/reverse_mode_autodiff_ex_eq.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/doc/graphs/autodiff/autodiff_reverse_graph.svg b/doc/graphs/autodiff/autodiff_reverse_graph.svg new file mode 100644 index 0000000000..4f8fca5e55 --- /dev/null +++ b/doc/graphs/autodiff/autodiff_reverse_graph.svg @@ -0,0 +1,1230 @@ + + + ++sin()*xyZDirection of gradient accumulation diff --git a/doc/html/math_toolkit/autodiff0.html b/doc/html/math_toolkit/autodiff0.html new file mode 100644 index 0000000000..cf7c1090fc --- /dev/null +++ b/doc/html/math_toolkit/autodiff0.html @@ -0,0 +1,6843 @@ + + + +Reverse Mode Automatic Differentiation + + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ + Synopsis +

+
/* enable or disable expression templates at compile time */
+#ifndef BOOST_MATH_REVERSE_MODE_ET_OFF
+#define BOOST_MATH_REVERSE_MODE_ET_ON
+#endif
+
+#include <boost/math/differentiation/autodiff_reverse.hpp>
+
+namespace boost {
+namespace math {
+namespace differentiation {
+namespace reverse_mode {
+
+/* autodiff variable of type RealType (numeric types), stores derivatives up to DerivativeOrder
+* rvar inherits from a generic expression base class
+* expression<RealType, DerivativeOrder, rvar<RealType, DerivativeOrder>>
+* This is a Curiously Recurring Template Pattern(CRTP)
+* The purpose is so that rvar acts as a terminal node in an expression graph, and can be combined
+* with other expression-based types (sums, producs, etc..) to form expression graphs.
+*/
+template<typename RealType, size_t DerivativeOrder = 1>
+class rvar : public expression<RealType, DerivativeOrder, rvar<RealType, DerivativeOrder>> {
+  // inner_t of rvar<RealType, N> = var<RealType, N-1>
+  // used to store graphs of N-1 order derivatives
+  // rvar_t<RealType, 0> decays to RealType
+  using inner_t = rvar_t<RealType, DerivativeOrder - 1>;
+  /* constructors */
+  // default
+  rvar();
+  // construct from numeric type
+  rvar(const RealType value);
+  // copy
+  rvar(const rvar<RealType, DerivativeOrder> other);
+
+  /* assignment operators */
+  // from numeric type
+  rvar &operator=(RealType v);
+  // from another rvar
+  rvar &operator=(const rvar<RealType, DerivativeOrder> &other);
+  // from a chain of expression templates
+  rvar &operator=(const expression<RealType, DerivativeOrder, E> &expr);
+
+  // calculate all derivatives in computational graph
+  void backward();
+
+  // get RealType value in rvar
+  RealType item() const;
+
+  // get accumulated adjoint of this variable
+  // returns inner_t
+  const inner_t &adjoint() const { return *node_->get_adjoint_ptr(); }
+  inner_t       &adjoint() { return *node_->get_adjoint_ptr(); }
+
+  // all arithmetic and comparison operators are overloaded
+  template<class E>
+  rvar<RealType, DerivativeOrder> &operator+=(const expression<RealType, DerivativeOrder, E> &expr);
+
+  template<class E>
+  rvar<RealType, DerivativeOrder> &operator*=(const expression<RealType, DerivativeOrder, E> &expr)
+
+
+}
+
+// gradient tape holds the computational graph
+/*
+* The expression graph is stored on a tape. The tape is closely related to the memory manegement
+* system in the library. BOOST_MATH_BUFFER_SIZE is set to 65536. It controls the block size of the
+* internal memory arena. Its a macro, and can be set at compile time.
+*/
+template<typename RealType, size_t DerivativeOrder, size_t buffer_size = BOOST_MATH_BUFFER_SIZE>
+class gradient_tape {
+
+  // clear tape
+  void clear();
+
+  // sets all derivatives to zero
+  void zero_grad();
+
+  // adds a checkpoint you can rewind to
+  void add_checkpoint();
+
+  // rewinds tape to last checkpoint set
+  void rewind_to_last_checkpoint();
+  // index is "checkpoint" index. so                                              // order which checkpoint was set
+  void rewind_to_checkpoint_at(size_t index);
+  // rewind to beginning of graph without clearing the tape
+  void rewind();
+}
+
+// tape access
+template<typename template<typename RealType, size_t DerivativeOrder>>
+inline gradient_tape<RealType, DerivativeOrder, BOOST_MATH_BUFFER_SIZE> &get_active_tape();
+
+// standard math functions are overloaded using expression templates
+template<typename RealType, size_t DerivativeOrder, typename LHS, typename RHS>
+struct add_expr : public abstract_binary_expression<RealType, DerivativeOrder, LHS, RHS, add_expr<RealType, DerivativeOrder, LHS, RHS>>
+
+template<typename RealType, size_t DerivativeOrder, typename LHS, typename RHS> add_expr<RealType, DerivativeOrder, LHS, RHS> operator+(const expression<RealType, DerivativeOrder, LHS> &lhs,const expression<RealType, DerivativeOrder, RHS> &rhs);
+
+// Standard math functions are overloaded and called via argument-dependent lookup (ADL).
+template<typename RealType, size_t DerivativeOrder, typename ARG>
+floor_expr<RealType, DerivativeOrder, ARG> floor(const expression<RealType,DerivativeOrder, ARG> &arg);
+
+template<typename RealType, size_t DerivativeOrder, typename ARG>
+cos_expr<RealType, DerivativeOrder, ARG> cos(const expression<RealType,DerivativeOrder, ARG> &arg);
+
+// Helper gradient functions
+// rvar<T,0> decays into T
+// returns vector<rvar<T,order1_1-1>> of gradients
+template<typename T, size_t order_1, size_t order_2>
+auto grad(rvar<T, order_1> &f, std::vector<rvar<T, order_2> *> &x);
+template<typename T, size_t order_1, typename First, typename... Other>
+auto grad(rvar<T, order_1> &f, First first, Other... other)
+// returns a vector<vector<rvar<T, order_1 - 2>> representing the hessian matrix
+template<typename T, size_t order_1, size_t order_2>
+auto hess(rvar<T, order_1> &f, std::vector<rvar<T, order_2> *> &x)
+template<typename T, size_t order_1, typename First, typename... Other>
+auto hess(rvar<T, order_1> &f, First first, Other... other)
+// returns N-d nested vector<vector< ...rvar<T,order_1 - N> ...
+// representing the tensor generalization of the N-d gradient
+template<size_t N, typename T, size_t order_1, size_t order_2>
+auto grad_nd(rvar<T, order_1> &f, std::vector<rvar<T, order_2> *> &x)
+template<size_t N, typename ftype, typename First, typename... Other>
+auto grad_nd(ftype &f, First first, Other... other)
+// ...
+
+}  // namespace reverse_mode
+}  // namespace differentiation
+}  // namespace math
+}  // namespace boost
+
+

+ + Description +

+

+ Reverse mode autodiff is a header-only C++ library the automatic + differentiation (reverse mode) of mathematical functions. This implementation + builds a computational graph known as a tape, which stores all operations and + their corresponding derivatives. The total gradients are then computed by reverse + accumulation via the chain rule. +

+

+ Consider the following function +

+
template<typename T>
+T f(x,y)
+{
+  return x*y+sin(x);
+}
+
+int main()
+{
+  rvar<double,1> x = 1.0;
+  rvar<double,1> y = 1.0;
+  rvar<double,1> z = f(x,y);
+  z.backward();
+}
+
+

+ and the associated computational graph. +

+

+ +

+

+ Using reverse mode autodiff, the gradients are computed by traversing the graph + backward: +

+

+ +

+

+ Some key points about reverse mode automatic differentiation: +

+

+ 1. Reverse mode auto-diff is exceptionally efficient for computing the gradient + of functions mapping from high to low dimensional space, f : ℜn→ℜ. Unlike finite + differences or forward mode autodiff which scale with the number of input variables, + reverse mode autodiff calculates the entire gradient vector in time proportional + to the original function's evaluation time. +

+

+ 2. While forward-over-reverse is often the most efficient way to obtain Hessians + or Jacobian–vector products, our implementation currently supports reverse-over-reverse + only. This means higher-order derivatives are available, but at a higher computational + cost.It is possible to compute higher order derivatives by applying reverse + mode over reverse mode differentiation. The backward function builds a new + computational tape over the gradient computation. This approach is conceptually + sound, but it can become computationally expensive very quickly. Forward mode + autodiff is generally preferrable when computing higher order derivatives. +

+

+ 3. While reverse mode is fast for computing the gradient, it has to store all + the intermediate values from the forward pass to be used during the backward + pass. This can be a significant memory overhead, especially for deep networks + or complex functions. +

+

+ + List + of overloaded functions +

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

+ Function +

+
+

+ argument types +

+
+

+ implementation +

+
+

+ return type +

+
+

+ left derivative +

+
+

+ right derivative +

+
+

+ + +

+
+

+ expression, expression +

+
+

+ x+y +

+
+

+ expression +

+
+

+ 1.0 +

+
+

+ 1.0 +

+
+

+ + +

+
+

+ expression, float +

+
+

+ x+y +

+
+

+ expresison +

+
+

+ 1.0 +

+
+
+

+ + +

+
+

+ float, expression +

+
+

+ x+y +

+
+

+ expression +

+
+

+ 1.0 +

+
+
+

+ * +

+
+

+ expression, expression +

+
+

+ x*y +

+
+

+ expression +

+
+

+ y +

+
+

+ x +

+
+

+ * +

+
+

+ expression, float +

+
+

+ x*y +

+
+

+ expression +

+
+

+ y +

+
+
+

+ * +

+
+

+ float, expression +

+
+

+ x*y +

+
+

+ expression +

+
+ +

+ x +

+
+

+ - +

+
+

+ expression, expression +

+
+

+ x-y +

+
+

+ expression +

+
+

+ 1.0 +

+
+

+ -1.0 +

+
+

+ - +

+
+

+ expression, float +

+
+

+ x-y +

+
+

+ expression +

+
+

+ 1.0 +

+
+
+

+ - +

+
+

+ float, expression +

+
+

+ x-y +

+
+

+ expression +

+
+ +

+ -1.0 +

+
+

+ / +

+
+

+ expression, expression +

+
+

+ x/y +

+
+

+ expression +

+
+

+ 1/y +

+
+

+ -x/(y*y) +

+
+

+ / +

+
+

+ expression, float +

+
+

+ x/y +

+
+

+ expression +

+
+

+ 1/y +

+
+
+

+ / +

+
+

+ float, expression +

+
+

+ x/y +

+
+

+ expression +

+
+ +

+ -x/(y*y) +

+
+

+ fabs +

+
+

+ expression +

+
+

+ std::fabs(x) +

+
+

+ expression +

+
+

+ x > 0.0 ? 1.0 : -1.0 +

+
+
+

+ abs +

+
+

+ expression +

+
+

+ fabs(x) +

+
+

+ expression +

+
+

+ x > 0.0 ? 1.0 : -1.0 +

+
+
+

+ ceil +

+
+

+ expression +

+
+

+ std::ceil(x) +

+
+

+ expression +

+
+

+ 0.0 +

+
+
+

+ floor +

+
+

+ expression +

+
+

+ std::floor(x) +

+
+

+ expression +

+
+

+ 0.0 +

+
+
+

+ trunc +

+
+

+ expression +

+
+

+ std::trunc(x) +

+
+

+ expression +

+
+

+ 0.0 +

+
+
+

+ exp +

+
+

+ expression +

+
+

+ std::exp(x) +

+
+

+ expression +

+
+

+ exp(x) +

+
+
+

+ pow +

+
+

+ expression, expression +

+
+

+ std::pow(x,y) +

+
+

+ expression +

+
+

+ y*pow(x,y-1) +

+
+

+ pow(x,y)*log(x) +

+
+

+ pow +

+
+

+ expression, float +

+
+

+ std::pow(x,y) +

+
+

+ expression +

+
+

+ y*pow(x,y-1) +

+
+
+

+ pow +

+
+

+ float. expression +

+
+

+ std::pow(x,y) +

+
+

+ expression +

+
+ +

+ pow(x,y)*log(x) +

+
+

+ sqrt +

+
+

+ expression +

+
+

+ std::sqrt(x) +

+
+

+ expression +

+
+

+ 1/(2 sqrt(x)) +

+
+
+

+ log +

+
+

+ expression +

+
+

+ std::log(x) +

+
+

+ expression +

+
+

+ 1/x +

+
+
+

+ cos +

+
+

+ expression +

+
+

+ std::cos(x) +

+
+

+ expression +

+
+

+ -sin(x) +

+
+
+

+ sin +

+
+

+ expression +

+
+

+ std::sin(x) +

+
+

+ expression +

+
+

+ cos(x) +

+
+
+

+ tan +

+
+

+ expression +

+
+

+ std::tan(x) +

+
+

+ expression +

+
+

+ 1/(cos(x)*cos(x)) +

+
+
+

+ acos +

+
+

+ expression +

+
+

+ std::acos(x) +

+
+

+ expression +

+
+

+ -1.0/(sqrt(1-x*x)) +

+
+
+

+ asin +

+
+

+ expression +

+
+

+ std::asin(x) +

+
+

+ expression +

+
+

+ 1.0/(sqrt(1-x*x)) +

+
+
+

+ atan +

+
+

+ expression +

+
+

+ std::atan(x) +

+
+

+ expression +

+
+

+ 1.0/(1+x*x) +

+
+
+

+ atan2 +

+
+

+ expression,expression +

+
+

+ std::atan2(x,y) +

+
+

+ expression +

+
+

+ y/(x*x+y*y) +

+
+

+ -x/(x*x+y*y) +

+
+

+ atan2 +

+
+

+ expression,float +

+
+

+ std::atan2(x,y) +

+
+

+ expression +

+
+

+ y/(x*x+y*y) +

+
+
+

+ atan2 +

+
+

+ float,expression +

+
+

+ std::atan2(x,y) +

+
+

+ expression +

+
+ +

+ -x/(x*x+y*y) +

+
+

+ round +

+
+

+ expression +

+
+

+ std::round(x) +

+
+

+ expression +

+
+

+ 0.0 +

+
+
+

+ cosh +

+
+

+ expression +

+
+

+ std::cosh(x) +

+
+

+ expression +

+
+

+ sinh(x) +

+
+
+

+ sinh +

+
+

+ expression +

+
+

+ std::sinh(x) +

+
+

+ expression +

+
+

+ cosh(x) +

+
+
+

+ tanh +

+
+

+ expression +

+
+

+ std::tanh(x) +

+
+

+ expression +

+
+

+ 1/(cosh(x)*cosh(x)) +

+
+
+

+ log10 +

+
+

+ expression +

+
+

+ std::log10(x) +

+
+

+ expression +

+
+

+ 1/(xlog(10.0) +

+
+
+

+ acosh +

+
+

+ expression +

+
+

+ std::cosh(x) +

+
+

+ expression +

+
+

+ 1.0/(sqrt(x-1)*sqrt(x+1)) +

+
+
+

+ asinh +

+
+

+ expression +

+
+

+ std::sinh(x) +

+
+

+ expression +

+
+

+ 1/(sqrt(1+x*x)) +

+
+
+

+ atanh +

+
+

+ expression +

+
+

+ std::tanh(x) +

+
+

+ expression +

+
+

+ 1/(1-x*x)) +

+
+
+

+ fmod +

+
+

+ expression,expression +

+
+

+ std::fmod(x,y) +

+
+

+ expression +

+
+

+ 1.0 +

+
+

+ -1.0/trunc(x/y) +

+
+

+ fmod +

+
+

+ expression,float +

+
+

+ std::fmod(x,y) +

+
+

+ expression +

+
+

+ 1.0 +

+
+
+

+ fmod +

+
+

+ float,expression +

+
+

+ std::fmod(x,y) +

+
+

+ expression +

+
+ +

+ -1.0/trunc(x/y) +

+
+

+ iround +

+
+

+ expression +

+
+

+ std::iround(x) +

+
+

+ int, this function breaks the autodiff chain +

+
+ +
+

+ lround +

+
+

+ expression +

+
+

+ std::lround(x) +

+
+

+ long, this function breaks the autodiff chain +

+
+ +
+

+ llround +

+
+

+ expression +

+
+

+ std::llround(x) +

+
+

+ long long, this function breaks the autodiff chain +

+
+ +
+

+ itrunc +

+
+

+ expression +

+
+

+ std::itrunc(x) +

+
+

+ int, this function breaks the autodiff chain +

+
+ +
+

+ ltrunc +

+
+

+ expression +

+
+

+ std::ltrunc(x) +

+
+

+ long, this function breaks the autodiff chain +

+
+ +
+

+ lltrunc +

+
+

+ expression +

+
+

+ std::lltrunc(x) +

+
+

+ long long, this function breaks the autodiff chain +

+
+ +
+

+ frexp +

+
+

+ expression, *int +

+
+

+ std::frexp(x.evaluate(),i); x/pow(2.0, *int) +

+
+

+ expression +

+
+

+ 1/pow(2.0,int) +

+
+
+

+ ldexp +

+
+

+ expression, &int +

+
+

+ x*pow(2,int) +

+
+

+ expression +

+
+

+ pow(2,int) +

+
+
+

+ + Specfun + Support +

+

+ [/ BEGIN SPECFUN TABLE] +

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

+ Function +

+
+

+ compiles with ET ON +

+
+

+ runs with ET ON +

+
+

+ compiles with ET OFF +

+
+

+ runs with ET OFF +

+
+

+ works with multiprecision +

+
+

+ known issues +

+
+

+ tgamma +

+
+

+ True +

+
+

+ True +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ derivatives incorrect when argument is an integer +

+
+

+ tgamma1pm1 +

+
+

+ False +

+
+

+ N/A +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ lgamma +

+
+

+ True +

+
+

+ True +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ digamma +

+
+

+ True +

+
+

+ True +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ trigamma +

+
+

+ True +

+
+

+ True +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ polygamma +

+
+

+ False +

+
+

+ N/A +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ tgamma_ratio +

+
+

+ False +

+
+

+ N/A +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ tgamma_delta_ratio +

+
+

+ False +

+
+

+ N/A +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ gamma_p +

+
+

+ False +

+
+

+ N/A +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ gamma_q +

+
+

+ False +

+
+

+ N/A +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ tgamma_lower +

+
+

+ False +

+
+

+ N/A +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ rising_factorial +

+
+

+ False +

+
+

+ N/A +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ falling_factorial +

+
+

+ False +

+
+

+ N/A +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ beta +

+
+

+ False +

+
+

+ N/A +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ ibeta +

+
+

+ False +

+
+

+ N/A +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ ibetac +

+
+

+ False +

+
+

+ N/A +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ betac +

+
+

+ False +

+
+

+ N/A +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ ibeta_inv +

+
+

+ False +

+
+

+ N/A +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ ibetac_inv +

+
+

+ False +

+
+

+ N/A +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ ibeta_inva +

+
+

+ False +

+
+

+ N/A +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ ibetac_inva +

+
+

+ False +

+
+

+ N/A +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ ibeta_invb +

+
+

+ False +

+
+

+ N/A +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ ibetac_invb +

+
+

+ False +

+
+

+ N/A +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ ibeta_derivative +

+
+

+ False +

+
+

+ N/A +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ legendre_p +

+
+

+ False +

+
+

+ N/A +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ legendre_p_prime +

+
+

+ True +

+
+

+ True +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ legendre_q +

+
+

+ False +

+
+

+ N/A +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ laguerre +

+
+

+ True +

+
+

+ True +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ hermite +

+
+

+ True +

+
+

+ True +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ chebyshev_t +

+
+

+ True +

+
+

+ True +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ chebyshev_u +

+
+

+ True +

+
+

+ True +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ chebyshev_t_prime +

+
+

+ True +

+
+

+ True +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ spherical_harmonic +

+
+

+ False +

+
+

+ N/A +

+
+

+ False +

+
+

+ N/A +

+
+

+ False +

+
+

+ N/A +

+
+

+ spherical_harmonic_r +

+
+

+ False +

+
+

+ N/A +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ spherical_harmonic_i +

+
+

+ False +

+
+

+ N/A +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ gegenbauer +

+
+

+ False +

+
+

+ N/A +

+
+

+ False +

+
+

+ N/A +

+
+

+ False +

+
+

+ N/A +

+
+

+ gegenbauer_prime +

+
+

+ False +

+
+

+ N/A +

+
+

+ False +

+
+

+ N/A +

+
+

+ False +

+
+

+ N/A +

+
+

+ gegenbauer_derivative +

+
+

+ False +

+
+

+ N/A +

+
+

+ False +

+
+

+ N/A +

+
+

+ False +

+
+

+ N/A +

+
+

+ jacobi +

+
+

+ True +

+
+

+ True +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ jacobi_derivative +

+
+

+ True +

+
+

+ True +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ jacobi_prime +

+
+

+ True +

+
+

+ True +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ jacobi_double_prime +

+
+

+ True +

+
+

+ True +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ cyl_bessel_j +

+
+

+ False +

+
+

+ N/A +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ cyl_neumann +

+
+

+ False +

+
+

+ N/A +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ cyl_bessel_i +

+
+

+ False +

+
+

+ N/A +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ cyl_bessel_k +

+
+

+ False +

+
+

+ N/A +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ sph_bessel +

+
+

+ False +

+
+

+ N/A +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ sph_neumann +

+
+

+ False +

+
+

+ N/A +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ cyl_bessel_j_prime +

+
+

+ False +

+
+

+ N/A +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ cyl_neumann_prime +

+
+

+ False +

+
+

+ N/A +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ cyl_bessel_i_prime +

+
+

+ False +

+
+

+ N/A +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ cyl_bessel_k_prime +

+
+

+ False +

+
+

+ N/A +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ sph_bessel_prime +

+
+

+ False +

+
+

+ N/A +

+
+

+ False +

+
+

+ N/A +

+
+

+ False +

+
+

+ N/A +

+
+

+ sph_neumann_prime +

+
+

+ False +

+
+

+ N/A +

+
+

+ False +

+
+

+ N/A +

+
+

+ False +

+
+

+ N/A +

+
+

+ cyl_hankel_1 +

+
+

+ False +

+
+

+ N/A +

+
+

+ False +

+
+

+ N/A +

+
+

+ False +

+
+

+ N/A +

+
+

+ cyl_hankel_2 +

+
+

+ False +

+
+

+ N/A +

+
+

+ False +

+
+

+ N/A +

+
+

+ False +

+
+

+ N/A +

+
+

+ sph_hankel_1 +

+
+

+ False +

+
+

+ N/A +

+
+

+ False +

+
+

+ N/A +

+
+

+ False +

+
+

+ N/A +

+
+

+ sph_hankel_2 +

+
+

+ False +

+
+

+ N/A +

+
+

+ False +

+
+

+ N/A +

+
+

+ False +

+
+

+ N/A +

+
+

+ airy_ai +

+
+

+ False +

+
+

+ N/A +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ airy_bi +

+
+

+ False +

+
+

+ N/A +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ airy_ai_prime +

+
+

+ False +

+
+

+ N/A +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ airy_bi_prime +

+
+

+ False +

+
+

+ N/A +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ ellint_rf +

+
+

+ False +

+
+

+ N/A +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ ellint_rd +

+
+

+ False +

+
+

+ N/A +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ ellint_rj +

+
+

+ False +

+
+

+ N/A +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ ellint_rc +

+
+

+ False +

+
+

+ N/A +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ ellint_rg +

+
+

+ False +

+
+

+ N/A +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ ellint_1 +

+
+

+ False +

+
+

+ N/A +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ ellint_2 +

+
+

+ False +

+
+

+ N/A +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ ellint_3 +

+
+

+ False +

+
+

+ N/A +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ ellint_d +

+
+

+ False +

+
+

+ N/A +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ jacobi_zeta +

+
+

+ False +

+
+

+ N/A +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ heuman_lambda +

+
+

+ False +

+
+

+ N/A +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ jacobi_cd +

+
+

+ True +

+
+

+ True +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ jacobi_cn +

+
+

+ True +

+
+

+ True +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ jacobi_cs +

+
+

+ True +

+
+

+ True +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ jacobi_dc +

+
+

+ True +

+
+

+ True +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ jacobi_dn +

+
+

+ True +

+
+

+ True +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ jacobi_ds +

+
+

+ True +

+
+

+ True +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ jacobi_nc +

+
+

+ True +

+
+

+ True +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ jacobi_nd +

+
+

+ True +

+
+

+ True +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ jacobi_ns +

+
+

+ True +

+
+

+ True +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ jacobi_sc +

+
+

+ True +

+
+

+ True +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ jacobi_sd +

+
+

+ True +

+
+

+ True +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ jacobi_sn +

+
+

+ True +

+
+

+ True +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ jacobi_theta1 +

+
+

+ True +

+
+

+ True +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ jacobi_theta1tau +

+
+

+ True +

+
+

+ True +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ jacobi_theta2 +

+
+

+ True +

+
+

+ True +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ jacobi_theta1tau +

+
+

+ True +

+
+

+ True +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ jacobi_theta3 +

+
+

+ True +

+
+

+ True +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ jacobi_theta3tau +

+
+

+ True +

+
+

+ True +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ jacobi_theta3m1 +

+
+

+ True +

+
+

+ True +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ jacobi_theta3m1tau +

+
+

+ True +

+
+

+ True +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ jacobi_theta4 +

+
+

+ True +

+
+

+ True +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ jacobi_theta4tau +

+
+

+ True +

+
+

+ True +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ jacobi_theta4m1 +

+
+

+ True +

+
+

+ True +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ jacobi_theta4m1tau +

+
+

+ True +

+
+

+ True +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ lambert_w0 +

+
+

+ False +

+
+

+ N/A +

+
+

+ False +

+
+

+ N/A +

+
+

+ False +

+
+

+ N/A +

+
+

+ lambert_wm1 +

+
+

+ False +

+
+

+ N/A +

+
+

+ False +

+
+

+ N/A +

+
+

+ False +

+
+

+ N/A +

+
+

+ lambert_w0_prime +

+
+

+ False +

+
+

+ N/A +

+
+

+ False +

+
+

+ N/A +

+
+

+ False +

+
+

+ N/A +

+
+

+ lambert_wm1_prime +

+
+

+ False +

+
+

+ N/A +

+
+

+ False +

+
+

+ N/A +

+
+

+ False +

+
+

+ N/A +

+
+

+ zeta +

+
+

+ False +

+
+

+ N/A +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ expint +

+
+

+ False +

+
+

+ N/A +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ hypergeometric_1F0 +

+
+

+ True +

+
+

+ True +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ hypergeometric_0F1 +

+
+

+ False +

+
+

+ N/A +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ hypergeometric_2F0 +

+
+

+ False +

+
+

+ N/A +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ hypergeometric_1F1 +

+
+

+ False +

+
+

+ N/A +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ sin_pi +

+
+

+ True +

+
+

+ True +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ cos_pi +

+
+

+ True +

+
+

+ True +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ log1p +

+
+

+ True +

+
+

+ True +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ expm1 +

+
+

+ True +

+
+

+ True +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ cbrt +

+
+

+ True +

+
+

+ True +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ sqrt1pm1 +

+
+

+ False +

+
+

+ N/A +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ powm1 +

+
+

+ False +

+
+

+ N/A +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ hypot +

+
+

+ True +

+
+

+ True +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ rsqrt +

+
+

+ False +

+
+

+ N/A +

+
+

+ False +

+
+

+ N/A +

+
+

+ False +

+
+

+ N/A +

+
+

+ logaddexp +

+
+

+ False +

+
+

+ N/A +

+
+

+ False +

+
+

+ N/A +

+
+

+ False +

+
+

+ N/A +

+
+

+ logsumexp +

+
+

+ False +

+
+

+ N/A +

+
+

+ False +

+
+

+ N/A +

+
+

+ False +

+
+

+ N/A +

+
+

+ sinc_pi +

+
+

+ True +

+
+

+ True +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ sinhc_pi +

+
+

+ True +

+
+

+ True +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ owens_t +

+
+

+ False +

+
+

+ N/A +

+
+

+ True +

+
+

+ False +

+
+

+ False +

+
+

+ N/A +

+
+

+ [/ END SPECFUN TABLE] +

+

+ + Example + 1: Linear Regression +

+

+ Although autodiff is overkill for linear regression, its a useful example for + demonstrating a typical gradient based optimization usecase. +

+
#include <array>
+#include <boost/math/differentiation/autodiff_reverse.hpp>
+#include <iostream>
+#include <random>
+#include <vector>
+
+using namespace boost::math::differentiation::reverse_mode;
+double random_double(double min_val, double max_val)
+{
+    static std::random_device              rd;
+    static std::mt19937                    gen(rd());
+    std::uniform_real_distribution<double> dist(min_val, max_val);
+    return dist(gen);
+}
+
+

+ This function generates a random double within a specified range, used to create + the true slope, intercept, and noisy data. +

+
double noisy_linear_function(double intercept, double slope, double x)
+{
+    return intercept + slope * x + random_double(-0.1, 0.1);
+}
+
+

+ Above is a simple data generating function that simulates some real-world data + by adding a small amount of random noise to a perfect linear relationship. + template<size_t N> rvar<double, 1> loss(std::array<double, N>& + y_target, std::array<rvar<double, 1>, N>& y_fit) { rvar<double, + 1> loss_v = make_rvar<double, 1>(0.0); for (size_t i = 0; i < N; + ++i) { loss_v += pow(abs(y_target[i] - y_fit[i]), 2) / N; } return loss_v; + } +

+

+ The loss function calculates the mean-squared error. It takes true values of + y, and the "model's" predicted y values and computes their squared + difference. +

+
template<size_t N>
+std::array<rvar<double, 1>, N> model(rvar<double, 1>& a, rvar<double, 1>& b, std::array<double, N>& x)
+{
+    std::array<rvar<double, 1>, N> ret;
+    for (size_t i = 0; i < N; ++i) {
+        ret[i] = a * x[i] + b;
+    }
+    return ret;
+}
+
+

+ This function represents the "linear model" we're fitting to. y = + ax + b. It takes slow a and intercept b as rvars and the "x" as data. + The returned array of rvars holds predicted y values and all calcuations are + tracked by the gradient tape. +

+
int main()
+{
+    // 1. Generate noisy data with known slope and intercept
+    double slope = random_double(-5, 5);
+    double intercept = random_double(-5, 5);
+    const size_t num_data_samples = 100;
+    std::array<double, num_data_samples> noisy_data_x;
+    std::array<double, num_data_samples> noisy_data_y;
+
+    for (size_t i = 0; i < num_data_samples; i++) {
+        double x = random_double(-1, 1);
+        double y = noisy_linear_function(intercept, slope, x);
+        noisy_data_x[i] = x;
+        noisy_data_y[i] = y;
+    }
+
+

+ Above is the data generation stage. We generate a dataset of 100 (x,y) points + where y us a linear function of plus some random noise. The "true" + slop and intercept are stored to be compared in the final result. +

+
// 2. Initialize guess variables
+double slope_guess = random_double(-5, 5);
+double intercept_guess = random_double(-5, 5);
+rvar<double, 1> a = make_rvar<double, 1>(slope_guess);
+rvar<double, 1> b = make_rvar<double, 1>(intercept_guess);
+
+

+ The initialization stage: the model's parameters a and b are initialized with + random guesses. +

+
// 3. Get the gradient tape and add a checkpoint
+gradient_tape<double, 1>& tape = get_active_tape<double, 1>();
+tape.add_checkpoint();
+
+

+ Tape management: get_active_tape<double,1> returns + a reference to a global tape that stores the computational graph. Checkpoints + are essential for gradient descent loops. They allow the tape to be "rewound" + at the beginning of each iteration preventing it from growing infinitely. +

+
// 4. Initial forward pass and loss calculation
+auto y_fit = model(a, b, noisy_data_x);
+rvar<double, 1> loss_v = loss(noisy_data_y, y_fit);
+
+

+ The model and loss functions are called. This is just to initialize y_fit and + loss_v to be used inside the while loop. // 5. Gradient Descent Loop double + learning_rate = 1e-3; +

+

+ The learning rate controls how large a step we take in the direction of the + negative gradient each iteration. Intuitively, it sets the "velocity" + of descent toward a minimum. +

+

+ Too high: the optimization may overshoot minima, oscillate, or even diverge. + Too low: convergence will be very slow and may stall in shallow regions. +

+

+ In practice, values in the range [1e-4, 1e-1] are common starting points, with + 1e-3 being a typical safe default for many problems. The best choice depends + on the scale of the data, the model, and the curvature of the loss landscape. +

+
while (loss_v > 0.005) {
+    tape.zero_grad(); // zero out all the adjoints
+
+

+ It is essentially to zero out the gradients at every iteration so as to not + reaccumulate them. if you were to call loss_v.backward() a second time, the derivative calculations + will be incorrect. +

+
tape.rewind_to_last_checkpoint(); // Rewind the tape for a new iteration
+
+

+ Rewinds the tape to right before the model and loss calculates were done. y_fit + = model(a, b, noisy_data_x); loss_v = loss(noisy_data_y, y_fit); loss_v.backward(); + // backward pass Calls the model and computes the gradeints. a -= a.adjoint() + * learning_rate; // Update 'a' by subtracting the gradient scaled by the learning + rate b -= b.adjoint() * learning_rate; // Update 'b' similarly } updates a and b + based on their gradients. +

+
  // 6. Print Results
+  std::cout << "Autodiff Linear Regression Summary \n";
+  std::cout << "learning rate : " << learning_rate << "\n";
+  std::cout << "true slope: " << slope;
+  std::cout << " regression: " << a.item() << "\n";
+
+  std::cout << "relative error (slope): " << relative_slope_error << "\n";
+  std::cout << "absolute error (slope): " << slope_error << "\n";
+  std::cout << "true intercept: " << intercept;
+  std::cout << " regression: " << b.item() << "\n";
+  std::cout << "absolute error (intercept): " << intercept_error << "\n";
+  std::cout << "aelative error (intercept): " << relative_intercept_error << "\n";
+  std::cout << "-------------------------------" << std::endl;
+}
+
+

+ A sample output of the above code +

+
Autodiff Linear Regression Summary
+learning rate : 0.001
+true slope: 1.15677 regression: 1.24685
+relative error (slope): 0.0778782
+absolute error (slope): 0.0900868
+true intercept: 2.23378 regression: 2.22309
+absolute error (intercept): 0.0106901
+aelative error (intercept): 0.00478563
+-------------------------------
+
+

+ + Example + 2: Black-Scholes Option Pricing with Greeks +

+

+ Below is effectively a rewrite of the forward mode autodiff Black Scholes example. + Its a good example on how to compute higher oder gradients with reverse mode + autodiff with helper functions like grad(), hess(), and grad_nd() +

+
#include <boost/math/differentiation/autodiff_reverse.hpp>
+
+using namespace boost::math::differentiation::reverse_mode;
+using namespace boost::math::constants;
+
+template<typename Real>
+Real phi(Real const& x)
+{
+    return one_div_root_two_pi<Real>() * exp(-0.5 * x * x);
+}
+
+template<typename Real>
+Real Phi(Real const& x)
+{
+    return 0.5 * erfc(-one_div_root_two<Real>() * x);
+}
+
+enum class CP { call, put };
+
+template<typename T>
+T black_scholes_option_price(CP cp, double K, T const& S, T const& sigma, T const& tau, T const& r)
+{
+    using namespace std;
+    auto const d1 = (log(S / K) + (r + sigma * sigma / 2) * tau) / (sigma * sqrt(tau));
+    auto const d2 = (log(S / K) + (r - sigma * sigma / 2) * tau) / (sigma * sqrt(tau));
+    switch (cp) {
+    case CP::call:
+        return S * Phi<T>(d1) - exp(-r * tau) * K * Phi<T>(d2);
+    case CP::put:
+        return exp(-r * tau) * K * Phi<T>(-d2) - S * Phi<T>(-d1);
+    default:
+        throw runtime_error("Invalid CP value.");
+    }
+}
+
+int main()
+{
+    double const    K         = 100.0;
+    double          S_val     = 105.0;
+    double          sigma_val = 5.0;
+    double          tau_val   = 30.0 / 365;
+    double          r_val     = 1.25 / 100;
+    rvar<double, 3> S         = make_rvar<double, 3>(S_val);
+    rvar<double, 3> sigma     = make_rvar<double, 3>(sigma_val);
+    rvar<double, 3> tau       = make_rvar<double, 3>(tau_val);
+    rvar<double, 3> r         = make_rvar<double, 3>(r_val);
+
+    rvar<double, 3> call_price
+        = black_scholes_option_price<rvar<double, 3>>(CP::call, K, S, sigma, tau, r);
+    rvar<double, 3> put_price
+        = black_scholes_option_price<rvar<double, 3>>(CP::put, K, S, sigma, tau, r);
+
+    double const d1 = ((log(S_val / K) + (r_val + sigma_val * sigma_val / 2) * tau_val)
+                      / (sigma_val * sqrt(tau_val)));
+    double const d2 = ((log(S_val / K) + (r_val - sigma_val * sigma_val / 2) * tau_val)
+                      / (sigma_val * sqrt(tau_val)));
+    double const formula_call_delta = +Phi(+d1);
+    double const formula_put_delta  = -Phi(-d1);
+    double const formula_vega       = (S_val * phi(d1) * sqrt(tau_val));
+    double const formula_call_theta = (-S_val * phi(d1) * sigma_val / (2 * sqrt(tau_val))
+                                      - r_val * K * exp(-r_val * tau_val) * Phi(+d2));
+
+    double const formula_put_theta = (-S_val * phi(d1) * sigma_val / (2 * sqrt(tau_val))
+                                      + r_val * K * exp(-r_val * tau_val) * Phi(-d2));
+    double const formula_call_rho  = (+K * tau_val * exp(-r_val * tau_val) * Phi(+d2));
+    double const formula_put_rho   = (-K * tau_val * exp(-r_val * tau_val) * Phi(-d2));
+    double const formula_gamma     = (phi(d1) / (S_val * sigma_val * sqrt(tau_val)));
+    double const formula_vanna     = (-phi(d1) * d2 / sigma_val);
+    double const formula_charm  = (phi(d1) * (d2 * sigma_val * sqrt(tau_val) - 2 * r_val * tau_val)
+                                  / (2 * tau_val * sigma_val * sqrt(tau_val)));
+    double const formula_vomma  = (S_val * phi(d1) * sqrt(tau_val) * d1 * d2 / sigma_val);
+    double const formula_veta   = (-S_val * phi(d1) * sqrt(tau_val)
+                                * (r_val * d1 / (sigma_val * sqrt(tau_val))
+                                    - (1 + d1 * d2) / (2 * tau_val)));
+    double const formula_speed  = (-phi(d1) * (d1 / (sigma_val * sqrt(tau_val)) + 1)
+                                  / (S_val * S_val * sigma_val * sqrt(tau_val)));
+    double const formula_zomma  = (phi(d1) * (d1 * d2 - 1)
+                                  / (S_val * sigma_val * sigma_val * sqrt(tau_val)));
+    double const formula_color  = (-phi(d1) / (2 * S_val * tau_val * sigma_val * sqrt(tau_val))
+                                  * (1
+                                    + (2 * r_val * tau_val - d2 * sigma_val * sqrt(tau_val)) * d1
+                                          / (sigma_val * sqrt(tau_val))));
+    double const formula_ultima = -formula_vega
+                                  * ((d1 * d2 * (1 - d1 * d2) + d1 * d1 + d2 * d2)
+                                    / (sigma_val * sigma_val));
+
+    auto call_greeks = grad(call_price, &S, &sigma, &tau, &r);
+    auto put_greeks  = grad(put_price, &S, &sigma, &tau, &r);
+
+

+ grad(f, &x, &y, ...) + returns a vector<rvar<double,N-1> + correspond to the gradient vector of f + w.r.t. x,y, + etc... +

+
auto call_greeks_2nd_order = hess(call_price, &S, &sigma, &tau, &r);
+auto put_greeks_2nd_order  = hess(put_price, &S, &sigma, &tau, &r);
+
+

+ hess(f, &x, &y, ...) + returns a vector<vector<rvar<double,N-1>> + correspond to the hessian of f + w.r.t. x,y, + etc... +

+
auto call_greeks_3rd_order = grad_nd<3>(call_price, &S, &sigma, &tau, &r);
+auto put_greeks_3rd_order  = grad_nd<3>(put_price, &S, &sigma, &tau, &r);
+
+

+ grad_nd<N>(f, &x, &y, ...) returns + a vector<vector<vector<rvar<double,N-1>>... + correspond to the gradient tensor of f + w.r.t. x,y, + etc... +

+
    std::cout << std::setprecision(std::numeric_limits<double>::digits10)
+              << "autodiff black-scholes call price = " << call_price.item() << "\n"
+              << "autodiff black-scholes put price = " << put_price.item() << "\n"
+              << "\n ## First-order Greeks \n"
+              << "autodiff call delta = " << call_greeks[0].item() << "\n"
+              << "formula call delta = " << formula_call_delta << "\n"
+              << "autodiff call vega  = " << call_greeks[1].item() << '\n'
+              << " formula call vega  = " << formula_vega << '\n'
+              << "autodiff call theta = " << -call_greeks[2].item() << '\n'
+              << " formula call theta = " << formula_call_theta << '\n'
+              << "autodiff call rho   = " << call_greeks[3].item() << 'n'
+              << " formula call rho   = " << formula_call_rho << '\n'
+              << '\n'
+              << "autodiff put delta = " << put_greeks[0].item() << 'n'
+              << " formula put delta = " << formula_put_delta << '\n'
+              << "autodiff put vega  = " << put_greeks[1].item() << '\n'
+              << " formula put vega  = " << formula_vega << '\n'
+              << "autodiff put theta = " << -put_greeks[2].item() << '\n'
+              << " formula put theta = " << formula_put_theta << '\n'
+              << "autodiff put rho   = " << put_greeks[3].item() << '\n'
+              << " formula put rho   = " << formula_put_rho << '\n'
+
+              << "\n## Second-order Greeks\n"
+              << "autodiff call gamma = " << call_greeks_2nd_order[0][0].item() << '\n'
+              << "autodiff put  gamma = " << put_greeks_2nd_order[0][0].item() << '\n'
+              << "      formula gamma = " << formula_gamma << '\n'
+              << "autodiff call vanna = " << call_greeks_2nd_order[0][1].item() << '\n'
+              << "autodiff put  vanna = " << put_greeks_2nd_order[0][1].item() << '\n'
+              << "      formula vanna = " << formula_vanna << '\n'
+              << "autodiff call charm = " << -call_greeks_2nd_order[0][2].item() << '\n'
+              << "autodiff put  charm = " << -put_greeks_2nd_order[0][2].item() << '\n'
+              << "      formula charm = " << formula_charm << '\n'
+              << "autodiff call vomma = " << call_greeks_2nd_order[1][1].item() << '\n'
+              << "autodiff put  vomma = " << put_greeks_2nd_order[1][1].item() << '\n'
+              << "      formula vomma = " << formula_vomma << '\n'
+              << "autodiff call veta = " << call_greeks_2nd_order[1][2].item() << '\n'
+              << "autodiff put  veta = " << put_greeks_2nd_order[1][2].item() << '\n'
+              << "      formula veta = " << formula_veta << '\n'
+
+              << "\n## Third-order Greeks\n"
+              << "autodiff call speed = " << call_greeks_3rd_order[0][0][0] << '\n'
+              << "autodiff put  speed = " << put_greeks_3rd_order[0][0][0] << '\n'
+              << "      formula speed = " << formula_speed << '\n'
+              << "autodiff call zomma = " << call_greeks_3rd_order[0][0][1] << '\n'
+              << "autodiff put  zomma = " << put_greeks_3rd_order[0][0][1] << '\n'
+              << "      formula zomma = " << formula_zomma << '\n'
+              << "autodiff call color = " << call_greeks_3rd_order[0][0][2] << '\n'
+              << "autodiff put  color = " << put_greeks_3rd_order[0][0][2] << '\n'
+              << "      formula color = " << formula_color << '\n'
+              << "autodiff call ultima = " << call_greeks_3rd_order[1][1][1] << '\n'
+              << "autodiff put  ultima = " << put_greeks_3rd_order[1][1][1] << '\n'
+              << "      formula ultima = " << formula_ultima << '\n';
+    return 0;
+}
+
+

+ Some notes on the implementations of grad, + hess, and grad_nd. + Internally these functions correctly clear the tape and zero out the gradients, + so manual tape.zero_grad() + isn't needed. They however return copies of the adjoint values in a vector, + so there can be some performance overhead over using f.backward() directly. +

+

+ grad, hess + and grad_nd are each overloaded + twice. You can call +

+
grad(rvar<RealType, DerivativeOrder_1> &f, std::vector<rvar<RealType, DerivativeOrder_2> *> &x)
+
+

+ if you want to take a gradient with respect to many variables, or conveniently +

+
grad(f, &x, &y)
+
+

+ if you have only a few variables you need to take the gradient with respect + to. The order of operations for grad + matters. Although something like below is generally safe: +

+
auto gv = grad(f,&x,&y,&z);
+auto hv = grad(gv[0], &x, &y &z);
+
+

+ The code below isn't, and will produce incorrect results: +

+
auto hv = hess(f,&x,&y,&z)
+auto g3v = grad(hv[0][0], &x,&y,&z)
+
+

+ or: +

+
auto hv = hess(f,&x,&y,&z)
+auto g4v = hess(hv[0][0], &x,&y,&z)
+
+

+ When in doubt, its always preferrable to compute higher order derivatives with: +

+
auto g4 = grad_nd<4>(f, &x,&y,&z)
+
+

+ + Expression + Templates and auto +

+

+ Reverse mode autodiff is expression template (BOOST_MATH_REVERSE_MODE_ET_ON) + based by default. If you'd like to disable expression templates (for debugging, + benchmarking, or simplify integration with other systems), you must define + the following macro at compile time: +

+
#define BOOST_MATH_REVERSE_MODE_ET_OFF
+#include <boost/math/differentiation/autodiff_reverse.hpp>
+
+

+ or pass it to the compiler via flag +

+
g++ -DBOOST_MATH_REVERSE_MODE_ET_OFF
+
+

+ The expression templated version of this code doesn't currently interact nicely + with the Boost.Math special function implementations, and will throw compile + time errors. Disabling expression templates will often fix this, however various + special functions are implemented in a way that breaks the automatic differentiation + chain for certain values. Complete special function support may be added in + the future. Below is the list of the current state of special function support. +

+

+ Furthermore, some care also has to be taken when writing code with expression + templated types. For example consider the code below: +

+
rvar<double, 1> x = 1.0;
+rvar<double, 1> y = 2.0;
+rvar<double, 1> z = 3.0;
+auto w = x+y*z;
+
+

+ The type of w is not rvar<double,1> but add_expr<rvar<double,1>,mult_expr<rvar<double,1>,rvar<double,1>>> + This means that the code below will not compile: +

+
template<typename T>
+T f(T x)
+{
+    return x*x;
+}
+int main()
+{
+    rvar<double, 1> x = 1.0;
+    auto v = f(2*x);
+}
+
+

+ due to a type mismatch. It is also preferred to use auto for type deduction + as often as possible. Consider the following 2 functions: +

+
#include <benchmark/benchmark.h>
+#include <boost/math/differentiation/autodiff_reverse.hpp>
+#include <cmath>
+
+using namespace boost::math::differentiation::reverse_mode;
+template<typename T>
+T testfunc_noauto(T& x, T& y, T& z)
+{
+    T w1 = log(1 + abs(x)) * exp(y) + z;
+    T w2 = pow(x + y, 2.5) / z;
+    T w3 = sqrt(1 + x * y) * z * z;
+    T w4 = w1 + w2 + w3;
+    T w5 = w4 * w2;
+    return w5;
+}
+
+template<typename T>
+T testfunc_auto(T& x, T& y, T& z)
+{
+    auto w1 = log(1 + abs(x)) * exp(y) + z;
+    auto w2 = pow(x + y, 2.5) / z;
+    auto w3 = sqrt(1 + x * y) * z * z;
+    auto w4 = w1 + w2 + w3;
+    auto w5 = w4 * w2;
+    return w5;
+}
+
+

+ and the corresponding benchmark: +

+
template<class Func>
+void BM_RVar(benchmark::State& state, Func f)
+{
+    using T    = rvar<double, 1>;
+    auto& tape = get_active_tape<T, 1>();
+    for (auto _ : state) {
+        tape.clear();
+        T    x(1.0), y(2.0), z(3.0);
+        auto result = f(x, y, z);
+        benchmark::DoNotOptimize(result);
+        result.backward();
+        benchmark::DoNotOptimize(x.adjoint());
+        benchmark::DoNotOptimize(y.adjoint());
+        benchmark::DoNotOptimize(z.adjoint());
+    }
+}
+BENCHMARK([](benchmark::State& st) { BM_RVar(st, testfunc_auto<rvar<double, 1>>); });
+BENCHMARK([](benchmark::State& st) { BM_RVar(st, testfunc_noauto<rvar<double, 1>>); });
+BENCHMARK_MAIN();
+
+

+ Running this benchmark on a 13th Gen Intel(R) Core(TM) i7-13650HX, compiled + with -O3: +

+
./benchmark --benchmark_filter=testfunc_auto
+
+--------------------------------------------------------------------------------------------------------------------
+Benchmark                                                                          Time             CPU   Iterations
+--------------------------------------------------------------------------------------------------------------------
+[](benchmark::State& st) { BM_RVar(st, testfunc_auto<rvar<double, 1>>); }     199546 ns       199503 ns        10000
+
+

+ and +

+
./benchmark --benchmark_filter=testfunc_noauto
+
+----------------------------------------------------------------------------------------------------------------------
+Benchmark                                                                            Time             CPU   Iterations
+----------------------------------------------------------------------------------------------------------------------
+[](benchmark::State& st) { BM_RVar(st, testfunc_noauto<rvar<double, 1>>); }     375731 ns       375669 ns        10000
+
+

+ You get nearly 2x speedup on the code that uses auto. +

+
+ +
+
+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 new file mode 100644 index 0000000000..854d8cfe56 --- /dev/null +++ b/doc/html/math_toolkit/dist_ref/dists/holtsmark_dist.html @@ -0,0 +1,207 @@ + + + +Holtsmark Distribution + + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
#include <boost/math/distributions/holtsmark.hpp>
+
template <class RealType = double,
+          class Policy   = policies::policy<> >
+class holtsmark_distribution;
+
+typedef holtsmark_distribution<> holtsmark;
+
+template <class RealType, class Policy>
+class holtsmark_distribution
+{
+public:
+   typedef RealType  value_type;
+   typedef Policy    policy_type;
+
+   BOOST_MATH_GPU_ENABLED holtsmark_distribution(RealType location = 0, RealType scale = 1);
+
+   BOOST_MATH_GPU_ENABLED RealType location()const;
+   BOOST_MATH_GPU_ENABLED RealType scale()const;
+};
+
+

+ The Holtsmark + distribution is named after Johan Peter Holtsmark. It is special + case of a stable + distribution with shape parameter α=3/2, β=0. +

+

+ probability + distribution function PDF given by: +

+

+ + +

+

+ The location parameter μ is the location of the distribution, while the scale + parameter [c] determines the width of the distribution. If the location + is zero, and the scale 1, then the result is a standard holtsmark distribution. +

+

+ The distribution especially used in astrophysics for modeling gravitational + bodies. +

+

+ The following graph shows how the distributions moves as the location parameter + changes: +

+

+ + +

+

+ While the following graph shows how the shape (scale) parameter alters + the distribution: +

+

+ + +

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

+ Constructs a holtsmark distribution, with location parameter location + and scale parameter scale. When these parameters take + their default values (location = 0, scale = 1) then the result is a Standard + holtsmark Distribution. +

+

+ Requires scale > 0, otherwise calls domain_error. +

+
BOOST_MATH_GPU_ENABLED RealType location()const;
+
+

+ Returns the location parameter of the distribution. +

+
BOOST_MATH_GPU_ENABLED RealType scale()const;
+
+

+ Returns the scale parameter of the distribution. +

+
+ + Non-member + Accessors +
+

+ All the usual non-member accessor + functions that are generic to all distributions are supported: + Cumulative Distribution Function, + Probability Density Function, + Quantile, Hazard Function, Cumulative Hazard Function, + __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 holtsmark distribution does not have a skewness, + kurtosis, etc. See mathematically + undefined function to control whether these should fail to compile + with a BOOST_STATIC_ASSERTION_FAILURE, which is the default. +

+

+ Alternately, the functions skewness, + kurtosis and + kurtosis_excess + will all return a domain_error + if called. +

+

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

+
+ + Accuracy +
+

+ The error is within 4 epsilon. +

+

+ Errors in the PDF at 64-bit double precision: +

+

+ +

+

+ Errors in the CDF-complement at 64-bit double precision: +

+

+ +

+
+ + Implementation +
+

+ See references. +

+
+ + References +
+
    +
  • + Holtsmark + Distribution +
  • +
  • + T. Yoshimura, Numerical Evaluation and High Precision Approximation + Formula for Holtsmark Distribution, DOI: 10.36227/techrxiv.172054657.73020014/v1, + 2024. +
  • +
+
+ +
+
+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 new file mode 100644 index 0000000000..5150c3544f --- /dev/null +++ b/doc/html/math_toolkit/dist_ref/dists/landau_dist.html @@ -0,0 +1,224 @@ + + + +Landau Distribution + + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
#include <boost/math/distributions/landau.hpp>
+
template <class RealType = double,
+          class Policy   = policies::policy<> >
+class landau_distribution;
+
+typedef landau_distribution<> landau;
+
+template <class RealType, class Policy>
+class landau_distribution
+{
+public:
+   typedef RealType  value_type;
+   typedef Policy    policy_type;
+
+   BOOST_MATH_GPU_ENABLED landau_distribution(RealType location = 0, RealType scale = 1);
+
+   BOOST_MATH_GPU_ENABLED RealType location()const;
+   BOOST_MATH_GPU_ENABLED RealType scale()const;
+   BOOST_MATH_GPU_ENABLED RealType bias()const;
+};
+
+

+ The Landau + distribution is named after Lev Landau. It is special case of a + stable distribution + with shape parameter α=1, β=1. +

+

+ probability + distribution function PDF given by: +

+

+ + +

+

+ The location parameter μ is the location of the distribution, while the scale + parameter [c] determines the width of the distribution, but unlike other + scalable distributions, it has a peculiarity that changes the location + of the distribution. If the location is zero, and the scale 1, then the + result is a standard landau distribution. +

+

+ The distribution describe the statistical property of the energy loss by + charged particles as they traversing a thin layer of matter. +

+

+ The following graph shows how the distributions moves as the location parameter + changes: +

+

+ + +

+

+ While the following graph shows how the shape (scale) parameter alters + the distribution: +

+

+ + +

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

+ Constructs a landau distribution, with location parameter location + and scale parameter scale. When these parameters take + their default values (location = 0, scale = 1) then the result is a Standard + landau Distribution. +

+

+ Requires scale > 0, otherwise calls domain_error. +

+
BOOST_MATH_GPU_ENABLED RealType location()const;
+
+

+ Returns the location parameter of the distribution. +

+
BOOST_MATH_GPU_ENABLED RealType scale()const;
+
+

+ Returns the scale parameter of the distribution. +

+
BOOST_MATH_GPU_ENABLED RealType bias()const;
+
+

+ Returns the amount of translation by the scale parameter. +

+

+ bias = - 2 / π log(c) +

+
+ + Non-member + Accessors +
+

+ All the usual non-member accessor + functions that are generic to all distributions are supported: + Cumulative Distribution Function, + Probability Density Function, + Quantile, Hazard Function, Cumulative Hazard Function, + __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 landau distribution does not have a mean, standard + deviation, etc. See mathematically + undefined function to control whether these should fail to compile + with a BOOST_STATIC_ASSERTION_FAILURE, which is the default. +

+

+ Alternately, the functions mean, + standard deviation, + variance, skewness, kurtosis + and kurtosis_excess + will all return a domain_error + if called. +

+

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

+
+ + Accuracy +
+

+ The error is within 4 epsilon except for the rapidly decaying left tail. +

+

+ Errors in the PDF at 64-bit double precision: +

+

+ +

+

+ Errors in the CDF at 64-bit double precision: +

+

+ +

+

+ Errors in the CDF-complement at 64-bit double precision: +

+

+ +

+
+ + Implementation +
+

+ See references. +

+
+ + References +
+
    +
  • + landau + distribution +
  • +
  • + T. Yoshimura, Numerical Evaluation and High Precision Approximation + Formula for Landau Distribution, DOI: 10.36227/techrxiv.171822215.53612870/v2, + 2024. +
  • +
+
+ +
+
+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 new file mode 100644 index 0000000000..d76e354c02 --- /dev/null +++ b/doc/html/math_toolkit/dist_ref/dists/mapairy_dist.html @@ -0,0 +1,215 @@ + + + +Map-Airy Distribution + + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
#include <boost/math/distributions/mapairy.hpp>
+
template <class RealType = double,
+          class Policy   = policies::policy<> >
+class mapairy_distribution;
+
+typedef mapairy_distribution<> mapairy;
+
+template <class RealType, class Policy>
+class mapairy_distribution
+{
+public:
+   typedef RealType  value_type;
+   typedef Policy    policy_type;
+
+   BOOST_MATH_GPU_ENABLED mapairy_distribution(RealType location = 0, RealType scale = 1);
+
+   BOOST_MATH_GPU_ENABLED RealType location()const;
+   BOOST_MATH_GPU_ENABLED RealType scale()const;
+};
+
+

+ It is special case of a stable + distribution with shape parameter α=3/2, β=1. +

+

+ This distribution is also defined as β = −1, which is inverted about the + x-axis. +

+

+ probability + distribution function PDF given by: +

+

+ + +

+

+ The location parameter μ is the location of the distribution, while the scale + parameter [c] determines the width of the distribution. If the location + is zero, and the scale 1, then the result is a standard map-airy distribution. +

+

+ The distribution describes the probability distribution of the area under + a Brownian excursion over a unit interval. +

+

+ The following graph shows how the distributions moves as the location parameter + changes: +

+

+ + +

+

+ While the following graph shows how the shape (scale) parameter alters + the distribution: +

+

+ + +

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

+ Constructs a mapairy distribution, with location parameter location + and scale parameter scale. When these parameters take + their default values (location = 0, scale = 1) then the result is a Standard + map-airy Distribution. +

+

+ Requires scale > 0, otherwise calls domain_error. +

+
BOOST_MATH_GPU_ENABLED RealType location()const;
+
+

+ Returns the location parameter of the distribution. +

+
BOOST_MATH_GPU_ENABLED RealType scale()const;
+
+

+ Returns the scale parameter of the distribution. +

+
+ + Non-member + Accessors +
+

+ All the usual non-member accessor + functions that are generic to all distributions are supported: + Cumulative Distribution Function, + Probability Density Function, + Quantile, Hazard Function, Cumulative Hazard Function, + __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 map-airy distribution does not have a skewness, kurtosis, + etc. See mathematically + undefined function to control whether these should fail to compile + with a BOOST_STATIC_ASSERTION_FAILURE, which is the default. +

+

+ Alternately, the functions skewness, + kurtosis and + kurtosis_excess + will all return a domain_error + if called. +

+

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

+
+ + Accuracy +
+

+ The error is within 4 epsilon except for the rapidly decaying left tail. +

+

+ Errors in the PDF at 64-bit double precision: +

+

+ +

+

+ Errors in the CDF at 64-bit double precision: +

+

+ +

+

+ Errors in the CDF-complement at 64-bit double precision: +

+

+ +

+
+ + Implementation +
+

+ See references. +

+
+ + References +
+
    +
  • + Wolfram + MathWorld: Map-Airy Distribution +
  • +
  • + T. Yoshimura, Numerical Evaluation and High Precision Approximation + Formula for Map-Airy Distribution, DOI: 10.36227/techrxiv.172053942.27675733/v1, + 2024. +
  • +
+
+ +
+
+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 new file mode 100644 index 0000000000..69c25d20fd --- /dev/null +++ b/doc/html/math_toolkit/dist_ref/dists/saspoint5_dist.html @@ -0,0 +1,199 @@ + + + +SαS Point5 Distribution + + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
#include <boost/math/distributions/saspoint5.hpp>
+
template <class RealType = double,
+          class Policy   = policies::policy<> >
+class saspoint5_distribution;
+
+typedef saspoint5_distribution<> saspoint5;
+
+template <class RealType, class Policy>
+class saspoint5_distribution
+{
+public:
+   typedef RealType  value_type;
+   typedef Policy    policy_type;
+
+   BOOST_MATH_GPU_ENABLED saspoint5_distribution(RealType location = 0, RealType scale = 1);
+
+   BOOST_MATH_GPU_ENABLED RealType location()const;
+   BOOST_MATH_GPU_ENABLED RealType scale()const;
+};
+
+

+ It is special case of a stable + distribution with shape parameter α=1/2, β=0. +

+

+ probability + distribution function PDF given by: +

+

+ + +

+

+ The location parameter μ is the location of the distribution, while the scale + parameter [c] determines the width of the distribution. If the location + is zero, and the scale 1, then the result is a standard SαS Point5 distribution. +

+

+ This distribution has heavier tails than the Cauchy distribution. +

+

+ The following graph shows how the distributions moves as the location parameter + changes: +

+

+ + +

+

+ While the following graph shows how the shape (scale) parameter alters + the distribution: +

+

+ + +

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

+ Constructs a SαS Point5 distribution, with location parameter location + and scale parameter scale. When these parameters take + their default values (location = 0, scale = 1) then the result is a Standard + SαS Point5 Distribution. +

+

+ Requires scale > 0, otherwise calls domain_error. +

+
BOOST_MATH_GPU_ENABLED RealType location()const;
+
+

+ Returns the location parameter of the distribution. +

+
BOOST_MATH_GPU_ENABLED RealType scale()const;
+
+

+ Returns the scale parameter of the distribution. +

+
+ + Non-member + Accessors +
+

+ All the usual non-member accessor + functions that are generic to all distributions are supported: + Cumulative Distribution Function, + Probability Density Function, + Quantile, Hazard Function, Cumulative Hazard Function, + __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 SαS Point5 distribution does not have a mean, standard + deviation, etc. See mathematically + undefined function to control whether these should fail to compile + with a BOOST_STATIC_ASSERTION_FAILURE, which is the default. +

+

+ Alternately, the functions mean, + standard deviation, + variance, skewness, kurtosis + and kurtosis_excess + will all return a domain_error + if called. +

+

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

+
+ + Accuracy +
+

+ The error is within 4 epsilon. +

+

+ Errors in the PDF at 64-bit double precision: +

+

+ +

+

+ Errors in the CDF-complement at 64-bit double precision: +

+

+ +

+
+ + Implementation +
+

+ See references. +

+
+ + References +
+
  • + T. Yoshimura, Numerical Evaluation and High Precision Approximation + Formula for SαS Point5 Distribution, DOI: 10.36227/techrxiv.172055253.37208198/v1, + 2024. +
+
+ +
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/math_toolkit/double_exponential/gpu_usage.html b/doc/html/math_toolkit/double_exponential/gpu_usage.html new file mode 100644 index 0000000000..4ddae60909 --- /dev/null +++ b/doc/html/math_toolkit/double_exponential/gpu_usage.html @@ -0,0 +1,66 @@ + + + +GPU Usage + + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
    #include <boost/math/quadrature/exp_sinh.hpp>
+
+    namespace boost{ namespace math{ namespace quadrature {
+
+    template <class F, class Real, class Policy = policies::policy<> >
+    __device__ auto exp_sinh_integrate(const F& f, Real a, Real b, Real tolerance, Real* error, Real* L1, boost::math::size_t* levels)
+
+    template <class F, class Real, class Policy = policies::policy<> >
+    __device__ auto exp_sinh_integrate(const F& f, Real tolerance, Real* error, Real* L1, boost::math::size_t* levels)
+
+}}}
+
+

+ Quadrature is additionally able to run on CUDA (NVCC and NVRTC) platforms. + The major difference is outlined in the above function signatures. When used + on device these are free standing functions instead of using OOP like on + the host. The tables of abscissas and weights are stored in shared read only + memory on the device instead of being initialized when the class is constructed. + An example use case would be in the finite elements method computing a stiffness + matrix since it would consist of many different functions. +

+
+ +
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/math_toolkit/gpu.html b/doc/html/math_toolkit/gpu.html new file mode 100644 index 0000000000..78fdfc9a5e --- /dev/null +++ b/doc/html/math_toolkit/gpu.html @@ -0,0 +1,121 @@ + + + +Support for GPU programming in Boost.Math + + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + GPU + Support +
+

+ Selected functions, distributions, tools, etc. support running on both host + and devices. These functions will have the annotation BOOST_MATH_GPU_ENABLED + or BOOST_MATH_CUDA_ENABLED + next to their individual documentation. Functions marked with BOOST_MATH_GPU_ENABLED are tested using CUDA + (both NVCC and NVRTC) as well as SYCL to provide a wide range of support. Functions + marked with BOOST_MATH_CUDA_ENABLED + are few, but due to its restrictions SYCL is unsupported. +

+
+ + Policies +
+

+ The default policy on all devices is ignore error due to the lack of throwing + ability. A user can specify their own policy like usual, but when the code + is run on device it will be ignored. +

+
+ + How + to build with device support +
+

+ When compiling with CUDA or SYCL you will have to ensure that your code is + being run inside of a kernel function. It is not enough to simply compile existing + code with the NVCC compiler to run the code on the device. A simple CUDA kernel + to run the Beta Distribution CDF on NVCC would be: +

+
__global__ void cuda_beta_dist(const double* in, double* out, int num_elements)
+{
+    const int i = blockDim.x * blockIdx.x + threadIdx.x;
+
+    if (i < num_elements)
+    {
+        out[i] = cdf(boost::math::beta_distribution<double>(), in[i]);
+    }
+}
+
+

+ And on CUDA on NVRTC: +

+
const char* cuda_kernel = R"(
+#include <boost/math/distributions/beta.hpp>
+extern "C" __global__
+void test_beta_dist_kernel(const double* in, double* out, int num_elements)
+{
+    const int i = blockDim.x * blockIdx.x + threadIdx.x;
+    if (i < num_elements)
+    {
+        out[i] = boost::math::cdf(boost::math::beta_distribution<double>(), in[i]);
+    }
+}
+)";
+
+

+ And lastly on SYCL: +

+
void sycl_beta_dist(const double* in, double* out, int num_elements, sycl::queue& q)
+{
+    q.submit([&](sycl::handler& h) {
+        h.parallel_for(sycl::range<1>(num_elements), [=](sycl::id<1> i) {
+            out[i] = boost::math::cdf(boost::math::beta_distribution<double>(), in[i]);
+        });
+    });
+}
+
+

+ Once your kernel function has been written then use the framework mechanism + for launching the kernel. +

+
+ +
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/math_toolkit/logistic.html b/doc/html/math_toolkit/logistic.html new file mode 100644 index 0000000000..63c960f2e8 --- /dev/null +++ b/doc/html/math_toolkit/logistic.html @@ -0,0 +1,49 @@ + + + +Logistic Functions + + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + +
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/math_toolkit/logistic/logistic_sigmoid.html b/doc/html/math_toolkit/logistic/logistic_sigmoid.html new file mode 100644 index 0000000000..4aaa918404 --- /dev/null +++ b/doc/html/math_toolkit/logistic/logistic_sigmoid.html @@ -0,0 +1,71 @@ + + + +logistic_sigmoid + + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Synopsis +
+
#include <boost/math/special_functions/logistic_sigmoid.hpp>
+
+namespace boost { namespace math {
+
+template <typename RealType, typename Policy>
+RealType logistic_sigmoid(RealType x, const Policy&);
+
+template <typename RealType>
+RealType logistic_sigmoid(RealType x)
+
+}} // namespaces
+
+
+ + Description +
+

+ Returns the logistic + sigmoid function This function is broadly useful, and is used to + compute the CDF of the logistic distribution. It is also sometimes referred + to as expit as it is the inverse of the logit function. +

+
+ +
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/math_toolkit/logistic/logit.html b/doc/html/math_toolkit/logistic/logit.html new file mode 100644 index 0000000000..3a4551177d --- /dev/null +++ b/doc/html/math_toolkit/logistic/logit.html @@ -0,0 +1,70 @@ + + + +logit + + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+

+logit +

+
+ + Synopsis +
+
#include <boost/math/special_functions/logit.hpp>
+
+namespace boost { namespace math {
+
+template <typename RealType, typename Policy>
+RealType logit(RealType x, const Policy&);
+
+template <typename RealType>
+RealType logit(RealType x)
+
+}} // namespaces
+
+
+ + Description +
+

+ Returns the logit function + This function is broadly useful, and is used to compute the Quantile of the + logistic distribution. The inverse of this function is the logistic_sigmoid. +

+
+ +
+
+PrevUpHomeNext +
+ + diff --git a/doc/interpolators/catmull_rom.qbk b/doc/interpolators/catmull_rom.qbk index 2f4663f796..de0a28f0dc 100644 --- a/doc/interpolators/catmull_rom.qbk +++ b/doc/interpolators/catmull_rom.qbk @@ -24,7 +24,7 @@ namespace boost{ namespace math{ catmull_rom(std::initializer_list l, bool closed = false, typename Point::value_type alpha = (typename Point::value_type) 1/ (typename Point::value_type) 2); - Real operator()(Real s) const; + Point operator()(Real s) const; Real max_parameter() const; diff --git a/doc/math.qbk b/doc/math.qbk index 385c93a5e8..1f479b2d48 100644 --- a/doc/math.qbk +++ b/doc/math.qbk @@ -339,6 +339,10 @@ and use the function's name as the link text.] [def __hermite [link math_toolkit.sf_poly.hermite hermite]] [def __cardinal_b_splines [link math_toolkit.sf_poly.cardinal_b_splines cardinal_b_splines]] +[/logistic functions] +[def __logit [link math_toolkit.logistic.logit logit]] +[def __logistic_sigmoid [link math_toolkit.logistic.logistic_sigmoid logistic_sigmoid]] + [/Misc] [def __expint [link math_toolkit.expint.expint_i expint]] [def __spherical_harmonic [link math_toolkit.sf_poly.sph_harm spherical_harmonic]] @@ -666,6 +670,11 @@ and as a CD ISBN 0-9504833-2-X 978-0-9504833-2-0, Classification 519.2-dc22. [include sf/jacobi.qbk] [endsect] [/section:sf_poly Polynomials] +[section:logistic Logistic Functions] +[include sf/logit.qbk] +[include sf/logistic_sigmoid.qbk] +[endsect] [/section:logistic Logistic Functions] + [section:bessel Bessel Functions] [include sf/bessel_introduction.qbk] [include sf/bessel_jy.qbk] @@ -765,6 +774,7 @@ and as a CD ISBN 0-9504833-2-X 978-0-9504833-2-0, Classification 519.2-dc22. [include quadrature/wavelet_transforms.qbk] [include differentiation/numerical_differentiation.qbk] [include differentiation/autodiff.qbk] +[include differentiation/autodiff_reverse.qbk] [include differentiation/lanczos_smoothing.qbk] [endmathpart] diff --git a/doc/overview/gpu.qbk b/doc/overview/gpu.qbk index 7fb27e645e..58df868a63 100644 --- a/doc/overview/gpu.qbk +++ b/doc/overview/gpu.qbk @@ -54,6 +54,9 @@ And lastly on SYCL: }); } +When using SYCL you must define BOOST_MATH_ENABLE_SYCL, since device support is opt-in on that platform. +For NVCC and NVRTC device support is enabled automatically. + Once your kernel function has been written then use the framework mechanism for launching the kernel. [endsect] [/section:gpu Support for GPU programming in Boost.Math] diff --git a/doc/sf/logistic_sigmoid.qbk b/doc/sf/logistic_sigmoid.qbk new file mode 100644 index 0000000000..bf1c6c37fd --- /dev/null +++ b/doc/sf/logistic_sigmoid.qbk @@ -0,0 +1,30 @@ +[/ + Copyright Matt Borland 2025 + Distributed under the 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:logistic_sigmoid logistic_sigmoid] + +[h4 Synopsis] + + #include + + namespace boost { namespace math { + + template + RealType logistic_sigmoid(RealType x, const Policy&); + + template + RealType logistic_sigmoid(RealType x) + + }} // namespaces + +[h4 Description] + +Returns the [@https://en.wikipedia.org/wiki/Logistic_function logistic sigmoid function] +This function is broadly useful, and is used to compute the CDF of the logistic distribution. +It is also sometimes referred to as expit as it is the inverse of the logit function. + +[endsect] diff --git a/doc/sf/logit.qbk b/doc/sf/logit.qbk new file mode 100644 index 0000000000..7daebe667f --- /dev/null +++ b/doc/sf/logit.qbk @@ -0,0 +1,30 @@ +[/ + Copyright Matt Borland 2025 + Distributed under the 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:logit logit] + +[h4 Synopsis] + + #include + + namespace boost { namespace math { + + template + RealType logit(RealType x, const Policy&); + + template + RealType logit(RealType x) + + }} // namespaces + +[h4 Description] + +Returns the [@https://en.wikipedia.org/wiki/Logit logit function] +This function is broadly useful, and is used to compute the Quantile of the logistic distribution. +The inverse of this function is the logistic_sigmoid. + +[endsect] diff --git a/doc/sf/powers.qbk b/doc/sf/powers.qbk index 363c9d90ee..0f2055039d 100644 --- a/doc/sf/powers.qbk +++ b/doc/sf/powers.qbk @@ -310,11 +310,17 @@ calculated using NTL::RR at 1000-bit precision. template ``__sf_result`` hypot(T1 x, T2 y, const ``__Policy``&); + template + ``__sf_result`` hypot(T1 x, T2 y, T3 z); + + template + ``__sf_result`` hypot(T1 x, T2 y, T3 z, const ``__Policy``&); + __effects computes [equation hypot] in such a way as to avoid undue underflow and overflow. The return type of this function is computed using the __arg_promotion_rules -when T1 and T2 are of different types. +when T1 and T2 (and or T3) are of different types. [optional_policy] @@ -328,6 +334,11 @@ The function is even and symmetric in /x/ and /y/, so first take assume Then if ['x * [epsilon] >= 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: [equation hypot2] diff --git a/doc/statistics/z_test.qbk b/doc/statistics/z_test.qbk index 8d2499532b..fba8866265 100644 --- a/doc/statistics/z_test.qbk +++ b/doc/statistics/z_test.qbk @@ -29,12 +29,6 @@ std::pair two_sample_z_test(ForwardIterator begin_1, ForwardIterator template std::pair two_sample_z_test(Container const & u, Container const & v); -template::value_type> -std::pair paired_samples_z_test(ForwardIterator begin_1, ForwardIterator end_1, ForwardIterator begin_2, ForwardIterator begin_2); - -template -std::pair paired_samples_z_test(Container const & u, Container const & v); - }}} ``` diff --git a/example/Jamfile.v2 b/example/Jamfile.v2 index 2a6ad6947d..01e97c2f9c 100644 --- a/example/Jamfile.v2 +++ b/example/Jamfile.v2 @@ -153,6 +153,8 @@ test-suite examples : [ run ooura_fourier_integrals_cosine_example.cpp : : : [ requires cxx11_hdr_mutex cxx11_inline_namespaces cxx11_auto_declarations cxx17_std_apply ] ] [ run ooura_fourier_integrals_multiprecision_example.cpp : : : [ check-target-builds ../config//has_float128 "GCC libquadmath and __float128 support" : -lquadmath ] [ requires cxx11_hdr_mutex cxx11_inline_namespaces cxx11_auto_declarations cxx17_std_apply ] ] [ run reciprocal_fibonacci_constant.cpp : : : [ check-target-builds ../config//has_mpfr "MPFR Support" : "-lmpfr -lgmp" : no ] ] + [ run reverse_mode_linear_regression_example.cpp ] + [ run autodiff_reverse_black_scholes.cpp ] ; run root_elliptic_finding.cpp /boost/timer : : : release static [ requires cxx11_unified_initialization_syntax cxx11_defaulted_functions ] freebsd:"-lrt" linux:"-lrt -lpthread" ; diff --git a/example/airy_ai_float.svg b/example/airy_ai_float.svg new file mode 100644 index 0000000000..bf0776d860 --- /dev/null +++ b/example/airy_ai_float.svg @@ -0,0 +1,10044 @@ + + + + + + + +-1.875 + +-1.25 + +-0.625 + +0 + +0.625 + +1.25 + +1.875 + +2.5 + +-2 + +-1 + +0 + +1 + +2 + +3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/example/airy_ai_float_white.svg b/example/airy_ai_float_white.svg new file mode 100644 index 0000000000..669e3c311f --- /dev/null +++ b/example/airy_ai_float_white.svg @@ -0,0 +1,10044 @@ + + + + + + + +-1.875 + +-1.25 + +-0.625 + +0 + +0.625 + +1.25 + +1.875 + +2.5 + +-2 + +-1 + +0 + +1 + +2 + +3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/example/airy_ai_float_white_no_envelope.svg b/example/airy_ai_float_white_no_envelope.svg new file mode 100644 index 0000000000..f1f994f14a --- /dev/null +++ b/example/airy_ai_float_white_no_envelope.svg @@ -0,0 +1,10038 @@ + + + + + + + +-1.875 + +-1.25 + +-0.625 + +0 + +0.625 + +1.25 + +1.875 + +2.5 + +-2 + +-1 + +0 + +1 + +2 + +3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/example/autodiff_reverse_black_scholes.cpp b/example/autodiff_reverse_black_scholes.cpp new file mode 100644 index 0000000000..c808bc54dd --- /dev/null +++ b/example/autodiff_reverse_black_scholes.cpp @@ -0,0 +1,153 @@ +// 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 + +using namespace boost::math::differentiation::reverse_mode; +using namespace boost::math::constants; + +template +Real phi(Real const& x) +{ + return one_div_root_two_pi() * exp(-0.5 * x * x); +} + +template +Real Phi(Real const& x) +{ + return 0.5 * erfc(-one_div_root_two() * x); +} + +enum class CP { call, put }; + +template +T black_scholes_option_price(CP cp, double K, T const& S, T const& sigma, T const& tau, T const& r) +{ + using namespace std; + auto const d1 = (log(S / K) + (r + sigma * sigma / 2) * tau) / (sigma * sqrt(tau)); + auto const d2 = (log(S / K) + (r - sigma * sigma / 2) * tau) / (sigma * sqrt(tau)); + switch (cp) { + case CP::call: + return S * Phi(d1) - exp(-r * tau) * K * Phi(d2); + case CP::put: + return exp(-r * tau) * K * Phi(-d2) - S * Phi(-d1); + default: + throw runtime_error("Invalid CP value."); + } +} + +int main() +{ + double const K = 100.0; + double S_val = 105.0; + double sigma_val = 5.0; + double tau_val = 30.0 / 365; + double r_val = 1.25 / 100; + rvar S = make_rvar(S_val); + rvar sigma = make_rvar(sigma_val); + rvar tau = make_rvar(tau_val); + rvar r = make_rvar(r_val); + + rvar call_price + = black_scholes_option_price>(CP::call, K, S, sigma, tau, r); + rvar put_price + = black_scholes_option_price>(CP::put, K, S, sigma, tau, r); + + double const d1 = ((log(S_val / K) + (r_val + sigma_val * sigma_val / 2) * tau_val) + / (sigma_val * sqrt(tau_val))); + double const d2 = ((log(S_val / K) + (r_val - sigma_val * sigma_val / 2) * tau_val) + / (sigma_val * sqrt(tau_val))); + double const formula_call_delta = +Phi(+d1); + double const formula_put_delta = -Phi(-d1); + double const formula_vega = (S_val * phi(d1) * sqrt(tau_val)); + double const formula_call_theta = (-S_val * phi(d1) * sigma_val / (2 * sqrt(tau_val)) + - r_val * K * exp(-r_val * tau_val) * Phi(+d2)); + + double const formula_put_theta = (-S_val * phi(d1) * sigma_val / (2 * sqrt(tau_val)) + + r_val * K * exp(-r_val * tau_val) * Phi(-d2)); + double const formula_call_rho = (+K * tau_val * exp(-r_val * tau_val) * Phi(+d2)); + double const formula_put_rho = (-K * tau_val * exp(-r_val * tau_val) * Phi(-d2)); + double const formula_gamma = (phi(d1) / (S_val * sigma_val * sqrt(tau_val))); + double const formula_vanna = (-phi(d1) * d2 / sigma_val); + double const formula_charm = (phi(d1) * (d2 * sigma_val * sqrt(tau_val) - 2 * r_val * tau_val) + / (2 * tau_val * sigma_val * sqrt(tau_val))); + double const formula_vomma = (S_val * phi(d1) * sqrt(tau_val) * d1 * d2 / sigma_val); + double const formula_veta = (-S_val * phi(d1) * sqrt(tau_val) + * (r_val * d1 / (sigma_val * sqrt(tau_val)) + - (1 + d1 * d2) / (2 * tau_val))); + double const formula_speed = (-phi(d1) * (d1 / (sigma_val * sqrt(tau_val)) + 1) + / (S_val * S_val * sigma_val * sqrt(tau_val))); + double const formula_zomma = (phi(d1) * (d1 * d2 - 1) + / (S_val * sigma_val * sigma_val * sqrt(tau_val))); + double const formula_color = (-phi(d1) / (2 * S_val * tau_val * sigma_val * sqrt(tau_val)) + * (1 + + (2 * r_val * tau_val - d2 * sigma_val * sqrt(tau_val)) * d1 + / (sigma_val * sqrt(tau_val)))); + double const formula_ultima = -formula_vega + * ((d1 * d2 * (1 - d1 * d2) + d1 * d1 + d2 * d2) + / (sigma_val * sigma_val)); + + auto call_greeks = grad(call_price, &S, &sigma, &tau, &r); + auto put_greeks = grad(put_price, &S, &sigma, &tau, &r); + + auto call_greeks_2nd_order = grad_nd<2>(call_price, &S, &sigma, &tau, &r); + auto put_greeks_2nd_order = grad_nd<2>(put_price, &S, &sigma, &tau, &r); + + auto call_greeks_3rd_order = grad_nd<3>(call_price, &S, &sigma, &tau, &r); + auto put_greeks_3rd_order = grad_nd<3>(put_price, &S, &sigma, &tau, &r); + + std::cout << std::setprecision(std::numeric_limits::digits10) + << "autodiff black-scholes call price = " << call_price.item() << "\n" + << "autodiff black-scholes put price = " << put_price.item() << "\n" + << "\n ## First-order Greeks \n" + << "autodiff call delta = " << call_greeks[0].item() << "\n" + << "formula call delta = " << formula_call_delta << "\n" + << "autodiff call vega = " << call_greeks[1].item() << '\n' + << " formula call vega = " << formula_vega << '\n' + << "autodiff call theta = " << -call_greeks[2].item() << '\n' + << " formula call theta = " << formula_call_theta << '\n' + << "autodiff call rho = " << call_greeks[3].item() << 'n' + << " formula call rho = " << formula_call_rho << '\n' + << '\n' + << "autodiff put delta = " << put_greeks[0].item() << 'n' + << " formula put delta = " << formula_put_delta << '\n' + << "autodiff put vega = " << put_greeks[1].item() << '\n' + << " formula put vega = " << formula_vega << '\n' + << "autodiff put theta = " << -put_greeks[2].item() << '\n' + << " formula put theta = " << formula_put_theta << '\n' + << "autodiff put rho = " << put_greeks[3].item() << '\n' + << " formula put rho = " << formula_put_rho << '\n' + + << "\n## Second-order Greeks\n" + << "autodiff call gamma = " << call_greeks_2nd_order[0][0].item() << '\n' + << "autodiff put gamma = " << put_greeks_2nd_order[0][0].item() << '\n' + << " formula gamma = " << formula_gamma << '\n' + << "autodiff call vanna = " << call_greeks_2nd_order[0][1].item() << '\n' + << "autodiff put vanna = " << put_greeks_2nd_order[0][1].item() << '\n' + << " formula vanna = " << formula_vanna << '\n' + << "autodiff call charm = " << -call_greeks_2nd_order[0][2].item() << '\n' + << "autodiff put charm = " << -put_greeks_2nd_order[0][2].item() << '\n' + << " formula charm = " << formula_charm << '\n' + << "autodiff call vomma = " << call_greeks_2nd_order[1][1].item() << '\n' + << "autodiff put vomma = " << put_greeks_2nd_order[1][1].item() << '\n' + << " formula vomma = " << formula_vomma << '\n' + << "autodiff call veta = " << call_greeks_2nd_order[1][2].item() << '\n' + << "autodiff put veta = " << put_greeks_2nd_order[1][2].item() << '\n' + << " formula veta = " << formula_veta << '\n' + + << "\n## Third-order Greeks\n" + << "autodiff call speed = " << call_greeks_3rd_order[0][0][0] << '\n' + << "autodiff put speed = " << put_greeks_3rd_order[0][0][0] << '\n' + << " formula speed = " << formula_speed << '\n' + << "autodiff call zomma = " << call_greeks_3rd_order[0][0][1] << '\n' + << "autodiff put zomma = " << put_greeks_3rd_order[0][0][1] << '\n' + << " formula zomma = " << formula_zomma << '\n' + << "autodiff call color = " << call_greeks_3rd_order[0][0][2] << '\n' + << "autodiff put color = " << put_greeks_3rd_order[0][0][2] << '\n' + << " formula color = " << formula_color << '\n' + << "autodiff call ultima = " << call_greeks_3rd_order[1][1][1] << '\n' + << "autodiff put ultima = " << put_greeks_3rd_order[1][1][1] << '\n' + << " formula ultima = " << formula_ultima << '\n'; + return 0; +} diff --git a/example/reverse_mode_linear_regression_example.cpp b/example/reverse_mode_linear_regression_example.cpp new file mode 100644 index 0000000000..cb69daee84 --- /dev/null +++ b/example/reverse_mode_linear_regression_example.cpp @@ -0,0 +1,100 @@ +// 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 +#include +#include +#include +#include + +using namespace boost::math::differentiation::reverse_mode; +double random_double(double min_val, double max_val) +{ + static std::random_device rd; + static std::mt19937 gen(rd()); + std::uniform_real_distribution dist(min_val, max_val); + return dist(gen); +} + +template +rvar loss(std::array& y_target, std::array, N>& y_fit) +{ + rvar loss_v = make_rvar(0.0); + for (size_t i = 0; i < N; ++i) { + loss_v += pow(abs(y_target[i] - y_fit[i]), 2) / N; + } + return loss_v; +} +double noisy_linear_function(double intercept, double slope, double x) +{ + return intercept + slope * x + random_double(-0.1, 0.1); +} + +template +std::array, N> model(rvar& a, + rvar& b, + std::array& x) +{ + std::array, N> ret; + for (size_t i = 0; i < N; ++i) { + ret[i] = a * x[i] + b; + } + return ret; +} +int main() +{ + double slope = random_double(-5, 5); + double intercept = random_double(-5, 5); + + const size_t num_data_samples = 100; + /**/ + std::array noisy_data_x; + std::array noisy_data_y; + for (size_t i = 0; i < num_data_samples; i++) { + double x = random_double(-1, 1); + double y = noisy_linear_function(intercept, slope, x); + noisy_data_x[i] = x; + noisy_data_y[i] = y; + } + + double slope_guess = random_double(-5, 5); + double intercept_guess = random_double(-5, 5); + + rvar a = make_rvar(slope_guess); + rvar b = make_rvar(intercept_guess); + + gradient_tape& tape = get_active_tape(); + tape.add_checkpoint(); + + auto y_fit = model(a, b, noisy_data_x); + rvar loss_v = loss(noisy_data_y, y_fit); + + double learning_rate = 1e-3; + while (loss_v > 0.005) { + tape.rewind_to_last_checkpoint(); + y_fit = model(a, b, noisy_data_x); + loss_v = loss(noisy_data_y, y_fit); + auto gv = grad(loss_v, &a, &b); + a -= gv[0] * learning_rate; + b -= gv[1] * learning_rate; + } + + double slope_error = std::abs(slope - a.item()); + double intercept_error = std::abs(intercept - b.item()); + double relative_slope_error = slope_error / std::abs(slope); + double relative_intercept_error = intercept_error / std::abs(intercept); + + std::cout << "Autodiff Linear Regression Summary \n"; + std::cout << "learning rate : " << learning_rate << "\n"; + std::cout << "true slope: " << slope; + std::cout << " regression: " << a.item() << "\n"; + + std::cout << "relative error (slope): " << relative_slope_error << "\n"; + std::cout << "absolute error (slope): " << slope_error << "\n"; + std::cout << "true intercept: " << intercept; + std::cout << " regression: " << b.item() << "\n"; + std::cout << "absolute error (intercept): " << intercept_error << "\n"; + std::cout << "aelative error (intercept): " << relative_intercept_error << "\n"; + std::cout << "-------------------------------" << std::endl; +} diff --git a/include/boost/math/constants/calculate_constants.hpp b/include/boost/math/constants/calculate_constants.hpp index 3db74c3b66..95f53d9e16 100644 --- a/include/boost/math/constants/calculate_constants.hpp +++ b/include/boost/math/constants/calculate_constants.hpp @@ -95,6 +95,14 @@ inline T constant_one_div_two_pi::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_S return 1 / two_pi > >(); } +template +template +inline T constant_log_pi::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC((std::integral_constant))) +{ + BOOST_MATH_STD_USING + return log(pi > >()); +} + template template inline T constant_root_pi::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC((std::integral_constant))) diff --git a/include/boost/math/constants/constants.hpp b/include/boost/math/constants/constants.hpp index df702bf899..bdc0a74e27 100644 --- a/include/boost/math/constants/constants.hpp +++ b/include/boost/math/constants/constants.hpp @@ -280,6 +280,7 @@ namespace constants { BOOST_DEFINE_MATH_CONSTANT(four_thirds_pi, 4.188790204786390984616857844372670512e+00, "4.18879020478639098461685784437267051226289253250014109463325945641042187504827866483737976712282275730953078202e+00") BOOST_DEFINE_MATH_CONSTANT(one_div_two_pi, 1.591549430918953357688837633725143620e-01, "1.59154943091895335768883763372514362034459645740456448747667344058896797634226535090113802766253085956072842727e-01") BOOST_DEFINE_MATH_CONSTANT(one_div_root_two_pi, 3.989422804014326779399460599343818684e-01, "3.98942280401432677939946059934381868475858631164934657665925829670657925899301838501252333907306936430302558863e-01") + BOOST_DEFINE_MATH_CONSTANT(log_pi, 1.144729885849400174143427351353058711e+00, "1.14472988584940017414342735135305871164729481291531157151362307147213776988482607978362327027548970770200981223e+00") BOOST_DEFINE_MATH_CONSTANT(root_pi, 1.772453850905516027298167483341145182e+00, "1.77245385090551602729816748334114518279754945612238712821380778985291128459103218137495065673854466541622682362e+00") BOOST_DEFINE_MATH_CONSTANT(root_half_pi, 1.253314137315500251207882642405522626e+00, "1.25331413731550025120788264240552262650349337030496915831496178817114682730392098747329791918902863305800498633e+00") BOOST_DEFINE_MATH_CONSTANT(root_two_pi, 2.506628274631000502415765284811045253e+00, "2.50662827463100050241576528481104525300698674060993831662992357634229365460784197494659583837805726611600997267e+00") @@ -357,5 +358,3 @@ BOOST_MATH_GPU_ENABLED inline constexpr T tau() { return two_pi(); } #endif #endif // BOOST_MATH_CONSTANTS_CONSTANTS_INCLUDED - - diff --git a/include/boost/math/differentiation/autodiff_reverse.hpp b/include/boost/math/differentiation/autodiff_reverse.hpp new file mode 100644 index 0000000000..57584a765a --- /dev/null +++ b/include/boost/math/differentiation/autodiff_reverse.hpp @@ -0,0 +1,809 @@ +// 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_DIFFERENTIATION_AUTODIFF_HPP +#define BOOST_MATH_DIFFERENTIATION_AUTODIFF_HPP + +#include + +#if defined(BOOST_MATH_REVERSE_MODE_ET_OFF) && defined(BOOST_MATH_REVERSE_MODE_ET_ON) +#error "Cannot define both BOOST_MATH_REVERSE_MODE_ET_OFF and BOOST_MATH_REVERSE_MODE_ET_ON" +#endif + +#if !defined(BOOST_MATH_REVERSE_MODE_ET_OFF) && !defined(BOOST_MATH_REVERSE_MODE_ET_ON) +#define BOOST_MATH_REVERSE_MODE_ET_ON +#endif + +#ifdef BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#else +#include +#include +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#define BOOST_MATH_BUFFER_SIZE 65536 + +namespace boost { +namespace math { +namespace differentiation { +namespace reverse_mode { + +/* forward declarations for utitlity functions */ +template +struct expression; + +template +class rvar; + +template +struct abstract_binary_expression; + +template +struct abstract_unary_expression; + +template +class gradient_node; // forward declaration for tape +// manages nodes in computational graph +template +class gradient_tape +{ + /** @brief tape (graph) management class for autodiff + * holds all the data structures for autodiff */ +private: + /* type decays to order - 1 to support higher order derivatives */ + using inner_t = rvar_t; + /* adjoints are the overall derivative, and derivatives are the "local" + * derivative */ + detail::flat_linear_allocator adjoints_; + detail::flat_linear_allocator derivatives_; + detail::flat_linear_allocator, buffer_size> + gradient_nodes_; + detail::flat_linear_allocator *, buffer_size> + argument_nodes_; + + // compile time check if emplace_back calls on zero + template + gradient_node *fill_node_at_compile_time( + std::true_type, gradient_node *node_ptr) + { + node_ptr->derivatives_ = derivatives_.template emplace_back_n(); + node_ptr->argument_nodes_ = argument_nodes_.template emplace_back_n(); + return node_ptr; + } + + template + gradient_node *fill_node_at_compile_time( + std::false_type, gradient_node *node_ptr) + { + node_ptr->derivatives_ = nullptr; + node_ptr->argument_adjoints_ = nullptr; + node_ptr->argument_nodes_ = nullptr; + return node_ptr; + } + +public: + /* gradient node stores iterators to its data memebers + * (adjoint/derivative/arguments) so that in case flat linear allocator + * reaches its block boundary and needs more memory for that node, the + * iterator can be invoked to access it */ + using adjoint_iterator = typename detail::flat_linear_allocator::iterator; + using derivatives_iterator = + typename detail::flat_linear_allocator::iterator; + using gradient_nodes_iterator = + typename detail::flat_linear_allocator, + buffer_size>::iterator; + using argument_nodes_iterator = + typename detail::flat_linear_allocator *, + buffer_size>::iterator; + + gradient_tape() { clear(); }; + + gradient_tape(const gradient_tape &) = delete; + gradient_tape &operator=(const gradient_tape &) = delete; + gradient_tape(gradient_tape &&other) = delete; + gradient_tape operator=(gradient_tape &&other) = delete; + ~gradient_tape() noexcept { clear(); } + void clear() + { + adjoints_.clear(); + derivatives_.clear(); + gradient_nodes_.clear(); + argument_nodes_.clear(); + } + + // no derivatives or arguments + gradient_node *emplace_leaf_node() + { + gradient_node *node = &*gradient_nodes_.emplace_back(); + node->adjoint_ = adjoints_.emplace_back(); + node->derivatives_ = derivatives_iterator(); // nullptr; + node->argument_nodes_ = argument_nodes_iterator(); // nullptr; + + return node; + }; + + // single argument, single derivative + gradient_node *emplace_active_unary_node() + { + gradient_node *node = &*gradient_nodes_.emplace_back(); + node->n_ = 1; + node->adjoint_ = adjoints_.emplace_back(); + node->derivatives_ = derivatives_.emplace_back(); + + return node; + }; + + // arbitrary number of arguments/derivatives (compile time) + template + gradient_node *emplace_active_multi_node() + { + gradient_node *node = &*gradient_nodes_.emplace_back(); + node->n_ = n; + node->adjoint_ = adjoints_.emplace_back(); + // emulate if constexpr + return fill_node_at_compile_time(std::integral_constant 0)>{}, node); + } + + // same as above at runtime + gradient_node *emplace_active_multi_node(size_t n) + { + gradient_node *node = &*gradient_nodes_.emplace_back(); + node->n_ = n; + node->adjoint_ = adjoints_.emplace_back(); + if (n > 0) { + node->derivatives_ = derivatives_.emplace_back_n(n); + node->argument_nodes_ = argument_nodes_.emplace_back_n(n); + } + return node; + }; + /* manual reset button for all adjoints */ + void zero_grad() + { + const RealType zero = RealType(0.0); + adjoints_.fill(zero); + } + + // return type is an iterator + auto begin() { return gradient_nodes_.begin(); } + auto end() { return gradient_nodes_.end(); } + auto find(gradient_node *node) + { + return gradient_nodes_.find(node); + }; + void add_checkpoint() + { + gradient_nodes_.add_checkpoint(); + adjoints_.add_checkpoint(); + derivatives_.add_checkpoint(); + argument_nodes_.add_checkpoint(); + }; + + auto last_checkpoint() { return gradient_nodes_.last_checkpoint(); }; + auto first_checkpoint() { return gradient_nodes_.last_checkpoint(); }; + auto checkpoint_at(size_t index) { return gradient_nodes_.get_checkpoint_at(index); }; + void rewind_to_last_checkpoint() + { + gradient_nodes_.rewind_to_last_checkpoint(); + adjoints_.rewind_to_last_checkpoint(); + derivatives_.rewind_to_last_checkpoint(); + argument_nodes_.rewind_to_last_checkpoint(); + }; + void rewind_to_checkpoint_at(size_t index) // index is "checkpoint" index. so + // order which checkpoint was set + { + gradient_nodes_.rewind_to_checkpoint_at(index); + adjoints_.rewind_to_checkpoint_at(index); + derivatives_.rewind_to_checkpoint_at(index); + argument_nodes_.rewind_to_checkpoint_at(index); + } + + // rewind to beginning of computational graph + void rewind() + { + gradient_nodes_.rewind(); + adjoints_.rewind(); + derivatives_.rewind(); + argument_nodes_.rewind(); + } + + // random acces + gradient_node &operator[](size_t i) { return gradient_nodes_[i]; } + const gradient_node &operator[](size_t i) const + { + return gradient_nodes_[i]; + } +}; +// class rvar; +template // no CRTP, just storage +class gradient_node +{ + /* + * @brief manages adjoints, derivatives, and stores points to argument + * adjoints pointers to arguments aren't needed here + * */ +public: + using adjoint_iterator = typename gradient_tape::adjoint_iterator; + using derivatives_iterator = + typename gradient_tape::derivatives_iterator; + using argument_nodes_iterator = + typename gradient_tape::argument_nodes_iterator; + +private: + size_t n_; + using inner_t = rvar_t; + /* these are iterators in case + * flat linear allocator is at capacity, and needs to allocate a new block of + * memory. */ + adjoint_iterator adjoint_; + derivatives_iterator derivatives_; + argument_nodes_iterator argument_nodes_; + +public: + friend class gradient_tape; + friend class rvar; + + gradient_node() = default; + explicit gradient_node(const size_t n) + : n_(n) + , adjoint_(nullptr) + , derivatives_(nullptr) + {} + explicit gradient_node(const size_t n, + RealType *adjoint, + RealType *derivatives, + rvar **arguments) + : n_(n) + , adjoint_(adjoint) + , derivatives_(derivatives) + { static_cast(arguments); } + + inner_t get_adjoint_v() const { return *adjoint_; } + inner_t get_derivative_v(size_t arg_id) const { return derivatives_[static_cast(arg_id)]; }; + inner_t get_argument_adjoint_v(size_t arg_id) const + { + return *argument_nodes_[static_cast(arg_id)]->adjoint_; + } + + adjoint_iterator get_adjoint_ptr() { return adjoint_; } + adjoint_iterator get_adjoint_ptr() const { return adjoint_; }; + void update_adjoint_v(inner_t value) { *adjoint_ = value; }; + void update_derivative_v(size_t arg_id, inner_t value) { derivatives_[static_cast(arg_id)] = value; }; + void update_argument_adj_v(size_t arg_id, inner_t value) + { + argument_nodes_[static_cast(arg_id)]->update_adjoint_v(value); + }; + void update_argument_ptr_at(size_t arg_id, gradient_node *node_ptr) + { + argument_nodes_[static_cast(arg_id)] = node_ptr; + } + + void backward() + { + if (!n_) // leaf node + return; + + using boost::math::differentiation::reverse_mode::fabs; + using std::fabs; + if (!adjoint_ || fabs(*adjoint_) < 2 * std::numeric_limits::epsilon()) + return; + + if (!argument_nodes_) // no arguments + return; + + if (!derivatives_) // no derivatives + return; + + for (size_t i = 0; i < n_; ++i) { + auto adjoint = get_adjoint_v(); + auto derivative = get_derivative_v(i); + auto argument_adjoint = get_argument_adjoint_v(i); + update_argument_adj_v(i, argument_adjoint + derivative * adjoint); + } + } +}; + +/****************************************************************************************************************/ +template +inline gradient_tape &get_active_tape() +{ + static BOOST_MATH_THREAD_LOCAL gradient_tape + tape; + return tape; +} + +template +class rvar : public expression> +{ +private: + using inner_t = rvar_t; + friend class gradient_node; + inner_t value_; + gradient_node *node_ = nullptr; + template + friend class rvar; + /*****************************************************************************************/ + /** + * @brief implementation helpers for get_value_at + */ + template + struct get_value_at_impl + { + static_assert(target_order <= current_order, "Requested depth exceeds variable order."); + + /** @return value_ at rvar_t + */ + static auto &get(rvar &v) + { + return get_value_at_impl::get(v.get_value()); + } + /** @return const value_ at rvar_t + */ + static const auto &get(const rvar &v) + { + return get_value_at_impl::get(v.get_value()); + } + }; + + /** @brief base case specialization for target_order == current order + */ + template + struct get_value_at_impl + { + /** @return value_ at rvar_t + */ + static auto &get(rvar &v) { return v; } + /** @return const value_ at rvar_t + */ + static const auto &get(const rvar &v) { return v; } + }; + /*****************************************************************************************/ + void make_leaf_node() + { + gradient_tape &tape + = get_active_tape(); + node_ = tape.emplace_leaf_node(); + } + + void make_unary_node() + { + gradient_tape &tape + = get_active_tape(); + node_ = tape.emplace_active_unary_node(); + } + + void make_multi_node(size_t n) + { + gradient_tape &tape + = get_active_tape(); + node_ = tape.emplace_active_multi_node(n); + } + + template + void make_multi_node() + { + gradient_tape &tape + = get_active_tape(); + node_ = tape.template emplace_active_multi_node(); + } + + template + void make_rvar_from_expr(const expression &expr) + { + make_multi_node>(); + expr.template propagatex<0>(node_, inner_t(static_cast(1.0))); + } + RealType get_item_impl(std::true_type) const + { + return value_.get_item_impl(std::integral_constant 1)>{}); + } + + RealType get_item_impl(std::false_type) const { return value_; } + +public: + using value_type = RealType; + static constexpr size_t DerivativeOrder_v = DerivativeOrder; + rvar() + : value_() + { + make_leaf_node(); + } + rvar(const RealType value) + : value_(inner_t{static_cast(value)}) + { + make_leaf_node(); + } + + rvar &operator=(RealType v) + { + value_ = inner_t(v); + if (node_ == nullptr) { + make_leaf_node(); + } + return *this; + } + rvar(const rvar &other) = default; + rvar &operator=(const rvar &other) = default; + + template + void propagatex(gradient_node *node, inner_t adj) const + { + node->update_derivative_v(arg_index, adj); + node->update_argument_ptr_at(arg_index, node_); + } + + template + rvar(const expression &expr) + { + value_ = expr.evaluate(); + make_rvar_from_expr(expr); + } + + template && !is_same_v>> + rvar(T v) + : value_(inner_t{static_cast(v)}) + { + make_leaf_node(); + } + + template + rvar &operator=(const expression &expr) + { + value_ = expr.evaluate(); + make_rvar_from_expr(expr); + return *this; + } + /***************************************************************************************************/ + template + rvar &operator+=(const expression &expr) + { + *this = *this + expr; + return *this; + } + + template + rvar &operator*=(const expression &expr) + { + *this = *this * expr; + return *this; + } + + template + rvar &operator-=(const expression &expr) + { + *this = *this - expr; + return *this; + } + + template + rvar &operator/=(const expression &expr) + { + *this = *this / expr; + return *this; + } + /***************************************************************************************************/ + rvar &operator+=(const RealType &v) + { + *this = *this + v; + return *this; + } + + rvar &operator*=(const RealType &v) + { + *this = *this * v; + return *this; + } + + rvar &operator-=(const RealType &v) + { + *this = *this - v; + return *this; + } + + rvar &operator/=(const RealType &v) + { + *this = *this / v; + return *this; + } + + /***************************************************************************************************/ + const inner_t &adjoint() const { return *node_->get_adjoint_ptr(); } + inner_t &adjoint() { return *node_->get_adjoint_ptr(); } + + const inner_t &evaluate() const { return value_; }; + inner_t &get_value() { return value_; }; + + explicit operator RealType() const { return item(); } + + explicit operator int() const { return static_cast(item()); } + explicit operator long() const { return static_cast(item()); } + explicit operator long long() const { return static_cast(item()); } + + /** + * @brief same as evaluate but returns proper depth for higher order derivatives + * @return value_ at depth N + */ + template + auto &get_value_at() + { + static_assert(N <= DerivativeOrder, "Requested depth exceeds variable order."); + return get_value_at_impl::get(*this); + } + /** @brief same as above but const + */ + template + const auto &get_value_at() const + { + static_assert(N <= DerivativeOrder, "Requested depth exceeds variable order."); + return get_value_at_impl::get(*this); + } + + RealType item() const + { + return get_item_impl(std::integral_constant 1)>{}); + } + + void backward() + { + gradient_tape &tape + = get_active_tape(); + auto it = tape.find(node_); + it->update_adjoint_v(inner_t(static_cast(1.0))); + while (it != tape.begin()) { + it->backward(); + --it; + } + it->backward(); + } +}; + +template +std::ostream &operator<<(std::ostream &os, const rvar var) +{ + os << "rvar<" << DerivativeOrder << ">(" << var.item() << "," << var.adjoint() << ")"; + return os; +} + +template +std::ostream &operator<<(std::ostream &os, const expression &expr) +{ + rvar tmp = expr; + os << "rvar<" << DerivativeOrder << ">(" << tmp.item() << "," << tmp.adjoint() << ")"; + return os; +} + +template +rvar make_rvar(const RealType v) +{ + static_assert(DerivativeOrder > 0, "rvar order must be >= 1"); + return rvar(v); +} +template +rvar make_rvar(const expression &expr) +{ + static_assert(DerivativeOrder > 0, "rvar order must be >= 1"); + return rvar(expr); +} + +namespace detail { + +/** @brief helper overload for grad implementation. + * @return vector of gradients of the autodiff graph. + * specialization for autodiffing through autodiff. i.e. being able to + * compute higher order grads +*/ +template +struct grad_op_impl +{ + std::vector> operator()( + rvar &f, std::vector *> &x) + { + auto &tape = get_active_tape(); + tape.zero_grad(); + f.backward(); + + std::vector> gradient_vector; + gradient_vector.reserve(x.size()); + + for (auto &xi : x) { + gradient_vector.emplace_back(xi->adjoint()); + } + return gradient_vector; + } +}; +/** @brief helper overload for grad implementation. + * @return vector of gradients of the autodiff graph. + * base specialization for order 1 autodiff +*/ +template +struct grad_op_impl +{ + std::vector operator()(rvar &f, std::vector *> &x) + { + gradient_tape &tape = get_active_tape(); + tape.zero_grad(); + f.backward(); + std::vector gradient_vector; + gradient_vector.reserve(x.size()); + for (auto &xi : x) { + gradient_vector.push_back(xi->adjoint()); + } + return gradient_vector; + } +}; + +/** @brief helper overload for higher order autodiff + * @return nested vector representing N-d tensor of + * higher order derivatives + */ +template +struct grad_nd_impl +{ + auto operator()(rvar &f, + std::vector *> &x) + { + static_assert(N > 1, "N must be greater than 1 for this template"); + + auto current_grad = grad(f, x); // vector> or vector + + std::vector()( + current_grad[0], x))> + result; + result.reserve(current_grad.size()); + + for (auto &g_i : current_grad) { + result.push_back( + grad_nd_impl()(g_i, x)); + } + return result; + } +}; +/** @brief spcialization for order = 1, + * @return vector> gradients */ +template +struct grad_nd_impl<1, RealType, DerivativeOrder_1, DerivativeOrder_2> +{ + auto operator()(rvar &f, + std::vector *> &x) + { + return grad(f, x); + } +}; + +template +struct rvar_order; + +template +struct rvar_order *> +{ + static constexpr size_t value = DerivativeOrder; +}; + +} // namespace detail + +/** + * @brief grad computes gradient with respect to vector of pointers x + * @param f -> computational graph + * @param x -> variables gradients to record. Note ALL gradients of the graph + * are computed simultaneously, only the ones w.r.t. x are returned + * @return vector of gradients. in the case of DerivativeOrder_1 = 1 + * rvar decays to T + * + * safe to call recursively with grad(grad(grad... + */ +template +auto grad(rvar &f, std::vector *> &x) +{ + static_assert(DerivativeOrder_1 <= DerivativeOrder_2, + "variable differentiating w.r.t. must have order >= function order"); + std::vector *> xx; + xx.reserve(x.size()); + for (auto &xi : x) + xx.push_back(&(xi->template get_value_at())); + return detail::grad_op_impl{}(f, xx); +} +/** @brief variadic overload of above + */ +template +auto grad(rvar &f, First first, Other... other) +{ + constexpr size_t DerivativeOrder_2 = detail::rvar_order::value; + static_assert(DerivativeOrder_1 <= DerivativeOrder_2, + "variable differentiating w.r.t. must have order >= function order"); + std::vector *> x_vec = {first, other...}; + return grad(f, x_vec); +} + +/** @brief computes hessian matrix of computational graph w.r.t. + * vector of variables x. + * @return std::vector> hessian matrix + * rvar decays to T + * + * NOT recursion safe, cannot do hess(hess( + */ +template +auto hess(rvar &f, std::vector *> &x) +{ + return detail::grad_nd_impl<2, RealType, DerivativeOrder_1, DerivativeOrder_2>{}(f, x); +} +/** @brief variadic overload of above + */ +template +auto hess(rvar &f, First first, Other... other) +{ + constexpr size_t DerivativeOrder_2 = detail::rvar_order::value; + std::vector *> x_vec = {first, other...}; + return hess(f, x_vec); +} + +/** @brief comput N'th gradient of computational graph w.r.t. x + * @return vector +auto grad_nd(rvar &f, + std::vector *> &x) +{ + static_assert(DerivativeOrder_1 >= N, "Function order must be at least N"); + static_assert(DerivativeOrder_2 >= DerivativeOrder_1, + "Variable order must be at least function order"); + + return detail::grad_nd_impl()(f, x); +} + +/** @brief variadic overload of above + */ +template +auto grad_nd(ftype &f, First first, Other... other) +{ + using RealType = typename ftype::value_type; + constexpr size_t DerivativeOrder_1 = detail::rvar_order::value; + constexpr size_t DerivativeOrder_2 = detail::rvar_order::value; + std::vector *> x_vec = {first, other...}; + return detail::grad_nd_impl{}(f, x_vec); +} +} // namespace reverse_mode +} // namespace differentiation +} // namespace math +} // namespace boost +namespace std { + +// copied from forward mode +template +class numeric_limits> + : public numeric_limits::value_type> +{}; +} // namespace std +#endif diff --git a/include/boost/math/differentiation/detail/reverse_mode_autodiff_basic_operator_expressions.hpp b/include/boost/math/differentiation/detail/reverse_mode_autodiff_basic_operator_expressions.hpp new file mode 100644 index 0000000000..904401aed6 --- /dev/null +++ b/include/boost/math/differentiation/detail/reverse_mode_autodiff_basic_operator_expressions.hpp @@ -0,0 +1,276 @@ +// 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 REVERSE_MODE_AUTODOFF_BASIC_OPERATOR_OVERLOADS_HPP +#define REVERSE_MODE_AUTODOFF_BASIC_OPERATOR_OVERLOADS_HPP + +#include + +namespace boost { +namespace math { +namespace differentiation { +namespace reverse_mode { +/****************************************************************************************************************/ +template +struct add_expr : public abstract_binary_expression> +{ + /* @brief addition + * rvar+rvar + * */ + using inner_t = rvar_t; + // Explicitly define constructor to forward to base class + explicit add_expr(const expression &left_hand_expr, + const expression &right_hand_expr) + : abstract_binary_expression>(left_hand_expr, + right_hand_expr) + {} + + inner_t evaluate() const { return this->lhs.evaluate() + this->rhs.evaluate(); } + static const inner_t left_derivative(const inner_t & /*l*/, + const inner_t & /*r*/, + const inner_t & /*v*/) + { + return inner_t(static_cast(1.0)); + } + static const inner_t right_derivative(const inner_t & /*l*/, + const inner_t & /*r*/, + const inner_t & /*v*/) + { + return inner_t(static_cast(1.0)); + } +}; +template +struct add_const_expr + : public abstract_unary_expression> +{ + /* @brief + * rvar+float or float+rvar + * */ + using inner_t = rvar_t; + explicit add_const_expr(const expression &arg_expr, + const RealType v) + : abstract_unary_expression>(arg_expr, v){}; + inner_t evaluate() const { return this->arg.evaluate() + inner_t(this->constant); } + static const inner_t derivative(const inner_t & /*argv*/, + const inner_t & /*v*/, + const RealType & /*constant*/) + { + return inner_t(static_cast(1.0)); + } +}; +/****************************************************************************************************************/ +template +struct mult_expr : public abstract_binary_expression> +{ + /* @brief multiplication + * rvar * rvar + * */ + using inner_t = rvar_t; + explicit mult_expr(const expression &left_hand_expr, + const expression &right_hand_expr) + : abstract_binary_expression>(left_hand_expr, + right_hand_expr) + {} + + inner_t evaluate() const { return this->lhs.evaluate() * this->rhs.evaluate(); }; + static const inner_t left_derivative(const inner_t & /*l*/, + const inner_t &r, + const inner_t & /*v*/) noexcept + { + return r; + }; + static const inner_t right_derivative(const inner_t &l, + const inner_t & /*r*/, + const inner_t & /*v*/) noexcept + { + return l; + }; +}; +template +struct mult_const_expr + : public abstract_unary_expression> +{ + /* @brief + * rvar+float or float+rvar + * */ + using inner_t = rvar_t; + + explicit mult_const_expr(const expression &arg_expr, + const RealType v) + : abstract_unary_expression>(arg_expr, v){}; + + inner_t evaluate() const { return this->arg.evaluate() * inner_t(this->constant); } + static const inner_t derivative(const inner_t & /*argv*/, + const inner_t & /*v*/, + const RealType &constant) + { + return inner_t(constant); + } +}; +/****************************************************************************************************************/ +template +struct sub_expr : public abstract_binary_expression> +{ + /* @brief addition + * rvar-rvar + * */ + using inner_t = rvar_t; + // Explicitly define constructor to forward to base class + explicit sub_expr(const expression &left_hand_expr, + const expression &right_hand_expr) + : abstract_binary_expression>(left_hand_expr, + right_hand_expr) + {} + + inner_t evaluate() const { return this->lhs.evaluate() - this->rhs.evaluate(); } + static const inner_t left_derivative(const inner_t & /*l*/, + const inner_t & /*r*/, + const inner_t & /*v*/) + { + return inner_t(static_cast(1.0)); + } + static const inner_t right_derivative(const inner_t & /*l*/, + const inner_t & /*r*/, + const inner_t & /*v*/) + { + return inner_t(static_cast(-1.0)); + } +}; + +/****************************************************************************************************************/ +template +struct div_expr : public abstract_binary_expression> +{ + /* @brief multiplication + * rvar / rvar + * */ + using inner_t = rvar_t; + // Explicitly define constructor to forward to base class + explicit div_expr(const expression &left_hand_expr, + const expression &right_hand_expr) + : abstract_binary_expression>(left_hand_expr, + right_hand_expr) + {} + + inner_t evaluate() const { return this->lhs.evaluate() / this->rhs.evaluate(); }; + static const inner_t left_derivative(const inner_t & /*l*/, + const inner_t &r, + const inner_t & /*v*/) + { + return static_cast(1.0) / r; + }; + static const inner_t right_derivative(const inner_t &l, const inner_t &r, const inner_t & /*v*/) + { + return -l / (r * r); + }; +}; +template +struct div_by_const_expr + : public abstract_unary_expression> +{ + /* @brief + * rvar/float + * */ + using inner_t = rvar_t; + + explicit div_by_const_expr(const expression &arg_expr, + const RealType v) + : abstract_unary_expression>(arg_expr, + v){}; + + inner_t evaluate() const { return this->arg.evaluate() / inner_t(this->constant); } + static const inner_t derivative(const inner_t & /*argv*/, + const inner_t & /*v*/, + const RealType &constant) + { + return inner_t(1.0 / constant); + } +}; + +template +struct const_div_by_expr + : public abstract_unary_expression> +{ + /** @brief + * float/rvar + * */ + using inner_t = rvar_t; + + explicit const_div_by_expr(const expression &arg_expr, + const RealType v) + : abstract_unary_expression>(arg_expr, + v){}; + + inner_t evaluate() const { return inner_t(this->constant) / this->arg.evaluate(); } + static const inner_t derivative(const inner_t &argv, + const inner_t & /*v*/, + const RealType &constant) + { + return -inner_t{constant} / (argv * argv); + } +}; +/****************************************************************************************************************/ + +} // namespace reverse_mode +} // namespace differentiation +} // namespace math +} // namespace boost + +#endif diff --git a/include/boost/math/differentiation/detail/reverse_mode_autodiff_basic_ops_et.hpp b/include/boost/math/differentiation/detail/reverse_mode_autodiff_basic_ops_et.hpp new file mode 100644 index 0000000000..4767d17030 --- /dev/null +++ b/include/boost/math/differentiation/detail/reverse_mode_autodiff_basic_ops_et.hpp @@ -0,0 +1,160 @@ +// 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 REVERSE_MODE_AUTODIFF_BASIC_OPS_ET_HPP +#define REVERSE_MODE_AUTODIFF_BASIC_OPS_ET_HPP + +#include +namespace boost { +namespace math { +namespace differentiation { +namespace reverse_mode { +template +mult_expr operator*( + const expression &lhs, + const expression &rhs) +{ + return mult_expr(lhs, rhs); +} + +/** @brief type promotion is handled by casting the numeric type to + * the type inside expression. This is to avoid converting the + * entire tape in case you have something like double * rvar + * */ +template::value>::type> +mult_const_expr operator*( + const expression &arg, const RealType2 &v) +{ + return mult_const_expr(arg, static_cast(v)); +} +template::value>::type> +mult_const_expr operator*( + const RealType2 &v, const expression &arg) +{ + return mult_const_expr(arg, static_cast(v)); +} +/****************************************************************************************************************/ +/* + */ +template +add_expr operator+( + const expression &lhs, + const expression &rhs) +{ + return add_expr(lhs, rhs); +} +template::value>::type> +add_const_expr operator+( + const expression &arg, const RealType2 &v) +{ + return add_const_expr(arg, static_cast(v)); +} +template::value>::type> +add_const_expr operator+( + const RealType2 &v, const expression &arg) +{ + return add_const_expr(arg, static_cast(v)); +} +/****************************************************************************************************************/ +/* - overload */ +/** @brief + * negation (-1.0*rvar) */ +template +mult_const_expr operator-( + const expression &arg) +{ + return mult_const_expr(arg, static_cast(-1.0)); +} + +/** @brief + * subtraction rvar-rvar */ +template +sub_expr operator-( + const expression &lhs, + const expression &rhs) +{ + return sub_expr(lhs, rhs); +} + +/** @brief + * subtraction float - rvar */ +template::value>::type> +add_const_expr operator-( + const expression &arg, const RealType2 &v) +{ + /* rvar - float = rvar + (-float) */ + return add_const_expr(arg, static_cast(-v)); +} + +/** @brief + * subtraction float - rvar + * @return add_expr> + */ +template::value>::type> +auto operator-(const RealType2 &v, const expression &arg) +{ + auto neg = -arg; + return neg + static_cast(v); +} +/****************************************************************************************************************/ +/* / */ +template +div_expr operator/( + const expression &lhs, + const expression &rhs) +{ + return div_expr(lhs, rhs); +} + +template::value>::type> +const_div_by_expr operator/( + const RealType2 &v, const expression &arg) +{ + return const_div_by_expr(arg, static_cast(v)); +} + +template::value>::type> +div_by_const_expr operator/( + const expression &arg, const RealType2 &v) +{ + return div_by_const_expr(arg, static_cast(v)); +} +} // namespace reverse_mode +} // namespace differentiation +} // namespace math +} // namespace boost + +#endif // REVERSE_MODE_AUTODIFF_BASIC_OPS_ET_HPP diff --git a/include/boost/math/differentiation/detail/reverse_mode_autodiff_basic_ops_no_et.hpp b/include/boost/math/differentiation/detail/reverse_mode_autodiff_basic_ops_no_et.hpp new file mode 100644 index 0000000000..6a57887109 --- /dev/null +++ b/include/boost/math/differentiation/detail/reverse_mode_autodiff_basic_ops_no_et.hpp @@ -0,0 +1,154 @@ +// 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 REVERSE_MODE_AUTODIFF_BASIC_OPS_NO_ET_HPP +#define REVERSE_MODE_AUTODIFF_BASIC_OPS_NO_ET_HPP +#include +namespace boost { +namespace math { +namespace differentiation { +namespace reverse_mode { + +template +rvar operator*(const expression &lhs, + const expression &rhs) +{ + return mult_expr(lhs, rhs); +} + +/** @brief type promotion is handled by casting the numeric type to + * the type inside expression. This is to avoid converting the + * entire tape in case you have something like double * rvar + * */ +template::value>::type> +rvar operator*(const expression &arg, + const RealType2 &v) +{ + return mult_const_expr(arg, static_cast(v)); +} +template::value>::type> +rvar operator*(const RealType2 &v, + const expression &arg) +{ + return mult_const_expr(arg, static_cast(v)); +} +/****************************************************************************************************************/ +/* + */ +template +rvar operator+(const expression &lhs, + const expression &rhs) +{ + return add_expr(lhs, rhs); +} +template::value>::type> +rvar operator+(const expression &arg, + const RealType2 &v) +{ + return add_const_expr(arg, static_cast(v)); +} +template::value>::type> +rvar operator+(const RealType2 &v, + const expression &arg) +{ + return add_const_expr(arg, static_cast(v)); +} +/****************************************************************************************************************/ +/* - overload */ +/** @brief + * negation (-1.0*rvar) */ +template +rvar operator-(const expression &arg) +{ + return mult_const_expr(arg, static_cast(-1.0)); +} + +/** @brief + * subtraction rvar-rvar */ +template +rvar operator-(const expression &lhs, + const expression &rhs) +{ + return sub_expr(lhs, rhs); +} + +/** @brief + * subtraction float - rvar */ +template::value>::type> +rvar operator-(const expression &arg, + const RealType2 &v) +{ + /* rvar - float = rvar + (-float) */ + return add_const_expr(arg, -static_cast(v)); +} + +/** @brief + * subtraction float - rvar + * @return add_expr> + */ +template::value>::type> +rvar operator-(const RealType2 &v, + const expression &arg) +{ + auto neg = -arg; + return neg + static_cast(v); +} +/****************************************************************************************************************/ +/* / */ +template +rvar operator/(const expression &lhs, + const expression &rhs) +{ + return div_expr(lhs, rhs); +} + +template::value>::type> +rvar operator/(const RealType2 &v, + const expression &arg) +{ + return const_div_by_expr(arg, static_cast(v)); +} + +template::value>::type> +rvar operator/(const expression &arg, + const RealType2 &v) +{ + return div_by_const_expr(arg, static_cast(v)); +} +} // namespace reverse_mode +} // namespace differentiation +} // namespace math +} // namespace boost +#endif diff --git a/include/boost/math/differentiation/detail/reverse_mode_autodiff_comparison_operator_overloads.hpp b/include/boost/math/differentiation/detail/reverse_mode_autodiff_comparison_operator_overloads.hpp new file mode 100644 index 0000000000..79616b3176 --- /dev/null +++ b/include/boost/math/differentiation/detail/reverse_mode_autodiff_comparison_operator_overloads.hpp @@ -0,0 +1,167 @@ +// 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 REVERSE_MODE_AUTODIFF_COMPARISON_OPERATOR_OVERLOADS_HPP +#define REVERSE_MODE_AUTODIFF_COMPARISON_OPERATOR_OVERLOADS_HPP +#include +namespace boost { +namespace math { +namespace differentiation { +namespace reverse_mode { +template +bool operator==(const expression &lhs, + const expression &rhs) +{ + return lhs.evaluate() == rhs.evaluate(); +} + +template::value>::type> +bool operator==(const expression &lhs, const RealType2 &rhs) +{ + return lhs.evaluate() == static_cast(rhs); +} +template::value>::type> +bool operator==(const RealType2 &lhs, const expression &rhs) +{ + return lhs == rhs.evaluate(); +} + +template +bool operator!=(const expression &lhs, + const expression &rhs) +{ + return lhs.evaluate() != rhs.evaluate(); +} +template::value>::type> +bool operator!=(const expression &lhs, const RealType2 &rhs) +{ + return lhs.evaluate() != rhs; +} +template::value>::type> +bool operator!=(const RealType2 &lhs, const expression &rhs) +{ + return lhs != rhs.evaluate(); +} + +template +bool operator<(const expression &lhs, + const expression &rhs) +{ + return lhs.evaluate() < rhs.evaluate(); +} +template::value>::type> +bool operator<(const expression &lhs, const RealType2 &rhs) +{ + return lhs.evaluate() < rhs; +} +template::value>::type> +bool operator<(const RealType2 &lhs, const expression &rhs) +{ + return lhs < rhs.evaluate(); +} + +template +bool operator>(const expression &lhs, + const expression &rhs) +{ + return lhs.evaluate() > rhs.evaluate(); +} +template::value>::type> +bool operator>(const expression &lhs, const RealType2 &rhs) +{ + return lhs.evaluate() > rhs; +} +template::value>::type> +bool operator>(const RealType2 &lhs, const expression &rhs) +{ + return lhs > rhs.evaluate(); +} + +template +bool operator<=(const expression &lhs, + const expression &rhs) +{ + return lhs.evaluate() <= rhs.evaluate(); +} +template::value>::type> +bool operator<=(const expression &lhs, const RealType2 &rhs) +{ + return lhs.evaluate() <= rhs; +} +template::value>::type> +bool operator<=(const RealType2 &lhs, const expression &rhs) +{ + return lhs <= rhs.evaluate(); +} + +template +bool operator>=(const expression &lhs, + const expression &rhs) +{ + return lhs.evaluate() >= rhs.evaluate(); +} +template::value>::type> +bool operator>=(const expression &lhs, const RealType2 &rhs) +{ + return lhs.evaluate() >= rhs; +} +template::value>::type> +bool operator>=(const RealType2 &lhs, const expression &rhs) +{ + return lhs >= rhs.evaluate(); +} +} // namespace reverse_mode +} // namespace differentiation +} // namespace math +} // namespace boost +#endif // REVERSE_MODE_AUTODIFF_COMPARISON_OPERATOR_OVERLOADS_HPP 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 new file mode 100644 index 0000000000..7f7fd9ce8a --- /dev/null +++ b/include/boost/math/differentiation/detail/reverse_mode_autodiff_erf_overloads.hpp @@ -0,0 +1,234 @@ +// 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 REVERSE_MODE_AUTODIFF_ERF_OVERLOADS_HPP +#define REVERSE_MODE_AUTODIFF_ERF_OVERLOADS_HPP + +#include +#include + +#ifdef BOOST_MATH_REVERSE_MODE_ET_ON +#include +#else +#include +#endif + +#include +#include +#include +namespace boost { +namespace math { +namespace differentiation { +namespace reverse_mode { + +template +struct erf_expr; + +template +struct erfc_expr; + +template +struct erf_inv_expr; + +template +struct erfc_inv_expr; + +template +erf_expr erf(const expression &arg) +{ + return erf_expr(arg, 0.0); +} + +template +erfc_expr erfc(const expression &arg) +{ + return erfc_expr(arg, 0.0); +} + +template +erf_inv_expr erf_inv( + const expression &arg) +{ + return erf_inv_expr(arg, 0.0); +} + +template +erfc_inv_expr erfc_inv( + const expression &arg) +{ + return erfc_inv_expr(arg, 0.0); +} + +template +struct erf_expr : public abstract_unary_expression> +{ + /** @brief erf(x) + * + * d/dx erf(x) = 2*exp(x^2)/sqrt(pi) + * + * */ + using inner_t = rvar_t; + + explicit erf_expr(const expression &arg_expr, const RealType v) + : abstract_unary_expression>(arg_expr, v){}; + + inner_t evaluate() const + { + return detail::if_functional_dispatch<(DerivativeOrder > 1)>( + [this](auto &&x) { return reverse_mode::erf(std::forward(x)); }, + [this](auto &&x) { return boost::math::erf(std::forward(x)); }, + this->arg.evaluate()); + } + static const inner_t derivative(const inner_t &argv, + const inner_t & /*v*/, + const RealType & /*constant*/) + { + BOOST_MATH_STD_USING + return static_cast(2.0) * exp(-argv * argv) / sqrt(constants::pi()); + } +}; + +template +struct erfc_expr : public abstract_unary_expression> +{ + /** @brief erfc(x) + * + * d/dx erf(x) = -2*exp(x^2)/sqrt(pi) + * + * */ + + using inner_t = rvar_t; + + explicit erfc_expr(const expression &arg_expr, const RealType v) + : abstract_unary_expression>(arg_expr, v){}; + + inner_t evaluate() const + { + return detail::if_functional_dispatch<((DerivativeOrder > 1))>( + [this](auto &&x) { return reverse_mode::erfc(std::forward(x)); }, + [this](auto &&x) { return boost::math::erfc(std::forward(x)); }, + this->arg.evaluate()); + } + static const inner_t derivative(const inner_t &argv, + const inner_t & /*v*/, + const RealType & /*constant*/) + { + BOOST_MATH_STD_USING + return static_cast(-2.0) * exp(-argv * argv) / sqrt(constants::pi()); + } +}; + +template +struct erf_inv_expr : public abstract_unary_expression> +{ + /** @brief erf(x) + * + * d/dx erf(x) = 2*exp(x^2)/sqrt(pi) + * + * */ + + using inner_t = rvar_t; + + explicit erf_inv_expr(const expression &arg_expr, + const RealType v) + : abstract_unary_expression>(arg_expr, v){}; + + inner_t evaluate() const + { + return detail::if_functional_dispatch<((DerivativeOrder > 1))>( + [this](auto &&x) { return reverse_mode::erf_inv(std::forward(x)); }, + [this](auto &&x) { return boost::math::erf_inv(std::forward(x)); }, + this->arg.evaluate()); + } + static const inner_t derivative(const inner_t &argv, + const inner_t & /*v*/, + const RealType & /*constant*/) + { + BOOST_MATH_STD_USING + return detail::if_functional_dispatch<((DerivativeOrder > 1))>( + [](auto &&x) { + return static_cast(0.5) * sqrt(constants::pi()) + * reverse_mode::exp( + reverse_mode::pow(reverse_mode::erf_inv(x), static_cast(2.0))); + }, + [](auto &&x) { + return static_cast(0.5) * sqrt(constants::pi()) + * exp(pow(boost::math::erf_inv(x), static_cast(2.0))); + }, + argv); + } +}; + +template +struct erfc_inv_expr + : public abstract_unary_expression> +{ + /** @brief erfc(x) + * + * d/dx erf(x) = -2*exp(x^2)/sqrt(pi) + * + * */ + + using inner_t = rvar_t; + + explicit erfc_inv_expr(const expression &arg_expr, + const RealType v) + : abstract_unary_expression>(arg_expr, v){}; + + inner_t evaluate() const + { + return detail::if_functional_dispatch<((DerivativeOrder > 1))>( + [this](auto &&x) { return reverse_mode::erfc_inv(std::forward(x)); }, + [this](auto &&x) { return boost::math::erfc_inv(std::forward(x)); }, + this->arg.evaluate()); + } + static const inner_t derivative(const inner_t &argv, + const inner_t & /*v*/, + const RealType & /*constant*/) + { + BOOST_MATH_STD_USING + return detail::if_functional_dispatch<((DerivativeOrder > 1))>( + [](auto &&x) { + return static_cast(-0.5) * sqrt(constants::pi()) + * reverse_mode::exp(reverse_mode::pow(reverse_mode::erfc_inv(x), + static_cast(2.0))); + }, + [](auto &&x) { + return static_cast(-0.5) * sqrt(constants::pi()) + * exp(pow(boost::math::erfc_inv(x), static_cast(2.0))); + }, + argv); + } +}; + +} // namespace reverse_mode +} // namespace differentiation +} // namespace math +} // namespace boost + +#endif // REVERSE_MODE_AUTODIFF_ERF_OVERLOADS_HPP diff --git a/include/boost/math/differentiation/detail/reverse_mode_autodiff_expression_template_base.hpp b/include/boost/math/differentiation/detail/reverse_mode_autodiff_expression_template_base.hpp new file mode 100644 index 0000000000..1df0617ab6 --- /dev/null +++ b/include/boost/math/differentiation/detail/reverse_mode_autodiff_expression_template_base.hpp @@ -0,0 +1,258 @@ +// 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 REVERSE_MODE_AUTODIFF_EXPRESSION_TEMPLATE_BASE_HPP +#define REVERSE_MODE_AUTODIFF_EXPRESSION_TEMPLATE_BASE_HPP +#include +#include +namespace boost { +namespace math { +namespace differentiation { +namespace reverse_mode { + +/* forward declarations for utitlity functions */ +struct expression_base +{}; + +template +struct expression; + +template +class rvar; + +template +struct abstract_binary_expression; + +template + +struct abstract_unary_expression; + +template +class gradient_node; // forward declaration for tape + +namespace detail { +template +using void_t = void; +// Check if T has a 'value_type' alias +template +struct has_value_type : std::false_type +{}; +template +struct has_value_type> : std::true_type +{}; +template +struct has_binary_sub_types : std::false_type +{}; +template +struct has_binary_sub_types> : std::true_type +{}; +template +struct has_unary_sub_type : std::false_type +{}; +template +struct has_unary_sub_type> : std::true_type +{}; + +template +struct count_rvar_impl +{ + static constexpr std::size_t value = 0; +}; +template +struct count_rvar_impl, DerivativeOrder> +{ + static constexpr std::size_t value = 1; +}; + +template +struct count_rvar_impl< + RealType, + DerivativeOrder, + std::enable_if_t::value + && !std::is_same>::value + && !has_unary_sub_type::value>> +{ + static constexpr std::size_t value + = count_rvar_impl::value + + count_rvar_impl::value; +}; + +template +struct count_rvar_impl< + RealType, + DerivativeOrder, + typename std::enable_if_t< + has_unary_sub_type::value + && !std::is_same>::value + && !has_binary_sub_types::value>> +{ + static constexpr std::size_t value + = count_rvar_impl::value; +}; +template +constexpr std::size_t count_rvars = detail::count_rvar_impl::value; + +template +struct is_expression : std::is_base_of::type> +{}; + +template +struct rvar_type_impl +{ + using type = rvar; +}; + +template +struct rvar_type_impl +{ + using type = RealType; +}; + +} // namespace detail + +template +using rvar_t = typename detail::rvar_type_impl::type; + +template +struct expression : expression_base +{ + /* @brief + * base expression class + * */ + + using value_type = RealType; + static constexpr size_t order_v = DerivativeOrder; + using derived_type = DerivedExpression; + + static constexpr size_t num_literals = 0; + using inner_t = rvar_t; + inner_t evaluate() const { return static_cast(this)->evaluate(); } + + template + void propagatex(gradient_node *node, inner_t adj) const + { + return static_cast(this)->template propagatex(node, + adj); + } +}; + +template +struct abstract_binary_expression + : public expression< + RealType, + DerivativeOrder, + abstract_binary_expression> +{ + using lhs_type = LHS; + using rhs_type = RHS; + using value_type = RealType; + using inner_t = rvar_t; + const lhs_type lhs; + const rhs_type rhs; + + explicit abstract_binary_expression( + const expression &left_hand_expr, + const expression &right_hand_expr) + : lhs(static_cast(left_hand_expr)) + , rhs(static_cast(right_hand_expr)){}; + + inner_t evaluate() const + { + return static_cast(this)->evaluate(); + }; + + template + void propagatex(gradient_node *node, inner_t adj) const + { + const inner_t lv = lhs.evaluate(); + const inner_t rv = rhs.evaluate(); + const inner_t v = evaluate(); + const inner_t partial_l = ConcreteBinaryOperation::left_derivative(lv, rv, v); + const inner_t partial_r = ConcreteBinaryOperation::right_derivative(lv, rv, v); + + constexpr size_t num_lhs_args = detail::count_rvars; + constexpr size_t num_rhs_args = detail::count_rvars; + + propagate_lhs(node, adj * partial_l); + propagate_rhs(node, adj * partial_r); + } + +private: + /* everything here just emulates c++17 if constexpr */ + + template 0), int>::type = 0> + void propagate_lhs(gradient_node *node, inner_t adj) const + { + lhs.template propagatex(node, adj); + } + + template::type = 0> + void propagate_lhs(gradient_node *, inner_t) const + {} + + template 0), int>::type = 0> + void propagate_rhs(gradient_node *node, inner_t adj) const + { + rhs.template propagatex(node, adj); + } + + template::type = 0> + void propagate_rhs(gradient_node *, inner_t) const + {} +}; +template + +struct abstract_unary_expression + : public expression< + RealType, + DerivativeOrder, + abstract_unary_expression> +{ + using arg_type = ARG; + using value_type = RealType; + using inner_t = rvar_t; + const arg_type arg; + const RealType constant; + explicit abstract_unary_expression(const expression &arg_expr, + const RealType &constant) + : arg(static_cast(arg_expr)) + , constant(constant){}; + inner_t evaluate() const + { + return static_cast(this)->evaluate(); + }; + + template + void propagatex(gradient_node *node, inner_t adj) const + { + inner_t argv = arg.evaluate(); + inner_t v = evaluate(); + inner_t partial_arg = ConcreteUnaryOperation::derivative(argv, v, constant); + + arg.template propagatex(node, adj * partial_arg); + } +}; +} // namespace reverse_mode +} // namespace differentiation +} // namespace math +} // namespace boost + +#endif // REVERSE_MODE_AUTODIFF_EXPRESSION_TEMPLATE_BASE_HPP diff --git a/include/boost/math/differentiation/detail/reverse_mode_autodiff_helper_functions.hpp b/include/boost/math/differentiation/detail/reverse_mode_autodiff_helper_functions.hpp new file mode 100644 index 0000000000..fd08e8e888 --- /dev/null +++ b/include/boost/math/differentiation/detail/reverse_mode_autodiff_helper_functions.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_REVERSE_MODE_AUTODIFF_HELPER_FUNCTIONS_HPP +#define BOOST_REVERSE_MODE_AUTODIFF_HELPER_FUNCTIONS_HPP + +#include +#include +namespace boost { +namespace math { +namespace differentiation { +namespace reverse_mode {} // namespace reverse_mode +} // namespace differentiation +} // namespace math +} // namespace boost + +#endif 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 new file mode 100644 index 0000000000..b0b5ab0555 --- /dev/null +++ b/include/boost/math/differentiation/detail/reverse_mode_autodiff_memory_management.hpp @@ -0,0 +1,434 @@ +// 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 REVERSE_MODE_AUTODIFF_MEMORY_MANAGEMENT_HPP +#define REVERSE_MODE_AUTODIFF_MEMORY_MANAGEMENT_HPP + +#include +#include +#include +#include +#include +#include +#include +#include +#include +namespace boost { +namespace math { +namespace differentiation { +namespace reverse_mode { +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; + +private: + 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; } +}; +/* memory management helps for tape */ +template +class flat_linear_allocator +{ + /** @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>; + +private: + 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; } + +private: + 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(); + } + } + /** @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 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 + * 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, + * 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); + } + /** @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_); + } + } + /** @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_); + } + } + + /** @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, + * 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]; + } +}; +} // namespace detail +} // namespace reverse_mode +} // namespace differentiation +} // namespace math +} // namespace boost + +#endif diff --git a/include/boost/math/differentiation/detail/reverse_mode_autodiff_stl_et.hpp b/include/boost/math/differentiation/detail/reverse_mode_autodiff_stl_et.hpp new file mode 100644 index 0000000000..8ef304f3b6 --- /dev/null +++ b/include/boost/math/differentiation/detail/reverse_mode_autodiff_stl_et.hpp @@ -0,0 +1,275 @@ +// 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 REVERSE_MODE_AUTODIFF_STL_ET_HPP +#define REVERSE_MODE_AUTODIFF_STL_ET_HPP + +#include +namespace boost { +namespace math { +namespace differentiation { +namespace reverse_mode { + +template +fabs_expr fabs(const expression &arg) +{ + return fabs_expr(arg, static_cast(0.0)); +} +template +auto abs(const expression &arg) +{ + return fabs(arg); +} +template +ceil_expr ceil(const expression &arg) +{ + return ceil_expr(arg, static_cast(0.0)); +} +template +floor_expr floor( + const expression &arg) +{ + return floor_expr(arg, static_cast(0.0)); +} + +template +exp_expr exp(const expression &arg) +{ + return exp_expr(arg, static_cast(0.0)); +} + +template +pow_expr pow( + const expression &lhs, + const expression &rhs) +{ + return pow_expr(lhs, rhs); +} + +template::value>::type> +expr_pow_float_expr pow( + const expression &arg, const RealType2 &v) +{ + return expr_pow_float_expr(arg, static_cast(v)); +}; + +template +float_pow_expr_expr pow( + const RealType &v, const expression &arg) +{ + return float_pow_expr_expr(arg, v); +}; + +template +log_expr log(const expression &arg) +{ + return log_expr(arg, static_cast(0.0)); +}; + +template +sqrt_expr sqrt(const expression &arg) +{ + return sqrt_expr(arg, static_cast(0.0)); +}; + +template +auto frexp(const expression &arg, int *i) +{ + BOOST_MATH_STD_USING + frexp(arg.evaluate(), i); + return arg / pow(static_cast(2.0), *i); +} + +template +auto ldexp(const expression &arg, const int &i) +{ + BOOST_MATH_STD_USING + return arg * pow(static_cast(2.0), i); +} + +template +cos_expr cos(const expression &arg) +{ + return cos_expr(arg, static_cast(0.0)); +}; + +template +sin_expr sin(const expression &arg) +{ + return sin_expr(arg, static_cast(0.0)); +}; + +template +tan_expr tan(const expression &arg) +{ + return tan_expr(arg, static_cast(0.0)); +}; + +template +acos_expr acos(const expression &arg) +{ + return acos_expr(arg, static_cast(0.0)); +}; + +template +asin_expr asin(const expression &arg) +{ + return asin_expr(arg, static_cast(0.0)); +}; + +template +atan_expr atan(const expression &arg) +{ + return atan_expr(arg, static_cast(0.0)); +}; + +template +atan2_expr atan2( + const expression &lhs, + const expression &rhs) +{ + return atan2_expr(lhs, rhs); +} + +template +atan2_right_float_expr atan2( + const expression &arg, const RealType &v) +{ + return atan2_right_float_expr(arg, v); +}; + +template +atan2_left_float_expr atan2( + const RealType &v, const expression &arg) +{ + return atan2_left_float_expr(arg, v); +}; + +template +trunc_expr trunc( + const expression &arg) +{ + return trunc_expr(arg, static_cast(0.0)); +} + +template +auto fmod(const expression &lhs, + const expression &rhs) +{ + return fmod_expr(lhs, rhs); +} + +template +auto fmod(const expression &lhs, const RealType rhs) +{ + return fmod_right_float_expr(lhs, rhs); +} + +template +auto fmod(const RealType lhs, const expression &rhs) +{ + return fmod_left_float_expr(rhs, lhs); +} + +template +round_expr round( + const expression &arg) +{ + return round_expr(arg, static_cast(0.0)); +} + +template +int iround(const expression &arg) +{ + rvar tmp = arg.evaluate(); + return iround(tmp.item()); +} +template +long lround(const expression &arg) +{ + BOOST_MATH_STD_USING + rvar tmp = arg.evaluate(); + return lround(tmp.item()); +} + +template +long long llround(const expression &arg) +{ + rvar tmp = arg.evaluate(); + return llround(tmp.item()); +} + +template +int itrunc(const expression &arg) +{ + rvar tmp = arg.evaluate(); + return itrunc(tmp.item()); +} + +template +long ltrunc(const expression &arg) +{ + rvar tmp = arg.evaluate(); + return ltrunc(tmp.item()); +} + +template +long long lltrunc(const expression &arg) +{ + rvar tmp = arg.evaluate(); + return lltrunc(tmp.item()); +} + +template +sinh_expr sinh(const expression &arg) +{ + return sinh_expr(arg, static_cast(0.0)); +} + +template +cosh_expr cosh(const expression &arg) +{ + return cosh_expr(arg, static_cast(0.0)); +} + +template +tanh_expr tanh(const expression &arg) +{ + return tanh_expr(arg, static_cast(0.0)); +} + +template +log10_expr log10( + const expression &arg) +{ + return log10_expr(arg, static_cast(0.0)); +} +template +asinh_expr asinh( + const expression &arg) +{ + return asinh_expr(arg, static_cast(0.0)); +} +template +acosh_expr acosh( + const expression &arg) +{ + return acosh_expr(arg, static_cast(0.0)); +} +template +atanh_expr atanh( + const expression &arg) +{ + return atanh_expr(arg, static_cast(0.0)); +} +} // namespace reverse_mode +} // namespace differentiation +} // namespace math +} // namespace boost + +#endif diff --git a/include/boost/math/differentiation/detail/reverse_mode_autodiff_stl_expressions.hpp b/include/boost/math/differentiation/detail/reverse_mode_autodiff_stl_expressions.hpp new file mode 100644 index 0000000000..4d780cd7ec --- /dev/null +++ b/include/boost/math/differentiation/detail/reverse_mode_autodiff_stl_expressions.hpp @@ -0,0 +1,852 @@ +// 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 REVERSE_MODE_AUTODIFF_STL_OVERLOADS +#define REVERSE_MODE_AUTODIFF_STL_OVERLOADS +/* stl support : expressions */ + +#ifdef BOOST_MATH_REVERSE_MODE_ET_ON +#include +#else +#include +#endif + +#include +#include +#include +#include +#include +namespace boost { +namespace math { +namespace differentiation { +namespace reverse_mode { +template +struct fabs_expr : public abstract_unary_expression> +{ + /** @brief + * |x| + * d/dx |x| = 1 if x > 0 + * -1 if x <= 0 + * + * the choice is arbitrary and for optimization it is most likely + * more correct to chose this convention over d/dx = 0 at x = 0 + * to avoid vanishing gradients + * */ + using inner_t = rvar_t; + + explicit fabs_expr(const expression &arg_expr, const RealType &v) + : abstract_unary_expression>(arg_expr, v){}; + + inner_t evaluate() const + { + BOOST_MATH_STD_USING + return fabs(this->arg.evaluate()); + } + static const inner_t derivative(const inner_t &argv, + const inner_t & /*v*/, + const RealType & /*constant*/) + { + return argv > 0.0 ? inner_t{static_cast(1.0)} + : inner_t{static_cast(-1.0)}; + } +}; + +template +struct ceil_expr : public abstract_unary_expression> +{ + /** @brief ceil(1.11) = 2.0 + * + * d/dx ceil(x) = 0.0 for all x + * + * we avoid problematic points at x = 1,2,3... + * as with optimization its most likely intented + * this function's derivative is 0.0; + * */ + using inner_t = rvar_t; + + explicit ceil_expr(const expression &arg_expr, const RealType &v) + : abstract_unary_expression>(arg_expr, v){}; + + inner_t evaluate() const + { + BOOST_MATH_STD_USING + return ceil(this->arg.evaluate()); + } + static const inner_t derivative(const inner_t & /*argv*/, + const inner_t & /*v*/, + const RealType & /*constant*/) + { + return inner_t{0.0}; + } +}; + +template +struct floor_expr : public abstract_unary_expression> +{ + /** @brief floor(1.11) = 1.0, floor(-1.11) = 2 + * + * d/dx floor(x) = 0.0 for all x + * + * we avoid problematic points at x = 1,2,3... + * as with optimization its most likely intented + * this function's derivative is 0.0; + * */ + using inner_t = rvar_t; + + explicit floor_expr(const expression &arg_expr, + const RealType &v) + : abstract_unary_expression>(arg_expr, v){}; + + inner_t evaluate() const + { + BOOST_MATH_STD_USING + return floor(this->arg.evaluate()); + } + static const inner_t derivative(const inner_t & /*argv*/, + const inner_t & /*v*/, + const RealType & /*constant*/) + { + return inner_t{0.0}; + } +}; + +template +struct trunc_expr : public abstract_unary_expression> +{ + /** @brief trunc(1.11) = 1.0, trunc(-1.11) = -1.0 + * + * d/dx trunc(x) = 0.0 for all x + * + * we avoid problematic points at x = 1,2,3... + * as with optimization its most likely intented + * this function's derivative is 0.0; + * */ + using inner_t = rvar_t; + + explicit trunc_expr(const expression &arg_expr, + const RealType &v) + : abstract_unary_expression>(arg_expr, v){}; + + inner_t evaluate() const + { + BOOST_MATH_STD_USING + return trunc(this->arg.evaluate()); + } + static const inner_t derivative(const inner_t & /*argv*/, + const inner_t & /*v*/, + const RealType & /*constant*/) + { + return inner_t{0.0}; + } +}; + +template +struct exp_expr : public abstract_unary_expression> +{ + /** @brief exp(x) + * + * d/dx exp(x) = exp(x) + * + * */ + using inner_t = rvar_t; + + explicit exp_expr(const expression &arg_expr, const RealType &v) + : abstract_unary_expression>(arg_expr, v){}; + + inner_t evaluate() const + { + BOOST_MATH_STD_USING + return exp(this->arg.evaluate()); + } + static const inner_t derivative(const inner_t &argv, + const inner_t & /*v*/, + const RealType & /*constant*/) + { + BOOST_MATH_STD_USING + return exp(argv); + } +}; + +template +struct pow_expr + : public abstract_binary_expression> +{ + /** @brief pow(x,y) + * d/dx pow(x,y) = y pow (x, y-1) + * d/dy pow(x,y) = pow(x,y) log(x) + * */ + using inner_t = rvar_t; + // Explicitly define constructor to forward to base class + explicit pow_expr(const expression &left_hand_expr, + const expression &right_hand_expr) + : abstract_binary_expression>( + left_hand_expr, right_hand_expr) + {} + + inner_t evaluate() const + { + BOOST_MATH_STD_USING + return pow(this->lhs.evaluate(), this->rhs.evaluate()); + }; + static const inner_t left_derivative(const inner_t &l, const inner_t &r, const inner_t & /*v*/) + { + BOOST_MATH_STD_USING + return r * pow(l, r - static_cast(1.0)); + }; + static const inner_t right_derivative(const inner_t &l, const inner_t &r, const inner_t & /*v*/) + { + BOOST_MATH_STD_USING + return pow(l, r) * log(l); + }; +}; + +template +struct expr_pow_float_expr + : public abstract_unary_expression> +{ + /** @brief pow(rvar,float) + */ + using inner_t = rvar_t; + + explicit expr_pow_float_expr(const expression &arg_expr, + const RealType &v) + : abstract_unary_expression>(arg_expr, + v){}; + + inner_t evaluate() const + { + BOOST_MATH_STD_USING + return pow(this->arg.evaluate(), this->constant); + } + static const inner_t derivative(const inner_t &argv, const inner_t & /*v*/, const RealType &constant) + { + BOOST_MATH_STD_USING + return inner_t{constant} * pow(argv, inner_t{constant - 1}); + } +}; + +template +struct float_pow_expr_expr + : public abstract_unary_expression> +{ + /** @brief pow(float, rvar) + * */ + using inner_t = rvar_t; + + explicit float_pow_expr_expr(const expression &arg_expr, + const RealType &v) + : abstract_unary_expression>(arg_expr, + v){}; + + inner_t evaluate() const + { + BOOST_MATH_STD_USING + return pow(this->constant, this->arg.evaluate()); + } + static const inner_t derivative(const inner_t &argv, const inner_t & /*v*/, const RealType &constant) + { + BOOST_MATH_STD_USING + return pow(constant, argv) * log(constant); + } +}; + +template +struct sqrt_expr : public abstract_unary_expression> +{ + /** @brief sqrt(x) + * d/dx sqrt(x) = 1/(2 sqrt(x)) + * */ + using inner_t = rvar_t; + + explicit sqrt_expr(const expression &arg_expr, const RealType &v) + : abstract_unary_expression>(arg_expr, v){}; + + inner_t evaluate() const + { + BOOST_MATH_STD_USING + return sqrt(this->arg.evaluate()); + } + static const inner_t derivative(const inner_t &argv, + const inner_t & /*v*/, + const RealType & /*constant*/) + { + BOOST_MATH_STD_USING + return static_cast(1.0) / (static_cast(2.0) * sqrt(argv)); + } +}; + +template +struct log_expr : public abstract_unary_expression> +{ + /** @brief log(x) + * d/dx log(x) = 1/x + * */ + using inner_t = rvar_t; + + explicit log_expr(const expression &arg_expr, const RealType &v) + : abstract_unary_expression>(arg_expr, v){}; + + inner_t evaluate() const + { + BOOST_MATH_STD_USING + return log(this->arg.evaluate()); + } + static const inner_t derivative(const inner_t &argv, + const inner_t & /*v*/, + const RealType & /*constant*/) + { + return static_cast(1.0) / argv; + } +}; + +template +struct cos_expr : public abstract_unary_expression> +{ + /** @brief cos(x) + * d/dx cos(x) = -sin(x) + * */ + using inner_t = rvar_t; + + explicit cos_expr(const expression &arg_expr, const RealType &v) + : abstract_unary_expression>(arg_expr, v){}; + + inner_t evaluate() const + { + BOOST_MATH_STD_USING + return cos(this->arg.evaluate()); + } + static const inner_t derivative(const inner_t &argv, + const inner_t & /*v*/, + const RealType & /*constant*/) + { + BOOST_MATH_STD_USING + return -sin(argv); + } +}; + +template +struct sin_expr : public abstract_unary_expression> +{ + /** @brief sin(x) + * d/dx sin(x) = cos(x) + * */ + using arg_type = ARG; + using value_type = RealType; + using inner_t = rvar_t; + + explicit sin_expr(const expression &arg_expr, const RealType &v) + : abstract_unary_expression>(arg_expr, v){}; + + inner_t evaluate() const + { + BOOST_MATH_STD_USING + return sin(this->arg.evaluate()); + } + static const inner_t derivative(const inner_t &argv, + const inner_t & /*v*/, + const RealType & /*constant*/) + { + BOOST_MATH_STD_USING + return cos(argv); + } +}; + +template +struct tan_expr : public abstract_unary_expression> +{ + /** @brief tan(x) + * d/dx tan(x) = 1/cos^2(x) + * */ + using inner_t = rvar_t; + + explicit tan_expr(const expression &arg_expr, const RealType &v) + : abstract_unary_expression>(arg_expr, v){}; + + inner_t evaluate() const + { + BOOST_MATH_STD_USING + return tan(this->arg.evaluate()); + } + static const inner_t derivative(const inner_t &argv, + const inner_t & /*v*/, + const RealType & /*constant*/) + { + BOOST_MATH_STD_USING + return static_cast(1.0) / (cos(argv) * cos(argv)); + } +}; + +template +struct acos_expr : public abstract_unary_expression> +{ + /** @brief acos(x) + * d/dx acos(x) = -1/sqrt(1-x^2) + * */ + using inner_t = rvar_t; + + explicit acos_expr(const expression &arg_expr, const RealType &v) + : abstract_unary_expression>(arg_expr, v){}; + + inner_t evaluate() const + { + BOOST_MATH_STD_USING + return acos(this->arg.evaluate()); + } + static const inner_t derivative(const inner_t &argv, + const inner_t & /*v*/, + const RealType & /*constant*/) + { + BOOST_MATH_STD_USING + return static_cast(-1.0) / sqrt(static_cast(1.0) - argv * argv); + } +}; + +template +struct asin_expr : public abstract_unary_expression> +{ + /** @brief asin(x) + * d/dx asin = 1/sqrt(1-x^2) + * */ + using arg_type = ARG; + using value_type = RealType; + using inner_t = rvar_t; + + explicit asin_expr(const expression &arg_expr, const RealType &v) + : abstract_unary_expression>(arg_expr, v){}; + + inner_t evaluate() const + { + BOOST_MATH_STD_USING + return asin(this->arg.evaluate()); + } + static const inner_t derivative(const inner_t &argv, + const inner_t & /*v*/, + const RealType & /*constant*/) + { + BOOST_MATH_STD_USING + return static_cast(1.0) / sqrt(static_cast(1.0) - argv * argv); + } +}; + +template +struct atan_expr : public abstract_unary_expression> +{ + /** @brief atan(x) + * d/dx atan(x) = 1/x^2+1 + * */ + using inner_t = rvar_t; + + explicit atan_expr(const expression &arg_expr, const RealType &v) + : abstract_unary_expression>(arg_expr, v){}; + + inner_t evaluate() const + { + BOOST_MATH_STD_USING + return atan(this->arg.evaluate()); + } + static const inner_t derivative(const inner_t &argv, + const inner_t & /*v*/, + const RealType & /*constant*/) + { + BOOST_MATH_STD_USING + return static_cast(1.0) / (static_cast(1.0) + argv * argv); + } +}; +template +struct atan2_expr + : public abstract_binary_expression> +{ + /** @brief atan2(x,y) + * */ + using inner_t = rvar_t; + // Explicitly define constructor to forward to base class + explicit atan2_expr(const expression &left_hand_expr, + const expression &right_hand_expr) + : abstract_binary_expression>( + left_hand_expr, right_hand_expr) + {} + + inner_t evaluate() const + { + BOOST_MATH_STD_USING + return atan2(this->lhs.evaluate(), this->rhs.evaluate()); + }; + static const inner_t left_derivative(const inner_t &l, const inner_t &r, const inner_t & /*v*/) + { + return r / (l * l + r * r); + }; + static const inner_t right_derivative(const inner_t &l, const inner_t &r, const inner_t & /*v*/) + { + return -l / (l * l + r * r); + }; +}; + +template +struct atan2_left_float_expr + : public abstract_unary_expression> +{ + /** @brief atan2(float,rvar) + * */ + using inner_t = rvar_t; + + explicit atan2_left_float_expr(const expression &arg_expr, const RealType &v) + : abstract_unary_expression>(arg_expr, + v){}; + + inner_t evaluate() const + { + BOOST_MATH_STD_USING + return atan2(this->constant, this->arg.evaluate()); + } + static const inner_t derivative(const inner_t &argv, const inner_t & /*v*/, const RealType &constant) + { + return -constant / (constant * constant + argv * argv); + } +}; + +template +struct atan2_right_float_expr + : public abstract_unary_expression> +{ + /** @brief atan2(rvar,float) + * */ + using inner_t = rvar_t; + + explicit atan2_right_float_expr(const expression &arg_expr, const RealType &v) + : abstract_unary_expression>(arg_expr, + v){}; + + inner_t evaluate() const + { + BOOST_MATH_STD_USING + return atan2(this->arg.evaluate(), this->constant); + } + static const inner_t derivative(const inner_t &argv, const inner_t & /*v*/, const RealType &constant) + { + return constant / (constant * constant + argv * argv); + } +}; + +template +struct round_expr : public abstract_unary_expression> +{ + /** @brief round(x) + * d/dx round = 0 + * */ + using inner_t = rvar_t; + + explicit round_expr(const expression &arg_expr, const RealType &v) + : abstract_unary_expression>(arg_expr, v){}; + + inner_t evaluate() const + { + BOOST_MATH_STD_USING + return round(this->arg.evaluate()); + } + static const inner_t derivative(const inner_t & /*argv*/, + const inner_t & /*v*/, + const RealType & /*constant*/) + { + return inner_t{0.0}; + } +}; + +template +struct sinh_expr : public abstract_unary_expression> +{ + /** @brief sinh(x) + * d/dx sinh(x) = cosh + * */ + using inner_t = rvar_t; + + explicit sinh_expr(const expression &arg_expr, const RealType &v) + : abstract_unary_expression>(arg_expr, v){}; + + inner_t evaluate() const + { + BOOST_MATH_STD_USING + return sinh(this->arg.evaluate()); + } + static const inner_t derivative(const inner_t &argv, + const inner_t & /*v*/, + const RealType & /*constant*/) + { + BOOST_MATH_STD_USING + return cosh(argv); + } +}; + +template +struct cosh_expr : public abstract_unary_expression> +{ + /** @brief cosh(x) + * d/dx cosh(x) = sinh + * */ + using inner_t = rvar_t; + + explicit cosh_expr(const expression &arg_expr, const RealType &v) + : abstract_unary_expression>(arg_expr, v){}; + + inner_t evaluate() const + { + BOOST_MATH_STD_USING + return cosh(this->arg.evaluate()); + } + static const inner_t derivative(const inner_t &argv, + const inner_t & /*v*/, + const RealType & /*constant*/) + { + BOOST_MATH_STD_USING + return sinh(argv); + } +}; +template +struct tanh_expr : public abstract_unary_expression> +{ + /** @brief tanh(x) + * d/dx tanh(x) = 1/cosh^2 + * */ + using inner_t = rvar_t; + + explicit tanh_expr(const expression &arg_expr, const RealType &v) + : abstract_unary_expression>(arg_expr, v){}; + + inner_t evaluate() const + { + BOOST_MATH_STD_USING + return tanh(this->arg.evaluate()); + } + static const inner_t derivative(const inner_t &argv, + const inner_t & /*v*/, + const RealType & /*constant*/) + { + BOOST_MATH_STD_USING + return static_cast(1.0) / (cosh(argv) * cosh(argv)); + } +}; + +template +struct log10_expr : public abstract_unary_expression> +{ + /** @brief log10(x) + * d/dx log10(x) = 1/(x * log(10)) + * */ + using inner_t = rvar_t; + + explicit log10_expr(const expression &arg_expr, const RealType &v) + : abstract_unary_expression>(arg_expr, v){}; + + inner_t evaluate() const + { + BOOST_MATH_STD_USING + return log10(this->arg.evaluate()); + } + static const inner_t derivative(const inner_t &argv, + const inner_t & /*v*/, + const RealType & /*constant*/) + { + BOOST_MATH_STD_USING + return static_cast(1.0) / (argv * log(static_cast(10.0))); + } +}; + +template +struct acosh_expr : public abstract_unary_expression> +{ + /** @brief acosh(x) + * d/dx acosh(x) = 1/(sqrt(x-1)sqrt(x+1) + * */ + using inner_t = rvar_t; + + explicit acosh_expr(const expression &arg_expr, const RealType &v) + : abstract_unary_expression>(arg_expr, v){}; + + inner_t evaluate() const + { + BOOST_MATH_STD_USING + return acosh(this->arg.evaluate()); + } + static const inner_t derivative(const inner_t &argv, + const inner_t & /*v*/, + const RealType & /*constant*/) + { + BOOST_MATH_STD_USING + return static_cast(1.0) + / (sqrt(argv - static_cast(1.0)) * sqrt(argv + static_cast(1.0))); + } +}; + +template +struct asinh_expr : public abstract_unary_expression> +{ + /** @brief asinh(x) + * d/dx asinh(x) = 1/(sqrt(1+x^2)) + * */ + using inner_t = rvar_t; + + explicit asinh_expr(const expression &arg_expr, const RealType &v) + : abstract_unary_expression>(arg_expr, v){}; + + inner_t evaluate() const + { + BOOST_MATH_STD_USING + return asinh(this->arg.evaluate()); + } + static const inner_t derivative(const inner_t &argv, + const inner_t & /*v*/, + const RealType & /*constant*/) + { + BOOST_MATH_STD_USING + return static_cast(1.0) / (sqrt(static_cast(1.0) + argv * argv)); + } +}; + +template +struct atanh_expr : public abstract_unary_expression> +{ + /** @brief atanh(x) + * d/dx atanh(x) = 1/(1-x^2) + * */ + using inner_t = rvar_t; + + explicit atanh_expr(const expression &arg_expr, const RealType &v) + : abstract_unary_expression>(arg_expr, v){}; + + inner_t evaluate() const + { + BOOST_MATH_STD_USING + return atanh(this->arg.evaluate()); + } + static const inner_t derivative(const inner_t &argv, + const inner_t & /*v*/, + const RealType & /*constant*/) + { + BOOST_MATH_STD_USING + return static_cast(1.0) / (static_cast(1.0) - argv * argv); + } +}; +template +struct fmod_expr + : public abstract_binary_expression> +{ + /** @brief + * */ + using inner_t = rvar_t; + // Explicitly define constructor to forward to base class + explicit fmod_expr(const expression &left_hand_expr, + const expression &right_hand_expr) + : abstract_binary_expression>( + left_hand_expr, right_hand_expr) + {} + + inner_t evaluate() const + { + BOOST_MATH_STD_USING + return fmod(this->lhs.evaluate(), this->rhs.evaluate()); + }; + static const inner_t left_derivative(const inner_t & /*l*/, + const inner_t & /*r*/, + const inner_t & /*v*/) + { + return inner_t{1.0}; + }; + static const inner_t right_derivative(const inner_t &l, const inner_t &r, const inner_t & /*v*/) + { + BOOST_MATH_STD_USING + return static_cast(-1.0) * trunc(l / r); + }; +}; + +template +struct fmod_left_float_expr + : public abstract_unary_expression> +{ + /** @brief + * */ + using inner_t = rvar_t; + + explicit fmod_left_float_expr(const expression &arg_expr, const RealType &v) + : abstract_unary_expression>(arg_expr, + v){}; + + inner_t evaluate() const + { + BOOST_MATH_STD_USING + return fmod(this->constant, this->arg.evaluate()); + } + static const inner_t derivative(const inner_t &argv, const inner_t & /*v*/, const RealType &constant) + { + BOOST_MATH_STD_USING + return static_cast(-1.0) * trunc(constant / argv); + } +}; + +template +struct fmod_right_float_expr + : public abstract_unary_expression> +{ + /** @brief + * */ + using inner_t = rvar_t; + + explicit fmod_right_float_expr(const expression &arg_expr, + const RealType &v) + : abstract_unary_expression>(arg_expr, + v){}; + + inner_t evaluate() const + { + BOOST_MATH_STD_USING + return fmod(this->arg.evaluate(), this->constant); + } + static const inner_t derivative(const inner_t & /*argv*/, + const inner_t & /*v*/, + const RealType & /*constant*/) + { + return inner_t{1.0}; + } +}; +/**************************************************************************************************/ + +} // namespace reverse_mode +} // namespace differentiation +} // namespace math +} // namespace boost +#endif diff --git a/include/boost/math/differentiation/detail/reverse_mode_autodiff_stl_no_et.hpp b/include/boost/math/differentiation/detail/reverse_mode_autodiff_stl_no_et.hpp new file mode 100644 index 0000000000..15498a1279 --- /dev/null +++ b/include/boost/math/differentiation/detail/reverse_mode_autodiff_stl_no_et.hpp @@ -0,0 +1,266 @@ +// 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 REVERSE_MODE_AUTODIFF_STL_NO_ET_HPP +#define REVERSE_MODE_AUTODIFF_STL_NO_ET_HPP + +#include +namespace boost { +namespace math { +namespace differentiation { +namespace reverse_mode { + +template +rvar fabs(const expression &arg) +{ + return fabs_expr(arg, static_cast(0.0)); +} +template +rvar abs(const expression &arg) +{ + return fabs(arg); +} +template +rvar ceil(const expression &arg) +{ + return ceil_expr(arg, static_cast(0.0)); +} +template +rvar floor(const expression &arg) +{ + return floor_expr(arg, static_cast(0.0)); +} + +template +rvar exp(const expression &arg) +{ + return exp_expr(arg, static_cast(0.0)); +} + +template +rvar pow(const expression &lhs, + const expression &rhs) +{ + return pow_expr(lhs, rhs); +} + +template::value>::type> +rvar pow(const expression &arg, + const RealType2 &v) +{ + return expr_pow_float_expr(arg, static_cast(v)); +}; + +template +rvar pow(const RealType &v, + const expression &arg) +{ + return float_pow_expr_expr(arg, v); +}; + +template +rvar log(const expression &arg) +{ + return log_expr(arg, static_cast(0.0)); +}; + +template +rvar sqrt(const expression &arg) +{ + return sqrt_expr(arg, static_cast(0.0)); +}; + +template +rvar frexp(const expression &arg, int *i) +{ + BOOST_MATH_STD_USING + frexp(arg.evaluate(), i); + return arg / pow(static_cast(2.0), *i); +} + +template +auto ldexp(const expression &arg, const int &i) +{ + BOOST_MATH_STD_USING + return arg * pow(static_cast(2.0), i); +} + +template +rvar cos(const expression &arg) +{ + return cos_expr(arg, static_cast(0.0)); +}; + +template +rvar sin(const expression &arg) +{ + return sin_expr(arg, static_cast(0.0)); +}; + +template +rvar tan(const expression &arg) +{ + return tan_expr(arg, static_cast(0.0)); +}; + +template +rvar acos(const expression &arg) +{ + return acos_expr(arg, static_cast(0.0)); +}; + +template +rvar asin(const expression &arg) +{ + return asin_expr(arg, static_cast(0.0)); +}; + +template +rvar atan(const expression &arg) +{ + return atan_expr(arg, static_cast(0.0)); +}; + +template +rvar atan2(const expression &lhs, + const expression &rhs) +{ + return atan2_expr(lhs, rhs); +} + +template +rvar atan2(const expression &arg, + const RealType &v) +{ + return atan2_right_float_expr(arg, v); +}; + +template +rvar atan2(const RealType &v, + const expression &arg) +{ + return atan2_left_float_expr(arg, v); +}; + +template +rvar trunc(const expression &arg) +{ + return trunc_expr(arg, static_cast(0.0)); +} + +template +auto fmod(const expression &lhs, + const expression &rhs) +{ + return fmod_expr(lhs, rhs); +} + +template +auto fmod(const expression &lhs, const RealType rhs) +{ + return fmod_right_float_expr(lhs, rhs); +} + +template +auto fmod(const RealType lhs, const expression &rhs) +{ + return fmod_left_float_expr(rhs, lhs); +} + +template +rvar round(const expression &arg) +{ + return round_expr(arg, static_cast(0.0)); +} + +template +int iround(const expression &arg) +{ + rvar tmp = arg.evaluate(); + return iround(tmp.item()); +} +template +long lround(const expression &arg) +{ + BOOST_MATH_STD_USING + rvar tmp = arg.evaluate(); + return lround(tmp.item()); +} + +template +long long llround(const expression &arg) +{ + rvar tmp = arg.evaluate(); + return llround(tmp.item()); +} + +template +int itrunc(const expression &arg) +{ + rvar tmp = arg.evaluate(); + return itrunc(tmp.item()); +} + +template +long ltrunc(const expression &arg) +{ + rvar tmp = arg.evaluate(); + return ltrunc(tmp.item()); +} + +template +long long lltrunc(const expression &arg) +{ + rvar tmp = arg.evaluate(); + return lltrunc(tmp.item()); +} + +template +rvar sinh(const expression &arg) +{ + return sinh_expr(arg, static_cast(0.0)); +} + +template +rvar cosh(const expression &arg) +{ + return cosh_expr(arg, static_cast(0.0)); +} + +template +rvar tanh(const expression &arg) +{ + return tanh_expr(arg, static_cast(0.0)); +} + +template +rvar log10(const expression &arg) +{ + return log10_expr(arg, static_cast(0.0)); +} +template +rvar asinh(const expression &arg) +{ + return asinh_expr(arg, static_cast(0.0)); +} +template +rvar acosh(const expression &arg) +{ + return acosh_expr(arg, static_cast(0.0)); +} +template +rvar atanh(const expression &arg) +{ + return atanh_expr(arg, static_cast(0.0)); +} +} // namespace reverse_mode +} // namespace differentiation +} // namespace math +} // namespace boost + +#endif diff --git a/include/boost/math/differentiation/detail/reverse_mode_autodiff_utilities.hpp b/include/boost/math/differentiation/detail/reverse_mode_autodiff_utilities.hpp new file mode 100644 index 0000000000..6ec34ef3cd --- /dev/null +++ b/include/boost/math/differentiation/detail/reverse_mode_autodiff_utilities.hpp @@ -0,0 +1,51 @@ +// 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 REVERSE_MODE_AUTODIFF_UTILITIES_HPP +#define REVERSE_MODE_AUTODIFF_UTILITIES_HPP + +#include + +namespace boost { +namespace math { +namespace differentiation { +namespace reverse_mode { +namespace detail { + +template +struct if_functional_dispatch_impl; + +template<> +struct if_functional_dispatch_impl +{ + template + static decltype(auto) call(F1&& f1, F2&&, Args&&... args) + { + return std::forward(f1)(std::forward(args)...); + } +}; + +template<> +struct if_functional_dispatch_impl +{ + template + static decltype(auto) call(F1&&, F2&& f2, Args&&... args) + { + return std::forward(f2)(std::forward(args)...); + } +}; + +template +decltype(auto) if_functional_dispatch(F1&& f1, F2&& f2, Args&&... args) +{ + return if_functional_dispatch_impl::call(std::forward(f1), + std::forward(f2), + std::forward(args)...); +} +} // namespace detail +} // namespace reverse_mode +} // namespace differentiation +} // namespace math +} // namespace boost +#endif // REVERSE_MODE_AUTODIFF_UTILITIES_HPP diff --git a/include/boost/math/distributions/inverse_chi_squared.hpp b/include/boost/math/distributions/inverse_chi_squared.hpp index 1a3c680d23..ca7e7f87e7 100644 --- a/include/boost/math/distributions/inverse_chi_squared.hpp +++ b/include/boost/math/distributions/inverse_chi_squared.hpp @@ -289,7 +289,7 @@ BOOST_MATH_GPU_ENABLED inline RealType mean(const inverse_chi_squared_distributi if(df <= 2) return policies::raise_domain_error( function, - "inverse Chi-Squared distribution only has a mode for degrees of freedom > 2, but got degrees of freedom = %1%.", + "inverse Chi-Squared distribution only has a mean for degrees of freedom > 2, but got degrees of freedom = %1%.", df, Policy()); return (df * scale) / (df - 2); } // mean diff --git a/include/boost/math/distributions/logistic.hpp b/include/boost/math/distributions/logistic.hpp index 56dc6e9f2f..bc2dd1ff5a 100644 --- a/include/boost/math/distributions/logistic.hpp +++ b/include/boost/math/distributions/logistic.hpp @@ -19,6 +19,8 @@ #include #include #include +#include +#include namespace boost { namespace math { @@ -144,13 +146,10 @@ namespace boost { namespace math { { return result; } - BOOST_MATH_STD_USING - RealType power = (location - x) / scale; - if(power > tools::log_max_value()) - return 0; - if(power < -tools::log_max_value()) - return 1; - return 1 / (1 + exp(power)); + + using promoted_real_type = typename policies::evaluation::type; + promoted_real_type power = (static_cast(x) - static_cast(location)) / static_cast(scale); + return logistic_sigmoid(power, policies::make_forwarding_policy_t()); } template @@ -159,7 +158,7 @@ namespace boost { namespace math { RealType scale = dist.scale(); RealType location = dist.location(); RealType result = 0; // of checks. - constexpr auto function = "boost::math::cdf(const logistic_distribution<%1%>&, %1%)"; + constexpr auto function = "boost::math::logcdf(const logistic_distribution<%1%>&, %1%)"; if(false == detail::check_scale(function, scale, &result, Policy())) { return result; @@ -199,7 +198,6 @@ namespace boost { namespace math { template BOOST_MATH_GPU_ENABLED inline RealType quantile(const logistic_distribution& dist, const RealType& p) { - BOOST_MATH_STD_USING RealType location = dist.location(); RealType scale = dist.scale(); @@ -221,21 +219,13 @@ namespace boost { namespace math { { return policies::raise_overflow_error(function,"probability argument is 1, must be >0 and <1",Policy()); } - //Expressions to try - //return location+scale*log(p/(1-p)); - //return location+scale*log1p((2*p-1)/(1-p)); - - //return location - scale*log( (1-p)/p); - //return location - scale*log1p((1-2*p)/p); - //return -scale*log(1/p-1) + location; - return location - scale * log((1 - p) / p); + return location + scale * logit(p, Policy()); } // RealType quantile(const logistic_distribution& dist, const RealType& p) template BOOST_MATH_GPU_ENABLED inline RealType cdf(const complemented2_type, RealType>& c) { - BOOST_MATH_STD_USING RealType location = c.dist.location(); RealType scale = c.dist.scale(); RealType x = c.param; @@ -259,12 +249,10 @@ namespace boost { namespace math { { return result; } - RealType power = (x - location) / scale; - if(power > tools::log_max_value()) - return 0; - if(power < -tools::log_max_value()) - return 1; - return 1 / (1 + exp(power)); + + using promoted_real_type = typename policies::evaluation::type; + promoted_real_type power = (static_cast(location) - static_cast(x)) / static_cast(scale); + return logistic_sigmoid(power, policies::make_forwarding_policy_t()); } template @@ -274,7 +262,7 @@ namespace boost { namespace math { RealType location = c.dist.location(); RealType scale = c.dist.scale(); RealType x = c.param; - constexpr auto function = "boost::math::cdf(const complement(logistic_distribution<%1%>&), %1%)"; + constexpr auto function = "boost::math::logcdf(const complement(logistic_distribution<%1%>&), %1%)"; RealType result = 0; if(false == detail::check_scale(function, scale, &result, Policy())) @@ -306,7 +294,6 @@ namespace boost { namespace math { template BOOST_MATH_GPU_ENABLED inline RealType quantile(const complemented2_type, RealType>& c) { - BOOST_MATH_STD_USING RealType scale = c.dist.scale(); RealType location = c.dist.location(); constexpr auto function = "boost::math::quantile(const complement(logistic_distribution<%1%>&), %1%)"; @@ -328,15 +315,8 @@ namespace boost { namespace math { { return policies::raise_overflow_error(function,"probability argument is 0, but must be >0 and <1",Policy()); } - //Expressions to try - //return location+scale*log((1-q)/q); - return location + scale * log((1 - q) / q); - - //return location-scale*log(q/(1-q)); - //return location-scale*log1p((2*q-1)/(1-q)); - //return location+scale*log(1/q-1); - //return location+scale*log1p(1/q-2); + return location - scale * logit(q, Policy()); } template diff --git a/include/boost/math/distributions/non_central_beta.hpp b/include/boost/math/distributions/non_central_beta.hpp index f311f77737..ea0c5a168e 100644 --- a/include/boost/math/distributions/non_central_beta.hpp +++ b/include/boost/math/distributions/non_central_beta.hpp @@ -112,11 +112,15 @@ namespace boost last_term = term; } last_term = 0; + T betaf_lim = betaf * tools::epsilon() * 4; for(auto i = k + 1; ; ++i) { poisf *= l2 / i; xtermf *= (x * (a + b + i - 2)) / (a + i - 1); betaf -= xtermf; + + if (betaf < betaf_lim) + break; // nothing but garbage bits in betaf!! T term = poisf * betaf; sum += term; diff --git a/include/boost/math/distributions/non_central_t.hpp b/include/boost/math/distributions/non_central_t.hpp index a6c988d758..85581a4c80 100644 --- a/include/boost/math/distributions/non_central_t.hpp +++ b/include/boost/math/distributions/non_central_t.hpp @@ -100,11 +100,15 @@ namespace boost ++count; } last_term = 0; + T betaf_lim = betaf * tools::epsilon() * 4; for(auto i = k + 1; ; ++i) { poisf *= d2 / (i + 0.5f); xtermf *= (x * (v / 2 + i - 1)) / (i); betaf -= xtermf; + if (betaf < betaf_lim) + break; // Nothing but garbage left in betaf now!! + T term = poisf * betaf; sum += term; if((fabs(last_term) >= fabs(term)) && (fabs(term/sum) < errtol)) diff --git a/include/boost/math/interpolators/cubic_hermite.hpp b/include/boost/math/interpolators/cubic_hermite.hpp index 48346ab1ec..04d1fa787f 100644 --- a/include/boost/math/interpolators/cubic_hermite.hpp +++ b/include/boost/math/interpolators/cubic_hermite.hpp @@ -8,6 +8,7 @@ #define BOOST_MATH_INTERPOLATORS_CUBIC_HERMITE_HPP #include #include +#include namespace boost { namespace math { @@ -41,7 +42,7 @@ class cubic_hermite { impl_->push_back(x, y, dydx); } - int64_t bytes() const + std::int64_t bytes() const { return impl_->bytes() + sizeof(impl_); } @@ -80,7 +81,7 @@ class cardinal_cubic_hermite { return os; } - int64_t bytes() const + std::int64_t bytes() const { return impl_->bytes() + sizeof(impl_); } @@ -121,7 +122,7 @@ class cardinal_cubic_hermite_aos { return os; } - int64_t bytes() const + std::int64_t bytes() const { return impl_->bytes() + sizeof(impl_); } diff --git a/include/boost/math/interpolators/detail/barycentric_rational_detail.hpp b/include/boost/math/interpolators/detail/barycentric_rational_detail.hpp index a363e1861b..004bf3f9b5 100644 --- a/include/boost/math/interpolators/detail/barycentric_rational_detail.hpp +++ b/include/boost/math/interpolators/detail/barycentric_rational_detail.hpp @@ -12,6 +12,7 @@ #include // for std::move #include // for std::is_sorted #include +#include #include #include @@ -100,22 +101,22 @@ template void barycentric_rational_imp::calculate_weights(size_t approximation_order) { using std::abs; - int64_t n = m_x.size(); + std::int64_t n = m_x.size(); m_w.resize(n, 0); - for(int64_t k = 0; k < n; ++k) + for(std::int64_t k = 0; k < n; ++k) { - int64_t i_min = (std::max)(k - static_cast(approximation_order), static_cast(0)); - int64_t i_max = k; + std::int64_t i_min = (std::max)(k - static_cast(approximation_order), static_cast(0)); + std::int64_t i_max = k; if (k >= n - (std::ptrdiff_t)approximation_order) { i_max = n - approximation_order - 1; } - for(int64_t i = i_min; i <= i_max; ++i) + for(std::int64_t i = i_min; i <= i_max; ++i) { Real inv_product = 1; - int64_t j_max = (std::min)(static_cast(i + approximation_order), static_cast(n - 1)); - for(int64_t j = i; j <= j_max; ++j) + std::int64_t j_max = (std::min)(static_cast(i + approximation_order), static_cast(n - 1)); + for(std::int64_t j = i; j <= j_max; ++j) { if (j == k) { diff --git a/include/boost/math/interpolators/detail/cardinal_quintic_b_spline_detail.hpp b/include/boost/math/interpolators/detail/cardinal_quintic_b_spline_detail.hpp index f189e79dd8..fcaa33661e 100644 --- a/include/boost/math/interpolators/detail/cardinal_quintic_b_spline_detail.hpp +++ b/include/boost/math/interpolators/detail/cardinal_quintic_b_spline_detail.hpp @@ -7,6 +7,7 @@ #ifndef BOOST_MATH_INTERPOLATORS_CARDINAL_QUINTIC_B_SPLINE_DETAIL_HPP #define BOOST_MATH_INTERPOLATORS_CARDINAL_QUINTIC_B_SPLINE_DETAIL_HPP #include +#include #include #include #include @@ -157,7 +158,7 @@ class cardinal_quintic_b_spline_detail m_alpha[n+3] = rhs[n+3]/diagonal[n+3]; m_alpha[n+2] = rhs[n+2] - first_superdiagonal[n+2]*m_alpha[n+3]; - for (int64_t i = int64_t(n+1); i >= 0; --i) { + for (std::int64_t i = std::int64_t(n+1); i >= 0; --i) { m_alpha[i] = rhs[i] - first_superdiagonal[i]*m_alpha[i+1] - second_superdiagonal[i]*m_alpha[i+2]; } @@ -176,10 +177,10 @@ class cardinal_quintic_b_spline_detail Real x = (t-m_t0)*m_inv_h; // Support of B_5 is [-3, 3]. So -3 < x - j + 2 < 3, so x-1 < j < x+5. // TODO: Zero pad m_alpha so that only the domain check is necessary. - int64_t j_min = (std::max)(int64_t(0), int64_t(ceil(x-1))); - int64_t j_max = (std::min)(int64_t(m_alpha.size() - 1), int64_t(floor(x+5)) ); + std::int64_t j_min = (std::max)(std::int64_t(0), std::int64_t(ceil(x-1))); + std::int64_t j_max = (std::min)(std::int64_t(m_alpha.size() - 1), std::int64_t(floor(x+5)) ); Real s = 0; - for (int64_t j = j_min; j <= j_max; ++j) { + for (std::int64_t j = j_min; j <= j_max; ++j) { // TODO: Use Cox 1972 to generate all integer translates of B5 simultaneously. s += m_alpha[j]*cardinal_b_spline<5, Real>(x - j + 2); } @@ -196,10 +197,10 @@ class cardinal_quintic_b_spline_detail } Real x = (t-m_t0)*m_inv_h; // Support of B_5 is [-3, 3]. So -3 < x - j + 2 < 3, so x-1 < j < x+5 - int64_t j_min = (std::max)(int64_t(0), int64_t(ceil(x-1))); - int64_t j_max = (std::min)(int64_t(m_alpha.size() - 1), int64_t(floor(x+5)) ); + std::int64_t j_min = (std::max)(std::int64_t(0), std::int64_t(ceil(x-1))); + std::int64_t j_max = (std::min)(std::int64_t(m_alpha.size() - 1), std::int64_t(floor(x+5)) ); Real s = 0; - for (int64_t j = j_min; j <= j_max; ++j) { + for (std::int64_t j = j_min; j <= j_max; ++j) { s += m_alpha[j]*cardinal_b_spline_prime<5, Real>(x - j + 2); } return s*m_inv_h; @@ -216,10 +217,10 @@ class cardinal_quintic_b_spline_detail } Real x = (t-m_t0)*m_inv_h; // Support of B_5 is [-3, 3]. So -3 < x - j + 2 < 3, so x-1 < j < x+5 - int64_t j_min = (std::max)(int64_t(0), int64_t(ceil(x-1))); - int64_t j_max = (std::min)(int64_t(m_alpha.size() - 1), int64_t(floor(x+5)) ); + std::int64_t j_min = (std::max)(std::int64_t(0), std::int64_t(ceil(x-1))); + std::int64_t j_max = (std::min)(std::int64_t(m_alpha.size() - 1), std::int64_t(floor(x+5)) ); Real s = 0; - for (int64_t j = j_min; j <= j_max; ++j) { + for (std::int64_t j = j_min; j <= j_max; ++j) { s += m_alpha[j]*cardinal_b_spline_double_prime<5, Real>(x - j + 2); } return s*m_inv_h*m_inv_h; diff --git a/include/boost/math/interpolators/detail/cubic_hermite_detail.hpp b/include/boost/math/interpolators/detail/cubic_hermite_detail.hpp index 921902e1f2..0e04d37390 100644 --- a/include/boost/math/interpolators/detail/cubic_hermite_detail.hpp +++ b/include/boost/math/interpolators/detail/cubic_hermite_detail.hpp @@ -12,6 +12,7 @@ #include #include #include +#include namespace boost { namespace math { @@ -154,7 +155,7 @@ class cubic_hermite_detail { return x_.size(); } - int64_t bytes() const + std::int64_t bytes() const { return 3*x_.size()*sizeof(Real) + 3*sizeof(x_); } @@ -278,7 +279,7 @@ class cardinal_cubic_hermite_detail { return y_.size(); } - int64_t bytes() const + std::int64_t bytes() const { return 2*y_.size()*sizeof(Real) + 2*sizeof(y_) + 2*sizeof(Real); } @@ -413,7 +414,7 @@ class cardinal_cubic_hermite_detail_aos { return dat_.size(); } - int64_t bytes() const + std::int64_t bytes() const { return dat_.size()*dat_[0].size()*sizeof(Real) + sizeof(dat_) + 2*sizeof(Real); } diff --git a/include/boost/math/interpolators/detail/quintic_hermite_detail.hpp b/include/boost/math/interpolators/detail/quintic_hermite_detail.hpp index 50c1b85ea7..ad7eee13a1 100644 --- a/include/boost/math/interpolators/detail/quintic_hermite_detail.hpp +++ b/include/boost/math/interpolators/detail/quintic_hermite_detail.hpp @@ -11,6 +11,7 @@ #include #include #include +#include namespace boost { namespace math { @@ -193,7 +194,7 @@ class quintic_hermite_detail { return os; } - int64_t bytes() const + std::int64_t bytes() const { return 4*x_.size()*sizeof(x_); } @@ -380,7 +381,7 @@ class cardinal_quintic_hermite_detail { return d2ydx2; } - int64_t bytes() const + std::int64_t bytes() const { return 3*y_.size()*sizeof(Real) + 2*sizeof(Real); } @@ -561,7 +562,7 @@ class cardinal_quintic_hermite_detail_aos { return d2ydx2; } - int64_t bytes() const + std::int64_t bytes() const { return data_.size()*data_[0].size()*sizeof(Real) + 2*sizeof(Real); } diff --git a/include/boost/math/interpolators/detail/septic_hermite_detail.hpp b/include/boost/math/interpolators/detail/septic_hermite_detail.hpp index 47d155561b..f4677ce0b6 100644 --- a/include/boost/math/interpolators/detail/septic_hermite_detail.hpp +++ b/include/boost/math/interpolators/detail/septic_hermite_detail.hpp @@ -11,6 +11,7 @@ #include #include #include +#include namespace boost { namespace math { @@ -189,7 +190,7 @@ class septic_hermite_detail { return os; } - int64_t bytes() + std::int64_t bytes() { return 5*x_.size()*sizeof(Real) + 5*sizeof(x_); } @@ -419,7 +420,7 @@ class cardinal_septic_hermite_detail { return d2ydx2; } - int64_t bytes() const + std::int64_t bytes() const { return 4*y_.size()*sizeof(Real) + 2*sizeof(Real) + 4*sizeof(y_); } @@ -629,7 +630,7 @@ class cardinal_septic_hermite_detail_aos { return d2ydx2; } - int64_t bytes() const + std::int64_t bytes() const { return data_.size()*data_[0].size()*sizeof(Real) + 2*sizeof(Real) + sizeof(data_); } diff --git a/include/boost/math/interpolators/detail/vector_barycentric_rational_detail.hpp b/include/boost/math/interpolators/detail/vector_barycentric_rational_detail.hpp index f4650784bf..fdece724c1 100644 --- a/include/boost/math/interpolators/detail/vector_barycentric_rational_detail.hpp +++ b/include/boost/math/interpolators/detail/vector_barycentric_rational_detail.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_MATH_INTERPOLATORS_VECTOR_BARYCENTRIC_RATIONAL_DETAIL_HPP #define BOOST_MATH_INTERPOLATORS_VECTOR_BARYCENTRIC_RATIONAL_DETAIL_HPP +#include #include #include #include // for std::move @@ -64,22 +65,22 @@ void vector_barycentric_rational_imp::calculate_w { using Real = typename TimeContainer::value_type; using std::abs; - int64_t n = t_.size(); + std::int64_t n = t_.size(); w_.resize(n, Real(0)); - for(int64_t k = 0; k < n; ++k) + for(std::int64_t k = 0; k < n; ++k) { - int64_t i_min = (std::max)(k - static_cast(approximation_order), static_cast(0)); - int64_t i_max = k; + std::int64_t i_min = (std::max)(k - static_cast(approximation_order), static_cast(0)); + std::int64_t i_max = k; if (k >= n - (std::ptrdiff_t)approximation_order) { i_max = n - approximation_order - 1; } - for(int64_t i = i_min; i <= i_max; ++i) + for(std::int64_t i = i_min; i <= i_max; ++i) { Real inv_product = 1; - int64_t j_max = (std::min)(static_cast(i + approximation_order), static_cast(n - 1)); - for(int64_t j = i; j <= j_max; ++j) + std::int64_t j_max = (std::min)(static_cast(i + approximation_order), static_cast(n - 1)); + for(std::int64_t j = i; j <= j_max; ++j) { if (j == k) { diff --git a/include/boost/math/interpolators/quintic_hermite.hpp b/include/boost/math/interpolators/quintic_hermite.hpp index c0ba067de2..1c00b15469 100644 --- a/include/boost/math/interpolators/quintic_hermite.hpp +++ b/include/boost/math/interpolators/quintic_hermite.hpp @@ -10,6 +10,7 @@ #include #include #include +#include #include namespace boost { @@ -50,7 +51,7 @@ class quintic_hermite { impl_->push_back(x, y, dydx, d2ydx2); } - int64_t bytes() const + std::int64_t bytes() const { return impl_->bytes() + sizeof(impl_); } @@ -85,7 +86,7 @@ class cardinal_quintic_hermite { return impl_->double_prime(x); } - int64_t bytes() const + std::int64_t bytes() const { return impl_->bytes() + sizeof(impl_); } @@ -123,7 +124,7 @@ class cardinal_quintic_hermite_aos { return impl_->double_prime(x); } - int64_t bytes() const + std::int64_t bytes() const { return impl_->bytes() + sizeof(impl_); } diff --git a/include/boost/math/interpolators/septic_hermite.hpp b/include/boost/math/interpolators/septic_hermite.hpp index f428a7651a..e8cb8e5493 100644 --- a/include/boost/math/interpolators/septic_hermite.hpp +++ b/include/boost/math/interpolators/septic_hermite.hpp @@ -9,6 +9,7 @@ #include #include #include +#include #include namespace boost { @@ -47,7 +48,7 @@ class septic_hermite return os; } - int64_t bytes() const + std::int64_t bytes() const { return impl_->bytes() + sizeof(impl_); } @@ -87,7 +88,7 @@ class cardinal_septic_hermite return impl_->double_prime(x); } - int64_t bytes() const + std::int64_t bytes() const { return impl_->bytes() + sizeof(impl_); } @@ -126,7 +127,7 @@ class cardinal_septic_hermite_aos { return impl_->double_prime(x); } - int64_t bytes() const + std::int64_t bytes() const { return impl_.size() + sizeof(impl_); } diff --git a/include/boost/math/optimization/jso.hpp b/include/boost/math/optimization/jso.hpp index e792298285..44359a00dc 100644 --- a/include/boost/math/optimization/jso.hpp +++ b/include/boost/math/optimization/jso.hpp @@ -389,7 +389,7 @@ jso(const Func cost_function, jso_parameters &jso_params, throw std::logic_error(oss.str()); } for (size_t i = 0; i < weights.size(); ++i) { - weights[i] = delta_f[i] / delta_sum; + weights[i] = static_cast(delta_f[i] / delta_sum); } M_CR[k] = detail::weighted_lehmer_mean(S_CR, weights); diff --git a/include/boost/math/policies/policy.hpp b/include/boost/math/policies/policy.hpp index bec8886408..ccc33bb9f8 100644 --- a/include/boost/math/policies/policy.hpp +++ b/include/boost/math/policies/policy.hpp @@ -942,7 +942,7 @@ template class is_policy_imp { public: - static constexpr bool value = (sizeof(::boost::math::policies::detail::test_is_policy(static_cast(nullptr))) == sizeof(char)); + static constexpr bool value = (sizeof(detail::test_is_policy(static_cast>*>(nullptr))) == sizeof(char)); }; } @@ -955,6 +955,9 @@ class is_policy using type = boost::math::integral_constant; }; +template +BOOST_MATH_INLINE_CONSTEXPR bool is_policy_v = is_policy::value; + // // Helper traits class for distribution error handling: // @@ -1003,6 +1006,25 @@ struct is_noexcept_error_policy && (t8::value != throw_on_error) && (t8::value != user_error)); }; +// Generate a forwarding policy to stop further promotion from occurring +// For example if a special function for float promotes to double, we don't want the next +// function in the call chain to then promote to long double +template +struct make_forwarding_policy +{ + using type = + typename policies::normalise< + Policy, + policies::promote_float, + policies::promote_double, + policies::discrete_quantile<>, + policies::assert_undefined<> + >::type; +}; + +template +using make_forwarding_policy_t = typename make_forwarding_policy::type; + }}} // namespaces #endif // BOOST_MATH_POLICY_HPP diff --git a/include/boost/math/quadrature/detail/ooura_fourier_integrals_detail.hpp b/include/boost/math/quadrature/detail/ooura_fourier_integrals_detail.hpp index 49677a8d29..c677852da4 100644 --- a/include/boost/math/quadrature/detail/ooura_fourier_integrals_detail.hpp +++ b/include/boost/math/quadrature/detail/ooura_fourier_integrals_detail.hpp @@ -195,11 +195,15 @@ class ooura_fourier_sin_detail { lweights_.reserve(levels); for (size_t i = 0; i < levels; ++i) { - if (std::is_same::value) { + BOOST_MATH_IF_CONSTEXPR (std::is_same::value) { add_level(i); } - else if (std::is_same::value) { + else BOOST_MATH_IF_CONSTEXPR (std::is_same::value) { +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS add_level(i); +#else + add_level(i); +#endif } else { add_level(i); @@ -266,11 +270,15 @@ class ooura_fourier_sin_detail { size_t max_additional_levels = 4; while (big_nodes_.size() < requested_levels_ + max_additional_levels) { size_t ii = big_nodes_.size(); - if (std::is_same::value) { + BOOST_MATH_IF_CONSTEXPR (std::is_same::value) { add_level(ii); } - else if (std::is_same::value) { + else BOOST_MATH_IF_CONSTEXPR (std::is_same::value) { +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS add_level(ii); +#else + add_level(ii); +#endif } else { add_level(ii); @@ -464,11 +472,15 @@ class ooura_fourier_cos_detail { lweights_.reserve(levels); for (size_t i = 0; i < levels; ++i) { - if (std::is_same::value) { + BOOST_MATH_IF_CONSTEXPR (std::is_same::value) { add_level(i); } - else if (std::is_same::value) { + else BOOST_MATH_IF_CONSTEXPR (std::is_same::value) { +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS add_level(i); +#else + add_level(i); +#endif } else { add_level(i); @@ -512,11 +524,15 @@ class ooura_fourier_cos_detail { size_t max_additional_levels = 4; while (big_nodes_.size() < requested_levels_ + max_additional_levels) { size_t ii = big_nodes_.size(); - if (std::is_same::value) { + BOOST_MATH_IF_CONSTEXPR (std::is_same::value) { add_level(ii); } - else if (std::is_same::value) { + else BOOST_MATH_IF_CONSTEXPR (std::is_same::value) { +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS add_level(ii); +#else + add_level(ii); +#endif } else { add_level(ii); diff --git a/include/boost/math/quadrature/naive_monte_carlo.hpp b/include/boost/math/quadrature/naive_monte_carlo.hpp index 4ad95ad832..954612c268 100644 --- a/include/boost/math/quadrature/naive_monte_carlo.hpp +++ b/include/boost/math/quadrature/naive_monte_carlo.hpp @@ -20,6 +20,7 @@ #include #include #include +#include #include #include @@ -45,20 +46,20 @@ class naive_monte_carlo std::vector> const & bounds, Real error_goal, bool singular = true, - uint64_t threads = std::thread::hardware_concurrency(), - uint64_t seed = 0) noexcept : m_num_threads{threads}, m_seed{seed}, m_volume(1) + std::uint64_t threads = std::thread::hardware_concurrency(), + std::uint64_t seed = 0) noexcept : m_num_threads{threads}, m_seed{seed}, m_volume(1) { using std::numeric_limits; using std::sqrt; using boost::math::isinf; - uint64_t n = bounds.size(); + std::uint64_t n = bounds.size(); m_lbs.resize(n); m_dxs.resize(n); m_limit_types.resize(n); static const char* function = "boost::math::quadrature::naive_monte_carlo<%1%>"; - for (uint64_t i = 0; i < n; ++i) + for (std::uint64_t i = 0; i < n; ++i) { if (bounds[i].second <= bounds[i].first) { @@ -122,7 +123,7 @@ class naive_monte_carlo m_integrand = [this, &integrand](std::vector & x)->Real { Real coeff = m_volume; - for (uint64_t i = 0; i < x.size(); ++i) + for (std::uint64_t i = 0; i < x.size(); ++i) { // Variable transformation are listed at: // https://en.wikipedia.org/wiki/Numerical_integration @@ -170,15 +171,15 @@ class naive_monte_carlo RandomNumberGenerator gen(seed); Real inv_denom = 1/static_cast(((gen.max)()-(gen.min)())); - m_num_threads = (std::max)(m_num_threads, static_cast(1)); - m_thread_calls.reset(new std::atomic[threads]); + m_num_threads = (std::max)(m_num_threads, static_cast(1)); + m_thread_calls.reset(new std::atomic[threads]); m_thread_Ss.reset(new std::atomic[threads]); m_thread_averages.reset(new std::atomic[threads]); Real avg = 0; - for (uint64_t i = 0; i < m_num_threads; ++i) + for (std::uint64_t i = 0; i < m_num_threads; ++i) { - for (uint64_t j = 0; j < m_lbs.size(); ++j) + for (std::uint64_t j = 0; j < m_lbs.size(); ++j) { x[j] = (gen()-(gen.min)())*inv_denom; } @@ -263,7 +264,7 @@ class naive_monte_carlo return m_avg.load(); } - uint64_t calls() const + std::uint64_t calls() const { return m_total_calls.load(); // relaxed load } @@ -272,7 +273,7 @@ class naive_monte_carlo Real m_integrate() { - uint64_t seed; + std::uint64_t seed; // If the user tells us to pick a seed, pick a seed: if (m_seed == 0) { @@ -307,23 +308,23 @@ class naive_monte_carlo } std::vector threads(m_num_threads); - for (uint64_t i = 0; i < threads.size(); ++i) + for (std::uint64_t i = 0; i < threads.size(); ++i) { threads[i] = std::thread(&naive_monte_carlo::m_thread_monte, this, i, gen()); } do { std::this_thread::sleep_for(std::chrono::milliseconds(100)); - uint64_t total_calls = 0; - for (uint64_t i = 0; i < m_num_threads; ++i) + std::uint64_t total_calls = 0; + for (std::uint64_t i = 0; i < m_num_threads; ++i) { - uint64_t t_calls = m_thread_calls[i].load(std::memory_order_consume); + std::uint64_t t_calls = m_thread_calls[i].load(std::memory_order_consume); total_calls += t_calls; } Real variance = 0; Real avg = 0; - for (uint64_t i = 0; i < m_num_threads; ++i) + for (std::uint64_t i = 0; i < m_num_threads; ++i) { - uint64_t t_calls = m_thread_calls[i].load(std::memory_order_consume); + std::uint64_t t_calls = m_thread_calls[i].load(std::memory_order_consume); // Will this overflow? Not hard to remove . . . avg += m_thread_averages[i].load(std::memory_order_relaxed)*(static_cast(t_calls) / static_cast(total_calls)); variance += m_thread_Ss[i].load(std::memory_order_relaxed); @@ -346,18 +347,18 @@ class naive_monte_carlo std::rethrow_exception(m_exception); } // Incorporate their work into the final estimate: - uint64_t total_calls = 0; - for (uint64_t i = 0; i < m_num_threads; ++i) + std::uint64_t total_calls = 0; + for (std::uint64_t i = 0; i < m_num_threads; ++i) { - uint64_t t_calls = m_thread_calls[i].load(std::memory_order_consume); + std::uint64_t t_calls = m_thread_calls[i].load(std::memory_order_consume); total_calls += t_calls; } Real variance = 0; Real avg = 0; - for (uint64_t i = 0; i < m_num_threads; ++i) + for (std::uint64_t i = 0; i < m_num_threads; ++i) { - uint64_t t_calls = m_thread_calls[i].load(std::memory_order_consume); + std::uint64_t t_calls = m_thread_calls[i].load(std::memory_order_consume); // Averages weighted by the number of calls the thread made: avg += m_thread_averages[i].load(std::memory_order_relaxed)*(static_cast(t_calls) / static_cast(total_calls)); variance += m_thread_Ss[i].load(std::memory_order_relaxed); @@ -375,7 +376,7 @@ class naive_monte_carlo return m_avg.load(std::memory_order_consume); } - void m_thread_monte(uint64_t thread_index, uint64_t seed) + void m_thread_monte(std::uint64_t thread_index, std::uint64_t seed) { using std::numeric_limits; try @@ -390,7 +391,7 @@ class naive_monte_carlo // The idea is that the unstabilized additions have error sigma(f)/sqrt(N) + epsilon*N, which diverges faster than it converges! // Kahan summation turns this to sigma(f)/sqrt(N) + epsilon^2*N, and the random walk occurs on a timescale of 10^14 years (on current hardware) Real compensator = 0; - uint64_t k = m_thread_calls[thread_index].load(std::memory_order_consume); + std::uint64_t k = m_thread_calls[thread_index].load(std::memory_order_consume); while (!m_done) // relaxed load { int j = 0; @@ -401,7 +402,7 @@ class naive_monte_carlo int magic_calls_before_update = 2048; while (j++ < magic_calls_before_update) { - for (uint64_t i = 0; i < m_lbs.size(); ++i) + for (std::uint64_t i = 0; i < m_lbs.size(); ++i) { x[i] = (gen() - (gen.min)())*inv_denom; } @@ -412,7 +413,7 @@ class naive_monte_carlo // The call to m_integrand transform x, so this error message states the correct node. std::stringstream os; os << "Your integrand was evaluated at {"; - for (uint64_t i = 0; i < x.size() -1; ++i) + for (std::uint64_t i = 0; i < x.size() -1; ++i) { os << x[i] << ", "; } @@ -443,18 +444,18 @@ class naive_monte_carlo } std::function &)> m_integrand; - uint64_t m_num_threads; - std::atomic m_seed; + std::uint64_t m_num_threads; + std::atomic m_seed; std::atomic m_error_goal; std::atomic m_done{}; std::vector m_lbs; std::vector m_dxs; std::vector m_limit_types; Real m_volume; - std::atomic m_total_calls{}; + std::atomic m_total_calls{}; // I wanted these to be vectors rather than maps, // but you can't resize a vector of atomics. - std::unique_ptr[]> m_thread_calls; + std::unique_ptr[]> m_thread_calls; std::atomic m_variance; std::unique_ptr[]> m_thread_Ss; std::atomic m_avg; diff --git a/include/boost/math/special_functions/detail/bessel_jn.hpp b/include/boost/math/special_functions/detail/bessel_jn.hpp index 6da09fbc4e..6400b27875 100644 --- a/include/boost/math/special_functions/detail/bessel_jn.hpp +++ b/include/boost/math/special_functions/detail/bessel_jn.hpp @@ -84,7 +84,7 @@ BOOST_MATH_GPU_ENABLED T bessel_jn(int n, T x, const Policy& pol) current = value; } } - else if((x < 1) || (n > x * x / 4) || (x < 5)) + else if((x < 5) || (n > x * x / 4)) { return factor * bessel_j_small_z_series(T(n), x, pol); } diff --git a/include/boost/math/special_functions/detail/bessel_jy.hpp b/include/boost/math/special_functions/detail/bessel_jy.hpp index fb1b5830b5..2907f91eeb 100644 --- a/include/boost/math/special_functions/detail/bessel_jy.hpp +++ b/include/boost/math/special_functions/detail/bessel_jy.hpp @@ -327,7 +327,10 @@ namespace boost { namespace math { // x is positive until reflection W = T(2) / (x * pi()); // Wronskian T Yv_scale = 1; - if(((kind & need_y) == 0) && ((x < 1) || (v > x * x / 4) || (x < 5))) + + const bool kind_does_not_need_y { ((kind & need_y) == 0) }; + + if(kind_does_not_need_y && ((x < 5) || (v > x * x / 4))) { // // This series will actually converge rapidly for all small diff --git a/include/boost/math/special_functions/detail/fp_traits.hpp b/include/boost/math/special_functions/detail/fp_traits.hpp index 015ea9cd35..051b84c1e8 100644 --- a/include/boost/math/special_functions/detail/fp_traits.hpp +++ b/include/boost/math/special_functions/detail/fp_traits.hpp @@ -270,7 +270,7 @@ template<> struct fp_traits_non_native // long double (64 bits) ------------------------------------------------------- #if defined(BOOST_NO_INT64_T) || defined(BOOST_NO_INCLASS_MEMBER_INITIALIZATION)\ - || defined(BOOST_BORLANDC) || defined(__CODEGEAR__) + || defined(BOOST_BORLANDC) || defined(__CODEGEAR__) || (defined(__APPLE__) && defined(__aarch64__)) || defined(_MSC_VER) template<> struct fp_traits_non_native { @@ -297,31 +297,9 @@ template<> struct fp_traits_non_native static constexpr int offset_ = BOOST_MATH_ENDIAN_BIG_BYTE ? 0 : 4; }; -//.............................................................................. - -#else - -template<> struct fp_traits_non_native -{ - typedef ieee_copy_all_bits_tag method; - - static const uint64_t sign = static_cast(0x80000000u) << 32; - static const uint64_t exponent = static_cast(0x7ff00000) << 32; - static const uint64_t flag = 0; - static const uint64_t significand - = (static_cast(0x000fffff) << 32) + static_cast(0xffffffffu); - - typedef uint64_t bits; - static void get_bits(long double x, uint64_t& a) { std::memcpy(&a, &x, 8); } - static void set_bits(long double& x, uint64_t a) { std::memcpy(&x, &a, 8); } -}; - -#endif - - // long double (>64 bits), x86 and x64 ----------------------------------------- -#if defined(__i386) || defined(__i386__) || defined(_M_IX86) \ +#elif defined(__i386) || defined(__i386__) || defined(_M_IX86) \ || defined(__amd64) || defined(__amd64__) || defined(_M_AMD64) \ || defined(__x86_64) || defined(__x86_64__) || defined(_M_X64) diff --git a/include/boost/math/special_functions/detail/lambert_w_lookup_table.ipp b/include/boost/math/special_functions/detail/lambert_w_lookup_table.ipp index b38aeb49c3..9f1b488ead 100644 --- a/include/boost/math/special_functions/detail/lambert_w_lookup_table.ipp +++ b/include/boost/math/special_functions/detail/lambert_w_lookup_table.ipp @@ -30,103 +30,131 @@ static constexpr std::size_t noof_wm1zs = 64; static constexpr lookup_t halves[noof_halves] = { // Common to Lambert W0 and W-1 (and exactly representable). - 0.5L, 0.25L, 0.125L, 0.0625L, 0.03125L, 0.015625L, 0.0078125L, 0.00390625L, 0.001953125L, 0.0009765625L, 0.00048828125L, 0.000244140625L + static_cast(0.5L), static_cast(0.25L), static_cast(0.125L), static_cast(0.0625L), + static_cast(0.03125L), static_cast(0.015625L), static_cast(0.0078125L), static_cast(0.00390625L), + static_cast(0.001953125L), static_cast(0.0009765625L), static_cast(0.00048828125L), static_cast(0.000244140625L) }; // halves, 0.5, 0.25, ... 0.000244140625, common to W0 and W-1. static constexpr lookup_t sqrtw0s[noof_sqrts] = { // For Lambert W0 only. - 0.6065306597126334242631173765403218567L, 0.77880078307140486866846070009071995L, 0.882496902584595403104717592968701829L, 0.9394130628134757862473572557999761753L, 0.9692332344763440819139583751755278177L, 0.9844964370054084060204319075254540376L, 0.9922179382602435121227899136829802692L, 0.996101369470117490071323985506950379L, 0.9980487811074754727142805899944244847L, 0.9990239141819756622368328253791383317L, 0.9995118379398893653889967919448497792L, 0.9997558891748972165136242351259789505L + static_cast(0.6065306597126334242631173765403218567L), static_cast(0.7788007830714048686684607000907199500L), + static_cast(0.8824969025845954031047175929687018290L), static_cast(0.9394130628134757862473572557999761753L), + static_cast(0.9692332344763440819139583751755278177L), static_cast(0.9844964370054084060204319075254540376L), + static_cast(0.9922179382602435121227899136829802692L), static_cast(0.9961013694701174900713239855069503790L), + static_cast(0.9980487811074754727142805899944244847L), static_cast(0.9990239141819756622368328253791383317L), + static_cast(0.9995118379398893653889967919448497792L), static_cast(0.9997558891748972165136242351259789505L) }; // sqrtw0s static constexpr lookup_t sqrtwm1s[noof_sqrts] = { // For Lambert W-1 only. - 1.648721270700128146848650787814163572L, 1.284025416687741484073420568062436458L, 1.133148453066826316829007227811793873L, 1.064494458917859429563390594642889673L, 1.031743407499102670938747815281507144L, 1.015747708586685747458535072082351749L, 1.007843097206447977693453559760123579L, 1.003913889338347573443609603903460282L, 1.001955033591002812046518898047477216L, 1.000977039492416535242845292611606506L, 1.000488400478694473126173623807163354L, 1.000244170429747854937005233924135774L + static_cast(1.648721270700128146848650787814163572L), static_cast(1.284025416687741484073420568062436458L), + static_cast(1.133148453066826316829007227811793873L), static_cast(1.064494458917859429563390594642889673L), + static_cast(1.031743407499102670938747815281507144L), static_cast(1.015747708586685747458535072082351749L), + static_cast(1.007843097206447977693453559760123579L), static_cast(1.003913889338347573443609603903460282L), + static_cast(1.001955033591002812046518898047477216L), static_cast(1.000977039492416535242845292611606506L), + static_cast(1.000488400478694473126173623807163354L), static_cast(1.000244170429747854937005233924135774L) }; // sqrtwm1s static constexpr lookup_t w0es[noof_w0zs] = { // Fukushima e powers array e[0] = 2.718, 1., e[2] = e^-1 = 0.135, e[3] = e^-2 = 0.133 ... e[64] = 4.3596100000630809736231248158884615452e-28. - 2.7182818284590452353602874713526624978e+00L, - 1.0000000000000000000000000000000000000e+00L, 3.6787944117144232159552377016146086745e-01L, 1.3533528323661269189399949497248440341e-01L, 4.9787068367863942979342415650061776632e-02L, - 1.8315638888734180293718021273241242212e-02L, 6.7379469990854670966360484231484242488e-03L, 2.4787521766663584230451674308166678915e-03L, 9.1188196555451620800313608440928262647e-04L, - 3.3546262790251183882138912578086101931e-04L, 1.2340980408667954949763669073003382607e-04L, 4.5399929762484851535591515560550610238e-05L, 1.6701700790245659312635517360580879078e-05L, - 6.1442123533282097586823081788055323112e-06L, 2.2603294069810543257852772905386894694e-06L, 8.3152871910356788406398514256526229461e-07L, 3.0590232050182578837147949770228963937e-07L, - 1.1253517471925911451377517906012719164e-07L, 4.1399377187851666596510277189552806229e-08L, 1.5229979744712628436136629233517431862e-08L, 5.6027964375372675400129828162064630798e-09L, - 2.0611536224385578279659403801558209764e-09L, 7.5825604279119067279417432412681264430e-10L, 2.7894680928689248077189130306442932077e-10L, 1.0261879631701890303927527840612497760e-10L, - 3.7751345442790977516449695475234067792e-11L, 1.3887943864964020594661763746086856910e-11L, 5.1090890280633247198744001934792157666e-12L, 1.8795288165390832947582704184221926212e-12L, - 6.9144001069402030094125846587414092712e-13L, 2.5436656473769229103033856148576816666e-13L, 9.3576229688401746049158322233787067450e-14L, 3.4424771084699764583923893328515572846e-14L, - 1.2664165549094175723120904155965096382e-14L, 4.6588861451033973641842455436101684114e-15L, 1.7139084315420129663027203425760492412e-15L, 6.3051167601469893856390211922465427614e-16L, - 2.3195228302435693883122636097380800411e-16L, 8.5330476257440657942780498229412441658e-17L, 3.1391327920480296287089646522319196491e-17L, 1.1548224173015785986262442063323868655e-17L, - 4.2483542552915889953292347828586580179e-18L, 1.5628821893349887680908829951058341550e-18L, 5.7495222642935598066643808805734234249e-19L, 2.1151310375910804866314010070226514702e-19L, - 7.7811322411337965157133167292798981918e-20L, 2.8625185805493936444701216291839372068e-20L, 1.0530617357553812378763324449428108806e-20L, 3.8739976286871871129314774972691278293e-21L, - 1.4251640827409351062853210280340602263e-21L, 5.2428856633634639371718053028323436716e-22L, 1.9287498479639177830173428165270125748e-22L, 7.0954741622847041389832693878080734877e-23L, - 2.6102790696677048047026953153318648093e-23L, 9.6026800545086760302307696700074909076e-24L, 3.5326285722008070297353928101772088374e-24L, 1.2995814250075030736007134060714855303e-24L, - 4.7808928838854690812771770423179628939e-25L, 1.7587922024243116489558751288034363178e-25L, 6.4702349256454603261540395529264893765e-26L, 2.3802664086944006058943245888024963309e-26L, - 8.7565107626965203384887328007391660366e-27L, 3.2213402859925160890012477758489437534e-27L, 1.1850648642339810062850307390972809891e-27L, 4.3596100000630809736231248158884596428e-28L, + static_cast(2.7182818284590452353602874713526624978e+00L), + static_cast(1.0000000000000000000000000000000000000e+00L), static_cast(3.6787944117144232159552377016146086745e-01L), + static_cast(1.3533528323661269189399949497248440341e-01L), static_cast(4.9787068367863942979342415650061776632e-02L), + static_cast(1.8315638888734180293718021273241242212e-02L), static_cast(6.7379469990854670966360484231484242488e-03L), + static_cast(2.4787521766663584230451674308166678915e-03L), static_cast(9.1188196555451620800313608440928262647e-04L), + static_cast(3.3546262790251183882138912578086101931e-04L), static_cast(1.2340980408667954949763669073003382607e-04L), + static_cast(4.5399929762484851535591515560550610238e-05L), static_cast(1.6701700790245659312635517360580879078e-05L), + static_cast(6.1442123533282097586823081788055323112e-06L), static_cast(2.2603294069810543257852772905386894694e-06L), + static_cast(8.3152871910356788406398514256526229461e-07L), static_cast(3.0590232050182578837147949770228963937e-07L), + static_cast(1.1253517471925911451377517906012719164e-07L), static_cast(4.1399377187851666596510277189552806229e-08L), + static_cast(1.5229979744712628436136629233517431862e-08L), static_cast(5.6027964375372675400129828162064630798e-09L), + static_cast(2.0611536224385578279659403801558209764e-09L), static_cast(7.5825604279119067279417432412681264430e-10L), + static_cast(2.7894680928689248077189130306442932077e-10L), static_cast(1.0261879631701890303927527840612497760e-10L), + static_cast(3.7751345442790977516449695475234067792e-11L), static_cast(1.3887943864964020594661763746086856910e-11L), + static_cast(5.1090890280633247198744001934792157666e-12L), static_cast(1.8795288165390832947582704184221926212e-12L), + static_cast(6.9144001069402030094125846587414092712e-13L), static_cast(2.5436656473769229103033856148576816666e-13L), + static_cast(9.3576229688401746049158322233787067450e-14L), static_cast(3.4424771084699764583923893328515572846e-14L), + static_cast(1.2664165549094175723120904155965096382e-14L), static_cast(4.6588861451033973641842455436101684114e-15L), + static_cast(1.7139084315420129663027203425760492412e-15L), static_cast(6.3051167601469893856390211922465427614e-16L), + static_cast(2.3195228302435693883122636097380800411e-16L), static_cast(8.5330476257440657942780498229412441658e-17L), + static_cast(3.1391327920480296287089646522319196491e-17L), static_cast(1.1548224173015785986262442063323868655e-17L), + static_cast(4.2483542552915889953292347828586580179e-18L), static_cast(1.5628821893349887680908829951058341550e-18L), + static_cast(5.7495222642935598066643808805734234249e-19L), static_cast(2.1151310375910804866314010070226514702e-19L), + static_cast(7.7811322411337965157133167292798981918e-20L), static_cast(2.8625185805493936444701216291839372068e-20L), + static_cast(1.0530617357553812378763324449428108806e-20L), static_cast(3.8739976286871871129314774972691278293e-21L), + static_cast(1.4251640827409351062853210280340602263e-21L), static_cast(5.2428856633634639371718053028323436716e-22L), + static_cast(1.9287498479639177830173428165270125748e-22L), static_cast(7.0954741622847041389832693878080734877e-23L), + static_cast(2.6102790696677048047026953153318648093e-23L), static_cast(9.6026800545086760302307696700074909076e-24L), + static_cast(3.5326285722008070297353928101772088374e-24L), static_cast(1.2995814250075030736007134060714855303e-24L), + static_cast(4.7808928838854690812771770423179628939e-25L), static_cast(1.7587922024243116489558751288034363178e-25L), + static_cast(6.4702349256454603261540395529264893765e-26L), static_cast(2.3802664086944006058943245888024963309e-26L), + static_cast(8.7565107626965203384887328007391660366e-27L), static_cast(3.2213402859925160890012477758489437534e-27L), + static_cast(1.1850648642339810062850307390972809891e-27L), static_cast(4.3596100000630809736231248158884596428e-28L), }; // w0es static constexpr lookup_t w0zs[noof_w0zs] = { // z values for W[0], W[1], W[2] ... W[64] (Fukushima array Fk). - 0.0000000000000000000000000000000000000e+00L, - 2.7182818284590452353602874713526624978e+00L, 1.4778112197861300454460854921150015626e+01L, 6.0256610769563003222785588963745153691e+01L, 2.1839260013257695631244104481144351361e+02L, - 7.4206579551288301710557790020276139812e+02L, 2.4205727609564107356503230832603296776e+03L, 7.6764321089992101948460416680168500271e+03L, 2.3847663896333826197948736795623109390e+04L, - 7.2927755348178456069389970204894839685e+04L, 2.2026465794806716516957900645284244366e+05L, 6.5861555886717600300859134371483559776e+05L, 1.9530574970280470496960624587818413980e+06L, - 5.7513740961159665432393360873381476632e+06L, 1.6836459978306874888489314790750032292e+07L, 4.9035260587081659589527825691375819733e+07L, 1.4217776832812596218820837985250320561e+08L, - 4.1063419681078006965118239806655900596e+08L, 1.1818794444719492004981570586630806042e+09L, 3.3911637183005579560532906419857313738e+09L, 9.7033039081958055593821366108308111737e+09L, - 2.7695130424147508641409976558651358487e+10L, 7.8868082614895014356985518811525255163e+10L, 2.2413047926372475980079655175092843139e+11L, 6.3573893111624333505933989166748517618e+11L, - 1.8001224834346468131040337866531539479e+12L, 5.0889698451498078710141863447784789126e+12L, 1.4365302496248562650461177217211790925e+13L, 4.0495197800161304862957327843914007993e+13L, - 1.1400869461717722015726999684446230289e+14L, 3.2059423744573386440971405952224204950e+14L, 9.0051433962267018216365614546207459567e+14L, 2.5268147258457822451512967243234631750e+15L, - 7.0832381329352301326018261305316090522e+15L, 1.9837699245933465967698692976753294646e+16L, 5.5510470830970075484537561902113104381e+16L, 1.5520433569614702817608320254284931407e+17L, - 4.3360826779369661842459877227403719730e+17L, 1.2105254067703227363724895246493485480e+18L, 3.3771426165357561311906703760513324357e+18L, 9.4154106734807994163159964299613921804e+18L, - 2.6233583234732252918129199544138403574e+19L, 7.3049547543861043990576614751671879498e+19L, 2.0329709713386190214340167519800405595e+20L, 5.6547040503180956413560918381429636734e+20L, - 1.5720421975868292906615658755032744790e+21L, 4.3682149334771264822761478593874428627e+21L, 1.2132170565093316762294432610117848880e+22L, 3.3680332378068632345542636794533635462e+22L, - 9.3459982052259884835729892206738573922e+22L, 2.5923527642935362320437266614667426924e+23L, 7.1876803203773878618909930893087860822e+23L, 1.9921241603726199616378561653688236827e+24L, - 5.5192924995054165325072406547517121131e+24L, 1.5286067837683347062387143159276002521e+25L, 4.2321318958281094260005100745711666956e+25L, 1.1713293177672778461879598480402173158e+26L, - 3.2408603996214813669049988277609543829e+26L, 8.9641258264226027960478448084812796397e+26L, 2.4787141382364034104243901241243054434e+27L, 6.8520443388941057019777430988685937812e+27L, - 1.8936217407781711443114787060753312270e+28L, 5.2317811346197017832254642778313331353e+28L, 1.4450833904658542238325922893692265683e+29L, 3.9904954117194348050619127737142206367e+29L + static_cast(0.0000000000000000000000000000000000000e+00L), + static_cast(2.7182818284590452353602874713526624978e+00L), static_cast(1.4778112197861300454460854921150015626e+01L), static_cast(6.0256610769563003222785588963745153691e+01L), static_cast(2.1839260013257695631244104481144351361e+02L), + static_cast(7.4206579551288301710557790020276139812e+02L), static_cast(2.4205727609564107356503230832603296776e+03L), static_cast(7.6764321089992101948460416680168500271e+03L), static_cast(2.3847663896333826197948736795623109390e+04L), + static_cast(7.2927755348178456069389970204894839685e+04L), static_cast(2.2026465794806716516957900645284244366e+05L), static_cast(6.5861555886717600300859134371483559776e+05L), static_cast(1.9530574970280470496960624587818413980e+06L), + static_cast(5.7513740961159665432393360873381476632e+06L), static_cast(1.6836459978306874888489314790750032292e+07L), static_cast(4.9035260587081659589527825691375819733e+07L), static_cast(1.4217776832812596218820837985250320561e+08L), + static_cast(4.1063419681078006965118239806655900596e+08L), static_cast(1.1818794444719492004981570586630806042e+09L), static_cast(3.3911637183005579560532906419857313738e+09L), static_cast(9.7033039081958055593821366108308111737e+09L), + static_cast(2.7695130424147508641409976558651358487e+10L), static_cast(7.8868082614895014356985518811525255163e+10L), static_cast(2.2413047926372475980079655175092843139e+11L), static_cast(6.3573893111624333505933989166748517618e+11L), + static_cast(1.8001224834346468131040337866531539479e+12L), static_cast(5.0889698451498078710141863447784789126e+12L), static_cast(1.4365302496248562650461177217211790925e+13L), static_cast(4.0495197800161304862957327843914007993e+13L), + static_cast(1.1400869461717722015726999684446230289e+14L), static_cast(3.2059423744573386440971405952224204950e+14L), static_cast(9.0051433962267018216365614546207459567e+14L), static_cast(2.5268147258457822451512967243234631750e+15L), + static_cast(7.0832381329352301326018261305316090522e+15L), static_cast(1.9837699245933465967698692976753294646e+16L), static_cast(5.5510470830970075484537561902113104381e+16L), static_cast(1.5520433569614702817608320254284931407e+17L), + static_cast(4.3360826779369661842459877227403719730e+17L), static_cast(1.2105254067703227363724895246493485480e+18L), static_cast(3.3771426165357561311906703760513324357e+18L), static_cast(9.4154106734807994163159964299613921804e+18L), + static_cast(2.6233583234732252918129199544138403574e+19L), static_cast(7.3049547543861043990576614751671879498e+19L), static_cast(2.0329709713386190214340167519800405595e+20L), static_cast(5.6547040503180956413560918381429636734e+20L), + static_cast(1.5720421975868292906615658755032744790e+21L), static_cast(4.3682149334771264822761478593874428627e+21L), static_cast(1.2132170565093316762294432610117848880e+22L), static_cast(3.3680332378068632345542636794533635462e+22L), + static_cast(9.3459982052259884835729892206738573922e+22L), static_cast(2.5923527642935362320437266614667426924e+23L), static_cast(7.1876803203773878618909930893087860822e+23L), static_cast(1.9921241603726199616378561653688236827e+24L), + static_cast(5.5192924995054165325072406547517121131e+24L), static_cast(1.5286067837683347062387143159276002521e+25L), static_cast(4.2321318958281094260005100745711666956e+25L), static_cast(1.1713293177672778461879598480402173158e+26L), + static_cast(3.2408603996214813669049988277609543829e+26L), static_cast(8.9641258264226027960478448084812796397e+26L), static_cast(2.4787141382364034104243901241243054434e+27L), static_cast(6.8520443388941057019777430988685937812e+27L), + static_cast(1.8936217407781711443114787060753312270e+28L), static_cast(5.2317811346197017832254642778313331353e+28L), static_cast(1.4450833904658542238325922893692265683e+29L), static_cast(3.9904954117194348050619127737142206367e+29L) }; // w0zs static constexpr lookup_t wm1es[noof_wm1es] = { // Fukushima e array e[0] = e^1 = 2.718, e[1] = e^2 = 7.39 ... e[64] = 4.60718e+28. - 2.7182818284590452353602874713526624978e+00L, - 7.3890560989306502272304274605750078132e+00L, 2.0085536923187667740928529654581717897e+01L, 5.4598150033144239078110261202860878403e+01L, 1.4841315910257660342111558004055227962e+02L, - 4.0342879349273512260838718054338827961e+02L, 1.0966331584284585992637202382881214324e+03L, 2.9809579870417282747435920994528886738e+03L, 8.1030839275753840077099966894327599650e+03L, - 2.2026465794806716516957900645284244366e+04L, 5.9874141715197818455326485792257781614e+04L, 1.6275479141900392080800520489848678317e+05L, 4.4241339200892050332610277594908828178e+05L, - 1.2026042841647767777492367707678594494e+06L, 3.2690173724721106393018550460917213155e+06L, 8.8861105205078726367630237407814503508e+06L, 2.4154952753575298214775435180385823880e+07L, - 6.5659969137330511138786503259060033569e+07L, 1.7848230096318726084491003378872270388e+08L, 4.8516519540979027796910683054154055868e+08L, 1.3188157344832146972099988837453027851e+09L, - 3.5849128461315915616811599459784206892e+09L, 9.7448034462489026000346326848229752776e+09L, 2.6489122129843472294139162152811882341e+10L, 7.2004899337385872524161351466126157915e+10L, - 1.9572960942883876426977639787609534279e+11L, 5.3204824060179861668374730434117744166e+11L, 1.4462570642914751736770474229969288569e+12L, 3.9313342971440420743886205808435276858e+12L, - 1.0686474581524462146990468650741401650e+13L, 2.9048849665247425231085682111679825667e+13L, 7.8962960182680695160978022635108224220e+13L, 2.1464357978591606462429776153126088037e+14L, - 5.8346174252745488140290273461039101900e+14L, 1.5860134523134307281296446257746601252e+15L, 4.3112315471151952271134222928569253908e+15L, 1.1719142372802611308772939791190194522e+16L, - 3.1855931757113756220328671701298646000e+16L, 8.6593400423993746953606932719264934250e+16L, 2.3538526683701998540789991074903480451e+17L, 6.3984349353005494922266340351557081888e+17L, - 1.7392749415205010473946813036112352261e+18L, 4.7278394682293465614744575627442803708e+18L, 1.2851600114359308275809299632143099258e+19L, 3.4934271057485095348034797233406099533e+19L, - 9.4961194206024488745133649117118323102e+19L, 2.5813128861900673962328580021527338043e+20L, 7.0167359120976317386547159988611740546e+20L, 1.9073465724950996905250998409538484474e+21L, - 5.1847055285870724640874533229334853848e+21L, 1.4093490824269387964492143312370168789e+22L, 3.8310080007165768493035695487861993899e+22L, 1.0413759433029087797183472933493796440e+23L, - 2.8307533032746939004420635480140745409e+23L, 7.6947852651420171381827455901293939921e+23L, 2.0916594960129961539070711572146737782e+24L, 5.6857199993359322226403488206332533034e+24L, - 1.5455389355901039303530766911174620068e+25L, 4.2012104037905142549565934307191617684e+25L, 1.1420073898156842836629571831447656302e+26L, 3.1042979357019199087073421411071003721e+26L, - 8.4383566687414544890733294803731179601e+26L, 2.2937831594696098790993528402686136005e+27L, 6.2351490808116168829092387089284697448e+27L + static_cast(2.7182818284590452353602874713526624978e+00L), + static_cast(7.3890560989306502272304274605750078132e+00L), static_cast(2.0085536923187667740928529654581717897e+01L), static_cast(5.4598150033144239078110261202860878403e+01L), static_cast(1.4841315910257660342111558004055227962e+02L), + static_cast(4.0342879349273512260838718054338827961e+02L), static_cast(1.0966331584284585992637202382881214324e+03L), static_cast(2.9809579870417282747435920994528886738e+03L), static_cast(8.1030839275753840077099966894327599650e+03L), + static_cast(2.2026465794806716516957900645284244366e+04L), static_cast(5.9874141715197818455326485792257781614e+04L), static_cast(1.6275479141900392080800520489848678317e+05L), static_cast(4.4241339200892050332610277594908828178e+05L), + static_cast(1.2026042841647767777492367707678594494e+06L), static_cast(3.2690173724721106393018550460917213155e+06L), static_cast(8.8861105205078726367630237407814503508e+06L), static_cast(2.4154952753575298214775435180385823880e+07L), + static_cast(6.5659969137330511138786503259060033569e+07L), static_cast(1.7848230096318726084491003378872270388e+08L), static_cast(4.8516519540979027796910683054154055868e+08L), static_cast(1.3188157344832146972099988837453027851e+09L), + static_cast(3.5849128461315915616811599459784206892e+09L), static_cast(9.7448034462489026000346326848229752776e+09L), static_cast(2.6489122129843472294139162152811882341e+10L), static_cast(7.2004899337385872524161351466126157915e+10L), + static_cast(1.9572960942883876426977639787609534279e+11L), static_cast(5.3204824060179861668374730434117744166e+11L), static_cast(1.4462570642914751736770474229969288569e+12L), static_cast(3.9313342971440420743886205808435276858e+12L), + static_cast(1.0686474581524462146990468650741401650e+13L), static_cast(2.9048849665247425231085682111679825667e+13L), static_cast(7.8962960182680695160978022635108224220e+13L), static_cast(2.1464357978591606462429776153126088037e+14L), + static_cast(5.8346174252745488140290273461039101900e+14L), static_cast(1.5860134523134307281296446257746601252e+15L), static_cast(4.3112315471151952271134222928569253908e+15L), static_cast(1.1719142372802611308772939791190194522e+16L), + static_cast(3.1855931757113756220328671701298646000e+16L), static_cast(8.6593400423993746953606932719264934250e+16L), static_cast(2.3538526683701998540789991074903480451e+17L), static_cast(6.3984349353005494922266340351557081888e+17L), + static_cast(1.7392749415205010473946813036112352261e+18L), static_cast(4.7278394682293465614744575627442803708e+18L), static_cast(1.2851600114359308275809299632143099258e+19L), static_cast(3.4934271057485095348034797233406099533e+19L), + static_cast(9.4961194206024488745133649117118323102e+19L), static_cast(2.5813128861900673962328580021527338043e+20L), static_cast(7.0167359120976317386547159988611740546e+20L), static_cast(1.9073465724950996905250998409538484474e+21L), + static_cast(5.1847055285870724640874533229334853848e+21L), static_cast(1.4093490824269387964492143312370168789e+22L), static_cast(3.8310080007165768493035695487861993899e+22L), static_cast(1.0413759433029087797183472933493796440e+23L), + static_cast(2.8307533032746939004420635480140745409e+23L), static_cast(7.6947852651420171381827455901293939921e+23L), static_cast(2.0916594960129961539070711572146737782e+24L), static_cast(5.6857199993359322226403488206332533034e+24L), + static_cast(1.5455389355901039303530766911174620068e+25L), static_cast(4.2012104037905142549565934307191617684e+25L), static_cast(1.1420073898156842836629571831447656302e+26L), static_cast(3.1042979357019199087073421411071003721e+26L), + static_cast(8.4383566687414544890733294803731179601e+26L), static_cast(2.2937831594696098790993528402686136005e+27L), static_cast(6.2351490808116168829092387089284697448e+27L) }; // wm1es static constexpr lookup_t wm1zs[noof_wm1zs] = { // Fukushima G array of z values for integral K, (Fukushima Gk) g[0] (k = -1) = 1 ... g[64] = -1.0264389699511303e-26. - -3.6787944117144232159552377016146086745e-01L, - -2.7067056647322538378799898994496880682e-01L, -1.4936120510359182893802724695018532990e-01L, -7.3262555554936721174872085092964968848e-02L, -3.3689734995427335483180242115742121244e-02L, - -1.4872513059998150538271004584900007349e-02L, -6.3831737588816134560219525908649783853e-03L, -2.6837010232200947105711130062468881545e-03L, -1.1106882367801159454787302165703044346e-03L, - -4.5399929762484851535591515560550610238e-04L, -1.8371870869270225243899069096638966986e-04L, -7.3730548239938517104187698145666387735e-05L, -2.9384282290753706235208604777002963102e-05L, - -1.1641402067449950376895791995913672125e-05L, -4.5885348075273868255721924655343445906e-06L, -1.8005627955081458322204028649620350662e-06L, -7.0378941219347833214067471222239770590e-07L, - -2.7413963540482731185045932620331377352e-07L, -1.0645313231320808326024667350792279852e-07L, -4.1223072448771156559318807603116419528e-08L, -1.5923376898615004128677660806663065530e-08L, - -6.1368298043116345769816086674174450569e-09L, -2.3602323152914347699033314033408744848e-09L, -9.0603229062698346039479269140561762700e-10L, -3.4719859662410051486654409365217142276e-10L, - -1.3283631472964644271673440503045960993e-10L, -5.0747278046555248958473301297399200773e-11L, -1.9360320299432568426355237044475945959e-11L, -7.3766303773930764398798182830872768331e-12L, - -2.8072868906520523814747496670136120235e-12L, -1.0671679036256927021016406931839827582e-12L, -4.0525329757101362313986893299088308423e-13L, -1.5374324278841211301808010293913555758e-13L, - -5.8272886672428440854292491647585674200e-14L, -2.2067908660514462849736574172862899665e-14L, -8.3502821888768497979241489950570881481e-15L, -3.1572276215253043438828784344882603413e-15L, - -1.1928704609782512589094065678481294667e-15L, -4.5038074274761565346423524046963087756e-16L, -1.6993417021166355981316939131434632072e-16L, -6.4078169762734539491726202799339200356e-17L, - -2.4147993510032951187990399698408378385e-17L, -9.0950634616416460925150243301974013218e-18L, -3.4236981860988704669138593608831552044e-18L, -1.2881333612472271400115547331327717431e-18L, - -4.8440839844747536942311292467369300505e-19L, -1.8207788854829779430777944237164900798e-19L, -6.8407875971564885101695409345634890862e-20L, -2.5690139750480973292141845983878483991e-20L, - -9.6437492398195889150867140826350628738e-21L, -3.6186918227651991108814673877821174787e-21L, -1.3573451162272064984454015639725697008e-21L, -5.0894204288895982960223079251039701810e-22L, - -1.9076194289884357960571121174956927722e-22L, -7.1476978375412669048039237333931704166e-23L, -2.6773000149758626855152191436980592206e-23L, -1.0025115553818576399048488234179587012e-23L, - -3.7527362568743669891693429406973638384e-24L, -1.4043571811296963574776515073934728352e-24L, -5.2539064576179122030932396804434996219e-25L, -1.9650175744554348142907611432678556896e-25L, - -7.3474021582506822389671905824031421322e-26L, -2.7465543000397410133825686340097295749e-26L, -1.0264389699511282259046957018510946438e-26L + static_cast(-3.6787944117144232159552377016146086745e-01L), + static_cast(-2.7067056647322538378799898994496880682e-01L), static_cast(-1.4936120510359182893802724695018532990e-01L), static_cast(-7.3262555554936721174872085092964968848e-02L), static_cast(-3.3689734995427335483180242115742121244e-02L), + static_cast(-1.4872513059998150538271004584900007349e-02L), static_cast(-6.3831737588816134560219525908649783853e-03L), static_cast(-2.6837010232200947105711130062468881545e-03L), static_cast(-1.1106882367801159454787302165703044346e-03L), + static_cast(-4.5399929762484851535591515560550610238e-04L), static_cast(-1.8371870869270225243899069096638966986e-04L), static_cast(-7.3730548239938517104187698145666387735e-05L), static_cast(-2.9384282290753706235208604777002963102e-05L), + static_cast(-1.1641402067449950376895791995913672125e-05L), static_cast(-4.5885348075273868255721924655343445906e-06L), static_cast(-1.8005627955081458322204028649620350662e-06L), static_cast(-7.0378941219347833214067471222239770590e-07L), + static_cast(-2.7413963540482731185045932620331377352e-07L), static_cast(-1.0645313231320808326024667350792279852e-07L), static_cast(-4.1223072448771156559318807603116419528e-08L), static_cast(-1.5923376898615004128677660806663065530e-08L), + static_cast(-6.1368298043116345769816086674174450569e-09L), static_cast(-2.3602323152914347699033314033408744848e-09L), static_cast(-9.0603229062698346039479269140561762700e-10L), static_cast(-3.4719859662410051486654409365217142276e-10L), + static_cast(-1.3283631472964644271673440503045960993e-10L), static_cast(-5.0747278046555248958473301297399200773e-11L), static_cast(-1.9360320299432568426355237044475945959e-11L), static_cast(-7.3766303773930764398798182830872768331e-12L), + static_cast(-2.8072868906520523814747496670136120235e-12L), static_cast(-1.0671679036256927021016406931839827582e-12L), static_cast(-4.0525329757101362313986893299088308423e-13L), static_cast(-1.5374324278841211301808010293913555758e-13L), + static_cast(-5.8272886672428440854292491647585674200e-14L), static_cast(-2.2067908660514462849736574172862899665e-14L), static_cast(-8.3502821888768497979241489950570881481e-15L), static_cast(-3.1572276215253043438828784344882603413e-15L), + static_cast(-1.1928704609782512589094065678481294667e-15L), static_cast(-4.5038074274761565346423524046963087756e-16L), static_cast(-1.6993417021166355981316939131434632072e-16L), static_cast(-6.4078169762734539491726202799339200356e-17L), + static_cast(-2.4147993510032951187990399698408378385e-17L), static_cast(-9.0950634616416460925150243301974013218e-18L), static_cast(-3.4236981860988704669138593608831552044e-18L), static_cast(-1.2881333612472271400115547331327717431e-18L), + static_cast(-4.8440839844747536942311292467369300505e-19L), static_cast(-1.8207788854829779430777944237164900798e-19L), static_cast(-6.8407875971564885101695409345634890862e-20L), static_cast(-2.5690139750480973292141845983878483991e-20L), + static_cast(-9.6437492398195889150867140826350628738e-21L), static_cast(-3.6186918227651991108814673877821174787e-21L), static_cast(-1.3573451162272064984454015639725697008e-21L), static_cast(-5.0894204288895982960223079251039701810e-22L), + static_cast(-1.9076194289884357960571121174956927722e-22L), static_cast(-7.1476978375412669048039237333931704166e-23L), static_cast(-2.6773000149758626855152191436980592206e-23L), static_cast(-1.0025115553818576399048488234179587012e-23L), + static_cast(-3.7527362568743669891693429406973638384e-24L), static_cast(-1.4043571811296963574776515073934728352e-24L), static_cast(-5.2539064576179122030932396804434996219e-25L), static_cast(-1.9650175744554348142907611432678556896e-25L), + static_cast(-7.3474021582506822389671905824031421322e-26L), static_cast(-2.7465543000397410133825686340097295749e-26L), static_cast(-1.0264389699511282259046957018510946438e-26L) }; // wm1zs } // namespace lambert_w_lookup } // namespace detail diff --git a/include/boost/math/special_functions/erf.hpp b/include/boost/math/special_functions/erf.hpp index c1d9061dba..dffb0c59cc 100644 --- a/include/boost/math/special_functions/erf.hpp +++ b/include/boost/math/special_functions/erf.hpp @@ -153,7 +153,19 @@ T erf_imp(T z, bool invert, const Policy& pol, const Tag& t) if ((boost::math::isnan)(z)) return policies::raise_domain_error("boost::math::erf<%1%>(%1%)", "Expected a finite argument but got %1%", z, pol); - if(z < 0) + if (fabs(z) < tools::root_epsilon()) + { + // Series[Erf[x], {x, 0, 4}] + // Series[Erfc[x], {x, 0, 4}] + + const T term2 { z * 2 / constants::root_pi() }; + + return invert ? 1 - term2 : term2; + } + + const bool signbit_result = ((boost::math::signbit)(z) != 0); + + if (signbit_result) { if(!invert) return -erf_imp(T(-z), invert, pol, t); @@ -172,32 +184,32 @@ T erf_imp(T z, bool invert, const Policy& pol, const Tag& t) } else { - T x = z * z; + const T z_sq { z * z }; + if(z < 1.3f) { // Compute P: // This is actually good for z p to 2 or so, but the cutoff given seems - // to be the best compromise. Performance wise, this is way quicker than anything else... + // to be the best compromise. Regarding performance, this is way quicker than anything else... result = erf_series_near_zero_sum(z, pol); } - else if(x > 1 / tools::epsilon()) + else if(z_sq > 1 / tools::epsilon()) { // http://functions.wolfram.com/06.27.06.0006.02 invert = !invert; - result = exp(-x) / (constants::root_pi() * z); + result = exp(-z_sq) / (constants::root_pi() * z); } else { // Compute Q: invert = !invert; - result = z * exp(-x); + result = z * exp(-z_sq); result /= boost::math::constants::root_pi(); - result *= upper_gamma_fraction(T(0.5f), x, policies::get_epsilon()); + result *= upper_gamma_fraction(T(0.5f), z_sq, policies::get_epsilon()); } } - if(invert) - result = 1 - result; - return result; + + return ((!invert) ? result : 1 - result); } // LCOV_EXCL_STOP diff --git a/include/boost/math/special_functions/hypot.hpp b/include/boost/math/special_functions/hypot.hpp index f38e37e872..66a9492541 100644 --- a/include/boost/math/special_functions/hypot.hpp +++ b/include/boost/math/special_functions/hypot.hpp @@ -16,6 +16,8 @@ #include #include #include +#include +#include namespace boost{ namespace math{ namespace detail{ @@ -53,6 +55,48 @@ BOOST_MATH_GPU_ENABLED T hypot_imp(T x, T y, const Policy& pol) return x * sqrt(1 + rat*rat); } // template T hypot(T x, T y) +template +BOOST_MATH_GPU_ENABLED T hypot_imp(T x, T y, T z, const Policy& pol) +{ + BOOST_MATH_STD_USING + + x = fabs(x); + y = fabs(y); + z = fabs(z); + + #ifdef _MSC_VER + #pragma warning(push) + #pragma warning(disable: 4127) + #endif + // special case, see C99 Annex F: + BOOST_MATH_IF_CONSTEXPR (boost::math::numeric_limits::has_infinity) + { + if(((x == boost::math::numeric_limits::infinity()) + || (y == boost::math::numeric_limits::infinity()) + || (z == boost::math::numeric_limits::infinity()))) + return policies::raise_overflow_error("boost::math::hypot<%1%>(%1%,%1%,%1%)", nullptr, pol); + } + #ifdef _MSC_VER + #pragma warning(pop) + #endif + + const T a {(max)((max)(x, y), z)}; + + if (a == T(0)) + { + return a; + } + + const T x_div_a {x / a}; + const T y_div_a {y / a}; + const T z_div_a {z / a}; + + return a * sqrt(x_div_a * x_div_a + + y_div_a * y_div_a + + z_div_a * z_div_a); + +} + } template @@ -64,7 +108,7 @@ BOOST_MATH_GPU_ENABLED inline typename tools::promote_args::type static_cast(x), static_cast(y), policies::policy<>()); } -template +template , bool>> BOOST_MATH_GPU_ENABLED inline typename tools::promote_args::type hypot(T1 x, T2 y, const Policy& pol) { @@ -73,6 +117,28 @@ BOOST_MATH_GPU_ENABLED inline typename tools::promote_args::type static_cast(x), static_cast(y), pol); } +template , bool>> +BOOST_MATH_GPU_ENABLED inline tools::promote_args_t + hypot(T1 x, T2 y, T3 z) +{ + using result_type = tools::promote_args_t; + return detail::hypot_imp(static_cast(x), + static_cast(y), + static_cast(z), + policies::policy<>()); +} + +template +BOOST_MATH_GPU_ENABLED inline tools::promote_args_t + hypot(T1 x, T2 y, T3 z, const Policy& pol) +{ + using result_type = tools::promote_args_t; + return detail::hypot_imp(static_cast(x), + static_cast(y), + static_cast(z), + pol); +} + } // namespace math } // namespace boost diff --git a/include/boost/math/special_functions/logistic_sigmoid.hpp b/include/boost/math/special_functions/logistic_sigmoid.hpp new file mode 100644 index 0000000000..925b576ca3 --- /dev/null +++ b/include/boost/math/special_functions/logistic_sigmoid.hpp @@ -0,0 +1,46 @@ +// Copyright Matt Borland 2025. +// 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) + +#ifndef BOOST_MATH_SF_EXPIT_HPP +#define BOOST_MATH_SF_EXPIT_HPP + +#include +#include +#include + +namespace boost { +namespace math { + +template +RealType logistic_sigmoid(RealType x, const Policy&) +{ + BOOST_MATH_STD_USING + + using promoted_real_type = typename policies::evaluation::type; + + if(-x >= tools::log_max_value()) + { + return static_cast(0); + } + if(-x <= -tools::log_max_value()) + { + return static_cast(1); + } + + const auto res {static_cast(1 / (1 + exp(static_cast(-x))))}; + return res; +} + +template +RealType logistic_sigmoid(RealType x) +{ + return logistic_sigmoid(x, policies::policy<>()); +} + +} // namespace math +} // namespace boost + +#endif // BOOST_MATH_SF_EXPIT_HPP diff --git a/include/boost/math/special_functions/logit.hpp b/include/boost/math/special_functions/logit.hpp new file mode 100644 index 0000000000..8a2ddf68dd --- /dev/null +++ b/include/boost/math/special_functions/logit.hpp @@ -0,0 +1,56 @@ +// Copyright Matt Borland 2025. +// 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) + +#ifndef BOOST_MATH_SF_LOGIT_HPP +#define BOOST_MATH_SF_LOGIT_HPP + +#include +#include +#include +#include +#include + +namespace boost { +namespace math { + +template +RealType logit(RealType p, const Policy&) +{ + BOOST_MATH_STD_USING + using std::atanh; + + using promoted_real_type = typename policies::evaluation::type; + + if (p < tools::min_value()) + { + return -policies::raise_overflow_error("logit", "sub-normals will overflow ln(x/(1-x))", Policy()); + } + + static const RealType crossover {RealType{1}/4}; + const auto promoted_p {static_cast(p)}; + RealType result {}; + if (p > crossover) + { + result = static_cast(2 * atanh(2 * promoted_p - 1)); + } + else + { + result = static_cast(log(promoted_p / (1 - promoted_p))); + } + + return result; +} + +template +RealType logit(RealType p) +{ + return logit(p, policies::policy<>()); +} + +} // namespace math +} // namespace boost + +#endif // BOOST_MATH_SF_LOGIT_HPP diff --git a/include/boost/math/special_functions/math_fwd.hpp b/include/boost/math/special_functions/math_fwd.hpp index 54f51c531a..0e08157909 100644 --- a/include/boost/math/special_functions/math_fwd.hpp +++ b/include/boost/math/special_functions/math_fwd.hpp @@ -636,10 +636,18 @@ namespace boost BOOST_MATH_GPU_ENABLED tools::promote_args_t hypot(T1 x, T2 y); - template + template , bool> = true> BOOST_MATH_GPU_ENABLED tools::promote_args_t hypot(T1 x, T2 y, const Policy&); + template , bool> = true> + BOOST_MATH_GPU_ENABLED tools::promote_args_t + hypot(T1 x, T2 y, T3 z); + + template + BOOST_MATH_GPU_ENABLED tools::promote_args_t + hypot(T1 x, T2 y, T3 z, const Policy& pol); + // cbrt - cube root. template BOOST_MATH_GPU_ENABLED tools::promote_args_t cbrt(RT z); diff --git a/include/boost/math/special_functions/sin_pi.hpp b/include/boost/math/special_functions/sin_pi.hpp index e59e232e6d..05a155434a 100644 --- a/include/boost/math/special_functions/sin_pi.hpp +++ b/include/boost/math/special_functions/sin_pi.hpp @@ -94,7 +94,6 @@ inline typename tools::promote_args::type sin_pi(T x) { return boost::math::sin_pi(x, policies::policy<>()); } - } // namespace math } // namespace boost diff --git a/include/boost/math/tools/config.hpp b/include/boost/math/tools/config.hpp index 964a2bf0bb..df0059873d 100644 --- a/include/boost/math/tools/config.hpp +++ b/include/boost/math/tools/config.hpp @@ -702,15 +702,11 @@ namespace boost{ namespace math{ # undef BOOST_MATH_FORCEINLINE # define BOOST_MATH_FORCEINLINE __forceinline__ -#elif defined(SYCL_LANGUAGE_VERSION) +#elif defined(BOOST_MATH_ENABLE_SYCL) # define BOOST_MATH_SYCL_ENABLED SYCL_EXTERNAL # define BOOST_MATH_HAS_GPU_SUPPORT -# ifndef BOOST_MATH_ENABLE_SYCL -# define BOOST_MATH_ENABLE_SYCL -# endif - # ifndef BOOST_MATH_NO_EXCEPTIONS # define BOOST_MATH_NO_EXCEPTIONS # endif diff --git a/include/boost/math/tools/type_traits.hpp b/include/boost/math/tools/type_traits.hpp index a13332797b..951f3a1bf8 100644 --- a/include/boost/math/tools/type_traits.hpp +++ b/include/boost/math/tools/type_traits.hpp @@ -52,7 +52,6 @@ using cuda::std::is_member_pointer; // Type properties using cuda::std::is_const; using cuda::std::is_volatile; -using cuda::std::is_trivial; using cuda::std::is_trivially_copyable; using cuda::std::is_standard_layout; using cuda::std::is_empty; @@ -199,7 +198,6 @@ using std::is_member_pointer; // Type properties using std::is_const; using std::is_volatile; -using std::is_trivial; using std::is_trivially_copyable; using std::is_standard_layout; using std::is_empty; @@ -380,9 +378,6 @@ BOOST_MATH_INLINE_CONSTEXPR bool is_const_v = boost::math::is_const::value; template BOOST_MATH_INLINE_CONSTEXPR bool is_volatile_v = boost::math::is_volatile::value; -template -BOOST_MATH_INLINE_CONSTEXPR bool is_trivial_v = boost::math::is_trivial::value; - template BOOST_MATH_INLINE_CONSTEXPR bool is_trivially_copyable_v = boost::math::is_trivially_copyable::value; diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index a0f4b3cdee..2d91450439 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -43,7 +43,7 @@ if(HAVE_BOOST_TEST) enable_testing() - boost_test_jamfile(FILE sycl_jamfile LINK_LIBRARIES Boost::math Boost::assert Boost::concept_check Boost::config Boost::core Boost::integer Boost::lexical_cast Boost::multiprecision Boost::predef Boost::random Boost::static_assert Boost::throw_exception Boost::unit_test_framework sycl COMPILE_OPTIONS -fsycl ) + boost_test_jamfile(FILE sycl_jamfile LINK_LIBRARIES Boost::math Boost::assert Boost::concept_check Boost::config Boost::core Boost::integer Boost::lexical_cast Boost::multiprecision Boost::predef Boost::random Boost::static_assert Boost::throw_exception Boost::unit_test_framework sycl COMPILE_DEFINITIONS BOOST_MATH_ENABLE_SYCL=1 COMPILE_OPTIONS -fsycl ) else() boost_test(SOURCES check_cmake_version.cpp ARGUMENTS ${PROJECT_VERSION} LINK_LIBRARIES Boost::core Boost::config) diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 7a7be3f5d9..279d547599 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -201,6 +201,7 @@ test-suite special_fun : [ run git_issue_1249.cpp /boost/test//boost_unit_test_framework : : : [ check-target-builds ../config//is_ci_sanitizer_run "Santizer Build" : : no ] ] [ run git_issue_1255.cpp ] [ run git_issue_1247.cpp ] + [ run git_issue_1308.cpp /boost/test//boost_unit_test_framework ] [ run special_functions_test.cpp /boost/test//boost_unit_test_framework ] [ run test_airy.cpp test_instances//test_instances pch_light /boost/test//boost_unit_test_framework ] [ run test_bessel_j.cpp test_instances//test_instances pch_light /boost/test//boost_unit_test_framework ] @@ -590,6 +591,8 @@ test-suite special_fun : [ run test_sinc.cpp /boost/test//boost_unit_test_framework pch_light ] [ run test_fibonacci.cpp /boost/test//boost_unit_test_framework ] [ run test_prime.cpp /boost/test//boost_unit_test_framework ] + [ run test_logistic_sigmoid.cpp ] + [ run test_logit.cpp ] ; test-suite distribution_tests : @@ -1076,7 +1079,6 @@ test-suite misc : # [ run __temporary_test.cpp test_instances//test_instances : : : always_show_run_output off ] ; - test-suite interpolators : [ run test_barycentric_rational.cpp /boost/test//boost_unit_test_framework : : : [ requires cxx11_smart_ptr cxx11_defaulted_functions cxx11_auto_declarations cxx11_unified_initialization_syntax ] $(float128_type) ] [ run test_vector_barycentric_rational.cpp /boost/test//boost_unit_test_framework : : : [ requires cxx11_smart_ptr cxx11_defaulted_functions cxx11_auto_declarations cxx11_unified_initialization_syntax ] [ check-target-builds ../../multiprecision/config//has_eigen : : no ] ] @@ -1110,7 +1112,7 @@ test-suite interpolators : [ run compile_test/interpolators_catmull_rom_concept_test.cpp compile_test_main : : : [ requires cxx11_hdr_array cxx11_hdr_initializer_list ] ] [ run test_standalone_asserts.cpp ] [ run differential_evolution_test.cpp : : : [ requires cxx17_if_constexpr cxx17_std_apply ] ] - [ run jso_test.cpp : : : [ requires cxx17_if_constexpr cxx17_std_apply ] ] + [ run jso_test.cpp : : : clang:-fno-fast-math gcc:-fno-fast-math msvc:/fp:precise [ requires cxx17_if_constexpr cxx17_std_apply ] ] [ run random_search_test.cpp : : : [ requires cxx17_if_constexpr cxx17_std_apply ] ] [ run cma_es_test.cpp : : : [ requires cxx17_if_constexpr cxx17_std_apply ] [ check-target-builds ../../multiprecision/config//has_eigen : : no ] ] [ compile compile_test/random_search_incl_test.cpp : [ requires cxx17_if_constexpr cxx17_std_apply ] ] @@ -1357,6 +1359,612 @@ test-suite autodiff : [ compile compile_test/diff_lanczos_smoothing_incl_test.cpp : gcc-mingw:-Wa,-mbig-obj off msvc:/bigobj release [ requires cxx17_if_constexpr cxx17_std_apply ] $(float128_type) [ check-target-builds ../config//is_cygwin_run "Cygwin CI run" : no ] [ requires cxx11_inline_namespaces ] ] ; +test-suite test_reverse_mode_autodiff + : + [ run test_reverse_mode_autodiff_flat_linear_allocator.cpp /boost/test//boost_unit_test_framework : : : gcc-mingw:-Wa,-mbig-obj off msvc:/bigobj release ] + [ run test_reverse_mode_autodiff_constructors.cpp /boost/test//boost_unit_test_framework : : : gcc-mingw:-Wa,-mbig-obj off msvc:/bigobj release ] + [ run test_reverse_mode_autodiff_comparison_operators.cpp /boost/test//boost_unit_test_framework : : : gcc-mingw:-Wa,-mbig-obj off msvc:/bigobj release ] + [ run test_reverse_mode_autodiff_stl_support.cpp /boost/test//boost_unit_test_framework : : : gcc-mingw:-Wa,-mbig-obj off msvc:/bigobj release ] + [ 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 ] + ; +# BEGIN AUTODIFF LONG RUNNING TESTS +test-suite autodiff-long-running-tests + : + [ run test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma1pm1_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma1pm1_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma1pm1_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma1pm1_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma1pm1_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_lgamma_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_lgamma_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_lgamma_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_lgamma_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_lgamma_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_digamma_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_digamma_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_digamma_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_digamma_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_digamma_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_trigamma_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_trigamma_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_trigamma_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_trigamma_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_trigamma_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_polygamma_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_polygamma_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_polygamma_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_polygamma_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_polygamma_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_ratio_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_ratio_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_ratio_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_ratio_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_ratio_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_delta_ratio_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_delta_ratio_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_delta_ratio_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_delta_ratio_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_delta_ratio_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_gamma_p_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_gamma_p_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_gamma_p_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_gamma_p_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_gamma_p_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_gamma_q_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_gamma_q_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_gamma_q_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_gamma_q_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_gamma_q_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_lower_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_lower_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_lower_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_lower_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_lower_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/factorial/test_reverse_mode_autodiff_rising_factorial_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/factorial/test_reverse_mode_autodiff_rising_factorial_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/factorial/test_reverse_mode_autodiff_rising_factorial_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/factorial/test_reverse_mode_autodiff_rising_factorial_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/factorial/test_reverse_mode_autodiff_rising_factorial_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/factorial/test_reverse_mode_autodiff_falling_factorial_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/factorial/test_reverse_mode_autodiff_falling_factorial_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/factorial/test_reverse_mode_autodiff_falling_factorial_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/factorial/test_reverse_mode_autodiff_falling_factorial_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/factorial/test_reverse_mode_autodiff_falling_factorial_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_beta_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_beta_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_beta_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_beta_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_beta_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_betac_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_betac_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_betac_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_betac_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_betac_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_inv_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_inv_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_inv_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_inv_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_inv_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_inv_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_inv_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_inv_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_inv_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_inv_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_inva_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_inva_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_inva_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_inva_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_inva_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_inva_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_inva_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_inva_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_inva_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_inva_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_invb_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_invb_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_invb_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_invb_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_invb_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_invb_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_invb_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_invb_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_invb_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_invb_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_derivative_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_derivative_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_derivative_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_derivative_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_derivative_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_p_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_p_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_p_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_p_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_p_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_p_prime_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_p_prime_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_p_prime_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_p_prime_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_p_prime_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_q_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_q_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_q_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_q_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_q_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/laguerre/test_reverse_mode_autodiff_laguerre_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/laguerre/test_reverse_mode_autodiff_laguerre_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/laguerre/test_reverse_mode_autodiff_laguerre_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/laguerre/test_reverse_mode_autodiff_laguerre_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/laguerre/test_reverse_mode_autodiff_laguerre_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/hermite/test_reverse_mode_autodiff_hermite_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/hermite/test_reverse_mode_autodiff_hermite_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/hermite/test_reverse_mode_autodiff_hermite_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/hermite/test_reverse_mode_autodiff_hermite_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/hermite/test_reverse_mode_autodiff_hermite_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_t_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_t_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_t_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_t_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_t_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_u_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_u_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_u_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_u_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_u_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_t_prime_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_t_prime_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_t_prime_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_t_prime_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_t_prime_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_compile_test_ET_ON_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_r_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_r_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_r_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_r_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_r_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_i_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_i_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_i_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_i_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_i_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_compile_test_ET_ON_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_prime_compile_test_ET_ON_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_prime_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_prime_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_prime_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_derivative_compile_test_ET_ON_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_derivative_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_derivative_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_derivative_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_derivative_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_derivative_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_derivative_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_derivative_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_derivative_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_prime_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_prime_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_prime_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_prime_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_prime_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_double_prime_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_double_prime_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_double_prime_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_double_prime_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_double_prime_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_j_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_j_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_j_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_j_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_j_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_neumann_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_neumann_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_neumann_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_neumann_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_neumann_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_i_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_i_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_i_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_i_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_i_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_k_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_k_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_k_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_k_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_k_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_bessel_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_bessel_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_bessel_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_bessel_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_bessel_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_neumann_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_neumann_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_neumann_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_neumann_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_neumann_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_j_prime_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_j_prime_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_j_prime_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_j_prime_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_j_prime_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_neumann_prime_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_neumann_prime_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_neumann_prime_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_neumann_prime_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_neumann_prime_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_i_prime_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_i_prime_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_i_prime_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_i_prime_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_i_prime_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_k_prime_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_k_prime_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_k_prime_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_k_prime_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_k_prime_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_bessel_prime_compile_test_ET_ON_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_bessel_prime_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_bessel_prime_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_bessel_prime_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_neumann_prime_compile_test_ET_ON_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_neumann_prime_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_neumann_prime_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_neumann_prime_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_cyl_hankel_1_compile_test_ET_ON_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_cyl_hankel_1_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_cyl_hankel_1_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_cyl_hankel_1_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_cyl_hankel_2_compile_test_ET_ON_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_cyl_hankel_2_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_cyl_hankel_2_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_cyl_hankel_2_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_sph_hankel_1_compile_test_ET_ON_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_sph_hankel_1_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_sph_hankel_1_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_sph_hankel_1_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_sph_hankel_2_compile_test_ET_ON_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_sph_hankel_2_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_sph_hankel_2_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_sph_hankel_2_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_ai_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_ai_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_ai_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_ai_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_ai_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_bi_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_bi_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_bi_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_bi_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_bi_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_ai_prime_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_ai_prime_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_ai_prime_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_ai_prime_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_ai_prime_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_bi_prime_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_bi_prime_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_bi_prime_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_bi_prime_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_bi_prime_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rf_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rf_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rf_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rf_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rf_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rd_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rd_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rd_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rd_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rd_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rj_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rj_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rj_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rj_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rj_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rc_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rc_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rc_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rc_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rc_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rg_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rg_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rg_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rg_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rg_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_1_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_1_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_1_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_1_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_1_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_2_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_2_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_2_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_2_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_2_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_3_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_3_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_3_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_3_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_3_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_d_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_d_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_d_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_d_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_d_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_zeta/test_reverse_mode_autodiff_jacobi_zeta_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/jacobi_zeta/test_reverse_mode_autodiff_jacobi_zeta_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_zeta/test_reverse_mode_autodiff_jacobi_zeta_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_zeta/test_reverse_mode_autodiff_jacobi_zeta_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_zeta/test_reverse_mode_autodiff_jacobi_zeta_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/heuman_lambda/test_reverse_mode_autodiff_heuman_lambda_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/heuman_lambda/test_reverse_mode_autodiff_heuman_lambda_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/heuman_lambda/test_reverse_mode_autodiff_heuman_lambda_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/heuman_lambda/test_reverse_mode_autodiff_heuman_lambda_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/heuman_lambda/test_reverse_mode_autodiff_heuman_lambda_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cd_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cd_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cd_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cd_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cd_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cn_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cn_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cn_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cn_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cn_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cs_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cs_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cs_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cs_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cs_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_dc_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_dc_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_dc_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_dc_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_dc_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_dn_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_dn_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_dn_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_dn_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_dn_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_ds_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_ds_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_ds_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_ds_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_ds_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_nc_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_nc_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_nc_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_nc_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_nc_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_nd_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_nd_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_nd_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_nd_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_nd_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_ns_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_ns_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_ns_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_ns_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_ns_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sc_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sc_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sc_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sc_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sc_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sd_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sd_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sd_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sd_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sd_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sn_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sn_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sn_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sn_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sn_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta1_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta1_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta1_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta1_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta1_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta1tau_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta1tau_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta1tau_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta1tau_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta1tau_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta2_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta2_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta2_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta2_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta2_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta1tau_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta1tau_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta1tau_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta1tau_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta1tau_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3tau_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3tau_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3tau_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3tau_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3tau_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3m1_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3m1_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3m1_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3m1_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3m1_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3m1tau_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3m1tau_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3m1tau_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3m1tau_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3m1tau_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4tau_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4tau_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4tau_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4tau_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4tau_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4m1_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4m1_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4m1_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4m1_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4m1_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4m1tau_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4m1tau_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4m1tau_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4m1tau_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4m1tau_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_w0_compile_test_ET_ON_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_w0_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_w0_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_w0_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_wm1_compile_test_ET_ON_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_wm1_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_wm1_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_wm1_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_w0_prime_compile_test_ET_ON_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_w0_prime_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_w0_prime_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_w0_prime_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_wm1_prime_compile_test_ET_ON_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_wm1_prime_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_wm1_prime_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_wm1_prime_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/riemann_zeta/test_reverse_mode_autodiff_zeta_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/riemann_zeta/test_reverse_mode_autodiff_zeta_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/riemann_zeta/test_reverse_mode_autodiff_zeta_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/riemann_zeta/test_reverse_mode_autodiff_zeta_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/riemann_zeta/test_reverse_mode_autodiff_zeta_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/expint/test_reverse_mode_autodiff_expint_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/expint/test_reverse_mode_autodiff_expint_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/expint/test_reverse_mode_autodiff_expint_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/expint/test_reverse_mode_autodiff_expint_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/expint/test_reverse_mode_autodiff_expint_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_1F0_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_1F0_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_1F0_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_1F0_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_1F0_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_0F1_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_0F1_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_0F1_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_0F1_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_0F1_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_2F0_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_2F0_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_2F0_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_2F0_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_2F0_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_1F1_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_1F1_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_1F1_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_1F1_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_1F1_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_sin_pi_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_sin_pi_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_sin_pi_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_sin_pi_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_sin_pi_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_cos_pi_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_cos_pi_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_cos_pi_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_cos_pi_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_cos_pi_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_log1p_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_log1p_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_log1p_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_log1p_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_log1p_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_expm1_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_expm1_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_expm1_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_expm1_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_expm1_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_cbrt_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_cbrt_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_cbrt_compile_test_ET_OFF_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_cbrt_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_cbrt_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_cbrt_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_sqrt1pm1_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_sqrt1pm1_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_sqrt1pm1_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_sqrt1pm1_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_sqrt1pm1_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_powm1_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_powm1_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_powm1_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_powm1_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_powm1_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_hypot_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_hypot_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_hypot_compile_test_ET_OFF_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_hypot_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_hypot_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_hypot_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_rsqrt_compile_test_ET_ON_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_rsqrt_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_rsqrt_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_rsqrt_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_logaddexp_compile_test_ET_ON_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_logaddexp_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_logaddexp_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_logaddexp_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_logsumexp_compile_test_ET_ON_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_logsumexp_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_logsumexp_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_logsumexp_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/sinc_pi/test_reverse_mode_autodiff_sinc_pi_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/sinc_pi/test_reverse_mode_autodiff_sinc_pi_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/sinc_pi/test_reverse_mode_autodiff_sinc_pi_compile_test_ET_OFF_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/sinc_pi/test_reverse_mode_autodiff_sinc_pi_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/sinc_pi/test_reverse_mode_autodiff_sinc_pi_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/sinc_pi/test_reverse_mode_autodiff_sinc_pi_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/sinhc_pi/test_reverse_mode_autodiff_sinhc_pi_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/sinhc_pi/test_reverse_mode_autodiff_sinhc_pi_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/sinhc_pi/test_reverse_mode_autodiff_sinhc_pi_compile_test_ET_OFF_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/sinhc_pi/test_reverse_mode_autodiff_sinhc_pi_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/sinhc_pi/test_reverse_mode_autodiff_sinhc_pi_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/sinhc_pi/test_reverse_mode_autodiff_sinhc_pi_compile_test_ET_OFF_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/owens_t/test_reverse_mode_autodiff_owens_t_compile_test_ET_ON_bin_float_types.cpp ] + [ run test_reverse_mode_autodiff_special_functions_compile/owens_t/test_reverse_mode_autodiff_owens_t_compile_test_ET_OFF_bin_float_types.cpp ] + [ run-fail test_reverse_mode_autodiff_special_functions_compile/owens_t/test_reverse_mode_autodiff_owens_t_compile_test_ET_OFF_bin_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/owens_t/test_reverse_mode_autodiff_owens_t_compile_test_ET_ON_multiprecision_float_types.cpp ] + [ compile-fail test_reverse_mode_autodiff_special_functions_compile/owens_t/test_reverse_mode_autodiff_owens_t_compile_test_ET_OFF_multiprecision_float_types.cpp ] + ; +# END AUTODIFF LONG RUNNING TESTS # # These tests are run by default when you invoke the Jamfile, but # they are deliberately NOT run from the CI scripts as they soak up @@ -1377,11 +1985,9 @@ test-suite long-running-tests : [ run test_pFq_precision.cpp ../tools//mpfr ../tools//gmp /boost/test//boost_unit_test_framework /boost/system//boost_system /boost/chrono//boost_chrono : : : [ check-target-builds ../config//has_mpfr : : no ] [ requires cxx11_hdr_initializer_list cxx11_auto_declarations cxx11_lambdas cxx11_unified_initialization_syntax cxx11_smart_ptr ] release clang:-Wno-literal-range ] [ run test_constant_generate.cpp : : : release USE_CPP_FLOAT=1 off:no ] ; - build-project ../example ; # Expect policy_ref_snips13 to fail (message about no Cauchy Mean). - rule get_float128_tests { local result ; @@ -1749,6 +2355,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 ../example//examples ../tools ; +alias github_ci_block_2 : quadrature interpolators autodiff test_reverse_mode_autodiff ../example//examples ../tools ; explicit github_ci_block_1 ; explicit github_ci_block_2 ; diff --git a/test/airy_ai_float.svg b/test/airy_ai_float.svg new file mode 100644 index 0000000000..25d1c5e240 --- /dev/null +++ b/test/airy_ai_float.svg @@ -0,0 +1,10044 @@ + + + + + + + +-1.875 + +-1.25 + +-0.625 + +0 + +0.625 + +1.25 + +1.875 + +2.5 + +-2 + +-1 + +0 + +1 + +2 + +3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/test/airy_ai_float_white.svg b/test/airy_ai_float_white.svg new file mode 100644 index 0000000000..0a2e5db8de --- /dev/null +++ b/test/airy_ai_float_white.svg @@ -0,0 +1,10044 @@ + + + + + + + +-1.875 + +-1.25 + +-0.625 + +0 + +0.625 + +1.25 + +1.875 + +2.5 + +-2 + +-1 + +0 + +1 + +2 + +3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/test/airy_ai_float_white_no_envelope.svg b/test/airy_ai_float_white_no_envelope.svg new file mode 100644 index 0000000000..24df1ec2d6 --- /dev/null +++ b/test/airy_ai_float_white_no_envelope.svg @@ -0,0 +1,10038 @@ + + + + + + + +-1.875 + +-1.25 + +-0.625 + +0 + +0.625 + +1.25 + +1.875 + +2.5 + +-2 + +-1 + +0 + +1 + +2 + +3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/test/cma_es_test.cpp b/test/cma_es_test.cpp index d2016997e6..f221094223 100644 --- a/test/cma_es_test.cpp +++ b/test/cma_es_test.cpp @@ -146,18 +146,6 @@ void test_beale() { CHECK_ABSOLUTE_ERROR(Real(1)/Real(2), local_minima[1], Real(0.1)); } -#if BOOST_MATH_TEST_UNITS_COMPATIBILITY -void test_dimensioned_sphere() { - std::cout << "Testing CMA-ES on dimensioned sphere . . .\n"; - using ArgType = std::vector>; - auto params = cma_es_parameters(); - params.lower_bounds.resize(4, -1.0*meter); - params.upper_bounds.resize(4, 1*meter); - std::mt19937_64 gen(56789); - auto local_minima = cma_es(dimensioned_sphere, params, gen); -} -#endif - int main() { #if (defined(__clang__) || defined(_MSC_VER)) test_ackley(); @@ -166,9 +154,6 @@ int main() { test_rastrigin(); test_three_hump_camel(); test_beale(); -#endif -#if BOOST_MATH_TEST_UNITS_COMPATIBILITY - test_dimensioned_sphere(); #endif test_sphere(); return boost::math::test::report_errors(); diff --git a/test/compile_test/instantiate.hpp b/test/compile_test/instantiate.hpp index 410d50d890..26fa53d7b9 100644 --- a/test/compile_test/instantiate.hpp +++ b/test/compile_test/instantiate.hpp @@ -369,6 +369,7 @@ void instantiate(RealType) boost::math::jacobi_theta4m1(v1, v2); boost::math::jacobi_theta4m1tau(v1, v2); boost::math::hypot(v1, v2); + boost::math::hypot(v1, v2, v3); boost::math::sinc_pi(v1); boost::math::sinhc_pi(v1); boost::math::asinh(v1); diff --git a/test/compile_test/sf_hypot_incl_test.cpp b/test/compile_test/sf_hypot_incl_test.cpp index c74b7f0fc5..46584c8acc 100644 --- a/test/compile_test/sf_hypot_incl_test.cpp +++ b/test/compile_test/sf_hypot_incl_test.cpp @@ -16,8 +16,11 @@ void compile_and_link_test() { check_result(boost::math::hypot(f, f)); + check_result(boost::math::hypot(f, f, f)); check_result(boost::math::hypot(d, d)); + check_result(boost::math::hypot(d, d,d)); #ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS check_result(boost::math::hypot(l, l)); + check_result(boost::math::hypot(l, l, l)); #endif } diff --git a/test/differential_evolution_test.cpp b/test/differential_evolution_test.cpp index b3d70c901f..fdbb97dfad 100644 --- a/test/differential_evolution_test.cpp +++ b/test/differential_evolution_test.cpp @@ -188,19 +188,6 @@ void test_beale() { CHECK_ABSOLUTE_ERROR(Real(1)/Real(2), local_minima[1], Real(2e-4)); } -#if BOOST_MATH_TEST_UNITS_COMPATIBILITY -void test_dimensioned_sphere() { - std::cout << "Testing differential evolution on dimensioned sphere . . .\n"; - using ArgType = std::vector>; - auto params = differential_evolution_parameters(); - params.lower_bounds.resize(4, -1.0*meter); - params.upper_bounds.resize(4, 1*meter); - params.threads = 2; - std::mt19937_64 gen(56789); - auto local_minima = differential_evolution(dimensioned_sphere, params, gen); -} -#endif - int main() { #if defined(__clang__) || defined(_MSC_VER) @@ -210,9 +197,6 @@ int main() { test_rastrigin(); test_three_hump_camel(); test_beale(); -#endif -#if BOOST_MATH_TEST_UNITS_COMPATIBILITY - test_dimensioned_sphere(); #endif test_sphere(); test_parameter_checks(); diff --git a/test/gegenbauer_test.cpp b/test/gegenbauer_test.cpp index 8e779acf79..69dc6b97a4 100644 --- a/test/gegenbauer_test.cpp +++ b/test/gegenbauer_test.cpp @@ -5,7 +5,7 @@ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) */ -#ifdef SYCL_LANGUAGE_VERSION +#ifdef BOOST_MATH_ENABLE_SYCL #include "sycl/sycl.hpp" #endif diff --git a/test/git_issue_1294.cpp b/test/git_issue_1294.cpp new file mode 100644 index 0000000000..047a8ea7b3 --- /dev/null +++ b/test/git_issue_1294.cpp @@ -0,0 +1,33 @@ +// Copyright 2025 Matt Borland +// 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) +// +// See: https://github.com/boostorg/math/issues/1294 + +#include +#include "math_unit_test.hpp" + +int main() +{ + using namespace boost::math::policies; + using boost::math::logistic_distribution; + + typedef policy< + promote_float, + promote_double + > with_promotion; + + constexpr double p = 2049.0/4096; + constexpr double ref = 9.76562577610225755e-04; + + logistic_distribution dist_promote; + const double x = quantile(dist_promote, p); + + // Previously we had: 9.76562577610170027e-04 + // Which is an ULP distance of 256 + CHECK_ULP_CLOSE(x, ref, 1); + + return boost::math::test::report_errors(); +} diff --git a/test/git_issue_1308.cpp b/test/git_issue_1308.cpp new file mode 100644 index 0000000000..66cc35a7f7 --- /dev/null +++ b/test/git_issue_1308.cpp @@ -0,0 +1,36 @@ +// Copyright John Maddock 2025. +// 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) + +#define BOOST_TEST_MAIN +#include +#include +#include +#include +#include + +typedef boost::math::policies::policy< + boost::math::policies::promote_double +> SciPyPolicy; + +using mp_t = boost::multiprecision::cpp_bin_float_quad; + +BOOST_AUTO_TEST_CASE(test_main) +{ + double v = 980.0; + double l = 38.0; + double x = 1.5; + + // With policy + double y_policy = boost::math::cdf( + boost::math::non_central_t_distribution(v, l), x); + double reference = 1.1824454111413493e-291; + + std::cout << std::setprecision(17); + std::cout << "With SciPyPolicy: cdf(noncentral_t; x=" << x << ", v=" << v << ", l=" << l << ") = " << y_policy << std::endl; + + double tolerance = 1e-8; // precision is limited due to cancellation + BOOST_CHECK_CLOSE_FRACTION(y_policy, reference, tolerance); +} + diff --git a/test/hypot_test.cpp b/test/hypot_test.cpp index 707a425166..e1188ad076 100644 --- a/test/hypot_test.cpp +++ b/test/hypot_test.cpp @@ -10,6 +10,7 @@ #include #include #include +#include #include @@ -41,6 +42,22 @@ const float boundaries[] = { std::sqrt((std::numeric_limits::min)()) * 2, }; +void do_test_boundaries(float x, float y, float z) +{ + float expected = static_cast((boost::math::hypot)( +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + static_cast(x), + static_cast(y), + static_cast(z))); + #else + static_cast(x), + static_cast(y), + static_cast(z)); + #endif + float found = (boost::math::hypot)(x, y, z); + BOOST_CHECK_CLOSE(expected, found, tolerance); +} + void do_test_boundaries(float x, float y) { float expected = static_cast((boost::math::hypot)( @@ -55,12 +72,31 @@ void do_test_boundaries(float x, float y) BOOST_CHECK_CLOSE(expected, found, tolerance); } +void test_boundaries(float x, float y, float z) +{ + do_test_boundaries(x, y, z); + do_test_boundaries(-x, y, z); + do_test_boundaries(x, -y, z); + do_test_boundaries(x, y, -z); + do_test_boundaries(-x, -y, z); + do_test_boundaries(-x, y, -z); + do_test_boundaries(x, -y, -z); + do_test_boundaries(-x, -y, -z); +} + void test_boundaries(float x, float y) { do_test_boundaries(x, y); do_test_boundaries(-x, y); do_test_boundaries(-x, -y); do_test_boundaries(x, -y); + + for(unsigned i = 0; i < sizeof(boundaries)/sizeof(float); ++i) + { + test_boundaries(x, y, boundaries[i]); + test_boundaries(x, y, boundaries[i] + std::numeric_limits::epsilon()*boundaries[i]); + test_boundaries(x, y, boundaries[i] - std::numeric_limits::epsilon()*boundaries[i]); + } } void test_boundaries(float x) @@ -92,12 +128,26 @@ void test_spots() BOOST_CHECK_EQUAL(boost::math::hypot(-boundaries[i], zero), std::fabs(-boundaries[i])); BOOST_CHECK_EQUAL(boost::math::hypot(boundaries[i], -zero), std::fabs(boundaries[i])); BOOST_CHECK_EQUAL(boost::math::hypot(-boundaries[i], -zero), std::fabs(-boundaries[i])); + + BOOST_CHECK_EQUAL(boost::math::hypot(boundaries[i], zero, zero), std::fabs(boundaries[i])); + BOOST_CHECK_EQUAL(boost::math::hypot(-boundaries[i], zero, zero), std::fabs(-boundaries[i])); + BOOST_CHECK_EQUAL(boost::math::hypot(boundaries[i], -zero, zero), std::fabs(boundaries[i])); + BOOST_CHECK_EQUAL(boost::math::hypot(-boundaries[i], -zero, zero), std::fabs(-boundaries[i])); + BOOST_CHECK_EQUAL(boost::math::hypot(zero, boundaries[i], zero), std::fabs(boundaries[i])); + BOOST_CHECK_EQUAL(boost::math::hypot(zero, -boundaries[i], zero), std::fabs(-boundaries[i])); + BOOST_CHECK_EQUAL(boost::math::hypot(zero, boundaries[i], -zero), std::fabs(boundaries[i])); + BOOST_CHECK_EQUAL(boost::math::hypot(zero, -boundaries[i], -zero), std::fabs(-boundaries[i])); for(unsigned j = 0; j < sizeof(boundaries)/sizeof(float); ++j) { BOOST_CHECK_EQUAL(boost::math::hypot(boundaries[i], boundaries[j]), boost::math::hypot(boundaries[j], boundaries[i])); BOOST_CHECK_EQUAL(boost::math::hypot(boundaries[i], boundaries[j]), boost::math::hypot(boundaries[i], -boundaries[j])); BOOST_CHECK_EQUAL(boost::math::hypot(-boundaries[i], -boundaries[j]), boost::math::hypot(-boundaries[j], -boundaries[i])); BOOST_CHECK_EQUAL(boost::math::hypot(-boundaries[i], -boundaries[j]), boost::math::hypot(-boundaries[i], boundaries[j])); + + BOOST_CHECK_EQUAL(boost::math::hypot(boundaries[i], boundaries[j], boundaries[j]), boost::math::hypot(boundaries[j], boundaries[i], boundaries[j])); + BOOST_CHECK_EQUAL(boost::math::hypot(boundaries[i], boundaries[j], boundaries[j]), boost::math::hypot(boundaries[i], boundaries[j], -boundaries[j])); + BOOST_CHECK_EQUAL(boost::math::hypot(-boundaries[i], -boundaries[j], boundaries[j]), boost::math::hypot(-boundaries[j], -boundaries[i], boundaries[j])); + BOOST_CHECK_EQUAL(boost::math::hypot(-boundaries[i], -boundaries[j], boundaries[j]), boost::math::hypot(-boundaries[i], boundaries[j], boundaries[j])); } } if((std::numeric_limits::has_infinity) && (std::numeric_limits::has_quiet_NaN)) @@ -108,6 +158,16 @@ void test_spots() BOOST_CHECK_EQUAL(boost::math::hypot(-inf, nan), inf); BOOST_CHECK_EQUAL(boost::math::hypot(nan, inf), inf); BOOST_CHECK_EQUAL(boost::math::hypot(nan, -inf), inf); + + BOOST_CHECK_EQUAL(boost::math::hypot(inf, nan, inf), inf); + BOOST_CHECK_EQUAL(boost::math::hypot(-inf, nan, inf), inf); + BOOST_CHECK_EQUAL(boost::math::hypot(nan, inf, inf), inf); + BOOST_CHECK_EQUAL(boost::math::hypot(nan, -inf, inf), inf); + BOOST_CHECK_EQUAL(boost::math::hypot(nan, nan, inf), inf); + BOOST_CHECK_EQUAL(boost::math::hypot(-inf, nan, nan), inf); + BOOST_CHECK_EQUAL(boost::math::hypot(nan, inf, nan), inf); + BOOST_CHECK_EQUAL(boost::math::hypot(nan, -inf, nan), inf); + for(unsigned j = 0; j < sizeof(boundaries)/sizeof(float); ++j) { BOOST_CHECK_EQUAL(boost::math::hypot(boundaries[j], inf), inf); @@ -118,6 +178,15 @@ void test_spots() BOOST_CHECK_EQUAL(boost::math::hypot(-boundaries[j], -inf), inf); BOOST_CHECK_EQUAL(boost::math::hypot(-inf, boundaries[j]), inf); BOOST_CHECK_EQUAL(boost::math::hypot(-inf, -boundaries[j]), inf); + + BOOST_CHECK_EQUAL(boost::math::hypot(boundaries[j], inf, inf), inf); + BOOST_CHECK_EQUAL(boost::math::hypot(-boundaries[j], inf, inf), inf); + BOOST_CHECK_EQUAL(boost::math::hypot(inf, boundaries[j], inf), inf); + BOOST_CHECK_EQUAL(boost::math::hypot(inf, -boundaries[j], inf), inf); + BOOST_CHECK_EQUAL(boost::math::hypot(boundaries[j], -inf, inf), inf); + BOOST_CHECK_EQUAL(boost::math::hypot(-boundaries[j], -inf, inf), inf); + BOOST_CHECK_EQUAL(boost::math::hypot(-inf, boundaries[j], inf), inf); + BOOST_CHECK_EQUAL(boost::math::hypot(-inf, -boundaries[j], inf), inf); } } } diff --git a/test/jso_test.cpp b/test/jso_test.cpp index 443257a6c0..df57baba9f 100644 --- a/test/jso_test.cpp +++ b/test/jso_test.cpp @@ -56,14 +56,16 @@ template void test_ackley() { std::array initial_guess{0, 0}; jso_params.initial_guess = &initial_guess; local_minima = jso(ack, jso_params, gen); - CHECK_EQUAL(local_minima[0], Real(0)); - CHECK_EQUAL(local_minima[1], Real(0)); + + using std::fabs; + CHECK_LE(fabs(local_minima[0]), 128 * boost::math::tools::epsilon()); + CHECK_LE(fabs(local_minima[1]), 128 * boost::math::tools::epsilon()); } template void test_rosenbrock_saddle() { std::cout << "Testing jSO on Rosenbrock saddle . . .\n"; using ArgType = std::array; - auto jso_params = jso_parameters(); + jso_parameters jso_params { }; jso_params.lower_bounds = {0.5, 0.5}; jso_params.upper_bounds = {2.048, 2.048}; std::mt19937_64 gen(234568); @@ -143,31 +145,13 @@ void test_beale() { CHECK_ABSOLUTE_ERROR(Real(1)/Real(2), local_minima[1], Real(2e-4)); } -#if BOOST_MATH_TEST_UNITS_COMPATIBILITY -void test_dimensioned_sphere() { - std::cout << "Testing jso on dimensioned sphere . . .\n"; - using ArgType = std::vector>; - auto params = jso_parameters(); - params.lower_bounds.resize(4, -1.0*meter); - params.upper_bounds.resize(4, 1*meter); - params.threads = 2; - std::mt19937_64 gen(56789); - auto local_minima = jso(dimensioned_sphere, params, gen); -} -#endif - int main() { -#if defined(__clang__) || defined(_MSC_VER) test_ackley(); test_ackley(); test_rosenbrock_saddle(); test_rastrigin(); test_three_hump_camel(); test_beale(); -#endif -#if BOOST_MATH_TEST_UNITS_COMPATIBILITY - test_dimensioned_sphere(); -#endif test_sphere(); test_weighted_lehmer_mean(); return boost::math::test::report_errors(); diff --git a/test/math_unit_test.hpp b/test/math_unit_test.hpp index 648f7de9c5..bd85caa86b 100644 --- a/test/math_unit_test.hpp +++ b/test/math_unit_test.hpp @@ -58,7 +58,7 @@ bool check_mollified_close(Real expected, Real computed, Real tol, std::string c } using std::max; using std::abs; - Real denom = (max)(abs(expected), Real(1)); + Real denom = (max)(Real(abs(expected)), Real(1)); Real mollified_relative_error = abs(expected - computed)/denom; if (mollified_relative_error > tol) { diff --git a/test/pow_test.cpp b/test/pow_test.cpp index 8a5ae0c109..52e86b0844 100644 --- a/test/pow_test.cpp +++ b/test/pow_test.cpp @@ -15,7 +15,7 @@ #include "../include_private/boost/math/tools/test.hpp" #define BOOST_TEST_MAIN -#ifdef SYCL_LANGUAGE_VERSION +#ifdef BOOST_MATH_ENABLE_SYCL #include "sycl/sycl.hpp" #endif diff --git a/test/random_search_test.cpp b/test/random_search_test.cpp index 82e24a27ff..51eccf7450 100644 --- a/test/random_search_test.cpp +++ b/test/random_search_test.cpp @@ -151,21 +151,6 @@ void test_beale() { CHECK_ABSOLUTE_ERROR(Real(1)/Real(2), local_minima[1], Real(0.1)); } -#if BOOST_MATH_TEST_UNITS_COMPATIBILITY -void test_dimensioned_sphere() { - std::cout << "Testing random search on dimensioned sphere . . .\n"; - using ArgType = std::vector>; - auto rs_params = random_search_parameters(); - rs_params.lower_bounds.resize(4, -1.0*meter); - rs_params.upper_bounds.resize(4, 1*meter); - rs_params.max_function_calls = 100000; - rs_params.threads = 2; - std::mt19937_64 gen(56789); - auto local_minima = random_search(dimensioned_sphere, rs_params, gen); -} - -#endif - int main() { #if defined(__clang__) || defined(_MSC_VER) test_ackley(); @@ -174,9 +159,6 @@ int main() { test_rastrigin(); test_three_hump_camel(); test_beale(); -#endif -#if BOOST_MATH_TEST_UNITS_COMPATIBILITY - test_dimensioned_sphere(); #endif test_sphere(); return boost::math::test::report_errors(); diff --git a/test/test_airy.cpp b/test/test_airy.cpp index 224c590094..f5f0900c45 100644 --- a/test/test_airy.cpp +++ b/test/test_airy.cpp @@ -3,7 +3,7 @@ // Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#ifndef SYCL_LANGUAGE_VERSION +#ifndef BOOST_MATH_ENABLE_SYCL #include #else #include "sycl/sycl.hpp" @@ -60,7 +60,7 @@ void test_airy(T, const char* name) if (boost::math::tools::digits() > 100) tol *= 2; - #ifdef SYCL_LANGUAGE_VERSION + #ifdef BOOST_MATH_ENABLE_SYCL tol *= 5; #endif diff --git a/test/test_arcsine.cpp b/test/test_arcsine.cpp index 1ad7d8c0d0..eed8dc9481 100644 --- a/test/test_arcsine.cpp +++ b/test/test_arcsine.cpp @@ -10,7 +10,7 @@ // Tests for the arcsine Distribution. -#ifndef SYCL_LANGUAGE_VERSION +#ifndef BOOST_MATH_ENABLE_SYCL #include // Must be 1st include, and include_directory /libs/math/src/tr1/ is needed. #else #include "sycl/sycl.hpp" diff --git a/test/test_arcsine_cdf_double.cu b/test/test_arcsine_cdf_double.cu index 3ac9e22cd0..fbde1ecfc3 100644 --- a/test/test_arcsine_cdf_double.cu +++ b/test/test_arcsine_cdf_double.cu @@ -106,4 +106,4 @@ int main(void) std::cerr << "Stopped with exception: " << e.what() << std::endl; } return 0; -} \ No newline at end of file +} diff --git a/test/test_arcsine_range_support_double.cu b/test/test_arcsine_range_support_double.cu index b3fb575faa..7d6e5669b5 100644 --- a/test/test_arcsine_range_support_double.cu +++ b/test/test_arcsine_range_support_double.cu @@ -107,4 +107,4 @@ int main(void) std::cerr << "Stopped with exception: " << e.what() << std::endl; } return 0; -} \ No newline at end of file +} diff --git a/test/test_arcsine_range_support_float.cu b/test/test_arcsine_range_support_float.cu index d207d0598e..9dc7e3dd4e 100644 --- a/test/test_arcsine_range_support_float.cu +++ b/test/test_arcsine_range_support_float.cu @@ -107,4 +107,4 @@ int main(void) std::cerr << "Stopped with exception: " << e.what() << std::endl; } return 0; -} \ No newline at end of file +} diff --git a/test/test_autodiff_reverse.hpp b/test/test_autodiff_reverse.hpp new file mode 100644 index 0000000000..1ad56c2ed1 --- /dev/null +++ b/test/test_autodiff_reverse.hpp @@ -0,0 +1,162 @@ +// 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 TEST_AUTODIFF_REVERSE_HPP +#define TEST_AUTODIFF_REVERSE_HPP +#ifndef BOOST_TEST_MODULE +#define BOOST_TEST_MODULE test_autodiff +#endif +#define BOOST_MP_NO_QUAD +#define BOOST_MATH_DISABLE_FLOAT128 +#include +#include // always safe + +#if __has_include() +#include +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +using boost::multiprecision::cpp_bin_float_50; + +namespace mp11 = boost::mp11; +namespace bmp = boost::multiprecision; +namespace rdiff_detail = boost::math::differentiation::reverse_mode::detail; +namespace rdiff = boost::math::differentiation::reverse_mode; +#if defined(BOOST_USE_VALGRIND) || defined(BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS) +using bin_float_types = mp11::mp_list; +#elif defined(__STDCPP_FLOAT32_T__) && defined(__STDCPP_FLOAT64_T__) +using bin_float_types = mp11::mp_list; +#else +using bin_float_types = mp11::mp_list; +#endif + +#if !defined(BOOST_VERSION) || BOOST_VERSION < 107000 || defined(BOOST_USE_VALGRIND) \ + || defined(BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS) || defined(BOOST_NO_STRESS_TEST) \ + || defined(BOOST_MATH_STANDALONE) +using multiprecision_float_types = mp11::mp_list<>; +#else +#define BOOST_AUTODIFF_TESTING_INCLUDE_MULTIPRECISION +using multiprecision_float_types = mp11::mp_list; +#endif + +using all_float_types = mp11::mp_append; + +using namespace boost::math::differentiation; +#endif // TEST_AUTODIFF_REVERSE_HPP +template +using is_multiprecision_t = mp11::mp_or, bmp::is_number_expression>; + +template +using if_c = mp11::mp_eval_if_c; + +template +using if_t = if_c; +/** + * struct to emit pseudo-random values from a given interval. + * Endpoints are closed or open depending on whether or not they're infinite). + */ +/** + * Simple struct to hold constants that are used in each test + * since BOOST_AUTO_TEST_CASE_TEMPLATE doesn't support fixtures. + */ +template +struct test_constants_t +{ + static constexpr auto n_samples + = if_t, bmp::is_number_expression>, + mp11::mp_int<10>, + mp11::mp_int<25>>::value; + static constexpr auto order = OrderValue; + static constexpr T pct_epsilon() noexcept + { + return (is_multiprecision_t::value ? 2 : 1) * std::numeric_limits::epsilon() * 100; + } +}; + +template +using test_constants = test_constants_t; + +template +struct RandomSample +{ + using numeric_limits_t = std::numeric_limits; + using is_integer_t = mp11::mp_bool::is_integer>; + + using distribution_param_t + = if_t, + if_t, long double>, + T>; + static_assert((std::numeric_limits::is_integer + && std::numeric_limits::is_integer) + || (!std::numeric_limits::is_integer + && !std::numeric_limits::is_integer), + "T and distribution_param_t must either both be integral or " + "both be not integral"); + + using dist_t = if_t, + std::uniform_real_distribution>; + + struct get_integral_endpoint + { + template + constexpr distribution_param_t operator()(V finish) const noexcept + { + return static_cast(finish); + } + }; + + struct get_real_endpoint + { + template + constexpr distribution_param_t operator()(V finish) const noexcept + { + return std::nextafter(static_cast(finish), + (std::numeric_limits::max)()); + } + }; + + using get_endpoint_t = if_t; + + template + RandomSample(U start, V finish) + : rng_(std::random_device{}()) + , dist_(static_cast(start), get_endpoint_t{}(finish)) + {} + + T next() noexcept { return static_cast(dist_(rng_)); } + T normalize(const T& x) noexcept { return x / ((dist_.max)() - (dist_.min)()); } + + std::mt19937 rng_; + dist_t dist_; +}; +static_assert( + std::is_same::dist_t, std::uniform_real_distribution>::value, ""); +static_assert( + std::is_same::dist_t, std::uniform_int_distribution>::value, ""); +static_assert(std::is_same::dist_t, + std::uniform_int_distribution>::value, + ""); +static_assert(std::is_same::dist_t, + std::uniform_real_distribution>::value, + ""); + +template +constexpr T boost_close_tol(T scale_factor = 1e5) +{ + return 0.01; +} diff --git a/test/test_bernoulli.cpp b/test/test_bernoulli.cpp index 59868e2f0e..5f78b0afc5 100644 --- a/test/test_bernoulli.cpp +++ b/test/test_bernoulli.cpp @@ -18,7 +18,7 @@ # pragma warning (disable : 4127) // conditional expression is constant. #endif -#ifdef SYCL_LANGUAGE_VERSION +#ifdef BOOST_MATH_ENABLE_SYCL #include "sycl/sycl.hpp" #endif diff --git a/test/test_bernoulli_range_support_double.cu b/test/test_bernoulli_range_support_double.cu index ade952fca3..e97c659d48 100644 --- a/test/test_bernoulli_range_support_double.cu +++ b/test/test_bernoulli_range_support_double.cu @@ -107,4 +107,4 @@ int main(void) std::cerr << "Stopped with exception: " << e.what() << std::endl; } return 0; -} \ No newline at end of file +} diff --git a/test/test_bernoulli_range_support_float.cu b/test/test_bernoulli_range_support_float.cu index ef276b9384..96f30cddf1 100644 --- a/test/test_bernoulli_range_support_float.cu +++ b/test/test_bernoulli_range_support_float.cu @@ -107,4 +107,4 @@ int main(void) std::cerr << "Stopped with exception: " << e.what() << std::endl; } return 0; -} \ No newline at end of file +} diff --git a/test/test_bessel_i.cpp b/test/test_bessel_i.cpp index 56e7669ffb..10641848dc 100644 --- a/test/test_bessel_i.cpp +++ b/test/test_bessel_i.cpp @@ -3,7 +3,7 @@ // Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#ifndef SYCL_LANGUAGE_VERSION +#ifndef BOOST_MATH_ENABLE_SYCL #include #else #define BOOST_MATH_PROMOTE_DOUBLE_POLICY false @@ -97,7 +97,7 @@ void expected_results() "linux", // platform largest_type, // test type(s) ".*Random.*", // test data group - #ifdef SYCL_LANGUAGE_VERSION + #ifdef BOOST_MATH_ENABLE_SYCL ".*", 600, 200); #else ".*", 400, 200); // test function @@ -130,7 +130,7 @@ void expected_results() ".*", // platform largest_type, // test type(s) ".*", // test data group - #ifdef SYCL_LANGUAGE_VERSION + #ifdef BOOST_MATH_ENABLE_SYCL ".*", 400, 200); #else ".*", 20, 10); // test function diff --git a/test/test_bessel_i.hpp b/test/test_bessel_i.hpp index ca021fa8c5..ee19e16ed2 100644 --- a/test/test_bessel_i.hpp +++ b/test/test_bessel_i.hpp @@ -201,7 +201,7 @@ void test_bessel(T, const char* name) } } T tolerance = boost::math::tools::epsilon() * 100; -#ifndef SYCL_LANGUAGE_VERSION +#ifndef BOOST_MATH_ENABLE_SYCL if ((boost::math::tools::digits() <= std::numeric_limits::digits) && (std::numeric_limits::max_exponent > 1000)) { BOOST_CHECK_CLOSE_FRACTION(boost::math::cyl_bessel_i(T(0.5), T(710)), SC_(3.3447452278080108123142599104927325061327359278058601201179e306), tolerance); diff --git a/test/test_bessel_j.cpp b/test/test_bessel_j.cpp index 0dc52d20cb..2570c3e092 100644 --- a/test/test_bessel_j.cpp +++ b/test/test_bessel_j.cpp @@ -3,7 +3,7 @@ // Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#ifndef SYCL_LANGUAGE_VERSION +#ifndef BOOST_MATH_ENABLE_SYCL #include #else #define BOOST_MATH_PROMOTE_DOUBLE_POLICY false @@ -345,7 +345,3 @@ BOOST_AUTO_TEST_CASE( test_main ) "to pass." << std::endl; #endif } - - - - diff --git a/test/test_bessel_j.hpp b/test/test_bessel_j.hpp index b78205310d..33c150df48 100644 --- a/test/test_bessel_j.hpp +++ b/test/test_bessel_j.hpp @@ -1,4 +1,5 @@ -// (C) Copyright John Maddock 2007. +// (C) Copyright John Maddock 2007 - 2025. +// (C) Copyright Christopher Kormanyos 2025. // 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) @@ -131,6 +132,8 @@ void do_test_sph_bessel_j(const T& data, const char* type_name, const char* test template void test_bessel(T, const char* name) { + using table_entry_type = typename table_type::type; + // // The actual test data is rather verbose, so it's in a separate file // @@ -138,7 +141,7 @@ void test_bessel(T, const char* name) // three items, input value a, input value b and erf(a, b): // // function values calculated on http://functions.wolfram.com/ - static const std::array::type, 3>, 8> j0_data = {{ + static const std::array, 8> j0_data = {{ { { SC_(0.0), SC_(0.0), SC_(1.0) } }, { { SC_(0.0), SC_(1.0), SC_(0.7651976865579665514497175261026632209093) } }, { { SC_(0.0), SC_(-2.0), SC_(0.2238907791412356680518274546499486258252) } }, @@ -148,7 +151,7 @@ void test_bessel(T, const char* name) {{ SC_(0.0), SC_(1e-10), SC_(0.999999999999999999997500000000000000000) }}, {{ SC_(0.0), SC_(-1e+01), SC_(-0.2459357644513483351977608624853287538296) }}, }}; - static const std::array::type, 3>, 6> j0_tricky = {{ + static const std::array, 6> j0_tricky = {{ // Big numbers make the accuracy of std::sin the limiting factor: { { SC_(0.0), SC_(1e+03), SC_(0.02478668615242017456133073111569370878617) } }, { { SC_(0.0), SC_(1e+05), SC_(-0.001719201116235972192570601477073201747532) } }, @@ -159,7 +162,7 @@ void test_bessel(T, const char* name) { { SC_(0.0), SC_(11.791534423828125) /*T(12364320.0) / (1024 * 1024)*/, SC_(-3.53017140778223781420794006033810387155048392363051866610931e-9) } } }}; - static const std::array::type, 3>, 8> j1_data = {{ + static const std::array, 8> j1_data = {{ { { SC_(1.0), SC_(0.0), SC_(0.0) } }, { { SC_(1.0), SC_(1.0), SC_(0.4400505857449335159596822037189149131274) } }, { { SC_(1.0), SC_(-2.0), SC_(-0.5767248077568733872024482422691370869203) } }, @@ -169,7 +172,7 @@ void test_bessel(T, const char* name) { { SC_(1.0), SC_(1e-10), SC_(4.999999999999999999993750000000000000000e-11) } }, { { SC_(1.0), SC_(-1e+01), SC_(-4.347274616886143666974876802585928830627e-02) } }, }}; - static const std::array::type, 3>, 5> j1_tricky = {{ + static const std::array, 5> j1_tricky = {{ // Big numbers make the accuracy of std::sin the limiting factor: { { SC_(1.0), SC_(1e+03), SC_(4.728311907089523917576071901216916285418e-03) } }, { { SC_(1.0), SC_(1e+05), SC_(1.846757562882567716362123967114215743694e-03) } }, @@ -179,7 +182,7 @@ void test_bessel(T, const char* name) { { SC_(1.0), SC_(10.1734676361083984375) /*T(10667654) / (1024 * 1024)*/, SC_(1.24591331097191900488116495350277530373473085499043086981229e-7) } }, }}; - static const std::array::type, 3>, 17> jn_data = {{ + static const std::array, 17> jn_data = {{ // This first one is a modified test case from https://svn.boost.org/trac/boost/ticket/2733 { { SC_(-1.0), SC_(1.25), SC_(-0.510623260319880467069474837274910375352924050139633057168856) } }, { { SC_(2.0), SC_(0.0), SC_(0.0) } }, @@ -211,7 +214,7 @@ void test_bessel(T, const char* name) do_test_cyl_bessel_j_int(j1_tricky, name, "Bessel J1: Mathworld Data (tricky cases) (Integer Version)"); do_test_cyl_bessel_j_int(jn_data, name, "Bessel JN: Mathworld Data (Integer Version)"); - static const std::array::type, 3>, 20> jv_data = {{ + static const std::array, 20> jv_data = {{ //SC_(-2.4), {{ SC_(0.0), std::numeric_limits::infinity() }}, { { SC_(22.5), SC_(0.0), SC_(0.0) } }, { { SC_(2.3994140625) /*2457.0 / 1024*/, SC_(0.0009765625) /* 1 / 1024*/, SC_(3.80739920118603335646474073457326714709615200130620574875292e-9) } }, @@ -236,7 +239,7 @@ void test_bessel(T, const char* name) {{ SC_(-8.5), SC_(12.566370614359172953850573533118011536788677597500423283899778369231265625144835994512139301368468271928592346053) /*Pi * 4*/, SC_(-0.257086543428224355151772807588810984369026142375675714560864) }}, }}; do_test_cyl_bessel_j(jv_data, name, "Bessel J: Mathworld Data"); - static const std::array::type, 3>, 4> jv_large_data = {{ + static const std::array, 4> jv_large_data = {{ // Bug report https://svn.boost.org/trac/boost/ticket/5560: {{ SC_(-0.5), SC_(1.2458993688871959419388378518880931736878259938089494331010226962863582408064841833232475731084062642684629e-206) /*static_cast(std::ldexp(0.5, -683))*/, SC_(7.14823099969225685526188875418476476336424046896822867989728e102) }}, { { SC_(256.0), SC_(512.0), SC_(0.00671672065717513246956991122723250578101154313313749938944675) } }, @@ -261,6 +264,7 @@ void test_bessel(T, const char* name) // // Some special cases: // + BOOST_CHECK_EQUAL(boost::math::sph_bessel(0, T(0)), T(1)); BOOST_CHECK_EQUAL(boost::math::sph_bessel(1, T(0)), T(0)); BOOST_CHECK_EQUAL(boost::math::sph_bessel(100000, T(0)), T(0)); @@ -280,7 +284,7 @@ void test_bessel(T, const char* name) BOOST_MATH_CHECK_THROW(boost::math::sph_bessel(2, T(-2.0)), std::domain_error); BOOST_CHECK_EQUAL(boost::math::cyl_bessel_j(T(0), T(2.5)), boost::math::cyl_bessel_j(T(0), T(-2.5))); BOOST_CHECK_EQUAL(boost::math::cyl_bessel_j(T(1), T(2.5)), -boost::math::cyl_bessel_j(T(1), T(-2.5))); - #ifndef SYCL_LANGUAGE_VERSION + #ifndef BOOST_MATH_ENABLE_SYCL BOOST_CHECK_CLOSE_FRACTION(boost::math::cyl_bessel_j(364, T(38.5)), SC_(1.793940496519190500748409872348034004417458734118663909894e-309), tolerance); #endif // @@ -301,4 +305,3 @@ void test_bessel(T, const char* name) BOOST_CHECK_EQUAL(boost::math::cyl_bessel_j(T(2), -std::numeric_limits::infinity()), T(0)); } } - diff --git a/test/test_bessel_k.cpp b/test/test_bessel_k.cpp index 0f32078665..6053114585 100644 --- a/test/test_bessel_k.cpp +++ b/test/test_bessel_k.cpp @@ -5,7 +5,7 @@ // Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#ifndef SYCL_LANGUAGE_VERSION +#ifndef BOOST_MATH_ENABLE_SYCL #include #else #define BOOST_MATH_PROMOTE_DOUBLE_POLICY false diff --git a/test/test_bessel_k.hpp b/test/test_bessel_k.hpp index 36b86bec5e..4752aa6811 100644 --- a/test/test_bessel_k.hpp +++ b/test/test_bessel_k.hpp @@ -176,7 +176,7 @@ void test_bessel(T, const char* name) // // Extra test coverage: // - #ifndef SYCL_LANGUAGE_VERSION // SYCL doesn't throw + #ifndef BOOST_MATH_ENABLE_SYCL // SYCL doesn't throw BOOST_CHECK_THROW(boost::math::cyl_bessel_k(T(2), T(-1)), std::domain_error); BOOST_CHECK_THROW(boost::math::cyl_bessel_k(T(2.2), T(-1)), std::domain_error); BOOST_IF_CONSTEXPR(std::numeric_limits::has_infinity) diff --git a/test/test_bessel_y.cpp b/test/test_bessel_y.cpp index 3b90d20bd2..05d85b83bc 100644 --- a/test/test_bessel_y.cpp +++ b/test/test_bessel_y.cpp @@ -3,7 +3,7 @@ // Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#ifndef SYCL_LANGUAGE_VERSION +#ifndef BOOST_MATH_ENABLE_SYCL #include #else #define BOOST_MATH_PROMOTE_DOUBLE_POLICY false @@ -248,7 +248,7 @@ void expected_results() ".*", // platform largest_type, // test type(s) ".*(Y[nv]|y).*Random.*", // test data group - #ifdef SYCL_LANGUAGE_VERSION + #ifdef BOOST_MATH_ENABLE_SYCL ".*", 2000, 1000); #else ".*", 1500, 1000); // test function diff --git a/test/test_beta.cpp b/test/test_beta.cpp index cba16023cc..ce56360a13 100644 --- a/test/test_beta.cpp +++ b/test/test_beta.cpp @@ -5,7 +5,7 @@ // Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#ifndef SYCL_LANGUAGE_VERSION +#ifndef BOOST_MATH_ENABLE_SYCL #include #else #include "sycl/sycl.hpp" diff --git a/test/test_beta_dist.cpp b/test/test_beta_dist.cpp index e139ef4f63..d989197b6b 100644 --- a/test/test_beta_dist.cpp +++ b/test/test_beta_dist.cpp @@ -32,7 +32,7 @@ # pragma warning (disable : 4224) // nonstandard extension used : formal parameter 'arg' was previously defined as a type. #endif -#ifdef SYCL_LANGUAGE_VERSION +#ifdef BOOST_MATH_ENABLE_SYCL #include "sycl/sycl.hpp" #endif diff --git a/test/test_beta_dist_cdf_double.cu b/test/test_beta_dist_cdf_double.cu index 9188f4305f..949f81bfee 100644 --- a/test/test_beta_dist_cdf_double.cu +++ b/test/test_beta_dist_cdf_double.cu @@ -106,4 +106,4 @@ int main(void) std::cerr << "Stopped with exception: " << e.what() << std::endl; } return 0; -} \ No newline at end of file +} diff --git a/test/test_beta_dist_cdf_float.cu b/test/test_beta_dist_cdf_float.cu index 0278f64155..4f93bd044a 100644 --- a/test/test_beta_dist_cdf_float.cu +++ b/test/test_beta_dist_cdf_float.cu @@ -106,4 +106,4 @@ int main(void) std::cerr << "Stopped with exception: " << e.what() << std::endl; } return 0; -} \ No newline at end of file +} diff --git a/test/test_beta_dist_pdf_double.cu b/test/test_beta_dist_pdf_double.cu index e86cf94dd8..7dbe45a21f 100644 --- a/test/test_beta_dist_pdf_double.cu +++ b/test/test_beta_dist_pdf_double.cu @@ -106,4 +106,4 @@ int main(void) std::cerr << "Stopped with exception: " << e.what() << std::endl; } return 0; -} \ No newline at end of file +} diff --git a/test/test_beta_dist_pdf_float.cu b/test/test_beta_dist_pdf_float.cu index 97dd606f2f..79c8e87a2f 100644 --- a/test/test_beta_dist_pdf_float.cu +++ b/test/test_beta_dist_pdf_float.cu @@ -106,4 +106,4 @@ int main(void) std::cerr << "Stopped with exception: " << e.what() << std::endl; } return 0; -} \ No newline at end of file +} diff --git a/test/test_beta_dist_quan_double.cu b/test/test_beta_dist_quan_double.cu index a6b842e8ef..0664dbd8b8 100644 --- a/test/test_beta_dist_quan_double.cu +++ b/test/test_beta_dist_quan_double.cu @@ -106,4 +106,4 @@ int main(void) std::cerr << "Stopped with exception: " << e.what() << std::endl; } return 0; -} \ No newline at end of file +} diff --git a/test/test_beta_dist_quan_float.cu b/test/test_beta_dist_quan_float.cu index 48a860f4c2..a4b6602a93 100644 --- a/test/test_beta_dist_quan_float.cu +++ b/test/test_beta_dist_quan_float.cu @@ -106,4 +106,4 @@ int main(void) std::cerr << "Stopped with exception: " << e.what() << std::endl; } return 0; -} \ No newline at end of file +} diff --git a/test/test_beta_simple.cpp b/test/test_beta_simple.cpp index 3bd7095741..b864047c35 100644 --- a/test/test_beta_simple.cpp +++ b/test/test_beta_simple.cpp @@ -8,7 +8,7 @@ #define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error #define BOOST_MATH_PROMOTE_DOUBLE_POLICY false -#ifdef SYCL_LANGUAGE_VERSION +#ifdef BOOST_MATH_ENABLE_SYCL #include "sycl/sycl.hpp" #endif diff --git a/test/test_cauchy.cpp b/test/test_cauchy.cpp index 9f4c4bb8e6..8136999e37 100644 --- a/test/test_cauchy.cpp +++ b/test/test_cauchy.cpp @@ -16,7 +16,7 @@ # pragma warning(disable: 4127) // conditional expression is constant #endif -#ifdef SYCL_LANGUAGE_VERSION +#ifdef BOOST_MATH_ENABLE_SYCL #define BOOST_MATH_PROMOTE_DOUBLE_POLICY false #include "sycl/sycl.hpp" #include @@ -137,7 +137,7 @@ void test_spots(RealType T) static_cast(0.000000021220659078919346664504384865488560725L), tolerance); // % - #ifndef SYCL_LANGUAGE_VERSION // Returns infinity + #ifndef BOOST_MATH_ENABLE_SYCL // Returns infinity BOOST_CHECK_CLOSE( // Test the CDF at -max_value()/4. // For an input x of this magnitude, the reference value is 4/|x|/pi. @@ -220,7 +220,7 @@ void test_spots(RealType T) static_cast(0.000000021220659078919346664504384865488560725L), tolerance); // % - #ifndef SYCL_LANGUAGE_VERSION // Returns infinity + #ifndef BOOST_MATH_ENABLE_SYCL // Returns infinity BOOST_CHECK_CLOSE( // Test the complemented CDF at max_value()/4. // For an input x of this magnitude, the reference value is 4/x/pi. diff --git a/test/test_cauchy_range_support_double.cu b/test/test_cauchy_range_support_double.cu index 3a42c1bd30..44d1c7d91d 100644 --- a/test/test_cauchy_range_support_double.cu +++ b/test/test_cauchy_range_support_double.cu @@ -107,4 +107,4 @@ int main(void) std::cerr << "Stopped with exception: " << e.what() << std::endl; } return 0; -} \ No newline at end of file +} diff --git a/test/test_cauchy_range_support_float.cu b/test/test_cauchy_range_support_float.cu index e713736e60..d8333df550 100644 --- a/test/test_cauchy_range_support_float.cu +++ b/test/test_cauchy_range_support_float.cu @@ -108,4 +108,4 @@ int main(void) std::cerr << "Stopped with exception: " << e.what() << std::endl; } return 0; -} \ No newline at end of file +} diff --git a/test/test_cbrt.cpp b/test/test_cbrt.cpp index 2f80534167..3b662f909a 100644 --- a/test/test_cbrt.cpp +++ b/test/test_cbrt.cpp @@ -9,7 +9,7 @@ # pragma warning (disable : 4224) #endif -#ifndef SYCL_LANGUAGE_VERSION +#ifndef BOOST_MATH_ENABLE_SYCL #include // include /libs/math/src/ #else #include "sycl/sycl.hpp" diff --git a/test/test_chi_squared.cpp b/test/test_chi_squared.cpp index 8580049d7f..a64926ca58 100644 --- a/test/test_chi_squared.cpp +++ b/test/test_chi_squared.cpp @@ -16,7 +16,7 @@ # pragma warning(disable: 4127) // conditional expression is constant #endif -#ifdef SYCL_LANGUAGE_VERSION +#ifdef BOOST_MATH_ENABLE_SYCL #include "sycl/sycl.hpp" #endif diff --git a/test/test_chi_squared_cdf_double.cu b/test/test_chi_squared_cdf_double.cu index c2475883b9..93a480160d 100644 --- a/test/test_chi_squared_cdf_double.cu +++ b/test/test_chi_squared_cdf_double.cu @@ -106,4 +106,4 @@ int main(void) std::cerr << "Stopped with exception: " << e.what() << std::endl; } return 0; -} \ No newline at end of file +} diff --git a/test/test_chi_squared_cdf_float.cu b/test/test_chi_squared_cdf_float.cu index 07dce0d067..3525a88e4a 100644 --- a/test/test_chi_squared_cdf_float.cu +++ b/test/test_chi_squared_cdf_float.cu @@ -106,4 +106,4 @@ int main(void) std::cerr << "Stopped with exception: " << e.what() << std::endl; } return 0; -} \ No newline at end of file +} diff --git a/test/test_chi_squared_pdf_double.cu b/test/test_chi_squared_pdf_double.cu index 30edafd050..3bfefa032b 100644 --- a/test/test_chi_squared_pdf_double.cu +++ b/test/test_chi_squared_pdf_double.cu @@ -106,4 +106,4 @@ int main(void) std::cerr << "Stopped with exception: " << e.what() << std::endl; } return 0; -} \ No newline at end of file +} diff --git a/test/test_chi_squared_pdf_float.cu b/test/test_chi_squared_pdf_float.cu index 9b205182ba..592239c270 100644 --- a/test/test_chi_squared_pdf_float.cu +++ b/test/test_chi_squared_pdf_float.cu @@ -106,4 +106,4 @@ int main(void) std::cerr << "Stopped with exception: " << e.what() << std::endl; } return 0; -} \ No newline at end of file +} diff --git a/test/test_chi_squared_quan_double.cu b/test/test_chi_squared_quan_double.cu index 3fae7d966f..ba7feed814 100644 --- a/test/test_chi_squared_quan_double.cu +++ b/test/test_chi_squared_quan_double.cu @@ -106,4 +106,4 @@ int main(void) std::cerr << "Stopped with exception: " << e.what() << std::endl; } return 0; -} \ No newline at end of file +} diff --git a/test/test_chi_squared_quan_float.cu b/test/test_chi_squared_quan_float.cu index 7a717530e1..e32b596d80 100644 --- a/test/test_chi_squared_quan_float.cu +++ b/test/test_chi_squared_quan_float.cu @@ -106,4 +106,4 @@ int main(void) std::cerr << "Stopped with exception: " << e.what() << std::endl; } return 0; -} \ No newline at end of file +} diff --git a/test/test_constant_generate.cpp b/test/test_constant_generate.cpp index 53f1c6a73e..472f691252 100644 --- a/test/test_constant_generate.cpp +++ b/test/test_constant_generate.cpp @@ -48,6 +48,7 @@ int main() BOOST_CONSTANTS_GENERATE(four_thirds_pi); BOOST_CONSTANTS_GENERATE(one_div_two_pi); BOOST_CONSTANTS_GENERATE(one_div_root_two_pi); + BOOST_CONSTANTS_GENERATE(log_pi); BOOST_CONSTANTS_GENERATE(root_pi); BOOST_CONSTANTS_GENERATE(root_half_pi); BOOST_CONSTANTS_GENERATE(root_two_pi); @@ -189,4 +190,3 @@ Output */ - diff --git a/test/test_constants.cpp b/test/test_constants.cpp index c072a9c0f7..f692692f92 100644 --- a/test/test_constants.cpp +++ b/test/test_constants.cpp @@ -103,6 +103,7 @@ void test_spots(RealType) BOOST_MATH_STD_USING CHECK_ULP_CLOSE(3.14159265358979323846264338327950288419716939937510L, pi(), 2); + CHECK_ULP_CLOSE(log(3.14159265358979323846264338327950288419716939937510L), log_pi(), 2); CHECK_ULP_CLOSE(sqrt(3.14159265358979323846264338327950288419716939937510L), root_pi(), 2); CHECK_ULP_CLOSE(sqrt(3.14159265358979323846264338327950288419716939937510L/2), root_half_pi(), 2); CHECK_ULP_CLOSE(sqrt(3.14159265358979323846264338327950288419716939937510L * 2), root_two_pi(), 2); @@ -160,6 +161,7 @@ void test_spots(RealType) CHECK_ULP_CLOSE(1 / (3.14159265358979323846264338327950288419716939937510L), one_div_pi(), 2); CHECK_ULP_CLOSE(2 / (3.14159265358979323846264338327950288419716939937510L), two_div_pi(), 2); CHECK_ULP_CLOSE(1 / (2 * 3.14159265358979323846264338327950288419716939937510L), one_div_two_pi(), 2); + CHECK_ULP_CLOSE(log(3.14159265358979323846264338327950288419716939937510L), log_pi(), 2); CHECK_ULP_CLOSE(sqrt(3.14159265358979323846264338327950288419716939937510L), root_pi(), 2); CHECK_ULP_CLOSE(sqrt(3.14159265358979323846264338327950288419716939937510L / 2), root_half_pi(), 2); CHECK_ULP_CLOSE(sqrt(2 * 3.14159265358979323846264338327950288419716939937510L), root_two_pi(), 2); @@ -242,6 +244,7 @@ void test_float_spots() BOOST_MATH_STD_USING CHECK_ULP_CLOSE(static_cast(3.14159265358979323846264338327950288419716939937510F), pi, 2); + CHECK_ULP_CLOSE(static_cast(log(3.14159265358979323846264338327950288419716939937510F)), log_pi, 2); CHECK_ULP_CLOSE(static_cast(sqrt(3.14159265358979323846264338327950288419716939937510F)), root_pi, 2); CHECK_ULP_CLOSE(static_cast(sqrt(3.14159265358979323846264338327950288419716939937510F/2)), root_half_pi, 2); CHECK_ULP_CLOSE(static_cast(sqrt(3.14159265358979323846264338327950288419716939937510F * 2)), root_two_pi, 2); @@ -293,6 +296,7 @@ void test_float_spots() CHECK_ULP_CLOSE(static_cast(1 / (3.14159265358979323846264338327950288419716939937510F)), one_div_pi, 2); CHECK_ULP_CLOSE(static_cast(2 / (3.14159265358979323846264338327950288419716939937510F)), two_div_pi, 2); CHECK_ULP_CLOSE(static_cast(1 / (2 * 3.14159265358979323846264338327950288419716939937510F)), one_div_two_pi, 2); + CHECK_ULP_CLOSE(static_cast(log(3.14159265358979323846264338327950288419716939937510F)), log_pi, 2); CHECK_ULP_CLOSE(static_cast(sqrt(3.14159265358979323846264338327950288419716939937510F)), root_pi, 2); CHECK_ULP_CLOSE(static_cast(sqrt(3.14159265358979323846264338327950288419716939937510F / 2)), root_half_pi, 2); CHECK_ULP_CLOSE(static_cast(sqrt(2 * 3.14159265358979323846264338327950288419716939937510F)), root_two_pi, 2); @@ -362,6 +366,7 @@ void test_f32_spots() BOOST_MATH_STD_USING CHECK_ULP_CLOSE(static_cast(3.14159265358979323846264338327950288419716939937510F32), pi, 2); + CHECK_ULP_CLOSE(static_cast(log(3.14159265358979323846264338327950288419716939937510F32)), log_pi, 2); CHECK_ULP_CLOSE(static_cast(sqrt(3.14159265358979323846264338327950288419716939937510F32)), root_pi, 2); CHECK_ULP_CLOSE(static_cast(sqrt(3.14159265358979323846264338327950288419716939937510F32/2)), root_half_pi, 2); CHECK_ULP_CLOSE(static_cast(sqrt(3.14159265358979323846264338327950288419716939937510F32 * 2)), root_two_pi, 2); @@ -413,6 +418,7 @@ void test_f32_spots() CHECK_ULP_CLOSE(static_cast(1 / (3.14159265358979323846264338327950288419716939937510F32)), one_div_pi, 2); CHECK_ULP_CLOSE(static_cast(2 / (3.14159265358979323846264338327950288419716939937510F32)), two_div_pi, 2); CHECK_ULP_CLOSE(static_cast(1 / (2 * 3.14159265358979323846264338327950288419716939937510F32)), one_div_two_pi, 2); + CHECK_ULP_CLOSE(static_cast(log(3.14159265358979323846264338327950288419716939937510F32)), log_pi, 2); CHECK_ULP_CLOSE(static_cast(sqrt(3.14159265358979323846264338327950288419716939937510F32)), root_pi, 2); CHECK_ULP_CLOSE(static_cast(sqrt(3.14159265358979323846264338327950288419716939937510F32 / 2)), root_half_pi, 2); CHECK_ULP_CLOSE(static_cast(sqrt(2 * 3.14159265358979323846264338327950288419716939937510F32)), root_two_pi, 2); @@ -482,6 +488,7 @@ void test_double_spots() BOOST_MATH_STD_USING CHECK_ULP_CLOSE(static_cast(3.14159265358979323846264338327950288419716939937510), pi, 2); + CHECK_ULP_CLOSE(static_cast(log(3.14159265358979323846264338327950288419716939937510)), log_pi, 2); CHECK_ULP_CLOSE(static_cast(sqrt(3.14159265358979323846264338327950288419716939937510)), root_pi, 2); CHECK_ULP_CLOSE(static_cast(sqrt(3.14159265358979323846264338327950288419716939937510/2)), root_half_pi, 2); CHECK_ULP_CLOSE(static_cast(sqrt(3.14159265358979323846264338327950288419716939937510 * 2)), root_two_pi, 2); @@ -533,6 +540,7 @@ void test_double_spots() CHECK_ULP_CLOSE(static_cast(1 / (3.14159265358979323846264338327950288419716939937510)), one_div_pi, 2); CHECK_ULP_CLOSE(static_cast(2 / (3.14159265358979323846264338327950288419716939937510)), two_div_pi, 2); CHECK_ULP_CLOSE(static_cast(1 / (2 * 3.14159265358979323846264338327950288419716939937510)), one_div_two_pi, 2); + CHECK_ULP_CLOSE(static_cast(log(3.14159265358979323846264338327950288419716939937510)), log_pi, 2); CHECK_ULP_CLOSE(static_cast(sqrt(3.14159265358979323846264338327950288419716939937510)), root_pi, 2); CHECK_ULP_CLOSE(static_cast(sqrt(3.14159265358979323846264338327950288419716939937510 / 2)), root_half_pi, 2); CHECK_ULP_CLOSE(static_cast(sqrt(2 * 3.14159265358979323846264338327950288419716939937510)), root_two_pi, 2); @@ -601,6 +609,7 @@ void test_f64_spots() BOOST_MATH_STD_USING CHECK_ULP_CLOSE(static_cast(3.14159265358979323846264338327950288419716939937510F64), pi, 2); + CHECK_ULP_CLOSE(static_cast(log(3.14159265358979323846264338327950288419716939937510F64)), log_pi, 2); CHECK_ULP_CLOSE(static_cast(sqrt(3.14159265358979323846264338327950288419716939937510F64)), root_pi, 2); CHECK_ULP_CLOSE(static_cast(sqrt(3.14159265358979323846264338327950288419716939937510F64/2)), root_half_pi, 2); CHECK_ULP_CLOSE(static_cast(sqrt(3.14159265358979323846264338327950288419716939937510F64 * 2)), root_two_pi, 2); @@ -652,6 +661,7 @@ void test_f64_spots() CHECK_ULP_CLOSE(static_cast(1 / (3.14159265358979323846264338327950288419716939937510F64)), one_div_pi, 2); CHECK_ULP_CLOSE(static_cast(2 / (3.14159265358979323846264338327950288419716939937510F64)), two_div_pi, 2); CHECK_ULP_CLOSE(static_cast(1 / (2 * 3.14159265358979323846264338327950288419716939937510F64)), one_div_two_pi, 2); + CHECK_ULP_CLOSE(static_cast(log(3.14159265358979323846264338327950288419716939937510F64)), log_pi, 2); CHECK_ULP_CLOSE(static_cast(sqrt(3.14159265358979323846264338327950288419716939937510F64)), root_pi, 2); CHECK_ULP_CLOSE(static_cast(sqrt(3.14159265358979323846264338327950288419716939937510F64 / 2)), root_half_pi, 2); CHECK_ULP_CLOSE(static_cast(sqrt(2 * 3.14159265358979323846264338327950288419716939937510F64)), root_two_pi, 2); @@ -724,6 +734,7 @@ void test_long_double_spots() BOOST_MATH_STD_USING CHECK_ULP_CLOSE(static_cast(3.14159265358979323846264338327950288419716939937510L), pi, 2); + CHECK_ULP_CLOSE(static_cast(log(3.14159265358979323846264338327950288419716939937510L)), log_pi, 2); CHECK_ULP_CLOSE(static_cast(sqrt(3.14159265358979323846264338327950288419716939937510L)), root_pi, 2); CHECK_ULP_CLOSE(static_cast(sqrt(3.14159265358979323846264338327950288419716939937510L/2)), root_half_pi, 2); CHECK_ULP_CLOSE(static_cast(sqrt(3.14159265358979323846264338327950288419716939937510L * 2)), root_two_pi, 2); @@ -775,6 +786,7 @@ void test_long_double_spots() CHECK_ULP_CLOSE(static_cast(1 / (3.14159265358979323846264338327950288419716939937510L)), one_div_pi, 2); CHECK_ULP_CLOSE(static_cast(2 / (3.14159265358979323846264338327950288419716939937510L)), two_div_pi, 2); CHECK_ULP_CLOSE(static_cast(1 / (2 * 3.14159265358979323846264338327950288419716939937510L)), one_div_two_pi, 2); + CHECK_ULP_CLOSE(static_cast(log(3.14159265358979323846264338327950288419716939937510L)), log_pi, 2); CHECK_ULP_CLOSE(static_cast(sqrt(3.14159265358979323846264338327950288419716939937510L)), root_pi, 2); CHECK_ULP_CLOSE(static_cast(sqrt(3.14159265358979323846264338327950288419716939937510L / 2)), root_half_pi, 2); CHECK_ULP_CLOSE(static_cast(sqrt(2 * 3.14159265358979323846264338327950288419716939937510L)), root_two_pi, 2); @@ -851,6 +863,7 @@ void test_real_concept_policy(const Policy&) BOOST_MATH_STD_USING CHECK_ULP_CLOSE(3.14159265358979323846264338327950288419716939937510L, (pi)(), 2); + CHECK_ULP_CLOSE(log(3.14159265358979323846264338327950288419716939937510L), (log_pi)(), 2); CHECK_ULP_CLOSE(sqrt(3.14159265358979323846264338327950288419716939937510L), (root_pi)(), 2); CHECK_ULP_CLOSE(sqrt(3.14159265358979323846264338327950288419716939937510L/2), (root_half_pi)(), 2); CHECK_ULP_CLOSE(sqrt(3.14159265358979323846264338327950288419716939937510L * 2), (root_two_pi)(), 2); @@ -902,6 +915,7 @@ void test_real_concept_policy(const Policy&) CHECK_ULP_CLOSE(1 / (3.14159265358979323846264338327950288419716939937510L), (one_div_pi)(), 2); CHECK_ULP_CLOSE(2 / (3.14159265358979323846264338327950288419716939937510L), (two_div_pi)(), 2); CHECK_ULP_CLOSE(1 / (2 * 3.14159265358979323846264338327950288419716939937510L), (one_div_two_pi)(), 2); + CHECK_ULP_CLOSE(log(3.14159265358979323846264338327950288419716939937510L), (log_pi)(), 2); CHECK_ULP_CLOSE(sqrt(3.14159265358979323846264338327950288419716939937510L), (root_pi)(), 2); CHECK_ULP_CLOSE(sqrt(3.14159265358979323846264338327950288419716939937510L / 2), (root_half_pi)(), 2); CHECK_ULP_CLOSE(sqrt(2 * 3.14159265358979323846264338327950288419716939937510L), (root_two_pi)(), 2); diff --git a/test/test_digamma_simple.cpp b/test/test_digamma_simple.cpp index 72a68a38a8..30aeb29e4b 100644 --- a/test/test_digamma_simple.cpp +++ b/test/test_digamma_simple.cpp @@ -4,7 +4,7 @@ // Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#ifdef SYCL_LANGUAGE_VERSION +#ifdef BOOST_MATH_ENABLE_SYCL #include "sycl/sycl.hpp" #endif diff --git a/test/test_ellint_1.cpp b/test/test_ellint_1.cpp index 213ac26043..7e4f1bf4d8 100644 --- a/test/test_ellint_1.cpp +++ b/test/test_ellint_1.cpp @@ -6,7 +6,7 @@ // Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#ifndef SYCL_LANGUAGE_VERSION +#ifndef BOOST_MATH_ENABLE_SYCL #include // include /libs/math/src/ #else #include "sycl/sycl.hpp" diff --git a/test/test_ellint_2.cpp b/test/test_ellint_2.cpp index fe50474cc6..77c3007452 100644 --- a/test/test_ellint_2.cpp +++ b/test/test_ellint_2.cpp @@ -6,7 +6,7 @@ // Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#ifndef SYCL_LANGUAGE_VERSION +#ifndef BOOST_MATH_ENABLE_SYCL #include // include /libs/math/src/ #else #include "sycl/sycl.hpp" @@ -77,7 +77,7 @@ void expected_results() ".*", // platform largest_type, // test type(s) ".*", // test data group - #ifdef SYCL_LANGUAGE_VERSION + #ifdef BOOST_MATH_ENABLE_SYCL ".*", 20, 6); // test function #else ".*", 15, 6); // test function diff --git a/test/test_ellint_d.cpp b/test/test_ellint_d.cpp index 46619eafd8..adfd0b0509 100644 --- a/test/test_ellint_d.cpp +++ b/test/test_ellint_d.cpp @@ -6,7 +6,7 @@ #define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error -#ifndef SYCL_LANGUAGE_VERSION +#ifndef BOOST_MATH_ENABLE_SYCL #include // include /libs/math/src/ #else #include "sycl/sycl.hpp" diff --git a/test/test_erf.cpp b/test/test_erf.cpp index a0808449b5..cb5d476110 100644 --- a/test/test_erf.cpp +++ b/test/test_erf.cpp @@ -4,7 +4,7 @@ // Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#ifndef SYCL_LANGUAGE_VERSION +#ifndef BOOST_MATH_ENABLE_SYCL #include #else #include "sycl/sycl.hpp" diff --git a/test/test_erf.hpp b/test/test_erf.hpp index b70c739530..2147938aa9 100644 --- a/test/test_erf.hpp +++ b/test/test_erf.hpp @@ -174,6 +174,20 @@ void test_erf(T, const char* name) do_test_erfc_inv(erfc_inv_big_data, name, "Inverse Erfc Function: extreme values"); } + BOOST_CHECK_EQUAL(boost::math::erf(T(0)), T(0)); + BOOST_CHECK_EQUAL(boost::math::erfc(T(0)), T(1)); + + BOOST_CHECK(boost::math::erf(boost::math::tools::root_epsilon() / 8) > T(0)); + BOOST_CHECK(boost::math::erf(boost::math::tools::epsilon() / 32) >= T(0)); + BOOST_CHECK(boost::math::erfc(boost::math::tools::epsilon() / 32) <= T(1)); + + const bool has_negative_zero { ((boost::math::signbit)(-T(0)) != 0) }; + + if(has_negative_zero) + { + BOOST_CHECK_EQUAL(boost::math::erf(-T(0)), -T(0)); + } + BOOST_IF_CONSTEXPR(std::numeric_limits::has_quiet_NaN) { BOOST_CHECK_THROW(boost::math::erf(std::numeric_limits::quiet_NaN()), std::domain_error); diff --git a/test/test_expint.cpp b/test/test_expint.cpp index d184f65da1..8dec9d2cba 100644 --- a/test/test_expint.cpp +++ b/test/test_expint.cpp @@ -3,7 +3,7 @@ // Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#ifndef SYCL_LANGUAGE_VERSION +#ifndef BOOST_MATH_ENABLE_SYCL #include #else #include "sycl/sycl.hpp" @@ -87,7 +87,7 @@ void expected_results() ".*", // platform "float|double|long double", // test type(s) ".*Ei.*", // test data group -#ifndef SYCL_LANGUAGE_VERSION +#ifndef BOOST_MATH_ENABLE_SYCL ".*", 6, 3); // test function #else ".*", 10, 3); diff --git a/test/test_expm1_simple.cpp b/test/test_expm1_simple.cpp index 573b1841b5..22b88a22cb 100644 --- a/test/test_expm1_simple.cpp +++ b/test/test_expm1_simple.cpp @@ -3,7 +3,7 @@ // Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#ifdef SYCL_LANGUAGE_VERSION +#ifdef BOOST_MATH_ENABLE_SYCL #include "sycl/sycl.hpp" #endif diff --git a/test/test_exponential_dist.cpp b/test/test_exponential_dist.cpp index cbea912dc8..124e2929ad 100644 --- a/test/test_exponential_dist.cpp +++ b/test/test_exponential_dist.cpp @@ -8,7 +8,7 @@ // test_exponential_dist.cpp -#ifdef SYCL_LANGUAGE_VERSION +#ifdef BOOST_MATH_ENABLE_SYCL #include "sycl/sycl.hpp" #endif diff --git a/test/test_exponential_range_support_double.cu b/test/test_exponential_range_support_double.cu index c19497ed50..17a81f15a4 100644 --- a/test/test_exponential_range_support_double.cu +++ b/test/test_exponential_range_support_double.cu @@ -107,4 +107,4 @@ int main(void) std::cerr << "Stopped with exception: " << e.what() << std::endl; } return 0; -} \ No newline at end of file +} diff --git a/test/test_exponential_range_support_float.cu b/test/test_exponential_range_support_float.cu index a111090de5..86c2ee6959 100644 --- a/test/test_exponential_range_support_float.cu +++ b/test/test_exponential_range_support_float.cu @@ -108,4 +108,4 @@ int main(void) std::cerr << "Stopped with exception: " << e.what() << std::endl; } return 0; -} \ No newline at end of file +} diff --git a/test/test_extreme_value.cpp b/test/test_extreme_value.cpp index 6c9ce6cba3..255777914f 100644 --- a/test/test_extreme_value.cpp +++ b/test/test_extreme_value.cpp @@ -7,7 +7,7 @@ // test_extreme_value.cpp -#ifdef SYCL_LANGUAGE_VERSION +#ifdef BOOST_MATH_ENABLE_SYCL #include "sycl/sycl.hpp" #endif diff --git a/test/test_fisher_f.cpp b/test/test_fisher_f.cpp index d2a2de775e..0739dfbda2 100644 --- a/test/test_fisher_f.cpp +++ b/test/test_fisher_f.cpp @@ -8,7 +8,7 @@ // (See accompanying file LICENSE_1_0.txt // or copy at http://www.boost.org/LICENSE_1_0.txt) -#ifdef SYCL_LANGUAGE_VERSION +#ifdef BOOST_MATH_ENABLE_SYCL #include "sycl/sycl.hpp" #endif diff --git a/test/test_fisher_f_cdf_double.cu b/test/test_fisher_f_cdf_double.cu index c6d6f0a94c..1c5887f461 100644 --- a/test/test_fisher_f_cdf_double.cu +++ b/test/test_fisher_f_cdf_double.cu @@ -106,4 +106,4 @@ int main(void) std::cerr << "Stopped with exception: " << e.what() << std::endl; } return 0; -} \ No newline at end of file +} diff --git a/test/test_fisher_f_cdf_float.cu b/test/test_fisher_f_cdf_float.cu index 9df1bc8695..530039c4a0 100644 --- a/test/test_fisher_f_cdf_float.cu +++ b/test/test_fisher_f_cdf_float.cu @@ -106,4 +106,4 @@ int main(void) std::cerr << "Stopped with exception: " << e.what() << std::endl; } return 0; -} \ No newline at end of file +} diff --git a/test/test_fisher_f_pdf_double.cu b/test/test_fisher_f_pdf_double.cu index 77a3b655ab..da0c0461af 100644 --- a/test/test_fisher_f_pdf_double.cu +++ b/test/test_fisher_f_pdf_double.cu @@ -106,4 +106,4 @@ int main(void) std::cerr << "Stopped with exception: " << e.what() << std::endl; } return 0; -} \ No newline at end of file +} diff --git a/test/test_fisher_f_pdf_float.cu b/test/test_fisher_f_pdf_float.cu index 323edf3424..7d9e3af81d 100644 --- a/test/test_fisher_f_pdf_float.cu +++ b/test/test_fisher_f_pdf_float.cu @@ -106,4 +106,4 @@ int main(void) std::cerr << "Stopped with exception: " << e.what() << std::endl; } return 0; -} \ No newline at end of file +} diff --git a/test/test_fisher_f_quan_double.cu b/test/test_fisher_f_quan_double.cu index c16eb2a952..1fa23166bc 100644 --- a/test/test_fisher_f_quan_double.cu +++ b/test/test_fisher_f_quan_double.cu @@ -106,4 +106,4 @@ int main(void) std::cerr << "Stopped with exception: " << e.what() << std::endl; } return 0; -} \ No newline at end of file +} diff --git a/test/test_fisher_f_quan_float.cu b/test/test_fisher_f_quan_float.cu index 85cf479670..d37979553b 100644 --- a/test/test_fisher_f_quan_float.cu +++ b/test/test_fisher_f_quan_float.cu @@ -106,4 +106,4 @@ int main(void) std::cerr << "Stopped with exception: " << e.what() << std::endl; } return 0; -} \ No newline at end of file +} diff --git a/test/test_functions_for_optimization.hpp b/test/test_functions_for_optimization.hpp index 513b97d8d0..b091984f8a 100644 --- a/test/test_functions_for_optimization.hpp +++ b/test/test_functions_for_optimization.hpp @@ -6,37 +6,11 @@ */ #ifndef TEST_FUNCTIONS_FOR_OPTIMIZATION_HPP #define TEST_FUNCTIONS_FOR_OPTIMIZATION_HPP -#include -#include + #include -#if __has_include() -// This is the only system boost.units still works on. -// I imagine this will start to fail at some point, -// and we'll have to remove this test as well. -#if defined(__APPLE__) -#define BOOST_MATH_TEST_UNITS_COMPATIBILITY 1 -#include -#include -#include -#include -#include -using namespace boost::units; -using namespace boost::units::si; -// This *should* return an area, but see: https://github.com/boostorg/units/issues/58 -// This sadly prevents std::atomic>. -// Nonetheless, we *do* get some information making the argument type dimensioned, -// even if it would be better to get the full information: -double dimensioned_sphere(std::vector> const & v) { - quantity r(0.0*meters*meters); - for (auto const & x : v) { - r += (x * x); - } - quantity scale(1.0*meters*meters); - return static_cast(r/scale); -} -#endif -#endif +#include +#include // Taken from: https://en.wikipedia.org/wiki/Test_functions_for_optimization template Real ackley(std::array const &v) { @@ -52,10 +26,10 @@ template Real ackley(std::array const &v) { return -20 * exp(arg1) - exp(arg2 / 2) + 20 + e(); } -template auto rosenbrock_saddle(std::array const &v) { - auto x = v[0]; - auto y = v[1]; - return 100 * (x * x - y) * (x * x - y) + (1 - x) * (1 - x); +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)); } diff --git a/test/test_gamma.cpp b/test/test_gamma.cpp index 0a12017911..5608944f24 100644 --- a/test/test_gamma.cpp +++ b/test/test_gamma.cpp @@ -3,7 +3,7 @@ // Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#ifndef SYCL_LANGUAGE_VERSION +#ifndef BOOST_MATH_ENABLE_SYCL #include #else #include "sycl/sycl.hpp" diff --git a/test/test_gamma_dist.cpp b/test/test_gamma_dist.cpp index 8b68b7cab8..f1abbfd995 100644 --- a/test/test_gamma_dist.cpp +++ b/test/test_gamma_dist.cpp @@ -15,7 +15,7 @@ // From MathWorld--A Wolfram Web Resource. // http://mathworld.wolfram.com/GammaDistribution.html -#ifndef SYCL_LANGUAGE_VERSION +#ifndef BOOST_MATH_ENABLE_SYCL #include // include directory libs/math/src/tr1/ is needed. #else #include "sycl/sycl.hpp" diff --git a/test/test_gamma_dist_cdf_double.cu b/test/test_gamma_dist_cdf_double.cu index 4777196aa1..00e4716f86 100644 --- a/test/test_gamma_dist_cdf_double.cu +++ b/test/test_gamma_dist_cdf_double.cu @@ -106,4 +106,4 @@ int main(void) std::cerr << "Stopped with exception: " << e.what() << std::endl; } return 0; -} \ No newline at end of file +} diff --git a/test/test_gamma_dist_cdf_float.cu b/test/test_gamma_dist_cdf_float.cu index a93aca3950..3d05eec4e1 100644 --- a/test/test_gamma_dist_cdf_float.cu +++ b/test/test_gamma_dist_cdf_float.cu @@ -106,4 +106,4 @@ int main(void) std::cerr << "Stopped with exception: " << e.what() << std::endl; } return 0; -} \ No newline at end of file +} diff --git a/test/test_gamma_dist_pdf_double.cu b/test/test_gamma_dist_pdf_double.cu index a8411d5b6d..5a25fc778b 100644 --- a/test/test_gamma_dist_pdf_double.cu +++ b/test/test_gamma_dist_pdf_double.cu @@ -106,4 +106,4 @@ int main(void) std::cerr << "Stopped with exception: " << e.what() << std::endl; } return 0; -} \ No newline at end of file +} diff --git a/test/test_gamma_dist_pdf_float.cu b/test/test_gamma_dist_pdf_float.cu index 6ab3247acb..ecc1497125 100644 --- a/test/test_gamma_dist_pdf_float.cu +++ b/test/test_gamma_dist_pdf_float.cu @@ -106,4 +106,4 @@ int main(void) std::cerr << "Stopped with exception: " << e.what() << std::endl; } return 0; -} \ No newline at end of file +} diff --git a/test/test_gamma_dist_quan_double.cu b/test/test_gamma_dist_quan_double.cu index d29bf6d6be..480ce15689 100644 --- a/test/test_gamma_dist_quan_double.cu +++ b/test/test_gamma_dist_quan_double.cu @@ -106,4 +106,4 @@ int main(void) std::cerr << "Stopped with exception: " << e.what() << std::endl; } return 0; -} \ No newline at end of file +} diff --git a/test/test_gamma_dist_quan_float.cu b/test/test_gamma_dist_quan_float.cu index 58aa42e90f..00f1b7442f 100644 --- a/test/test_gamma_dist_quan_float.cu +++ b/test/test_gamma_dist_quan_float.cu @@ -106,4 +106,4 @@ int main(void) std::cerr << "Stopped with exception: " << e.what() << std::endl; } return 0; -} \ No newline at end of file +} diff --git a/test/test_geometric.cpp b/test/test_geometric.cpp index 2740117cf6..7e1a00f574 100644 --- a/test/test_geometric.cpp +++ b/test/test_geometric.cpp @@ -19,7 +19,7 @@ # pragma warning(disable: 4127) // conditional expression is constant. #endif -#ifdef SYCL_LANGUAGE_VERSION +#ifdef BOOST_MATH_ENABLE_SYCL #include "sycl/sycl.hpp" #endif diff --git a/test/test_geometric_dist_cdf_double.cu b/test/test_geometric_dist_cdf_double.cu index 98b6510ad1..25de5aa64b 100644 --- a/test/test_geometric_dist_cdf_double.cu +++ b/test/test_geometric_dist_cdf_double.cu @@ -106,4 +106,4 @@ int main(void) std::cerr << "Stopped with exception: " << e.what() << std::endl; } return 0; -} \ No newline at end of file +} diff --git a/test/test_geometric_dist_cdf_float.cu b/test/test_geometric_dist_cdf_float.cu index 2662ac07c5..0786786940 100644 --- a/test/test_geometric_dist_cdf_float.cu +++ b/test/test_geometric_dist_cdf_float.cu @@ -106,4 +106,4 @@ int main(void) std::cerr << "Stopped with exception: " << e.what() << std::endl; } return 0; -} \ No newline at end of file +} diff --git a/test/test_geometric_dist_pdf_double.cu b/test/test_geometric_dist_pdf_double.cu index 03d2dc0078..ded7080805 100644 --- a/test/test_geometric_dist_pdf_double.cu +++ b/test/test_geometric_dist_pdf_double.cu @@ -106,4 +106,4 @@ int main(void) std::cerr << "Stopped with exception: " << e.what() << std::endl; } return 0; -} \ No newline at end of file +} diff --git a/test/test_geometric_dist_pdf_float.cu b/test/test_geometric_dist_pdf_float.cu index 1034d122b5..9e53f5498f 100644 --- a/test/test_geometric_dist_pdf_float.cu +++ b/test/test_geometric_dist_pdf_float.cu @@ -106,4 +106,4 @@ int main(void) std::cerr << "Stopped with exception: " << e.what() << std::endl; } return 0; -} \ No newline at end of file +} diff --git a/test/test_geometric_dist_quan_double.cu b/test/test_geometric_dist_quan_double.cu index fcac938e5a..f4cdf4735f 100644 --- a/test/test_geometric_dist_quan_double.cu +++ b/test/test_geometric_dist_quan_double.cu @@ -106,4 +106,4 @@ int main(void) std::cerr << "Stopped with exception: " << e.what() << std::endl; } return 0; -} \ No newline at end of file +} diff --git a/test/test_geometric_dist_quan_float.cu b/test/test_geometric_dist_quan_float.cu index 0749522021..0734d76d16 100644 --- a/test/test_geometric_dist_quan_float.cu +++ b/test/test_geometric_dist_quan_float.cu @@ -106,4 +106,4 @@ int main(void) std::cerr << "Stopped with exception: " << e.what() << std::endl; } return 0; -} \ No newline at end of file +} diff --git a/test/test_hankel.cpp b/test/test_hankel.cpp index bc74f83fed..edaa9c122b 100644 --- a/test/test_hankel.cpp +++ b/test/test_hankel.cpp @@ -3,7 +3,7 @@ // Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#ifndef SYCL_LANGUAGE_VERSION +#ifndef BOOST_MATH_ENABLE_SYCL #include #else #include "sycl/sycl.hpp" @@ -103,7 +103,7 @@ void test_hankel(T, const char* name) // // Instantiate a few instances to check our error handling code can cope with std::complex: // -#ifndef SYCL_LANGUAGE_VERSION +#ifndef BOOST_MATH_ENABLE_SYCL typedef boost::math::policies::policy< boost::math::policies::overflow_error, boost::math::policies::denorm_error, diff --git a/test/test_hermite.cpp b/test/test_hermite.cpp index 60dafdb8f1..2e589e6453 100644 --- a/test/test_hermite.cpp +++ b/test/test_hermite.cpp @@ -5,7 +5,7 @@ // Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#ifndef SYCL_LANGUAGE_VERSION +#ifndef BOOST_MATH_ENABLE_SYCL #include #endif diff --git a/test/test_heuman_lambda.cpp b/test/test_heuman_lambda.cpp index dc44391822..95c88bcd83 100644 --- a/test/test_heuman_lambda.cpp +++ b/test/test_heuman_lambda.cpp @@ -4,7 +4,7 @@ // Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#ifndef SYCL_LANGUAGE_VERSION +#ifndef BOOST_MATH_ENABLE_SYCL #include // include /libs/math/src/ #else #include "sycl/sycl.hpp" diff --git a/test/test_holtsmark.cpp b/test/test_holtsmark.cpp index 8ec21a3065..75cf8a232c 100644 --- a/test/test_holtsmark.cpp +++ b/test/test_holtsmark.cpp @@ -7,7 +7,7 @@ #define BOOST_TEST_MAIN #define BOOST_TEST_MODULE StatsHoltsmarkTest -#ifdef SYCL_LANGUAGE_VERSION +#ifdef BOOST_MATH_ENABLE_SYCL #include "sycl/sycl.hpp" #endif diff --git a/test/test_ibeta.cpp b/test/test_ibeta.cpp index c5b2bdb850..563844a06c 100644 --- a/test/test_ibeta.cpp +++ b/test/test_ibeta.cpp @@ -3,7 +3,7 @@ // Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#ifndef SYCL_LANGUAGE_VERSION +#ifndef BOOST_MATH_ENABLE_SYCL #include #else #define BOOST_MATH_PROMOTE_DOUBLE_POLICY false diff --git a/test/test_ibeta_inv.cpp b/test/test_ibeta_inv.cpp index 868efa7ed2..63a24e8db7 100644 --- a/test/test_ibeta_inv.cpp +++ b/test/test_ibeta_inv.cpp @@ -3,7 +3,7 @@ // Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#ifndef SYCL_LANGUAGE_VERSION +#ifndef BOOST_MATH_ENABLE_SYCL #include #else #define BOOST_MATH_PROMOTE_DOUBLE_POLICY false diff --git a/test/test_ibeta_inv.hpp b/test/test_ibeta_inv.hpp index 057b4a2f7c..8be95b7413 100644 --- a/test/test_ibeta_inv.hpp +++ b/test/test_ibeta_inv.hpp @@ -307,7 +307,7 @@ void test_spots(T) BOOST_MATH_CHECK_THROW(::boost::math::ibeta_inv(static_cast(2.125), -n, static_cast(0.125)), std::domain_error); BOOST_MATH_CHECK_THROW(::boost::math::ibeta_inv(static_cast(2.125), static_cast(1.125), -n), std::domain_error); } - #ifndef SYCL_LANGUAGE_VERSION + #ifndef BOOST_MATH_ENABLE_SYCL if (boost::math::detail::has_denorm_now()) { T m = std::numeric_limits::denorm_min(); diff --git a/test/test_ibeta_inv_ab.cpp b/test/test_ibeta_inv_ab.cpp index 3cfdc0a46e..9efb0cc603 100644 --- a/test/test_ibeta_inv_ab.cpp +++ b/test/test_ibeta_inv_ab.cpp @@ -3,7 +3,7 @@ // Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#ifndef SYCL_LANGUAGE_VERSION +#ifndef BOOST_MATH_ENABLE_SYCL #include #else #include "sycl/sycl.hpp" diff --git a/test/test_igamma.cpp b/test/test_igamma.cpp index ca515fd1f2..ddc37f0759 100644 --- a/test/test_igamma.cpp +++ b/test/test_igamma.cpp @@ -3,7 +3,7 @@ // Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#ifndef SYCL_LANGUAGE_VERSION +#ifndef BOOST_MATH_ENABLE_SYCL #include #else #include "sycl/sycl.hpp" diff --git a/test/test_igamma_inv.cpp b/test/test_igamma_inv.cpp index 5f5b1c7299..40a4191d93 100644 --- a/test/test_igamma_inv.cpp +++ b/test/test_igamma_inv.cpp @@ -3,7 +3,7 @@ // Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#ifndef SYCL_LANGUAGE_VERSION +#ifndef BOOST_MATH_ENABLE_SYCL #include #else #include "sycl/sycl.hpp" @@ -102,7 +102,7 @@ void expected_results() "linux.*", // platform largest_type, // test type(s) "[^|]*medium[^|]*", // test data group - #ifdef SYCL_LANGUAGE_VERSION + #ifdef BOOST_MATH_ENABLE_SYCL "[^|]*", 350, 50); #else "[^|]*", 350, 5); // test function @@ -113,7 +113,7 @@ void expected_results() "linux.*", // platform largest_type, // test type(s) "[^|]*large[^|]*", // test data group - #ifdef SYCL_LANGUAGE_VERSION + #ifdef BOOST_MATH_ENABLE_SYCL "[^|]*", 150, 20); // test function #else "[^|]*", 150, 5); // test function diff --git a/test/test_igamma_inva.cpp b/test/test_igamma_inva.cpp index a1d4261f06..e091bca05a 100644 --- a/test/test_igamma_inva.cpp +++ b/test/test_igamma_inva.cpp @@ -3,7 +3,7 @@ // Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#ifndef SYCL_LANGUAGE_VERSION +#ifndef BOOST_MATH_ENABLE_SYCL #include #else #include "sycl/sycl.hpp" diff --git a/test/test_inverse_chi_squared_distribution.cpp b/test/test_inverse_chi_squared_distribution.cpp index ef74526ad3..6d51bda277 100644 --- a/test/test_inverse_chi_squared_distribution.cpp +++ b/test/test_inverse_chi_squared_distribution.cpp @@ -12,7 +12,7 @@ # pragma warning (disable : 4310) // cast truncates constant value. #endif -#ifdef SYCL_LANGUAGE_VERSION +#ifdef BOOST_MATH_ENABLE_SYCL #include "sycl/sycl.hpp" #endif diff --git a/test/test_inverse_gamma_distribution.cpp b/test/test_inverse_gamma_distribution.cpp index 7eb62a9aa0..4115e1e0c1 100644 --- a/test/test_inverse_gamma_distribution.cpp +++ b/test/test_inverse_gamma_distribution.cpp @@ -14,7 +14,7 @@ # pragma warning (disable : 4310) // cast truncates constant value #endif -#ifdef SYCL_LANGUAGE_VERSION +#ifdef BOOST_MATH_ENABLE_SYCL #include "sycl/sycl.hpp" #endif diff --git a/test/test_jacobi_zeta.cpp b/test/test_jacobi_zeta.cpp index 313dd26460..a11e278f34 100644 --- a/test/test_jacobi_zeta.cpp +++ b/test/test_jacobi_zeta.cpp @@ -4,7 +4,7 @@ // Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#ifndef SYCL_LANGUAGE_VERSION +#ifndef BOOST_MATH_ENABLE_SYCL #include // include /libs/math/src/ #else #include "sycl/sycl.hpp" diff --git a/test/test_landau.cpp b/test/test_landau.cpp index 9c0da57d92..96e9f9c3a7 100644 --- a/test/test_landau.cpp +++ b/test/test_landau.cpp @@ -7,7 +7,7 @@ #define BOOST_TEST_MAIN #define BOOST_TEST_MODULE StatsLandauTest -#ifdef SYCL_LANGUAGE_VERSION +#ifdef BOOST_MATH_ENABLE_SYCL #include "sycl/sycl.hpp" #endif diff --git a/test/test_laplace.cpp b/test/test_laplace.cpp index e82df87953..954b94dc97 100644 --- a/test/test_laplace.cpp +++ b/test/test_laplace.cpp @@ -62,7 +62,7 @@ Test 8: test_extreme_function_arguments() #define BOOST_TEST_MAIN -#ifdef SYCL_LANGUAGE_VERSION +#ifdef BOOST_MATH_ENABLE_SYCL #include "sycl/sycl.hpp" #endif diff --git a/test/test_log1p_simple.cpp b/test/test_log1p_simple.cpp index e5e928b9f4..782805a856 100644 --- a/test/test_log1p_simple.cpp +++ b/test/test_log1p_simple.cpp @@ -3,7 +3,7 @@ // Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#ifdef SYCL_LANGUAGE_VERSION +#ifdef BOOST_MATH_ENABLE_SYCL #include "sycl/sycl.hpp" #endif diff --git a/test/test_logistic_dist.cpp b/test/test_logistic_dist.cpp index 6eb18e0677..62279773dd 100644 --- a/test/test_logistic_dist.cpp +++ b/test/test_logistic_dist.cpp @@ -11,7 +11,7 @@ # pragma warning (disable : 4512) // assignment operator could not be generated. #endif -#ifdef SYCL_LANGUAGE_VERSION +#ifdef BOOST_MATH_ENABLE_SYCL #include "sycl/sycl.hpp" #endif diff --git a/test/test_logistic_sigmoid.cpp b/test/test_logistic_sigmoid.cpp new file mode 100644 index 0000000000..c0c8a04920 --- /dev/null +++ b/test/test_logistic_sigmoid.cpp @@ -0,0 +1,91 @@ +// Copyright Matt Borland 2025. +// 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) + +#include +#include +#include +#include "math_unit_test.hpp" +#include +#include +#include + +#pragma STDC FENV_ACCESS ON + +template +void test() +{ + const std::array x_values = { + 0, + 1, + 1000, + 0.5, + 0.75 + }; + const std::array y_values = { + static_cast(1) / 2, + static_cast(0.73105857863000487925115924182183627436514464016505651927636590791904045307), + static_cast(1), + static_cast(0.62245933120185456463890056574550847875327936530891016305943716265854500), + static_cast(0.6791786991753929731596801157765790212342212482195760219829517436805) + }; + + for (std::size_t i = 0; i < x_values.size(); ++i) + { + const RealType test_value {boost::math::logistic_sigmoid(x_values[i])}; + BOOST_MATH_IF_CONSTEXPR (std::is_same::value || std::is_same::value) + { + CHECK_ULP_CLOSE(test_value, y_values[i], 1); + } + else + { + RealType comparison_value = y_values[i]; + CHECK_MOLLIFIED_CLOSE(test_value, comparison_value, static_cast(1e-15)); + } + + bool fe {false}; + if (std::fetestexcept(FE_OVERFLOW)) + { + fe = true; // LCOV_EXCL_LINE + std::cerr << "FE_OVERFLOW" << std::endl; // LCOV_EXCL_LINE + } + if (std::fetestexcept(FE_UNDERFLOW)) + { + fe = true; // LCOV_EXCL_LINE + std::cerr << "FE_UNDERFLOW" << std::endl; // LCOV_EXCL_LINE + } + if (std::fetestexcept(FE_DIVBYZERO)) + { + fe = true; // LCOV_EXCL_LINE + std::cerr << "FE_DIVBYZERO" << std::endl; // LCOV_EXCL_LINE + } + if (std::fetestexcept(FE_INVALID)) + { + fe = true; // LCOV_EXCL_LINE + std::cerr << "FE_INVALID" << std::endl; // LCOV_EXCL_LINE + } + + CHECK_EQUAL(fe, false); + } +} + +int main() +{ + std::feclearexcept(FE_ALL_EXCEPT); + test(); + + std::feclearexcept(FE_ALL_EXCEPT); + test(); + + std::feclearexcept(FE_ALL_EXCEPT); + test(); + + std::feclearexcept(FE_ALL_EXCEPT); + test(); + + test(); + + return boost::math::test::report_errors(); +} diff --git a/test/test_logit.cpp b/test/test_logit.cpp new file mode 100644 index 0000000000..bef357e87a --- /dev/null +++ b/test/test_logit.cpp @@ -0,0 +1,107 @@ +// Copyright Matt Borland 2025. +// 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) + +#include +#include +#include "math_unit_test.hpp" +#include +#include +#include + +#pragma STDC FENV_ACCESS ON + +template +void test() +{ + const std::array x_values = { + 0.01, + 0.24, + 0.5, + 0.75, + 0.995, + }; + const std::array y_values = { + RealType{-4.595119850134589926852434051810180709116687969582916078687956376405}, + RealType{-1.15267950993838545919655007350715126451438856911612411268258589327840479}, + RealType{0}, + RealType{1.09861228866810969139524523692252570464749055782274945173469433363749429}, + RealType{5.2933048247244923954101212918685372018911052805694724989064609879440992} + }; + + for (std::size_t i = 0; i < x_values.size(); ++i) + { + const RealType test_value {boost::math::logit(x_values[i])}; + + BOOST_MATH_IF_CONSTEXPR (std::is_same::value || std::is_same::value) + { + CHECK_ULP_CLOSE(test_value, y_values[i], 5); + } + else + { + CHECK_MOLLIFIED_CLOSE(test_value, y_values[i], 1e-15); + } + + bool fe {false}; + if (std::fetestexcept(FE_OVERFLOW)) + { + fe = true; // LCOV_EXCL_LINE + std::cerr << "FE_OVERFLOW" << std::endl; // LCOV_EXCL_LINE + } + if (std::fetestexcept(FE_UNDERFLOW)) + { + fe = true; // LCOV_EXCL_LINE + std::cerr << "FE_UNDERFLOW" << std::endl; // LCOV_EXCL_LINE + } + if (std::fetestexcept(FE_DIVBYZERO)) + { + fe = true; // LCOV_EXCL_LINE + std::cerr << "FE_DIVBYZERO" << std::endl; // LCOV_EXCL_LINE + } + if (std::fetestexcept(FE_INVALID)) + { + fe = true; // LCOV_EXCL_LINE + std::cerr << "FE_INVALID" << std::endl; // LCOV_EXCL_LINE + } + + CHECK_EQUAL(fe, false); + } + + #if defined(_CPPUNWIND) || defined(__EXCEPTIONS) + + BOOST_MATH_IF_CONSTEXPR (std::is_arithmetic::value) + { + bool thrown {false}; + try + { + boost::math::logit(std::numeric_limits::denorm_min()); + } + catch (...) + { + thrown = true; + } + + CHECK_EQUAL(thrown, true); + } + + #endif // Exceptional environments +} + +int main() +{ + std::feclearexcept(FE_ALL_EXCEPT); + test(); + + std::feclearexcept(FE_ALL_EXCEPT); + test(); + + std::feclearexcept(FE_ALL_EXCEPT); + test(); + + std::feclearexcept(FE_ALL_EXCEPT); + test(); + + return boost::math::test::report_errors(); +} diff --git a/test/test_lognormal.cpp b/test/test_lognormal.cpp index 81e14a641f..f0c7927034 100644 --- a/test/test_lognormal.cpp +++ b/test/test_lognormal.cpp @@ -8,7 +8,7 @@ // test_lognormal.cpp -#ifdef SYCL_LANGUAGE_VERSION +#ifdef BOOST_MATH_ENABLE_SYCL #include "sycl/sycl.hpp" #endif diff --git a/test/test_mapairy.cpp b/test/test_mapairy.cpp index 87c3fe0068..030b5b996c 100644 --- a/test/test_mapairy.cpp +++ b/test/test_mapairy.cpp @@ -15,7 +15,7 @@ #define BOOST_TEST_MAIN #define BOOST_TEST_MODULE StatsMapAiryTest -#ifdef SYCL_LANGUAGE_VERSION +#ifdef BOOST_MATH_ENABLE_SYCL #include "sycl/sycl.hpp" #endif diff --git a/test/test_nc_beta.cpp b/test/test_nc_beta.cpp index 7695bb9b6e..787944cef1 100644 --- a/test/test_nc_beta.cpp +++ b/test/test_nc_beta.cpp @@ -30,7 +30,7 @@ # define TEST_REAL_CONCEPT #endif -#ifdef SYCL_LANGUAGE_VERSION +#ifdef BOOST_MATH_ENABLE_SYCL #include "sycl/sycl.hpp" #endif diff --git a/test/test_nc_chi_squared.cpp b/test/test_nc_chi_squared.cpp index 2a0c704090..868e99b715 100644 --- a/test/test_nc_chi_squared.cpp +++ b/test/test_nc_chi_squared.cpp @@ -7,7 +7,7 @@ // (See accompanying file LICENSE_1_0.txt // or copy at http://www.boost.org/LICENSE_1_0.txt) -#ifndef SYCL_LANGUAGE_VERSION +#ifndef BOOST_MATH_ENABLE_SYCL #include #endif @@ -30,7 +30,7 @@ #define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error #endif -#ifdef SYCL_LANGUAGE_VERSION +#ifdef BOOST_MATH_ENABLE_SYCL #include "sycl/sycl.hpp" #endif diff --git a/test/test_nc_f.cpp b/test/test_nc_f.cpp index dc9f450331..3a582a29a1 100644 --- a/test/test_nc_f.cpp +++ b/test/test_nc_f.cpp @@ -7,7 +7,7 @@ // (See accompanying file LICENSE_1_0.txt // or copy at http://www.boost.org/LICENSE_1_0.txt) -#ifndef SYCL_LANGUAGE_VERSION +#ifndef BOOST_MATH_ENABLE_SYCL #include #else #include "sycl/sycl.hpp" diff --git a/test/test_negative_binomial.cpp b/test/test_negative_binomial.cpp index f7a310f87f..57bc3d2404 100644 --- a/test/test_negative_binomial.cpp +++ b/test/test_negative_binomial.cpp @@ -26,7 +26,7 @@ # define TEST_REAL_CONCEPT #endif -#ifdef SYCL_LANGUAGE_VERSION +#ifdef BOOST_MATH_ENABLE_SYCL #include "sycl/sycl.hpp" #endif diff --git a/test/test_normal.cpp b/test/test_normal.cpp index 636ff2c1ba..d02fcbe277 100644 --- a/test/test_normal.cpp +++ b/test/test_normal.cpp @@ -15,7 +15,7 @@ // From MathWorld--A Wolfram Web Resource. // http://mathworld.wolfram.com/NormalDistribution.html -#ifndef SYCL_LANGUAGE_VERSION +#ifndef BOOST_MATH_ENABLE_SYCL #include // include directory /libs/math/src/tr1/ is needed. #else #include "sycl/sycl.hpp" diff --git a/test/test_pareto.cpp b/test/test_pareto.cpp index fc884837d5..6c1ff24754 100644 --- a/test/test_pareto.cpp +++ b/test/test_pareto.cpp @@ -24,7 +24,7 @@ # pragma warning(disable: 4100) // unreferenced formal parameter. #endif -#ifdef SYCL_LANGUAGE_VERSION +#ifdef BOOST_MATH_ENABLE_SYCL #include "sycl/sycl.hpp" #endif diff --git a/test/test_poisson.cpp b/test/test_poisson.cpp index 3a142d279b..96e5f12d73 100644 --- a/test/test_poisson.cpp +++ b/test/test_poisson.cpp @@ -23,7 +23,7 @@ # pragma warning(disable: 4127) // conditional expression is constant. #endif -#ifdef SYCL_LANGUAGE_VERSION +#ifdef BOOST_MATH_ENABLE_SYCL #include "sycl/sycl.hpp" #endif diff --git a/test/test_rayleigh.cpp b/test/test_rayleigh.cpp index 82ff80be26..5a15941a18 100644 --- a/test/test_rayleigh.cpp +++ b/test/test_rayleigh.cpp @@ -13,7 +13,7 @@ # pragma warning(disable: 4100) // unreferenced formal parameter. #endif -#ifdef SYCL_LANGUAGE_VERSION +#ifdef BOOST_MATH_ENABLE_SYCL #include "sycl/sycl.hpp" #endif diff --git a/test/test_reverse_mode_autodiff_basic_math_ops.cpp b/test/test_reverse_mode_autodiff_basic_math_ops.cpp new file mode 100644 index 0000000000..b8e476c9a6 --- /dev/null +++ b/test/test_reverse_mode_autodiff_basic_math_ops.cpp @@ -0,0 +1,409 @@ +// 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 +BOOST_AUTO_TEST_SUITE(test_basic_math_ops) + +using namespace rdiff; +template +T test_add(T x[5]) +{ + return x[0] + x[1] + x[2] + x[3] + x[4]; +} +BOOST_AUTO_TEST_CASE_TEMPLATE(addition, T, all_float_types) +{ + RandomSample rng{-100, 100}; + T x1_v = rng.next(); + T x2_v = rng.next(); + T test_rvar_p_rvar_v = x1_v + x2_v; + + rvar x1 = x1_v; + rvar x2 = x2_v; + + rvar test_rvar_p_rvar = x1 + x2; + rvar test_rvar_p_float = x1 + x2_v; + rvar test_float_p_rvar = x1_v + x2; + BOOST_REQUIRE_EQUAL(test_rvar_p_rvar_v, test_rvar_p_rvar.item()); + BOOST_REQUIRE_EQUAL(test_rvar_p_rvar_v, test_rvar_p_float.item()); + BOOST_REQUIRE_EQUAL(test_float_p_rvar.item(), test_rvar_p_rvar_v); + + gradient_tape& tape = get_active_tape(); + tape.zero_grad(); + test_rvar_p_rvar.backward(); + BOOST_REQUIRE_EQUAL(x1.adjoint(), T(1.0)); + BOOST_REQUIRE_EQUAL(x2.adjoint(), T(1.0)); + + tape.zero_grad(); + rvar z = x1 + x1 + x1 + x1 + x1; + z.backward(); + BOOST_REQUIRE_EQUAL(x1.adjoint(), 5.0); +} + +BOOST_AUTO_TEST_CASE_TEMPLATE(multiplication, T, all_float_types) +{ + RandomSample rng{T(-100), T(100)}; + T x1_v = rng.next(); + T x2_v = rng.next(); + T test_rvar_p_rvar_v = x1_v * x2_v; + + rvar x1 = x1_v; + rvar x2 = x2_v; + + rvar test_rvar_p_rvar = x1 * x2; + rvar test_rvar_p_float = x1 * x2_v; + rvar test_float_p_rvar = x1_v * x2; + + BOOST_REQUIRE_EQUAL(test_rvar_p_rvar_v, test_rvar_p_rvar.item()); + BOOST_REQUIRE_EQUAL(test_rvar_p_rvar_v, test_rvar_p_float.item()); + BOOST_REQUIRE_EQUAL(test_float_p_rvar.item(), test_rvar_p_rvar_v); + + gradient_tape& tape = get_active_tape(); + tape.zero_grad(); + test_rvar_p_rvar.backward(); + BOOST_REQUIRE_EQUAL(x1.adjoint(), x2_v); + BOOST_REQUIRE_EQUAL(x2.adjoint(), x1_v); + + tape.zero_grad(); + auto z = x1 * x1 * x1 * x1 * x1; + rvar zz(z); + zz.backward(); + BOOST_REQUIRE_CLOSE(x1.adjoint(), T(5) * x1_v * x1_v * x1_v * x1_v, boost_close_tol()); + tape.clear(); +} + +BOOST_AUTO_TEST_CASE_TEMPLATE(minus, T, all_float_types) +{ + RandomSample rng{-100, 100}; + T x1_v = rng.next(); + T x2_v = rng.next(); + T test_rvar_p_rvar_v = x1_v - x2_v; + + rvar x1 = x1_v; + rvar x2 = x2_v; + + rvar test_rvar_p_rvar = x1 - x2; + rvar test_rvar_p_float = x1 - x2_v; + rvar test_float_p_rvar = x1_v - x2; + + BOOST_REQUIRE_EQUAL(test_rvar_p_rvar_v, test_rvar_p_rvar.item()); + BOOST_REQUIRE_EQUAL(test_rvar_p_rvar_v, test_rvar_p_float.item()); + BOOST_REQUIRE_EQUAL(test_float_p_rvar.item(), test_rvar_p_rvar_v); + + gradient_tape& tape = get_active_tape(); + tape.zero_grad(); + test_rvar_p_rvar.backward(); + BOOST_REQUIRE_EQUAL(x1.adjoint(), 1.0); + BOOST_REQUIRE_EQUAL(x2.adjoint(), -1.0); + + tape.zero_grad(); + auto z = -x1 - x1 - x1 - x1 - x1; + rvar zz(z); + zz.backward(); + BOOST_REQUIRE_CLOSE(x1.adjoint(), -5, boost_close_tol()); + tape.clear(); +} + +BOOST_AUTO_TEST_CASE_TEMPLATE(division, T, all_float_types) +{ + RandomSample rng{-1, 1}; + T x1_v = rng.next(); + T x2_v = rng.next(); + T test_rvar_p_rvar_v = x1_v / x2_v; + + rvar x1 = x1_v; + rvar x2 = x2_v; + + rvar test_rvar_p_rvar = x1 / x2; + rvar test_rvar_p_float = x1 / x2_v; + rvar test_float_p_rvar = x1_v / x2; + + BOOST_REQUIRE_EQUAL(test_rvar_p_rvar_v, test_rvar_p_rvar.item()); + BOOST_REQUIRE_EQUAL(test_rvar_p_rvar_v, test_rvar_p_float.item()); + BOOST_REQUIRE_EQUAL(test_float_p_rvar.item(), test_rvar_p_rvar_v); + + gradient_tape& tape = get_active_tape(); + tape.zero_grad(); + test_rvar_p_rvar.backward(); + BOOST_REQUIRE_CLOSE(x1.adjoint(), 1.0 / x2_v, boost_close_tol()); + BOOST_REQUIRE_CLOSE(x2.adjoint(), -x1_v / (x2_v * x2_v), boost_close_tol()); + + tape.zero_grad(); + auto z = 2.0 / x1 / x1 / x1 / x1 / x1; + rvar zz(z); + zz.backward(); + BOOST_REQUIRE_CLOSE(x1.adjoint(), + -10 / (x1_v * x1_v * x1_v * x1_v * x1_v * x1_v), + boost_close_tol()); + tape.clear(); +} + +/* gradient test function */ +template +T f(T x, T y) +{ + return (x * y) / ((x + y) * (x - y)); +} + +template +std::vector grad_f_a(T x, T y) +{ + T f_x = static_cast(y * (-pow(x, 2) - pow(y, 2)) + / (pow(x, 4) - 2 * pow(x, 2) * pow(y, 2) + pow(y, 4))); + T f_y = static_cast(x * (pow(x, 2) + pow(y, 2)) + / (pow(x, 4) - 2 * pow(x, 2) * pow(y, 2) + pow(y, 4))); + return {f_x, f_y}; +} + +template +std::vector> hess_f_a(T x, T y) +{ + T f_xx = static_cast( + 2 * x * y * (pow(x, 2) + 3 * pow(y, 2)) + / (pow(x, 6) - 3 * pow(x, 4) * pow(y, 2) + 3 * pow(x, 2) * pow(y, 4) - pow(y, 6))); + T f_xy = static_cast( + (-pow(x, 4) - 6 * pow(x, 2) * pow(y, 2) - pow(y, 4)) + / (pow(x, 6) - 3 * pow(x, 4) * pow(y, 2) + 3 * pow(x, 2) * pow(y, 4) - pow(y, 6))); + T f_yx = static_cast( + (-pow(x, 4) - 6 * pow(x, 2) * pow(y, 2) - pow(y, 4)) + / (pow(x, 6) - 3 * pow(x, 4) * pow(y, 2) + 3 * pow(x, 2) * pow(y, 4) - pow(y, 6))); + T f_yy = static_cast( + 2 * x * y * (3 * pow(x, 2) + pow(y, 2)) + / (pow(x, 6) - 3 * pow(x, 4) * pow(y, 2) + 3 * pow(x, 2) * pow(y, 4) - pow(y, 6))); + return {{f_xx, f_xy}, {f_yx, f_yy}}; +} + +template +std::vector>> df_3_a(T x, T y) +{ + T f_xxx = static_cast(6 * y * (-pow(x, 4) - 6 * pow(x, 2) * pow(y, 2) - pow(y, 4)) + / (pow(x, 8) - 4 * pow(x, 6) * pow(y, 2) + 6 * pow(x, 4) * pow(y, 4) + - 4 * pow(x, 2) * pow(y, 6) + pow(y, 8))); + T f_xxy = static_cast(2 * x * (pow(x, 4) + 14 * pow(x, 2) * pow(y, 2) + 9 * pow(y, 4)) + / (pow(x, 8) - 4 * pow(x, 6) * pow(y, 2) + 6 * pow(x, 4) * pow(y, 4) + - 4 * pow(x, 2) * pow(y, 6) + pow(y, 8))); + T f_xyx = static_cast(2 * x * (pow(x, 4) + 14 * pow(x, 2) * pow(y, 2) + 9 * pow(y, 4)) + / (pow(x, 8) - 4 * pow(x, 6) * pow(y, 2) + 6 * pow(x, 4) * pow(y, 4) + - 4 * pow(x, 2) * pow(y, 6) + pow(y, 8))); + T f_xyy = static_cast(2 * y * (-9 * pow(x, 4) - 14 * pow(x, 2) * pow(y, 2) - pow(y, 4)) + / (pow(x, 8) - 4 * pow(x, 6) * pow(y, 2) + 6 * pow(x, 4) * pow(y, 4) + - 4 * pow(x, 2) * pow(y, 6) + pow(y, 8))); + T f_yxx = static_cast(2 * x * (pow(x, 4) + 14 * pow(x, 2) * pow(y, 2) + 9 * pow(y, 4)) + / (pow(x, 8) - 4 * pow(x, 6) * pow(y, 2) + 6 * pow(x, 4) * pow(y, 4) + - 4 * pow(x, 2) * pow(y, 6) + pow(y, 8))); + T f_yxy = static_cast(2 * y * (-9 * pow(x, 4) - 14 * pow(x, 2) * pow(y, 2) - pow(y, 4)) + / (pow(x, 8) - 4 * pow(x, 6) * pow(y, 2) + 6 * pow(x, 4) * pow(y, 4) + - 4 * pow(x, 2) * pow(y, 6) + pow(y, 8))); + T f_yyx = static_cast(2 * y * (-9 * pow(x, 4) - 14 * pow(x, 2) * pow(y, 2) - pow(y, 4)) + / (pow(x, 8) - 4 * pow(x, 6) * pow(y, 2) + 6 * pow(x, 4) * pow(y, 4) + - 4 * pow(x, 2) * pow(y, 6) + pow(y, 8))); + T f_yyy = static_cast(6 * x * (pow(x, 4) + 6 * pow(x, 2) * pow(y, 2) + pow(y, 4)) + / (pow(x, 8) - 4 * pow(x, 6) * pow(y, 2) + 6 * pow(x, 4) * pow(y, 4) + - 4 * pow(x, 2) * pow(y, 6) + pow(y, 8))); + return {{{f_xxx, f_xxy}, {f_xyx, f_xyy}}, {{f_yxx, f_yxy}, {f_yyx, f_yyy}}}; +} +template +std::vector>>> df_4_a(T x, T y) +{ + T f_xxxx = static_cast(24 * x * y * (pow(x, 4) + 10 * pow(x, 2) * pow(y, 2) + 5 * pow(y, 4)) + / (pow(x, 10) - 5 * pow(x, 8) * pow(y, 2) + 10 * pow(x, 6) * pow(y, 4) + - 10 * pow(x, 4) * pow(y, 6) + 5 * pow(x, 2) * pow(y, 8) + - pow(y, 10))); + T f_xxxy = static_cast( + 6 * (-pow(x, 6) - 25 * pow(x, 4) * pow(y, 2) - 35 * pow(x, 2) * pow(y, 4) - 3 * pow(y, 6)) + / (pow(x, 10) - 5 * pow(x, 8) * pow(y, 2) + 10 * pow(x, 6) * pow(y, 4) + - 10 * pow(x, 4) * pow(y, 6) + 5 * pow(x, 2) * pow(y, 8) - pow(y, 10))); + T f_xxyx = static_cast( + 6 * (-pow(x, 6) - 25 * pow(x, 4) * pow(y, 2) - 35 * pow(x, 2) * pow(y, 4) - 3 * pow(y, 6)) + / (pow(x, 10) - 5 * pow(x, 8) * pow(y, 2) + 10 * pow(x, 6) * pow(y, 4) + - 10 * pow(x, 4) * pow(y, 6) + 5 * pow(x, 2) * pow(y, 8) - pow(y, 10))); + T f_xxyy = static_cast( + (72 * pow(x, 5) * y + 240 * pow(x, 3) * pow(y, 3) + 72 * x * pow(y, 5)) + / (pow(x, 10) - 5 * pow(x, 8) * pow(y, 2) + 10 * pow(x, 6) * pow(y, 4) + - 10 * pow(x, 4) * pow(y, 6) + 5 * pow(x, 2) * pow(y, 8) - pow(y, 10))); + T f_xyxx = static_cast( + 6 * (-pow(x, 6) - 25 * pow(x, 4) * pow(y, 2) - 35 * pow(x, 2) * pow(y, 4) - 3 * pow(y, 6)) + / (pow(x, 10) - 5 * pow(x, 8) * pow(y, 2) + 10 * pow(x, 6) * pow(y, 4) + - 10 * pow(x, 4) * pow(y, 6) + 5 * pow(x, 2) * pow(y, 8) - pow(y, 10))); + T f_xyxy = static_cast( + (72 * pow(x, 5) * y + 240 * pow(x, 3) * pow(y, 3) + 72 * x * pow(y, 5)) + / (pow(x, 10) - 5 * pow(x, 8) * pow(y, 2) + 10 * pow(x, 6) * pow(y, 4) + - 10 * pow(x, 4) * pow(y, 6) + 5 * pow(x, 2) * pow(y, 8) - pow(y, 10))); + T f_xyyx = static_cast( + (72 * pow(x, 5) * y + 240 * pow(x, 3) * pow(y, 3) + 72 * x * pow(y, 5)) + / (pow(x, 10) - 5 * pow(x, 8) * pow(y, 2) + 10 * pow(x, 6) * pow(y, 4) + - 10 * pow(x, 4) * pow(y, 6) + 5 * pow(x, 2) * pow(y, 8) - pow(y, 10))); + T f_xyyy = static_cast( + 6 * (-3 * pow(x, 6) - 35 * pow(x, 4) * pow(y, 2) - 25 * pow(x, 2) * pow(y, 4) - pow(y, 6)) + / (pow(x, 10) - 5 * pow(x, 8) * pow(y, 2) + 10 * pow(x, 6) * pow(y, 4) + - 10 * pow(x, 4) * pow(y, 6) + 5 * pow(x, 2) * pow(y, 8) - pow(y, 10))); + T f_yxxx = static_cast( + 6 * (-pow(x, 6) - 25 * pow(x, 4) * pow(y, 2) - 35 * pow(x, 2) * pow(y, 4) - 3 * pow(y, 6)) + / (pow(x, 10) - 5 * pow(x, 8) * pow(y, 2) + 10 * pow(x, 6) * pow(y, 4) + - 10 * pow(x, 4) * pow(y, 6) + 5 * pow(x, 2) * pow(y, 8) - pow(y, 10))); + T f_yxxy = static_cast( + (72 * pow(x, 5) * y + 240 * pow(x, 3) * pow(y, 3) + 72 * x * pow(y, 5)) + / (pow(x, 10) - 5 * pow(x, 8) * pow(y, 2) + 10 * pow(x, 6) * pow(y, 4) + - 10 * pow(x, 4) * pow(y, 6) + 5 * pow(x, 2) * pow(y, 8) - pow(y, 10))); + T f_yxyx = static_cast( + (72 * pow(x, 5) * y + 240 * pow(x, 3) * pow(y, 3) + 72 * x * pow(y, 5)) + / (pow(x, 10) - 5 * pow(x, 8) * pow(y, 2) + 10 * pow(x, 6) * pow(y, 4) + - 10 * pow(x, 4) * pow(y, 6) + 5 * pow(x, 2) * pow(y, 8) - pow(y, 10))); + T f_yxyy = static_cast( + 6 * (-3 * pow(x, 6) - 35 * pow(x, 4) * pow(y, 2) - 25 * pow(x, 2) * pow(y, 4) - pow(y, 6)) + / (pow(x, 10) - 5 * pow(x, 8) * pow(y, 2) + 10 * pow(x, 6) * pow(y, 4) + - 10 * pow(x, 4) * pow(y, 6) + 5 * pow(x, 2) * pow(y, 8) - pow(y, 10))); + T f_yyxx = static_cast( + (72 * pow(x, 5) * y + 240 * pow(x, 3) * pow(y, 3) + 72 * x * pow(y, 5)) + / (pow(x, 10) - 5 * pow(x, 8) * pow(y, 2) + 10 * pow(x, 6) * pow(y, 4) + - 10 * pow(x, 4) * pow(y, 6) + 5 * pow(x, 2) * pow(y, 8) - pow(y, 10))); + T f_yyxy = static_cast( + 6 * (-3 * pow(x, 6) - 35 * pow(x, 4) * pow(y, 2) - 25 * pow(x, 2) * pow(y, 4) - pow(y, 6)) + / (pow(x, 10) - 5 * pow(x, 8) * pow(y, 2) + 10 * pow(x, 6) * pow(y, 4) + - 10 * pow(x, 4) * pow(y, 6) + 5 * pow(x, 2) * pow(y, 8) - pow(y, 10))); + T f_yyyx = static_cast( + 6 * (-3 * pow(x, 6) - 35 * pow(x, 4) * pow(y, 2) - 25 * pow(x, 2) * pow(y, 4) - pow(y, 6)) + / (pow(x, 10) - 5 * pow(x, 8) * pow(y, 2) + 10 * pow(x, 6) * pow(y, 4) + - 10 * pow(x, 4) * pow(y, 6) + 5 * pow(x, 2) * pow(y, 8) - pow(y, 10))); + T f_yyyy = static_cast(24 * x * y * (5 * pow(x, 4) + 10 * pow(x, 2) * pow(y, 2) + pow(y, 4)) + / (pow(x, 10) - 5 * pow(x, 8) * pow(y, 2) + 10 * pow(x, 6) * pow(y, 4) + - 10 * pow(x, 4) * pow(y, 6) + 5 * pow(x, 2) * pow(y, 8) + - pow(y, 10))); + return {{{{f_xxxx, f_xxxy}, {f_xxyx, f_xxyy}}, {{f_xyxx, f_xyxy}, {f_xyyx, f_xyyy}}}, + {{{f_yxxx, f_yxxy}, {f_yxyx, f_yxyy}}, {{f_yyxx, f_yyxy}, {f_yyyx, f_yyyy}}}}; +} + +BOOST_AUTO_TEST_CASE_TEMPLATE(first_derivative, T, all_float_types) +{ + //RandomSample rng{-1, 1}; + T x(1.1224); //rng.next(); + T y(5.213414); //rng.next(); + + rvar x_ad = x; + rvar y_ad = y; + + //T fv = f(x, y); + rvar f_ad = f(x_ad, y_ad); + auto grad_f_analytical = grad_f_a(x, y); + /* intended use case */ + f_ad.backward(); + BOOST_REQUIRE_CLOSE(x_ad.adjoint(), grad_f_analytical[0], boost_close_tol()); + BOOST_REQUIRE_CLOSE(y_ad.adjoint(), grad_f_analytical[1], boost_close_tol()); + + gradient_tape& tape = get_active_tape(); + tape.zero_grad(); + + /* grad test */ + auto grad_func_test_grad = grad(f_ad, &x_ad, &y_ad); + /* grad_nd test */ + auto grad_nd_func_test_grad = grad_nd<1>(f_ad, &x_ad, &y_ad); + + for (int i = 0; i < 2; i++) { + BOOST_REQUIRE_CLOSE(grad_func_test_grad[i], grad_f_analytical[i], boost_close_tol()); + BOOST_REQUIRE_CLOSE(grad_nd_func_test_grad[i], grad_f_analytical[i], boost_close_tol()); + } +} +BOOST_AUTO_TEST_CASE_TEMPLATE(second_derivative_and_hessian, T, all_float_types) +{ + //RandomSample rng{1, 1}; + T x = 1.0; //; rng.next(); + T y = 1.5; //rng.next(); + + rvar x_ad = x; + rvar y_ad = y; + + //T fv = f(x, y); + rvar f_ad = f(x_ad, y_ad); + gradient_tape& tape = get_active_tape(); + tape.zero_grad(); + + auto hess_analytical = hess_f_a(x, y); + auto hess_func_test = hess(f_ad, &x_ad, &y_ad); + auto grad_nd_func_test = grad_nd<2>(f_ad, &x_ad, &y_ad); + + for (int i = 0; i < 2; i++) { + for (int j = 0; j < 2; j++) { + BOOST_REQUIRE_CLOSE(hess_func_test[i][j], hess_analytical[i][j], boost_close_tol()); + BOOST_REQUIRE_CLOSE(hess_func_test[i][j], grad_nd_func_test[i][j], boost_close_tol()); + } + } +} + +BOOST_AUTO_TEST_CASE_TEMPLATE(order_3_der, T, all_float_types) +{ + //RandomSample rng{1, 2}; + T x = 1; //rng.next(); + T y = 2; //rng.next(); + + rvar x_ad = x; + rvar y_ad = y; + + //T fv = f(x, y); + rvar f_ad = f(x_ad, y_ad); + gradient_tape& tape = get_active_tape(); + tape.zero_grad(); + + auto df3 = df_3_a(x, y); + auto grad_ad = grad(f_ad, &x_ad, &y_ad); + + std::vector>> grad_tensor; + for (int i = 0; i < 2; i++) { + auto df_hess = hess(grad_ad[i], &x_ad, &y_ad); + grad_tensor.push_back(df_hess); + } + auto grad_nd_func_test = grad_nd<3>(f_ad, &x_ad, &y_ad); + for (int i = 0; i < 2; i++) { + for (int j = 0; j < 2; j++) { + for (int k = 0; k < 2; k++) { + BOOST_REQUIRE_CLOSE(grad_tensor[i][j][k], df3[i][j][k], boost_close_tol()); + BOOST_REQUIRE_CLOSE(grad_nd_func_test[i][j][k], df3[i][j][k], boost_close_tol()); + } + } + } +} + +BOOST_AUTO_TEST_CASE_TEMPLATE(fourth_derivative, T, all_float_types) +{ + //RandomSample rng{1, 2}; + // this derivative is a bit unstable and so the tests + // are difficult to get to pass for floats and doubles (need long doubles) + // but its stable enough at x=1 y=2 + T x_val = 1; //rng.next(); + T y_val = 2; //rng.next(); + + rvar x_ad = x_val; + rvar y_ad = y_val; + rvar f_ad = f(x_ad, y_ad); + + auto df4 = df_4_a(x_val, y_val); + auto gf = grad(f_ad, &x_ad, &y_ad); + std::array, 2>, 2>, 2> ggggf; + for (int i = 0; i < 2; ++i) { + auto hess1 = grad(gf[i], &x_ad, &y_ad); + for (int j = 0; j < 2; ++j) { + auto hess2 = grad(hess1[j], &x_ad, &y_ad); + for (int k = 0; k < 2; ++k) { + auto hess3 = grad(hess2[k], &x_ad, &y_ad); + for (int l = 0; l < 2; ++l) { + ggggf[i][j][k][l] = hess3[l]; + } + } + } + } + auto grad_nd_func_test = grad_nd<4>(f_ad, &x_ad, &y_ad); + for (int i = 0; i < 2; i++) { + for (int j = 0; j < 2; j++) { + for (int k = 0; k < 2; k++) { + for (int l = 0; l < 2; l++) { + BOOST_REQUIRE_CLOSE(ggggf[i][j][k][l], df4[i][j][k][l], boost_close_tol()); + BOOST_REQUIRE_CLOSE(grad_nd_func_test[i][j][k][l], + df4[i][j][k][l], + boost_close_tol()); + } + } + } + } +} +BOOST_AUTO_TEST_SUITE_END() diff --git a/test/test_reverse_mode_autodiff_comparison_operators.cpp b/test/test_reverse_mode_autodiff_comparison_operators.cpp new file mode 100644 index 0000000000..1b32b5d63b --- /dev/null +++ b/test/test_reverse_mode_autodiff_comparison_operators.cpp @@ -0,0 +1,303 @@ +// 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" +BOOST_AUTO_TEST_SUITE(test_comparison_operators) +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(equals_rvar_and_rvar, T, all_float_types) +{ + T a = T(3.14); + T b = T(3.14); + T c = T(2.71); + + rvar var1 = rvar(a); + rvar var2 = rvar(b); + rvar var3 = rvar(a); + rvar var4 = rvar(c); + + BOOST_CHECK(var1 == var2); + BOOST_CHECK(!(var1 == var4)); + BOOST_CHECK(var2 == var3); + BOOST_CHECK(!(var3 == var4)); +} + +BOOST_AUTO_TEST_CASE_TEMPLATE(equals_rvar_and_scalar, T, all_float_types) +{ + T a = T(3.14); + T b = T(3.14); + T c = T(2.71); + + rvar var1 = rvar(a); + rvar var2 = rvar(a); + rvar var3 = rvar(a); + rvar var4 = rvar(a); + + BOOST_CHECK(var1 == b); + BOOST_CHECK(!(var1 == c)); + BOOST_CHECK(b == var1); + BOOST_CHECK(!(c == var1)); + + BOOST_CHECK(var2 == b); + BOOST_CHECK(!(var2 == c)); + BOOST_CHECK(b == var2); + BOOST_CHECK(!(c == var2)); + + BOOST_CHECK(var3 == b); + BOOST_CHECK(!(var3 == c)); + BOOST_CHECK(b == var3); + BOOST_CHECK(!(c == var3)); + + BOOST_CHECK(var4 == b); + BOOST_CHECK(!(var4 == c)); + BOOST_CHECK(b == var4); + BOOST_CHECK(!(c == var4)); +} + +BOOST_AUTO_TEST_CASE_TEMPLATE(inequality_rvar_and_rvar, T, all_float_types) +{ + T a = T(3.14); + T b = T(3.14); + T c = T(2.71); + + rvar var1 = rvar(a); + rvar var2 = rvar(b); + rvar var3 = rvar(a); + rvar var4 = rvar(c); + + BOOST_CHECK(var1 != var4); + BOOST_CHECK(!(var1 != var2)); + BOOST_CHECK(var2 != var4); + BOOST_CHECK(!(var3 != var2)); +} + +BOOST_AUTO_TEST_CASE_TEMPLATE(inequality_rvar_and_scalar, T, all_float_types) +{ + T a = T(3.14); + T b = T(3.14); + T c = T(2.71); + + rvar var1 = rvar(a); + rvar var2 = rvar(a); + rvar var3 = rvar(a); + rvar var4 = rvar(a); + + BOOST_CHECK(var1 != c); + BOOST_CHECK(!(var1 != b)); + BOOST_CHECK(c != var1); + BOOST_CHECK(!(b != var1)); + + BOOST_CHECK(var2 != c); + BOOST_CHECK(!(var2 != b)); + BOOST_CHECK(c != var2); + BOOST_CHECK(!(b != var2)); + + BOOST_CHECK(var3 != c); + BOOST_CHECK(!(var3 != b)); + BOOST_CHECK(c != var3); + BOOST_CHECK(!(b != var3)); + + BOOST_CHECK(var4 != c); + BOOST_CHECK(!(var4 != b)); + BOOST_CHECK(c != var4); + BOOST_CHECK(!(b != var4)); +} + +BOOST_AUTO_TEST_CASE_TEMPLATE(less_than_rvar_and_rvar, T, all_float_types) +{ + T a = T(3.14); + T b = T(3.14); + T c = T(2.71); + + rvar var1 = rvar(a); + rvar var2 = rvar(b); + rvar var3 = rvar(c); + rvar var4 = rvar(c); + + BOOST_CHECK(var3 < var1); + BOOST_CHECK(!(var1 < var2)); + BOOST_CHECK(!(var1 < var3)); + BOOST_CHECK(!(var3 < var4)); +} + +BOOST_AUTO_TEST_CASE_TEMPLATE(greater_than_rvar_and_rvar, T, all_float_types) +{ + T a = T(3.14); + T b = T(3.14); + T c = T(2.71); + + rvar var1 = rvar(a); + rvar var2 = rvar(b); + rvar var3 = rvar(c); + rvar var4 = rvar(c); + + BOOST_CHECK(var1 > var3); + BOOST_CHECK(!(var1 > var2)); + BOOST_CHECK(!(var3 > var1)); + BOOST_CHECK(!(var3 > var4)); +} +BOOST_AUTO_TEST_CASE_TEMPLATE(less_than_rvar_and_scalar, T, all_float_types) +{ + T a = T(3.14); + T b = T(3.14); + T c = T(2.71); + T d = T(4.0); + + rvar var1 = rvar(a); + rvar var2 = rvar(a); + rvar var3 = rvar(c); + rvar var4 = rvar(c); + + BOOST_CHECK(var3 < a); + BOOST_CHECK(!(var1 < b)); + BOOST_CHECK(c < var1); + BOOST_CHECK(!(d < var2)); + + BOOST_CHECK(var4 < a); + BOOST_CHECK(!(var2 < b)); + BOOST_CHECK(c < var2); + BOOST_CHECK(!(d < var1)); + + BOOST_CHECK(var3 < b); + BOOST_CHECK(var4 < b); + BOOST_CHECK(c < var1); + BOOST_CHECK(!(d < var3)); + + BOOST_CHECK(var3 < a); + BOOST_CHECK(!(var2 < a)); + BOOST_CHECK(!(c < var4)); + BOOST_CHECK(!(d < var1)); +} + +BOOST_AUTO_TEST_CASE_TEMPLATE(greater_than_rvar_and_scalar, T, all_float_types) +{ + T a = T(3.14); + T b = T(3.14); + T c = T(2.71); + + rvar var1 = rvar(a); + rvar var2 = rvar(a); + rvar var3 = rvar(c); + rvar var4 = rvar(c); + + BOOST_CHECK(var1 > c); + BOOST_CHECK(!(var1 > b)); + BOOST_CHECK(b > var3); + BOOST_CHECK(!(c > var4)); + + BOOST_CHECK(var2 > c); + BOOST_CHECK(!(var2 > b)); + BOOST_CHECK(b > var4); + BOOST_CHECK(!(c > var3)); + + BOOST_CHECK(var1 > c); + BOOST_CHECK(!(var1 > b)); + BOOST_CHECK(a > var4); + BOOST_CHECK(!(c > var3)); + + BOOST_CHECK(var2 > c); + BOOST_CHECK(!(var2 > b)); + BOOST_CHECK(a > var4); + BOOST_CHECK(!(c > var3)); +} + +BOOST_AUTO_TEST_CASE_TEMPLATE(less_than_or_equal_rvar_and_rvar, T, all_float_types) +{ + T a = T(3.14); + T b = T(3.14); + T c = T(2.71); + + rvar var1 = rvar(a); + rvar var2 = rvar(b); + rvar var3 = rvar(c); + rvar var4 = rvar(c); + + BOOST_CHECK(var3 <= var1); + BOOST_CHECK(var1 <= var2); + BOOST_CHECK(!(var1 <= var3)); + BOOST_CHECK(var3 <= var4); +} + +BOOST_AUTO_TEST_CASE_TEMPLATE(less_than_or_equal_rvar_and_scalar, T, all_float_types) +{ + T a = T(3.14); + T b = T(3.14); + T c = T(2.71); + T d = T(4.0); + + rvar var1 = rvar(a); + rvar var2 = rvar(a); + rvar var3 = rvar(c); + rvar var4 = rvar(c); + + BOOST_CHECK(var3 <= a); + BOOST_CHECK(var1 <= b); + BOOST_CHECK(c <= var1); + BOOST_CHECK(!(d <= var2)); + + BOOST_CHECK(var4 <= a); + BOOST_CHECK(var2 <= b); + BOOST_CHECK(c <= var2); + BOOST_CHECK(!(d <= var1)); + + BOOST_CHECK(var3 <= b); + BOOST_CHECK(var4 <= b); + BOOST_CHECK(c <= var1); + BOOST_CHECK(!(d <= var3)); + + BOOST_CHECK(var3 <= a); + BOOST_CHECK(var2 <= a); + BOOST_CHECK(c <= var4); + BOOST_CHECK(!(d <= var1)); +} + +BOOST_AUTO_TEST_CASE_TEMPLATE(greater_than_or_equal_rvar_and_rvar, T, all_float_types) +{ + T a = T(3.14); + T b = T(3.14); + T c = T(2.71); + + rvar var1 = rvar(a); + rvar var2 = rvar(b); + rvar var3 = rvar(c); + rvar var4 = rvar(c); + + BOOST_CHECK(var1 >= var3); + BOOST_CHECK(var1 >= var2); + BOOST_CHECK(!(var3 >= var1)); + BOOST_CHECK(var3 >= var4); +} + +BOOST_AUTO_TEST_CASE_TEMPLATE(greater_than_or_equal_rvar_and_scalar, T, all_float_types) +{ + T a = T(3.14); + T b = T(3.14); + T c = T(2.71); + + rvar var1 = rvar(a); + rvar var2 = rvar(a); + rvar var3 = rvar(c); + rvar var4 = rvar(c); + + BOOST_CHECK(var1 >= c); + BOOST_CHECK(var1 >= b); + BOOST_CHECK(b >= var3); + BOOST_CHECK(c >= var4); + + BOOST_CHECK(var2 >= c); + BOOST_CHECK(var2 >= b); + BOOST_CHECK(b >= var4); + BOOST_CHECK(c >= var3); + + BOOST_CHECK(var1 >= c); + BOOST_CHECK(var1 >= b); + BOOST_CHECK(a >= var4); + BOOST_CHECK(c >= var3); + + BOOST_CHECK(var2 >= c); + BOOST_CHECK(var2 >= b); + BOOST_CHECK(a >= var4); + BOOST_CHECK(c >= var3); +} +BOOST_AUTO_TEST_SUITE_END() diff --git a/test/test_reverse_mode_autodiff_constructors.cpp b/test/test_reverse_mode_autodiff_constructors.cpp new file mode 100644 index 0000000000..b1704d4a01 --- /dev/null +++ b/test/test_reverse_mode_autodiff_constructors.cpp @@ -0,0 +1,288 @@ +// 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" + +BOOST_AUTO_TEST_SUITE(explicit_rvar_constructors) + +BOOST_AUTO_TEST_CASE_TEMPLATE(rvar_constructors_and_utils, T, all_float_types) +{ + RandomSample rng{T(-100), T(100)}; + /* raw constructors */ + T x_value = rng.next(); + rdiff::rvar x0(x_value); + rdiff::rvar x1(x_value); + rdiff::rvar x2(x_value); + + /* raw eval */ + BOOST_CHECK_EQUAL(x_value, x0.evaluate()); + BOOST_CHECK_EQUAL(x_value, x1.evaluate().evaluate()); + BOOST_CHECK_EQUAL(x_value, x2.evaluate().evaluate().evaluate()); + + /* get item helper */ + BOOST_CHECK_EQUAL(x_value, x0.item()); + BOOST_CHECK_EQUAL(x_value, x1.item()); + BOOST_CHECK_EQUAL(x_value, x2.item()); +} + +BOOST_AUTO_TEST_CASE_TEMPLATE(make_rvar_constructors, T, all_float_types) +{ + RandomSample rng{T(-100), T(100)}; + T x_value = rng.next(); + + rdiff::rvar x1 = rdiff::make_rvar(x_value); + rdiff::rvar x2 = rdiff::make_rvar(x_value); + rdiff::rvar x3 = rdiff::make_rvar(x_value); + BOOST_CHECK_EQUAL(x_value, x1.item()); + BOOST_CHECK_EQUAL(x_value, x2.item()); + BOOST_CHECK_EQUAL(x_value, x3.item()); + + T result = x_value+x_value; + auto z1 = x1+x1; + auto z2 = x2+x2; + auto z3 = x3+x3; + + rdiff::rvar y1 = rdiff::make_rvar(z1); + rdiff::rvar y2 = rdiff::make_rvar(z2); + rdiff::rvar y3 = rdiff::make_rvar(z3); + + BOOST_CHECK_EQUAL(y1.item(),result); + BOOST_CHECK_EQUAL(y2.item(),result); + BOOST_CHECK_EQUAL(y3.item(),result); +} + +BOOST_AUTO_TEST_CASE_TEMPLATE(copy_construction, T, all_float_types) +{ + RandomSample rng{-100, 100}; + T original_value_1 = rng.next(); + + /* copy constructor checks */ + rdiff::rvar original_rvar_1(original_value_1); + rdiff::rvar copied_rvar_1 = original_rvar_1; + + BOOST_CHECK_EQUAL(copied_rvar_1.item(), original_value_1); + + /* change original, copy stays same */ + T new_value_1 = rng.next(); + original_rvar_1 = new_value_1; + BOOST_CHECK_EQUAL(copied_rvar_1.item(), original_value_1); + BOOST_CHECK_EQUAL(original_rvar_1.item(), new_value_1); + + T original_value_2 = rng.next(); + rdiff::rvar original_rvar_2(original_value_2); + rdiff::rvar copied_rvar_2 = original_rvar_2; + + BOOST_CHECK_EQUAL(copied_rvar_2.item(), original_value_2); + + T new_value_2 = rng.next(); + original_rvar_2 = new_value_2; + BOOST_CHECK_EQUAL(copied_rvar_2.item(), original_value_2); + BOOST_CHECK_EQUAL(original_rvar_2.item(), new_value_2); + + T original_value_3 = rng.next(); + rdiff::rvar original_rvar_3(original_value_3); + rdiff::rvar copied_rvar_3 = original_rvar_3; + + BOOST_CHECK_EQUAL(copied_rvar_3.item(), original_value_3); + + T new_value_3 = rng.next(); + original_rvar_3 = new_value_3; + BOOST_CHECK_EQUAL(copied_rvar_3.item(), original_value_3); + BOOST_CHECK_EQUAL(original_rvar_3.item(), new_value_3); +} +BOOST_AUTO_TEST_CASE_TEMPLATE(copy_assignment, T, all_float_types) +{ + RandomSample rng{-100, 100}; + T source_value_1 = rng.next(); + T initial_target_value_1 = rng.next(); + rdiff::rvar source_rvar_1(source_value_1); + rdiff::rvar target_rvar_1(initial_target_value_1); + + target_rvar_1 = source_rvar_1; + + BOOST_CHECK_EQUAL(target_rvar_1.item(), source_value_1); + + T new_source_value_1 = rng.next(); + source_rvar_1 = new_source_value_1; + BOOST_CHECK_EQUAL(target_rvar_1.item(), source_value_1); + BOOST_CHECK_EQUAL(source_rvar_1.item(), new_source_value_1); + + rdiff::rvar self_assign_rvar_1(rng.next()); + T value_before_self_assign_1 = self_assign_rvar_1.item(); + self_assign_rvar_1 = self_assign_rvar_1; + BOOST_CHECK_EQUAL(self_assign_rvar_1.item(), value_before_self_assign_1); + + T source_value_2 = rng.next(); + T initial_target_value_2 = rng.next(); + rdiff::rvar source_rvar_2(source_value_2); + rdiff::rvar target_rvar_2(initial_target_value_2); + + target_rvar_2 = source_rvar_2; + + BOOST_CHECK_EQUAL(target_rvar_2.item(), source_value_2); + + T new_source_value_2 = rng.next(); + source_rvar_2 = new_source_value_2; + BOOST_CHECK_EQUAL(target_rvar_2.item(), source_value_2); + BOOST_CHECK_EQUAL(source_rvar_2.item(), new_source_value_2); + + T source_value_3 = rng.next(); + T initial_target_value_3 = rng.next(); + rdiff::rvar source_rvar_3(source_value_3); + rdiff::rvar target_rvar_3(initial_target_value_3); + + target_rvar_3 = source_rvar_3; + + BOOST_CHECK_EQUAL(target_rvar_3.item(), source_value_3); + + T new_source_value_3 = rng.next(); + source_rvar_3 = new_source_value_3; + BOOST_CHECK_EQUAL(target_rvar_3.item(), source_value_3); + BOOST_CHECK_EQUAL(source_rvar_3.item(), new_source_value_3); +} +BOOST_AUTO_TEST_CASE_TEMPLATE(inplace_addition, T, all_float_types) +{ + using namespace rdiff; + RandomSample rng{-1, 1}; + T x1_v = rng.next(); + T x2_v = rng.next(); + T expected = x1_v + x2_v; + + rvar x1 = x1_v; + rvar x2 = x2_v; + + rvar orig_x1 = x1; + rvar orig_x2 = x2; + + x1 += x2; + + BOOST_REQUIRE_EQUAL(x1.item(), expected); + + gradient_tape& tape = get_active_tape(); + tape.zero_grad(); + x1.backward(); + + BOOST_REQUIRE_CLOSE(orig_x1.adjoint(), 1.0, 300 * std::numeric_limits::epsilon()); + BOOST_REQUIRE_CLOSE(orig_x2.adjoint(), 1.0, 300 * std::numeric_limits::epsilon()); + tape.clear(); +} + +BOOST_AUTO_TEST_CASE_TEMPLATE(inplace_subtraction, T, all_float_types) +{ + using namespace rdiff; + RandomSample rng{-1, 1}; + T x1_v = rng.next(); + T x2_v = rng.next(); + T expected = x1_v - x2_v; + + rvar x1 = x1_v; + rvar x2 = x2_v; + + rvar orig_x1 = x1; + rvar orig_x2 = x2; + + x1 -= x2; + + BOOST_REQUIRE_EQUAL(x1.item(), expected); + + gradient_tape& tape = get_active_tape(); + tape.zero_grad(); + x1.backward(); + + BOOST_REQUIRE_CLOSE(orig_x1.adjoint(), 1.0, 300 * std::numeric_limits::epsilon()); + BOOST_REQUIRE_CLOSE(orig_x2.adjoint(), -1.0, 300 * std::numeric_limits::epsilon()); + tape.clear(); +} + +BOOST_AUTO_TEST_CASE_TEMPLATE(inplace_multiplication, T, all_float_types) +{ + using namespace rdiff; + RandomSample rng{-1, 1}; + T x1_v = rng.next(); + T x2_v = rng.next(); + T expected = x1_v * x2_v; + + rvar x1 = x1_v; + rvar x2 = x2_v; + + rvar orig_x1 = x1; + rvar orig_x2 = x2; + + x1 *= x2; + + BOOST_REQUIRE_EQUAL(x1.item(), expected); + + gradient_tape& tape = get_active_tape(); + tape.zero_grad(); + x1.backward(); + + BOOST_REQUIRE_CLOSE(orig_x1.adjoint(), x2_v, 300 * std::numeric_limits::epsilon()); + BOOST_REQUIRE_CLOSE(orig_x2.adjoint(), x1_v, 300 * std::numeric_limits::epsilon()); + tape.clear(); +} + +BOOST_AUTO_TEST_CASE_TEMPLATE(inplace_division, T, all_float_types) +{ + using namespace rdiff; + RandomSample rng{T(-1), T(1)}; + T x1_v = rng.next(); + T x2_v = rng.next() + T(1e-2); + + T expected = x1_v / x2_v; + + rvar x1 = x1_v; + rvar x2 = x2_v; + + rvar orig_x1 = x1; + rvar orig_x2 = x2; + + x1 /= x2; + + BOOST_REQUIRE_EQUAL(x1.item(), expected); + + gradient_tape& tape = get_active_tape(); + tape.zero_grad(); + x1.backward(); + + BOOST_REQUIRE_CLOSE(orig_x1.adjoint(), 1.0 / x2_v, 300 * std::numeric_limits::epsilon()); + BOOST_REQUIRE_CLOSE(orig_x2.adjoint(), + -x1_v / (x2_v * x2_v), + 300 * std::numeric_limits::epsilon()); + tape.clear(); +} +BOOST_AUTO_TEST_CASE_TEMPLATE(test_rvar_ostream_output, T, all_float_types) +{ + using namespace rdiff; + rvar x = static_cast(2.0); + rvar y = static_cast(3.0); + + rvar z = x * y; + z.backward(); + + std::ostringstream oss_x, oss_y, oss_z; + oss_x << x; + oss_y << y; + oss_z << z; + + BOOST_CHECK_EQUAL(oss_x.str(), "rvar<1>(2,3)"); + BOOST_CHECK_EQUAL(oss_y.str(), "rvar<1>(3,2)"); + BOOST_CHECK_EQUAL(oss_z.str(), "rvar<1>(6,1)"); +} + +BOOST_AUTO_TEST_CASE_TEMPLATE(boost_math_tools_numeric_traits, T, all_float_types) +{ + using namespace rdiff; + using rvar_t = rvar; + + BOOST_CHECK_EQUAL(boost::math::tools::digits(), boost::math::tools::digits()); + BOOST_CHECK_EQUAL(boost::math::tools::max_value(), boost::math::tools::max_value()); + BOOST_CHECK_EQUAL(boost::math::tools::min_value(), boost::math::tools::min_value()); + BOOST_CHECK_EQUAL(boost::math::tools::log_max_value(), + boost::math::tools::log_max_value()); + BOOST_CHECK_EQUAL(boost::math::tools::log_min_value(), + boost::math::tools::log_min_value()); + BOOST_CHECK_EQUAL(boost::math::tools::epsilon(), boost::math::tools::epsilon()); +} +BOOST_AUTO_TEST_SUITE_END() diff --git a/test/test_reverse_mode_autodiff_error_functions.cpp b/test/test_reverse_mode_autodiff_error_functions.cpp new file mode 100644 index 0000000000..d96aaba796 --- /dev/null +++ b/test/test_reverse_mode_autodiff_error_functions.cpp @@ -0,0 +1,114 @@ +// 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 +#include +#include +BOOST_AUTO_TEST_SUITE(erf_support) + +using namespace rdiff; +BOOST_AUTO_TEST_CASE_TEMPLATE(test_erf, T, all_float_types) +{ + std::array answers{ + {BOOST_MATH_TEST_VALUE( + T, 0.99997790950300141455862722387041767962015229291260075034275901649691099714918), + BOOST_MATH_TEST_VALUE(T, 0.0001392530519467478538904180310183558561119961779459213), + BOOST_MATH_TEST_VALUE(T, -0.0008355183116804871233425081861101351366719770676755276), + BOOST_MATH_TEST_VALUE(T, 0.004734603766189427032274213054624099107807870050161323), + BOOST_MATH_TEST_VALUE(T, -0.02506554935041461370027524558330405410015931203026583)}}; + const T eps = 0.01; + constexpr int ord = 4; + T cx = 3.0; + + rvar x = cx; + rvar y = rdiff::erf(x); + auto g1 = grad_nd<1>(y, &x); + auto g2 = grad_nd<2>(y, &x); + auto g3 = grad_nd<3>(y, &x); + auto g4 = grad_nd<4>(y, &x); + + BOOST_CHECK_CLOSE(y.item(), answers[0], eps); + BOOST_CHECK_CLOSE(g1[0], answers[1], eps); + BOOST_CHECK_CLOSE(g2[0][0], answers[2], eps); + BOOST_CHECK_CLOSE(g3[0][0][0], answers[3], eps); + BOOST_CHECK_CLOSE(g4[0][0][0][0], answers[4], eps); +} + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_erfc, T, all_float_types) +{ + std::array answers{ + {BOOST_MATH_TEST_VALUE(T, 0.00002209049699858544137277612958232037984770708739924966), + BOOST_MATH_TEST_VALUE(T, -0.0001392530519467478538904180310183558561119961779459213), + BOOST_MATH_TEST_VALUE(T, 0.0008355183116804871233425081861101351366719770676755276), + BOOST_MATH_TEST_VALUE(T, -0.004734603766189427032274213054624099107807870050161323), + BOOST_MATH_TEST_VALUE(T, 0.02506554935041461370027524558330405410015931203026583)}}; + const T eps = 0.01; + constexpr int ord = 4; + T cx = 3.0; + + rvar x = cx; + rvar y = rdiff::erfc(x); + auto g1 = grad_nd<1>(y, &x); + auto g2 = grad_nd<2>(y, &x); + auto g3 = grad_nd<3>(y, &x); + auto g4 = grad_nd<4>(y, &x); + + BOOST_CHECK_CLOSE(y.item(), answers[0], eps); + BOOST_CHECK_CLOSE(g1[0], answers[1], eps); + BOOST_CHECK_CLOSE(g2[0][0], answers[2], eps); + BOOST_CHECK_CLOSE(g3[0][0][0], answers[3], eps); + BOOST_CHECK_CLOSE(g4[0][0][0][0], answers[4], eps); +} + +using namespace rdiff; +BOOST_AUTO_TEST_CASE_TEMPLATE(test_erf_inv, T, all_float_types) +{ + std::array answers{{BOOST_MATH_TEST_VALUE(T, 0.4769362762044699), + BOOST_MATH_TEST_VALUE(T, 1.11258481897195), + BOOST_MATH_TEST_VALUE(T, 1.1807463499934), + BOOST_MATH_TEST_VALUE(T, 5.26058253926122), + BOOST_MATH_TEST_VALUE(T, 28.44125004446708)}}; + const T eps = 0.01; + constexpr int ord = 4; + T cx = 0.5; + + rvar x = cx; + rvar y = rdiff::erf_inv(x); + auto g1 = grad_nd<1>(y, &x); + auto g2 = grad_nd<2>(y, &x); + auto g3 = grad_nd<3>(y, &x); + auto g4 = grad_nd<4>(y, &x); + + BOOST_CHECK_CLOSE(y.item(), answers[0], eps); + BOOST_CHECK_CLOSE(g1[0], answers[1], eps); + BOOST_CHECK_CLOSE(g2[0][0], answers[2], eps); + BOOST_CHECK_CLOSE(g3[0][0][0], answers[3], eps); + BOOST_CHECK_CLOSE(g4[0][0][0][0], answers[4], eps); +} +BOOST_AUTO_TEST_CASE_TEMPLATE(test_erfc_inv, T, all_float_types) +{ + std::array answers{{BOOST_MATH_TEST_VALUE(T, 0.4769362762044699), + BOOST_MATH_TEST_VALUE(T, -1.11258481897195), + BOOST_MATH_TEST_VALUE(T, 1.1807463499934), + BOOST_MATH_TEST_VALUE(T, -5.260582539261222), + BOOST_MATH_TEST_VALUE(T, 28.44125004446708)}}; + const T eps = 0.01; + constexpr int ord = 4; + T cx = 0.5; + + rvar x = cx; + rvar y = rdiff::erfc_inv(x); + auto g1 = grad_nd<1>(y, &x); + auto g2 = grad_nd<2>(y, &x); + auto g3 = grad_nd<3>(y, &x); + auto g4 = grad_nd<4>(y, &x); + + BOOST_CHECK_CLOSE(y.item(), answers[0], eps); + BOOST_CHECK_CLOSE(g1[0], answers[1], eps); + BOOST_CHECK_CLOSE(g2[0][0], answers[2], eps); + BOOST_CHECK_CLOSE(g3[0][0][0], answers[3], eps); + BOOST_CHECK_CLOSE(g4[0][0][0][0], answers[4], 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 new file mode 100644 index 0000000000..a2c2cfec84 --- /dev/null +++ b/test/test_reverse_mode_autodiff_flat_linear_allocator.cpp @@ -0,0 +1,118 @@ +// 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 +BOOST_AUTO_TEST_SUITE(test_flat_linear_allocator) + +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); + } +} + +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()); +} +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]); + } + + 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); +} + +BOOST_AUTO_TEST_SUITE_END() diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_ai_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_ai_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..1c198b3006 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_ai_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_airy_ai_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_airy_ai, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::airy_ai(x_ad); + auto y_expect = boost::math::airy_ai(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_ai_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_ai_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..a0c0217833 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_ai_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_airy_ai_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_airy_ai, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::airy_ai(x_ad); + auto y_expect = boost::math::airy_ai(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_ai_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_ai_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..14680d2c4e --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_ai_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_airy_ai_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_airy_ai, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::airy_ai(x_ad); + auto y_expect = boost::math::airy_ai(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_ai_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_ai_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..4f7c173196 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_ai_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_airy_ai_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_airy_ai, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::airy_ai(x_ad); + auto y_expect = boost::math::airy_ai(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_ai_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_ai_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..c30fe52eb9 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_ai_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_airy_ai_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_airy_ai, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::airy_ai(x_ad); + auto y_expect = boost::math::airy_ai(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_ai_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_ai_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..321c9ce52a --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_ai_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_airy_ai_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_airy_ai, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::airy_ai(x_ad); + auto y_expect = boost::math::airy_ai(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_ai_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_ai_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..ebd3d9638b --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_ai_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_airy_ai_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_airy_ai, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::airy_ai(x_ad); + auto y_expect = boost::math::airy_ai(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_ai_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_ai_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..4ef58b79bf --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_ai_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_airy_ai_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_airy_ai, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::airy_ai(x_ad); + auto y_expect = boost::math::airy_ai(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_ai_prime_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_ai_prime_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..bbb5891cc6 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_ai_prime_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_airy_ai_prime_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_airy_ai_prime, T, bin_float_types) + { + RandomSample rng{ -1, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::airy_ai_prime(x_ad); + auto y_expect = boost::math::airy_ai_prime(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_ai_prime_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_ai_prime_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..0cee53b6ff --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_ai_prime_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_airy_ai_prime_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_airy_ai_prime, T, bin_float_types) +{ + RandomSample rng{-1, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::airy_ai_prime(x_ad); + auto y_expect = boost::math::airy_ai_prime(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_ai_prime_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_ai_prime_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..f7e70a0791 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_ai_prime_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_airy_ai_prime_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_airy_ai_prime, T, multiprecision_float_types) +{ + RandomSample rng{-1, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::airy_ai_prime(x_ad); + auto y_expect = boost::math::airy_ai_prime(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_ai_prime_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_ai_prime_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..ff85047ed2 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_ai_prime_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_airy_ai_prime_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_airy_ai_prime, T, multiprecision_float_types) + { + RandomSample rng{ -1, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::airy_ai_prime(x_ad); + auto y_expect = boost::math::airy_ai_prime(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_ai_prime_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_ai_prime_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..5240a051c6 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_ai_prime_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_airy_ai_prime_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_airy_ai_prime, T, bin_float_types) + { + RandomSample rng{ -1, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::airy_ai_prime(x_ad); + auto y_expect = boost::math::airy_ai_prime(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_ai_prime_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_ai_prime_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..cc60debf2b --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_ai_prime_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_airy_ai_prime_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_airy_ai_prime, T, bin_float_types) +{ + RandomSample rng{-1, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::airy_ai_prime(x_ad); + auto y_expect = boost::math::airy_ai_prime(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_ai_prime_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_ai_prime_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..e31c031576 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_ai_prime_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_airy_ai_prime_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_airy_ai_prime, T, multiprecision_float_types) +{ + RandomSample rng{-1, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::airy_ai_prime(x_ad); + auto y_expect = boost::math::airy_ai_prime(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_ai_prime_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_ai_prime_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..f0ef6b3ff4 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_ai_prime_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_airy_ai_prime_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_airy_ai_prime, T, multiprecision_float_types) + { + RandomSample rng{ -1, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::airy_ai_prime(x_ad); + auto y_expect = boost::math::airy_ai_prime(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_bi_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_bi_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..27df33270e --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_bi_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_airy_bi_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_airy_bi, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::airy_bi(x_ad); + auto y_expect = boost::math::airy_bi(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_bi_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_bi_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..3e0a26c894 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_bi_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_airy_bi_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_airy_bi, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::airy_bi(x_ad); + auto y_expect = boost::math::airy_bi(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_bi_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_bi_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..cb1bef3a18 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_bi_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_airy_bi_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_airy_bi, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::airy_bi(x_ad); + auto y_expect = boost::math::airy_bi(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_bi_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_bi_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..2cb8916ddc --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_bi_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_airy_bi_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_airy_bi, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::airy_bi(x_ad); + auto y_expect = boost::math::airy_bi(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_bi_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_bi_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..15bb6ffc05 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_bi_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_airy_bi_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_airy_bi, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::airy_bi(x_ad); + auto y_expect = boost::math::airy_bi(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_bi_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_bi_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..fed8529572 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_bi_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_airy_bi_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_airy_bi, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::airy_bi(x_ad); + auto y_expect = boost::math::airy_bi(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_bi_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_bi_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..4ab080c88d --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_bi_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_airy_bi_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_airy_bi, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::airy_bi(x_ad); + auto y_expect = boost::math::airy_bi(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_bi_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_bi_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..59f1c76f35 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_bi_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_airy_bi_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_airy_bi, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::airy_bi(x_ad); + auto y_expect = boost::math::airy_bi(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_bi_prime_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_bi_prime_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..32cc07bb68 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_bi_prime_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_airy_bi_prime_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_airy_bi_prime, T, bin_float_types) + { + RandomSample rng{ -5, 0 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::airy_bi_prime(x_ad); + auto y_expect = boost::math::airy_bi_prime(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_bi_prime_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_bi_prime_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..c448fe0ec1 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_bi_prime_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_airy_bi_prime_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_airy_bi_prime, T, bin_float_types) +{ + RandomSample rng{-5, 0}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::airy_bi_prime(x_ad); + auto y_expect = boost::math::airy_bi_prime(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_bi_prime_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_bi_prime_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..75bc99f59e --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_bi_prime_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_airy_bi_prime_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_airy_bi_prime, T, multiprecision_float_types) +{ + RandomSample rng{-5, 0}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::airy_bi_prime(x_ad); + auto y_expect = boost::math::airy_bi_prime(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_bi_prime_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_bi_prime_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..dfbff98fcb --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_bi_prime_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_airy_bi_prime_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_airy_bi_prime, T, multiprecision_float_types) + { + RandomSample rng{ -5, 0 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::airy_bi_prime(x_ad); + auto y_expect = boost::math::airy_bi_prime(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_bi_prime_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_bi_prime_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..41bd311c04 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_bi_prime_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_airy_bi_prime_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_airy_bi_prime, T, bin_float_types) + { + RandomSample rng{ -5, 0 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::airy_bi_prime(x_ad); + auto y_expect = boost::math::airy_bi_prime(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_bi_prime_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_bi_prime_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..694ee4ed1b --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_bi_prime_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_airy_bi_prime_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_airy_bi_prime, T, bin_float_types) +{ + RandomSample rng{-5, 0}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::airy_bi_prime(x_ad); + auto y_expect = boost::math::airy_bi_prime(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_bi_prime_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_bi_prime_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..dc29936ca2 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_bi_prime_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_airy_bi_prime_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_airy_bi_prime, T, multiprecision_float_types) +{ + RandomSample rng{-5, 0}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::airy_bi_prime(x_ad); + auto y_expect = boost::math::airy_bi_prime(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_bi_prime_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_bi_prime_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..74e737005b --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/airy/test_reverse_mode_autodiff_airy_bi_prime_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_airy_bi_prime_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_airy_bi_prime, T, multiprecision_float_types) + { + RandomSample rng{ -5, 0 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::airy_bi_prime(x_ad); + auto y_expect = boost::math::airy_bi_prime(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/autogen_rvar_specfun_tests.py b/test/test_reverse_mode_autodiff_special_functions_compile/autogen_rvar_specfun_tests.py new file mode 100755 index 0000000000..ba4bd8d761 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/autogen_rvar_specfun_tests.py @@ -0,0 +1,222 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# boost-no-inspect +# Copyright Maksym Zhelyeznyakov 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) +# +import sys, os, subprocess +import logging +import re +from pathlib import Path + + +TEST_FOLDER="./" +SPECFUN_LIST=f"{TEST_FOLDER}specfun_list.txt" +CC="g++" +CPPFLAGS="--std=c++23" +CWD=os.getcwd() +BOOST_ROOT_DIR=f"{CWD}/../../../../" +BOOST_MATH_DIR=f"{BOOST_ROOT_DIR}/libs/math/" +BOOST_MATH_TEST_DIR=f"{BOOST_MATH_DIR}/test/" +INCLUDE_FLAGS=f"-I{BOOST_MATH_DIR}/include/ -I{BOOST_ROOT_DIR} -I{BOOST_MATH_TEST_DIR}" +COMPILATION_TABLE=f"{BOOST_ROOT_DIR}/libs/math/doc/differentiation/compilation_table.txt" +LOG_FILE=f"{CWD}/autogen.log" +LOG_FILE_VERBOSE=f"{CWD}/autogen_verbose.log" +JAM_COMPILE_COMMANDS_OUT="generated_jam_compile_commands.txt" +DOC_FILE = f"{CWD}/../../doc/differentiation/autodiff_reverse.qbk" +logger = logging.getLogger("my_logger") +logger.setLevel(logging.INFO) +file_handler = logging.FileHandler(f"{LOG_FILE}", mode="w") +file_handler.setLevel(logging.INFO) +console_handler = logging.StreamHandler(sys.stdout) +console_handler.setLevel(logging.INFO) +formatter = logging.Formatter("%(asctime)s - %(levelname)s - %(message)s") +file_handler.setFormatter(formatter) +console_handler.setFormatter(formatter) +logger.addHandler(file_handler) +logger.addHandler(console_handler) + + +logger2 = logging.getLogger("logger2") +logger2.setLevel(logging.INFO) +file_handler2 = logging.FileHandler(f"{LOG_FILE_VERBOSE}", mode="w") +file_handler2.setLevel(logging.INFO) +formatter2 = logging.Formatter("%(asctime)s - %(levelname)s - %(message)s") +file_handler2.setFormatter(formatter2) +logger2.addHandler(file_handler2) + +def generate_boost_test(func_sig, + et_str, + type_str, + min_val, + max_val, + cpp_file_dir): + func_name = func_sig.split("(")[0] # extract base function name + + filestr = f""" + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_{et_str} + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_{func_name}_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_{func_name}, T, {type_str}) + {{ + RandomSample rng{{ {min_val}, {max_val} }}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::{func_sig.replace("arg", "x_ad")}; + auto y_expect = boost::math::{func_sig.replace("arg", "x")}; + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + }} + BOOST_AUTO_TEST_SUITE_END() + """ + cpp_file_sig = f"test_reverse_mode_autodiff_{func_name}_compile_test_ET_{et_str}_{type_str}.cpp" + cpp_file_loc = f"{cpp_file_dir}/{cpp_file_sig}" + with open(cpp_file_loc,"w") as cpp_file: + cpp_file.write(filestr) + return cpp_file_loc + +def compile_cpp_file(filename): + base_file_name = filename.split("/")[-1] + file_name_no_ext = base_file_name.split(".")[0] + program_name = f"/tmp/{file_name_no_ext}" + clean_up_command = f"rm {program_name}" + compile_command = f"{CC} -o {program_name} {CPPFLAGS} {INCLUDE_FLAGS} -lboost_unit_test_framework {filename}" + + logger.info("cleaning up old executable") + result_clean_up = subprocess.run(clean_up_command,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE) + + logger.info(f"attempting to compile {filename}") + result_compile = subprocess.run(compile_command,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE) + + if result_compile.returncode == 0: + logger.info(f"successfully compiled {filename}") + return program_name, True + else: + logger.info(f"{filename} does not compile") + logger2.error(f"{result_compile.stderr}") + return program_name, False + +if __name__=="__main__": + bin_floats="bin_float_types" + mp_type="multiprecision_float_types" + + floats_to_test = { + "cpp_types" : bin_floats, + "mp_types" : mp_type + } + + compile_table_file = open(COMPILATION_TABLE, "w") + jam_compile_commands = open(JAM_COMPILE_COMMANDS_OUT,"w") + jam_compile_commands.write("test-suite autodiff-long-running-tests\n") + jam_compile_commands.write(" :\n") + compile_table_file.write("[table\n[[Function]\t[compiles with ET ON]\t[runs with ET ON]\t[compiles with ET OFF] \t[runs with ET OFF]\t[works with multiprecision]\t[known issues]]\n") + with open(SPECFUN_LIST,"r") as specfun_file: + for line in specfun_file: + if not line.count("#"): + logger.info(line) + split_str = line.split("\t") + group, func_sig, minval, maxval = split_str[0], split_str[1], split_str[2], split_str[3] + func_name = func_sig.split("(")[0] + if not os.path.exists(group): + os.makedirs(group) + filename_et_on_cpp = generate_boost_test(func_sig, "ON", floats_to_test["cpp_types"], minval, maxval, group) + filename_et_off_cpp = generate_boost_test(func_sig, "OFF", floats_to_test["cpp_types"], minval, maxval, group) + filename_et_on_mp = generate_boost_test(func_sig, "ON", floats_to_test["mp_types"], minval, maxval, group) + filename_et_off_mp = generate_boost_test(func_sig, "OFF", floats_to_test["mp_types"], minval, maxval, group) + + et_on_cpp_program, et_on_cpp_compiles = compile_cpp_file(filename_et_on_cpp) + et_off_cpp_program, et_off_cpp_compiles = compile_cpp_file(filename_et_off_cpp) + et_on_mp_program, et_on_mp_compiles = compile_cpp_file(filename_et_on_mp) + et_off_mp_program, et_off_mp_compiles = compile_cpp_file(filename_et_off_mp) + + et_on_cpp_runs = "N/A" + et_off_cpp_runs = "N/A" + et_on_mp_runs = "N/A" + et_off_mp_runs = "N/A" + + if et_on_cpp_compiles: + run_info = subprocess.run(f"{et_on_cpp_program}",shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE) + if not run_info.returncode: + logger.info(f"{filename_et_on_cpp} ran successfully") + et_on_cpp_runs = "True" + jam_compile_commands.write(f" [ run test_reverse_mode_autodiff_special_functions_compile/{filename_et_on_cpp} ]\n") + else: + logger.error(f"{filename_et_on_cpp} failed to run") + et_on_cpp_runs = "False" + jam_compile_commands.write(f" [ run-fail test_reverse_mode_autodiff_special_functions_compile/{filename_et_on_cpp} ]\n") + else: + jam_compile_commands.write(f" [ compile-fail test_reverse_mode_autodiff_special_functions_compile/{filename_et_on_cpp} ]\n") + + if et_off_cpp_compiles: + run_info = subprocess.run(f"{et_off_cpp_program}",shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE) + if not run_info.returncode: + logger.info(f"{filename_et_off_cpp} ran successfully") + et_off_cpp_runs = "True" + jam_compile_commands.write(f" [ run test_reverse_mode_autodiff_special_functions_compile/{filename_et_off_cpp} ]\n") + if not run_info.returncode: + logger.error(f"{filename_et_off_cpp} failed to run") + et_off_cpp_runs = "False" + jam_compile_commands.write(f" [ run-fail test_reverse_mode_autodiff_special_functions_compile/{filename_et_off_cpp} ]\n") + else: + jam_compile_commands.write(f" [ compile-fail test_reverse_mode_autodiff_special_functions_compile/{filename_et_off_cpp} ]\n") + + if et_on_mp_compiles: + run_info = subprocess.run(f"{et_on_mp_program}",shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE) + if not run_info.returncode: + logger.info(f"{filename_et_on_mp} ran successfully") + et_on_mp_runs = True + jam_compile_commands.write(f" [ run test_reverse_mode_autodiff_special_functions_compile/{filename_et_on_mp} ]\n") + else: + logger.info(f"{filename_et_on_mp} failed to run") + et_on_mp_runs = False + jam_compile_commands.write(f" [ run-fail test_reverse_mode_autodiff_special_functions_compile/{filename_et_on_mp} ]\n") + else: + jam_compile_commands.write(f" [ compile-fail test_reverse_mode_autodiff_special_functions_compile/{filename_et_on_mp} ]\n") + + if et_off_mp_compiles: + run_info = subprocess.run(f"{et_off_mp_program}",shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE) + if not run_info.returncode: + logger.info(f"{filename_et_off_mp} ran successfully") + et_off_mp_runs = True + jam_compile_commands.write(f" [ run test_reverse_mode_autodiff_special_functions_compile/{filename_et_off_mp} ]\n") + if not run_info.returncode: + logger.error(f"{filename_et_off_mp} failed to run") + et_off_mp_runs = False + jam_compile_commands.write(f" [ run-fail test_reverse_mode_autodiff_special_functions_compile/{filename_et_off_mp} ]\n") + else: + jam_compile_commands.write(f" [ compile-fail test_reverse_mode_autodiff_special_functions_compile/{filename_et_off_mp} ]\n") + works_with_mp = et_on_mp_compiles and et_on_mp_runs and et_off_mp_compiles and et_off_mp_runs + works_with_mp_str = "" + if works_with_mp: + works_with_mp_str = "True" + else: + works_with_mp = "False" + + compile_table_file.write(f"[[{func_name}]\t[{et_on_cpp_compiles}]\t[{et_on_cpp_runs}]\t[{et_off_cpp_compiles}]\t[{et_off_cpp_runs}]\t[{works_with_mp}]\t[N/A]]\n") + compile_table_file.write( + """]""" + ) + jam_compile_commands.write(" ;") + compile_table_file.close() + jam_compile_commands.close() + + + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_cbrt_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_cbrt_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..62b287514e --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_cbrt_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_cbrt_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_cbrt, T, bin_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cbrt(x_ad); + auto y_expect = boost::math::cbrt(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_cbrt_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_cbrt_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..0322436052 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_cbrt_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_cbrt_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_cbrt, T, bin_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cbrt(x_ad); + auto y_expect = boost::math::cbrt(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_cbrt_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_cbrt_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..fb94a28b6a --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_cbrt_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_cbrt_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_cbrt, T, multiprecision_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cbrt(x_ad); + auto y_expect = boost::math::cbrt(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_cbrt_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_cbrt_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..5f8f96fedf --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_cbrt_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_cbrt_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_cbrt, T, multiprecision_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cbrt(x_ad); + auto y_expect = boost::math::cbrt(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_cbrt_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_cbrt_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..c33330bd87 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_cbrt_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_cbrt_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_cbrt, T, bin_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cbrt(x_ad); + auto y_expect = boost::math::cbrt(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_cbrt_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_cbrt_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..10ddaf1567 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_cbrt_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_cbrt_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_cbrt, T, bin_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cbrt(x_ad); + auto y_expect = boost::math::cbrt(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_cbrt_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_cbrt_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..ec401fc676 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_cbrt_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_cbrt_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_cbrt, T, multiprecision_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cbrt(x_ad); + auto y_expect = boost::math::cbrt(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_cbrt_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_cbrt_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..4356b001f5 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_cbrt_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_cbrt_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_cbrt, T, multiprecision_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cbrt(x_ad); + auto y_expect = boost::math::cbrt(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_cos_pi_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_cos_pi_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..339876e544 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_cos_pi_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_cos_pi_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_cos_pi, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cos_pi(x_ad); + auto y_expect = boost::math::cos_pi(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_cos_pi_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_cos_pi_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..4817b7e8f6 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_cos_pi_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_cos_pi_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_cos_pi, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cos_pi(x_ad); + auto y_expect = boost::math::cos_pi(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_cos_pi_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_cos_pi_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..d7ec7114c0 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_cos_pi_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_cos_pi_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_cos_pi, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cos_pi(x_ad); + auto y_expect = boost::math::cos_pi(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_cos_pi_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_cos_pi_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..9dca40ce47 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_cos_pi_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_cos_pi_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_cos_pi, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cos_pi(x_ad); + auto y_expect = boost::math::cos_pi(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_cos_pi_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_cos_pi_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..32a20609f4 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_cos_pi_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_cos_pi_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_cos_pi, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cos_pi(x_ad); + auto y_expect = boost::math::cos_pi(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_cos_pi_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_cos_pi_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..787a07dc54 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_cos_pi_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_cos_pi_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_cos_pi, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cos_pi(x_ad); + auto y_expect = boost::math::cos_pi(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_cos_pi_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_cos_pi_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..2ce6a658e8 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_cos_pi_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_cos_pi_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_cos_pi, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cos_pi(x_ad); + auto y_expect = boost::math::cos_pi(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_cos_pi_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_cos_pi_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..55fb6af433 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_cos_pi_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_cos_pi_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_cos_pi, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cos_pi(x_ad); + auto y_expect = boost::math::cos_pi(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_expm1_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_expm1_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..44763ba39f --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_expm1_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_expm1_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_expm1, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::expm1(x_ad); + auto y_expect = boost::math::expm1(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_expm1_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_expm1_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..05aafed7af --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_expm1_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_expm1_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_expm1, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::expm1(x_ad); + auto y_expect = boost::math::expm1(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_expm1_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_expm1_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..5a64a45421 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_expm1_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_expm1_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_expm1, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::expm1(x_ad); + auto y_expect = boost::math::expm1(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_expm1_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_expm1_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..25e8de3704 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_expm1_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_expm1_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_expm1, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::expm1(x_ad); + auto y_expect = boost::math::expm1(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_expm1_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_expm1_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..0e79cf4d16 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_expm1_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_expm1_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_expm1, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::expm1(x_ad); + auto y_expect = boost::math::expm1(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_expm1_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_expm1_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..96ca24869d --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_expm1_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_expm1_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_expm1, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::expm1(x_ad); + auto y_expect = boost::math::expm1(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_expm1_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_expm1_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..57bd99782f --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_expm1_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_expm1_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_expm1, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::expm1(x_ad); + auto y_expect = boost::math::expm1(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_expm1_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_expm1_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..e1404ceb6e --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_expm1_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_expm1_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_expm1, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::expm1(x_ad); + auto y_expect = boost::math::expm1(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_hypot_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_hypot_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..d241b78529 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_hypot_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_hypot_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_hypot, T, bin_float_types) + { + RandomSample rng{ 1, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::hypot(x_ad,x_ad); + auto y_expect = boost::math::hypot(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_hypot_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_hypot_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..7edd200554 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_hypot_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_hypot_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_hypot, T, bin_float_types) +{ + RandomSample rng{1, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::hypot(x_ad,x_ad); + auto y_expect = boost::math::hypot(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_hypot_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_hypot_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..a24e4dfcab --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_hypot_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_hypot_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_hypot, T, multiprecision_float_types) +{ + RandomSample rng{1, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::hypot(x_ad,x_ad); + auto y_expect = boost::math::hypot(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_hypot_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_hypot_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..5899168857 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_hypot_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_hypot_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_hypot, T, multiprecision_float_types) + { + RandomSample rng{ 1, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::hypot(x_ad,x_ad); + auto y_expect = boost::math::hypot(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_hypot_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_hypot_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..e024118785 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_hypot_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_hypot_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_hypot, T, bin_float_types) + { + RandomSample rng{ 1, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::hypot(x_ad,x_ad); + auto y_expect = boost::math::hypot(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_hypot_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_hypot_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..3e03d5ef47 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_hypot_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_hypot_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_hypot, T, bin_float_types) +{ + RandomSample rng{1, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::hypot(x_ad,x_ad); + auto y_expect = boost::math::hypot(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_hypot_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_hypot_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..b7c0f956b8 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_hypot_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_hypot_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_hypot, T, multiprecision_float_types) +{ + RandomSample rng{1, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::hypot(x_ad,x_ad); + auto y_expect = boost::math::hypot(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_hypot_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_hypot_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..9bac958d32 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_hypot_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_hypot_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_hypot, T, multiprecision_float_types) + { + RandomSample rng{ 1, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::hypot(x_ad,x_ad); + auto y_expect = boost::math::hypot(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_log1p_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_log1p_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..2ac6773a01 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_log1p_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_log1p_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_log1p, T, bin_float_types) + { + RandomSample rng{ -1, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::log1p(x_ad); + auto y_expect = boost::math::log1p(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_log1p_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_log1p_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..377afadfad --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_log1p_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_log1p_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_log1p, T, bin_float_types) +{ + RandomSample rng{-1, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::log1p(x_ad); + auto y_expect = boost::math::log1p(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_log1p_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_log1p_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..dd74e8c407 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_log1p_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_log1p_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_log1p, T, multiprecision_float_types) +{ + RandomSample rng{-1, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::log1p(x_ad); + auto y_expect = boost::math::log1p(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_log1p_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_log1p_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..3bf09ca324 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_log1p_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_log1p_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_log1p, T, multiprecision_float_types) + { + RandomSample rng{ -1, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::log1p(x_ad); + auto y_expect = boost::math::log1p(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_log1p_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_log1p_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..986e0c5310 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_log1p_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_log1p_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_log1p, T, bin_float_types) + { + RandomSample rng{ -1, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::log1p(x_ad); + auto y_expect = boost::math::log1p(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_log1p_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_log1p_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..79f3aab8cb --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_log1p_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_log1p_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_log1p, T, bin_float_types) +{ + RandomSample rng{-1, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::log1p(x_ad); + auto y_expect = boost::math::log1p(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_log1p_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_log1p_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..34ceb312ac --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_log1p_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_log1p_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_log1p, T, multiprecision_float_types) +{ + RandomSample rng{-1, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::log1p(x_ad); + auto y_expect = boost::math::log1p(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_log1p_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_log1p_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..aad75b34a7 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_log1p_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_log1p_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_log1p, T, multiprecision_float_types) + { + RandomSample rng{ -1, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::log1p(x_ad); + auto y_expect = boost::math::log1p(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_logaddexp_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_logaddexp_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..ba708ad280 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_logaddexp_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_logaddexp_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_logaddexp, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::logaddexp(x_ad,x_ad); + auto y_expect = boost::math::logaddexp(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_logaddexp_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_logaddexp_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..f2679e6ff0 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_logaddexp_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_logaddexp_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_logaddexp, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::logaddexp(x_ad,x_ad); + auto y_expect = boost::math::logaddexp(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_logaddexp_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_logaddexp_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..a9671f7ad3 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_logaddexp_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_logaddexp_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_logaddexp, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::logaddexp(x_ad,x_ad); + auto y_expect = boost::math::logaddexp(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_logaddexp_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_logaddexp_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..8b9c816eb4 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_logaddexp_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_logaddexp_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_logaddexp, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::logaddexp(x_ad,x_ad); + auto y_expect = boost::math::logaddexp(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_logaddexp_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_logaddexp_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..32e9926d72 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_logaddexp_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_logaddexp_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_logaddexp, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::logaddexp(x_ad,x_ad); + auto y_expect = boost::math::logaddexp(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_logaddexp_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_logaddexp_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..939ab5a4c0 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_logaddexp_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_logaddexp_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_logaddexp, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::logaddexp(x_ad,x_ad); + auto y_expect = boost::math::logaddexp(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_logaddexp_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_logaddexp_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..a58b897d14 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_logaddexp_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_logaddexp_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_logaddexp, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::logaddexp(x_ad,x_ad); + auto y_expect = boost::math::logaddexp(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_logaddexp_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_logaddexp_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..4f615cab4d --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_logaddexp_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_logaddexp_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_logaddexp, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::logaddexp(x_ad,x_ad); + auto y_expect = boost::math::logaddexp(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_logsumexp_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_logsumexp_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..2686e6f654 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_logsumexp_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_logsumexp_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_logsumexp, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::logsumexp((x_ad,x_ad); + auto y_expect = boost::math::logsumexp((x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_logsumexp_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_logsumexp_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..0d9e28346e --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_logsumexp_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_logsumexp_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_logsumexp, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::logsumexp((x_ad,x_ad); + auto y_expect = boost::math::logsumexp((x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_logsumexp_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_logsumexp_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..95787146e3 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_logsumexp_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_logsumexp_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_logsumexp, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::logsumexp((x_ad,x_ad); + auto y_expect = boost::math::logsumexp((x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_logsumexp_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_logsumexp_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..8435059459 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_logsumexp_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_logsumexp_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_logsumexp, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::logsumexp((x_ad,x_ad); + auto y_expect = boost::math::logsumexp((x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_logsumexp_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_logsumexp_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..ed3a067dc9 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_logsumexp_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_logsumexp_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_logsumexp, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::logsumexp((x_ad,x_ad); + auto y_expect = boost::math::logsumexp((x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_logsumexp_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_logsumexp_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..359a013683 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_logsumexp_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_logsumexp_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_logsumexp, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::logsumexp((x_ad,x_ad); + auto y_expect = boost::math::logsumexp((x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_logsumexp_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_logsumexp_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..045637610e --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_logsumexp_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_logsumexp_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_logsumexp, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::logsumexp((x_ad,x_ad); + auto y_expect = boost::math::logsumexp((x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_logsumexp_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_logsumexp_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..9a82554d7e --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_logsumexp_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_logsumexp_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_logsumexp, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::logsumexp((x_ad,x_ad); + auto y_expect = boost::math::logsumexp((x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_powm1_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_powm1_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..cd53386136 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_powm1_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_powm1_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_powm1, T, bin_float_types) + { + RandomSample rng{ 5, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::powm1(x_ad,x_ad); + auto y_expect = boost::math::powm1(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_powm1_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_powm1_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..3bb3cab089 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_powm1_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_powm1_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_powm1, T, bin_float_types) +{ + RandomSample rng{5, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::powm1(x_ad,x_ad); + auto y_expect = boost::math::powm1(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_powm1_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_powm1_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..d2a99fa76c --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_powm1_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_powm1_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_powm1, T, multiprecision_float_types) +{ + RandomSample rng{5, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::powm1(x_ad,x_ad); + auto y_expect = boost::math::powm1(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_powm1_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_powm1_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..9c84be73a7 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_powm1_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_powm1_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_powm1, T, multiprecision_float_types) + { + RandomSample rng{ 5, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::powm1(x_ad,x_ad); + auto y_expect = boost::math::powm1(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_powm1_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_powm1_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..3ae0b52d7a --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_powm1_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_powm1_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_powm1, T, bin_float_types) + { + RandomSample rng{ 5, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::powm1(x_ad,x_ad); + auto y_expect = boost::math::powm1(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_powm1_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_powm1_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..9545595785 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_powm1_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_powm1_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_powm1, T, bin_float_types) +{ + RandomSample rng{5, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::powm1(x_ad,x_ad); + auto y_expect = boost::math::powm1(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_powm1_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_powm1_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..d01b8d5734 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_powm1_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_powm1_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_powm1, T, multiprecision_float_types) +{ + RandomSample rng{5, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::powm1(x_ad,x_ad); + auto y_expect = boost::math::powm1(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_powm1_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_powm1_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..8b7e2a010a --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_powm1_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_powm1_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_powm1, T, multiprecision_float_types) + { + RandomSample rng{ 5, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::powm1(x_ad,x_ad); + auto y_expect = boost::math::powm1(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_rsqrt_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_rsqrt_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..7b4a4f2be1 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_rsqrt_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_rsqrt_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_rsqrt, T, bin_float_types) + { + RandomSample rng{ 1, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::rsqrt(x_ad); + auto y_expect = boost::math::rsqrt(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_rsqrt_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_rsqrt_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..eefc6c88ee --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_rsqrt_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_rsqrt_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_rsqrt, T, bin_float_types) +{ + RandomSample rng{1, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::rsqrt(x_ad); + auto y_expect = boost::math::rsqrt(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_rsqrt_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_rsqrt_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..3688bd7824 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_rsqrt_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_rsqrt_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_rsqrt, T, multiprecision_float_types) +{ + RandomSample rng{1, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::rsqrt(x_ad); + auto y_expect = boost::math::rsqrt(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_rsqrt_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_rsqrt_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..b8d7840fe1 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_rsqrt_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_rsqrt_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_rsqrt, T, multiprecision_float_types) + { + RandomSample rng{ 1, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::rsqrt(x_ad); + auto y_expect = boost::math::rsqrt(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_rsqrt_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_rsqrt_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..891d984a0a --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_rsqrt_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_rsqrt_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_rsqrt, T, bin_float_types) + { + RandomSample rng{ 1, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::rsqrt(x_ad); + auto y_expect = boost::math::rsqrt(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_rsqrt_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_rsqrt_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..ad8aa8ac40 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_rsqrt_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_rsqrt_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_rsqrt, T, bin_float_types) +{ + RandomSample rng{1, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::rsqrt(x_ad); + auto y_expect = boost::math::rsqrt(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_rsqrt_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_rsqrt_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..00486f9a87 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_rsqrt_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_rsqrt_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_rsqrt, T, multiprecision_float_types) +{ + RandomSample rng{1, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::rsqrt(x_ad); + auto y_expect = boost::math::rsqrt(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_rsqrt_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_rsqrt_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..d0fe33530b --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_rsqrt_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_rsqrt_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_rsqrt, T, multiprecision_float_types) + { + RandomSample rng{ 1, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::rsqrt(x_ad); + auto y_expect = boost::math::rsqrt(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_sin_pi_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_sin_pi_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..b15bef297f --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_sin_pi_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_sin_pi_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_sin_pi, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sin_pi(x_ad); + auto y_expect = boost::math::sin_pi(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_sin_pi_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_sin_pi_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..edfd490d22 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_sin_pi_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_sin_pi_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_sin_pi, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sin_pi(x_ad); + auto y_expect = boost::math::sin_pi(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_sin_pi_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_sin_pi_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..ec300094ce --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_sin_pi_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_sin_pi_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_sin_pi, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sin_pi(x_ad); + auto y_expect = boost::math::sin_pi(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_sin_pi_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_sin_pi_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..b0801679dc --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_sin_pi_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_sin_pi_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_sin_pi, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sin_pi(x_ad); + auto y_expect = boost::math::sin_pi(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_sin_pi_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_sin_pi_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..87d51cf97b --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_sin_pi_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_sin_pi_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_sin_pi, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sin_pi(x_ad); + auto y_expect = boost::math::sin_pi(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_sin_pi_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_sin_pi_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..d3458a751e --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_sin_pi_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_sin_pi_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_sin_pi, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sin_pi(x_ad); + auto y_expect = boost::math::sin_pi(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_sin_pi_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_sin_pi_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..7f93389061 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_sin_pi_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_sin_pi_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_sin_pi, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sin_pi(x_ad); + auto y_expect = boost::math::sin_pi(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_sin_pi_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_sin_pi_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..7f32b12aa3 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_sin_pi_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_sin_pi_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_sin_pi, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sin_pi(x_ad); + auto y_expect = boost::math::sin_pi(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_sqrt1pm1_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_sqrt1pm1_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..51352f9a5f --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_sqrt1pm1_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_sqrt1pm1_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_sqrt1pm1, T, bin_float_types) + { + RandomSample rng{ 5, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sqrt1pm1(x_ad); + auto y_expect = boost::math::sqrt1pm1(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_sqrt1pm1_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_sqrt1pm1_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..446ca3bdaf --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_sqrt1pm1_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_sqrt1pm1_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_sqrt1pm1, T, bin_float_types) +{ + RandomSample rng{5, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sqrt1pm1(x_ad); + auto y_expect = boost::math::sqrt1pm1(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_sqrt1pm1_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_sqrt1pm1_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..fc884bf94b --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_sqrt1pm1_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_sqrt1pm1_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_sqrt1pm1, T, multiprecision_float_types) +{ + RandomSample rng{5, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sqrt1pm1(x_ad); + auto y_expect = boost::math::sqrt1pm1(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_sqrt1pm1_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_sqrt1pm1_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..fa42330988 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_sqrt1pm1_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_sqrt1pm1_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_sqrt1pm1, T, multiprecision_float_types) + { + RandomSample rng{ 5, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sqrt1pm1(x_ad); + auto y_expect = boost::math::sqrt1pm1(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_sqrt1pm1_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_sqrt1pm1_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..335dd21f3d --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_sqrt1pm1_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_sqrt1pm1_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_sqrt1pm1, T, bin_float_types) + { + RandomSample rng{ 5, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sqrt1pm1(x_ad); + auto y_expect = boost::math::sqrt1pm1(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_sqrt1pm1_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_sqrt1pm1_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..e4e95b74e0 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_sqrt1pm1_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_sqrt1pm1_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_sqrt1pm1, T, bin_float_types) +{ + RandomSample rng{5, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sqrt1pm1(x_ad); + auto y_expect = boost::math::sqrt1pm1(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_sqrt1pm1_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_sqrt1pm1_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..24f53ea58e --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_sqrt1pm1_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_sqrt1pm1_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_sqrt1pm1, T, multiprecision_float_types) +{ + RandomSample rng{5, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sqrt1pm1(x_ad); + auto y_expect = boost::math::sqrt1pm1(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_sqrt1pm1_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_sqrt1pm1_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..9addb2e874 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/basic_funcs/test_reverse_mode_autodiff_sqrt1pm1_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_sqrt1pm1_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_sqrt1pm1, T, multiprecision_float_types) + { + RandomSample rng{ 5, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sqrt1pm1(x_ad); + auto y_expect = boost::math::sqrt1pm1(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_i_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_i_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..2cd39c1d55 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_i_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_cyl_bessel_i_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_bessel_i, T, bin_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_bessel_i(0.25,x_ad); + auto y_expect = boost::math::cyl_bessel_i(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_i_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_i_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..b871609a09 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_i_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_cyl_bessel_i_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_bessel_i, T, bin_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_bessel_i(0.25,x_ad); + auto y_expect = boost::math::cyl_bessel_i(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_i_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_i_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..51cb6bc46a --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_i_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_cyl_bessel_i_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_bessel_i, T, multiprecision_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_bessel_i(0.25,x_ad); + auto y_expect = boost::math::cyl_bessel_i(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_i_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_i_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..dbbe259e52 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_i_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_cyl_bessel_i_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_bessel_i, T, multiprecision_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_bessel_i(0.25,x_ad); + auto y_expect = boost::math::cyl_bessel_i(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_i_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_i_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..d6a2723de0 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_i_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_cyl_bessel_i_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_bessel_i, T, bin_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_bessel_i(0.25,x_ad); + auto y_expect = boost::math::cyl_bessel_i(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_i_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_i_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..f4bd1ae0cc --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_i_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_cyl_bessel_i_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_bessel_i, T, bin_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_bessel_i(0.25,x_ad); + auto y_expect = boost::math::cyl_bessel_i(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_i_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_i_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..0b6d6ff999 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_i_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_cyl_bessel_i_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_bessel_i, T, multiprecision_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_bessel_i(0.25,x_ad); + auto y_expect = boost::math::cyl_bessel_i(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_i_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_i_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..b63df8026f --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_i_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_cyl_bessel_i_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_bessel_i, T, multiprecision_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_bessel_i(0.25,x_ad); + auto y_expect = boost::math::cyl_bessel_i(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_i_prime_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_i_prime_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..7257178803 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_i_prime_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_cyl_bessel_i_prime_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_bessel_i_prime, T, bin_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_bessel_i_prime(x_ad,x_ad); + auto y_expect = boost::math::cyl_bessel_i_prime(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_i_prime_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_i_prime_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..2258e38ed4 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_i_prime_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_cyl_bessel_i_prime_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_bessel_i_prime, T, bin_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_bessel_i_prime(x_ad,x_ad); + auto y_expect = boost::math::cyl_bessel_i_prime(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_i_prime_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_i_prime_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..384ecd461b --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_i_prime_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_cyl_bessel_i_prime_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_bessel_i_prime, T, multiprecision_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_bessel_i_prime(x_ad,x_ad); + auto y_expect = boost::math::cyl_bessel_i_prime(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_i_prime_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_i_prime_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..90cbf5a7fc --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_i_prime_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_cyl_bessel_i_prime_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_bessel_i_prime, T, multiprecision_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_bessel_i_prime(x_ad,x_ad); + auto y_expect = boost::math::cyl_bessel_i_prime(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_i_prime_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_i_prime_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..21b4ed942e --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_i_prime_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_cyl_bessel_i_prime_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_bessel_i_prime, T, bin_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_bessel_i_prime(x_ad,x_ad); + auto y_expect = boost::math::cyl_bessel_i_prime(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_i_prime_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_i_prime_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..f8cdef1aa3 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_i_prime_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_cyl_bessel_i_prime_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_bessel_i_prime, T, bin_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_bessel_i_prime(x_ad,x_ad); + auto y_expect = boost::math::cyl_bessel_i_prime(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_i_prime_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_i_prime_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..dc3e0d5c73 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_i_prime_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_cyl_bessel_i_prime_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_bessel_i_prime, T, multiprecision_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_bessel_i_prime(x_ad,x_ad); + auto y_expect = boost::math::cyl_bessel_i_prime(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_i_prime_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_i_prime_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..c167291dfb --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_i_prime_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_cyl_bessel_i_prime_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_bessel_i_prime, T, multiprecision_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_bessel_i_prime(x_ad,x_ad); + auto y_expect = boost::math::cyl_bessel_i_prime(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_j_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_j_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..a69d93ccd8 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_j_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_cyl_bessel_j_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_bessel_j, T, bin_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_bessel_j(0.25,x_ad); + auto y_expect = boost::math::cyl_bessel_j(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_j_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_j_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..abd484d8b3 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_j_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_cyl_bessel_j_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_bessel_j, T, bin_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_bessel_j(0.25,x_ad); + auto y_expect = boost::math::cyl_bessel_j(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_j_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_j_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..cc9fba4c55 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_j_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_cyl_bessel_j_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_bessel_j, T, multiprecision_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_bessel_j(0.25,x_ad); + auto y_expect = boost::math::cyl_bessel_j(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_j_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_j_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..337b3a2fc5 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_j_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_cyl_bessel_j_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_bessel_j, T, multiprecision_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_bessel_j(0.25,x_ad); + auto y_expect = boost::math::cyl_bessel_j(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_j_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_j_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..f3654310fa --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_j_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_cyl_bessel_j_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_bessel_j, T, bin_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_bessel_j(0.25,x_ad); + auto y_expect = boost::math::cyl_bessel_j(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_j_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_j_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..fcd388458c --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_j_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_cyl_bessel_j_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_bessel_j, T, bin_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_bessel_j(0.25,x_ad); + auto y_expect = boost::math::cyl_bessel_j(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_j_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_j_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..a03ce3e2b9 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_j_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_cyl_bessel_j_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_bessel_j, T, multiprecision_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_bessel_j(0.25,x_ad); + auto y_expect = boost::math::cyl_bessel_j(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_j_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_j_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..e6a9612910 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_j_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_cyl_bessel_j_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_bessel_j, T, multiprecision_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_bessel_j(0.25,x_ad); + auto y_expect = boost::math::cyl_bessel_j(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_j_prime_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_j_prime_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..27f41ff492 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_j_prime_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_cyl_bessel_j_prime_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_bessel_j_prime, T, bin_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_bessel_j_prime(x_ad,x_ad); + auto y_expect = boost::math::cyl_bessel_j_prime(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_j_prime_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_j_prime_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..69b1d4af60 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_j_prime_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_cyl_bessel_j_prime_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_bessel_j_prime, T, bin_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_bessel_j_prime(x_ad,x_ad); + auto y_expect = boost::math::cyl_bessel_j_prime(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_j_prime_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_j_prime_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..d7f7da6eed --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_j_prime_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_cyl_bessel_j_prime_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_bessel_j_prime, T, multiprecision_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_bessel_j_prime(x_ad,x_ad); + auto y_expect = boost::math::cyl_bessel_j_prime(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_j_prime_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_j_prime_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..f67b481b76 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_j_prime_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_cyl_bessel_j_prime_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_bessel_j_prime, T, multiprecision_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_bessel_j_prime(x_ad,x_ad); + auto y_expect = boost::math::cyl_bessel_j_prime(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_j_prime_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_j_prime_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..50c523bbca --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_j_prime_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_cyl_bessel_j_prime_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_bessel_j_prime, T, bin_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_bessel_j_prime(x_ad,x_ad); + auto y_expect = boost::math::cyl_bessel_j_prime(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_j_prime_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_j_prime_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..574d073bb0 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_j_prime_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_cyl_bessel_j_prime_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_bessel_j_prime, T, bin_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_bessel_j_prime(x_ad,x_ad); + auto y_expect = boost::math::cyl_bessel_j_prime(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_j_prime_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_j_prime_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..6ed145fed4 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_j_prime_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_cyl_bessel_j_prime_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_bessel_j_prime, T, multiprecision_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_bessel_j_prime(x_ad,x_ad); + auto y_expect = boost::math::cyl_bessel_j_prime(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_j_prime_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_j_prime_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..e26376de8f --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_j_prime_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_cyl_bessel_j_prime_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_bessel_j_prime, T, multiprecision_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_bessel_j_prime(x_ad,x_ad); + auto y_expect = boost::math::cyl_bessel_j_prime(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_k_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_k_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..110502f773 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_k_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_cyl_bessel_k_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_bessel_k, T, bin_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_bessel_k(x_ad,x_ad); + auto y_expect = boost::math::cyl_bessel_k(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_k_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_k_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..64b78961c6 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_k_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_cyl_bessel_k_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_bessel_k, T, bin_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_bessel_k(x_ad,x_ad); + auto y_expect = boost::math::cyl_bessel_k(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_k_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_k_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..a25d17c03f --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_k_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_cyl_bessel_k_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_bessel_k, T, multiprecision_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_bessel_k(x_ad,x_ad); + auto y_expect = boost::math::cyl_bessel_k(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_k_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_k_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..78626a55a9 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_k_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_cyl_bessel_k_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_bessel_k, T, multiprecision_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_bessel_k(x_ad,x_ad); + auto y_expect = boost::math::cyl_bessel_k(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_k_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_k_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..8aa06878a1 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_k_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_cyl_bessel_k_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_bessel_k, T, bin_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_bessel_k(x_ad,x_ad); + auto y_expect = boost::math::cyl_bessel_k(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_k_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_k_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..1157430b9a --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_k_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_cyl_bessel_k_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_bessel_k, T, bin_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_bessel_k(x_ad,x_ad); + auto y_expect = boost::math::cyl_bessel_k(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_k_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_k_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..0a0e7b5f56 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_k_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_cyl_bessel_k_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_bessel_k, T, multiprecision_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_bessel_k(x_ad,x_ad); + auto y_expect = boost::math::cyl_bessel_k(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_k_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_k_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..7b89e15d6a --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_k_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_cyl_bessel_k_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_bessel_k, T, multiprecision_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_bessel_k(x_ad,x_ad); + auto y_expect = boost::math::cyl_bessel_k(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_k_prime_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_k_prime_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..737cdb9119 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_k_prime_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_cyl_bessel_k_prime_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_bessel_k_prime, T, bin_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_bessel_k_prime(x_ad,x_ad); + auto y_expect = boost::math::cyl_bessel_k_prime(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_k_prime_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_k_prime_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..31f6900c02 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_k_prime_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_cyl_bessel_k_prime_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_bessel_k_prime, T, bin_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_bessel_k_prime(x_ad,x_ad); + auto y_expect = boost::math::cyl_bessel_k_prime(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_k_prime_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_k_prime_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..7ead4d7e91 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_k_prime_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_cyl_bessel_k_prime_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_bessel_k_prime, T, multiprecision_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_bessel_k_prime(x_ad,x_ad); + auto y_expect = boost::math::cyl_bessel_k_prime(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_k_prime_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_k_prime_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..75a6ba5735 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_k_prime_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_cyl_bessel_k_prime_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_bessel_k_prime, T, multiprecision_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_bessel_k_prime(x_ad,x_ad); + auto y_expect = boost::math::cyl_bessel_k_prime(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_k_prime_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_k_prime_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..bf29b145ef --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_k_prime_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_cyl_bessel_k_prime_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_bessel_k_prime, T, bin_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_bessel_k_prime(x_ad,x_ad); + auto y_expect = boost::math::cyl_bessel_k_prime(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_k_prime_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_k_prime_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..db8fbfd6bc --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_k_prime_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_cyl_bessel_k_prime_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_bessel_k_prime, T, bin_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_bessel_k_prime(x_ad,x_ad); + auto y_expect = boost::math::cyl_bessel_k_prime(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_k_prime_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_k_prime_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..5be6ac318e --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_k_prime_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_cyl_bessel_k_prime_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_bessel_k_prime, T, multiprecision_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_bessel_k_prime(x_ad,x_ad); + auto y_expect = boost::math::cyl_bessel_k_prime(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_k_prime_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_k_prime_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..4f937fc6ab --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_bessel_k_prime_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_cyl_bessel_k_prime_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_bessel_k_prime, T, multiprecision_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_bessel_k_prime(x_ad,x_ad); + auto y_expect = boost::math::cyl_bessel_k_prime(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_neumann_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_neumann_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..bcaa40072e --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_neumann_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_cyl_neumann_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_neumann, T, bin_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_neumann(x_ad,x_ad); + auto y_expect = boost::math::cyl_neumann(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_neumann_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_neumann_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..ca1f161395 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_neumann_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_cyl_neumann_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_neumann, T, bin_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_neumann(x_ad,x_ad); + auto y_expect = boost::math::cyl_neumann(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_neumann_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_neumann_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..c538004adb --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_neumann_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_cyl_neumann_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_neumann, T, multiprecision_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_neumann(x_ad,x_ad); + auto y_expect = boost::math::cyl_neumann(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_neumann_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_neumann_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..45799c905d --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_neumann_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_cyl_neumann_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_neumann, T, multiprecision_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_neumann(x_ad,x_ad); + auto y_expect = boost::math::cyl_neumann(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_neumann_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_neumann_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..899d5d9e3e --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_neumann_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_cyl_neumann_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_neumann, T, bin_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_neumann(x_ad,x_ad); + auto y_expect = boost::math::cyl_neumann(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_neumann_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_neumann_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..ce0328beec --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_neumann_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_cyl_neumann_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_neumann, T, bin_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_neumann(x_ad,x_ad); + auto y_expect = boost::math::cyl_neumann(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_neumann_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_neumann_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..8e86e94200 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_neumann_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_cyl_neumann_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_neumann, T, multiprecision_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_neumann(x_ad,x_ad); + auto y_expect = boost::math::cyl_neumann(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_neumann_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_neumann_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..859acae332 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_neumann_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_cyl_neumann_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_neumann, T, multiprecision_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_neumann(x_ad,x_ad); + auto y_expect = boost::math::cyl_neumann(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_neumann_prime_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_neumann_prime_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..476f3985f8 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_neumann_prime_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_cyl_neumann_prime_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_neumann_prime, T, bin_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_neumann_prime(x_ad,x_ad); + auto y_expect = boost::math::cyl_neumann_prime(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_neumann_prime_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_neumann_prime_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..e3894bac2a --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_neumann_prime_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_cyl_neumann_prime_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_neumann_prime, T, bin_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_neumann_prime(x_ad,x_ad); + auto y_expect = boost::math::cyl_neumann_prime(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_neumann_prime_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_neumann_prime_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..73e20b4d93 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_neumann_prime_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_cyl_neumann_prime_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_neumann_prime, T, multiprecision_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_neumann_prime(x_ad,x_ad); + auto y_expect = boost::math::cyl_neumann_prime(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_neumann_prime_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_neumann_prime_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..b263b7084a --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_neumann_prime_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_cyl_neumann_prime_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_neumann_prime, T, multiprecision_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_neumann_prime(x_ad,x_ad); + auto y_expect = boost::math::cyl_neumann_prime(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_neumann_prime_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_neumann_prime_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..68bdaa0360 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_neumann_prime_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_cyl_neumann_prime_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_neumann_prime, T, bin_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_neumann_prime(x_ad,x_ad); + auto y_expect = boost::math::cyl_neumann_prime(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_neumann_prime_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_neumann_prime_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..6df6362f5b --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_neumann_prime_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_cyl_neumann_prime_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_neumann_prime, T, bin_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_neumann_prime(x_ad,x_ad); + auto y_expect = boost::math::cyl_neumann_prime(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_neumann_prime_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_neumann_prime_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..59a73549a9 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_neumann_prime_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_cyl_neumann_prime_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_neumann_prime, T, multiprecision_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_neumann_prime(x_ad,x_ad); + auto y_expect = boost::math::cyl_neumann_prime(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_neumann_prime_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_neumann_prime_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..0be250f465 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_cyl_neumann_prime_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_cyl_neumann_prime_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_neumann_prime, T, multiprecision_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_neumann_prime(x_ad,x_ad); + auto y_expect = boost::math::cyl_neumann_prime(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_bessel_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_bessel_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..ff7701d967 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_bessel_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_sph_bessel_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_sph_bessel, T, bin_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sph_bessel(2,x_ad); + auto y_expect = boost::math::sph_bessel(2,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_bessel_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_bessel_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..a4ded3fe71 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_bessel_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_sph_bessel_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_sph_bessel, T, bin_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sph_bessel(2,x_ad); + auto y_expect = boost::math::sph_bessel(2,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_bessel_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_bessel_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..2dc442518f --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_bessel_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_sph_bessel_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_sph_bessel, T, multiprecision_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sph_bessel(2,x_ad); + auto y_expect = boost::math::sph_bessel(2,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_bessel_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_bessel_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..9eb3192d66 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_bessel_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_sph_bessel_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_sph_bessel, T, multiprecision_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sph_bessel(2,x_ad); + auto y_expect = boost::math::sph_bessel(2,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_bessel_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_bessel_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..9f6a9f3b33 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_bessel_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_sph_bessel_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_sph_bessel, T, bin_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sph_bessel(2,x_ad); + auto y_expect = boost::math::sph_bessel(2,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_bessel_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_bessel_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..a0dabefb66 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_bessel_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_sph_bessel_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_sph_bessel, T, bin_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sph_bessel(2,x_ad); + auto y_expect = boost::math::sph_bessel(2,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_bessel_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_bessel_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..2eedb18f9e --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_bessel_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_sph_bessel_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_sph_bessel, T, multiprecision_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sph_bessel(2,x_ad); + auto y_expect = boost::math::sph_bessel(2,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_bessel_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_bessel_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..9722d4d838 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_bessel_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_sph_bessel_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_sph_bessel, T, multiprecision_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sph_bessel(2,x_ad); + auto y_expect = boost::math::sph_bessel(2,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_bessel_prime_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_bessel_prime_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..914db85681 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_bessel_prime_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_sph_bessel_prime_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_sph_bessel_prime, T, bin_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sph_bessel_prime(x_ad,x_ad); + auto y_expect = boost::math::sph_bessel_prime(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_bessel_prime_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_bessel_prime_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..16d35472f3 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_bessel_prime_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_sph_bessel_prime_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_sph_bessel_prime, T, bin_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sph_bessel_prime(x_ad,x_ad); + auto y_expect = boost::math::sph_bessel_prime(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_bessel_prime_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_bessel_prime_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..b876bc8c8c --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_bessel_prime_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_sph_bessel_prime_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_sph_bessel_prime, T, multiprecision_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sph_bessel_prime(x_ad,x_ad); + auto y_expect = boost::math::sph_bessel_prime(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_bessel_prime_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_bessel_prime_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..6bd28b4ded --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_bessel_prime_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_sph_bessel_prime_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_sph_bessel_prime, T, multiprecision_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sph_bessel_prime(x_ad,x_ad); + auto y_expect = boost::math::sph_bessel_prime(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_bessel_prime_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_bessel_prime_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..5e2cfd6827 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_bessel_prime_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_sph_bessel_prime_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_sph_bessel_prime, T, bin_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sph_bessel_prime(x_ad,x_ad); + auto y_expect = boost::math::sph_bessel_prime(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_bessel_prime_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_bessel_prime_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..23dfa06fd0 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_bessel_prime_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_sph_bessel_prime_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_sph_bessel_prime, T, bin_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sph_bessel_prime(x_ad,x_ad); + auto y_expect = boost::math::sph_bessel_prime(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_bessel_prime_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_bessel_prime_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..edea4251a4 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_bessel_prime_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_sph_bessel_prime_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_sph_bessel_prime, T, multiprecision_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sph_bessel_prime(x_ad,x_ad); + auto y_expect = boost::math::sph_bessel_prime(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_bessel_prime_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_bessel_prime_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..2428173717 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_bessel_prime_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_sph_bessel_prime_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_sph_bessel_prime, T, multiprecision_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sph_bessel_prime(x_ad,x_ad); + auto y_expect = boost::math::sph_bessel_prime(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_neumann_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_neumann_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..13132d0fe9 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_neumann_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_sph_neumann_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_sph_neumann, T, bin_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sph_neumann(1,x_ad); + auto y_expect = boost::math::sph_neumann(1,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_neumann_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_neumann_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..1cb7288179 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_neumann_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_sph_neumann_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_sph_neumann, T, bin_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sph_neumann(1,x_ad); + auto y_expect = boost::math::sph_neumann(1,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_neumann_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_neumann_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..362c21b5ed --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_neumann_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_sph_neumann_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_sph_neumann, T, multiprecision_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sph_neumann(1,x_ad); + auto y_expect = boost::math::sph_neumann(1,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_neumann_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_neumann_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..2bf43d1994 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_neumann_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_sph_neumann_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_sph_neumann, T, multiprecision_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sph_neumann(1,x_ad); + auto y_expect = boost::math::sph_neumann(1,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_neumann_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_neumann_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..05058240ff --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_neumann_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_sph_neumann_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_sph_neumann, T, bin_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sph_neumann(1,x_ad); + auto y_expect = boost::math::sph_neumann(1,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_neumann_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_neumann_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..6929baec7e --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_neumann_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_sph_neumann_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_sph_neumann, T, bin_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sph_neumann(1,x_ad); + auto y_expect = boost::math::sph_neumann(1,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_neumann_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_neumann_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..d9d18752d5 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_neumann_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_sph_neumann_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_sph_neumann, T, multiprecision_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sph_neumann(1,x_ad); + auto y_expect = boost::math::sph_neumann(1,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_neumann_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_neumann_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..b5152c7330 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_neumann_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_sph_neumann_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_sph_neumann, T, multiprecision_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sph_neumann(1,x_ad); + auto y_expect = boost::math::sph_neumann(1,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_neumann_prime_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_neumann_prime_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..b07aa49a8b --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_neumann_prime_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_sph_neumann_prime_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_sph_neumann_prime, T, bin_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sph_neumann_prime(x_ad,x_ad); + auto y_expect = boost::math::sph_neumann_prime(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_neumann_prime_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_neumann_prime_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..cf95f5460e --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_neumann_prime_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_sph_neumann_prime_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_sph_neumann_prime, T, bin_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sph_neumann_prime(x_ad,x_ad); + auto y_expect = boost::math::sph_neumann_prime(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_neumann_prime_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_neumann_prime_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..b78c45e865 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_neumann_prime_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_sph_neumann_prime_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_sph_neumann_prime, T, multiprecision_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sph_neumann_prime(x_ad,x_ad); + auto y_expect = boost::math::sph_neumann_prime(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_neumann_prime_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_neumann_prime_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..a6a7e8e88a --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_neumann_prime_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_sph_neumann_prime_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_sph_neumann_prime, T, multiprecision_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sph_neumann_prime(x_ad,x_ad); + auto y_expect = boost::math::sph_neumann_prime(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_neumann_prime_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_neumann_prime_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..c47d9ebe16 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_neumann_prime_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_sph_neumann_prime_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_sph_neumann_prime, T, bin_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sph_neumann_prime(x_ad,x_ad); + auto y_expect = boost::math::sph_neumann_prime(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_neumann_prime_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_neumann_prime_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..e14354af04 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_neumann_prime_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_sph_neumann_prime_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_sph_neumann_prime, T, bin_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sph_neumann_prime(x_ad,x_ad); + auto y_expect = boost::math::sph_neumann_prime(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_neumann_prime_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_neumann_prime_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..42d8fe42f2 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_neumann_prime_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_sph_neumann_prime_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_sph_neumann_prime, T, multiprecision_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sph_neumann_prime(x_ad,x_ad); + auto y_expect = boost::math::sph_neumann_prime(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_neumann_prime_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_neumann_prime_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..32cc861d33 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/bessel/test_reverse_mode_autodiff_sph_neumann_prime_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_sph_neumann_prime_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_sph_neumann_prime, T, multiprecision_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sph_neumann_prime(x_ad,x_ad); + auto y_expect = boost::math::sph_neumann_prime(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_beta_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_beta_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..c6005b2d51 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_beta_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_beta_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_beta, T, bin_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::beta(x_ad,x_ad); + auto y_expect = boost::math::beta(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_beta_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_beta_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..a0e3bdcd33 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_beta_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_beta_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_beta, T, bin_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::beta(x_ad,x_ad); + auto y_expect = boost::math::beta(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_beta_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_beta_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..b5bcc75b52 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_beta_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_beta_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_beta, T, multiprecision_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::beta(x_ad,x_ad); + auto y_expect = boost::math::beta(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_beta_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_beta_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..2f2d2b4283 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_beta_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_beta_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_beta, T, multiprecision_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::beta(x_ad,x_ad); + auto y_expect = boost::math::beta(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_beta_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_beta_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..bb23d4e404 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_beta_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_beta_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_beta, T, bin_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::beta(x_ad,x_ad); + auto y_expect = boost::math::beta(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_beta_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_beta_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..12b1a9fe8a --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_beta_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_beta_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_beta, T, bin_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::beta(x_ad,x_ad); + auto y_expect = boost::math::beta(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_beta_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_beta_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..3a6c5c8597 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_beta_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_beta_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_beta, T, multiprecision_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::beta(x_ad,x_ad); + auto y_expect = boost::math::beta(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_beta_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_beta_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..97e2bcb7c7 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_beta_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_beta_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_beta, T, multiprecision_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::beta(x_ad,x_ad); + auto y_expect = boost::math::beta(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_betac_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_betac_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..3b3834584a --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_betac_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_betac_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_betac, T, bin_float_types) + { + RandomSample rng{ 0.01, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::betac(x_ad,x_ad,x_ad); + auto y_expect = boost::math::betac(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_betac_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_betac_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..085d6d9181 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_betac_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_betac_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_betac, T, bin_float_types) +{ + RandomSample rng{0.01, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::betac(x_ad,x_ad,x_ad); + auto y_expect = boost::math::betac(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_betac_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_betac_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..cc6dfaf279 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_betac_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_betac_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_betac, T, multiprecision_float_types) +{ + RandomSample rng{0.01, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::betac(x_ad,x_ad,x_ad); + auto y_expect = boost::math::betac(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_betac_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_betac_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..82a6dce818 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_betac_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_betac_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_betac, T, multiprecision_float_types) + { + RandomSample rng{ 0.01, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::betac(x_ad,x_ad,x_ad); + auto y_expect = boost::math::betac(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_betac_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_betac_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..af32df0c42 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_betac_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_betac_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_betac, T, bin_float_types) + { + RandomSample rng{ 0.01, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::betac(x_ad,x_ad,x_ad); + auto y_expect = boost::math::betac(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_betac_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_betac_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..794d6362f6 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_betac_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_betac_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_betac, T, bin_float_types) +{ + RandomSample rng{0.01, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::betac(x_ad,x_ad,x_ad); + auto y_expect = boost::math::betac(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_betac_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_betac_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..7c612ac82d --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_betac_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_betac_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_betac, T, multiprecision_float_types) +{ + RandomSample rng{0.01, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::betac(x_ad,x_ad,x_ad); + auto y_expect = boost::math::betac(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_betac_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_betac_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..31c77b0a50 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_betac_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_betac_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_betac, T, multiprecision_float_types) + { + RandomSample rng{ 0.01, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::betac(x_ad,x_ad,x_ad); + auto y_expect = boost::math::betac(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..f19de1e2ff --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ibeta_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibeta, T, bin_float_types) + { + RandomSample rng{ 0.01, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibeta(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibeta(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..0eb77d9391 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ibeta_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibeta, T, bin_float_types) +{ + RandomSample rng{0.01, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibeta(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibeta(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..2a9d265313 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ibeta_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibeta, T, multiprecision_float_types) +{ + RandomSample rng{0.01, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibeta(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibeta(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..57d25e6950 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ibeta_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibeta, T, multiprecision_float_types) + { + RandomSample rng{ 0.01, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibeta(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibeta(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..f87dfd9c37 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ibeta_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibeta, T, bin_float_types) + { + RandomSample rng{ 0.01, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibeta(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibeta(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..be83e0bd73 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ibeta_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibeta, T, bin_float_types) +{ + RandomSample rng{0.01, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibeta(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibeta(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..fe7408fe98 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ibeta_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibeta, T, multiprecision_float_types) +{ + RandomSample rng{0.01, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibeta(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibeta(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..737dffcd3c --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ibeta_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibeta, T, multiprecision_float_types) + { + RandomSample rng{ 0.01, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibeta(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibeta(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_derivative_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_derivative_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..7baecdb8e0 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_derivative_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ibeta_derivative_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibeta_derivative, T, bin_float_types) + { + RandomSample rng{ 0.01, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibeta_derivative(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibeta_derivative(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_derivative_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_derivative_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..2d66417df1 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_derivative_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ibeta_derivative_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibeta_derivative, T, bin_float_types) +{ + RandomSample rng{0.01, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibeta_derivative(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibeta_derivative(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_derivative_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_derivative_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..1d7eaa577d --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_derivative_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ibeta_derivative_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibeta_derivative, T, multiprecision_float_types) +{ + RandomSample rng{0.01, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibeta_derivative(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibeta_derivative(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_derivative_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_derivative_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..95fdffd06f --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_derivative_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ibeta_derivative_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibeta_derivative, T, multiprecision_float_types) + { + RandomSample rng{ 0.01, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibeta_derivative(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibeta_derivative(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_derivative_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_derivative_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..2402e50738 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_derivative_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ibeta_derivative_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibeta_derivative, T, bin_float_types) + { + RandomSample rng{ 0.01, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibeta_derivative(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibeta_derivative(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_derivative_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_derivative_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..5d1c5d85c1 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_derivative_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ibeta_derivative_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibeta_derivative, T, bin_float_types) +{ + RandomSample rng{0.01, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibeta_derivative(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibeta_derivative(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_derivative_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_derivative_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..d1d8127587 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_derivative_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ibeta_derivative_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibeta_derivative, T, multiprecision_float_types) +{ + RandomSample rng{0.01, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibeta_derivative(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibeta_derivative(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_derivative_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_derivative_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..fc4729f463 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_derivative_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ibeta_derivative_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibeta_derivative, T, multiprecision_float_types) + { + RandomSample rng{ 0.01, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibeta_derivative(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibeta_derivative(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_inv_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_inv_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..4dd2e1e1b0 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_inv_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ibeta_inv_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibeta_inv, T, bin_float_types) + { + RandomSample rng{ 0.01, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibeta_inv(0.1,x_ad,0.5); + auto y_expect = boost::math::ibeta_inv(0.1,x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_inv_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_inv_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..9118c3c0f7 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_inv_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ibeta_inv_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibeta_inv, T, bin_float_types) +{ + RandomSample rng{0.01, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibeta_inv(0.1,x_ad,0.5); + auto y_expect = boost::math::ibeta_inv(0.1,x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_inv_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_inv_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..55b475dee9 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_inv_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ibeta_inv_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibeta_inv, T, multiprecision_float_types) +{ + RandomSample rng{0.01, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibeta_inv(0.1,x_ad,0.5); + auto y_expect = boost::math::ibeta_inv(0.1,x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_inv_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_inv_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..5f2e93d81c --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_inv_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ibeta_inv_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibeta_inv, T, multiprecision_float_types) + { + RandomSample rng{ 0.01, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibeta_inv(0.1,x_ad,0.5); + auto y_expect = boost::math::ibeta_inv(0.1,x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_inv_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_inv_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..f7f80c1064 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_inv_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ibeta_inv_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibeta_inv, T, bin_float_types) + { + RandomSample rng{ 0.01, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibeta_inv(0.1,x_ad,0.5); + auto y_expect = boost::math::ibeta_inv(0.1,x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_inv_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_inv_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..4bdceb41bb --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_inv_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ibeta_inv_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibeta_inv, T, bin_float_types) +{ + RandomSample rng{0.01, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibeta_inv(0.1,x_ad,0.5); + auto y_expect = boost::math::ibeta_inv(0.1,x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_inv_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_inv_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..4152213ea0 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_inv_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ibeta_inv_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibeta_inv, T, multiprecision_float_types) +{ + RandomSample rng{0.01, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibeta_inv(0.1,x_ad,0.5); + auto y_expect = boost::math::ibeta_inv(0.1,x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_inv_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_inv_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..62401584d7 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_inv_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ibeta_inv_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibeta_inv, T, multiprecision_float_types) + { + RandomSample rng{ 0.01, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibeta_inv(0.1,x_ad,0.5); + auto y_expect = boost::math::ibeta_inv(0.1,x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_inva_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_inva_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..a859c2c6f9 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_inva_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ibeta_inva_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibeta_inva, T, bin_float_types) + { + RandomSample rng{ 0.01, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibeta_inva(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibeta_inva(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_inva_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_inva_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..74e8df22ed --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_inva_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ibeta_inva_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibeta_inva, T, bin_float_types) +{ + RandomSample rng{0.01, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibeta_inva(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibeta_inva(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_inva_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_inva_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..ed71208a37 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_inva_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ibeta_inva_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibeta_inva, T, multiprecision_float_types) +{ + RandomSample rng{0.01, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibeta_inva(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibeta_inva(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_inva_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_inva_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..de473b81a4 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_inva_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ibeta_inva_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibeta_inva, T, multiprecision_float_types) + { + RandomSample rng{ 0.01, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibeta_inva(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibeta_inva(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_inva_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_inva_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..2610f8f9a8 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_inva_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ibeta_inva_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibeta_inva, T, bin_float_types) + { + RandomSample rng{ 0.01, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibeta_inva(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibeta_inva(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_inva_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_inva_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..2001566b0a --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_inva_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ibeta_inva_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibeta_inva, T, bin_float_types) +{ + RandomSample rng{0.01, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibeta_inva(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibeta_inva(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_inva_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_inva_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..c3061412c0 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_inva_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ibeta_inva_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibeta_inva, T, multiprecision_float_types) +{ + RandomSample rng{0.01, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibeta_inva(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibeta_inva(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_inva_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_inva_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..98d10db1f1 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_inva_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ibeta_inva_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibeta_inva, T, multiprecision_float_types) + { + RandomSample rng{ 0.01, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibeta_inva(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibeta_inva(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_invb_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_invb_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..36b48ee834 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_invb_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ibeta_invb_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibeta_invb, T, bin_float_types) + { + RandomSample rng{ 0.01, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibeta_invb(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibeta_invb(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_invb_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_invb_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..1ab4872151 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_invb_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ibeta_invb_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibeta_invb, T, bin_float_types) +{ + RandomSample rng{0.01, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibeta_invb(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibeta_invb(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_invb_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_invb_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..d98bcfbc83 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_invb_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ibeta_invb_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibeta_invb, T, multiprecision_float_types) +{ + RandomSample rng{0.01, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibeta_invb(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibeta_invb(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_invb_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_invb_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..6a3588d880 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_invb_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ibeta_invb_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibeta_invb, T, multiprecision_float_types) + { + RandomSample rng{ 0.01, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibeta_invb(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibeta_invb(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_invb_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_invb_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..6847971076 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_invb_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ibeta_invb_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibeta_invb, T, bin_float_types) + { + RandomSample rng{ 0.01, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibeta_invb(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibeta_invb(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_invb_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_invb_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..48a112a39e --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_invb_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ibeta_invb_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibeta_invb, T, bin_float_types) +{ + RandomSample rng{0.01, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibeta_invb(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibeta_invb(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_invb_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_invb_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..04ae30a19e --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_invb_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ibeta_invb_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibeta_invb, T, multiprecision_float_types) +{ + RandomSample rng{0.01, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibeta_invb(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibeta_invb(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_invb_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_invb_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..e35e1d8045 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibeta_invb_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ibeta_invb_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibeta_invb, T, multiprecision_float_types) + { + RandomSample rng{ 0.01, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibeta_invb(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibeta_invb(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..9bdbac2de4 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ibetac_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibetac, T, bin_float_types) + { + RandomSample rng{ 0.01, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibetac(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibetac(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..784987feae --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ibetac_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibetac, T, bin_float_types) +{ + RandomSample rng{0.01, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibetac(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibetac(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..27dcbb866f --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ibetac_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibetac, T, multiprecision_float_types) +{ + RandomSample rng{0.01, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibetac(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibetac(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..efd8bfa3cf --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ibetac_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibetac, T, multiprecision_float_types) + { + RandomSample rng{ 0.01, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibetac(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibetac(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..2e8f3c49a7 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ibetac_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibetac, T, bin_float_types) + { + RandomSample rng{ 0.01, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibetac(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibetac(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..29b38e5817 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ibetac_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibetac, T, bin_float_types) +{ + RandomSample rng{0.01, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibetac(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibetac(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..82dfb0e3b6 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ibetac_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibetac, T, multiprecision_float_types) +{ + RandomSample rng{0.01, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibetac(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibetac(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..4d8efa3719 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ibetac_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibetac, T, multiprecision_float_types) + { + RandomSample rng{ 0.01, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibetac(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibetac(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_inv_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_inv_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..c16bab7fb0 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_inv_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ibetac_inv_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibetac_inv, T, bin_float_types) + { + RandomSample rng{ 0.01, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibetac_inv(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibetac_inv(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_inv_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_inv_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..b14536383c --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_inv_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ibetac_inv_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibetac_inv, T, bin_float_types) +{ + RandomSample rng{0.01, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibetac_inv(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibetac_inv(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_inv_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_inv_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..18f53dff94 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_inv_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ibetac_inv_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibetac_inv, T, multiprecision_float_types) +{ + RandomSample rng{0.01, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibetac_inv(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibetac_inv(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_inv_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_inv_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..347e5ad38d --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_inv_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ibetac_inv_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibetac_inv, T, multiprecision_float_types) + { + RandomSample rng{ 0.01, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibetac_inv(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibetac_inv(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_inv_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_inv_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..9959c14d5f --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_inv_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ibetac_inv_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibetac_inv, T, bin_float_types) + { + RandomSample rng{ 0.01, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibetac_inv(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibetac_inv(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_inv_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_inv_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..5e97afeac8 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_inv_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ibetac_inv_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibetac_inv, T, bin_float_types) +{ + RandomSample rng{0.01, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibetac_inv(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibetac_inv(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_inv_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_inv_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..2d9dfda115 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_inv_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ibetac_inv_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibetac_inv, T, multiprecision_float_types) +{ + RandomSample rng{0.01, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibetac_inv(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibetac_inv(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_inv_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_inv_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..11b346039b --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_inv_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ibetac_inv_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibetac_inv, T, multiprecision_float_types) + { + RandomSample rng{ 0.01, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibetac_inv(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibetac_inv(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_inva_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_inva_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..313e949ef6 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_inva_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ibetac_inva_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibetac_inva, T, bin_float_types) + { + RandomSample rng{ 0.01, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibetac_inva(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibetac_inva(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_inva_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_inva_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..8c953d2e4d --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_inva_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ibetac_inva_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibetac_inva, T, bin_float_types) +{ + RandomSample rng{0.01, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibetac_inva(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibetac_inva(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_inva_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_inva_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..4e04d6a49f --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_inva_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ibetac_inva_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibetac_inva, T, multiprecision_float_types) +{ + RandomSample rng{0.01, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibetac_inva(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibetac_inva(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_inva_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_inva_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..f946c45d5a --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_inva_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ibetac_inva_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibetac_inva, T, multiprecision_float_types) + { + RandomSample rng{ 0.01, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibetac_inva(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibetac_inva(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_inva_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_inva_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..c67012a209 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_inva_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ibetac_inva_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibetac_inva, T, bin_float_types) + { + RandomSample rng{ 0.01, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibetac_inva(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibetac_inva(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_inva_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_inva_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..422469e229 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_inva_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ibetac_inva_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibetac_inva, T, bin_float_types) +{ + RandomSample rng{0.01, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibetac_inva(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibetac_inva(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_inva_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_inva_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..b36ea43b79 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_inva_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ibetac_inva_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibetac_inva, T, multiprecision_float_types) +{ + RandomSample rng{0.01, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibetac_inva(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibetac_inva(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_inva_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_inva_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..27cf86ae91 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_inva_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ibetac_inva_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibetac_inva, T, multiprecision_float_types) + { + RandomSample rng{ 0.01, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibetac_inva(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibetac_inva(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_invb_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_invb_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..95ca180b2f --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_invb_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ibetac_invb_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibetac_invb, T, bin_float_types) + { + RandomSample rng{ 0.01, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibetac_invb(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibetac_invb(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_invb_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_invb_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..15c8c9d247 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_invb_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ibetac_invb_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibetac_invb, T, bin_float_types) +{ + RandomSample rng{0.01, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibetac_invb(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibetac_invb(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_invb_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_invb_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..0baab9739b --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_invb_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ibetac_invb_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibetac_invb, T, multiprecision_float_types) +{ + RandomSample rng{0.01, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibetac_invb(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibetac_invb(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_invb_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_invb_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..a8d748f871 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_invb_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ibetac_invb_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibetac_invb, T, multiprecision_float_types) + { + RandomSample rng{ 0.01, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibetac_invb(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibetac_invb(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_invb_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_invb_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..cb1186e0e6 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_invb_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ibetac_invb_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibetac_invb, T, bin_float_types) + { + RandomSample rng{ 0.01, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibetac_invb(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibetac_invb(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_invb_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_invb_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..dbfc3d1779 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_invb_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ibetac_invb_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibetac_invb, T, bin_float_types) +{ + RandomSample rng{0.01, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibetac_invb(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibetac_invb(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_invb_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_invb_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..0d3f4c8973 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_invb_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ibetac_invb_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibetac_invb, T, multiprecision_float_types) +{ + RandomSample rng{0.01, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibetac_invb(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibetac_invb(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_invb_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_invb_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..9537fe18b1 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/beta/test_reverse_mode_autodiff_ibetac_invb_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ibetac_invb_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ibetac_invb, T, multiprecision_float_types) + { + RandomSample rng{ 0.01, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ibetac_invb(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ibetac_invb(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_t_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_t_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..afba346355 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_t_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_chebyshev_t_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_chebyshev_t, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::chebyshev_t(1,x_ad); + auto y_expect = boost::math::chebyshev_t(1,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_t_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_t_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..9ef108b574 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_t_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_chebyshev_t_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_chebyshev_t, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::chebyshev_t(1,x_ad); + auto y_expect = boost::math::chebyshev_t(1,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_t_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_t_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..8c797731fb --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_t_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_chebyshev_t_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_chebyshev_t, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::chebyshev_t(1,x_ad); + auto y_expect = boost::math::chebyshev_t(1,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_t_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_t_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..35b2c9db8c --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_t_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_chebyshev_t_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_chebyshev_t, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::chebyshev_t(1,x_ad); + auto y_expect = boost::math::chebyshev_t(1,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_t_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_t_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..b10cea99b1 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_t_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_chebyshev_t_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_chebyshev_t, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::chebyshev_t(1,x_ad); + auto y_expect = boost::math::chebyshev_t(1,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_t_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_t_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..9d7a0c8b0c --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_t_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_chebyshev_t_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_chebyshev_t, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::chebyshev_t(1,x_ad); + auto y_expect = boost::math::chebyshev_t(1,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_t_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_t_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..90f4688f4a --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_t_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_chebyshev_t_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_chebyshev_t, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::chebyshev_t(1,x_ad); + auto y_expect = boost::math::chebyshev_t(1,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_t_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_t_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..a7fd94f35a --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_t_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_chebyshev_t_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_chebyshev_t, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::chebyshev_t(1,x_ad); + auto y_expect = boost::math::chebyshev_t(1,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_t_prime_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_t_prime_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..f77a9e1a59 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_t_prime_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_chebyshev_t_prime_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_chebyshev_t_prime, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::chebyshev_t_prime(3,x_ad); + auto y_expect = boost::math::chebyshev_t_prime(3,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_t_prime_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_t_prime_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..7f1dbd191b --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_t_prime_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_chebyshev_t_prime_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_chebyshev_t_prime, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::chebyshev_t_prime(3,x_ad); + auto y_expect = boost::math::chebyshev_t_prime(3,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_t_prime_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_t_prime_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..621d0402bc --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_t_prime_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_chebyshev_t_prime_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_chebyshev_t_prime, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::chebyshev_t_prime(3,x_ad); + auto y_expect = boost::math::chebyshev_t_prime(3,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_t_prime_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_t_prime_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..a4e55ecaa8 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_t_prime_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_chebyshev_t_prime_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_chebyshev_t_prime, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::chebyshev_t_prime(3,x_ad); + auto y_expect = boost::math::chebyshev_t_prime(3,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_t_prime_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_t_prime_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..863174fdf0 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_t_prime_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_chebyshev_t_prime_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_chebyshev_t_prime, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::chebyshev_t_prime(3,x_ad); + auto y_expect = boost::math::chebyshev_t_prime(3,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_t_prime_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_t_prime_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..95bb7f73be --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_t_prime_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_chebyshev_t_prime_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_chebyshev_t_prime, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::chebyshev_t_prime(3,x_ad); + auto y_expect = boost::math::chebyshev_t_prime(3,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_t_prime_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_t_prime_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..e862746cdb --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_t_prime_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_chebyshev_t_prime_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_chebyshev_t_prime, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::chebyshev_t_prime(3,x_ad); + auto y_expect = boost::math::chebyshev_t_prime(3,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_t_prime_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_t_prime_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..9acbf87846 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_t_prime_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_chebyshev_t_prime_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_chebyshev_t_prime, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::chebyshev_t_prime(3,x_ad); + auto y_expect = boost::math::chebyshev_t_prime(3,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_u_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_u_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..b21b0348fb --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_u_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_chebyshev_u_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_chebyshev_u, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::chebyshev_u(2,x_ad); + auto y_expect = boost::math::chebyshev_u(2,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_u_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_u_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..0c7b543586 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_u_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_chebyshev_u_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_chebyshev_u, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::chebyshev_u(2,x_ad); + auto y_expect = boost::math::chebyshev_u(2,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_u_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_u_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..e8c980732e --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_u_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_chebyshev_u_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_chebyshev_u, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::chebyshev_u(2,x_ad); + auto y_expect = boost::math::chebyshev_u(2,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_u_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_u_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..c8ea0c51d3 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_u_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_chebyshev_u_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_chebyshev_u, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::chebyshev_u(2,x_ad); + auto y_expect = boost::math::chebyshev_u(2,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_u_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_u_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..b5b775ac85 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_u_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_chebyshev_u_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_chebyshev_u, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::chebyshev_u(2,x_ad); + auto y_expect = boost::math::chebyshev_u(2,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_u_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_u_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..eed1972f1d --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_u_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_chebyshev_u_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_chebyshev_u, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::chebyshev_u(2,x_ad); + auto y_expect = boost::math::chebyshev_u(2,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_u_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_u_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..fde2a3cd88 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_u_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_chebyshev_u_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_chebyshev_u, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::chebyshev_u(2,x_ad); + auto y_expect = boost::math::chebyshev_u(2,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_u_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_u_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..f688d93488 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/chebyshev/test_reverse_mode_autodiff_chebyshev_u_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_chebyshev_u_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_chebyshev_u, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::chebyshev_u(2,x_ad); + auto y_expect = boost::math::chebyshev_u(2,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_1_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_1_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..ffa09c1a58 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_1_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ellint_1_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_1, T, bin_float_types) + { + RandomSample rng{ 0.5, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_1(x_ad,x_ad); + auto y_expect = boost::math::ellint_1(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_1_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_1_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..469adb3342 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_1_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ellint_1_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_1, T, bin_float_types) +{ + RandomSample rng{0.5, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_1(x_ad,x_ad); + auto y_expect = boost::math::ellint_1(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_1_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_1_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..78db97bc6b --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_1_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ellint_1_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_1, T, multiprecision_float_types) +{ + RandomSample rng{0.5, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_1(x_ad,x_ad); + auto y_expect = boost::math::ellint_1(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_1_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_1_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..139b679ea2 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_1_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ellint_1_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_1, T, multiprecision_float_types) + { + RandomSample rng{ 0.5, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_1(x_ad,x_ad); + auto y_expect = boost::math::ellint_1(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_1_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_1_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..24b5aa613a --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_1_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ellint_1_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_1, T, bin_float_types) + { + RandomSample rng{ 0.5, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_1(x_ad,x_ad); + auto y_expect = boost::math::ellint_1(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_1_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_1_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..333135ce61 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_1_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ellint_1_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_1, T, bin_float_types) +{ + RandomSample rng{0.5, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_1(x_ad,x_ad); + auto y_expect = boost::math::ellint_1(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_1_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_1_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..9e850dad6d --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_1_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ellint_1_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_1, T, multiprecision_float_types) +{ + RandomSample rng{0.5, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_1(x_ad,x_ad); + auto y_expect = boost::math::ellint_1(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_1_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_1_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..8e81da8938 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_1_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ellint_1_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_1, T, multiprecision_float_types) + { + RandomSample rng{ 0.5, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_1(x_ad,x_ad); + auto y_expect = boost::math::ellint_1(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_2_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_2_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..7434d108c7 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_2_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ellint_2_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_2, T, bin_float_types) + { + RandomSample rng{ 0.5, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_2(x_ad,x_ad); + auto y_expect = boost::math::ellint_2(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_2_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_2_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..11d29f7d6b --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_2_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ellint_2_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_2, T, bin_float_types) +{ + RandomSample rng{0.5, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_2(x_ad,x_ad); + auto y_expect = boost::math::ellint_2(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_2_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_2_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..0fa78d4c74 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_2_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ellint_2_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_2, T, multiprecision_float_types) +{ + RandomSample rng{0.5, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_2(x_ad,x_ad); + auto y_expect = boost::math::ellint_2(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_2_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_2_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..41ac9eb495 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_2_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ellint_2_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_2, T, multiprecision_float_types) + { + RandomSample rng{ 0.5, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_2(x_ad,x_ad); + auto y_expect = boost::math::ellint_2(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_2_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_2_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..af651cf5c8 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_2_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ellint_2_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_2, T, bin_float_types) + { + RandomSample rng{ 0.5, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_2(x_ad,x_ad); + auto y_expect = boost::math::ellint_2(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_2_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_2_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..ba9fc62579 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_2_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ellint_2_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_2, T, bin_float_types) +{ + RandomSample rng{0.5, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_2(x_ad,x_ad); + auto y_expect = boost::math::ellint_2(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_2_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_2_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..db1387cb01 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_2_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ellint_2_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_2, T, multiprecision_float_types) +{ + RandomSample rng{0.5, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_2(x_ad,x_ad); + auto y_expect = boost::math::ellint_2(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_2_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_2_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..fd10b79b0d --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_2_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ellint_2_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_2, T, multiprecision_float_types) + { + RandomSample rng{ 0.5, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_2(x_ad,x_ad); + auto y_expect = boost::math::ellint_2(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_3_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_3_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..52acf77284 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_3_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ellint_3_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_3, T, bin_float_types) + { + RandomSample rng{ 0.5, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_3(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ellint_3(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_3_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_3_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..5e41a2b209 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_3_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ellint_3_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_3, T, bin_float_types) +{ + RandomSample rng{0.5, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_3(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ellint_3(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_3_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_3_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..c08fbd8143 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_3_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ellint_3_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_3, T, multiprecision_float_types) +{ + RandomSample rng{0.5, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_3(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ellint_3(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_3_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_3_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..2ac177f43e --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_3_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ellint_3_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_3, T, multiprecision_float_types) + { + RandomSample rng{ 0.5, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_3(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ellint_3(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_3_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_3_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..c458f76e04 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_3_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ellint_3_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_3, T, bin_float_types) + { + RandomSample rng{ 0.5, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_3(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ellint_3(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_3_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_3_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..ad1a6ae90c --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_3_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ellint_3_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_3, T, bin_float_types) +{ + RandomSample rng{0.5, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_3(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ellint_3(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_3_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_3_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..42a6785320 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_3_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ellint_3_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_3, T, multiprecision_float_types) +{ + RandomSample rng{0.5, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_3(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ellint_3(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_3_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_3_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..9aa28cb661 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_3_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ellint_3_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_3, T, multiprecision_float_types) + { + RandomSample rng{ 0.5, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_3(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ellint_3(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_d_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_d_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..96047ea49c --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_d_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ellint_d_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_d, T, bin_float_types) + { + RandomSample rng{ 0.5, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_d(x_ad,x_ad); + auto y_expect = boost::math::ellint_d(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_d_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_d_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..a765b698a6 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_d_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ellint_d_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_d, T, bin_float_types) +{ + RandomSample rng{0.5, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_d(x_ad,x_ad); + auto y_expect = boost::math::ellint_d(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_d_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_d_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..589cbec603 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_d_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ellint_d_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_d, T, multiprecision_float_types) +{ + RandomSample rng{0.5, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_d(x_ad,x_ad); + auto y_expect = boost::math::ellint_d(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_d_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_d_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..571002e5d7 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_d_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ellint_d_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_d, T, multiprecision_float_types) + { + RandomSample rng{ 0.5, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_d(x_ad,x_ad); + auto y_expect = boost::math::ellint_d(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_d_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_d_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..e86f94e04e --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_d_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ellint_d_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_d, T, bin_float_types) + { + RandomSample rng{ 0.5, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_d(x_ad,x_ad); + auto y_expect = boost::math::ellint_d(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_d_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_d_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..f3cf491d71 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_d_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ellint_d_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_d, T, bin_float_types) +{ + RandomSample rng{0.5, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_d(x_ad,x_ad); + auto y_expect = boost::math::ellint_d(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_d_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_d_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..61384fd917 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_d_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ellint_d_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_d, T, multiprecision_float_types) +{ + RandomSample rng{0.5, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_d(x_ad,x_ad); + auto y_expect = boost::math::ellint_d(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_d_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_d_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..391539c147 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_d_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ellint_d_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_d, T, multiprecision_float_types) + { + RandomSample rng{ 0.5, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_d(x_ad,x_ad); + auto y_expect = boost::math::ellint_d(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rc_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rc_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..755b54cc9d --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rc_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ellint_rc_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_rc, T, bin_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_rc(x_ad,x_ad); + auto y_expect = boost::math::ellint_rc(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rc_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rc_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..44e86f3488 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rc_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ellint_rc_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_rc, T, bin_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_rc(x_ad,x_ad); + auto y_expect = boost::math::ellint_rc(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rc_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rc_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..e054143966 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rc_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ellint_rc_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_rc, T, multiprecision_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_rc(x_ad,x_ad); + auto y_expect = boost::math::ellint_rc(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rc_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rc_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..0cfa4ab883 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rc_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ellint_rc_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_rc, T, multiprecision_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_rc(x_ad,x_ad); + auto y_expect = boost::math::ellint_rc(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rc_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rc_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..7766271e60 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rc_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ellint_rc_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_rc, T, bin_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_rc(x_ad,x_ad); + auto y_expect = boost::math::ellint_rc(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rc_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rc_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..8361ed1cab --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rc_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ellint_rc_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_rc, T, bin_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_rc(x_ad,x_ad); + auto y_expect = boost::math::ellint_rc(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rc_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rc_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..cf8601524a --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rc_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ellint_rc_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_rc, T, multiprecision_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_rc(x_ad,x_ad); + auto y_expect = boost::math::ellint_rc(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rc_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rc_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..e36cfe62a5 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rc_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ellint_rc_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_rc, T, multiprecision_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_rc(x_ad,x_ad); + auto y_expect = boost::math::ellint_rc(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rd_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rd_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..f57e71f4bd --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rd_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ellint_rd_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_rd, T, bin_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_rd(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ellint_rd(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rd_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rd_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..68f810c842 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rd_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ellint_rd_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_rd, T, bin_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_rd(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ellint_rd(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rd_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rd_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..5b4a648620 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rd_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ellint_rd_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_rd, T, multiprecision_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_rd(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ellint_rd(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rd_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rd_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..bced8c04df --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rd_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ellint_rd_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_rd, T, multiprecision_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_rd(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ellint_rd(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rd_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rd_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..3e608b575b --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rd_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ellint_rd_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_rd, T, bin_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_rd(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ellint_rd(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rd_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rd_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..fdb9d02da6 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rd_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ellint_rd_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_rd, T, bin_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_rd(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ellint_rd(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rd_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rd_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..c717faf1db --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rd_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ellint_rd_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_rd, T, multiprecision_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_rd(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ellint_rd(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rd_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rd_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..233d2f924d --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rd_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ellint_rd_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_rd, T, multiprecision_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_rd(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ellint_rd(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rf_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rf_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..d9b29e62dd --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rf_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ellint_rf_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_rf, T, bin_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_rf(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ellint_rf(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rf_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rf_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..ec0fe205a2 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rf_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ellint_rf_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_rf, T, bin_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_rf(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ellint_rf(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rf_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rf_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..f614bb5114 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rf_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ellint_rf_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_rf, T, multiprecision_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_rf(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ellint_rf(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rf_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rf_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..5c55314cdd --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rf_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ellint_rf_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_rf, T, multiprecision_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_rf(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ellint_rf(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rf_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rf_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..232e1db24c --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rf_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ellint_rf_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_rf, T, bin_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_rf(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ellint_rf(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rf_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rf_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..14417a9d1f --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rf_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ellint_rf_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_rf, T, bin_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_rf(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ellint_rf(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rf_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rf_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..bf4dc2c314 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rf_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ellint_rf_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_rf, T, multiprecision_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_rf(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ellint_rf(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rf_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rf_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..1c0c230d6d --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rf_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ellint_rf_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_rf, T, multiprecision_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_rf(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ellint_rf(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rg_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rg_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..0b924b4edc --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rg_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ellint_rg_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_rg, T, bin_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_rg(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ellint_rg(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rg_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rg_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..4dff8467c8 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rg_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ellint_rg_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_rg, T, bin_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_rg(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ellint_rg(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rg_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rg_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..474568fbd3 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rg_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ellint_rg_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_rg, T, multiprecision_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_rg(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ellint_rg(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rg_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rg_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..49bdc79512 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rg_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ellint_rg_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_rg, T, multiprecision_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_rg(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ellint_rg(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rg_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rg_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..c247390d18 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rg_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ellint_rg_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_rg, T, bin_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_rg(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ellint_rg(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rg_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rg_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..1b4eced0d6 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rg_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ellint_rg_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_rg, T, bin_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_rg(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ellint_rg(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rg_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rg_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..e1c52e25ee --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rg_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ellint_rg_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_rg, T, multiprecision_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_rg(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ellint_rg(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rg_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rg_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..713911c342 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rg_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ellint_rg_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_rg, T, multiprecision_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_rg(x_ad,x_ad,x_ad); + auto y_expect = boost::math::ellint_rg(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rj_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rj_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..802022cbee --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rj_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ellint_rj_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_rj, T, bin_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_rj(x_ad,x_ad,x_ad,x_ad); + auto y_expect = boost::math::ellint_rj(x,x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rj_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rj_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..21eccf3751 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rj_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ellint_rj_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_rj, T, bin_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_rj(x_ad,x_ad,x_ad,x_ad); + auto y_expect = boost::math::ellint_rj(x,x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rj_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rj_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..a5f01bedb6 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rj_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ellint_rj_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_rj, T, multiprecision_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_rj(x_ad,x_ad,x_ad,x_ad); + auto y_expect = boost::math::ellint_rj(x,x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rj_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rj_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..ef56275046 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rj_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ellint_rj_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_rj, T, multiprecision_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_rj(x_ad,x_ad,x_ad,x_ad); + auto y_expect = boost::math::ellint_rj(x,x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rj_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rj_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..e495397d5b --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rj_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ellint_rj_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_rj, T, bin_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_rj(x_ad,x_ad,x_ad,x_ad); + auto y_expect = boost::math::ellint_rj(x,x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rj_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rj_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..4956bbde59 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rj_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ellint_rj_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_rj, T, bin_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_rj(x_ad,x_ad,x_ad,x_ad); + auto y_expect = boost::math::ellint_rj(x,x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rj_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rj_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..32247604c9 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rj_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_ellint_rj_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_rj, T, multiprecision_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_rj(x_ad,x_ad,x_ad,x_ad); + auto y_expect = boost::math::ellint_rj(x,x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rj_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rj_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..503c62105e --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/elliptic_integrals/test_reverse_mode_autodiff_ellint_rj_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_ellint_rj_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_ellint_rj, T, multiprecision_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::ellint_rj(x_ad,x_ad,x_ad,x_ad); + auto y_expect = boost::math::ellint_rj(x,x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/expint/test_reverse_mode_autodiff_expint_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/expint/test_reverse_mode_autodiff_expint_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..bfbb688b0a --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/expint/test_reverse_mode_autodiff_expint_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_expint_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_expint, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::expint(x_ad); + auto y_expect = boost::math::expint(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/expint/test_reverse_mode_autodiff_expint_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/expint/test_reverse_mode_autodiff_expint_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..a00e4c0788 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/expint/test_reverse_mode_autodiff_expint_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_expint_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_expint, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::expint(x_ad); + auto y_expect = boost::math::expint(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/expint/test_reverse_mode_autodiff_expint_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/expint/test_reverse_mode_autodiff_expint_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..acc698a25a --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/expint/test_reverse_mode_autodiff_expint_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_expint_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_expint, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::expint(x_ad); + auto y_expect = boost::math::expint(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/expint/test_reverse_mode_autodiff_expint_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/expint/test_reverse_mode_autodiff_expint_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..4fa6d91f03 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/expint/test_reverse_mode_autodiff_expint_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_expint_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_expint, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::expint(x_ad); + auto y_expect = boost::math::expint(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/expint/test_reverse_mode_autodiff_expint_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/expint/test_reverse_mode_autodiff_expint_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..546147534c --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/expint/test_reverse_mode_autodiff_expint_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_expint_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_expint, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::expint(x_ad); + auto y_expect = boost::math::expint(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/expint/test_reverse_mode_autodiff_expint_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/expint/test_reverse_mode_autodiff_expint_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..e0c3757372 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/expint/test_reverse_mode_autodiff_expint_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_expint_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_expint, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::expint(x_ad); + auto y_expect = boost::math::expint(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/expint/test_reverse_mode_autodiff_expint_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/expint/test_reverse_mode_autodiff_expint_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..0d9b527db0 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/expint/test_reverse_mode_autodiff_expint_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_expint_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_expint, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::expint(x_ad); + auto y_expect = boost::math::expint(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/expint/test_reverse_mode_autodiff_expint_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/expint/test_reverse_mode_autodiff_expint_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..97b040a510 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/expint/test_reverse_mode_autodiff_expint_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_expint_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_expint, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::expint(x_ad); + auto y_expect = boost::math::expint(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/factorial/test_reverse_mode_autodiff_falling_factorial_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/factorial/test_reverse_mode_autodiff_falling_factorial_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..b450f14ed0 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/factorial/test_reverse_mode_autodiff_falling_factorial_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_falling_factorial_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_falling_factorial, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::falling_factorial(x_ad,3); + auto y_expect = boost::math::falling_factorial(x,3); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/factorial/test_reverse_mode_autodiff_falling_factorial_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/factorial/test_reverse_mode_autodiff_falling_factorial_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..af92256824 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/factorial/test_reverse_mode_autodiff_falling_factorial_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_falling_factorial_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_falling_factorial, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::falling_factorial(x_ad,3); + auto y_expect = boost::math::falling_factorial(x,3); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/factorial/test_reverse_mode_autodiff_falling_factorial_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/factorial/test_reverse_mode_autodiff_falling_factorial_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..e0bca00eae --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/factorial/test_reverse_mode_autodiff_falling_factorial_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_falling_factorial_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_falling_factorial, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::falling_factorial(x_ad,3); + auto y_expect = boost::math::falling_factorial(x,3); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/factorial/test_reverse_mode_autodiff_falling_factorial_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/factorial/test_reverse_mode_autodiff_falling_factorial_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..97c47d29b4 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/factorial/test_reverse_mode_autodiff_falling_factorial_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_falling_factorial_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_falling_factorial, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::falling_factorial(x_ad,3); + auto y_expect = boost::math::falling_factorial(x,3); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/factorial/test_reverse_mode_autodiff_falling_factorial_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/factorial/test_reverse_mode_autodiff_falling_factorial_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..367921b654 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/factorial/test_reverse_mode_autodiff_falling_factorial_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_falling_factorial_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_falling_factorial, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::falling_factorial(x_ad,3); + auto y_expect = boost::math::falling_factorial(x,3); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/factorial/test_reverse_mode_autodiff_falling_factorial_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/factorial/test_reverse_mode_autodiff_falling_factorial_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..064ee79fba --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/factorial/test_reverse_mode_autodiff_falling_factorial_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_falling_factorial_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_falling_factorial, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::falling_factorial(x_ad,3); + auto y_expect = boost::math::falling_factorial(x,3); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/factorial/test_reverse_mode_autodiff_falling_factorial_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/factorial/test_reverse_mode_autodiff_falling_factorial_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..ca017690f9 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/factorial/test_reverse_mode_autodiff_falling_factorial_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_falling_factorial_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_falling_factorial, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::falling_factorial(x_ad,3); + auto y_expect = boost::math::falling_factorial(x,3); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/factorial/test_reverse_mode_autodiff_falling_factorial_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/factorial/test_reverse_mode_autodiff_falling_factorial_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..270f0123d1 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/factorial/test_reverse_mode_autodiff_falling_factorial_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_falling_factorial_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_falling_factorial, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::falling_factorial(x_ad,3); + auto y_expect = boost::math::falling_factorial(x,3); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/factorial/test_reverse_mode_autodiff_rising_factorial_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/factorial/test_reverse_mode_autodiff_rising_factorial_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..332369068f --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/factorial/test_reverse_mode_autodiff_rising_factorial_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_rising_factorial_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_rising_factorial, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::rising_factorial(x_ad,3); + auto y_expect = boost::math::rising_factorial(x,3); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/factorial/test_reverse_mode_autodiff_rising_factorial_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/factorial/test_reverse_mode_autodiff_rising_factorial_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..b68e0585aa --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/factorial/test_reverse_mode_autodiff_rising_factorial_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_rising_factorial_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_rising_factorial, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::rising_factorial(x_ad,3); + auto y_expect = boost::math::rising_factorial(x,3); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/factorial/test_reverse_mode_autodiff_rising_factorial_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/factorial/test_reverse_mode_autodiff_rising_factorial_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..b36d990469 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/factorial/test_reverse_mode_autodiff_rising_factorial_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_rising_factorial_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_rising_factorial, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::rising_factorial(x_ad,3); + auto y_expect = boost::math::rising_factorial(x,3); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/factorial/test_reverse_mode_autodiff_rising_factorial_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/factorial/test_reverse_mode_autodiff_rising_factorial_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..539a20ab7e --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/factorial/test_reverse_mode_autodiff_rising_factorial_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_rising_factorial_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_rising_factorial, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::rising_factorial(x_ad,3); + auto y_expect = boost::math::rising_factorial(x,3); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/factorial/test_reverse_mode_autodiff_rising_factorial_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/factorial/test_reverse_mode_autodiff_rising_factorial_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..a3cfdf67b4 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/factorial/test_reverse_mode_autodiff_rising_factorial_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_rising_factorial_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_rising_factorial, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::rising_factorial(x_ad,3); + auto y_expect = boost::math::rising_factorial(x,3); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/factorial/test_reverse_mode_autodiff_rising_factorial_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/factorial/test_reverse_mode_autodiff_rising_factorial_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..c47d6fc40a --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/factorial/test_reverse_mode_autodiff_rising_factorial_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_rising_factorial_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_rising_factorial, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::rising_factorial(x_ad,3); + auto y_expect = boost::math::rising_factorial(x,3); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/factorial/test_reverse_mode_autodiff_rising_factorial_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/factorial/test_reverse_mode_autodiff_rising_factorial_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..ee42d8591b --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/factorial/test_reverse_mode_autodiff_rising_factorial_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_rising_factorial_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_rising_factorial, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::rising_factorial(x_ad,3); + auto y_expect = boost::math::rising_factorial(x,3); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/factorial/test_reverse_mode_autodiff_rising_factorial_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/factorial/test_reverse_mode_autodiff_rising_factorial_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..566025c865 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/factorial/test_reverse_mode_autodiff_rising_factorial_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_rising_factorial_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_rising_factorial, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::rising_factorial(x_ad,3); + auto y_expect = boost::math::rising_factorial(x,3); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_digamma_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_digamma_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..7a5ba8640e --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_digamma_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_digamma_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_digamma, T, bin_float_types) + { + RandomSample rng{ -5, 5 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::digamma(x_ad); + auto y_expect = boost::math::digamma(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_digamma_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_digamma_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..9c46d0ce5f --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_digamma_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_digamma_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_digamma, T, bin_float_types) +{ + RandomSample rng{-5, 5}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::digamma(x_ad); + auto y_expect = boost::math::digamma(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_digamma_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_digamma_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..50942cd767 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_digamma_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_digamma_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_digamma, T, multiprecision_float_types) +{ + RandomSample rng{-5, 5}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::digamma(x_ad); + auto y_expect = boost::math::digamma(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_digamma_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_digamma_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..45340d493c --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_digamma_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_digamma_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_digamma, T, multiprecision_float_types) + { + RandomSample rng{ -5, 5 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::digamma(x_ad); + auto y_expect = boost::math::digamma(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_digamma_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_digamma_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..b87981cb3c --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_digamma_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_digamma_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_digamma, T, bin_float_types) + { + RandomSample rng{ -5, 5 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::digamma(x_ad); + auto y_expect = boost::math::digamma(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_digamma_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_digamma_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..fae02e2e9d --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_digamma_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_digamma_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_digamma, T, bin_float_types) +{ + RandomSample rng{-5, 5}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::digamma(x_ad); + auto y_expect = boost::math::digamma(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_digamma_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_digamma_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..d82556d622 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_digamma_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_digamma_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_digamma, T, multiprecision_float_types) +{ + RandomSample rng{-5, 5}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::digamma(x_ad); + auto y_expect = boost::math::digamma(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_digamma_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_digamma_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..119fc4d3a4 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_digamma_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_digamma_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_digamma, T, multiprecision_float_types) + { + RandomSample rng{ -5, 5 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::digamma(x_ad); + auto y_expect = boost::math::digamma(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_gamma_p_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_gamma_p_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..8245b35c01 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_gamma_p_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_gamma_p_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_gamma_p, T, bin_float_types) + { + RandomSample rng{ 0, 5 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::gamma_p(x_ad,x_ad); + auto y_expect = boost::math::gamma_p(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_gamma_p_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_gamma_p_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..5b34b2598b --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_gamma_p_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_gamma_p_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_gamma_p, T, bin_float_types) +{ + RandomSample rng{0, 5}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::gamma_p(x_ad,x_ad); + auto y_expect = boost::math::gamma_p(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_gamma_p_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_gamma_p_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..8c8f3e1c65 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_gamma_p_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_gamma_p_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_gamma_p, T, multiprecision_float_types) +{ + RandomSample rng{0, 5}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::gamma_p(x_ad,x_ad); + auto y_expect = boost::math::gamma_p(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_gamma_p_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_gamma_p_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..6719a260e7 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_gamma_p_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_gamma_p_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_gamma_p, T, multiprecision_float_types) + { + RandomSample rng{ 0, 5 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::gamma_p(x_ad,x_ad); + auto y_expect = boost::math::gamma_p(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_gamma_p_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_gamma_p_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..ca080ad62a --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_gamma_p_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_gamma_p_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_gamma_p, T, bin_float_types) + { + RandomSample rng{ 0, 5 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::gamma_p(x_ad,x_ad); + auto y_expect = boost::math::gamma_p(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_gamma_p_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_gamma_p_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..fe3464f775 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_gamma_p_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_gamma_p_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_gamma_p, T, bin_float_types) +{ + RandomSample rng{0, 5}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::gamma_p(x_ad,x_ad); + auto y_expect = boost::math::gamma_p(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_gamma_p_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_gamma_p_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..814e926230 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_gamma_p_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_gamma_p_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_gamma_p, T, multiprecision_float_types) +{ + RandomSample rng{0, 5}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::gamma_p(x_ad,x_ad); + auto y_expect = boost::math::gamma_p(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_gamma_p_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_gamma_p_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..b6993c59eb --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_gamma_p_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_gamma_p_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_gamma_p, T, multiprecision_float_types) + { + RandomSample rng{ 0, 5 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::gamma_p(x_ad,x_ad); + auto y_expect = boost::math::gamma_p(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_gamma_q_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_gamma_q_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..24e70698a2 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_gamma_q_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_gamma_q_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_gamma_q, T, bin_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::gamma_q(x_ad,x_ad); + auto y_expect = boost::math::gamma_q(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_gamma_q_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_gamma_q_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..02424463ee --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_gamma_q_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_gamma_q_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_gamma_q, T, bin_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::gamma_q(x_ad,x_ad); + auto y_expect = boost::math::gamma_q(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_gamma_q_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_gamma_q_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..3997ce6d9f --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_gamma_q_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_gamma_q_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_gamma_q, T, multiprecision_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::gamma_q(x_ad,x_ad); + auto y_expect = boost::math::gamma_q(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_gamma_q_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_gamma_q_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..d780c05a32 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_gamma_q_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_gamma_q_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_gamma_q, T, multiprecision_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::gamma_q(x_ad,x_ad); + auto y_expect = boost::math::gamma_q(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_gamma_q_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_gamma_q_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..64f6afb6a3 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_gamma_q_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_gamma_q_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_gamma_q, T, bin_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::gamma_q(x_ad,x_ad); + auto y_expect = boost::math::gamma_q(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_gamma_q_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_gamma_q_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..5905b153ee --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_gamma_q_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_gamma_q_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_gamma_q, T, bin_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::gamma_q(x_ad,x_ad); + auto y_expect = boost::math::gamma_q(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_gamma_q_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_gamma_q_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..c4e3d83713 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_gamma_q_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_gamma_q_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_gamma_q, T, multiprecision_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::gamma_q(x_ad,x_ad); + auto y_expect = boost::math::gamma_q(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_gamma_q_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_gamma_q_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..298e424392 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_gamma_q_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_gamma_q_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_gamma_q, T, multiprecision_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::gamma_q(x_ad,x_ad); + auto y_expect = boost::math::gamma_q(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_lgamma_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_lgamma_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..e3a5cf7caa --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_lgamma_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_lgamma_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_lgamma, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::lgamma(x_ad); + auto y_expect = boost::math::lgamma(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_lgamma_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_lgamma_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..18015d1404 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_lgamma_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_lgamma_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_lgamma, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::lgamma(x_ad); + auto y_expect = boost::math::lgamma(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_lgamma_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_lgamma_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..85b5fc42ca --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_lgamma_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_lgamma_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_lgamma, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::lgamma(x_ad); + auto y_expect = boost::math::lgamma(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_lgamma_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_lgamma_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..8b272c3e93 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_lgamma_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_lgamma_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_lgamma, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::lgamma(x_ad); + auto y_expect = boost::math::lgamma(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_lgamma_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_lgamma_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..3324994fcb --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_lgamma_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_lgamma_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_lgamma, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::lgamma(x_ad); + auto y_expect = boost::math::lgamma(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_lgamma_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_lgamma_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..f6a73ee785 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_lgamma_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_lgamma_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_lgamma, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::lgamma(x_ad); + auto y_expect = boost::math::lgamma(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_lgamma_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_lgamma_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..9dfe3df49d --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_lgamma_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_lgamma_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_lgamma, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::lgamma(x_ad); + auto y_expect = boost::math::lgamma(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_lgamma_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_lgamma_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..f81ab2fb79 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_lgamma_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_lgamma_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_lgamma, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::lgamma(x_ad); + auto y_expect = boost::math::lgamma(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_polygamma_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_polygamma_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..6c688d70f9 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_polygamma_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_polygamma_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_polygamma, T, bin_float_types) + { + RandomSample rng{ -5, 5 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::polygamma(1,x_ad); + auto y_expect = boost::math::polygamma(1,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_polygamma_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_polygamma_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..adf1abc972 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_polygamma_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_polygamma_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_polygamma, T, bin_float_types) +{ + RandomSample rng{-5, 5}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::polygamma(1,x_ad); + auto y_expect = boost::math::polygamma(1,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_polygamma_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_polygamma_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..3c9d817cf5 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_polygamma_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_polygamma_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_polygamma, T, multiprecision_float_types) +{ + RandomSample rng{-5, 5}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::polygamma(1,x_ad); + auto y_expect = boost::math::polygamma(1,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_polygamma_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_polygamma_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..19d7f94a26 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_polygamma_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_polygamma_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_polygamma, T, multiprecision_float_types) + { + RandomSample rng{ -5, 5 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::polygamma(1,x_ad); + auto y_expect = boost::math::polygamma(1,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_polygamma_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_polygamma_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..cd7b07a1c4 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_polygamma_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_polygamma_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_polygamma, T, bin_float_types) + { + RandomSample rng{ -5, 5 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::polygamma(1,x_ad); + auto y_expect = boost::math::polygamma(1,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_polygamma_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_polygamma_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..09553d5cdf --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_polygamma_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_polygamma_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_polygamma, T, bin_float_types) +{ + RandomSample rng{-5, 5}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::polygamma(1,x_ad); + auto y_expect = boost::math::polygamma(1,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_polygamma_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_polygamma_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..19ab369df5 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_polygamma_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_polygamma_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_polygamma, T, multiprecision_float_types) +{ + RandomSample rng{-5, 5}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::polygamma(1,x_ad); + auto y_expect = boost::math::polygamma(1,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_polygamma_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_polygamma_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..540cecdc74 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_polygamma_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_polygamma_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_polygamma, T, multiprecision_float_types) + { + RandomSample rng{ -5, 5 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::polygamma(1,x_ad); + auto y_expect = boost::math::polygamma(1,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma1pm1_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma1pm1_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..af5a7e2bb6 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma1pm1_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_tgamma1pm1_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_tgamma1pm1, T, bin_float_types) + { + RandomSample rng{ -3, 5 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::tgamma1pm1(x_ad); + auto y_expect = boost::math::tgamma1pm1(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma1pm1_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma1pm1_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..c58d24c3e1 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma1pm1_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_tgamma1pm1_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_tgamma1pm1, T, bin_float_types) +{ + RandomSample rng{-3, 5}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::tgamma1pm1(x_ad); + auto y_expect = boost::math::tgamma1pm1(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma1pm1_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma1pm1_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..de7dbc28b9 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma1pm1_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_tgamma1pm1_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_tgamma1pm1, T, multiprecision_float_types) +{ + RandomSample rng{-3, 5}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::tgamma1pm1(x_ad); + auto y_expect = boost::math::tgamma1pm1(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma1pm1_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma1pm1_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..9981bd4308 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma1pm1_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_tgamma1pm1_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_tgamma1pm1, T, multiprecision_float_types) + { + RandomSample rng{ -3, 5 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::tgamma1pm1(x_ad); + auto y_expect = boost::math::tgamma1pm1(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma1pm1_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma1pm1_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..0a4c5ec10d --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma1pm1_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_tgamma1pm1_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_tgamma1pm1, T, bin_float_types) + { + RandomSample rng{ -3, 5 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::tgamma1pm1(x_ad); + auto y_expect = boost::math::tgamma1pm1(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma1pm1_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma1pm1_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..8c8c183b37 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma1pm1_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_tgamma1pm1_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_tgamma1pm1, T, bin_float_types) +{ + RandomSample rng{-3, 5}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::tgamma1pm1(x_ad); + auto y_expect = boost::math::tgamma1pm1(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma1pm1_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma1pm1_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..fdc24458ac --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma1pm1_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_tgamma1pm1_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_tgamma1pm1, T, multiprecision_float_types) +{ + RandomSample rng{-3, 5}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::tgamma1pm1(x_ad); + auto y_expect = boost::math::tgamma1pm1(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma1pm1_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma1pm1_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..e11443cf51 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma1pm1_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_tgamma1pm1_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_tgamma1pm1, T, multiprecision_float_types) + { + RandomSample rng{ -3, 5 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::tgamma1pm1(x_ad); + auto y_expect = boost::math::tgamma1pm1(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..26612c8b62 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_tgamma_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_tgamma, T, bin_float_types) + { + RandomSample rng{ -3, 5 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::tgamma(x_ad); + auto y_expect = boost::math::tgamma(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..73a99011e0 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_tgamma_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_tgamma, T, bin_float_types) +{ + RandomSample rng{-3, 5}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::tgamma(x_ad); + auto y_expect = boost::math::tgamma(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..af467844db --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_tgamma_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_tgamma, T, multiprecision_float_types) +{ + RandomSample rng{-3, 5}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::tgamma(x_ad); + auto y_expect = boost::math::tgamma(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..796a90517b --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_tgamma_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_tgamma, T, multiprecision_float_types) + { + RandomSample rng{ -3, 5 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::tgamma(x_ad); + auto y_expect = boost::math::tgamma(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..e97c487ba4 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_tgamma_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_tgamma, T, bin_float_types) + { + RandomSample rng{ -3, 5 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::tgamma(x_ad); + auto y_expect = boost::math::tgamma(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..0f23979bcc --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_tgamma_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_tgamma, T, bin_float_types) +{ + RandomSample rng{-3, 5}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::tgamma(x_ad); + auto y_expect = boost::math::tgamma(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..d3b96d98c6 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_tgamma_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_tgamma, T, multiprecision_float_types) +{ + RandomSample rng{-3, 5}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::tgamma(x_ad); + auto y_expect = boost::math::tgamma(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..c984dfab20 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_tgamma_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_tgamma, T, multiprecision_float_types) + { + RandomSample rng{ -3, 5 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::tgamma(x_ad); + auto y_expect = boost::math::tgamma(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_delta_ratio_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_delta_ratio_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..330541b9a8 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_delta_ratio_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_tgamma_delta_ratio_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_tgamma_delta_ratio, T, bin_float_types) + { + RandomSample rng{ 0, 5 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::tgamma_delta_ratio(x_ad,x_ad); + auto y_expect = boost::math::tgamma_delta_ratio(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_delta_ratio_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_delta_ratio_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..aad705319f --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_delta_ratio_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_tgamma_delta_ratio_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_tgamma_delta_ratio, T, bin_float_types) +{ + RandomSample rng{0, 5}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::tgamma_delta_ratio(x_ad,x_ad); + auto y_expect = boost::math::tgamma_delta_ratio(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_delta_ratio_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_delta_ratio_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..2146cc1c55 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_delta_ratio_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_tgamma_delta_ratio_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_tgamma_delta_ratio, T, multiprecision_float_types) +{ + RandomSample rng{0, 5}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::tgamma_delta_ratio(x_ad,x_ad); + auto y_expect = boost::math::tgamma_delta_ratio(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_delta_ratio_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_delta_ratio_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..019e694989 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_delta_ratio_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_tgamma_delta_ratio_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_tgamma_delta_ratio, T, multiprecision_float_types) + { + RandomSample rng{ 0, 5 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::tgamma_delta_ratio(x_ad,x_ad); + auto y_expect = boost::math::tgamma_delta_ratio(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_delta_ratio_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_delta_ratio_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..133c605cf5 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_delta_ratio_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_tgamma_delta_ratio_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_tgamma_delta_ratio, T, bin_float_types) + { + RandomSample rng{ 0, 5 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::tgamma_delta_ratio(x_ad,x_ad); + auto y_expect = boost::math::tgamma_delta_ratio(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_delta_ratio_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_delta_ratio_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..8e2122c8c3 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_delta_ratio_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_tgamma_delta_ratio_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_tgamma_delta_ratio, T, bin_float_types) +{ + RandomSample rng{0, 5}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::tgamma_delta_ratio(x_ad,x_ad); + auto y_expect = boost::math::tgamma_delta_ratio(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_delta_ratio_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_delta_ratio_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..991b870fb6 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_delta_ratio_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_tgamma_delta_ratio_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_tgamma_delta_ratio, T, multiprecision_float_types) +{ + RandomSample rng{0, 5}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::tgamma_delta_ratio(x_ad,x_ad); + auto y_expect = boost::math::tgamma_delta_ratio(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_delta_ratio_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_delta_ratio_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..a762517e0d --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_delta_ratio_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_tgamma_delta_ratio_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_tgamma_delta_ratio, T, multiprecision_float_types) + { + RandomSample rng{ 0, 5 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::tgamma_delta_ratio(x_ad,x_ad); + auto y_expect = boost::math::tgamma_delta_ratio(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_lower_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_lower_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..b9bb735f01 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_lower_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_tgamma_lower_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_tgamma_lower, T, bin_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::tgamma_lower(x_ad,x_ad); + auto y_expect = boost::math::tgamma_lower(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_lower_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_lower_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..a806c9bd64 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_lower_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_tgamma_lower_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_tgamma_lower, T, bin_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::tgamma_lower(x_ad,x_ad); + auto y_expect = boost::math::tgamma_lower(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_lower_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_lower_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..92284f416e --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_lower_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_tgamma_lower_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_tgamma_lower, T, multiprecision_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::tgamma_lower(x_ad,x_ad); + auto y_expect = boost::math::tgamma_lower(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_lower_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_lower_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..ba967a5012 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_lower_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_tgamma_lower_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_tgamma_lower, T, multiprecision_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::tgamma_lower(x_ad,x_ad); + auto y_expect = boost::math::tgamma_lower(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_lower_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_lower_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..bdb48829df --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_lower_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_tgamma_lower_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_tgamma_lower, T, bin_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::tgamma_lower(x_ad,x_ad); + auto y_expect = boost::math::tgamma_lower(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_lower_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_lower_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..93ab5574c6 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_lower_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_tgamma_lower_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_tgamma_lower, T, bin_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::tgamma_lower(x_ad,x_ad); + auto y_expect = boost::math::tgamma_lower(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_lower_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_lower_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..4674fdee25 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_lower_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_tgamma_lower_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_tgamma_lower, T, multiprecision_float_types) +{ + RandomSample rng{0, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::tgamma_lower(x_ad,x_ad); + auto y_expect = boost::math::tgamma_lower(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_lower_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_lower_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..3806bf3f32 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_lower_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_tgamma_lower_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_tgamma_lower, T, multiprecision_float_types) + { + RandomSample rng{ 0, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::tgamma_lower(x_ad,x_ad); + auto y_expect = boost::math::tgamma_lower(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_ratio_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_ratio_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..5e7666e599 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_ratio_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_tgamma_ratio_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_tgamma_ratio, T, bin_float_types) + { + RandomSample rng{ 0, 5 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::tgamma_ratio(x_ad,x_ad); + auto y_expect = boost::math::tgamma_ratio(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_ratio_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_ratio_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..92af72ffc5 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_ratio_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_tgamma_ratio_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_tgamma_ratio, T, bin_float_types) +{ + RandomSample rng{0, 5}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::tgamma_ratio(x_ad,x_ad); + auto y_expect = boost::math::tgamma_ratio(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_ratio_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_ratio_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..239f05a331 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_ratio_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_tgamma_ratio_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_tgamma_ratio, T, multiprecision_float_types) +{ + RandomSample rng{0, 5}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::tgamma_ratio(x_ad,x_ad); + auto y_expect = boost::math::tgamma_ratio(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_ratio_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_ratio_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..3efb2bc5e7 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_ratio_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_tgamma_ratio_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_tgamma_ratio, T, multiprecision_float_types) + { + RandomSample rng{ 0, 5 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::tgamma_ratio(x_ad,x_ad); + auto y_expect = boost::math::tgamma_ratio(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_ratio_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_ratio_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..5219b28671 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_ratio_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_tgamma_ratio_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_tgamma_ratio, T, bin_float_types) + { + RandomSample rng{ 0, 5 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::tgamma_ratio(x_ad,x_ad); + auto y_expect = boost::math::tgamma_ratio(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_ratio_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_ratio_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..33db20dea9 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_ratio_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_tgamma_ratio_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_tgamma_ratio, T, bin_float_types) +{ + RandomSample rng{0, 5}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::tgamma_ratio(x_ad,x_ad); + auto y_expect = boost::math::tgamma_ratio(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_ratio_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_ratio_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..582bcde488 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_ratio_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_tgamma_ratio_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_tgamma_ratio, T, multiprecision_float_types) +{ + RandomSample rng{0, 5}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::tgamma_ratio(x_ad,x_ad); + auto y_expect = boost::math::tgamma_ratio(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_ratio_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_ratio_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..d231c4ddca --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_tgamma_ratio_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_tgamma_ratio_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_tgamma_ratio, T, multiprecision_float_types) + { + RandomSample rng{ 0, 5 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::tgamma_ratio(x_ad,x_ad); + auto y_expect = boost::math::tgamma_ratio(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_trigamma_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_trigamma_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..bb9e1d41d3 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_trigamma_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_trigamma_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_trigamma, T, bin_float_types) + { + RandomSample rng{ -5, 5 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::trigamma(x_ad); + auto y_expect = boost::math::trigamma(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_trigamma_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_trigamma_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..d832d33467 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_trigamma_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_trigamma_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_trigamma, T, bin_float_types) +{ + RandomSample rng{-5, 5}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::trigamma(x_ad); + auto y_expect = boost::math::trigamma(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_trigamma_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_trigamma_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..ad6fafbb07 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_trigamma_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_trigamma_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_trigamma, T, multiprecision_float_types) +{ + RandomSample rng{-5, 5}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::trigamma(x_ad); + auto y_expect = boost::math::trigamma(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_trigamma_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_trigamma_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..81b956354e --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_trigamma_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_trigamma_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_trigamma, T, multiprecision_float_types) + { + RandomSample rng{ -5, 5 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::trigamma(x_ad); + auto y_expect = boost::math::trigamma(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_trigamma_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_trigamma_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..7c5edeb52e --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_trigamma_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_trigamma_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_trigamma, T, bin_float_types) + { + RandomSample rng{ -5, 5 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::trigamma(x_ad); + auto y_expect = boost::math::trigamma(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_trigamma_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_trigamma_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..ddde606512 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_trigamma_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_trigamma_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_trigamma, T, bin_float_types) +{ + RandomSample rng{-5, 5}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::trigamma(x_ad); + auto y_expect = boost::math::trigamma(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_trigamma_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_trigamma_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..6e5206ed7e --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_trigamma_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_trigamma_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_trigamma, T, multiprecision_float_types) +{ + RandomSample rng{-5, 5}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::trigamma(x_ad); + auto y_expect = boost::math::trigamma(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_trigamma_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_trigamma_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..0be2069973 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gamma/test_reverse_mode_autodiff_trigamma_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_trigamma_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_trigamma, T, multiprecision_float_types) + { + RandomSample rng{ -5, 5 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::trigamma(x_ad); + auto y_expect = boost::math::trigamma(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..a064b6ba5e --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_gegenbauer_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_gegenbauer, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::gegenbauer(2,1,x_ad); + auto y_expect = boost::math::gegenbauer(2,1,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..20ac8ff116 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_gegenbauer_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_gegenbauer, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::gegenbauer(2,1,x_ad); + auto y_expect = boost::math::gegenbauer(2,1,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..df13f77cd8 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_gegenbauer_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_gegenbauer, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::gegenbauer(2,1,x_ad); + auto y_expect = boost::math::gegenbauer(2,1,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..c3fbf52193 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_gegenbauer_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_gegenbauer, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::gegenbauer(2,1,x_ad); + auto y_expect = boost::math::gegenbauer(2,1,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..71e3f279ca --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_gegenbauer_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_gegenbauer, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::gegenbauer(2,1,x_ad); + auto y_expect = boost::math::gegenbauer(2,1,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..85064f6391 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_gegenbauer_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_gegenbauer, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::gegenbauer(2,1,x_ad); + auto y_expect = boost::math::gegenbauer(2,1,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..cd568ba78c --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_gegenbauer_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_gegenbauer, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::gegenbauer(2,1,x_ad); + auto y_expect = boost::math::gegenbauer(2,1,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..f035629ff9 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_gegenbauer_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_gegenbauer, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::gegenbauer(2,1,x_ad); + auto y_expect = boost::math::gegenbauer(2,1,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_derivative_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_derivative_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..3b671eccfc --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_derivative_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_gegenbauer_derivative_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_gegenbauer_derivative, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::gegenbauer_derivative(3,1,x_ad,2); + auto y_expect = boost::math::gegenbauer_derivative(3,1,x,2); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_derivative_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_derivative_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..1533c4e3d3 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_derivative_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_gegenbauer_derivative_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_gegenbauer_derivative, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::gegenbauer_derivative(3,1,x_ad,2); + auto y_expect = boost::math::gegenbauer_derivative(3,1,x,2); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_derivative_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_derivative_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..1a6b1d0b28 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_derivative_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_gegenbauer_derivative_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_gegenbauer_derivative, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::gegenbauer_derivative(3,1,x_ad,2); + auto y_expect = boost::math::gegenbauer_derivative(3,1,x,2); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_derivative_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_derivative_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..262f24b976 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_derivative_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_gegenbauer_derivative_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_gegenbauer_derivative, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::gegenbauer_derivative(3,1,x_ad,2); + auto y_expect = boost::math::gegenbauer_derivative(3,1,x,2); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_derivative_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_derivative_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..c72d6882d6 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_derivative_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_gegenbauer_derivative_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_gegenbauer_derivative, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::gegenbauer_derivative(3,1,x_ad,2); + auto y_expect = boost::math::gegenbauer_derivative(3,1,x,2); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_derivative_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_derivative_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..32fde7061c --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_derivative_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_gegenbauer_derivative_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_gegenbauer_derivative, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::gegenbauer_derivative(3,1,x_ad,2); + auto y_expect = boost::math::gegenbauer_derivative(3,1,x,2); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_derivative_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_derivative_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..5d227138df --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_derivative_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_gegenbauer_derivative_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_gegenbauer_derivative, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::gegenbauer_derivative(3,1,x_ad,2); + auto y_expect = boost::math::gegenbauer_derivative(3,1,x,2); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_derivative_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_derivative_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..3889b8e0dd --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_derivative_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_gegenbauer_derivative_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_gegenbauer_derivative, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::gegenbauer_derivative(3,1,x_ad,2); + auto y_expect = boost::math::gegenbauer_derivative(3,1,x,2); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_prime_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_prime_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..884876ce76 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_prime_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_gegenbauer_prime_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_gegenbauer_prime, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::gegenbauer_prime(3,1,x_ad); + auto y_expect = boost::math::gegenbauer_prime(3,1,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_prime_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_prime_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..a796a49ed5 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_prime_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_gegenbauer_prime_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_gegenbauer_prime, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::gegenbauer_prime(3,1,x_ad); + auto y_expect = boost::math::gegenbauer_prime(3,1,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_prime_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_prime_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..159c6e109a --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_prime_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_gegenbauer_prime_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_gegenbauer_prime, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::gegenbauer_prime(3,1,x_ad); + auto y_expect = boost::math::gegenbauer_prime(3,1,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_prime_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_prime_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..b9c89975fe --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_prime_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_gegenbauer_prime_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_gegenbauer_prime, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::gegenbauer_prime(3,1,x_ad); + auto y_expect = boost::math::gegenbauer_prime(3,1,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_prime_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_prime_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..8df4c412c8 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_prime_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_gegenbauer_prime_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_gegenbauer_prime, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::gegenbauer_prime(3,1,x_ad); + auto y_expect = boost::math::gegenbauer_prime(3,1,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_prime_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_prime_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..6f3d942579 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_prime_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_gegenbauer_prime_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_gegenbauer_prime, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::gegenbauer_prime(3,1,x_ad); + auto y_expect = boost::math::gegenbauer_prime(3,1,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_prime_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_prime_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..0e31d3373b --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_prime_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_gegenbauer_prime_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_gegenbauer_prime, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::gegenbauer_prime(3,1,x_ad); + auto y_expect = boost::math::gegenbauer_prime(3,1,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_prime_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_prime_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..bd379fda48 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/gegenbauer/test_reverse_mode_autodiff_gegenbauer_prime_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_gegenbauer_prime_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_gegenbauer_prime, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::gegenbauer_prime(3,1,x_ad); + auto y_expect = boost::math::gegenbauer_prime(3,1,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_cyl_hankel_1_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_cyl_hankel_1_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..0398635643 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_cyl_hankel_1_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_cyl_hankel_1_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_hankel_1, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_hankel_1(x_ad,x_ad); + auto y_expect = boost::math::cyl_hankel_1(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_cyl_hankel_1_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_cyl_hankel_1_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..a0b28b2244 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_cyl_hankel_1_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_cyl_hankel_1_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_hankel_1, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_hankel_1(x_ad,x_ad); + auto y_expect = boost::math::cyl_hankel_1(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_cyl_hankel_1_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_cyl_hankel_1_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..72ac2ddf66 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_cyl_hankel_1_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_cyl_hankel_1_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_hankel_1, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_hankel_1(x_ad,x_ad); + auto y_expect = boost::math::cyl_hankel_1(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_cyl_hankel_1_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_cyl_hankel_1_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..1c4312b7af --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_cyl_hankel_1_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_cyl_hankel_1_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_hankel_1, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_hankel_1(x_ad,x_ad); + auto y_expect = boost::math::cyl_hankel_1(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_cyl_hankel_1_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_cyl_hankel_1_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..c0a3f98332 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_cyl_hankel_1_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_cyl_hankel_1_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_hankel_1, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_hankel_1(x_ad,x_ad); + auto y_expect = boost::math::cyl_hankel_1(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_cyl_hankel_1_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_cyl_hankel_1_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..748d1cc611 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_cyl_hankel_1_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_cyl_hankel_1_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_hankel_1, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_hankel_1(x_ad,x_ad); + auto y_expect = boost::math::cyl_hankel_1(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_cyl_hankel_1_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_cyl_hankel_1_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..cea2537e31 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_cyl_hankel_1_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_cyl_hankel_1_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_hankel_1, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_hankel_1(x_ad,x_ad); + auto y_expect = boost::math::cyl_hankel_1(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_cyl_hankel_1_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_cyl_hankel_1_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..ef1b7c4189 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_cyl_hankel_1_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_cyl_hankel_1_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_hankel_1, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_hankel_1(x_ad,x_ad); + auto y_expect = boost::math::cyl_hankel_1(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_cyl_hankel_2_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_cyl_hankel_2_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..9bf4b0520e --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_cyl_hankel_2_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_cyl_hankel_2_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_hankel_2, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_hankel_2(x_ad,x_ad); + auto y_expect = boost::math::cyl_hankel_2(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_cyl_hankel_2_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_cyl_hankel_2_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..f04b92d678 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_cyl_hankel_2_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_cyl_hankel_2_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_hankel_2, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_hankel_2(x_ad,x_ad); + auto y_expect = boost::math::cyl_hankel_2(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_cyl_hankel_2_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_cyl_hankel_2_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..52862ca3c2 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_cyl_hankel_2_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_cyl_hankel_2_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_hankel_2, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_hankel_2(x_ad,x_ad); + auto y_expect = boost::math::cyl_hankel_2(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_cyl_hankel_2_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_cyl_hankel_2_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..13089c0344 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_cyl_hankel_2_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_cyl_hankel_2_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_hankel_2, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_hankel_2(x_ad,x_ad); + auto y_expect = boost::math::cyl_hankel_2(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_cyl_hankel_2_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_cyl_hankel_2_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..691bb7e99e --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_cyl_hankel_2_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_cyl_hankel_2_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_hankel_2, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_hankel_2(x_ad,x_ad); + auto y_expect = boost::math::cyl_hankel_2(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_cyl_hankel_2_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_cyl_hankel_2_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..64a7ad4635 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_cyl_hankel_2_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_cyl_hankel_2_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_hankel_2, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_hankel_2(x_ad,x_ad); + auto y_expect = boost::math::cyl_hankel_2(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_cyl_hankel_2_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_cyl_hankel_2_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..427a68e7e4 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_cyl_hankel_2_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_cyl_hankel_2_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_hankel_2, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_hankel_2(x_ad,x_ad); + auto y_expect = boost::math::cyl_hankel_2(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_cyl_hankel_2_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_cyl_hankel_2_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..4fa1ec3090 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_cyl_hankel_2_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_cyl_hankel_2_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_cyl_hankel_2, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::cyl_hankel_2(x_ad,x_ad); + auto y_expect = boost::math::cyl_hankel_2(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_sph_hankel_1_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_sph_hankel_1_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..f01ece330f --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_sph_hankel_1_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_sph_hankel_1_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_sph_hankel_1, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sph_hankel_1(x_ad,x_ad); + auto y_expect = boost::math::sph_hankel_1(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_sph_hankel_1_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_sph_hankel_1_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..63bd826b12 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_sph_hankel_1_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_sph_hankel_1_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_sph_hankel_1, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sph_hankel_1(x_ad,x_ad); + auto y_expect = boost::math::sph_hankel_1(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_sph_hankel_1_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_sph_hankel_1_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..6c891a13bc --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_sph_hankel_1_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_sph_hankel_1_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_sph_hankel_1, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sph_hankel_1(x_ad,x_ad); + auto y_expect = boost::math::sph_hankel_1(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_sph_hankel_1_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_sph_hankel_1_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..ef40a51a07 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_sph_hankel_1_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_sph_hankel_1_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_sph_hankel_1, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sph_hankel_1(x_ad,x_ad); + auto y_expect = boost::math::sph_hankel_1(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_sph_hankel_1_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_sph_hankel_1_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..4cf6703c77 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_sph_hankel_1_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_sph_hankel_1_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_sph_hankel_1, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sph_hankel_1(x_ad,x_ad); + auto y_expect = boost::math::sph_hankel_1(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_sph_hankel_1_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_sph_hankel_1_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..0646b1ced0 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_sph_hankel_1_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_sph_hankel_1_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_sph_hankel_1, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sph_hankel_1(x_ad,x_ad); + auto y_expect = boost::math::sph_hankel_1(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_sph_hankel_1_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_sph_hankel_1_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..4ce9a82f07 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_sph_hankel_1_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_sph_hankel_1_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_sph_hankel_1, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sph_hankel_1(x_ad,x_ad); + auto y_expect = boost::math::sph_hankel_1(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_sph_hankel_1_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_sph_hankel_1_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..0fa5a852cb --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_sph_hankel_1_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_sph_hankel_1_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_sph_hankel_1, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sph_hankel_1(x_ad,x_ad); + auto y_expect = boost::math::sph_hankel_1(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_sph_hankel_2_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_sph_hankel_2_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..10321122af --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_sph_hankel_2_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_sph_hankel_2_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_sph_hankel_2, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sph_hankel_2(x_ad,x_ad); + auto y_expect = boost::math::sph_hankel_2(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_sph_hankel_2_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_sph_hankel_2_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..20fa9bd8d6 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_sph_hankel_2_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_sph_hankel_2_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_sph_hankel_2, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sph_hankel_2(x_ad,x_ad); + auto y_expect = boost::math::sph_hankel_2(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_sph_hankel_2_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_sph_hankel_2_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..8643830f45 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_sph_hankel_2_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_sph_hankel_2_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_sph_hankel_2, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sph_hankel_2(x_ad,x_ad); + auto y_expect = boost::math::sph_hankel_2(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_sph_hankel_2_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_sph_hankel_2_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..54c5c4a3d0 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_sph_hankel_2_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_sph_hankel_2_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_sph_hankel_2, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sph_hankel_2(x_ad,x_ad); + auto y_expect = boost::math::sph_hankel_2(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_sph_hankel_2_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_sph_hankel_2_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..9b6f68122d --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_sph_hankel_2_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_sph_hankel_2_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_sph_hankel_2, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sph_hankel_2(x_ad,x_ad); + auto y_expect = boost::math::sph_hankel_2(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_sph_hankel_2_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_sph_hankel_2_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..a35e9df180 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_sph_hankel_2_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_sph_hankel_2_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_sph_hankel_2, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sph_hankel_2(x_ad,x_ad); + auto y_expect = boost::math::sph_hankel_2(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_sph_hankel_2_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_sph_hankel_2_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..b23e56b2ad --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_sph_hankel_2_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_sph_hankel_2_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_sph_hankel_2, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sph_hankel_2(x_ad,x_ad); + auto y_expect = boost::math::sph_hankel_2(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_sph_hankel_2_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_sph_hankel_2_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..b34f460c4f --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hankel/test_reverse_mode_autodiff_sph_hankel_2_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_sph_hankel_2_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_sph_hankel_2, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sph_hankel_2(x_ad,x_ad); + auto y_expect = boost::math::sph_hankel_2(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hermite/test_reverse_mode_autodiff_hermite_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hermite/test_reverse_mode_autodiff_hermite_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..c4d6b9a409 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hermite/test_reverse_mode_autodiff_hermite_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_hermite_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_hermite, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::hermite(2,x_ad); + auto y_expect = boost::math::hermite(2,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hermite/test_reverse_mode_autodiff_hermite_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hermite/test_reverse_mode_autodiff_hermite_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..03edef6fd6 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hermite/test_reverse_mode_autodiff_hermite_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_hermite_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_hermite, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::hermite(2,x_ad); + auto y_expect = boost::math::hermite(2,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hermite/test_reverse_mode_autodiff_hermite_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hermite/test_reverse_mode_autodiff_hermite_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..bc4b6a4086 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hermite/test_reverse_mode_autodiff_hermite_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_hermite_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_hermite, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::hermite(2,x_ad); + auto y_expect = boost::math::hermite(2,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hermite/test_reverse_mode_autodiff_hermite_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hermite/test_reverse_mode_autodiff_hermite_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..ca9c6ed2c0 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hermite/test_reverse_mode_autodiff_hermite_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_hermite_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_hermite, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::hermite(2,x_ad); + auto y_expect = boost::math::hermite(2,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hermite/test_reverse_mode_autodiff_hermite_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hermite/test_reverse_mode_autodiff_hermite_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..bcc33bfce3 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hermite/test_reverse_mode_autodiff_hermite_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_hermite_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_hermite, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::hermite(2,x_ad); + auto y_expect = boost::math::hermite(2,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hermite/test_reverse_mode_autodiff_hermite_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hermite/test_reverse_mode_autodiff_hermite_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..eded3d5314 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hermite/test_reverse_mode_autodiff_hermite_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_hermite_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_hermite, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::hermite(2,x_ad); + auto y_expect = boost::math::hermite(2,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hermite/test_reverse_mode_autodiff_hermite_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hermite/test_reverse_mode_autodiff_hermite_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..af496bf328 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hermite/test_reverse_mode_autodiff_hermite_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_hermite_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_hermite, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::hermite(2,x_ad); + auto y_expect = boost::math::hermite(2,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hermite/test_reverse_mode_autodiff_hermite_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hermite/test_reverse_mode_autodiff_hermite_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..fb6840b793 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hermite/test_reverse_mode_autodiff_hermite_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_hermite_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_hermite, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::hermite(2,x_ad); + auto y_expect = boost::math::hermite(2,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/heuman_lambda/test_reverse_mode_autodiff_heuman_labda_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/heuman_lambda/test_reverse_mode_autodiff_heuman_labda_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..c51da23248 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/heuman_lambda/test_reverse_mode_autodiff_heuman_labda_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_heuman_labda_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_heuman_labda, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::heuman_labda(x_ad,x_ad); + auto y_expect = boost::math::heuman_labda(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/heuman_lambda/test_reverse_mode_autodiff_heuman_labda_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/heuman_lambda/test_reverse_mode_autodiff_heuman_labda_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..90bc397900 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/heuman_lambda/test_reverse_mode_autodiff_heuman_labda_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_heuman_labda_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_heuman_labda, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::heuman_labda(x_ad,x_ad); + auto y_expect = boost::math::heuman_labda(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/heuman_lambda/test_reverse_mode_autodiff_heuman_labda_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/heuman_lambda/test_reverse_mode_autodiff_heuman_labda_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..a8f2c6e5d7 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/heuman_lambda/test_reverse_mode_autodiff_heuman_labda_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_heuman_labda_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_heuman_labda, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::heuman_labda(x_ad,x_ad); + auto y_expect = boost::math::heuman_labda(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/heuman_lambda/test_reverse_mode_autodiff_heuman_labda_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/heuman_lambda/test_reverse_mode_autodiff_heuman_labda_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..625166a0ac --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/heuman_lambda/test_reverse_mode_autodiff_heuman_labda_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_heuman_labda_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_heuman_labda, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::heuman_labda(x_ad,x_ad); + auto y_expect = boost::math::heuman_labda(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/heuman_lambda/test_reverse_mode_autodiff_heuman_lambda_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/heuman_lambda/test_reverse_mode_autodiff_heuman_lambda_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..12bf38b719 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/heuman_lambda/test_reverse_mode_autodiff_heuman_lambda_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_heuman_lambda_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_heuman_lambda, T, bin_float_types) + { + RandomSample rng{ 0.1, 1.0 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::heuman_lambda(0,x_ad); + auto y_expect = boost::math::heuman_lambda(0,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/heuman_lambda/test_reverse_mode_autodiff_heuman_lambda_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/heuman_lambda/test_reverse_mode_autodiff_heuman_lambda_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..92b4edf3ca --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/heuman_lambda/test_reverse_mode_autodiff_heuman_lambda_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_heuman_lambda_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_heuman_lambda, T, bin_float_types) +{ + RandomSample rng{0.1, 1.0}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::heuman_lambda(0,x_ad); + auto y_expect = boost::math::heuman_lambda(0,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/heuman_lambda/test_reverse_mode_autodiff_heuman_lambda_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/heuman_lambda/test_reverse_mode_autodiff_heuman_lambda_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..b182d942cb --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/heuman_lambda/test_reverse_mode_autodiff_heuman_lambda_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_heuman_lambda_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_heuman_lambda, T, multiprecision_float_types) +{ + RandomSample rng{0.1, 1.0}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::heuman_lambda(0,x_ad); + auto y_expect = boost::math::heuman_lambda(0,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/heuman_lambda/test_reverse_mode_autodiff_heuman_lambda_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/heuman_lambda/test_reverse_mode_autodiff_heuman_lambda_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..bb8bdbcf22 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/heuman_lambda/test_reverse_mode_autodiff_heuman_lambda_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_heuman_lambda_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_heuman_lambda, T, multiprecision_float_types) + { + RandomSample rng{ 0.1, 1.0 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::heuman_lambda(0,x_ad); + auto y_expect = boost::math::heuman_lambda(0,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/heuman_lambda/test_reverse_mode_autodiff_heuman_lambda_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/heuman_lambda/test_reverse_mode_autodiff_heuman_lambda_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..90e5ea6aa6 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/heuman_lambda/test_reverse_mode_autodiff_heuman_lambda_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_heuman_lambda_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_heuman_lambda, T, bin_float_types) + { + RandomSample rng{ 0.1, 1.0 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::heuman_lambda(0,x_ad); + auto y_expect = boost::math::heuman_lambda(0,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/heuman_lambda/test_reverse_mode_autodiff_heuman_lambda_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/heuman_lambda/test_reverse_mode_autodiff_heuman_lambda_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..e43755479f --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/heuman_lambda/test_reverse_mode_autodiff_heuman_lambda_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_heuman_lambda_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_heuman_lambda, T, bin_float_types) +{ + RandomSample rng{0.1, 1.0}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::heuman_lambda(0,x_ad); + auto y_expect = boost::math::heuman_lambda(0,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/heuman_lambda/test_reverse_mode_autodiff_heuman_lambda_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/heuman_lambda/test_reverse_mode_autodiff_heuman_lambda_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..2e12431732 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/heuman_lambda/test_reverse_mode_autodiff_heuman_lambda_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_heuman_lambda_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_heuman_lambda, T, multiprecision_float_types) +{ + RandomSample rng{0.1, 1.0}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::heuman_lambda(0,x_ad); + auto y_expect = boost::math::heuman_lambda(0,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/heuman_lambda/test_reverse_mode_autodiff_heuman_lambda_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/heuman_lambda/test_reverse_mode_autodiff_heuman_lambda_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..e6858873b6 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/heuman_lambda/test_reverse_mode_autodiff_heuman_lambda_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_heuman_lambda_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_heuman_lambda, T, multiprecision_float_types) + { + RandomSample rng{ 0.1, 1.0 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::heuman_lambda(0,x_ad); + auto y_expect = boost::math::heuman_lambda(0,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_0F1_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_0F1_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..1109896e87 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_0F1_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_hypergeometric_0F1_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_hypergeometric_0F1, T, bin_float_types) + { + RandomSample rng{ -1, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::hypergeometric_0F1(1,x_ad); + auto y_expect = boost::math::hypergeometric_0F1(1,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_0F1_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_0F1_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..89fc619e72 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_0F1_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_hypergeometric_0F1_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_hypergeometric_0F1, T, bin_float_types) +{ + RandomSample rng{-1, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::hypergeometric_0F1(1,x_ad); + auto y_expect = boost::math::hypergeometric_0F1(1,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_0F1_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_0F1_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..2886582c84 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_0F1_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_hypergeometric_0F1_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_hypergeometric_0F1, T, multiprecision_float_types) +{ + RandomSample rng{-1, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::hypergeometric_0F1(1,x_ad); + auto y_expect = boost::math::hypergeometric_0F1(1,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_0F1_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_0F1_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..e397489189 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_0F1_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_hypergeometric_0F1_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_hypergeometric_0F1, T, multiprecision_float_types) + { + RandomSample rng{ -1, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::hypergeometric_0F1(1,x_ad); + auto y_expect = boost::math::hypergeometric_0F1(1,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_0F1_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_0F1_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..4e251e9728 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_0F1_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_hypergeometric_0F1_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_hypergeometric_0F1, T, bin_float_types) + { + RandomSample rng{ -1, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::hypergeometric_0F1(1,x_ad); + auto y_expect = boost::math::hypergeometric_0F1(1,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_0F1_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_0F1_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..cea0139b12 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_0F1_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_hypergeometric_0F1_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_hypergeometric_0F1, T, bin_float_types) +{ + RandomSample rng{-1, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::hypergeometric_0F1(1,x_ad); + auto y_expect = boost::math::hypergeometric_0F1(1,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_0F1_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_0F1_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..8a5184b93c --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_0F1_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_hypergeometric_0F1_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_hypergeometric_0F1, T, multiprecision_float_types) +{ + RandomSample rng{-1, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::hypergeometric_0F1(1,x_ad); + auto y_expect = boost::math::hypergeometric_0F1(1,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_0F1_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_0F1_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..bf45b379a9 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_0F1_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_hypergeometric_0F1_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_hypergeometric_0F1, T, multiprecision_float_types) + { + RandomSample rng{ -1, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::hypergeometric_0F1(1,x_ad); + auto y_expect = boost::math::hypergeometric_0F1(1,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_1F0_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_1F0_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..c707b7e390 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_1F0_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_hypergeometric_1F0_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_hypergeometric_1F0, T, bin_float_types) + { + RandomSample rng{ -1, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::hypergeometric_1F0(x_ad,x_ad); + auto y_expect = boost::math::hypergeometric_1F0(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_1F0_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_1F0_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..0290dcaf1c --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_1F0_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_hypergeometric_1F0_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_hypergeometric_1F0, T, bin_float_types) +{ + RandomSample rng{-1, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::hypergeometric_1F0(x_ad,x_ad); + auto y_expect = boost::math::hypergeometric_1F0(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_1F0_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_1F0_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..1c03fdc9c5 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_1F0_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_hypergeometric_1F0_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_hypergeometric_1F0, T, multiprecision_float_types) +{ + RandomSample rng{-1, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::hypergeometric_1F0(x_ad,x_ad); + auto y_expect = boost::math::hypergeometric_1F0(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_1F0_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_1F0_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..df92ee2da7 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_1F0_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_hypergeometric_1F0_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_hypergeometric_1F0, T, multiprecision_float_types) + { + RandomSample rng{ -1, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::hypergeometric_1F0(x_ad,x_ad); + auto y_expect = boost::math::hypergeometric_1F0(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_1F0_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_1F0_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..4a6a711a36 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_1F0_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_hypergeometric_1F0_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_hypergeometric_1F0, T, bin_float_types) + { + RandomSample rng{ -1, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::hypergeometric_1F0(x_ad,x_ad); + auto y_expect = boost::math::hypergeometric_1F0(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_1F0_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_1F0_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..79be1904d9 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_1F0_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_hypergeometric_1F0_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_hypergeometric_1F0, T, bin_float_types) +{ + RandomSample rng{-1, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::hypergeometric_1F0(x_ad,x_ad); + auto y_expect = boost::math::hypergeometric_1F0(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_1F0_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_1F0_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..9546f02ea7 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_1F0_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_hypergeometric_1F0_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_hypergeometric_1F0, T, multiprecision_float_types) +{ + RandomSample rng{-1, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::hypergeometric_1F0(x_ad,x_ad); + auto y_expect = boost::math::hypergeometric_1F0(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_1F0_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_1F0_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..78cc954d8d --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_1F0_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_hypergeometric_1F0_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_hypergeometric_1F0, T, multiprecision_float_types) + { + RandomSample rng{ -1, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::hypergeometric_1F0(x_ad,x_ad); + auto y_expect = boost::math::hypergeometric_1F0(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_1F1_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_1F1_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..51bbcaad63 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_1F1_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_hypergeometric_1F1_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_hypergeometric_1F1, T, bin_float_types) + { + RandomSample rng{ -1, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::hypergeometric_1F1(x_ad,x_ad,x_ad); + auto y_expect = boost::math::hypergeometric_1F1(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_1F1_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_1F1_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..a074b753da --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_1F1_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_hypergeometric_1F1_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_hypergeometric_1F1, T, bin_float_types) +{ + RandomSample rng{-1, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::hypergeometric_1F1(x_ad,x_ad,x_ad); + auto y_expect = boost::math::hypergeometric_1F1(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_1F1_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_1F1_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..223e86f7c5 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_1F1_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_hypergeometric_1F1_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_hypergeometric_1F1, T, multiprecision_float_types) +{ + RandomSample rng{-1, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::hypergeometric_1F1(x_ad,x_ad,x_ad); + auto y_expect = boost::math::hypergeometric_1F1(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_1F1_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_1F1_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..7d1b1d4567 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_1F1_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_hypergeometric_1F1_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_hypergeometric_1F1, T, multiprecision_float_types) + { + RandomSample rng{ -1, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::hypergeometric_1F1(x_ad,x_ad,x_ad); + auto y_expect = boost::math::hypergeometric_1F1(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_1F1_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_1F1_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..bdd609c669 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_1F1_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_hypergeometric_1F1_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_hypergeometric_1F1, T, bin_float_types) + { + RandomSample rng{ -1, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::hypergeometric_1F1(x_ad,x_ad,x_ad); + auto y_expect = boost::math::hypergeometric_1F1(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_1F1_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_1F1_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..3ec82ecd4c --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_1F1_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_hypergeometric_1F1_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_hypergeometric_1F1, T, bin_float_types) +{ + RandomSample rng{-1, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::hypergeometric_1F1(x_ad,x_ad,x_ad); + auto y_expect = boost::math::hypergeometric_1F1(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_1F1_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_1F1_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..22c278cf38 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_1F1_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_hypergeometric_1F1_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_hypergeometric_1F1, T, multiprecision_float_types) +{ + RandomSample rng{-1, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::hypergeometric_1F1(x_ad,x_ad,x_ad); + auto y_expect = boost::math::hypergeometric_1F1(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_1F1_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_1F1_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..82355f95a9 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_1F1_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_hypergeometric_1F1_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_hypergeometric_1F1, T, multiprecision_float_types) + { + RandomSample rng{ -1, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::hypergeometric_1F1(x_ad,x_ad,x_ad); + auto y_expect = boost::math::hypergeometric_1F1(x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_2F0_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_2F0_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..750ea8a8ec --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_2F0_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_hypergeometric_2F0_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_hypergeometric_2F0, T, bin_float_types) + { + RandomSample rng{ -1, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::hypergeometric_2F0(-1,1,x_ad); + auto y_expect = boost::math::hypergeometric_2F0(-1,1,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_2F0_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_2F0_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..869fce80cd --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_2F0_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_hypergeometric_2F0_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_hypergeometric_2F0, T, bin_float_types) +{ + RandomSample rng{-1, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::hypergeometric_2F0(-1,1,x_ad); + auto y_expect = boost::math::hypergeometric_2F0(-1,1,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_2F0_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_2F0_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..d06ae7a62f --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_2F0_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_hypergeometric_2F0_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_hypergeometric_2F0, T, multiprecision_float_types) +{ + RandomSample rng{-1, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::hypergeometric_2F0(-1,1,x_ad); + auto y_expect = boost::math::hypergeometric_2F0(-1,1,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_2F0_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_2F0_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..836dc897bd --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_2F0_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_hypergeometric_2F0_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_hypergeometric_2F0, T, multiprecision_float_types) + { + RandomSample rng{ -1, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::hypergeometric_2F0(-1,1,x_ad); + auto y_expect = boost::math::hypergeometric_2F0(-1,1,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_2F0_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_2F0_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..4a09bb19bd --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_2F0_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_hypergeometric_2F0_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_hypergeometric_2F0, T, bin_float_types) + { + RandomSample rng{ -1, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::hypergeometric_2F0(-1,1,x_ad); + auto y_expect = boost::math::hypergeometric_2F0(-1,1,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_2F0_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_2F0_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..12b34fe89d --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_2F0_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_hypergeometric_2F0_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_hypergeometric_2F0, T, bin_float_types) +{ + RandomSample rng{-1, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::hypergeometric_2F0(-1,1,x_ad); + auto y_expect = boost::math::hypergeometric_2F0(-1,1,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_2F0_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_2F0_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..c0a58e7ade --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_2F0_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_hypergeometric_2F0_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_hypergeometric_2F0, T, multiprecision_float_types) +{ + RandomSample rng{-1, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::hypergeometric_2F0(-1,1,x_ad); + auto y_expect = boost::math::hypergeometric_2F0(-1,1,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_2F0_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_2F0_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..e157bb7eb8 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/hypergeometric/test_reverse_mode_autodiff_hypergeometric_2F0_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_hypergeometric_2F0_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_hypergeometric_2F0, T, multiprecision_float_types) + { + RandomSample rng{ -1, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::hypergeometric_2F0(-1,1,x_ad); + auto y_expect = boost::math::hypergeometric_2F0(-1,1,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..77e6e68102 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi(2,x_ad,x_ad,x_ad); + auto y_expect = boost::math::jacobi(2,x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..8572858a2b --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi(2,x_ad,x_ad,x_ad); + auto y_expect = boost::math::jacobi(2,x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..c34aa47c3f --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi(2,x_ad,x_ad,x_ad); + auto y_expect = boost::math::jacobi(2,x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..b2931cff44 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi(2,x_ad,x_ad,x_ad); + auto y_expect = boost::math::jacobi(2,x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..d284784b15 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi(2,x_ad,x_ad,x_ad); + auto y_expect = boost::math::jacobi(2,x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..9b2ce9cf70 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi(2,x_ad,x_ad,x_ad); + auto y_expect = boost::math::jacobi(2,x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..49a7bff628 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi(2,x_ad,x_ad,x_ad); + auto y_expect = boost::math::jacobi(2,x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..3d59fc5136 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi(2,x_ad,x_ad,x_ad); + auto y_expect = boost::math::jacobi(2,x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_derivative_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_derivative_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..6f086e2dfa --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_derivative_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_derivative_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_derivative, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_derivative(2,x_ad,x_ad,x_ad,1); + auto y_expect = boost::math::jacobi_derivative(2,x,x,x,1); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_derivative_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_derivative_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..59db576f04 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_derivative_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_derivative_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_derivative, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_derivative(2,x_ad,x_ad,x_ad,1); + auto y_expect = boost::math::jacobi_derivative(2,x,x,x,1); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_derivative_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_derivative_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..e8b500535c --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_derivative_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_derivative_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_derivative, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_derivative(2,x_ad,x_ad,x_ad,1); + auto y_expect = boost::math::jacobi_derivative(2,x,x,x,1); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_derivative_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_derivative_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..8d8b983ee4 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_derivative_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_derivative_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_derivative, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_derivative(2,x_ad,x_ad,x_ad,1); + auto y_expect = boost::math::jacobi_derivative(2,x,x,x,1); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_derivative_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_derivative_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..70fffa4be2 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_derivative_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_derivative_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_derivative, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_derivative(2,x_ad,x_ad,x_ad,1); + auto y_expect = boost::math::jacobi_derivative(2,x,x,x,1); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_derivative_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_derivative_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..37088ec36d --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_derivative_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_derivative_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_derivative, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_derivative(2,x_ad,x_ad,x_ad,1); + auto y_expect = boost::math::jacobi_derivative(2,x,x,x,1); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_derivative_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_derivative_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..468d584112 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_derivative_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_derivative_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_derivative, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_derivative(2,x_ad,x_ad,x_ad,1); + auto y_expect = boost::math::jacobi_derivative(2,x,x,x,1); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_derivative_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_derivative_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..902118fca0 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_derivative_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_derivative_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_derivative, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_derivative(2,x_ad,x_ad,x_ad,1); + auto y_expect = boost::math::jacobi_derivative(2,x,x,x,1); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_double_prime_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_double_prime_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..b45dda42b8 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_double_prime_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_double_prime_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_double_prime, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_double_prime(2,x_ad,x_ad,x_ad); + auto y_expect = boost::math::jacobi_double_prime(2,x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_double_prime_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_double_prime_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..1a776a1bff --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_double_prime_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_double_prime_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_double_prime, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_double_prime(2,x_ad,x_ad,x_ad); + auto y_expect = boost::math::jacobi_double_prime(2,x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_double_prime_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_double_prime_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..fc3a6896e9 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_double_prime_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_double_prime_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_double_prime, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_double_prime(2,x_ad,x_ad,x_ad); + auto y_expect = boost::math::jacobi_double_prime(2,x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_double_prime_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_double_prime_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..8991bc31e4 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_double_prime_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_double_prime_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_double_prime, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_double_prime(2,x_ad,x_ad,x_ad); + auto y_expect = boost::math::jacobi_double_prime(2,x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_double_prime_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_double_prime_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..cdc83331a1 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_double_prime_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_double_prime_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_double_prime, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_double_prime(2,x_ad,x_ad,x_ad); + auto y_expect = boost::math::jacobi_double_prime(2,x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_double_prime_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_double_prime_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..934e3c9380 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_double_prime_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_double_prime_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_double_prime, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_double_prime(2,x_ad,x_ad,x_ad); + auto y_expect = boost::math::jacobi_double_prime(2,x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_double_prime_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_double_prime_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..a030b55cd2 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_double_prime_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_double_prime_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_double_prime, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_double_prime(2,x_ad,x_ad,x_ad); + auto y_expect = boost::math::jacobi_double_prime(2,x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_double_prime_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_double_prime_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..769133e697 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_double_prime_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_double_prime_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_double_prime, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_double_prime(2,x_ad,x_ad,x_ad); + auto y_expect = boost::math::jacobi_double_prime(2,x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_prime_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_prime_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..35d2ef7dcf --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_prime_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_prime_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_prime, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_prime(3,x_ad,x_ad,x_ad); + auto y_expect = boost::math::jacobi_prime(3,x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_prime_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_prime_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..b1dc5faa5b --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_prime_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_prime_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_prime, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_prime(3,x_ad,x_ad,x_ad); + auto y_expect = boost::math::jacobi_prime(3,x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_prime_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_prime_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..0ec556df0c --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_prime_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_prime_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_prime, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_prime(3,x_ad,x_ad,x_ad); + auto y_expect = boost::math::jacobi_prime(3,x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_prime_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_prime_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..6615ccc73d --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_prime_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_prime_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_prime, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_prime(3,x_ad,x_ad,x_ad); + auto y_expect = boost::math::jacobi_prime(3,x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_prime_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_prime_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..29bea00400 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_prime_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_prime_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_prime, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_prime(3,x_ad,x_ad,x_ad); + auto y_expect = boost::math::jacobi_prime(3,x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_prime_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_prime_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..760299d5b1 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_prime_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_prime_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_prime, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_prime(3,x_ad,x_ad,x_ad); + auto y_expect = boost::math::jacobi_prime(3,x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_prime_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_prime_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..de3e5dd788 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_prime_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_prime_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_prime, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_prime(3,x_ad,x_ad,x_ad); + auto y_expect = boost::math::jacobi_prime(3,x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_prime_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_prime_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..bcb4b9d1ac --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi/test_reverse_mode_autodiff_jacobi_prime_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_prime_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_prime, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_prime(3,x_ad,x_ad,x_ad); + auto y_expect = boost::math::jacobi_prime(3,x,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cd_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cd_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..c403a92202 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cd_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_cd_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_cd, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_cd(0.25,x_ad); + auto y_expect = boost::math::jacobi_cd(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cd_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cd_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..6a5f33a8c2 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cd_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_cd_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_cd, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_cd(0.25,x_ad); + auto y_expect = boost::math::jacobi_cd(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cd_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cd_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..be9a3b45c7 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cd_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_cd_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_cd, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_cd(0.25,x_ad); + auto y_expect = boost::math::jacobi_cd(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cd_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cd_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..619d28d480 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cd_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_cd_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_cd, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_cd(0.25,x_ad); + auto y_expect = boost::math::jacobi_cd(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cd_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cd_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..021ad5d0c7 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cd_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_cd_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_cd, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_cd(0.25,x_ad); + auto y_expect = boost::math::jacobi_cd(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cd_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cd_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..88b15d448d --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cd_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_cd_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_cd, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_cd(0.25,x_ad); + auto y_expect = boost::math::jacobi_cd(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cd_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cd_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..c9d894c2e7 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cd_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_cd_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_cd, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_cd(0.25,x_ad); + auto y_expect = boost::math::jacobi_cd(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cd_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cd_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..b35cde60d4 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cd_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_cd_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_cd, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_cd(0.25,x_ad); + auto y_expect = boost::math::jacobi_cd(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cn_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cn_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..affabd5b3c --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cn_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_cn_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_cn, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_cn(0.25,x_ad); + auto y_expect = boost::math::jacobi_cn(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cn_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cn_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..dd229c9da0 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cn_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_cn_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_cn, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_cn(0.25,x_ad); + auto y_expect = boost::math::jacobi_cn(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cn_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cn_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..cf05734ded --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cn_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_cn_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_cn, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_cn(0.25,x_ad); + auto y_expect = boost::math::jacobi_cn(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cn_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cn_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..693f0d5ff3 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cn_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_cn_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_cn, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_cn(0.25,x_ad); + auto y_expect = boost::math::jacobi_cn(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cn_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cn_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..dfefd20857 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cn_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_cn_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_cn, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_cn(0.25,x_ad); + auto y_expect = boost::math::jacobi_cn(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cn_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cn_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..896725361e --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cn_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_cn_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_cn, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_cn(0.25,x_ad); + auto y_expect = boost::math::jacobi_cn(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cn_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cn_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..9195d0acc5 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cn_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_cn_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_cn, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_cn(0.25,x_ad); + auto y_expect = boost::math::jacobi_cn(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cn_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cn_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..bacc8b40bf --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cn_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_cn_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_cn, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_cn(0.25,x_ad); + auto y_expect = boost::math::jacobi_cn(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cs_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cs_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..2c20bd1ea1 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cs_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_cs_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_cs, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_cs(0.25,x_ad); + auto y_expect = boost::math::jacobi_cs(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cs_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cs_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..4287b30fa3 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cs_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_cs_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_cs, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_cs(0.25,x_ad); + auto y_expect = boost::math::jacobi_cs(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cs_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cs_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..f569ffa0e8 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cs_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_cs_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_cs, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_cs(0.25,x_ad); + auto y_expect = boost::math::jacobi_cs(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cs_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cs_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..b419a19081 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cs_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_cs_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_cs, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_cs(0.25,x_ad); + auto y_expect = boost::math::jacobi_cs(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cs_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cs_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..50c6fca3a2 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cs_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_cs_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_cs, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_cs(0.25,x_ad); + auto y_expect = boost::math::jacobi_cs(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cs_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cs_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..90c87fad5a --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cs_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_cs_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_cs, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_cs(0.25,x_ad); + auto y_expect = boost::math::jacobi_cs(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cs_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cs_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..a60a2e3091 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cs_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_cs_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_cs, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_cs(0.25,x_ad); + auto y_expect = boost::math::jacobi_cs(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cs_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cs_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..1e35e8f7f1 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_cs_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_cs_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_cs, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_cs(0.25,x_ad); + auto y_expect = boost::math::jacobi_cs(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_dc_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_dc_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..1e612c28c9 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_dc_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_dc_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_dc, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_dc(0.25,x_ad); + auto y_expect = boost::math::jacobi_dc(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_dc_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_dc_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..51d8f58b6a --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_dc_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_dc_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_dc, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_dc(0.25,x_ad); + auto y_expect = boost::math::jacobi_dc(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_dc_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_dc_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..e30d591f27 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_dc_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_dc_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_dc, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_dc(0.25,x_ad); + auto y_expect = boost::math::jacobi_dc(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_dc_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_dc_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..17a1216954 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_dc_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_dc_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_dc, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_dc(0.25,x_ad); + auto y_expect = boost::math::jacobi_dc(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_dc_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_dc_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..a647151010 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_dc_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_dc_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_dc, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_dc(0.25,x_ad); + auto y_expect = boost::math::jacobi_dc(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_dc_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_dc_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..c3df87ce8d --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_dc_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_dc_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_dc, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_dc(0.25,x_ad); + auto y_expect = boost::math::jacobi_dc(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_dc_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_dc_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..a307d54b6d --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_dc_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_dc_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_dc, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_dc(0.25,x_ad); + auto y_expect = boost::math::jacobi_dc(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_dc_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_dc_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..d8a2c7e1f5 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_dc_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_dc_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_dc, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_dc(0.25,x_ad); + auto y_expect = boost::math::jacobi_dc(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_dn_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_dn_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..35b7e63294 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_dn_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_dn_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_dn, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_dn(0.25,x_ad); + auto y_expect = boost::math::jacobi_dn(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_dn_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_dn_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..604bff65f0 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_dn_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_dn_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_dn, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_dn(0.25,x_ad); + auto y_expect = boost::math::jacobi_dn(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_dn_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_dn_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..8d4fbba166 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_dn_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_dn_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_dn, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_dn(0.25,x_ad); + auto y_expect = boost::math::jacobi_dn(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_dn_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_dn_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..efe83d0942 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_dn_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_dn_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_dn, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_dn(0.25,x_ad); + auto y_expect = boost::math::jacobi_dn(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_dn_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_dn_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..9ab3a00167 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_dn_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_dn_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_dn, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_dn(0.25,x_ad); + auto y_expect = boost::math::jacobi_dn(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_dn_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_dn_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..9b224f168b --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_dn_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_dn_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_dn, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_dn(0.25,x_ad); + auto y_expect = boost::math::jacobi_dn(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_dn_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_dn_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..0653b3453e --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_dn_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_dn_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_dn, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_dn(0.25,x_ad); + auto y_expect = boost::math::jacobi_dn(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_dn_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_dn_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..1a2e96e203 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_dn_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_dn_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_dn, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_dn(0.25,x_ad); + auto y_expect = boost::math::jacobi_dn(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_ds_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_ds_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..4f5358f6a6 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_ds_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_ds_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_ds, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_ds(0.25,x_ad); + auto y_expect = boost::math::jacobi_ds(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_ds_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_ds_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..69501d98d6 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_ds_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_ds_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_ds, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_ds(0.25,x_ad); + auto y_expect = boost::math::jacobi_ds(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_ds_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_ds_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..3e1c48519c --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_ds_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_ds_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_ds, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_ds(0.25,x_ad); + auto y_expect = boost::math::jacobi_ds(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_ds_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_ds_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..a90a13bedd --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_ds_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_ds_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_ds, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_ds(0.25,x_ad); + auto y_expect = boost::math::jacobi_ds(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_ds_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_ds_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..29156501fb --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_ds_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_ds_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_ds, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_ds(0.25,x_ad); + auto y_expect = boost::math::jacobi_ds(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_ds_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_ds_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..894fc8c49c --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_ds_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_ds_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_ds, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_ds(0.25,x_ad); + auto y_expect = boost::math::jacobi_ds(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_ds_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_ds_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..93c5097fa8 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_ds_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_ds_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_ds, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_ds(0.25,x_ad); + auto y_expect = boost::math::jacobi_ds(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_ds_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_ds_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..19de43ccf9 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_ds_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_ds_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_ds, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_ds(0.25,x_ad); + auto y_expect = boost::math::jacobi_ds(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_nc_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_nc_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..a8ce0b94a6 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_nc_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_nc_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_nc, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_nc(0.25,x_ad); + auto y_expect = boost::math::jacobi_nc(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_nc_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_nc_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..38da69decf --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_nc_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_nc_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_nc, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_nc(0.25,x_ad); + auto y_expect = boost::math::jacobi_nc(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_nc_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_nc_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..9cff7d5ba8 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_nc_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_nc_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_nc, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_nc(0.25,x_ad); + auto y_expect = boost::math::jacobi_nc(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_nc_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_nc_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..e005229df4 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_nc_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_nc_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_nc, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_nc(0.25,x_ad); + auto y_expect = boost::math::jacobi_nc(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_nc_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_nc_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..411243943d --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_nc_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_nc_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_nc, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_nc(0.25,x_ad); + auto y_expect = boost::math::jacobi_nc(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_nc_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_nc_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..da8585bf57 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_nc_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_nc_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_nc, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_nc(0.25,x_ad); + auto y_expect = boost::math::jacobi_nc(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_nc_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_nc_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..b334b7bcb7 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_nc_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_nc_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_nc, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_nc(0.25,x_ad); + auto y_expect = boost::math::jacobi_nc(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_nc_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_nc_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..47041609a9 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_nc_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_nc_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_nc, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_nc(0.25,x_ad); + auto y_expect = boost::math::jacobi_nc(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_nd_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_nd_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..f382acb648 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_nd_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_nd_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_nd, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_nd(0.25,x_ad); + auto y_expect = boost::math::jacobi_nd(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_nd_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_nd_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..73b01d18da --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_nd_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_nd_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_nd, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_nd(0.25,x_ad); + auto y_expect = boost::math::jacobi_nd(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_nd_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_nd_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..34fd7cf3c8 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_nd_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_nd_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_nd, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_nd(0.25,x_ad); + auto y_expect = boost::math::jacobi_nd(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_nd_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_nd_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..caef4b5f27 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_nd_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_nd_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_nd, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_nd(0.25,x_ad); + auto y_expect = boost::math::jacobi_nd(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_nd_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_nd_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..b0484e8954 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_nd_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_nd_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_nd, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_nd(0.25,x_ad); + auto y_expect = boost::math::jacobi_nd(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_nd_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_nd_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..1d2c462ba5 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_nd_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_nd_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_nd, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_nd(0.25,x_ad); + auto y_expect = boost::math::jacobi_nd(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_nd_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_nd_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..cf468b0a6c --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_nd_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_nd_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_nd, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_nd(0.25,x_ad); + auto y_expect = boost::math::jacobi_nd(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_nd_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_nd_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..ecb0e56bb5 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_nd_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_nd_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_nd, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_nd(0.25,x_ad); + auto y_expect = boost::math::jacobi_nd(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_ns_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_ns_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..1c6c6e9944 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_ns_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_ns_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_ns, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_ns(0.25,x_ad); + auto y_expect = boost::math::jacobi_ns(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_ns_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_ns_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..48fd276981 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_ns_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_ns_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_ns, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_ns(0.25,x_ad); + auto y_expect = boost::math::jacobi_ns(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_ns_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_ns_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..5f472ec82c --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_ns_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_ns_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_ns, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_ns(0.25,x_ad); + auto y_expect = boost::math::jacobi_ns(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_ns_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_ns_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..a63336ccd9 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_ns_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_ns_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_ns, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_ns(0.25,x_ad); + auto y_expect = boost::math::jacobi_ns(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_ns_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_ns_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..a69bd4003d --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_ns_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_ns_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_ns, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_ns(0.25,x_ad); + auto y_expect = boost::math::jacobi_ns(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_ns_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_ns_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..c10b8aa7f5 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_ns_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_ns_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_ns, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_ns(0.25,x_ad); + auto y_expect = boost::math::jacobi_ns(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_ns_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_ns_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..4a30a20acb --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_ns_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_ns_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_ns, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_ns(0.25,x_ad); + auto y_expect = boost::math::jacobi_ns(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_ns_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_ns_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..69bedea299 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_ns_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_ns_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_ns, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_ns(0.25,x_ad); + auto y_expect = boost::math::jacobi_ns(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sc_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sc_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..786a808833 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sc_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_sc_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_sc, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_sc(0.25,x_ad); + auto y_expect = boost::math::jacobi_sc(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sc_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sc_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..520b214f08 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sc_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_sc_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_sc, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_sc(0.25,x_ad); + auto y_expect = boost::math::jacobi_sc(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sc_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sc_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..82f441c9ce --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sc_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_sc_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_sc, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_sc(0.25,x_ad); + auto y_expect = boost::math::jacobi_sc(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sc_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sc_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..de649fa59f --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sc_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_sc_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_sc, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_sc(0.25,x_ad); + auto y_expect = boost::math::jacobi_sc(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sc_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sc_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..5487ca1d23 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sc_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_sc_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_sc, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_sc(0.25,x_ad); + auto y_expect = boost::math::jacobi_sc(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sc_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sc_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..f63966dd2c --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sc_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_sc_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_sc, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_sc(0.25,x_ad); + auto y_expect = boost::math::jacobi_sc(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sc_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sc_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..3b18d762b0 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sc_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_sc_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_sc, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_sc(0.25,x_ad); + auto y_expect = boost::math::jacobi_sc(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sc_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sc_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..dfbb6ac36c --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sc_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_sc_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_sc, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_sc(0.25,x_ad); + auto y_expect = boost::math::jacobi_sc(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sd_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sd_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..33b5f746be --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sd_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_sd_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_sd, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_sd(0.25,x_ad); + auto y_expect = boost::math::jacobi_sd(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sd_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sd_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..988b306707 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sd_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_sd_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_sd, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_sd(0.25,x_ad); + auto y_expect = boost::math::jacobi_sd(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sd_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sd_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..6ab582169a --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sd_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_sd_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_sd, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_sd(0.25,x_ad); + auto y_expect = boost::math::jacobi_sd(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sd_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sd_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..fd971eeaf0 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sd_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_sd_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_sd, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_sd(0.25,x_ad); + auto y_expect = boost::math::jacobi_sd(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sd_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sd_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..9721120455 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sd_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_sd_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_sd, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_sd(0.25,x_ad); + auto y_expect = boost::math::jacobi_sd(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sd_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sd_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..90c24998f6 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sd_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_sd_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_sd, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_sd(0.25,x_ad); + auto y_expect = boost::math::jacobi_sd(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sd_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sd_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..d5a9fc5acb --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sd_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_sd_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_sd, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_sd(0.25,x_ad); + auto y_expect = boost::math::jacobi_sd(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sd_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sd_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..c76b167892 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sd_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_sd_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_sd, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_sd(0.25,x_ad); + auto y_expect = boost::math::jacobi_sd(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sn_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sn_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..0efb44951f --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sn_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_sn_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_sn, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_sn(0.25,x_ad); + auto y_expect = boost::math::jacobi_sn(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sn_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sn_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..8042ca5180 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sn_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_sn_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_sn, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_sn(0.25,x_ad); + auto y_expect = boost::math::jacobi_sn(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sn_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sn_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..c3b3a7f137 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sn_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_sn_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_sn, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_sn(0.25,x_ad); + auto y_expect = boost::math::jacobi_sn(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sn_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sn_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..92f40ac01a --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sn_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_sn_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_sn, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_sn(0.25,x_ad); + auto y_expect = boost::math::jacobi_sn(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sn_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sn_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..8d23147b11 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sn_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_sn_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_sn, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_sn(0.25,x_ad); + auto y_expect = boost::math::jacobi_sn(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sn_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sn_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..640737aa6c --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sn_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_sn_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_sn, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_sn(0.25,x_ad); + auto y_expect = boost::math::jacobi_sn(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sn_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sn_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..e51b4b8a95 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sn_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_sn_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_sn, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_sn(0.25,x_ad); + auto y_expect = boost::math::jacobi_sn(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sn_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sn_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..a5705bf1c2 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_elliptic/test_reverse_mode_autodiff_jacobi_sn_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_sn_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_sn, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_sn(0.25,x_ad); + auto y_expect = boost::math::jacobi_sn(0.25,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta1_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta1_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..05027b2338 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta1_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_theta1_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta1, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta1(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta1(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta1_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta1_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..eade876b2b --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta1_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_theta1_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta1, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta1(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta1(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta1_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta1_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..0e063c7138 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta1_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_theta1_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta1, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta1(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta1(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta1_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta1_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..da5f214db0 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta1_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_theta1_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta1, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta1(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta1(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta1_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta1_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..af202c6cde --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta1_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_theta1_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta1, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta1(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta1(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta1_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta1_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..2d115e2bf6 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta1_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_theta1_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta1, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta1(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta1(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta1_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta1_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..c41ce522cd --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta1_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_theta1_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta1, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta1(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta1(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta1_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta1_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..0b4d1d4a4f --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta1_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_theta1_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta1, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta1(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta1(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta1tau_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta1tau_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..9a6295669e --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta1tau_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_theta1tau_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta1tau, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta1tau(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta1tau(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta1tau_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta1tau_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..5eda0b43c0 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta1tau_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_theta1tau_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta1tau, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta1tau(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta1tau(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta1tau_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta1tau_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..3a78fcf158 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta1tau_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_theta1tau_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta1tau, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta1tau(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta1tau(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta1tau_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta1tau_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..7272569948 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta1tau_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_theta1tau_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta1tau, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta1tau(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta1tau(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta1tau_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta1tau_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..775896d3e2 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta1tau_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_theta1tau_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta1tau, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta1tau(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta1tau(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta1tau_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta1tau_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..f5080ca6fd --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta1tau_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_theta1tau_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta1tau, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta1tau(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta1tau(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta1tau_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta1tau_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..66def61a42 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta1tau_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_theta1tau_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta1tau, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta1tau(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta1tau(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta1tau_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta1tau_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..1e36e6e54e --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta1tau_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_theta1tau_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta1tau, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta1tau(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta1tau(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta2_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta2_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..79b40dc484 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta2_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_theta2_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta2, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta2(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta2(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta2_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta2_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..510007bcf5 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta2_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_theta2_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta2, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta2(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta2(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta2_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta2_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..30979f2590 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta2_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_theta2_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta2, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta2(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta2(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta2_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta2_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..a333ab780c --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta2_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_theta2_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta2, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta2(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta2(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta2_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta2_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..c78f8c0bea --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta2_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_theta2_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta2, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta2(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta2(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta2_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta2_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..24cdbb6071 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta2_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_theta2_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta2, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta2(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta2(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta2_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta2_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..46bef2aa92 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta2_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_theta2_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta2, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta2(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta2(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta2_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta2_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..3deba06a24 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta2_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_theta2_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta2, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta2(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta2(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..9adb260515 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_theta3_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta3, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta3(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta3(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..2186a4190e --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_theta3_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta3, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta3(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta3(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..4439a3c1a7 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_theta3_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta3, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta3(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta3(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..c909c22a42 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_theta3_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta3, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta3(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta3(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..9c8d6ccdae --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_theta3_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta3, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta3(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta3(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..747329295c --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_theta3_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta3, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta3(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta3(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..cf96a67c57 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_theta3_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta3, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta3(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta3(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..b19f7f6fce --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_theta3_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta3, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta3(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta3(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3m1_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3m1_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..8cb521066c --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3m1_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_theta3m1_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta3m1, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta3m1(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta3m1(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3m1_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3m1_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..39929e4e0b --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3m1_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_theta3m1_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta3m1, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta3m1(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta3m1(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3m1_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3m1_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..46ddaf9efa --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3m1_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_theta3m1_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta3m1, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta3m1(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta3m1(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3m1_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3m1_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..4630fa171b --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3m1_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_theta3m1_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta3m1, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta3m1(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta3m1(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3m1_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3m1_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..47cd97f81c --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3m1_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_theta3m1_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta3m1, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta3m1(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta3m1(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3m1_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3m1_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..fb8c8aa20f --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3m1_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_theta3m1_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta3m1, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta3m1(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta3m1(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3m1_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3m1_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..830304cd70 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3m1_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_theta3m1_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta3m1, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta3m1(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta3m1(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3m1_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3m1_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..71410957eb --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3m1_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_theta3m1_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta3m1, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta3m1(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta3m1(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3m1tau_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3m1tau_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..2359a7760b --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3m1tau_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_theta3m1tau_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta3m1tau, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta3m1tau(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta3m1tau(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3m1tau_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3m1tau_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..0f0ee810bb --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3m1tau_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_theta3m1tau_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta3m1tau, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta3m1tau(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta3m1tau(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3m1tau_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3m1tau_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..84cb373592 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3m1tau_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_theta3m1tau_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta3m1tau, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta3m1tau(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta3m1tau(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3m1tau_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3m1tau_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..ca366f113e --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3m1tau_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_theta3m1tau_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta3m1tau, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta3m1tau(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta3m1tau(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3m1tau_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3m1tau_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..28e8ab58ba --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3m1tau_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_theta3m1tau_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta3m1tau, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta3m1tau(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta3m1tau(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3m1tau_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3m1tau_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..02a0b8b396 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3m1tau_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_theta3m1tau_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta3m1tau, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta3m1tau(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta3m1tau(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3m1tau_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3m1tau_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..e2aef96189 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3m1tau_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_theta3m1tau_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta3m1tau, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta3m1tau(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta3m1tau(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3m1tau_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3m1tau_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..ce61338bd2 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3m1tau_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_theta3m1tau_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta3m1tau, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta3m1tau(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta3m1tau(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3tau_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3tau_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..e9ef481cce --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3tau_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_theta3tau_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta3tau, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta3tau(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta3tau(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3tau_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3tau_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..941066fbdf --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3tau_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_theta3tau_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta3tau, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta3tau(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta3tau(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3tau_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3tau_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..4d304bff8f --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3tau_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_theta3tau_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta3tau, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta3tau(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta3tau(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3tau_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3tau_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..8bbe66fc70 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3tau_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_theta3tau_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta3tau, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta3tau(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta3tau(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3tau_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3tau_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..930f42d13d --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3tau_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_theta3tau_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta3tau, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta3tau(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta3tau(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3tau_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3tau_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..8149cd4a11 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3tau_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_theta3tau_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta3tau, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta3tau(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta3tau(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3tau_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3tau_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..7f61d802e1 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3tau_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_theta3tau_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta3tau, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta3tau(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta3tau(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3tau_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3tau_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..73e275ce89 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta3tau_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_theta3tau_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta3tau, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta3tau(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta3tau(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..e534e126b0 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_theta4_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta4, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta4(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta4(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..07853e604c --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_theta4_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta4, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta4(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta4(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..ca304dda78 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_theta4_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta4, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta4(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta4(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..d817a54daa --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_theta4_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta4, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta4(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta4(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..2e790f0144 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_theta4_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta4, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta4(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta4(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..75a7eb0946 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_theta4_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta4, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta4(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta4(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..75c87158a1 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_theta4_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta4, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta4(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta4(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..547876be8d --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_theta4_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta4, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta4(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta4(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4m1_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4m1_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..dc1473f4c4 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4m1_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_theta4m1_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta4m1, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta4m1(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta4m1(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4m1_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4m1_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..13d06d5480 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4m1_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_theta4m1_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta4m1, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta4m1(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta4m1(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4m1_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4m1_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..5fdd75e4f1 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4m1_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_theta4m1_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta4m1, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta4m1(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta4m1(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4m1_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4m1_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..33f02336a9 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4m1_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_theta4m1_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta4m1, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta4m1(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta4m1(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4m1_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4m1_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..51612ebe75 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4m1_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_theta4m1_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta4m1, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta4m1(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta4m1(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4m1_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4m1_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..97206a0c10 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4m1_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_theta4m1_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta4m1, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta4m1(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta4m1(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4m1_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4m1_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..ed06cd1481 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4m1_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_theta4m1_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta4m1, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta4m1(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta4m1(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4m1_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4m1_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..b98a43f2f0 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4m1_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_theta4m1_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta4m1, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta4m1(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta4m1(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4m1tau_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4m1tau_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..dfe74efa11 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4m1tau_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_theta4m1tau_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta4m1tau, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta4m1tau(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta4m1tau(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4m1tau_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4m1tau_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..2ba6fe88c3 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4m1tau_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_theta4m1tau_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta4m1tau, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta4m1tau(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta4m1tau(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4m1tau_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4m1tau_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..098cc3a6a9 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4m1tau_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_theta4m1tau_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta4m1tau, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta4m1tau(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta4m1tau(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4m1tau_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4m1tau_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..702813899d --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4m1tau_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_theta4m1tau_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta4m1tau, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta4m1tau(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta4m1tau(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4m1tau_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4m1tau_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..50f1eaf789 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4m1tau_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_theta4m1tau_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta4m1tau, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta4m1tau(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta4m1tau(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4m1tau_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4m1tau_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..6ef7397f5c --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4m1tau_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_theta4m1tau_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta4m1tau, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta4m1tau(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta4m1tau(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4m1tau_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4m1tau_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..90346c0ba1 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4m1tau_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_theta4m1tau_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta4m1tau, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta4m1tau(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta4m1tau(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4m1tau_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4m1tau_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..65ad2d006c --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4m1tau_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_theta4m1tau_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta4m1tau, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta4m1tau(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta4m1tau(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4tau_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4tau_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..e02034eb21 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4tau_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_theta4tau_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta4tau, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta4tau(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta4tau(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4tau_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4tau_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..283edec81d --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4tau_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_theta4tau_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta4tau, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta4tau(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta4tau(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4tau_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4tau_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..35488a4960 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4tau_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_theta4tau_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta4tau, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta4tau(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta4tau(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4tau_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4tau_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..8645fc909b --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4tau_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_theta4tau_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta4tau, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta4tau(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta4tau(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4tau_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4tau_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..ba887ccdb3 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4tau_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_theta4tau_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta4tau, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta4tau(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta4tau(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4tau_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4tau_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..6dbc818326 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4tau_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_theta4tau_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta4tau, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta4tau(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta4tau(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4tau_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4tau_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..e040dde9c5 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4tau_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_theta4tau_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta4tau, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta4tau(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta4tau(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4tau_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4tau_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..8cd7827f8c --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_theta/test_reverse_mode_autodiff_jacobi_theta4tau_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_theta4tau_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_theta4tau, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_theta4tau(x_ad,0.5); + auto y_expect = boost::math::jacobi_theta4tau(x,0.5); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_zeta/test_reverse_mode_autodiff_jacobi_zeta_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_zeta/test_reverse_mode_autodiff_jacobi_zeta_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..05df51f2cc --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_zeta/test_reverse_mode_autodiff_jacobi_zeta_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_zeta_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_zeta, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_zeta(0,x_ad); + auto y_expect = boost::math::jacobi_zeta(0,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_zeta/test_reverse_mode_autodiff_jacobi_zeta_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_zeta/test_reverse_mode_autodiff_jacobi_zeta_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..1cbe2bff7c --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_zeta/test_reverse_mode_autodiff_jacobi_zeta_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_zeta_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_zeta, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_zeta(0,x_ad); + auto y_expect = boost::math::jacobi_zeta(0,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_zeta/test_reverse_mode_autodiff_jacobi_zeta_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_zeta/test_reverse_mode_autodiff_jacobi_zeta_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..9bc1ff3c11 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_zeta/test_reverse_mode_autodiff_jacobi_zeta_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_zeta_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_zeta, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_zeta(0,x_ad); + auto y_expect = boost::math::jacobi_zeta(0,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_zeta/test_reverse_mode_autodiff_jacobi_zeta_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_zeta/test_reverse_mode_autodiff_jacobi_zeta_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..d13c7e001c --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_zeta/test_reverse_mode_autodiff_jacobi_zeta_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_zeta_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_zeta, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_zeta(0,x_ad); + auto y_expect = boost::math::jacobi_zeta(0,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_zeta/test_reverse_mode_autodiff_jacobi_zeta_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_zeta/test_reverse_mode_autodiff_jacobi_zeta_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..b195f56237 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_zeta/test_reverse_mode_autodiff_jacobi_zeta_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_zeta_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_zeta, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_zeta(0,x_ad); + auto y_expect = boost::math::jacobi_zeta(0,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_zeta/test_reverse_mode_autodiff_jacobi_zeta_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_zeta/test_reverse_mode_autodiff_jacobi_zeta_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..f4055961c7 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_zeta/test_reverse_mode_autodiff_jacobi_zeta_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_zeta_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_zeta, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_zeta(0,x_ad); + auto y_expect = boost::math::jacobi_zeta(0,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_zeta/test_reverse_mode_autodiff_jacobi_zeta_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_zeta/test_reverse_mode_autodiff_jacobi_zeta_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..c0c945b914 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_zeta/test_reverse_mode_autodiff_jacobi_zeta_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_jacobi_zeta_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_zeta, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_zeta(0,x_ad); + auto y_expect = boost::math::jacobi_zeta(0,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_zeta/test_reverse_mode_autodiff_jacobi_zeta_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_zeta/test_reverse_mode_autodiff_jacobi_zeta_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..f00bc110c3 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/jacobi_zeta/test_reverse_mode_autodiff_jacobi_zeta_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_jacobi_zeta_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_jacobi_zeta, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::jacobi_zeta(0,x_ad); + auto y_expect = boost::math::jacobi_zeta(0,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/laguerre/test_reverse_mode_autodiff_laguerre_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/laguerre/test_reverse_mode_autodiff_laguerre_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..52edf9529f --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/laguerre/test_reverse_mode_autodiff_laguerre_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_laguerre_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_laguerre, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::laguerre(1,3,x_ad); + auto y_expect = boost::math::laguerre(1,3,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/laguerre/test_reverse_mode_autodiff_laguerre_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/laguerre/test_reverse_mode_autodiff_laguerre_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..1c0b87e348 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/laguerre/test_reverse_mode_autodiff_laguerre_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_laguerre_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_laguerre, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::laguerre(1,3,x_ad); + auto y_expect = boost::math::laguerre(1,3,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/laguerre/test_reverse_mode_autodiff_laguerre_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/laguerre/test_reverse_mode_autodiff_laguerre_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..3d9b67f0b2 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/laguerre/test_reverse_mode_autodiff_laguerre_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_laguerre_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_laguerre, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::laguerre(1,3,x_ad); + auto y_expect = boost::math::laguerre(1,3,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/laguerre/test_reverse_mode_autodiff_laguerre_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/laguerre/test_reverse_mode_autodiff_laguerre_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..790eb1e446 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/laguerre/test_reverse_mode_autodiff_laguerre_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_laguerre_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_laguerre, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::laguerre(1,3,x_ad); + auto y_expect = boost::math::laguerre(1,3,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/laguerre/test_reverse_mode_autodiff_laguerre_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/laguerre/test_reverse_mode_autodiff_laguerre_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..5515a32042 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/laguerre/test_reverse_mode_autodiff_laguerre_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_laguerre_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_laguerre, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::laguerre(1,3,x_ad); + auto y_expect = boost::math::laguerre(1,3,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/laguerre/test_reverse_mode_autodiff_laguerre_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/laguerre/test_reverse_mode_autodiff_laguerre_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..5b4ab936c2 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/laguerre/test_reverse_mode_autodiff_laguerre_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_laguerre_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_laguerre, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::laguerre(1,3,x_ad); + auto y_expect = boost::math::laguerre(1,3,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/laguerre/test_reverse_mode_autodiff_laguerre_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/laguerre/test_reverse_mode_autodiff_laguerre_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..6d59bbcd13 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/laguerre/test_reverse_mode_autodiff_laguerre_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_laguerre_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_laguerre, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::laguerre(1,3,x_ad); + auto y_expect = boost::math::laguerre(1,3,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/laguerre/test_reverse_mode_autodiff_laguerre_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/laguerre/test_reverse_mode_autodiff_laguerre_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..da222a40b4 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/laguerre/test_reverse_mode_autodiff_laguerre_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_laguerre_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_laguerre, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::laguerre(1,3,x_ad); + auto y_expect = boost::math::laguerre(1,3,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_w0_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_w0_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..24f6e4a0ef --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_w0_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_lambert_w0_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_lambert_w0, T, bin_float_types) + { + RandomSample rng{ 0, 3 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::lambert_w0(x_ad); + auto y_expect = boost::math::lambert_w0(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_w0_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_w0_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..294cfed26f --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_w0_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_lambert_w0_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_lambert_w0, T, bin_float_types) +{ + RandomSample rng{0, 3}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::lambert_w0(x_ad); + auto y_expect = boost::math::lambert_w0(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_w0_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_w0_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..5ef9a65274 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_w0_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_lambert_w0_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_lambert_w0, T, multiprecision_float_types) +{ + RandomSample rng{0, 3}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::lambert_w0(x_ad); + auto y_expect = boost::math::lambert_w0(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_w0_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_w0_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..0250bd0a02 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_w0_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_lambert_w0_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_lambert_w0, T, multiprecision_float_types) + { + RandomSample rng{ 0, 3 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::lambert_w0(x_ad); + auto y_expect = boost::math::lambert_w0(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_w0_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_w0_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..8b63b6566a --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_w0_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_lambert_w0_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_lambert_w0, T, bin_float_types) + { + RandomSample rng{ 0, 3 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::lambert_w0(x_ad); + auto y_expect = boost::math::lambert_w0(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_w0_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_w0_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..2c534421b9 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_w0_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_lambert_w0_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_lambert_w0, T, bin_float_types) +{ + RandomSample rng{0, 3}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::lambert_w0(x_ad); + auto y_expect = boost::math::lambert_w0(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_w0_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_w0_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..6cc5ede2ee --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_w0_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_lambert_w0_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_lambert_w0, T, multiprecision_float_types) +{ + RandomSample rng{0, 3}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::lambert_w0(x_ad); + auto y_expect = boost::math::lambert_w0(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_w0_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_w0_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..291a871ccc --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_w0_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_lambert_w0_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_lambert_w0, T, multiprecision_float_types) + { + RandomSample rng{ 0, 3 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::lambert_w0(x_ad); + auto y_expect = boost::math::lambert_w0(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_w0_prime_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_w0_prime_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..86c59ea4a8 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_w0_prime_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_lambert_w0_prime_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_lambert_w0_prime, T, bin_float_types) + { + RandomSample rng{ 0, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::lambert_w0_prime(x_ad); + auto y_expect = boost::math::lambert_w0_prime(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_w0_prime_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_w0_prime_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..e73aaf06e9 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_w0_prime_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_lambert_w0_prime_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_lambert_w0_prime, T, bin_float_types) +{ + RandomSample rng{0, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::lambert_w0_prime(x_ad); + auto y_expect = boost::math::lambert_w0_prime(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_w0_prime_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_w0_prime_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..4a8784f1e0 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_w0_prime_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_lambert_w0_prime_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_lambert_w0_prime, T, multiprecision_float_types) +{ + RandomSample rng{0, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::lambert_w0_prime(x_ad); + auto y_expect = boost::math::lambert_w0_prime(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_w0_prime_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_w0_prime_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..1072ea215e --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_w0_prime_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_lambert_w0_prime_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_lambert_w0_prime, T, multiprecision_float_types) + { + RandomSample rng{ 0, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::lambert_w0_prime(x_ad); + auto y_expect = boost::math::lambert_w0_prime(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_w0_prime_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_w0_prime_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..921abed914 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_w0_prime_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_lambert_w0_prime_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_lambert_w0_prime, T, bin_float_types) + { + RandomSample rng{ 0, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::lambert_w0_prime(x_ad); + auto y_expect = boost::math::lambert_w0_prime(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_w0_prime_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_w0_prime_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..2356647ed7 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_w0_prime_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_lambert_w0_prime_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_lambert_w0_prime, T, bin_float_types) +{ + RandomSample rng{0, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::lambert_w0_prime(x_ad); + auto y_expect = boost::math::lambert_w0_prime(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_w0_prime_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_w0_prime_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..1543e26d9b --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_w0_prime_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_lambert_w0_prime_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_lambert_w0_prime, T, multiprecision_float_types) +{ + RandomSample rng{0, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::lambert_w0_prime(x_ad); + auto y_expect = boost::math::lambert_w0_prime(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_w0_prime_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_w0_prime_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..bca93d6d16 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_w0_prime_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_lambert_w0_prime_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_lambert_w0_prime, T, multiprecision_float_types) + { + RandomSample rng{ 0, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::lambert_w0_prime(x_ad); + auto y_expect = boost::math::lambert_w0_prime(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_wm1_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_wm1_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..964958b214 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_wm1_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_lambert_wm1_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_lambert_wm1, T, bin_float_types) + { + RandomSample rng{ 1, 3 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::lambert_wm1(x_ad); + auto y_expect = boost::math::lambert_wm1(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_wm1_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_wm1_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..482906b5f0 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_wm1_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_lambert_wm1_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_lambert_wm1, T, bin_float_types) +{ + RandomSample rng{1, 3}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::lambert_wm1(x_ad); + auto y_expect = boost::math::lambert_wm1(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_wm1_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_wm1_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..9be725876d --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_wm1_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_lambert_wm1_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_lambert_wm1, T, multiprecision_float_types) +{ + RandomSample rng{1, 3}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::lambert_wm1(x_ad); + auto y_expect = boost::math::lambert_wm1(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_wm1_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_wm1_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..4d21f1cd8a --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_wm1_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_lambert_wm1_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_lambert_wm1, T, multiprecision_float_types) + { + RandomSample rng{ 1, 3 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::lambert_wm1(x_ad); + auto y_expect = boost::math::lambert_wm1(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_wm1_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_wm1_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..0c6301f339 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_wm1_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_lambert_wm1_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_lambert_wm1, T, bin_float_types) + { + RandomSample rng{ 1, 3 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::lambert_wm1(x_ad); + auto y_expect = boost::math::lambert_wm1(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_wm1_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_wm1_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..1526534b90 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_wm1_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_lambert_wm1_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_lambert_wm1, T, bin_float_types) +{ + RandomSample rng{1, 3}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::lambert_wm1(x_ad); + auto y_expect = boost::math::lambert_wm1(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_wm1_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_wm1_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..1d1bea009d --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_wm1_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_lambert_wm1_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_lambert_wm1, T, multiprecision_float_types) +{ + RandomSample rng{1, 3}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::lambert_wm1(x_ad); + auto y_expect = boost::math::lambert_wm1(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_wm1_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_wm1_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..05ec91bd41 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_wm1_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_lambert_wm1_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_lambert_wm1, T, multiprecision_float_types) + { + RandomSample rng{ 1, 3 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::lambert_wm1(x_ad); + auto y_expect = boost::math::lambert_wm1(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_wm1_prime_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_wm1_prime_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..cfe031709d --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_wm1_prime_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_lambert_wm1_prime_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_lambert_wm1_prime, T, bin_float_types) + { + RandomSample rng{ -0.3, -0.1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::lambert_wm1_prime(x_ad); + auto y_expect = boost::math::lambert_wm1_prime(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_wm1_prime_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_wm1_prime_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..81f3dfc2e0 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_wm1_prime_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_lambert_wm1_prime_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_lambert_wm1_prime, T, bin_float_types) +{ + RandomSample rng{-0.3, -0.1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::lambert_wm1_prime(x_ad); + auto y_expect = boost::math::lambert_wm1_prime(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_wm1_prime_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_wm1_prime_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..b40db60b7b --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_wm1_prime_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_lambert_wm1_prime_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_lambert_wm1_prime, T, multiprecision_float_types) +{ + RandomSample rng{-0.3, -0.1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::lambert_wm1_prime(x_ad); + auto y_expect = boost::math::lambert_wm1_prime(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_wm1_prime_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_wm1_prime_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..532f56287c --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_wm1_prime_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_lambert_wm1_prime_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_lambert_wm1_prime, T, multiprecision_float_types) + { + RandomSample rng{ -0.3, -0.1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::lambert_wm1_prime(x_ad); + auto y_expect = boost::math::lambert_wm1_prime(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_wm1_prime_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_wm1_prime_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..2ec1ff5a7b --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_wm1_prime_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_lambert_wm1_prime_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_lambert_wm1_prime, T, bin_float_types) + { + RandomSample rng{ -0.3, -0.1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::lambert_wm1_prime(x_ad); + auto y_expect = boost::math::lambert_wm1_prime(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_wm1_prime_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_wm1_prime_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..14a623854a --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_wm1_prime_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_lambert_wm1_prime_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_lambert_wm1_prime, T, bin_float_types) +{ + RandomSample rng{-0.3, -0.1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::lambert_wm1_prime(x_ad); + auto y_expect = boost::math::lambert_wm1_prime(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_wm1_prime_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_wm1_prime_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..d6c881448d --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_wm1_prime_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_lambert_wm1_prime_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_lambert_wm1_prime, T, multiprecision_float_types) +{ + RandomSample rng{-0.3, -0.1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::lambert_wm1_prime(x_ad); + auto y_expect = boost::math::lambert_wm1_prime(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_wm1_prime_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_wm1_prime_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..02b54aaa1a --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/lambert_w/test_reverse_mode_autodiff_lambert_wm1_prime_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_lambert_wm1_prime_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_lambert_wm1_prime, T, multiprecision_float_types) + { + RandomSample rng{ -0.3, -0.1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::lambert_wm1_prime(x_ad); + auto y_expect = boost::math::lambert_wm1_prime(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_p_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_p_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..19d0521aba --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_p_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_legendre_p_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_legendre_p, T, bin_float_types) + { + RandomSample rng{ -1, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::legendre_p(2,x_ad); + auto y_expect = boost::math::legendre_p(2,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_p_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_p_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..73e1a761b5 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_p_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_legendre_p_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_legendre_p, T, bin_float_types) +{ + RandomSample rng{-1, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::legendre_p(2,x_ad); + auto y_expect = boost::math::legendre_p(2,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_p_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_p_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..a7f2db2bb3 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_p_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_legendre_p_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_legendre_p, T, multiprecision_float_types) +{ + RandomSample rng{-1, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::legendre_p(2,x_ad); + auto y_expect = boost::math::legendre_p(2,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_p_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_p_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..344dd2eecf --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_p_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_legendre_p_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_legendre_p, T, multiprecision_float_types) + { + RandomSample rng{ -1, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::legendre_p(2,x_ad); + auto y_expect = boost::math::legendre_p(2,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_p_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_p_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..b830d9c9fa --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_p_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_legendre_p_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_legendre_p, T, bin_float_types) + { + RandomSample rng{ -1, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::legendre_p(2,x_ad); + auto y_expect = boost::math::legendre_p(2,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_p_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_p_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..a11dd396ff --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_p_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_legendre_p_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_legendre_p, T, bin_float_types) +{ + RandomSample rng{-1, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::legendre_p(2,x_ad); + auto y_expect = boost::math::legendre_p(2,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_p_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_p_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..f85a0fd4f1 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_p_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_legendre_p_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_legendre_p, T, multiprecision_float_types) +{ + RandomSample rng{-1, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::legendre_p(2,x_ad); + auto y_expect = boost::math::legendre_p(2,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_p_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_p_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..291dbd5c02 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_p_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_legendre_p_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_legendre_p, T, multiprecision_float_types) + { + RandomSample rng{ -1, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::legendre_p(2,x_ad); + auto y_expect = boost::math::legendre_p(2,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_p_prime_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_p_prime_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..55605245d0 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_p_prime_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_legendre_p_prime_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_legendre_p_prime, T, bin_float_types) + { + RandomSample rng{ -1, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::legendre_p_prime(2,x_ad); + auto y_expect = boost::math::legendre_p_prime(2,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_p_prime_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_p_prime_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..fbd23434dd --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_p_prime_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_legendre_p_prime_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_legendre_p_prime, T, bin_float_types) +{ + RandomSample rng{-1, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::legendre_p_prime(2,x_ad); + auto y_expect = boost::math::legendre_p_prime(2,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_p_prime_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_p_prime_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..cc5b3dc085 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_p_prime_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_legendre_p_prime_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_legendre_p_prime, T, multiprecision_float_types) +{ + RandomSample rng{-1, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::legendre_p_prime(2,x_ad); + auto y_expect = boost::math::legendre_p_prime(2,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_p_prime_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_p_prime_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..ca9a61b2be --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_p_prime_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_legendre_p_prime_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_legendre_p_prime, T, multiprecision_float_types) + { + RandomSample rng{ -1, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::legendre_p_prime(2,x_ad); + auto y_expect = boost::math::legendre_p_prime(2,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_p_prime_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_p_prime_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..09d5564998 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_p_prime_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_legendre_p_prime_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_legendre_p_prime, T, bin_float_types) + { + RandomSample rng{ -1, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::legendre_p_prime(2,x_ad); + auto y_expect = boost::math::legendre_p_prime(2,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_p_prime_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_p_prime_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..d4296d112f --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_p_prime_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_legendre_p_prime_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_legendre_p_prime, T, bin_float_types) +{ + RandomSample rng{-1, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::legendre_p_prime(2,x_ad); + auto y_expect = boost::math::legendre_p_prime(2,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_p_prime_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_p_prime_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..9fd9e707b9 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_p_prime_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_legendre_p_prime_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_legendre_p_prime, T, multiprecision_float_types) +{ + RandomSample rng{-1, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::legendre_p_prime(2,x_ad); + auto y_expect = boost::math::legendre_p_prime(2,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_p_prime_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_p_prime_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..98baf3b10d --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_p_prime_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_legendre_p_prime_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_legendre_p_prime, T, multiprecision_float_types) + { + RandomSample rng{ -1, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::legendre_p_prime(2,x_ad); + auto y_expect = boost::math::legendre_p_prime(2,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_q_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_q_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..a85e73d1e4 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_q_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_legendre_q_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_legendre_q, T, bin_float_types) + { + RandomSample rng{ -1, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::legendre_q(3,x_ad); + auto y_expect = boost::math::legendre_q(3,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_q_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_q_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..fed50b9e1f --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_q_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_legendre_q_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_legendre_q, T, bin_float_types) +{ + RandomSample rng{-1, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::legendre_q(3,x_ad); + auto y_expect = boost::math::legendre_q(3,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_q_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_q_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..d70c86a050 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_q_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_legendre_q_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_legendre_q, T, multiprecision_float_types) +{ + RandomSample rng{-1, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::legendre_q(3,x_ad); + auto y_expect = boost::math::legendre_q(3,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_q_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_q_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..162268e71e --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_q_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_legendre_q_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_legendre_q, T, multiprecision_float_types) + { + RandomSample rng{ -1, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::legendre_q(3,x_ad); + auto y_expect = boost::math::legendre_q(3,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_q_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_q_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..39d0b2ff39 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_q_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_legendre_q_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_legendre_q, T, bin_float_types) + { + RandomSample rng{ -1, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::legendre_q(3,x_ad); + auto y_expect = boost::math::legendre_q(3,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_q_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_q_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..355adf46ce --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_q_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_legendre_q_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_legendre_q, T, bin_float_types) +{ + RandomSample rng{-1, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::legendre_q(3,x_ad); + auto y_expect = boost::math::legendre_q(3,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_q_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_q_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..1dbee469c1 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_q_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_legendre_q_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_legendre_q, T, multiprecision_float_types) +{ + RandomSample rng{-1, 1}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::legendre_q(3,x_ad); + auto y_expect = boost::math::legendre_q(3,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_q_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_q_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..1faed8f753 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/legendre/test_reverse_mode_autodiff_legendre_q_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_legendre_q_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_legendre_q, T, multiprecision_float_types) + { + RandomSample rng{ -1, 1 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::legendre_q(3,x_ad); + auto y_expect = boost::math::legendre_q(3,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/owens_t/test_reverse_mode_autodiff_owens_t_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/owens_t/test_reverse_mode_autodiff_owens_t_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..844f9d98fd --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/owens_t/test_reverse_mode_autodiff_owens_t_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_owens_t_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_owens_t, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::owens_t(x_ad,x_ad); + auto y_expect = boost::math::owens_t(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/owens_t/test_reverse_mode_autodiff_owens_t_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/owens_t/test_reverse_mode_autodiff_owens_t_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..e8536f7ad2 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/owens_t/test_reverse_mode_autodiff_owens_t_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_owens_t_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_owens_t, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::owens_t(x_ad,x_ad); + auto y_expect = boost::math::owens_t(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/owens_t/test_reverse_mode_autodiff_owens_t_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/owens_t/test_reverse_mode_autodiff_owens_t_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..07a0ffe874 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/owens_t/test_reverse_mode_autodiff_owens_t_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_owens_t_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_owens_t, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::owens_t(x_ad,x_ad); + auto y_expect = boost::math::owens_t(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/owens_t/test_reverse_mode_autodiff_owens_t_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/owens_t/test_reverse_mode_autodiff_owens_t_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..032e26cb8c --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/owens_t/test_reverse_mode_autodiff_owens_t_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_owens_t_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_owens_t, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::owens_t(x_ad,x_ad); + auto y_expect = boost::math::owens_t(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/owens_t/test_reverse_mode_autodiff_owens_t_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/owens_t/test_reverse_mode_autodiff_owens_t_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..e9e1536cb8 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/owens_t/test_reverse_mode_autodiff_owens_t_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_owens_t_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_owens_t, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::owens_t(x_ad,x_ad); + auto y_expect = boost::math::owens_t(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/owens_t/test_reverse_mode_autodiff_owens_t_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/owens_t/test_reverse_mode_autodiff_owens_t_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..ac3eb60a52 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/owens_t/test_reverse_mode_autodiff_owens_t_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_owens_t_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_owens_t, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::owens_t(x_ad,x_ad); + auto y_expect = boost::math::owens_t(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/owens_t/test_reverse_mode_autodiff_owens_t_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/owens_t/test_reverse_mode_autodiff_owens_t_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..a2ab589849 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/owens_t/test_reverse_mode_autodiff_owens_t_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_owens_t_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_owens_t, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::owens_t(x_ad,x_ad); + auto y_expect = boost::math::owens_t(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/owens_t/test_reverse_mode_autodiff_owens_t_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/owens_t/test_reverse_mode_autodiff_owens_t_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..2a8ecc7c09 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/owens_t/test_reverse_mode_autodiff_owens_t_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_owens_t_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_owens_t, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::owens_t(x_ad,x_ad); + auto y_expect = boost::math::owens_t(x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/riemann_zeta/test_reverse_mode_autodiff_zeta_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/riemann_zeta/test_reverse_mode_autodiff_zeta_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..b1d495f102 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/riemann_zeta/test_reverse_mode_autodiff_zeta_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_zeta_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_zeta, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::zeta(x_ad); + auto y_expect = boost::math::zeta(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/riemann_zeta/test_reverse_mode_autodiff_zeta_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/riemann_zeta/test_reverse_mode_autodiff_zeta_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..4b3235bc0d --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/riemann_zeta/test_reverse_mode_autodiff_zeta_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_zeta_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_zeta, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::zeta(x_ad); + auto y_expect = boost::math::zeta(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/riemann_zeta/test_reverse_mode_autodiff_zeta_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/riemann_zeta/test_reverse_mode_autodiff_zeta_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..15ed1222af --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/riemann_zeta/test_reverse_mode_autodiff_zeta_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_zeta_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_zeta, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::zeta(x_ad); + auto y_expect = boost::math::zeta(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/riemann_zeta/test_reverse_mode_autodiff_zeta_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/riemann_zeta/test_reverse_mode_autodiff_zeta_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..e742d7dd9b --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/riemann_zeta/test_reverse_mode_autodiff_zeta_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_zeta_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_zeta, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::zeta(x_ad); + auto y_expect = boost::math::zeta(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/riemann_zeta/test_reverse_mode_autodiff_zeta_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/riemann_zeta/test_reverse_mode_autodiff_zeta_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..06d92a900e --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/riemann_zeta/test_reverse_mode_autodiff_zeta_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_zeta_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_zeta, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::zeta(x_ad); + auto y_expect = boost::math::zeta(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/riemann_zeta/test_reverse_mode_autodiff_zeta_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/riemann_zeta/test_reverse_mode_autodiff_zeta_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..8c3668a69f --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/riemann_zeta/test_reverse_mode_autodiff_zeta_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_zeta_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_zeta, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::zeta(x_ad); + auto y_expect = boost::math::zeta(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/riemann_zeta/test_reverse_mode_autodiff_zeta_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/riemann_zeta/test_reverse_mode_autodiff_zeta_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..ea3310c113 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/riemann_zeta/test_reverse_mode_autodiff_zeta_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_zeta_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_zeta, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::zeta(x_ad); + auto y_expect = boost::math::zeta(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/riemann_zeta/test_reverse_mode_autodiff_zeta_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/riemann_zeta/test_reverse_mode_autodiff_zeta_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..22e1fd443e --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/riemann_zeta/test_reverse_mode_autodiff_zeta_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_zeta_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_zeta, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::zeta(x_ad); + auto y_expect = boost::math::zeta(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/sinc_pi/test_reverse_mode_autodiff_sinc_pi_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/sinc_pi/test_reverse_mode_autodiff_sinc_pi_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..4848cf87fd --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/sinc_pi/test_reverse_mode_autodiff_sinc_pi_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_sinc_pi_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_sinc_pi, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sinc_pi(x_ad); + auto y_expect = boost::math::sinc_pi(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/sinc_pi/test_reverse_mode_autodiff_sinc_pi_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/sinc_pi/test_reverse_mode_autodiff_sinc_pi_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..78bb1918e0 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/sinc_pi/test_reverse_mode_autodiff_sinc_pi_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_sinc_pi_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_sinc_pi, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sinc_pi(x_ad); + auto y_expect = boost::math::sinc_pi(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/sinc_pi/test_reverse_mode_autodiff_sinc_pi_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/sinc_pi/test_reverse_mode_autodiff_sinc_pi_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..b146fa109a --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/sinc_pi/test_reverse_mode_autodiff_sinc_pi_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_sinc_pi_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_sinc_pi, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sinc_pi(x_ad); + auto y_expect = boost::math::sinc_pi(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/sinc_pi/test_reverse_mode_autodiff_sinc_pi_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/sinc_pi/test_reverse_mode_autodiff_sinc_pi_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..a5992212e0 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/sinc_pi/test_reverse_mode_autodiff_sinc_pi_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_sinc_pi_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_sinc_pi, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sinc_pi(x_ad); + auto y_expect = boost::math::sinc_pi(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/sinc_pi/test_reverse_mode_autodiff_sinc_pi_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/sinc_pi/test_reverse_mode_autodiff_sinc_pi_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..f2f4ff3598 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/sinc_pi/test_reverse_mode_autodiff_sinc_pi_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_sinc_pi_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_sinc_pi, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sinc_pi(x_ad); + auto y_expect = boost::math::sinc_pi(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/sinc_pi/test_reverse_mode_autodiff_sinc_pi_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/sinc_pi/test_reverse_mode_autodiff_sinc_pi_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..83f8aec1ff --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/sinc_pi/test_reverse_mode_autodiff_sinc_pi_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_sinc_pi_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_sinc_pi, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sinc_pi(x_ad); + auto y_expect = boost::math::sinc_pi(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/sinc_pi/test_reverse_mode_autodiff_sinc_pi_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/sinc_pi/test_reverse_mode_autodiff_sinc_pi_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..520b31dd58 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/sinc_pi/test_reverse_mode_autodiff_sinc_pi_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_sinc_pi_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_sinc_pi, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sinc_pi(x_ad); + auto y_expect = boost::math::sinc_pi(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/sinc_pi/test_reverse_mode_autodiff_sinc_pi_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/sinc_pi/test_reverse_mode_autodiff_sinc_pi_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..f736982117 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/sinc_pi/test_reverse_mode_autodiff_sinc_pi_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_sinc_pi_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_sinc_pi, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sinc_pi(x_ad); + auto y_expect = boost::math::sinc_pi(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/sinhc_pi/test_reverse_mode_autodiff_sinhc_pi_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/sinhc_pi/test_reverse_mode_autodiff_sinhc_pi_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..42c2b4ae5d --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/sinhc_pi/test_reverse_mode_autodiff_sinhc_pi_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_sinhc_pi_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_sinhc_pi, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sinhc_pi(x_ad); + auto y_expect = boost::math::sinhc_pi(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/sinhc_pi/test_reverse_mode_autodiff_sinhc_pi_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/sinhc_pi/test_reverse_mode_autodiff_sinhc_pi_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..40e7d3b6cb --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/sinhc_pi/test_reverse_mode_autodiff_sinhc_pi_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_sinhc_pi_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_sinhc_pi, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sinhc_pi(x_ad); + auto y_expect = boost::math::sinhc_pi(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/sinhc_pi/test_reverse_mode_autodiff_sinhc_pi_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/sinhc_pi/test_reverse_mode_autodiff_sinhc_pi_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..f6d51f9130 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/sinhc_pi/test_reverse_mode_autodiff_sinhc_pi_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_sinhc_pi_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_sinhc_pi, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sinhc_pi(x_ad); + auto y_expect = boost::math::sinhc_pi(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/sinhc_pi/test_reverse_mode_autodiff_sinhc_pi_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/sinhc_pi/test_reverse_mode_autodiff_sinhc_pi_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..7f1e148517 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/sinhc_pi/test_reverse_mode_autodiff_sinhc_pi_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_sinhc_pi_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_sinhc_pi, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sinhc_pi(x_ad); + auto y_expect = boost::math::sinhc_pi(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/sinhc_pi/test_reverse_mode_autodiff_sinhc_pi_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/sinhc_pi/test_reverse_mode_autodiff_sinhc_pi_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..c6d7470485 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/sinhc_pi/test_reverse_mode_autodiff_sinhc_pi_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_sinhc_pi_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_sinhc_pi, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sinhc_pi(x_ad); + auto y_expect = boost::math::sinhc_pi(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/sinhc_pi/test_reverse_mode_autodiff_sinhc_pi_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/sinhc_pi/test_reverse_mode_autodiff_sinhc_pi_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..225e653615 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/sinhc_pi/test_reverse_mode_autodiff_sinhc_pi_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_sinhc_pi_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_sinhc_pi, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sinhc_pi(x_ad); + auto y_expect = boost::math::sinhc_pi(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/sinhc_pi/test_reverse_mode_autodiff_sinhc_pi_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/sinhc_pi/test_reverse_mode_autodiff_sinhc_pi_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..eabf2c9fba --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/sinhc_pi/test_reverse_mode_autodiff_sinhc_pi_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_sinhc_pi_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_sinhc_pi, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sinhc_pi(x_ad); + auto y_expect = boost::math::sinhc_pi(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/sinhc_pi/test_reverse_mode_autodiff_sinhc_pi_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/sinhc_pi/test_reverse_mode_autodiff_sinhc_pi_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..bfd1b01199 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/sinhc_pi/test_reverse_mode_autodiff_sinhc_pi_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_sinhc_pi_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_sinhc_pi, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::sinhc_pi(x_ad); + auto y_expect = boost::math::sinhc_pi(x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/specfun_list.txt b/test/test_reverse_mode_autodiff_special_functions_compile/specfun_list.txt new file mode 100644 index 0000000000..c260f44d6c --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/specfun_list.txt @@ -0,0 +1,126 @@ +# 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) +# group function test-domain-min test-domain-max +gamma tgamma(arg) -3 5 +gamma tgamma1pm1(arg) -3 5 +gamma lgamma(arg) -10 10 +gamma digamma(arg) -5 5 +gamma trigamma(arg) -5 5 +gamma polygamma(1,arg) -5 5 +gamma tgamma_ratio(arg,arg) 0 5 +gamma tgamma_delta_ratio(arg,arg) 0 5 +gamma gamma_p(arg,arg) 0 5 +gamma gamma_q(arg,arg) 0 10 +gamma tgamma_lower(arg,arg) 0 10 +factorial rising_factorial(arg,3) -10 10 +factorial falling_factorial(arg,3) -10 10 +beta beta(arg,arg) 0 10 +beta ibeta(arg,arg,arg) 0.01 1 +beta ibetac(arg,arg,arg) 0.01 1 +beta betac(arg,arg,arg) 0.01 1 +beta ibeta_inv(0.1,arg,0.5) 0.01 1 +beta ibetac_inv(arg,arg,arg) 0.01 1 +beta ibeta_inva(arg,arg,arg) 0.01 1 +beta ibetac_inva(arg,arg,arg) 0.01 1 +beta ibeta_invb(arg,arg,arg) 0.01 1 +beta ibetac_invb(arg,arg,arg) 0.01 1 +beta ibeta_derivative(arg,arg,arg) 0.01 1 +legendre legendre_p(2,arg) -1 1 +legendre legendre_p_prime(2,arg) -1 1 +legendre legendre_q(3,arg) -1 1 +laguerre laguerre(1,3,arg) -10 10 +hermite hermite(2,arg) -10 10 +chebyshev chebyshev_t(1,arg) -10 10 +chebyshev chebyshev_u(2,arg) -10 10 +chebyshev chebyshev_t_prime(3,arg) -10 10 +spherical_harmonics spherical_harmonic(3,3,arg,arg) -10 10 +spherical_harmonics spherical_harmonic_r(2,5,arg,arg) -10 10 +spherical_harmonics spherical_harmonic_i(2,5,arg,arg) -10 10 +gegenbauer gegenbauer(2,1,arg) -10 10 +gegenbauer gegenbauer_prime(3,1,arg) -10 10 +gegenbauer gegenbauer_derivative(3,1,arg,2) -10 10 +jacobi jacobi(2,arg,arg,arg) -10 10 +jacobi jacobi_derivative(2,arg,arg,arg,1) -10 10 +jacobi jacobi_prime(3,arg,arg,arg) -10 10 +jacobi jacobi_double_prime(2,arg,arg,arg) -10 10 +bessel cyl_bessel_j(0.25,arg) 0 10 +bessel cyl_neumann(arg,arg) 0 10 +bessel cyl_bessel_i(0.25,arg) 0 10 +bessel cyl_bessel_k(arg,arg) 0 10 +bessel sph_bessel(2,arg) 0 10 +bessel sph_neumann(1,arg) 0 10 +bessel cyl_bessel_j_prime(arg,arg) 0 10 +bessel cyl_neumann_prime(arg,arg) 0 10 +bessel cyl_bessel_i_prime(arg,arg) 0 10 +bessel cyl_bessel_k_prime(arg,arg) 0 10 +bessel sph_bessel_prime(arg,arg) 0 10 +bessel sph_neumann_prime(arg,arg) 0 10 +hankel cyl_hankel_1(arg,arg) -10 10 +hankel cyl_hankel_2(arg,arg) -10 10 +hankel sph_hankel_1(arg,arg) -10 10 +hankel sph_hankel_2(arg,arg) -10 10 +airy airy_ai(arg) -10 10 +airy airy_bi(arg) -10 10 +airy airy_ai_prime(arg) -1 1 +airy airy_bi_prime(arg) -5 0 +elliptic_integrals ellint_rf(arg,arg,arg) 0 10 +elliptic_integrals ellint_rd(arg,arg,arg) 0 10 +elliptic_integrals ellint_rj(arg,arg,arg,arg) 0 10 +elliptic_integrals ellint_rc(arg,arg) 0 10 +elliptic_integrals ellint_rg(arg,arg,arg) 0 10 +elliptic_integrals ellint_1(arg,arg) 0.5 1 +elliptic_integrals ellint_2(arg,arg) 0.5 1 +elliptic_integrals ellint_3(arg,arg,arg) 0.5 1 +elliptic_integrals ellint_d(arg,arg) 0.5 1 +jacobi_zeta jacobi_zeta(0,arg) -10 10 +heuman_lambda heuman_lambda(0,arg) 0.1 1.0 +jacobi_elliptic jacobi_cd(0.25,arg) -10 10 +jacobi_elliptic jacobi_cn(0.25,arg) -10 10 +jacobi_elliptic jacobi_cs(0.25,arg) -10 10 +jacobi_elliptic jacobi_dc(0.25,arg) -10 10 +jacobi_elliptic jacobi_dn(0.25,arg) -10 10 +jacobi_elliptic jacobi_ds(0.25,arg) -10 10 +jacobi_elliptic jacobi_nc(0.25,arg) -10 10 +jacobi_elliptic jacobi_nd(0.25,arg) -10 10 +jacobi_elliptic jacobi_ns(0.25,arg) -10 10 +jacobi_elliptic jacobi_sc(0.25,arg) -10 10 +jacobi_elliptic jacobi_sd(0.25,arg) -10 10 +jacobi_elliptic jacobi_sn(0.25,arg) -10 10 +jacobi_theta jacobi_theta1(arg,0.5) -10 10 +jacobi_theta jacobi_theta1tau(arg,0.5) -10 10 +jacobi_theta jacobi_theta2(arg,0.5) -10 10 +jacobi_theta jacobi_theta1tau(arg,0.5) -10 10 +jacobi_theta jacobi_theta3(arg,0.5) -10 10 +jacobi_theta jacobi_theta3tau(arg,0.5) -10 10 +jacobi_theta jacobi_theta3m1(arg,0.5) -10 10 +jacobi_theta jacobi_theta3m1tau(arg,0.5) -10 10 +jacobi_theta jacobi_theta4(arg,0.5) -10 10 +jacobi_theta jacobi_theta4tau(arg,0.5) -10 10 +jacobi_theta jacobi_theta4m1(arg,0.5) -10 10 +jacobi_theta jacobi_theta4m1tau(arg,0.5) -10 10 +lambert_w lambert_w0(arg) 0 3 +lambert_w lambert_wm1(arg) 1 3 +lambert_w lambert_w0_prime(arg) 0 1 +lambert_w lambert_wm1_prime(arg) -0.3 -0.1 +riemann_zeta zeta(arg) -10 10 +expint expint(arg) -10 10 +hypergeometric hypergeometric_1F0(arg,arg) -1 1 +hypergeometric hypergeometric_0F1(1,arg) -1 1 +hypergeometric hypergeometric_2F0(-1,1,arg) -1 1 +hypergeometric hypergeometric_1F1(arg,arg,arg) -1 1 +basic_funcs sin_pi(arg) -10 10 +basic_funcs cos_pi(arg) -10 10 +basic_funcs log1p(arg) -1 10 +basic_funcs expm1(arg) -10 10 +basic_funcs cbrt(arg) 0 10 +basic_funcs sqrt1pm1(arg) 5 10 +basic_funcs powm1(arg,arg) 5 10 +basic_funcs hypot(arg,arg) 1 10 +basic_funcs rsqrt(arg) 1 10 +basic_funcs logaddexp(arg,arg) -10 10 +basic_funcs logsumexp((arg,arg) -10 10 +sinc_pi sinc_pi(arg) -10 10 +sinhc_pi sinhc_pi(arg) -10 10 +owens_t owens_t(arg,arg) -10 10 diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_shperical_harmonic_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_shperical_harmonic_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..051384c381 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_shperical_harmonic_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_shperical_harmonic_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_shperical_harmonic, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::shperical_harmonic(3,3,x_ad,x_ad); + auto y_expect = boost::math::shperical_harmonic(3,3,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_shperical_harmonic_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_shperical_harmonic_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..ad728de99f --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_shperical_harmonic_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_shperical_harmonic_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_shperical_harmonic, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::shperical_harmonic(3,3,x_ad,x_ad); + auto y_expect = boost::math::shperical_harmonic(3,3,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_shperical_harmonic_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_shperical_harmonic_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..d4d9b33a81 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_shperical_harmonic_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_shperical_harmonic_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_shperical_harmonic, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::shperical_harmonic(3,3,x_ad,x_ad); + auto y_expect = boost::math::shperical_harmonic(3,3,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_shperical_harmonic_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_shperical_harmonic_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..51c5a56bcf --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_shperical_harmonic_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_shperical_harmonic_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_shperical_harmonic, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::shperical_harmonic(3,3,x_ad,x_ad); + auto y_expect = boost::math::shperical_harmonic(3,3,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..9af25f823c --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_spherical_harmonic_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_spherical_harmonic, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::spherical_harmonic(3,3,x_ad,x_ad); + auto y_expect = boost::math::spherical_harmonic(3,3,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..afbe9c777a --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_spherical_harmonic_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_spherical_harmonic, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::spherical_harmonic(3,3,x_ad,x_ad); + auto y_expect = boost::math::spherical_harmonic(3,3,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..13458c12fa --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_spherical_harmonic_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_spherical_harmonic, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::spherical_harmonic(3,3,x_ad,x_ad); + auto y_expect = boost::math::spherical_harmonic(3,3,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..7e53b710e7 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_spherical_harmonic_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_spherical_harmonic, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::spherical_harmonic(3,3,x_ad,x_ad); + auto y_expect = boost::math::spherical_harmonic(3,3,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..52b0a2992d --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_spherical_harmonic_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_spherical_harmonic, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::spherical_harmonic(3,3,x_ad,x_ad); + auto y_expect = boost::math::spherical_harmonic(3,3,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..3d1c2c3fc6 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_spherical_harmonic_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_spherical_harmonic, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::spherical_harmonic(3,3,x_ad,x_ad); + auto y_expect = boost::math::spherical_harmonic(3,3,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..e587c62e62 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_spherical_harmonic_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_spherical_harmonic, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::spherical_harmonic(3,3,x_ad,x_ad); + auto y_expect = boost::math::spherical_harmonic(3,3,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..d33d0ae5e4 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_spherical_harmonic_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_spherical_harmonic, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::spherical_harmonic(3,3,x_ad,x_ad); + auto y_expect = boost::math::spherical_harmonic(3,3,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_i_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_i_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..8a10218cb2 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_i_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_spherical_harmonic_i_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_spherical_harmonic_i, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::spherical_harmonic_i(2,5,x_ad,x_ad); + auto y_expect = boost::math::spherical_harmonic_i(2,5,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_i_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_i_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..c47d77d8a6 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_i_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_spherical_harmonic_i_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_spherical_harmonic_i, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::spherical_harmonic_i(2,5,x_ad,x_ad); + auto y_expect = boost::math::spherical_harmonic_i(2,5,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_i_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_i_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..fff9abd2c7 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_i_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_spherical_harmonic_i_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_spherical_harmonic_i, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::spherical_harmonic_i(2,5,x_ad,x_ad); + auto y_expect = boost::math::spherical_harmonic_i(2,5,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_i_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_i_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..269292008d --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_i_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_spherical_harmonic_i_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_spherical_harmonic_i, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::spherical_harmonic_i(2,5,x_ad,x_ad); + auto y_expect = boost::math::spherical_harmonic_i(2,5,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_i_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_i_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..58ef33b44b --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_i_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_spherical_harmonic_i_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_spherical_harmonic_i, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::spherical_harmonic_i(2,5,x_ad,x_ad); + auto y_expect = boost::math::spherical_harmonic_i(2,5,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_i_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_i_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..a27081cf15 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_i_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_spherical_harmonic_i_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_spherical_harmonic_i, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::spherical_harmonic_i(2,5,x_ad,x_ad); + auto y_expect = boost::math::spherical_harmonic_i(2,5,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_i_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_i_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..b3c51c8d4f --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_i_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_spherical_harmonic_i_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_spherical_harmonic_i, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::spherical_harmonic_i(2,5,x_ad,x_ad); + auto y_expect = boost::math::spherical_harmonic_i(2,5,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_i_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_i_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..af95a9e91b --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_i_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_spherical_harmonic_i_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_spherical_harmonic_i, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::spherical_harmonic_i(2,5,x_ad,x_ad); + auto y_expect = boost::math::spherical_harmonic_i(2,5,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_r_compile_test_ET_OFF_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_r_compile_test_ET_OFF_bin_float_types.cpp new file mode 100644 index 0000000000..2fbf4a5cc7 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_r_compile_test_ET_OFF_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_spherical_harmonic_r_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_spherical_harmonic_r, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::spherical_harmonic_r(2,5,x_ad,x_ad); + auto y_expect = boost::math::spherical_harmonic_r(2,5,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_r_compile_test_ET_OFF_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_r_compile_test_ET_OFF_cpp_types.cpp new file mode 100644 index 0000000000..03245dc4c2 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_r_compile_test_ET_OFF_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_spherical_harmonic_r_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_spherical_harmonic_r, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::spherical_harmonic_r(2,5,x_ad,x_ad); + auto y_expect = boost::math::spherical_harmonic_r(2,5,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_r_compile_test_ET_OFF_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_r_compile_test_ET_OFF_mp_types.cpp new file mode 100644 index 0000000000..6131c1dc34 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_r_compile_test_ET_OFF_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_OFF +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_spherical_harmonic_r_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_spherical_harmonic_r, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::spherical_harmonic_r(2,5,x_ad,x_ad); + auto y_expect = boost::math::spherical_harmonic_r(2,5,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_r_compile_test_ET_OFF_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_r_compile_test_ET_OFF_multiprecision_float_types.cpp new file mode 100644 index 0000000000..4028a9d8ab --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_r_compile_test_ET_OFF_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_OFF + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_spherical_harmonic_r_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_spherical_harmonic_r, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::spherical_harmonic_r(2,5,x_ad,x_ad); + auto y_expect = boost::math::spherical_harmonic_r(2,5,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_r_compile_test_ET_ON_bin_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_r_compile_test_ET_ON_bin_float_types.cpp new file mode 100644 index 0000000000..991ceb835f --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_r_compile_test_ET_ON_bin_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_spherical_harmonic_r_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_spherical_harmonic_r, T, bin_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::spherical_harmonic_r(2,5,x_ad,x_ad); + auto y_expect = boost::math::spherical_harmonic_r(2,5,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_r_compile_test_ET_ON_cpp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_r_compile_test_ET_ON_cpp_types.cpp new file mode 100644 index 0000000000..df88807701 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_r_compile_test_ET_ON_cpp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_spherical_harmonic_r_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_spherical_harmonic_r, T, bin_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::spherical_harmonic_r(2,5,x_ad,x_ad); + auto y_expect = boost::math::spherical_harmonic_r(2,5,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_r_compile_test_ET_ON_mp_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_r_compile_test_ET_ON_mp_types.cpp new file mode 100644 index 0000000000..9dd1e79337 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_r_compile_test_ET_ON_mp_types.cpp @@ -0,0 +1,31 @@ +// Copyright Maksym Zhelyeznyakov 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) +// +// This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh +// DO NOT EDIT MANUALLY + +#define BOOST_MATH_REVERSE_MODE_ET_ON +#include +#include +#include +#include +#include + +BOOST_AUTO_TEST_SUITE(test_spherical_harmonic_r_compiles) + +using namespace rdiff; + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_spherical_harmonic_r, T, multiprecision_float_types) +{ + RandomSample rng{-10, 10}; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::spherical_harmonic_r(2,5,x_ad,x_ad); + auto y_expect = boost::math::spherical_harmonic_r(2,5,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); +} +BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_r_compile_test_ET_ON_multiprecision_float_types.cpp b/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_r_compile_test_ET_ON_multiprecision_float_types.cpp new file mode 100644 index 0000000000..9eb0f98d80 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/spherical_harmonics/test_reverse_mode_autodiff_spherical_harmonic_r_compile_test_ET_ON_multiprecision_float_types.cpp @@ -0,0 +1,33 @@ + + // Copyright Maksym Zhelyeznyakov 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) + // + // This file was generated automatically with math/tests/autogen_rvar_specfun_tests.sh + // DO NOT EDIT MANUALLY + + #define BOOST_MATH_REVERSE_MODE_ET_ON + #include + #include + #include + #include + #include + + BOOST_AUTO_TEST_SUITE(test_spherical_harmonic_r_compiles) + + using namespace rdiff; + + BOOST_AUTO_TEST_CASE_TEMPLATE(test_spherical_harmonic_r, T, multiprecision_float_types) + { + RandomSample rng{ -10, 10 + }; + T x = rng.next(); + + rvar x_ad = x; + auto y = boost::math::spherical_harmonic_r(2,5,x_ad,x_ad); + auto y_expect = boost::math::spherical_harmonic_r(2,5,x,x); + BOOST_CHECK_CLOSE(y.item(), y_expect, 1000*boost_close_tol()); + } + BOOST_AUTO_TEST_SUITE_END() + diff --git a/test/test_reverse_mode_autodiff_special_functions_compile/update_docs_and_jamfile.py b/test/test_reverse_mode_autodiff_special_functions_compile/update_docs_and_jamfile.py new file mode 100755 index 0000000000..31480e0df0 --- /dev/null +++ b/test/test_reverse_mode_autodiff_special_functions_compile/update_docs_and_jamfile.py @@ -0,0 +1,42 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# Copyright Maksym Zhelyeznyakov 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) +# +import sys, os, subprocess +import logging +import re +from pathlib import Path + + +TEST_FOLDER="./" +SPECFUN_LIST=f"{TEST_FOLDER}specfun_list.txt" +CC="g++" +CPPFLAGS="--std=c++14" +CWD=os.getcwd() +BOOST_ROOT_DIR=f"{CWD}/../../../../" +BOOST_MATH_DIR=f"{BOOST_ROOT_DIR}/libs/math/" +BOOST_MATH_TEST_DIR=f"{BOOST_MATH_DIR}/test/" +INCLUDE_FLAGS=f"-I{BOOST_MATH_DIR}/include/ -I{BOOST_ROOT_DIR} -I{BOOST_MATH_TEST_DIR}" +COMPILATION_TABLE=f"{BOOST_ROOT_DIR}/libs/math/doc/differentiation/compilation_table.txt" +LOG_FILE=f"{CWD}/autogen.log" +LOG_FILE_VERBOSE=f"{CWD}/autogen_verbose.log" +JAM_COMPILE_COMMANDS_OUT="generated_jam_compile_commands.txt" +DOC_FILE = f"{CWD}/../../doc/differentiation/autodiff_reverse.qbk" + +def replace_between_markers(target_file, insert_file, + start_marker=r"\[/ BEGIN SPECFUN TABLE\]", + end_marker=r"\[/ END SPECFUN TABLE\]"): + text = Path(target_file).read_text() + replacement = Path(insert_file).read_text().rstrip("\n") + pattern = re.compile(f"{start_marker}.*?{end_marker}", re.DOTALL) + new_text = pattern.sub(f"{start_marker}\n{replacement}\n{end_marker}", text) + Path(target_file).write_text(new_text) + +if __name__=="__main__": + replace_between_markers(DOC_FILE,COMPILATION_TABLE) + replace_between_markers("../Jamfile.v2",JAM_COMPILE_COMMANDS_OUT, + start_marker="# BEGIN AUTODIFF LONG RUNNING TESTS", + end_marker="# END AUTODIFF LONG RUNNING TESTS") diff --git a/test/test_reverse_mode_autodiff_stl_support.cpp b/test/test_reverse_mode_autodiff_stl_support.cpp new file mode 100644 index 0000000000..eef947db30 --- /dev/null +++ b/test/test_reverse_mode_autodiff_stl_support.cpp @@ -0,0 +1,1032 @@ +// 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 +#include +#include + +BOOST_AUTO_TEST_SUITE(test_stl_supported_functions) + +using namespace rdiff; +BOOST_AUTO_TEST_CASE_TEMPLATE(test_fabs, T, all_float_types) +{ + RandomSample rng_neg{-10, 0}; + T x_neg_v = rng_neg.next(); + T test_fabs_neg_v = fabs(x_neg_v); + + RandomSample rng_pos{0, 10}; + T x_pos_v = rng_pos.next(); + T test_fabs_pos_v = fabs(x_pos_v); + + rvar x_neg = x_neg_v; + rvar x_pos = x_pos_v; + + rvar fabs_neg = fabs(x_neg); + rvar fabs_pos = fabs(x_pos); + + BOOST_REQUIRE_CLOSE(fabs_neg.item(), test_fabs_neg_v, boost_close_tol()); + BOOST_REQUIRE_CLOSE(fabs_pos.item(), test_fabs_pos_v, boost_close_tol()); + + gradient_tape& tape = get_active_tape(); + + tape.zero_grad(); + fabs_neg.backward(); + BOOST_REQUIRE_CLOSE(x_neg.adjoint(), -1, boost_close_tol()); + ; + + tape.zero_grad(); + fabs_pos.backward(); + BOOST_REQUIRE_CLOSE(x_pos.adjoint(), 1, boost_close_tol()); + + rvar z = fabs(x_neg * x_neg * x_neg); + tape.zero_grad(); + z.backward(); + T expected_grad = 3 * x_neg_v * x_neg_v * (-1); + BOOST_REQUIRE_CLOSE(x_neg.adjoint(), expected_grad, boost_close_tol()); + + tape.clear(); +} + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_abs, T, all_float_types) +{ + RandomSample rng_neg{-1, 0}; + T x_neg_v = rng_neg.next(); + T test_abs_neg_v = fabs(x_neg_v); + + RandomSample rng_pos{0, 1}; + T x_pos_v = rng_pos.next(); + T test_abs_pos_v = abs(x_pos_v); + + rvar x_neg = x_neg_v; + rvar x_pos = x_pos_v; + + rvar abs_neg = abs(x_neg); + rvar abs_pos = abs(x_pos); + + BOOST_REQUIRE_CLOSE(abs_neg.item(), test_abs_neg_v, boost_close_tol()); + BOOST_REQUIRE_CLOSE(abs_pos.item(), test_abs_pos_v, boost_close_tol()); + + gradient_tape& tape = get_active_tape(); + + tape.zero_grad(); + abs_neg.backward(); + BOOST_REQUIRE_CLOSE(x_neg.adjoint(), -1, boost_close_tol()); + + tape.zero_grad(); + abs_pos.backward(); + BOOST_REQUIRE_CLOSE(x_pos.adjoint(), 1, boost_close_tol()); + + tape.zero_grad(); + rvar z = abs(x_neg * x_neg * x_neg); + z.backward(); + + T expected_grad = 3 * x_neg_v * x_neg_v * -1; + BOOST_REQUIRE_CLOSE(x_neg.adjoint(), expected_grad, boost_close_tol()); + + tape.clear(); +} + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ceil, T, all_float_types) +{ + RandomSample rng{-1, 1}; + T x_v = rng.next(); + T test_ceil_v = ceil(x_v); + + rvar x_rvar = x_v; + + rvar x_ceil = ceil(x_rvar); + + BOOST_REQUIRE_CLOSE(x_ceil.item(), test_ceil_v, boost_close_tol()); + + gradient_tape& tape = get_active_tape(); + + tape.zero_grad(); + x_ceil.backward(); + BOOST_REQUIRE_CLOSE(x_rvar.adjoint(), 0.0, boost_close_tol()); + + tape.clear(); +} +BOOST_AUTO_TEST_CASE_TEMPLATE(test_floor, T, all_float_types) +{ + RandomSample rng{-1, 1}; + T x_v = rng.next(); + T test_ceil_v = floor(x_v); + + rvar x_rvar = x_v; + + rvar x_floor = floor(x_rvar); + + BOOST_REQUIRE_CLOSE(x_floor.item(), test_ceil_v, boost_close_tol()); + + gradient_tape& tape = get_active_tape(); + + tape.zero_grad(); + x_floor.backward(); + BOOST_REQUIRE_CLOSE(x_rvar.adjoint(), 0.0, boost_close_tol()); + + tape.clear(); +} + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_exp, T, all_float_types) +{ + RandomSample rng{-1, 1}; + T x_v = rng.next(); + rng.next(); + T test_func_v = exp(x_v); + + rvar x_rvar = x_v; + + rvar x_func = exp(x_rvar); + + BOOST_REQUIRE_CLOSE(x_func.item(), test_func_v, boost_close_tol()); + + gradient_tape& tape = get_active_tape(); + + tape.zero_grad(); + rvar test_func_2 = exp(-x_rvar * x_rvar); + T expected_deriv = -2.0 * x_v * exp(-x_v * x_v); + test_func_2.backward(); + + BOOST_REQUIRE_CLOSE(x_rvar.adjoint(), expected_deriv, boost_close_tol()); + + tape.clear(); +} + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_pow, T, all_float_types) +{ + RandomSample base_rng{0, 2}; + RandomSample exp_rng{-5, 5}; + T x_v = 2.0; + base_rng.next(); + T y_v = 0.5; + exp_rng.next(); + + rvar x_rvar = x_v; + rvar y_rvar = y_v; + + T expected_v = pow(x_v, y_v); + rvar v_func = pow(x_rvar, y_rvar); + + BOOST_REQUIRE_CLOSE(expected_v, v_func.item(), boost_close_tol()); + + gradient_tape& tape = get_active_tape(); + tape.zero_grad(); + v_func.backward(); + + T df_dx_expected = y_v * pow(x_v, y_v - 1); + T df_dy_expected = pow(x_v, y_v) * log(x_v); + BOOST_REQUIRE_CLOSE(df_dx_expected, x_rvar.adjoint(), boost_close_tol()); + BOOST_REQUIRE_CLOSE(df_dy_expected, y_rvar.adjoint(), boost_close_tol()); + + rvar v_rvar_by_float = pow(x_rvar, y_v); + rvar v_float_by_rvar = pow(x_v, y_rvar); + + BOOST_REQUIRE_CLOSE(expected_v, v_rvar_by_float.item(), boost_close_tol()); + BOOST_REQUIRE_CLOSE(expected_v, v_float_by_rvar.item(), boost_close_tol()); + + tape.zero_grad(); + v_rvar_by_float.backward(); + BOOST_REQUIRE_CLOSE(df_dx_expected, x_rvar.adjoint(), boost_close_tol()); + BOOST_REQUIRE_CLOSE(0.0, y_rvar.adjoint(), boost_close_tol()); + + tape.zero_grad(); + v_float_by_rvar.backward(); + BOOST_REQUIRE_CLOSE(0.0, x_rvar.adjoint(), boost_close_tol()); + BOOST_REQUIRE_CLOSE(df_dy_expected, y_rvar.adjoint(), boost_close_tol()); +} + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_log, T, all_float_types) +{ + RandomSample rng{0.0001, 2}; + T x_v = rng.next(); + T test_func_v = log(x_v); + + rvar x_rvar = x_v; + + rvar x_func = log(x_rvar); + + BOOST_REQUIRE_CLOSE(x_func.item(), test_func_v, boost_close_tol()); + + gradient_tape& tape = get_active_tape(); + + tape.zero_grad(); + rvar test_func_2 = log(x_rvar * x_rvar); + T expected_deriv = 2.0 / x_v; + test_func_2.backward(); + + BOOST_REQUIRE_CLOSE(x_rvar.adjoint(), expected_deriv, boost_close_tol()); + + tape.clear(); +} +BOOST_AUTO_TEST_CASE_TEMPLATE(test_sqrt, T, all_float_types) +{ + RandomSample rng{0.0001, 2}; + T x_v = rng.next(); + T test_func_v = sqrt(x_v); + + rvar x_rvar = x_v; + rvar x_func = sqrt(x_rvar); + + BOOST_REQUIRE_CLOSE(x_func.item(), test_func_v, boost_close_tol()); + + gradient_tape& tape = get_active_tape(); + + tape.zero_grad(); + rvar test_func_2 = sqrt(x_rvar * x_rvar * x_rvar); + T expected_deriv = 3.0 * sqrt(x_v) / 2.0; + test_func_2.backward(); + + BOOST_REQUIRE_CLOSE(x_rvar.adjoint(), expected_deriv, boost_close_tol()); + + tape.clear(); +} + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_frexp, T, all_float_types) +{ + /** @brief frexp(x) returns mantissa in + * x = m * 2 ^ e + * + * its implemented as x/2^e, and technically has + * a derivative except at finitely many + * discontinuous points. In reverse mode autodiff + * its treated as a piecewise linear funcfion. + */ + RandomSample rng{-1, 1}; + T x_v = rng.next(); + + int i1, i2; + T test_func_v = frexp(x_v, &i1); + + rvar x_rvar = x_v; + rvar x_func = frexp(x_rvar, &i2); + + BOOST_REQUIRE_CLOSE(x_func.item(), test_func_v, boost_close_tol()); + + gradient_tape& tape = get_active_tape(); + + tape.zero_grad(); + x_func.backward(); + + // int i3, i4; + int i4; + frexp(x_v, &i4); + // T h = 0.001; + // T f1 = frexp(x_v + h, &i3); + // T f2 = frexp(x_v, &i4); + T expected_deriv = 1.0 / pow(2.0, i4); + BOOST_REQUIRE_CLOSE(x_rvar.adjoint(), expected_deriv, boost_close_tol()); + + tape.clear(); +} + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_cos, T, all_float_types) +{ + RandomSample rng{-10, 10}; + T x_v = rng.next(); + T test_func_v = cos(x_v); + + rvar x_rvar = x_v; + + rvar x_func = cos(x_rvar); + + BOOST_REQUIRE_CLOSE(x_func.item(), test_func_v, boost_close_tol()); + + gradient_tape& tape = get_active_tape(); + + tape.zero_grad(); + rvar test_func_2 = cos(x_rvar * x_rvar); + T expected_deriv = -2 * x_v * sin(x_v * x_v); + test_func_2.backward(); + + BOOST_REQUIRE_CLOSE(x_rvar.adjoint(), expected_deriv, boost_close_tol()); + + tape.clear(); +} + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_sin, T, all_float_types) +{ + RandomSample rng{-10, 10}; + T x_v = rng.next(); + T test_func_v = sin(x_v); + + rvar x_rvar = x_v; + + rvar x_func = sin(x_rvar); + + BOOST_REQUIRE_CLOSE(x_func.item(), test_func_v, boost_close_tol()); + + gradient_tape& tape = get_active_tape(); + + tape.zero_grad(); + rvar test_func_2 = sin(x_rvar * x_rvar); + T expected_deriv = 2 * x_v * cos(x_v * x_v); + test_func_2.backward(); + + BOOST_REQUIRE_CLOSE(x_rvar.adjoint(), expected_deriv, boost_close_tol()); + + tape.clear(); +} + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_tan, T, all_float_types) +{ + RandomSample rng{-10, 10}; + T x_v = rng.next(); + T test_func_v = tan(x_v); + + rvar x_rvar = x_v; + + rvar x_func = tan(x_rvar); + + BOOST_REQUIRE_CLOSE(x_func.item(), test_func_v, boost_close_tol()); + + gradient_tape& tape = get_active_tape(); + + tape.zero_grad(); + rvar test_func_2 = tan(x_rvar * x_rvar); + T expected_deriv = 2 * x_v * 1 / (cos(x_v * x_v) * cos(x_v * x_v)); + test_func_2.backward(); + + BOOST_REQUIRE_CLOSE(x_rvar.adjoint(), expected_deriv, boost_close_tol()); + + tape.clear(); +} + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_acos, T, all_float_types) +{ + RandomSample rng{-1, 1}; + T x_v = rng.next(); + T test_func_v = acos(x_v); + + rvar x_rvar = x_v; + + rvar x_func = acos(x_rvar); + + BOOST_REQUIRE_CLOSE(x_func.item(), test_func_v, boost_close_tol()); + + gradient_tape& tape = get_active_tape(); + + tape.zero_grad(); + rvar test_func_2 = acos(x_rvar * x_rvar); + T expected_deriv = -2 * x_v / sqrt(1 - x_v * x_v * x_v * x_v); + test_func_2.backward(); + + BOOST_REQUIRE_CLOSE(x_rvar.adjoint(), expected_deriv, boost_close_tol()); + + tape.clear(); +} + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_asin, T, all_float_types) +{ + RandomSample rng{-1, 1}; + T x_v = rng.next(); + T test_func_v = asin(x_v); + + rvar x_rvar = x_v; + + rvar x_func = asin(x_rvar); + + BOOST_REQUIRE_CLOSE(x_func.item(), test_func_v, boost_close_tol()); + + gradient_tape& tape = get_active_tape(); + + tape.zero_grad(); + rvar test_func_2 = asin(x_rvar * x_rvar); + T expected_deriv = 2 * x_v / sqrt(1 - x_v * x_v * x_v * x_v); + test_func_2.backward(); + + BOOST_REQUIRE_CLOSE(x_rvar.adjoint(), expected_deriv, boost_close_tol()); + + tape.clear(); +} + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_atan, T, all_float_types) +{ + RandomSample rng{-1, 1}; + T x_v = rng.next(); + T test_func_v = atan(x_v); + + rvar x_rvar = x_v; + + rvar x_func = atan(x_rvar); + + BOOST_REQUIRE_CLOSE(x_func.item(), test_func_v, boost_close_tol()); + + gradient_tape& tape = get_active_tape(); + + tape.zero_grad(); + rvar test_func_2 = atan(x_rvar * x_rvar); + T expected_deriv = 2 * x_v / (1 + x_v * x_v * x_v * x_v); + test_func_2.backward(); + + BOOST_REQUIRE_CLOSE(x_rvar.adjoint(), expected_deriv, boost_close_tol()); + + tape.clear(); +} +BOOST_AUTO_TEST_CASE_TEMPLATE(test_atan2, T, all_float_types) +{ + RandomSample rng{-10, 10}; + + T y_v = rng.next(); + T x_v = rng.next(); + + T expected = atan2(y_v, x_v); + + rvar y_rvar = y_v; + rvar x_rvar = x_v; + + { + rvar z = atan2(y_rvar, x_rvar); + BOOST_REQUIRE_CLOSE(z.item(), expected, boost_close_tol()); + + gradient_tape& tape = get_active_tape(); + tape.zero_grad(); + z.backward(); + + T denom = x_v * x_v + y_v * y_v; + T dy_expected = x_v / denom; + T dx_expected = -y_v / denom; + + BOOST_REQUIRE_CLOSE(y_rvar.adjoint(), dy_expected, boost_close_tol()); + BOOST_REQUIRE_CLOSE(x_rvar.adjoint(), dx_expected, boost_close_tol()); + } + + { + rvar y2 = y_v; + rvar z = atan2(y2, x_v); + BOOST_REQUIRE_CLOSE(z.item(), expected, boost_close_tol()); + + gradient_tape& tape = get_active_tape(); + tape.zero_grad(); + z.backward(); + + T dy_expected = x_v / (x_v * x_v + y_v * y_v); + + BOOST_REQUIRE_CLOSE(y2.adjoint(), dy_expected, boost_close_tol()); + } + + { + rvar x2 = x_v; + rvar z = atan2(y_v, x2); + BOOST_REQUIRE_CLOSE(z.item(), expected, boost_close_tol()); + + gradient_tape& tape = get_active_tape(); + tape.zero_grad(); + z.backward(); + + T dx_expected = -y_v / (x_v * x_v + y_v * y_v); + + BOOST_REQUIRE_CLOSE(x2.adjoint(), dx_expected, boost_close_tol()); + } +} + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_trunc, T, all_float_types) +{ + RandomSample rng{-1, 1}; + T x_v = rng.next(); + T test_trunc_v = trunc(x_v); + + rvar x_rvar = x_v; + + rvar x_trunc = trunc(x_rvar); + + BOOST_REQUIRE_CLOSE(x_trunc.item(), test_trunc_v, boost_close_tol()); + + gradient_tape& tape = get_active_tape(); + + tape.zero_grad(); + x_trunc.backward(); + BOOST_REQUIRE_CLOSE(x_rvar.adjoint(), 0.0, boost_close_tol()); + + tape.clear(); +} + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_fmod, T, all_float_types) +{ + using boost::math::tools::fmod_workaround; + RandomSample rng_x{-1, 1}; + RandomSample rng_y{-1, 1}; + + T x_v = rng_x.next(); + T y_v = rng_y.next(); + while (y_v == 0.0) { + y_v = rng_y.next(); + } + + T expected_fmod = fmod(x_v, y_v); + + rvar x_rvar = x_v; + rvar y_rvar = y_v; + + rvar fmod_rvar = fmod(x_rvar, y_rvar); + BOOST_REQUIRE_CLOSE(fmod_rvar.item(), expected_fmod, boost_close_tol()); + + gradient_tape& tape = get_active_tape(); + tape.zero_grad(); + fmod_rvar.backward(); + + T dx_expected = 1.0; + T dy_expected = -1.0 * trunc(x_v / y_v); + + BOOST_REQUIRE_CLOSE(x_rvar.adjoint(), dx_expected, boost_close_tol()); + BOOST_REQUIRE_CLOSE(y_rvar.adjoint(), dy_expected, boost_close_tol()); + + rvar fmod_rvar_float = fmod(x_rvar, y_v); + BOOST_REQUIRE_CLOSE(fmod_rvar_float.item(), expected_fmod, boost_close_tol()); + + tape.zero_grad(); + fmod_rvar_float.backward(); + BOOST_REQUIRE_CLOSE(x_rvar.adjoint(), dx_expected, boost_close_tol()); + + rvar fmod_float_rvar = fmod(x_v, y_rvar); + BOOST_REQUIRE_CLOSE(fmod_float_rvar.item(), expected_fmod, boost_close_tol()); + + tape.zero_grad(); + fmod_float_rvar.backward(); + BOOST_REQUIRE_CLOSE(y_rvar.adjoint(), dy_expected, boost_close_tol()); + + tape.clear(); +} + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_round, T, all_float_types) +{ + RandomSample rng{-1, 1}; + T x_v = rng.next(); + T test_round_v = round(x_v); + + rvar x_rvar = x_v; + + rvar x_round = round(x_rvar); + + BOOST_REQUIRE_CLOSE(x_round.item(), test_round_v, boost_close_tol()); + + gradient_tape& tape = get_active_tape(); + + tape.zero_grad(); + x_round.backward(); + BOOST_REQUIRE_CLOSE(x_rvar.adjoint(), 0.0, boost_close_tol()); + + tape.clear(); +} +BOOST_AUTO_TEST_CASE_TEMPLATE(test_iround, T, all_float_types) +{ + using boost::math::iround; + RandomSample rng{-1, 1}; + T x_v = rng.next(); + int test_round_v = iround(x_v); + rvar x_rvar = x_v; + int x_round = iround(x_rvar); + BOOST_REQUIRE_EQUAL(x_round, test_round_v); +} + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_lround, T, all_float_types) +{ + using boost::math::lround; + RandomSample rng{-1, 1}; + T x_v = rng.next(); + long test_round_v = lround(x_v); + rvar x_rvar = x_v; + long x_round = lround(x_rvar); + BOOST_REQUIRE_EQUAL(x_round, test_round_v); +} + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_llround, T, all_float_types) +{ + using boost::math::llround; + RandomSample rng{-1, 1}; + T x_v = rng.next(); + long long test_round_v = llround(x_v); + rvar x_rvar = x_v; + long long x_round = llround(x_rvar); + BOOST_REQUIRE_EQUAL(x_round, test_round_v); +} + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_itrunc, T, all_float_types) +{ + using boost::math::itrunc; + RandomSample rng{-1, 1}; + T x_v = rng.next(); + int test_trunc_v = itrunc(x_v); + rvar x_rvar = x_v; + int x_trunc = itrunc(x_rvar); + BOOST_REQUIRE_EQUAL(x_trunc, test_trunc_v); +} +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ltrunc, T, all_float_types) +{ + using boost::math::ltrunc; + RandomSample rng{-1, 1}; + T x_v = rng.next(); + long test_trunc_v = ltrunc(x_v); + rvar x_rvar = x_v; + long x_trunc = ltrunc(x_rvar); + BOOST_REQUIRE_EQUAL(x_trunc, test_trunc_v); +} +BOOST_AUTO_TEST_CASE_TEMPLATE(test_lltrunc, T, all_float_types) +{ + using boost::math::lltrunc; + RandomSample rng{-1, 1}; + T x_v = rng.next(); + int test_trunc_v = lltrunc(x_v); + rvar x_rvar = x_v; + int x_trunc = lltrunc(x_rvar); + BOOST_REQUIRE_EQUAL(x_trunc, test_trunc_v); +} + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_sinh, T, all_float_types) +{ + RandomSample rng{-1, 1}; + T x_v = rng.next(); + T test_func_v = sinh(x_v); + + rvar x_rvar = x_v; + + rvar x_func = sinh(x_rvar); + + BOOST_REQUIRE_CLOSE(x_func.item(), test_func_v, boost_close_tol()); + + gradient_tape& tape = get_active_tape(); + + tape.zero_grad(); + rvar test_func_2 = sinh(x_rvar * x_rvar); + T expected_deriv = 2 * x_v * cosh(x_v * x_v); + test_func_2.backward(); + + BOOST_REQUIRE_CLOSE(x_rvar.adjoint(), expected_deriv, boost_close_tol()); + + tape.clear(); +} + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_cosh, T, all_float_types) +{ + RandomSample rng{-1, 1}; + T x_v = rng.next(); + T test_func_v = cosh(x_v); + + rvar x_rvar = x_v; + + rvar x_func = cosh(x_rvar); + + BOOST_REQUIRE_CLOSE(x_func.item(), test_func_v, boost_close_tol()); + + gradient_tape& tape = get_active_tape(); + + tape.zero_grad(); + rvar test_func_2 = cosh(x_rvar * x_rvar); + T expected_deriv = 2 * x_v * sinh(x_v * x_v); + test_func_2.backward(); + + BOOST_REQUIRE_CLOSE(x_rvar.adjoint(), expected_deriv, boost_close_tol()); + + tape.clear(); +} + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_tanh, T, all_float_types) +{ + RandomSample rng{-1, 1}; + T x_v = rng.next(); + T test_func_v = tanh(x_v); + rvar x_rvar = x_v; + rvar x_func = tanh(x_rvar); + BOOST_REQUIRE_CLOSE(x_func.item(), test_func_v, boost_close_tol()); + gradient_tape& tape = get_active_tape(); + tape.zero_grad(); + rvar test_func_2 = tanh(x_rvar * x_rvar); + T expected_deriv = 2 * x_v / (cosh(x_v * x_v) * cosh(x_v * x_v)); + test_func_2.backward(); + BOOST_REQUIRE_CLOSE(x_rvar.adjoint(), expected_deriv, boost_close_tol()); + tape.clear(); +} +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ldexp, T, all_float_types) +{ + RandomSample rng{-2, 2}; + T x_v = rng.next(); + int exp_i = 3; + T test_func_v = ldexp(x_v, exp_i); + + rvar x_rvar = x_v; + + rvar x_func = ldexp(x_rvar, exp_i); + + BOOST_REQUIRE_CLOSE(x_func.item(), test_func_v, boost_close_tol()); + + gradient_tape& tape = get_active_tape(); + + tape.zero_grad(); + + // f(x) = ldexp(x^2, exp_i) = x^2 * 2^exp_i + rvar test_func_2 = ldexp(x_rvar * x_rvar, exp_i); + + // Expected derivative: d/dx [x^2 * 2^exp_i] = 2x * 2^exp_i + T expected_deriv = static_cast(2) * x_v * pow(static_cast(2.0), exp_i); + + test_func_2.backward(); + + BOOST_REQUIRE_CLOSE(x_rvar.adjoint(), expected_deriv, boost_close_tol()); + + tape.clear(); +} +BOOST_AUTO_TEST_CASE_TEMPLATE(test_ldexp_huge_val, T, all_float_types) +{ + const T huge_val = std::numeric_limits::infinity(); + const int exp = 1; + T result_huge = ldexp(huge_val, exp); + BOOST_REQUIRE_EQUAL(result_huge, huge_val); + rvar x_huge = huge_val; + rvar func_huge = ldexp(x_huge, exp); + BOOST_REQUIRE_EQUAL(func_huge.item(), huge_val); + func_huge.backward(); + T expected_adjoint = static_cast(2); + BOOST_REQUIRE_EQUAL(x_huge.adjoint(), expected_adjoint); + get_active_tape().clear(); +} + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_log10, T, all_float_types) +{ + RandomSample rng{0.0001, 10}; + T x_v = rng.next(); + T test_func_v = log10(x_v); + rvar x_rvar = x_v; + rvar x_func = log10(x_rvar); + BOOST_REQUIRE_CLOSE(x_func.item(), test_func_v, boost_close_tol()); + gradient_tape& tape = get_active_tape(); + tape.zero_grad(); + rvar test_func_2 = log10(x_rvar * x_rvar); + T expected_deriv = T{2.0} / (x_v * log(T{10.0})); + test_func_2.backward(); + BOOST_REQUIRE_CLOSE(x_rvar.adjoint(), expected_deriv, boost_close_tol()); + tape.clear(); +} + +template +T test_function_1(const T& x, const T& y) +{ + /** @brief test function for + * log + * abs + * exp + * pow + * sqrt + */ + auto y1 = log(1 + abs(x)) * exp(y); + auto y2 = pow(x + y, 2.5); + auto y3 = sqrt(1 + x * y); + return y1 + y2 - y3; +} + +template +std::vector grad_test_func_1_analytical(T x, T y) +{ + T f_x = static_cast(-1.0 / 2.0 * y / sqrt(x * y + 1) + 2.5 * pow(x + y, 1.5) + + sqrt(pow(x, 2)) * exp(y) / (x * (sqrt(pow(x, 2)) + 1))); + T f_y = static_cast(-1.0 / 2.0 * x / sqrt(x * y + 1) + 2.5 * pow(x + y, 1.5) + + exp(y) * log(sqrt(pow(x, 2)) + 1)); + return {f_x, f_y}; +} + +template +std::vector> grad2_test_func_1_analytical(T x, T y) +{ + T f_xx = static_cast((1.0 / 4.0) * pow(y, 2) / pow(x * y + 1, 3.0 / 2.0) + 3.75 * sqrt(x + y) + - exp(y) / pow(sqrt(pow(x, 2)) + 1, 2)); + T f_xy = static_cast((1.0 / 4.0) * x * y / pow(x * y + 1, 3.0 / 2.0) + 3.75 * sqrt(x + y) + - (1.0 / 2.0) / sqrt(x * y + 1) + + sqrt(pow(x, 2)) * exp(y) / (x * (sqrt(pow(x, 2)) + 1))); + T f_yx = static_cast((1.0 / 4.0) * x * y / pow(x * y + 1, 3.0 / 2.0) + 3.75 * sqrt(x + y) + - (1.0 / 2.0) / sqrt(x * y + 1) + + sqrt(pow(x, 2)) * exp(y) / (x * (sqrt(pow(x, 2)) + 1))); + T f_yy = static_cast((1.0 / 4.0) * pow(x, 2) / pow(x * y + 1, 3.0 / 2.0) + 3.75 * sqrt(x + y) + + exp(y) * log(sqrt(pow(x, 2)) + 1)); + return {{f_xx, f_xy}, {f_yx, f_yy}}; +} + +template +std::vector>> grad3_test_func_1_analytical(T x, T y) +{ + T f_xxx = static_cast(-3.0 / 8.0 * pow(y, 3) / pow(x * y + 1, 5.0 / 2.0) + + 1.875 * pow(x + y, -0.5) + + 2 * sqrt(pow(x, 2)) * exp(y) / (x * pow(sqrt(pow(x, 2)) + 1, 3))); + T f_xxy = static_cast(-3.0 / 8.0 * x * pow(y, 2) / pow(x * y + 1, 5.0 / 2.0) + + (1.0 / 2.0) * y / pow(x * y + 1, 3.0 / 2.0) + + 1.875 * pow(x + y, -0.5) - exp(y) / pow(sqrt(pow(x, 2)) + 1, 2)); + T f_xyx = static_cast(-3.0 / 8.0 * x * pow(y, 2) / pow(x * y + 1, 5.0 / 2.0) + + (1.0 / 2.0) * y / pow(x * y + 1, 3.0 / 2.0) + + 1.875 * pow(x + y, -0.5) - exp(y) / pow(sqrt(pow(x, 2)) + 1, 2)); + T f_xyy = static_cast(-3.0 / 8.0 * pow(x, 2) * y / pow(x * y + 1, 5.0 / 2.0) + + (1.0 / 2.0) * x / pow(x * y + 1, 3.0 / 2.0) + 1.875 * pow(x + y, -0.5) + + sqrt(pow(x, 2)) * exp(y) / (x * (sqrt(pow(x, 2)) + 1))); + T f_yxx = static_cast(-3.0 / 8.0 * x * pow(y, 2) / pow(x * y + 1, 5.0 / 2.0) + + (1.0 / 2.0) * y / pow(x * y + 1, 3.0 / 2.0) + + 1.875 * pow(x + y, -0.5) - exp(y) / pow(sqrt(pow(x, 2)) + 1, 2)); + T f_yxy = static_cast(-3.0 / 8.0 * pow(x, 2) * y / pow(x * y + 1, 5.0 / 2.0) + + (1.0 / 2.0) * x / pow(x * y + 1, 3.0 / 2.0) + 1.875 * pow(x + y, -0.5) + + sqrt(pow(x, 2)) * exp(y) / (x * (sqrt(pow(x, 2)) + 1))); + T f_yyx = static_cast(-3.0 / 8.0 * pow(x, 2) * y / pow(x * y + 1, 5.0 / 2.0) + + (1.0 / 2.0) * x / pow(x * y + 1, 3.0 / 2.0) + 1.875 * pow(x + y, -0.5) + + sqrt(pow(x, 2)) * exp(y) / (x * (sqrt(pow(x, 2)) + 1))); + T f_yyy = static_cast(-3.0 / 8.0 * pow(x, 3) / pow(x * y + 1, 5.0 / 2.0) + + 1.875 * pow(x + y, -0.5) + exp(y) * log(sqrt(pow(x, 2)) + 1)); + return {{{f_xxx, f_xxy}, {f_xyx, f_xyy}}, {{f_yxx, f_yxy}, {f_yyx, f_yyy}}}; +} + +template +std::vector>>> grad4_test_func_1_analytical(T x, T y) +{ + T f_xxxx = static_cast((15.0 / 16.0) * pow(y, 4) / pow(x * y + 1, 7.0 / 2.0) + - 0.9375 * pow(x + y, -1.5) + - 6 * exp(y) / pow(sqrt(pow(x, 2)) + 1, 4)); + T f_xxxy = static_cast((15.0 / 16.0) * x * pow(y, 3) / pow(x * y + 1, 7.0 / 2.0) + - 9.0 / 8.0 * pow(y, 2) / pow(x * y + 1, 5.0 / 2.0) + - 0.9375 * pow(x + y, -1.5) + + 2 * sqrt(pow(x, 2)) * exp(y) / (x * pow(sqrt(pow(x, 2)) + 1, 3))); + T f_xxyx = static_cast((15.0 / 16.0) * x * pow(y, 3) / pow(x * y + 1, 7.0 / 2.0) + - 9.0 / 8.0 * pow(y, 2) / pow(x * y + 1, 5.0 / 2.0) + - 0.9375 * pow(x + y, -1.5) + + 2 * sqrt(pow(x, 2)) * exp(y) / (x * pow(sqrt(pow(x, 2)) + 1, 3))); + T f_xxyy = static_cast((15.0 / 16.0) * pow(x, 2) * pow(y, 2) / pow(x * y + 1, 7.0 / 2.0) + - 3.0 / 2.0 * x * y / pow(x * y + 1, 5.0 / 2.0) + - 0.9375 * pow(x + y, -1.5) - exp(y) / pow(sqrt(pow(x, 2)) + 1, 2) + + (1.0 / 2.0) / pow(x * y + 1, 3.0 / 2.0)); + T f_xyxx = static_cast((15.0 / 16.0) * x * pow(y, 3) / pow(x * y + 1, 7.0 / 2.0) + - 9.0 / 8.0 * pow(y, 2) / pow(x * y + 1, 5.0 / 2.0) + - 0.9375 * pow(x + y, -1.5) + + 2 * sqrt(pow(x, 2)) * exp(y) / (x * pow(sqrt(pow(x, 2)) + 1, 3))); + T f_xyxy = static_cast((15.0 / 16.0) * pow(x, 2) * pow(y, 2) / pow(x * y + 1, 7.0 / 2.0) + - 3.0 / 2.0 * x * y / pow(x * y + 1, 5.0 / 2.0) + - 0.9375 * pow(x + y, -1.5) - exp(y) / pow(sqrt(pow(x, 2)) + 1, 2) + + (1.0 / 2.0) / pow(x * y + 1, 3.0 / 2.0)); + T f_xyyx = static_cast((15.0 / 16.0) * pow(x, 2) * pow(y, 2) / pow(x * y + 1, 7.0 / 2.0) + - 3.0 / 2.0 * x * y / pow(x * y + 1, 5.0 / 2.0) + - 0.9375 * pow(x + y, -1.5) - exp(y) / pow(sqrt(pow(x, 2)) + 1, 2) + + (1.0 / 2.0) / pow(x * y + 1, 3.0 / 2.0)); + T f_xyyy = static_cast((15.0 / 16.0) * pow(x, 3) * y / pow(x * y + 1, 7.0 / 2.0) + - 9.0 / 8.0 * pow(x, 2) / pow(x * y + 1, 5.0 / 2.0) + - 0.9375 * pow(x + y, -1.5) + + sqrt(pow(x, 2)) * exp(y) / (x * (sqrt(pow(x, 2)) + 1))); + T f_yxxx = static_cast((15.0 / 16.0) * x * pow(y, 3) / pow(x * y + 1, 7.0 / 2.0) + - 9.0 / 8.0 * pow(y, 2) / pow(x * y + 1, 5.0 / 2.0) + - 0.9375 * pow(x + y, -1.5) + + 2 * sqrt(pow(x, 2)) * exp(y) / (x * pow(sqrt(pow(x, 2)) + 1, 3))); + T f_yxxy = static_cast((15.0 / 16.0) * pow(x, 2) * pow(y, 2) / pow(x * y + 1, 7.0 / 2.0) + - 3.0 / 2.0 * x * y / pow(x * y + 1, 5.0 / 2.0) + - 0.9375 * pow(x + y, -1.5) - exp(y) / pow(sqrt(pow(x, 2)) + 1, 2) + + (1.0 / 2.0) / pow(x * y + 1, 3.0 / 2.0)); + T f_yxyx = static_cast((15.0 / 16.0) * pow(x, 2) * pow(y, 2) / pow(x * y + 1, 7.0 / 2.0) + - 3.0 / 2.0 * x * y / pow(x * y + 1, 5.0 / 2.0) + - 0.9375 * pow(x + y, -1.5) - exp(y) / pow(sqrt(pow(x, 2)) + 1, 2) + + (1.0 / 2.0) / pow(x * y + 1, 3.0 / 2.0)); + T f_yxyy = static_cast((15.0 / 16.0) * pow(x, 3) * y / pow(x * y + 1, 7.0 / 2.0) + - 9.0 / 8.0 * pow(x, 2) / pow(x * y + 1, 5.0 / 2.0) + - 0.9375 * pow(x + y, -1.5) + + sqrt(pow(x, 2)) * exp(y) / (x * (sqrt(pow(x, 2)) + 1))); + T f_yyxx = static_cast((15.0 / 16.0) * pow(x, 2) * pow(y, 2) / pow(x * y + 1, 7.0 / 2.0) + - 3.0 / 2.0 * x * y / pow(x * y + 1, 5.0 / 2.0) + - 0.9375 * pow(x + y, -1.5) - exp(y) / pow(sqrt(pow(x, 2)) + 1, 2) + + (1.0 / 2.0) / pow(x * y + 1, 3.0 / 2.0)); + T f_yyxy = static_cast((15.0 / 16.0) * pow(x, 3) * y / pow(x * y + 1, 7.0 / 2.0) + - 9.0 / 8.0 * pow(x, 2) / pow(x * y + 1, 5.0 / 2.0) + - 0.9375 * pow(x + y, -1.5) + + sqrt(pow(x, 2)) * exp(y) / (x * (sqrt(pow(x, 2)) + 1))); + T f_yyyx = static_cast((15.0 / 16.0) * pow(x, 3) * y / pow(x * y + 1, 7.0 / 2.0) + - 9.0 / 8.0 * pow(x, 2) / pow(x * y + 1, 5.0 / 2.0) + - 0.9375 * pow(x + y, -1.5) + + sqrt(pow(x, 2)) * exp(y) / (x * (sqrt(pow(x, 2)) + 1))); + T f_yyyy = static_cast((15.0 / 16.0) * pow(x, 4) / pow(x * y + 1, 7.0 / 2.0) + - 0.9375 * pow(x + y, -1.5) + exp(y) * log(sqrt(pow(x, 2)) + 1)); + return {{{{f_xxxx, f_xxxy}, {f_xxyx, f_xxyy}}, {{f_xyxx, f_xyxy}, {f_xyyx, f_xyyy}}}, + {{{f_yxxx, f_yxxy}, {f_yxyx, f_yxyy}}, {{f_yyxx, f_yyxy}, {f_yyyx, f_yyyy}}}}; +} + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_func_1_first_derivative, T, all_float_types) +{ + RandomSample rng{0.0001, 10}; + T x = rng.next(); + T y = rng.next(); + + rvar x_ad = x; + rvar y_ad = y; + + //T fv = test_function_1(x, y); + rvar f_ad = test_function_1(x_ad, y_ad); + auto grad_f_analytical = grad_test_func_1_analytical(x, y); + /* intended use case */ + f_ad.backward(); + BOOST_REQUIRE_CLOSE(x_ad.adjoint(), grad_f_analytical[0], boost_close_tol()); + BOOST_REQUIRE_CLOSE(y_ad.adjoint(), grad_f_analytical[1], boost_close_tol()); + + gradient_tape& tape = get_active_tape(); + tape.zero_grad(); + + /* grad test */ + auto grad_func_test_grad = grad(f_ad, &x_ad, &y_ad); + /* grad_nd test */ + auto grad_nd_func_test_grad = grad_nd<1>(f_ad, &x_ad, &y_ad); + + for (int i = 0; i < 2; i++) { + BOOST_REQUIRE_CLOSE(grad_func_test_grad[i], grad_f_analytical[i], boost_close_tol()); + BOOST_REQUIRE_CLOSE(grad_nd_func_test_grad[i], grad_f_analytical[i], boost_close_tol()); + } +} +BOOST_AUTO_TEST_CASE_TEMPLATE(test_func_1_second_derivative_and_hessian, T, all_float_types) +{ + RandomSample rng{0.0001, 10}; + T x = rng.next(); + T y = rng.next(); + + rvar x_ad = x; + rvar y_ad = y; + + //T fv = test_function_1(x, y); + rvar f_ad = test_function_1(x_ad, y_ad); + gradient_tape& tape = get_active_tape(); + tape.zero_grad(); + + auto hess_analytical = grad2_test_func_1_analytical(x, y); + auto hess_func_test = hess(f_ad, &x_ad, &y_ad); + auto grad_nd_func_test = grad_nd<2>(f_ad, &x_ad, &y_ad); + + for (int i = 0; i < 2; i++) { + for (int j = 0; j < 2; j++) { + BOOST_REQUIRE_CLOSE(hess_func_test[i][j], hess_analytical[i][j], boost_close_tol()); + BOOST_REQUIRE_CLOSE(hess_func_test[i][j], grad_nd_func_test[i][j], boost_close_tol()); + } + } +} + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_func_1_order_3_der, T, all_float_types) +{ + RandomSample rng{0.0001, 10}; + T x = rng.next(); + T y = rng.next(); + + rvar x_ad = x; + rvar y_ad = y; + + //T fv = test_function_1(x, y); + rvar f_ad = test_function_1(x_ad, y_ad); + gradient_tape& tape = get_active_tape(); + tape.zero_grad(); + + auto df3 = grad3_test_func_1_analytical(x, y); + auto grad_ad = grad(f_ad, &x_ad, &y_ad); + + std::vector>> grad_tensor; + for (int i = 0; i < 2; i++) { + auto df_hess = hess(grad_ad[i], &x_ad, &y_ad); + grad_tensor.push_back(df_hess); + } + auto grad_nd_func_test = grad_nd<3>(f_ad, &x_ad, &y_ad); + for (int i = 0; i < 2; i++) { + for (int j = 0; j < 2; j++) { + for (int k = 0; k < 2; k++) { + BOOST_REQUIRE_CLOSE(grad_tensor[i][j][k], df3[i][j][k], boost_close_tol()); + BOOST_REQUIRE_CLOSE(grad_nd_func_test[i][j][k], df3[i][j][k], boost_close_tol()); + } + } + } +} + +BOOST_AUTO_TEST_CASE_TEMPLATE(test_func_1_fourth_derivative, T, all_float_types) +{ + RandomSample rng{0.0001, 10}; + + T x_val = rng.next(); + T y_val = rng.next(); + + rvar x_ad = x_val; + rvar y_ad = y_val; + rvar f_ad = test_function_1(x_ad, y_ad); + + auto df4 = grad4_test_func_1_analytical(x_val, y_val); + auto gf = grad(f_ad, &x_ad, &y_ad); + std::array, 2>, 2>, 2> ggggf; + for (int i = 0; i < 2; ++i) { + auto hess1 = grad(gf[i], &x_ad, &y_ad); + for (int j = 0; j < 2; ++j) { + auto hess2 = grad(hess1[j], &x_ad, &y_ad); + for (int k = 0; k < 2; ++k) { + auto hess3 = grad(hess2[k], &x_ad, &y_ad); + for (int l = 0; l < 2; ++l) { + ggggf[i][j][k][l] = hess3[l]; + } + } + } + } + auto grad_nd_func_test = grad_nd<4>(f_ad, &x_ad, &y_ad); + for (int i = 0; i < 2; i++) { + for (int j = 0; j < 2; j++) { + for (int k = 0; k < 2; k++) { + for (int l = 0; l < 2; l++) { + BOOST_REQUIRE_CLOSE(ggggf[i][j][k][l], + df4[i][j][k][l], + 1 * boost_close_tol()); + BOOST_REQUIRE_CLOSE(grad_nd_func_test[i][j][k][l], + df4[i][j][k][l], + 1 * boost_close_tol()); + } + } + } + } +} + +BOOST_AUTO_TEST_SUITE_END() diff --git a/test/test_round.cpp b/test/test_round.cpp index 30414e75f2..2ed5a51c03 100644 --- a/test/test_round.cpp +++ b/test/test_round.cpp @@ -3,7 +3,7 @@ // Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#ifndef SYCL_LANGUAGE_VERSION +#ifndef BOOST_MATH_ENABLE_SYCL #include #else #include "sycl/sycl.hpp" diff --git a/test/test_saspoint5.cpp b/test/test_saspoint5.cpp index 424774e062..fc8845c08b 100644 --- a/test/test_saspoint5.cpp +++ b/test/test_saspoint5.cpp @@ -7,7 +7,7 @@ #define BOOST_TEST_MAIN #define BOOST_TEST_MODULE StatsSaSpoint5Test -#ifdef SYCL_LANGUAGE_VERSION +#ifdef BOOST_MATH_ENABLE_SYCL #include "sycl/sycl.hpp" #endif diff --git a/test/test_sign.cpp b/test/test_sign.cpp index bb4963112a..aacff47591 100644 --- a/test/test_sign.cpp +++ b/test/test_sign.cpp @@ -6,7 +6,7 @@ // (See accompanying file LICENSE_1_0.txt // or copy at http://www.boost.org/LICENSE_1_0.txt) -#ifdef SYCL_LANGUAGE_VERSION +#ifdef BOOST_MATH_ENABLE_SYCL #include "sycl/sycl.hpp" #endif diff --git a/test/test_students_t.cpp b/test/test_students_t.cpp index 918d3433b5..a08cf75a01 100644 --- a/test/test_students_t.cpp +++ b/test/test_students_t.cpp @@ -18,7 +18,7 @@ # pragma warning (disable :4127) // conditional expression is constant. #endif -#ifdef SYCL_LANGUAGE_VERSION +#ifdef BOOST_MATH_ENABLE_SYCL #include "sycl/sycl.hpp" #endif diff --git a/test/test_students_t_cdf_double.cu b/test/test_students_t_cdf_double.cu index e8f47faa25..2758491eb0 100644 --- a/test/test_students_t_cdf_double.cu +++ b/test/test_students_t_cdf_double.cu @@ -106,4 +106,4 @@ int main(void) std::cerr << "Stopped with exception: " << e.what() << std::endl; } return 0; -} \ No newline at end of file +} diff --git a/test/test_students_t_cdf_float.cu b/test/test_students_t_cdf_float.cu index 22fd5d7c01..f00bb76913 100644 --- a/test/test_students_t_cdf_float.cu +++ b/test/test_students_t_cdf_float.cu @@ -106,4 +106,4 @@ int main(void) std::cerr << "Stopped with exception: " << e.what() << std::endl; } return 0; -} \ No newline at end of file +} diff --git a/test/test_students_t_pdf_double.cu b/test/test_students_t_pdf_double.cu index 187f63ff52..2e00ddcbee 100644 --- a/test/test_students_t_pdf_double.cu +++ b/test/test_students_t_pdf_double.cu @@ -106,4 +106,4 @@ int main(void) std::cerr << "Stopped with exception: " << e.what() << std::endl; } return 0; -} \ No newline at end of file +} diff --git a/test/test_students_t_pdf_float.cu b/test/test_students_t_pdf_float.cu index ba0469b0e3..6fffb5be97 100644 --- a/test/test_students_t_pdf_float.cu +++ b/test/test_students_t_pdf_float.cu @@ -106,4 +106,4 @@ int main(void) std::cerr << "Stopped with exception: " << e.what() << std::endl; } return 0; -} \ No newline at end of file +} diff --git a/test/test_students_t_quan_double.cu b/test/test_students_t_quan_double.cu index fe6d999528..46f56b2b24 100644 --- a/test/test_students_t_quan_double.cu +++ b/test/test_students_t_quan_double.cu @@ -106,4 +106,4 @@ int main(void) std::cerr << "Stopped with exception: " << e.what() << std::endl; } return 0; -} \ No newline at end of file +} diff --git a/test/test_students_t_quan_float.cu b/test/test_students_t_quan_float.cu index 6293ec3f83..5d051e8604 100644 --- a/test/test_students_t_quan_float.cu +++ b/test/test_students_t_quan_float.cu @@ -106,4 +106,4 @@ int main(void) std::cerr << "Stopped with exception: " << e.what() << std::endl; } return 0; -} \ No newline at end of file +} diff --git a/test/test_triangular.cpp b/test/test_triangular.cpp index c7899c4e5d..dc916bb28e 100644 --- a/test/test_triangular.cpp +++ b/test/test_triangular.cpp @@ -8,7 +8,7 @@ // test_triangular.cpp -#ifndef SYCL_LANGUAGE_VERSION +#ifndef BOOST_MATH_ENABLE_SYCL #include #endif @@ -17,7 +17,7 @@ # pragma warning(disable: 4305) // truncation from 'long double' to 'float' #endif -#ifdef SYCL_LANGUAGE_VERSION +#ifdef BOOST_MATH_ENABLE_SYCL #include "sycl/sycl.hpp" #endif diff --git a/test/test_trigamma.cpp b/test/test_trigamma.cpp index e758069c05..6a14cc7c69 100644 --- a/test/test_trigamma.cpp +++ b/test/test_trigamma.cpp @@ -4,7 +4,7 @@ // Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#ifndef SYCL_LANGUAGE_VERSION +#ifndef BOOST_MATH_ENABLE_SYCL #include #else #include "sycl/sycl.hpp" diff --git a/test/test_uniform.cpp b/test/test_uniform.cpp index 7538ffb121..b4b52d1f87 100644 --- a/test/test_uniform.cpp +++ b/test/test_uniform.cpp @@ -8,7 +8,7 @@ // test_uniform.cpp -#ifndef SYCL_LANGUAGE_VERSION +#ifndef BOOST_MATH_ENABLE_SYCL #include #else #include "sycl/sycl.hpp" diff --git a/test/test_weibull.cpp b/test/test_weibull.cpp index a0cb51ef77..5c3feec594 100644 --- a/test/test_weibull.cpp +++ b/test/test_weibull.cpp @@ -12,7 +12,7 @@ # pragma warning (disable : 4127) // conditional expression is constant. #endif -#ifdef SYCL_LANGUAGE_VERSION +#ifdef BOOST_MATH_ENABLE_SYCL #include "sycl/sycl.hpp" #endif diff --git a/test/test_weibull_cdf_double.cu b/test/test_weibull_cdf_double.cu index 1b2e5cf0db..8fd99a99a6 100644 --- a/test/test_weibull_cdf_double.cu +++ b/test/test_weibull_cdf_double.cu @@ -106,4 +106,4 @@ int main(void) std::cerr << "Stopped with exception: " << e.what() << std::endl; } return 0; -} \ No newline at end of file +} diff --git a/test/test_weibull_cdf_float.cu b/test/test_weibull_cdf_float.cu index 76bf3a4e1c..fc47200cda 100644 --- a/test/test_weibull_cdf_float.cu +++ b/test/test_weibull_cdf_float.cu @@ -106,4 +106,4 @@ int main(void) std::cerr << "Stopped with exception: " << e.what() << std::endl; } return 0; -} \ No newline at end of file +} diff --git a/test/test_weibull_pdf_double.cu b/test/test_weibull_pdf_double.cu index dd48b57d60..b8fc2ba7e4 100644 --- a/test/test_weibull_pdf_double.cu +++ b/test/test_weibull_pdf_double.cu @@ -106,4 +106,4 @@ int main(void) std::cerr << "Stopped with exception: " << e.what() << std::endl; } return 0; -} \ No newline at end of file +} diff --git a/test/test_weibull_pdf_float.cu b/test/test_weibull_pdf_float.cu index 40064b1ed7..59a3daba87 100644 --- a/test/test_weibull_pdf_float.cu +++ b/test/test_weibull_pdf_float.cu @@ -106,4 +106,4 @@ int main(void) std::cerr << "Stopped with exception: " << e.what() << std::endl; } return 0; -} \ No newline at end of file +} diff --git a/test/test_weibull_quan_double.cu b/test/test_weibull_quan_double.cu index 9263fb5365..137ded3c1c 100644 --- a/test/test_weibull_quan_double.cu +++ b/test/test_weibull_quan_double.cu @@ -106,4 +106,4 @@ int main(void) std::cerr << "Stopped with exception: " << e.what() << std::endl; } return 0; -} \ No newline at end of file +} diff --git a/test/test_weibull_quan_float.cu b/test/test_weibull_quan_float.cu index 5dd6bd6eef..0519901136 100644 --- a/test/test_weibull_quan_float.cu +++ b/test/test_weibull_quan_float.cu @@ -106,4 +106,4 @@ int main(void) std::cerr << "Stopped with exception: " << e.what() << std::endl; } return 0; -} \ No newline at end of file +}