Namespaces
Variants

std:: cbrt, std:: cbrtf, std:: cbrtl

From cppreference.net
Common mathematical functions
Nearest integer floating point operations
(C++11)
(C++11)
(C++11) (C++11) (C++11)
Floating point manipulation functions
(C++11) (C++11)
(C++11)
(C++11)
Classification and comparison
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
Types
(C++11)
(C++11)
(C++11)
Macro constants
Definido en el encabezado <cmath>
(1)
float cbrt ( float num ) ;

double cbrt ( double num ) ;

long double cbrt ( long double num ) ;
(hasta C++23)
/*floating-point-type*/
cbrt ( /*floating-point-type*/ num ) ;
(desde C++23)
(constexpr desde C++26)
float cbrtf ( float num ) ;
(2) (desde C++11)
(constexpr desde C++26)
long double cbrtl ( long double num ) ;
(3) (desde C++11)
(constexpr desde C++26)
Sobrecarga SIMD (desde C++26)
Definido en el encabezado <simd>
template < /*math-floating-point*/ V >

constexpr /*deduced-simd-t*/ < V >

cbrt ( const V & v_num ) ;
(S) (desde C++26)
Definido en el encabezado <cmath>
template < class Integer >
double cbrt ( Integer num ) ;
(A) (constexpr desde C++26)
1-3) Calcula la raíz cúbica de num . La biblioteca proporciona sobrecargas de std::cbrt para todos los tipos de punto flotante sin calificación cv como el tipo del parámetro. (desde C++23)
S) La sobrecarga SIMD realiza un std::cbrt elemento por elemento en v_num .
(Ver math-floating-point y deduced-simd-t para sus definiciones.)
(desde C++26)
A) Se proporcionan sobrecargas adicionales para todos los tipos enteros, los cuales son tratados como double .
(since C++11)

Contenidos

Parámetros

num - valor de punto flotante o entero

Valor de retorno

Si no ocurren errores, se devuelve la raíz cúbica de num ( 3 num ).

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 .

Si la implementación soporta aritmética de punto flotante IEEE (IEC 60559),

  • si el argumento es ±0 o ±∞, se devuelve sin cambios.
  • si el argumento es NaN, se devuelve NaN.

Notas

std :: cbrt ( num ) is not equivalent to std:: pow ( num, 1.0 / 3 ) because the rational number
1
3
is typically not equal to 1.0 / 3 and std::pow cannot raise a negative base to a fractional exponent. Moreover, std :: cbrt ( num ) usually gives more accurate results than std:: pow ( num, 1.0 / 3 ) (see example).

Las sobrecargas adicionales no requieren ser proporcionadas exactamente como (A) . Solo necesitan ser suficientes para garantizar que para su argumento num de tipo entero, std :: cbrt ( num ) tenga el mismo efecto que std :: cbrt ( static_cast < double > ( num ) ) .

Ejemplo

#include <cmath>
#include <iomanip>
#include <iostream>
#include <limits>
int main()
{
    std::cout
        << "Uso normal:\n"
        << "cbrt(729)       = " << std::cbrt(729) << '\n'
        << "cbrt(-0.125)    = " << std::cbrt(-0.125) << '\n'
        << "Valores especiales:\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';
}

Salida posible:

Uso normal:
cbrt(729)       = 9
cbrt(-0.125)    = -0.5
Valores especiales:
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 ( x y )
(función)
(C++11) (C++11)
calcula la raíz cuadrada ( x )
(función)
(C++11) (C++11) (C++11)
calcula la hipotenusa x 2
+y 2
y x 2
+y 2
+z 2
(desde C++17)

(función)