Namensräume
Varianten
Aktionen

atan2, atan2f, atan2l

Von cppreference.com
< c‎ | numerik‎ | math
 
 
 
Allgemeine mathematische Funktionen
Funktionen
Grundlegende Operationen
(C99)
(C99)
(C99)
(C99)(C99)(C99)(C23)
Maximum/Minimum-Operationen
(C99)
(C99)
Exponentialfunktionen
(C23)
(C99)
(C99)
(C23)
(C23)

(C99)
(C99)(C23)
(C23)
(C23)
Potenzfunktionen
(C99)
(C23)
(C23)

(C99)
(C23)
(C23)
Trigonometrische und hyperbolische Funktionen
atan2
(C23)
(C23)
(C23)
(C23)
(C23)
(C23)
(C23)
(C99)
(C99)
(C99)
Nächste ganze Gleitkommazahlen
(C99)(C99)(C99)
(C99)

(C99)(C99)(C99)
(C23)(C23)(C23)(C23)
Gleitkomma-Manipulation
(C99)(C99)
(C99)(C23)
(C99)
Verengende Operationen
(C23)
(C23)
(C23)
(C23)
(C23)
(C23)
Quanten- und Quantenexponent-Funktionen
Dezimal-Neu-Kodierungsfunktionen
Gesamtordnung und Payload-Funktionen
Klassifizierung
(C99)
(C99)
(C99)
(C23)
Fehler- und Gammafunktionen
(C99)
(C99)
(C99)
(C99)
Typen
Makrokonstanten
Spezielle Gleitkommawerte
(C99)(C23)
Argumente und Rückgabewerte
Fehlerbehandlung
Schnelle Operationsanzeigen
 
Definiert in Header <math.h>
float       atan2f( float y, float x );
(1) (seit C99)
double      atan2( double y, double x );
(2)
long double atan2l( long double y, long double x );
(3) (seit C99)
_Decimal32  atan2d32( _Decimal32 y, _Decimal32 x );
(4) (seit C23)
_Decimal64  atan2d64( _Decimal64 y, _Decimal64 x );
(5) (seit C23)
_Decimal128 atan2d128( _Decimal128 y, _Decimal128 x );
(6) (seit C23)
Definiert in Header <tgmath.h>
#define atan2( y, x )
(7) (seit C99)
1-6) Berechnet den Arkustangens von y / x unter Verwendung der Vorzeichen der Argumente zur Bestimmung des korrekten Quadranten.
7) Typ-generische Makro: Wenn ein Argument den Typ long double hat, wird (3) (atan2l) aufgerufen. Andernfalls, wenn ein Argument einen ganzzahligen Typ oder den Typ double hat, wird (2) (atan2) aufgerufen. Andernfalls wird (1) (atan2f) aufgerufen.

Die Funktionen (4-6) werden nur dann deklariert, wenn die Implementierung __STDC_IEC_60559_DFP__ vordefiniert (d. h. die Implementierung unterstützt Dezimal-Gleitkommazahlen).

(seit C23)

Inhalt

[edit] Parameter

x, y - Gleitkommawert

[edit] Rückgabewert

Wenn keine Fehler auftreten, wird der Arkustangens von y / x (arctan(
y
x
)
) im Bereich [-π ; +π] Radiant zurückgegeben.
Y-Argument
Rückgabewert
math-atan2.png
X-Argument

Wenn ein Domänenfehler auftritt, wird ein implementierungsdefinierter Wert zurückgegeben.

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

[edit] Fehlerbehandlung

Fehler werden wie in math_errhandling angegeben gemeldet.

Ein Domänenfehler kann auftreten, wenn x und y beide Null sind.

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

  • Wenn x und y beide Null sind, tritt kein Domänenfehler auf;
  • Wenn x und y beide Null sind, tritt auch kein Bereichsfehler auf;
  • Wenn y Null ist, tritt kein Polfehler auf;
  • Wenn y ±0 ist und x negativ oder -0 ist, wird ±π zurückgegeben;
  • Wenn y ±0 ist und x positiv oder +0 ist, wird ±0 zurückgegeben;
  • Wenn y ±∞ ist und x endlich ist, wird ±π/2 zurückgegeben;
  • Wenn y ±∞ ist und x -∞ ist, wird ±3π/4 zurückgegeben;
  • Wenn y ±∞ ist und x +∞ ist, wird ±π/4 zurückgegeben;
  • Wenn x ±0 ist und y negativ ist, wird -π/2 zurückgegeben;
  • Wenn x ±0 ist und y positiv ist, wird +π/2 zurückgegeben;
  • Wenn x -∞ ist und y endlich und positiv ist, wird zurückgegeben;
  • Wenn x -∞ ist und y endlich und negativ ist, wird zurückgegeben;
  • Wenn x +∞ ist und y endlich und positiv ist, wird +0 zurückgegeben;
  • Wenn x +∞ ist und y endlich und negativ ist, wird -0 zurückgegeben;
  • Wenn entweder x NaN ist oder y NaN ist, wird NaN zurückgegeben.

