Namespaces
Variants

std:: comp_ellint_3, std:: comp_ellint_3f, std:: comp_ellint_3l

From cppreference.net
Défini dans l'en-tête <cmath>
(1)
float comp_ellint_3 ( float k, float nu ) ;

double comp_ellint_3 ( double k, double nu ) ;

long double comp_ellint_3 ( long double k, long double nu ) ;
(depuis C++17)
(jusqu'à C++23)
/* floating-point-type */ comp_ellint_3 ( /* floating-point-type */ k,
/* floating-point-type */ nu ) ;
(depuis C++23)
float comp_ellint_3f ( float k, float nu ) ;
(2) (depuis C++17)
long double comp_ellint_3l ( long double k, long double nu ) ;
(3) (depuis C++17)
Défini dans l'en-tête <cmath>
template < class Arithmetic1, class Arithmetic2 >

/* common-floating-point-type */

comp_ellint_3 ( Arithmetic1 k, Arithmetic2 nu ) ;
(A) (depuis C++17)
1-3) Calcule l' intégrale elliptique complète de troisième espèce des arguments k et nu . La bibliothèque fournit des surcharges de std::comp_ellint_3 pour tous les types à virgule flottante non qualifiés cv comme type des paramètres k et nu . (depuis C++23)
A) Des surcharges supplémentaires sont fournies pour toutes les autres combinaisons de types arithmétiques.

Table des matières

Paramètres

k - module elliptique ou excentricité (une valeur à virgule flottante ou entière)
nu - caractéristique elliptique (une valeur à virgule flottante ou entière)

Valeur de retour

Si aucune erreur ne se produit, la valeur de l'intégrale elliptique complète de troisième espèce de k et nu , c'est-à-dire std:: ellint_3 ( k, nu, π / 2 ) , est retournée.

Gestion des erreurs

Les erreurs peuvent être signalées comme spécifié dans math_errhandling .

  • Si l'argument est NaN, NaN est retourné et aucune erreur de domaine n'est signalée
  • Si |k|>1 , une erreur de domaine peut survenir

Notes

Les implémentations qui ne prennent pas en charge C++17, mais qui prennent en charge ISO 29124:2010 , fournissent cette fonction si __STDCPP_MATH_SPEC_FUNCS__ est défini par l'implémentation à une valeur d'au moins 201003L et si l'utilisateur définit __STDCPP_WANT_MATH_SPEC_FUNCS__ avant d'inclure tout en-tête de la bibliothèque standard.

Les implémentations qui ne prennent pas en charge ISO 29124:2010 mais supportent TR 19768:2007 (TR1), fournissent cette fonction dans l'en-tête tr1/cmath et l'espace de noms std::tr1 .

Une implémentation de cette fonction est également disponible dans boost.math .

Les surcharges supplémentaires ne sont pas tenues d'être fournies exactement comme (A) . Elles doivent seulement être suffisantes pour garantir que pour leur premier argument num1 et second argument num2 :

  • Si num1 ou num2 a le type long double , alors std :: comp_ellint_3 ( num1, num2 ) a le même effet que std :: comp_ellint_3 ( static_cast < long double > ( num1 ) ,
    static_cast < long double > ( num2 ) )
    .
  • Sinon, si num1 et/ou num2 a le type double ou un type entier, alors std :: comp_ellint_3 ( num1, num2 ) a le même effet que std :: comp_ellint_3 ( static_cast < double > ( num1 ) ,
    static_cast < double > ( num2 ) )
    .
  • Sinon, si num1 ou num2 a le type float , alors std :: comp_ellint_3 ( num1, num2 ) a le même effet que std :: comp_ellint_3 ( static_cast < float > ( num1 ) ,
    static_cast < float > ( num2 ) )
    .
(jusqu'en C++23)

Si num1 et num2 ont des types arithmétiques, alors std :: comp_ellint_3 ( num1, num2 ) a le même effet que std :: comp_ellint_3 ( static_cast < /* common-floating-point-type */ > ( num1 ) ,
static_cast < /* common-floating-point-type */ > ( num2 ) )
, où /* common-floating-point-type */ est le type à virgule flottante ayant le plus grand rang de conversion en virgule flottante et la plus grande sous-catégorie de conversion en virgule flottante entre les types de num1 et num2 , les arguments de type entier sont considérés comme ayant le même rang de conversion en virgule flottante que double .

Si aucun tel type à virgule flottante avec le plus grand rang et la plus grande sous-catégorie n'existe, alors la résolution de surcharge ne résulte pas en un candidat utilisable parmi les surcharges fournies.

(depuis C++23)

Exemple

#include <cmath>
#include <iostream>
int main()
{
    std::cout << std::fixed
              << "Π(0.5,0) = " << std::comp_ellint_3(0.5, 0) << '\n'
              << "K(0.5)   = " << std::comp_ellint_1(0.5) << '\n'
              << "Π(0,0)   = " << std::comp_ellint_3(0, 0) << '\n'
              << "π/2      = " << std::acos(-1) / 2 << '\n'
              << "Π(0.5,1) = " << std::comp_ellint_3(0.5, 1) << '\n';
}

Sortie :

Π(0.5,0) = 1.685750
K(0.5)   = 1.685750
Π(0,0)   = 1.570796
π/2      = 1.570796
Π(0.5,1) = inf

Voir aussi

(C++17) (C++17) (C++17)
intégrale elliptique incomplète de troisième espèce
(fonction)

Liens externes

Weisstein, Eric W. "Elliptic Integral of the Third Kind." De MathWorld — Une ressource Web Wolfram.