NumCpp  2.14.0
A Templatized Header Only C++ Implementation of the Python NumPy Library
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
ellint_3.hpp
Go to the documentation of this file.
1
28#pragma once
29
30#include <cmath>
31
32#if defined(__cpp_lib_math_special_functions) || !defined(NUMCPP_NO_USE_BOOST)
33
37#include "NumCpp/NdArray.hpp"
38
39#ifndef __cpp_lib_math_special_functions
40#include "boost/math/special_functions/ellint_3.hpp"
41#endif
42
43#include <type_traits>
44
45namespace nc::special
46{
47 //============================================================================
48 // Method Description:
58 template<typename dtype1, typename dtype2, typename dtype3>
60 {
64
65#ifdef __cpp_lib_math_special_functions
66 return std::ellint_3(inK, inV, inP);
67#else
68 return boost::math::ellint_3(inK, inV, inP);
69#endif
70 }
71
72 //============================================================================
73 // Method Description:
83 template<typename dtype1, typename dtype2, typename dtype3>
85 {
86 if (inArrayK.size() != inArrayV.size() || inArrayK.size() != inArrayP.size())
87 {
88 THROW_INVALID_ARGUMENT_ERROR("Shapes of inArrayK, inArrayV, and inArrayP must match.");
89 }
90
91 NdArray<decltype(ellint_3(dtype1{ 0 }, dtype2{ 0 }, dtype3{ 0 }))> returnArray(inArrayK.shape());
92
93 for (uint32 i = 0; i < inArrayK.size(); ++i)
94 {
96 }
97
98 return returnArray;
99 }
100} // namespace nc::special
101
102#endif // #if defined(__cpp_lib_math_special_functions) || !defined(NUMCPP_NO_USE_BOOST)
#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
Definition airy_ai.hpp:39
auto ellint_3(dtype1 inK, dtype2 inV, dtype3 inP)
Definition ellint_3.hpp:59
NdArray< dtype > arange(dtype inStart, dtype inStop, dtype inStep=1)
Definition arange.hpp:59
std::uint32_t uint32
Definition Types.hpp:40