std::ellint_1,std::ellint_1f,std::ellint_1l (3) - Linux Manuals

std::ellint_1,std::ellint_1f,std::ellint_1l: std::ellint_1,std::ellint_1f,std::ellint_1l


std::ellint_1,std::ellint_1f,std::ellint_1l - std::ellint_1,std::ellint_1f,std::ellint_1l


double ellint_1( double k, double φ );
float ellint_1f( float k, float φ ); (1) (since C++17)
long double ellint_1l( long double k, long double φ );
Promoted ellint_1( Arithmetic k, Arithmetic φ ); (2) (since C++17)

1) Computes the incomplete_elliptic_integral_of_the_first_kind of k and φ.
2) A set of overloads or a function template for all combinations of arguments of arithmetic type not covered by (1). If any argument has integral_type, it is cast to double. If any argument is long double, then the return type Promoted is also long double, otherwise the return type is always double.


k - elliptic modulus or eccentricity (a value of a floating-point or integral type)
φ- Jacobi amplitude (a value of floating-point or integral type, measured in radians)

Return value

If no errors occur, value of the incomplete elliptic integral of the first kind of k and φ, that is ∫φ


, 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 |k|>1, a domain error may occur


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


// Run this code

  #include <cmath>
  #include <iostream>
  int main()
      double hpi = std::acos(-1)/2;
      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';


  F(0,π/2) = 1.5708
  F(0,-π/2) = -1.5708
  π/2 = 1.5708
  F(0.7,0) = 0

External links

Weisstein,_Eric_W._"Elliptic_Integral_of_the_First_Kind." From MathWorld--A Wolfram Web Resource.

See also

comp_ellint_1l (complete) elliptic integral of the first kind