sqrt, sqrtf, sqrtl
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Definido en el encabezado
<math.h>
|
||
|
float
sqrtf
(
float
arg
)
;
|
(1) | (desde C99) |
|
double
sqrt
(
double
arg
)
;
|
(2) | |
|
long
double
sqrtl
(
long
double
arg
)
;
|
(3) | (desde C99) |
|
Definido en el encabezado
<tgmath.h>
|
||
|
#define sqrt( arg )
|
(4) | (desde C99) |
sqrtl
es llamado. De lo contrario, si
arg
tiene tipo entero o el tipo
double
,
sqrt
es llamado. De lo contrario,
sqrtf
es llamado. Si
arg
es complejo o imaginario, entonces el macro invoca la función compleja correspondiente (
csqrtf
,
csqrt
,
csqrtl
).
Contenidos |
Parámetros
| arg | - | valor de punto flotante |
Valor de retorno
Si no ocurren errores, se devuelve la raíz cuadrada de arg ( \({\small \sqrt{arg} }\) √ arg ).
Si ocurre un error de dominio, se devuelve un valor definido por la implementación (NaN donde esté soportado).
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
.
Error de dominio ocurre si arg es menor que cero.
Si la implementación soporta aritmética de punto flotante IEEE (IEC 60559),
- Si el argumento es menor que -0, FE_INVALID se activa y se retorna NaN.
- Si el argumento es +∞ o ±0, se retorna sin modificación.
- Si el argumento es NaN, se retorna NaN.
Notas
sqrt
es requerido por el estándar IEEE para ser redondeado correctamente a partir del resultado infinitamente preciso. En particular, se produce el resultado exacto si puede ser representado en el tipo de punto flotante. Las únicas otras operaciones que requieren esto son los
operadores aritméticos
y la función
fma
. Otras funciones, incluyendo
pow
, no están tan restringidas.
Ejemplo
#include <errno.h> #include <fenv.h> #include <math.h> #include <stdio.h> // #pragma STDC FENV_ACCESS ON int main(void) { // uso normal printf("sqrt(100) = %f\n", sqrt(100)); printf("sqrt(2) = %f\n", sqrt(2)); printf("golden ratio = %f\n", (1 + sqrt(5)) / 2); // valores especiales printf("sqrt(-0) = %f\n", sqrt(-0.0)); // manejo de errores errno = 0; feclearexcept(FE_ALL_EXCEPT); printf("sqrt(-1.0) = %f\n", sqrt(-1)); if (errno == EDOM) perror(" errno == EDOM"); if (fetestexcept(FE_INVALID)) puts(" FE_INVALID was raised"); }
Salida posible:
sqrt(100) = 10.000000
sqrt(2) = 1.414214
golden ratio = 1.618034
sqrt(-0) = -0.000000
sqrt(-1.0) = -nan
errno = EDOM: Numerical argument out of domain
FE_INVALID was raised
Referencias
- Estándar C23 (ISO/IEC 9899:2024):
-
- 7.12.7.5 Las funciones sqrt (p: TBD)
-
- 7.25 Matemáticas genéricas de tipos <tgmath.h> (p: TBD)
-
- F.10.4.5 Las funciones sqrt (p: TBD)
- Estándar C17 (ISO/IEC 9899:2018):
-
- 7.12.7.5 Las funciones sqrt (p: TBD)
-
- 7.25 Matemáticas genéricas de tipos <tgmath.h> (p: TBD)
-
- F.10.4.5 Las funciones sqrt (p: TBD)
- Estándar C11 (ISO/IEC 9899:2011):
-
- 7.12.7.5 Las funciones sqrt (p: 249)
-
- 7.25 Matemáticas genéricas de tipos <tgmath.h> (p: 373-375)
-
- F.10.4.5 Las funciones sqrt (p: 525)
- Estándar C99 (ISO/IEC 9899:1999):
-
- 7.12.7.5 Las funciones sqrt (p: 229-230)
-
- 7.22 Matemáticas genéricas de tipos <tgmath.h> (p: 335-337)
-
- F.9.4.5 Las funciones sqrt (p: 462)
- Estándar C89/C90 (ISO/IEC 9899:1990):
-
- 4.5.5.2 La función sqrt
Véase también
|
(C99)
(C99)
|
calcula un número elevado a la potencia dada (
\(\small{x^y}\)
x
y
)
(función) |
|
(C99)
(C99)
(C99)
|
calcula la raíz cúbica (
\(\small{\sqrt[3]{x} }\)
3
√
x
)
(función) |
|
(C99)
(C99)
(C99)
|
calcula la raíz cuadrada de la suma de los cuadrados de dos números dados (
\(\scriptsize{\sqrt{x^2+y^2} }\)
√
x
2
+y 2 ) (función) |
|
(C99)
(C99)
(C99)
|
calcula la raíz cuadrada compleja
(función) |
|
Documentación de C++
para
sqrt
|
|