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
Определено в заголовке <cmath>
(1)
float cbrt ( float num ) ;

double cbrt ( double num ) ;

long double cbrt ( long double num ) ;
(до C++23)
/*floating-point-type*/
cbrt ( /*floating-point-type*/ num ) ;
(начиная с C++23)
(constexpr начиная с C++26)
float cbrtf ( float num ) ;
(2) (начиная с C++11)
(constexpr начиная с C++26)
long double cbrtl ( long double num ) ;
(3) (начиная с C++11)
(constexpr начиная с C++26)
SIMD перегрузка (начиная с C++26)
Определено в заголовке <simd>
template < /*math-floating-point*/ V >

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

cbrt ( const V & v_num ) ;
(S) (начиная с C++26)
Определено в заголовке <cmath>
template < class Integer >
double cbrt ( Integer num ) ;
(A) (constexpr начиная с C++26)
1-3) Вычисляет кубический корень из num . Библиотека предоставляет перегрузки std::cbrt для всех cv-неквалифицированных типов с плавающей запятой в качестве типа параметра. (since C++23)
S) Перегрузка SIMD выполняет поэлементное вычисление std::cbrt для v_num .
(См. math-floating-point и deduced-simd-t для их определений.)
(начиная с C++26)
A) Дополнительные перегрузки предоставляются для всех целочисленных типов, которые трактуются как double .
(since C++11)

Содержание

Параметры

num - значение с плавающей точкой или целое число

Возвращаемое значение

Если ошибок не возникает, возвращается кубический корень из num ( 3 num ).

Если происходит ошибка диапазона из-за потери значимости (underflow), возвращается корректный результат (после округления).

Обработка ошибок

Ошибки сообщаются, как указано в math_errhandling .

Если реализация поддерживает арифметику с плавающей запятой IEEE (IEC 60559),

  • если аргумент равен ±0 или ±∞, он возвращается без изменений.
  • если аргумент равен NaN, возвращается NaN.

Примечания

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).

Дополнительные перегрузки не обязаны быть предоставлены в точности как (A) . Они лишь должны быть достаточными для обеспечения того, чтобы для их аргумента num целочисленного типа, std :: cbrt ( num ) имел тот же эффект, что и std :: cbrt ( static_cast < double > ( num ) ) .

Пример

#include <cmath>
#include <iomanip>
#include <iostream>
#include <limits>
int main()
{
    std::cout
        << "Обычное использование:\n"
        << "cbrt(729)       = " << std::cbrt(729) << '\n'
        << "cbrt(-0.125)    = " << std::cbrt(-0.125) << '\n'
        << "Специальные значения:\n"
        << "cbrt(-0)        = " << std::cbrt(-0.0) << '\n'
        << "cbrt(+inf)      = " << std::cbrt(INFINITY) << '\n'
        << "Точность и сравнение с `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';
}

Возможный вывод:

Обычное использование:
cbrt(729)       = 9
cbrt(-0.125)    = -0.5
Специальные значения:
cbrt(-0)        = -0
cbrt(+inf)      = inf
Точность и сравнение с `pow`:
cbrt(343)       = 7
pow(343,1.0/3)  = 6.9999999999999991
cbrt(-343)      = -7
pow(-343,1.0/3) = -nan

Смотрите также

(C++11) (C++11)
возводит число в заданную степень ( x y )
(функция)
(C++11) (C++11)
вычисляет квадратный корень ( x )
(функция)
(C++11) (C++11) (C++11)
вычисляет гипотенузу x 2
+y 2
и x 2
+y 2
+z 2
(since C++17)

(функция)
C documentation для cbrt