hypot, hypotf, hypotl
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Definido en el encabezado
<math.h>
|
||
|
float
hypotf
(
float
x,
float
y
)
;
|
(1) | (desde C99) |
|
double
hypot
(
double
x,
double
y
)
;
|
(2) | (desde C99) |
|
long
double
hypotl
(
long
double
x,
long
double
y
)
;
|
(3) | (desde C99) |
|
Definido en el encabezado
<tgmath.h>
|
||
|
#define hypot( x, y )
|
(4) | (desde C99) |
El valor calculado por esta función es la longitud de la hipotenusa de un triángulo rectángulo con lados de longitud
x
y
y
, o la distancia del punto
(
x, y
)
desde el origen
(
0
,
0
)
, o la magnitud de un número complejo
x+
i
y
.
Contenidos |
Parámetros
| x | - | valor de punto flotante |
| y | - | valor de punto flotante |
Valor de retorno
Si no ocurren errores, se devuelve la hipotenusa de un triángulo rectángulo,
\(\scriptsize{\sqrt{x^2+y^2} }\)
√
x
2
+y
2
.
Si ocurre un error de rango debido a desbordamiento,
+HUGE_VAL
,
+HUGE_VALF
, o
+HUGE_VALL
es devuelto.
Si ocurre un error de rango debido a desbordamiento inferior, se devuelve el resultado correcto (después del redondeo).
Manejo de errores
Los errores se reportan como se especifica en
math_errhandling
.
Si la implementación soporta aritmética de punto flotante IEEE (IEC 60559),
- hypot ( x, y ) , hypot ( y, x ) , y hypot ( x, - y ) son equivalentes
-
si uno de los argumentos es ±0,
hypotes equivalente a fabs llamado con el argumento no cero -
si uno de los argumentos es ±∞,
hypotdevuelve +∞ incluso si el otro argumento es NaN - de lo contrario, si alguno de los argumentos es NaN, se devuelve NaN.
Notas
Las implementaciones suelen garantizar una precisión de menos de 1 ulp ( unidades en el último lugar ): GNU , BSD .
hypot ( x, y ) es equivalente a cabs ( x + I * y ) .
POSIX especifica que el desbordamiento por cero (underflow) solo puede ocurrir cuando ambos argumentos son subnormales y el resultado correcto también es subnormal (esto prohíbe implementaciones ingenuas).
hypot ( INFINITY, NAN ) devuelve +∞, pero sqrt ( INFINITY * INFINITY + NAN * NAN ) devuelve NaN.
Ejemplo
#include <errno.h> #include <fenv.h> #include <float.h> #include <math.h> #include <stdio.h> // #pragma STDC FENV_ACCESS ON int main(void) { // uso típico printf("(1,1) cartesian is (%f,%f) polar\n", hypot(1,1), atan2(1, 1)); // valores especiales printf("hypot(NAN,INFINITY) = %f\n", hypot(NAN, INFINITY)); // manejo de errores 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"); }
Salida posible:
(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
Referencias
- Estándar C23 (ISO/IEC 9899:2024):
-
- 7.12.7.3 Las funciones hypot (p: TBD)
-
- 7.25 Matemáticas genéricas de tipos <tgmath.h> (p: TBD)
-
- F.10.4.3 Las funciones hypot (p: TBD)
- Estándar C17 (ISO/IEC 9899:2018):
-
- 7.12.7.3 Las funciones hypot (p: 181)
-
- 7.25 Matemáticas genéricas de tipos <tgmath.h> (p: 272-273)
-
- F.10.4.3 Las funciones hypot (p: 382)
- Estándar C11 (ISO/IEC 9899:2011):
-
- 7.12.7.3 Las funciones hypot (p: 248)
-
- 7.25 Matemáticas genéricas de tipo <tgmath.h> (p: 373-375)
-
- F.10.4.3 Las funciones hypot (p: 524)
- Estándar C99 (ISO/IEC 9899:1999):
-
- 7.12.7.3 Las funciones hypot (p: 229)
-
- 7.22 Matemáticas genéricas de tipo <tgmath.h> (p: 335-337)
-
- F.9.4.3 Las funciones hypot (p: 461)
Véase también
|
(C99)
(C99)
|
calcula un número elevado a la potencia dada (
\(\small{x^y}\)
x
y
)
(función) |
|
(C99)
(C99)
|
calcula la raíz cuadrada (
\(\small{\sqrt{x} }\)
√
x
)
(función) |
|
(C99)
(C99)
(C99)
|
calcula la raíz cúbica (
\(\small{\sqrt[3]{x} }\)
3
√
x
)
(función) |
|
(C99)
(C99)
(C99)
|
calcula la magnitud de un número complejo
(función) |
|
Documentación de C++
para
hypot
|
|