Namespaces
Variants

std:: ellint_3, std:: ellint_3f, std:: ellint_3l

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

double ellint_3 ( double k, double nu, double phi ) ;

long double ellint_3 ( long double k, long double nu, long double phi ) ;
(depuis C++17)
(jusqu'à C++23)
/* floating-point-type */ ellint_3 ( /* floating-point-type */ k,

/* floating-point-type */ nu,

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

/* common-floating-point-type */

ellint_3 ( Arithmetic1 k, Arithmetic2 nu, Arithmetic3 phi ) ;
(A) (depuis C++17)
1-3) Calcule l' intégrale elliptique incomplète de troisième espèce de k , nu , et phi . La bibliothèque fournit des surcharges de std::ellint_3 pour tous les types à virgule flottante non qualifiés cv comme type des paramètres k , nu et phi . (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)
phi - amplitude de Jacobi (une valeur à virgule flottante ou entière, mesurée en radians)

Valeur de retour

If no errors occur, value of the incomplete elliptic integral of the third kind of k , nu , and phi , that is phi
0
(1-nusin 2
θ) 1-k 2
sin 2
θ
, is returned.

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 , deuxième argument num2 et troisième argument num3 :

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

Si num1 , num2 et num3 ont des types arithmétiques, alors std :: ellint_3 ( num1, num2, num3 ) a le même effet que std :: ellint_3 ( static_cast < /* common-floating-point-type */ > ( num1 ) ,
static_cast < /* common-floating-point-type */ > ( num2 ) ,
static_cast < /* common-floating-point-type */ > ( num3 ) )
, 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 parmi les types de num1 , num2 et num3 , 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 rang et la sous-catégorie les plus grands 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>
#include <numbers>
int main()
{
    const double hpi = std::numbers::pi / 2;
    std::cout << "Π(0,0,π/2) = " << std::ellint_3(0, 0, hpi) << '\n'
              << "π/2 = " << hpi << '\n';
}

Sortie :

Π(0,0,π/2) = 1.5708
π/2 = 1.5708

Voir aussi

Intégrale elliptique complète de troisième espèce
(fonction)

Liens externes

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