std::comp_e...p_ellint_1l(3)

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

πŸ’– std::comp_ellint_1, std::comp_ellint_1f, std::comp_ellint_1l πŸ’–

okay so bestie, welcome to the <cmath> corner of the C++ Standard Libary manual β€” yes, β€œLibary” is exactly how the page header spells it, no cap. The page title is std::comp_e...p_ellint_1l(3) (that ellipsis is the page’s own abbreviation, not me being shady). We’re talking about the complete elliptic integral of the first kind, and honestly? kinda iconic. πŸŽ€


🌸 NAME 🌸

std::comp_ellint_1, std::comp_ellint_1f, std::comp_ellint_1l β€” the whole trio, together, slaying in <cmath>. ✨


✨ Synopsis ✨

Here’s the signature lineup, verbatim so nobody gets lost:

double      comp_ellint_1( double arg );

double      comp_ellint_1( float arg );
double      comp_ellint_1( long double arg );  (1)
float       comp_ellint_1f( float arg );

long double comp_ellint_1l( long double arg );
double      comp_ellint_1( IntegralType arg ); (2)
  1. Computes the complete elliptic integral of the first 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.
⚠️ Important vibe check: as all special functions, comp_ellint_1 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.

🫢 Parameters 🫢

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

πŸŽ€ Return value πŸŽ€

If no errors occur, the value of the complete elliptic integral of the first kind of arg, that is ellint_1(arg, Ο€/2), is returned. πŸ’…


πŸ¦‹ 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 |arg| > 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 it works as shown with gcc 6.0, and it cues the snippet with // Run this code β€” so go off, bestie:

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

int main()
{
    double hpi = std::acos(-1) / 2;
    std::cout << "K(0) = " << std::comp_ellint_1(0) << '\n'
              << "Ο€/2 = " << hpi << '\n'
              << "K(0.5) = " << std::comp_ellint_1(0.5) << '\n'
              << "F(0.5, Ο€/2) = " << std::ellint_1(0.5, hpi) << '\n';
}

Output

K(0) = 1.5708
Ο€/2 = 1.5708
K(0.5) = 1.68575
F(0.5, Ο€/2) = 1.68575

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


πŸ‘€ See also πŸ‘€

  • ellint_1 (incomplete) elliptic integral of the first kind
  • ellint_1f (function)
  • ellint_1l

okay that’s the whole page, bestie. source/version: http://cppreference.com Β· date: 2024.06.10 Β· title vibe: std::comp_e...p_ellint_1l(3) β€” mwah πŸ’‹βœ¨

πŸ“¦ where this page comes from