Namensräume
Varianten
Aktionen

std::tan, std::tanf, std::tanl

Von cppreference.com
< cpp‎ | numeric‎ | math
 
 
 
 
Definiert in der Header-Datei <cmath>
(1)
float       tan ( float num );

double      tan ( double num );

long double tan ( long double num );
(bis C++23)
/* Gleitkommazahl-Typ */
            tan ( /*Gleitkommazahltyp*/ num );
(seit C++23)
(constexpr seit C++26)
float       tanf( float num );
(2) (seit C++11)
(constexpr seit C++26)
long double tanl( long double num );
(3) (seit C++11)
(constexpr seit C++26)
SIMD-Überladung (seit C++26)
Definiert im Header <simd>
template< /*math-floating-point*/ V >

constexpr /*deduzierter-simd-t*/<V>

            tan ( const V& v_num );
(S) (seit C++26)
Definiert in der Header-Datei <cmath>
template< class Integer >
double      tan ( Integer num );
(A) (constexpr seit C++26)
1-3) Berechnet den Tangens von num (gemessen in Radiant). Die Bibliothek stellt Überladungen von std::tan für alle cv-unqualifizierten Gleitkommatypen als Parametertyp bereit.(seit C++23)
S) Die SIMD-Überladung führt eine elementweise std::tan auf v_num durch.
(Siehe math-floating-point und deduced-simd-t für ihre Definitionen.)
(seit C++26)
A) Zusätzliche Überladungen werden für alle ganzzahligen Typen bereitgestellt, die als double behandelt werden.
(seit C++11)

Inhalt

[edit] Parameter

num - Gleitkomma- oder Ganzzahlwert, der den Winkel in Radiant darstellt

[edit] Rückgabewert

Wenn keine Fehler auftreten, wird der Tangens von num (tan(num)) zurückgegeben.

Das Ergebnis hat möglicherweise wenig oder keine Bedeutung, wenn die Magnitude von num groß ist.

(bis C++11)

Wenn ein Domänenfehler auftritt, wird ein implementierungsabhängiger Wert zurückgegeben (NaN, wo unterstützt).

Wenn ein Bereichsfehler aufgrund eines Unterlaufs auftritt, wird das korrekte Ergebnis (nach Rundung) zurückgegeben.

[edit] Fehlerbehandlung

Fehler werden wie in math_errhandling beschrieben gemeldet.

Wenn die Implementierung IEEE-Gleitkomma-Arithmetik (IEC 60559) unterstützt,

  • Wenn das Argument ±0 ist, wird es unverändert zurückgegeben.
  • Wenn das Argument ±∞ ist, wird NaN zurückgegeben und FE_INVALID wird ausgelöst.
  • Wenn das Argument NaN ist, wird NaN zurückgegeben.

[edit] Anmerkungen

Der Fall, in dem das Argument unendlich ist, ist in C (auf das sich C++ bezieht) nicht als Definitionsbereichsfehler spezifiziert, aber es ist als Definitionsbereichsfehler in POSIX definiert.

Die Funktion hat mathematische Pole bei π(1/2 + n); jedoch kann keine gängige Gleitkommadarstellung π/2 exakt darstellen, sodass es keinen Wert für das Argument gibt, für den ein Polfehler auftritt.

Die zusätzlichen Überladungen müssen nicht exakt als (A) bereitgestellt werden. Sie müssen nur ausreichen, um sicherzustellen, dass für ihr Argument num vom Ganzzahltyp std::tan(num) denselben Effekt hat wie std::tan(static_cast<double>(num)).

[edit] Beispiel

#include <cerrno>
#include <cfenv>
#include <cmath>
#include <iostream>
 
// #pragma STDC FENV_ACCESS ON
const double pi = std::acos(-1); // or C++20's std::numbers::pi
 
int main()
{
    // typical usage
    std::cout << "tan(1*pi/4) = " << std::tan(1*pi/4) << '\n' // 45°
              << "tan(3*pi/4) = " << std::tan(3*pi/4) << '\n' // 135°
              << "tan(5*pi/4) = " << std::tan(5*pi/4) << '\n' // -135°
              << "tan(7*pi/4) = " << std::tan(7*pi/4) << '\n'; // -45°
 
    // special values
    std::cout << "tan(+0) = " << std::tan(0.0) << '\n'
              << "tan(-0) = " << std::tan(-0.0) << '\n';
 
    // error handling
    std::feclearexcept(FE_ALL_EXCEPT);
 
    std::cout << "tan(INFINITY) = " << std::tan(INFINITY) << '\n';
    if (std::fetestexcept(FE_INVALID))
        std::cout << "    FE_INVALID raised\n";
}

Mögliche Ausgabe

tan(1*pi/4) = 1
tan(3*pi/4) = -1
tan(5*pi/4) = 1
tan(7*pi/4) = -1
tan(+0) = 0
tan(-0) = -0
tan(INFINITY) = -nan
    FE_INVALID raised

[edit] Siehe auch

(C++11)(C++11)
berechnet Sinus (sin(x))
(Funktion) [bearbeiten]
(C++11)(C++11)
berechnet Kosinus (cos(x))
(Funktion) [bearbeiten]
(C++11)(C++11)
berechnet Arkustangens (arctan(x))
(Funktion) [bearbeiten]
berechnet den Tangens einer komplexen Zahl (tan(z))
(function template) [edit]
wendet die Funktion std::tan auf jedes Element von valarray an
(function template) [edit]