Namespaces
Variants

hypot, hypotf, hypotl

From cppreference.net
< c ‎ | numeric ‎ | math
Common mathematical functions
Functions
Basic operations
(C99)
(C99)
(C99)
(C99) (C99) (C99) (C23)
Maximum/minimum operations
Exponential functions
Power functions
hypot
(C99)
(C23)
(C23)
Trigonometric and hyperbolic functions
Nearest integer floating-point
(C99) (C99) (C99)
(C23) (C23) (C23) (C23)
Floating-point manipulation
Narrowing operations
(C23)
(C23)
(C23)
(C23)
(C23)
(C23)
Quantum and quantum exponent
Decimal re-encoding functions
Total order and payload functions
Classification
Error and gamma functions
(C99)
(C99)
(C99)
(C99)
Types
Macro constants
Special floating-point values
Arguments and return values
Error handling
Fast operation indicators
Défini dans l'en-tête <math.h>
float hypotf ( float x, float y ) ;
(1) (depuis C99)
double hypot ( double x, double y ) ;
(2) (depuis C99)
long double hypotl ( long double x, long double y ) ;
(3) (depuis C99)
Défini dans l'en-tête <tgmath.h>
#define hypot( x, y )
(4) (depuis C99)
1-3) Calcule la racine carrée de la somme des carrés de x et y , sans dépassement ou sous-dépassement excessif lors des étapes intermédiaires du calcul.
4) Macro générique de type : Si un argument a le type long double , la version long double de la fonction est appelée. Sinon, si un argument a un type entier ou le type double , la version double de la fonction est appelée. Sinon, la version float de la fonction est appelée.

La valeur calculée par cette fonction est la longueur de l'hypoténuse d'un triangle rectangle avec des côtés de longueur x et y , ou la distance du point ( x, y ) par rapport à l'origine ( 0 , 0 ) , ou le module d'un nombre complexe x+ i y .

Table des matières

Paramètres

x - valeur à virgule flottante
y - valeur à virgule flottante

Valeur de retour

Si aucune erreur ne se produit, l'hypoténuse d'un triangle rectangle, x 2
+y 2
, est retournée.

Si une erreur de plage due à un dépassement de capacité se produit, +HUGE_VAL , +HUGE_VALF , ou +HUGE_VALL est renvoyé.

Si une erreur de plage due à un dépassement inférieur se produit, le résultat correct (après arrondi) est retourné.

Gestion des erreurs

Les erreurs sont signalées comme spécifié dans math_errhandling .

Si l'implémentation prend en charge l'arithmétique à virgule flottante IEEE (IEC 60559),

  • hypot ( x, y ) , hypot ( y, x ) , et hypot ( x, - y ) sont équivalents
  • si l'un des arguments est ±0, hypot est équivalent à fabs appelé avec l'argument non nul
  • si l'un des arguments est ±∞, hypot retourne +∞ même si l'autre argument est NaN
  • sinon, si l'un des arguments est NaN, NaN est retourné.

Notes

Les implémentations garantissent généralement une précision inférieure à 1 ulp ( unités de la dernière place ): GNU , BSD .

hypot ( x, y ) est équivalent à cabs ( x + I * y ) .

POSIX spécifie qu'un dépassement inférieur ne peut se produire que lorsque les deux arguments sont sous-normaux et que le résultat correct est également sous-normal (ceci interdit les implémentations naïves).

hypot ( INFINITY, NAN ) renvoie +∞, mais sqrt ( INFINITY * INFINITY + NAN * NAN ) renvoie NaN.

Exemple

#include <errno.h>
#include <fenv.h>
#include <float.h>
#include <math.h>
#include <stdio.h>
// #pragma STDC FENV_ACCESS ON
int main(void)
{
    // utilisation typique
    printf("(1,1) cartesian is (%f,%f) polar\n", hypot(1,1), atan2(1, 1));
    // valeurs spéciales
    printf("hypot(NAN,INFINITY) = %f\n", hypot(NAN, INFINITY));
    // gestion des erreurs
    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");
}

Sortie possible :

(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

Références

  • Norme C23 (ISO/CEI 9899:2024) :
  • 7.12.7.3 Les fonctions hypot (p: TBD)
  • 7.25 Mathématiques génériques de type <tgmath.h> (p: TBD)
  • F.10.4.3 Les fonctions hypot (p: TBD)
  • Norme C17 (ISO/CEI 9899:2018) :
  • 7.12.7.3 Les fonctions hypot (p: 181)
  • 7.25 Mathématiques génériques de type <tgmath.h> (p: 272-273)
  • F.10.4.3 Les fonctions hypot (p: 382)
  • Norme C11 (ISO/IEC 9899:2011) :
  • 7.12.7.3 Les fonctions hypot (p: 248)
  • 7.25 Mathématiques génériques <tgmath.h> (p: 373-375)
  • F.10.4.3 Les fonctions hypot (p: 524)
  • Norme C99 (ISO/CEI 9899:1999) :
  • 7.12.7.3 Les fonctions hypot (p: 229)
  • 7.22 Mathématiques génériques de type <tgmath.h> (p: 335-337)
  • F.9.4.3 Les fonctions hypot (p: 461)

Voir aussi

(C99) (C99)
calcule un nombre élevé à la puissance donnée ( x y )
(fonction)
(C99) (C99)
calcule la racine carrée ( x )
(fonction)
(C99) (C99) (C99)
calcule la racine cubique ( 3 x )
(fonction)
(C99) (C99) (C99)
calcule le module d'un nombre complexe
(fonction)