std::sqrt, std::sqrtf, std::sqrtl
Definido en el archivo de encabezado <cmath>
|
||
(1) | ||
float sqrt ( float arg ); |
||
float sqrtf( float arg ); |
(desde C++11) | |
double sqrt ( double arg ); |
(2) | |
(3) | ||
long double sqrt ( long double arg ); |
||
long double sqrtl( long double arg ); |
(desde C++11) | |
double sqrt ( TipoEntero arg ); |
(4) | (desde C++11) |
arg
.Contenido |
[editar] Parámetros
arg | - | Valor de un tipo de punto flotante o un tipo entero. |
[editar] Valor de retorno
Si no se producen errores, se devuelve la raíz cuadrada de arg
(√arg).
Si se produce un error de dominio, se devuelve un valor definido por la implementación (NaN donde se dé apoyo).
Si se produce un error debido a subdesbordamiento, se devuelve el resultado correcto (después del redondeo).
[editar] Manejo de errores
Los errores se informan como se especifica en math_errhandling
Se produce un error de dominio si arg
es menor que cero.
Si la implementación admite la aritmética de punto flotante IEEE (IEC 60559):
- Si el argumento es menor que -0, se genera FE_INVALID y se devuelve NaN.
- Si el argumento es +∞, +0 o -0, se devuelve +∞, +0 o -0, respectivamente.
- Si el argumento es NaN, se devuelve NaN.
[editar] Notas
El estándar IEEE requiere que std::sqrt
sea exacta. Las únicas otras operaciones requeridas para ser exactas son los operadores aritméticos y la función std::fma. Después de redondear al tipo de retorno (utilizando el modo de redondeo por defecto), el resultado de std::sqrt
es indistinguible del resultado infinitamente preciso. En otras palabras, el error es inferior a 0.5 ulp. Otras funciones, incluidas std::pow, no están tan limitadas.
[editar] Ejemplo
#include <iostream> #include <cmath> #include <cerrno> #include <cfenv> #include <cstring> #pragma STDC FENV_ACCESS ON int main() { // normal use std::cout << "sqrt(100) = " << std::sqrt(100) << '\n' << "sqrt(2) = " << std::sqrt(2) << '\n' << "golden ratio = " << (1+std::sqrt(5))/2 << '\n'; // valores especiales std::cout << "sqrt(-0) = " << std::sqrt(-0.0) << '\n'; // manejo de errores errno = 0; std::feclearexcept(FE_ALL_EXCEPT); std::cout << "sqrt(-1.0) = " << std::sqrt(-1) << '\n'; if(errno == EDOM) std::cout << " errno = EDOM " << std::strerror(errno) << '\n'; if(std::fetestexcept(FE_INVALID)) std::cout << " Se generó FE_INVALID\n"; }
Posible salida:
sqrt(100) = 10 sqrt(2) = 1.41421 golden ratio = 1.61803 sqrt(-0) = -0 sqrt(-1.0) = -nan errno = EDOM Argumento numérico fuera de dominio Se generó FE_INVALID
[editar] Véase también
(C++11)(C++11) |
Eleva un número a la potencia dada (xy) (función) |
(C++11)(C++11)(C++11) |
Calcula la raíz cúbica (3√x) (función) |
(C++11)(C++11)(C++11) |
Calcula la raíz cuadrada de la suma de los cuadrados de dos o tres (C++17) números dados (√x2 +y2 ), (√x2 +y2 +z2 ) (función) |
Raíz cuadrada en el rango del plano medio derecho. (plantilla de función) | |
Se aplica la función std::sqrt a cada elemento de valarray. (plantilla de función) | |
Documentación de C para sqrt
|