std::comp_e...p_ellint_3l(3)

πŸ“¦ version 2024.07.05, in nixpkgs unstable, opensuse-leap 16.0

πŸ’– NAME πŸ’–

Okay bestie, welcome to the std::comp_e...p_ellint_3l(3) page β€” it's from the C++ Standard Libary manual, and it's all about std::comp_ellint_3,std::comp_ellint_3f,std::comp_ellint_3l. Yep, the whole trio: std::comp_ellint_3, std::comp_ellint_3f, std::comp_ellint_3l. These are the complete elliptic integral of the third kind functions, and we are keeping every overload, every caveat, and every tiny detail. Periodt. ✨

🌈 Synopsis 🌈

Here's the overload squad, exactly as listed:

double      comp_ellint_3( double k, double nu );

float       comp_ellint_3( float k, float nu );
long double comp_ellint_3( long double k, long double nu );   (1)
float       comp_ellint_3f( float k, float nu );

long double comp_ellint_3l( long double k, long double nu );
double      comp_ellint_3( IntegralType k, IntegralType nu ); (2)
  1. Computes the complete elliptic integral of the third kind of arg. πŸŽ€
  2. A set of overloads or a function template accepting an argument of any integral type. Equivalent to (1) after casting the argument to double.

Okay, important availability tea β˜•: As all special functions, comp_ellint_3 is only guaranteed to be available in <cmath> if __STDCPP_MATH_SPEC_FUNCS__ is defined by the implementation to a value at least 201003L and if the user defines __STDCPP_WANT_MATH_SPEC_FUNCS__ before including any standard library headers. No cap, that's the rule. πŸ’…

πŸ¦‹ Parameters πŸ¦‹

  • nu β€” value of a floating-point or integral type.
  • k β€” value of a floating-point or integral type.

🌸 Return value 🌸

If no errors occur, the value of the complete elliptic integral of the second kind of arg is returned β€” that is, ellint_3(k, nu, Ο€/2). πŸ’–

Not me reading β€œsecond kind” on a third-kind function page, but bestie, I'm keeping the facts exactly as this page gives them. πŸ™ˆ

⚠️ Error handling ⚠️

Errors may be reported as specified in math_errhandling.

  • If the argument is NaN, NaN is returned and domain error is not reported. 😭
  • If either |k| > 1 or |nu| > 1, a domain error may occur. πŸ’€

🧚 Notes 🧚

Implementations that do not support TR 29124 but support TR 19768, provide this function in the header tr1/cmath and namespace std::tr1.

An implementation of this function is also available in boost.math.

πŸ‘‘ Example πŸ‘‘

The page says // Run this code β€” and it works as shown with gcc 6.0. πŸ”₯

#define __STDCPP_WANT_MATH_SPEC_FUNCS__ 1
#include <cmath>
#include <iostream>

int main()
{
    double hpi = std::acos(-1) / 2;
    std::cout << "Ξ (0, 0.75) = " << std::comp_ellint_3(0, 0.75) << '\n'
              << "Ο€/2 = " << hpi << '\n'
              << "Ξ (0.5, 0.75) = " << std::comp_ellint_3(0.5, 0.75) << '\n'
              << "Ξ (0.5, 0.75, Ο€/2) = " << std::ellint_3(0.5, 0.75, hpi) << '\n';
}

πŸ“ Output:

Ξ (0, 0.75) = 3.14159
Ο€/2 = 1.5708
Ξ (0.5, 0.75) = 3.45372
Ξ (0.5, 0.75, Ο€/2) = 3.45372

Weisstein, Eric W. "Complete Elliptic Integral of the Third Kind." From MathWorld--A Wolfram Web Resource.

πŸ”₯ See also πŸ”₯

  • ellint_3 β€” (incomplete) elliptic integral of the third kind
  • ellint_3f β€” (function)
  • ellint_3l

And that's the whole page, bestie. Cute little footer recap: source/version is http://cppreference.com, date is 2024.06.10, and the manual page tag is std::comp_e...p_ellint_3l(3). Byeeee! πŸ’œπŸ«Ά

πŸ“¦ where this page comes from