Common mathematical functions | |||||||||||||||||||||||||||||||
Mathematical special functions(C++17) | |||||||||||||||||||||||||||||||
Mathematical constants(C++20) | |||||||||||||||||||||||||||||||
Basic linear algebra algorithms(C++26) | |||||||||||||||||||||||||||||||
Data-parallel types (SIMD)(C++26) | |||||||||||||||||||||||||||||||
Floating-point environment(C++11) | |||||||||||||||||||||||||||||||
Complex numbers | |||||||||||||||||||||||||||||||
Numeric array (valarray ) | |||||||||||||||||||||||||||||||
Pseudo-random number generation | |||||||||||||||||||||||||||||||
Bit manipulation(C++20) | |||||||||||||||||||||||||||||||
Saturation arithmetic(C++26) | |||||||||||||||||||||||||||||||
Factor operations | |||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||
Interpolations | |||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||
Generic numeric operations | |||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||
C-style checked integer arithmetic | |||||||||||||||||||||||||||||||
|
Defined in header <cmath> | ||
(1) | ||
double comp_ellint_1(double k); float comp_ellint_1(float k); | (since C++17) (until C++23) | |
/* floating-point-type */ comp_ellint_1(/* floating-point-type */ k); | (since C++23) | |
float comp_ellint_1f(float k); | (2) | (since C++17) |
longdouble comp_ellint_1l(longdouble k); | (3) | (since C++17) |
Defined in header <cmath> | ||
template<class Integer> double comp_ellint_1( Integer k); | (A) | (since C++17) |
std::comp_ellint_1
for all cv-unqualified floating-point types as the type of the parameterk.(since C++23)Contents |
k | - | elliptic modulus or eccentricity (a floating-point or integer value) |
If no errors occur, value of the complete elliptic integral of the first kind ofk, that isstd::ellint_1(k, π/2), is returned.
Errors may be reported as specified inmath_errhandling.
Implementations that do not support C++17, but supportISO 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 headertr1/cmath
and namespacestd::tr1
.
An implementation of this function is alsoavailable 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 argumentnum of integer type,std::comp_ellint_1(num) has the same effect asstd::comp_ellint_1(static_cast<double>(num)).
Theperiod of a pendulum of lengthl, given acceleration due to gravityg, and initial angle θ equals4⋅√l/g⋅K(sin(θ/2)), whereK isstd::comp_ellint_1
.
#include <cmath>#include <iostream>#include <numbers> int main(){constexprdouble π{std::numbers::pi}; std::cout<<"K(0) ≈ "<< std::comp_ellint_1(0)<<'\n'<<"π/2 ≈ "<< π/2<<'\n'<<"K(0.5) ≈ "<< std::comp_ellint_1(0.5)<<'\n'<<"F(0.5, π/2) ≈ "<<std::ellint_1(0.5, π/2)<<'\n'<<"The period of a pendulum length 1m at 10° initial angle ≈ "<<4*std::sqrt(1/9.80665)* std::comp_ellint_1(std::sin(π/18/2))<<"s,\n""whereas the linear approximation gives ≈ "<<2* π*std::sqrt(1/9.80665)<<'\n';}
Output:
K(0) ≈ 1.5708π/2 ≈ 1.5708K(0.5) ≈ 1.68575F(0.5, π/2) ≈ 1.68575The period of a pendulum length 1 m at 10° initial angle ≈ 2.01024s,whereas the linear approximation gives ≈ 2.00641
(C++17)(C++17)(C++17) | (incomplete) elliptic integral of the first kind (function)[edit] |
Weisstein, Eric W. "Complete Elliptic Integral of the First Kind." From MathWorld — A Wolfram Web Resource. |