Namensräume
Varianten
Aktionen

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

Von cppreference.com
 
 
 
 
Definiert in der Header-Datei <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 );
(seit C++17)
(bis C++23)
/* Gleitkomma-Typ */ ellint_3( /* Gleitkomma-Typ */ k,

                                    /* Gleitkomma-Typ */ nu,

                                    /* Gleitkommatyp */ phi );
(seit C++23)
float       ellint_3f( float k, float nu, float phi );
(2) (seit C++17)
long double ellint_3l( long double k, long double nu, long double phi );
(3) (seit C++17)
Definiert in der Header-Datei <cmath>
template< class Arithmetic1, class Arithmetic2, class Arithmetic3 >

/* common-floating-point-type */

    ellint_3( Arithmetic1 k, Arithmetic2 nu, Arithmetic3 phi );
(A) (seit C++17)
1-3) Berechnet das unvollständige elliptische Integral dritter Art von k, nu und phi. Die Bibliothek stellt Überladungen von std::ellint_3 für alle cv-unqualifizierten Gleitkommatypen als Parametertypen für k, nu und phi bereit.(seit C++23)
A) Zusätzliche Überladungen werden für alle anderen Kombinationen von arithmetischen Typen bereitgestellt.

Inhalt

[edit] Parameter

k - elliptischer Modul oder Exzentrizität (ein Gleitkomma- oder Ganzzahlwert)
nu - elliptische Charakteristik (ein Gleitkomma- oder Ganzzahlwert)
phi - Jacobi-Amplitude (ein Gleitkomma- oder Ganzzahlwert, gemessen in Radiant)

[edit] Rückgabewert

Wenn keine Fehler auftreten, wird der Wert des unvollständigen elliptischen Integrals dritter Art von k, nu und phi zurückgegeben, d.h. phi
0
(1-nusin2
θ)1-k2
sin2
θ
.

[edit] Fehlerbehandlung

Fehler können wie in math_errhandling angegeben gemeldet werden.

  • Wenn das Argument NaN ist, wird NaN zurückgegeben und kein Domänenfehler gemeldet.
  • Wenn |k|>1, kann ein Domänenfehler auftreten.

[edit] Hinweise

Implementierungen, die C++17 nicht unterstützen, aber ISO 29124:2010 unterstützen, stellen diese Funktion bereit, wenn __STDCPP_MATH_SPEC_FUNCS__ von der Implementierung auf einen Wert von mindestens 201003L definiert wird und wenn der Benutzer __STDCPP_WANT_MATH_SPEC_FUNCS__ definiert, bevor er beliebige Standardbibliotheks-Header einschließt.

Implementierungen, die ISO 29124:2010 nicht unterstützen, aber TR 19768:2007 (TR1) unterstützen, stellen diese Funktion im Header tr1/cmath im Namespace std::tr1 bereit.

Eine Implementierung dieser Funktion ist auch in boost.math verfügbar.

Die zusätzlichen Überladungen müssen nicht exakt wie in (A) angegeben bereitgestellt werden. Sie müssen nur ausreichen, um sicherzustellen, dass für ihr erstes Argument num1, zweites Argument num2 und drittes Argument num3

  • Wenn num1, num2 oder num3 vom Typ long double ist, dann hat std::ellint_3(num1, num2, num3) die gleiche Wirkung wie std::ellint_3(static_cast<long double>(num1),
                  static_cast<long double>(num2),
                  static_cast<long double>(num3))
    .
  • Andernfalls, wenn num1, num2 und/oder num3 vom Typ double oder einem Ganzzahltyp ist, dann hat std::ellint_3(num1, num2, num3) die gleiche Wirkung wie std::ellint_3(static_cast<double>(num1),
                  static_cast<double>(num2),
                  static_cast<double>(num3))
    .
  • Andernfalls, wenn num1, num2 oder num3 vom Typ float ist, dann hat std::ellint_3(num1, num2, num3) die gleiche Wirkung wie std::ellint_3(static_cast<float>(num1),
                  static_cast<float>(num2),
                  static_cast<float>(num3))
    .
(bis C++23)

Wenn num1, num2 und num3 arithmetische Typen haben, dann hat std::ellint_3(num1, num2, num3) die gleiche Wirkung wie std::ellint_3(static_cast</* gemeinsamer Gleitkomma-Typ */>(num1),
              static_cast</* gemeinsamer Gleitkomma-Typ */>(num2),
              static_cast</* gemeinsamer Gleitkomma-Typ */>(num3))
, wobei /* gemeinsamer Gleitkomma-Typ */ der Gleitkommatyp mit dem höchsten Gleitkomma-Konversionsrang und dem höchsten Gleitkomma-Konversions-Subrang unter den Typen von num1, num2 und num3 ist. Argumente von Ganzzahltyp werden so betrachtet, als hätten sie den gleichen Gleitkomma-Konversionsrang wie double.

Wenn kein solcher Gleitkommazahltyp mit dem höchsten Rang und Subrang existiert, dann führt die Überladungsauflösung nicht zu einem nutzbaren Kandidaten aus den bereitgestellten Überladungen.

(seit C++23)

[edit] Beispiel

#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';
}

Ausgabe

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

[edit] Siehe auch

(vollständiges) elliptisches Integral dritter Art
(Funktion) [bearbeiten]

[edit] Externe Links

Weisstein, Eric W. "Elliptic Integral of the Third Kind." From MathWorld — A Wolfram Web Resource.