std::ellint...d::ellint_1l(3)
π NAME π
okay so welcome to the C++ Standard Library manual, bestie π β this page has main character energy for std::ellint_1, std::ellint_1f, and std::ellint_1l. No cap, itβs giving elliptic integrals, and weβre gonna get through every lil detail together. π«Ά
πΈ Synopsis πΈ
Hereβs the receipts, bestie π§Ύ β signatures exactly as printed, no edits, no cap:
Defined in header <cmath>.
float ellint_1 ( float k, float phi );
double ellint_1 ( double k, double phi );
long double ellint_1 ( long double k, long double phi );
(1) (since C++17) (until C++23)
/* floating-point-type */ ellint_1( /* floating-point-type */ k,
/* floating-point-type */ phi );
(1) (since C++23)
float ellint_1f( float k, float phi );
(2) (since C++17)
long double ellint_1l( long double k, long double phi );
(3) (since C++17)
β¨ Additional overloads β¨
Defined in header <cmath>.
template< class Arithmetic1, class Arithmetic2 >
/* common-floating-point-type */
ellint_1( Arithmetic1 k, Arithmetic2 phi );
(A) (since C++17)
1-3) Computes the incomplete elliptic integral of the first kind of k and phi. Slay. π
The library provides overloads of std::ellint_1 for all cv-unqualified floating-point types as the type of the parameters k and phi. (since C++23) β highkey important.
A) Additional overloads are provided for all other combinations of arithmetic types. Periodt. β¨
π Parameters π
Okay, the two args, bestie:
kβ elliptic modulus or eccentricity (a floating-point or integer value). Itβs giving modulus. πphiβ Jacobi amplitude (a floating-point or integer value, measured in radians). Lowkey donβt forget radians. π
π Return value π
If no errors occur, the return value is the value of the incomplete elliptic integral of the first kind of k and phi, that is β«_0^phi dΞΈ / β(1 - k^2 sin^2 ΞΈ). Iconic. π«Ά
π¨ Error handling π¨
Errors may be reported as specified in math_errhandling, bestie:
- If the argument is
NaN,NaNis returned and domain error is not reported. π - If
|k|>1, a domain error may occur. π
π Notes π
Some lore, iykyk π§:
Implementations that do not support C++17, but support ISO 29124:2010, provide this function 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. π¦
Implementations that do not support ISO 29124:2010 but support TR 19768:2007 (TR1), provide this function in the header tr1/cmath and namespace std::tr1. β
An implementation of this function is also available in boost.math. π
The additional overloads are not required to be provided exactly as (A). They only need to be sufficient to ensure that for their first argument num1 and second argument num2:
- If
num1ornum2has typelong double, thenstd::ellint_1(num1, num2)has the same effect asstd::ellint_1(static_cast<long double>(num1), static_cast<long double>(num2)). - Otherwise, if
num1and/ornum2has typedoubleor an integer type, thenstd::ellint_1(num1, num2)has the same effect as (until C++23)std::ellint_1(static_cast<double>(num1), static_cast<double>(num2)). - Otherwise, if
num1ornum2has typefloat, thenstd::ellint_1(num1, num2)has the same effect asstd::ellint_1(static_cast<float>(num1), static_cast<float>(num2)).
If num1 and num2 have arithmetic types, then std::ellint_1(num1, num2) has the same effect as std::ellint_1(static_cast</* common-floating-point-type */>(num1), static_cast</* common-floating-point-type */>(num2)), where /* common-floating-point-type */ is the floating-point type with the greatest floating-point conversion rank and greatest floating-point conversion subrank between the types of num1 and num2, (since C++23) arguments of integer type are considered to have the same floating-point conversion rank as double.
If no such floating-point type with the greatest rank and subrank exists, then overload resolution does not result in a usable candidate from the overloads provided. π
π§ͺ Example π§ͺ
Run this code and vibe check it:
// Run this code
#include <cmath>
#include <iostream>
#include <numbers>
int main()
{
const double hpi = std::numbers::pi / 2.0;
std::cout << "F(0,Ο/2) = " << std::ellint_1(0, hpi) << '\n'
<< "F(0,-Ο/2) = " << std::ellint_1(0, -hpi) << '\n'
<< "Ο/2 = " << hpi << '\n'
<< "F(0.7,0) = " << std::ellint_1(0.7, 0) << '\n';
}
π¨οΈ Output π¨οΈ
F(0,Ο/2) = 1.5708
F(0,-Ο/2) = -1.5708
Ο/2 = 1.5708
F(0.7,0) = 0
π See also π
Also see these complete-integral besties:
comp_ellint_1,comp_ellint_1f,comp_ellint_1lβ (complete) elliptic integral of the first kind(function)(C++17)(C++17)(C++17)π
π External links π
Weisstein, Eric W. "Elliptic Integral of the First Kind." From MathWorld β A Wolfram Web Resource. π
source/version: http://cppreference.com Β· date: 2024.06.10 Β· page: std::ellint...d::ellint_1l(3) β okay bye bestie, go integrate something iconic πβ¨
π¦ where this page comes from
- nixpkgs unstable: stdman 2024.07.05
- opensuse-leap 16.0: stdman 2024.07.05-bp160.1.9 Β· MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms