std::hypot, std::hypotf, std::hypotl
| Definido en el archivo de encabezado <cmath>
|
||
float hypot ( float x, float y ); float hypotf( float x, float y ); |
(1) | (desde C++11) |
double hypot ( double x, double y ); |
(2) | (desde C++11) |
long double hypot ( long double x, long double y ); long double hypotl( long double x, long double y ); |
(3) | (desde C++11) |
Promovido hypot ( Aritmético1 x, Arithmetic2 y ); |
(4) | (desde C++11) |
float hypot ( float x, float y, float z ); |
(5) | (desde C++17) |
double hypot ( double x, double y, double z ); |
(6) | (desde C++17) |
long double hypot ( long double x, long double y, long double z ); |
(7) | (desde C++17) |
Promovido hypot ( Aritmético1 x, Arithmetic2 y, Arithmetic3 z ); |
(8) | (desde C++17) |
x e y, sin desbordamiento ni subdesbordamiento indebidos en las etapas intermedias del cálculo.double. Si cualquier otro argumento es long double, entonces el tipo de retorno es long double, de lo contrario es double.x, y, y z, sin desbordamiento ni subdesbordamiento indebidos en las etapas intermedias del cálculo.double. Si cualquier otro argumento es long double, entonces el tipo de retorno es long double, de lo contrario es double.El valor calculado por la versión de dos argumentos de esta función es la longitud de la hipotenusa de un triángulo rectángulo con lados de longitud x e y, o la distancia del punto (x,y) desde el origen (0,0), o la magnitud de un número complejo x+iy.
El valor calculado por la versión de tres argumentos de esta función es la distancia del punto (x,y,z) desde el origen (0,0,0).
Parámetros
| x, y, z | - | Valores de tipos de punto flotante o tipos enteros. |
Valor de retorno
+y2
.
+y2
+z2
.
Si se produce un error de rango debido a desbordamiento, se devuelve HUGE_VAL, +HUGE_VALF, o +HUGE_VALL.
Si se produce un error de rango debido a desbordamiento, se devuelve el resultado correcto (después del redondeo).
Manejo de errores
Los errores se informan como se especifica en math_errhandling.
Si la implementación admite la aritmética de punto flotante IEEE (IEC 60559):
hypot(x, y),hypot(y, x), yhypot(x, -y)son equivalentes.- Si uno de los argumentos es +0 o -0,
hypot(x,y)es equivalente afabsllamada con el argumento distinto de cero. - Si uno de los argumentos es +∞ o -∞,
hypot(x,y)devuelve +∞ incluso si el otro argumento es NaN. - De lo contrario, si cualquiera de los argumentos es NaN, se devuelve NaN.
Notas
Las implementaciones generalmente garantizan una precisión de menos de 1 ulp (unidades en el último lugar): GNU, BSD.
std::hypot(x, y) es equivalente a std::abs(std::complex<double>(x,y)).
POSIX especifica que el subdesbordamiento solo se puede producir cuando ambos argumentos son subnormales y el resultado correcto también es subnormal (esto prohíbe implementaciones ingenuas).
|
La distancia entre dos puntos
|
(desde C++17) |
Ejemplo
#include <iostream>
#include <cmath>
#include <cerrno>
#include <cfenv>
#include <cfloat>
#include <cstring>
// #pragma STDC FENV_ACCESS ON
int main()
{
// uso típico
std::cout << "(1,1) cartesiano es (" << std::hypot(1,1)
<< ',' << std::atan2(1,1) << ") polar\n";
struct Point3D { float x, y, z; } a{3.14,2.71,9.87}, b{1.14,5.71,3.87};
// C++17 tiene la sobrecarga de hypot con tres argumentos:
std::cout << "distancia(a,b) = " << std::hypot(a.x-b.x,a.y-b.y,a.z-b.z) << '\n';
// valores especiales
std::cout << "hypot(NAN,INFINITY) = " << std::hypot(NAN,INFINITY) << '\n';
// manejo de errores
errno = 0;
std::feclearexcept(FE_ALL_EXCEPT);
std::cout << "hypot(DBL_MAX,DBL_MAX) = " << std::hypot(DBL_MAX,DBL_MAX) << '\n';
if (errno == ERANGE)
std::cout << " errno = ERANGE " << std::strerror(errno) << '\n';
if (std::fetestexcept(FE_OVERFLOW))
std::cout << " Se generó FE_OVERFLOW\n";
}
Salida:
(1,1) cartesiano es (1.41421,0.785398) polar
distancia(a,b) = 7
hypot(NAN,INFINITY) = inf
hypot(DBL_MAX,DBL_MAX) = inf
errno = ERANGE Resultado numérico fuera de rango
Se generó FE_OVERFLOW
Véase también
(C++11)(C++11) |
Eleva un número a la potencia dada (xy) (función) |
(C++11)(C++11) |
Calcula la raíz cuadrada (√x) (función) |
(C++11)(C++11)(C++11) |
Calcula la raíz cúbica (3√x) (función) |
| Devuelve la magnitud de un número complejo. (plantilla de función) | |
Documentación de C para hypot
| |