[edit] Hinweise

atan2(y, x) ist äquivalent zu carg(x + I*y).

POSIX spezifiziert, dass im Falle eines Underflows y / x der zurückgegebene Wert ist, und wenn dies nicht unterstützt wird, ein implementierungsabhängiger Wert zurückgegeben wird, der nicht größer ist als DBL_MIN, FLT_MIN und LDBL_MIN.

[edit] Beispiel

#include <math.h>
#include <stdio.h>
 
int main(void)
{
    // normal usage: the signs of the two arguments determine the quadrant
    // atan2(1,1) = +pi/4, Quad I
    printf("(+1,+1) cartesian is (%f,%f) polar\n", hypot( 1, 1), atan2( 1, 1));
    // atan2(1, -1) = +3pi/4, Quad II
    printf("(+1,-1) cartesian is (%f,%f) polar\n", hypot( 1,-1), atan2( 1,-1));
    // atan2(-1,-1) = -3pi/4, Quad III
    printf("(-1,-1) cartesian is (%f,%f) polar\n", hypot(-1,-1), atan2(-1,-1));
    // atan2(-1,-1) = -pi/4, Quad IV
    printf("(-1,+1) cartesian is (%f,%f) polar\n", hypot(-1, 1), atan2(-1, 1));
 
    // special values
    printf("atan2(0, 0) = %f atan2(0, -0)=%f\n", atan2(0,0), atan2(0,-0.0));
    printf("atan2(7, 0) = %f atan2(7, -0)=%f\n", atan2(7,0), atan2(7,-0.0));
}

Ausgabe

(+1,+1) cartesian is (1.414214,0.785398) polar
(+1,-1) cartesian is (1.414214,2.356194) polar
(-1,-1) cartesian is (1.414214,-2.356194) polar
(-1,+1) cartesian is (1.414214,-0.785398) polar
atan2(0, 0) = 0.000000 atan2(0, -0)=3.141593
atan2(7, 0) = 1.570796 atan2(7, -0)=1.570796

[edit] Referenzen

  • C23-Standard (ISO/IEC 9899:2024)
  • 7.12.4.4 Die atan2-Funktionen (S. TBD)
  • 7.25 Typ-generische Mathematik <tgmath.h> (S. TBD)
  • F.10.1.4 Die atan2-Funktionen (S. TBD)
  • C17-Standard (ISO/IEC 9899:2018)
  • 7.12.4.4 Die atan2-Funktionen (S. 174)
  • 7.25 Typ-generische Mathematik <tgmath.h> (S. 272-273)
  • F.10.1.4 Die atan2-Funktionen (S. 378)
  • C11-Standard (ISO/IEC 9899:2011)
  • 7.12.4.4 Die atan2-Funktionen (S. 239)
  • 7.25 Typ-generische Mathematik <tgmath.h> (S. 373-375)
  • F.10.1.4 Die atan2-Funktionen (S. 519)
  • C99-Standard (ISO/IEC 9899:1999)
  • 7.12.4.4 Die atan2-Funktionen (S. 219)
  • 7.22 Typ-generische Mathematik <tgmath.h> (S. 335-337)
  • F.9.1.4 Die atan2-Funktionen (S. 456)
  • C89/C90-Standard (ISO/IEC 9899:1990)
  • 4.5.2.4 Die atan2-Funktion

[edit] Siehe auch

(C99)(C99)
berechnet Arkussinus (arcsin(x))
(Funktion) [bearbeiten]
(C99)(C99)
berechnet Arkuskosinus (arccos(x))
(Funktion) [bearbeiten]
(C99)(C99)
berechnet Arkustangens (arctan(x))
(Funktion) [bearbeiten]
(C99)(C99)(C99)
berechnet den Phasenwinkel einer komplexen Zahl
(Funktion) [bearbeiten]