std::cbrt, std::cbrtf, std::cbrtl
De cppreference.com
<tbody>
</tbody>
| Definido en el archivo de encabezado <cmath>
|
||
float cbrt ( float arg ); float cbrtf( float arg ); |
(1) | (desde C++11) |
double cbrt ( double arg ); |
(2) | (desde C++11) |
long double cbrt ( long double arg ); long double cbrtl( long double arg ); |
(3) | (desde C++11) |
double cbrt ( TipoEntero arg ); |
(4) | (desde C++11) |
1-3) Calcula la raíz cúbica 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 cúbica de arg (3√arg).
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
Si la implementación admite la aritmética de punto flotante IEEE (IEC 60559):
- Si el argumento es +0, -0, +∞, o -∞, se devuelve +0, -0, +∞, o -∞, respectivamente.
- Si el argumento es NaN, se devuelve NaN.
Notas
std::cbrt(arg) no es equivalente a std::pow(arg, 1.0/3) porque el número racional
| 1 |
| 3 |
generalmente no es igual a 1.0/3 y std::pow no puede elevar una base negativa a un exponente fraccionario. Además, std::cbrt(arg) suele dar resultados más precisos que std::pow(arg, 1.0/3) (véase el ejemplo).
Ejemplo
Ejecuta este código
#include <iostream>
#include <iomanip>
#include <cmath>
#include <limits>
int main()
{
std::cout
<< "Uso normal:\n"
<< "cbrt(729) = " << std::cbrt(729) << '\n'
<< "cbrt(-0.125) = " << std::cbrt(-0.125) << '\n'
<< "Special values:\n"
<< "cbrt(-0) = " << std::cbrt(-0.0) << '\n'
<< "cbrt(+inf) = " << std::cbrt(INFINITY) << '\n'
<< "Precisión y comparación con `pow`:\n"
<< std::setprecision(std::numeric_limits<double>::max_digits10)
<< "cbrt(343) = " << std::cbrt(343) << '\n'
<< "pow(343,1.0/3) = " << std::pow(343, 1.0/3) << '\n'
<< "cbrt(-343) = " << std::cbrt(-343) << '\n'
<< "pow(-343,1.0/3) = " << std::pow(-343, 1.0/3) << '\n';
}
Posible salida:
Uso normal:
cbrt(729) = 9
cbrt(-0.125) = -0.5
Special values:
cbrt(-0) = -0
cbrt(+inf) = inf
Precisión y comparación con `pow`:
cbrt(343) = 7
pow(343,1.0/3) = 6.9999999999999991
cbrt(-343) = -7
pow(-343,1.0/3) = -nan
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 cuadrada de la suma de los cuadrados de dos o tres (C++17) números dados (√x2 +y2 ), (√x2 +y2 +z2 ) (función) |
Documentación de C para cbrt
| |