32#if defined(__cpp_lib_math_special_functions) || !defined(NUMCPP_NO_USE_BOOST)
39#ifndef __cpp_lib_math_special_functions
40#include "boost/math/special_functions/ellint_3.hpp"
58 template<
typename dtype1,
typename dtype2,
typename dtype3>
59 auto ellint_3(dtype1 inK, dtype2 inV, dtype3 inP)
65#ifdef __cpp_lib_math_special_functions
66 return std::ellint_3(inK, inV, inP);
68 return boost::math::ellint_3(inK, inV, inP);
83 template<
typename dtype1,
typename dtype2,
typename dtype3>
86 if (inArrayK.
size() != inArrayV.
size() || inArrayK.
size() != inArrayP.
size())
91 NdArray<
decltype(
ellint_3(dtype1{ 0 }, dtype2{ 0 }, dtype3{ 0 }))> returnArray(inArrayK.
shape());
95 returnArray[i] =
ellint_3(inArrayK[i], inArrayV[i], inArrayP[i]);
#define THROW_INVALID_ARGUMENT_ERROR(msg)
Definition Error.hpp:37
#define STATIC_ASSERT_ARITHMETIC(dtype)
Definition StaticAsserts.hpp:39
Holds 1D and 2D arrays, the main work horse of the NumCpp library.
Definition NdArrayCore.hpp:139
size_type size() const noexcept
Definition NdArrayCore.hpp:4604
const Shape & shape() const noexcept
Definition NdArrayCore.hpp:4591
Definition airy_ai.hpp:39
auto ellint_3(dtype1 inK, dtype2 inV, dtype3 inP)
Definition ellint_3.hpp:59
std::uint32_t uint32
Definition Types.hpp:40