std::sqrt, std::sqrtf, std::sqrtl - cppreference.com
De cppreference.com
</tbody> <tbody class="t-dcl-rev t-dcl-rev-num "> </tbody><tbody> </tbody> <tbody class="t-dcl-rev t-dcl-rev-num "> </tbody><tbody>
| Definido en el archivo de encabezado |
||
| (1) | ||
|
|
||
|
|
(desde C++11) | |
|
|
(2) | |
| (3) | ||
|
|
||
|
|
(desde C++11) | |
|
|
(4) | (desde C++11) |
1-3) Calcula la raíz cuadrada de arg.
4) Un conjunto de sobrecargas o una plantilla de función que acepta un argumento de cualquier tipo entero. Equivalente a (2) (el argumento se convierte a double).
Parámetros
| arg | - | Valor de un tipo de punto flotante o un tipo entero. |
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).
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.
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.
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
Véase también
(C++11)(C++11) |
Eleva un número a la potencia dada (xy) (función) [editar] |
(C++11)(C++11)(C++11) |
Calcula la raíz cúbica (3√x) (función) [editar] |
(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) [editar] |
| Raíz cuadrada en el rango del plano medio derecho. (plantilla de función) [editar] | |
| Se aplica la función std::sqrt a cada elemento de valarray. (plantilla de función) [editar] | |
Documentación de C para sqrt | |