Namensräume
Varianten
Aktionen

hypot, hypotf, hypotl

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)

hypot
(C99)
(C23)
(C23)
Trigonometrische und hyperbolische Funktionen
(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       hypotf( float x, float y );
(1) (seit C99)
double      hypot( double x, double y );
(2) (seit C99)
long double hypotl( long double x, long double y );
(3) (seit C99)
Definiert in Header <tgmath.h>
#define hypot( x, y )
(4) (seit C99)
1-3) Berechnet die Quadratwurzel aus der Summe der Quadrate von x und y, ohne übermäßige Überläufe oder Unterläufe bei Zwischenschritten der Berechnung.
4) Typ-generische Makro: Wenn ein Argument vom Typ long double ist, wird die `long double`-Version der Funktion aufgerufen. Andernfalls, wenn ein Argument einen Ganzzahltyp oder den Typ double hat, wird die `double`-Version der Funktion aufgerufen. Andernfalls wird die float-Version der Funktion aufgerufen.

Der von dieser Funktion berechnete Wert ist die Länge der Hypotenuse eines rechtwinkligen Dreiecks mit den Seitenlängen x und y, oder der Abstand des Punktes (x, y) vom Ursprung (0, 0), oder die Magnitude einer komplexen Zahl x+iy.

Inhalt

[bearbeiten] Parameter

x - Gleitkommawert
y - Gleitkommawert

[bearbeiten] Rückgabewert

Wenn keine Fehler auftreten, wird die Hypotenuse eines rechtwinkligen Dreiecks, x2
+y2
, zurückgegeben.

Wenn ein Bereichsfehler aufgrund von Überlauf auftritt, wird +HUGE_VAL, +HUGE_VALF oder +HUGE_VALL zurückgegeben.

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

[bearbeiten] Fehlerbehandlung

Fehler werden wie in math_errhandling angegeben gemeldet.

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

  • hypot(x, y), hypot(y, x) und hypot(x, -y) sind äquivalent
  • Wenn eines der Argumente ±0 ist, ist `hypot` äquivalent zu fabs, das mit dem Nicht-Null-Argument aufgerufen wird.
  • Wenn eines der Argumente ±∞ ist, gibt `hypot` +∞ zurück, auch wenn das andere Argument NaN ist.
  • Andernfalls, wenn eines der Argumente NaN ist, wird NaN zurückgegeben.

[bearbeiten] Hinweise

Implementierungen garantieren normalerweise eine Präzision von weniger als 1 ulp (Einheiten in der letzten Stelle): GNU, BSD.

hypot(x, y) ist äquivalent zu cabs(x + I*y).

POSIX schreibt vor, dass Unterlauf nur dann auftreten darf, wenn beide Argumente subnormal sind und das korrekte Ergebnis ebenfalls subnormal ist (dies verbietet naive Implementierungen).

hypot(INFINITY, NAN) gibt +∞ zurück, aber sqrt(INFINITY * INFINITY + NAN * NAN) gibt NaN zurück.

[bearbeiten] Beispiel

#include <errno.h>
#include <fenv.h>
#include <float.h>
#include <math.h>
#include <stdio.h>
// #pragma STDC FENV_ACCESS ON
 
int main(void)
{
    // typical usage
    printf("(1,1) cartesian is (%f,%f) polar\n", hypot(1,1), atan2(1, 1));
 
    // special values
    printf("hypot(NAN,INFINITY) = %f\n", hypot(NAN, INFINITY));
 
    // error handling
    errno = 0;
    feclearexcept(FE_ALL_EXCEPT);
    printf("hypot(DBL_MAX,DBL_MAX) = %f\n", hypot(DBL_MAX, DBL_MAX));
    if (errno == ERANGE)
        perror("    errno == ERANGE");
    if (fetestexcept(FE_OVERFLOW))
        puts("    FE_OVERFLOW raised");
}

Mögliche Ausgabe

(1,1) cartesian is (1.414214,0.785398) polar
hypot(NAN,INFINITY) = inf
hypot(DBL_MAX,DBL_MAX) = inf
    errno == ERANGE: Numerical result out of range
    FE_OVERFLOW raised

[bearbeiten] Referenzen

  • C23-Standard (ISO/IEC 9899:2024)
  • 7.12.7.3 Die hypot-Funktionen (S. TBD)
  • 7.25 Typ-generische Mathematik <tgmath.h> (S. TBD)
  • F.10.4.3 Die hypot-Funktionen (S. TBD)
  • C17-Standard (ISO/IEC 9899:2018)
  • 7.12.7.3 Die hypot-Funktionen (S. 181)
  • 7.25 Typ-generische Mathematik <tgmath.h> (S. 272-273)
  • F.10.4.3 Die hypot-Funktionen (S. 382)
  • C11-Standard (ISO/IEC 9899:2011)
  • 7.12.7.3 Die hypot-Funktionen (S. 248)
  • 7.25 Typ-generische Mathematik <tgmath.h> (S. 373-375)
  • F.10.4.3 Die hypot-Funktionen (S. 524)
  • C99-Standard (ISO/IEC 9899:1999)
  • 7.12.7.3 Die hypot-Funktionen (S. 229)
  • 7.22 Typ-generische Mathematik <tgmath.h> (S. 335-337)
  • F.9.4.3 Die hypot-Funktionen (S. 461)

[bearbeiten] Siehe auch

(C99)(C99)
berechnet eine Zahl hoch die gegebene Potenz (xy)
(Funktion) [bearbeiten]
(C99)(C99)
berechnet die Quadratwurzel (x)
(Funktion) [bearbeiten]
(C99)(C99)(C99)
berechnet die Kubikwurzel (3x)
(Funktion) [bearbeiten]
(C99)(C99)(C99)
berechnet den Betrag einer komplexen Zahl
(Funktion) [bearbeiten]