cbrt, cbrtf, cbrtl
Определено в заголовочном файле <math.h> | ||
|---|---|---|
float cbrtf( float arg ); | (1) | (с C99) |
double cbrt( double arg ); | (2) | (с C99) |
long double cbrtl( long double arg ); | (3) | (с C99) |
Определено в заголовочном файле <tgmath.h> | ||
#define cbrt( arg ) | (4) | (с C99) |
1-3) Вычисляет кубический корень из
arg.
4) Универсальный макрос: Если
arg имеет тип long double, вызывается cbrtl. В противном случае, если arg имеет целочисленный тип или тип double, вызывается cbrt. В противном случае вызывается cbrtf.Параметры
| arg | - | значение с плавающей точкой |
Возвращаемое значение
Если ошибки не возникли, возвращается кубический корень из arg (\(\small{\sqrt[3]{arg} }\)3√arg).
Если возникает ошибка из-за переполнения, возвращается правильный результат (после округления).
Обработка ошибок
Ошибки сообщаются согласно спецификации в math_errhandling.
Если реализация поддерживает IEEE арифметику с плавающей точкой (IEC 60559),
- если аргумент равен ±0 или ±∞, он возвращается без изменений
- если аргумент равен NaN, возвращается NaN.
Примечания
cbrt(arg) не эквивалентно pow(arg, 1.0/3), поскольку рациональное число \(\small{\frac1{3} }\)1/3 обычно не равно 1.0/3, и std::pow не может возводить отрицательное основание в дробную степень. Более того, cbrt(arg) обычно дает более точные результаты, чем pow(arg, 1.0/3) (см. пример). Пример
#include <stdio.h>
#include <float.h>
#include <math.h>
int main(void)
{
printf("Normal use:\n"
"cbrt(729) = %f\n", cbrt(729));
printf("cbrt(-0.125) = %f\n", cbrt(-0.125));
printf("Special values:\n"
"cbrt(-0) = %f\n", cbrt(-0.0));
printf("cbrt(+inf) = %f\n", cbrt(INFINITY));
printf("Accuracy:\n"
"cbrt(343) = %.*f\n", DBL_DECIMAL_DIG, cbrt(343));
printf("pow(343,1.0/3) = %.*f\n", DBL_DECIMAL_DIG, pow(343, 1.0/3));
}Возможный вывод:
Normal use: cbrt(729) = 9.000000 cbrt(-0.125) = -0.500000 Special values: cbrt(-0) = -0.000000 cbrt(+inf) = inf Accuracy: cbrt(343) = 7.00000000000000000 pow(343,1.0/3) = 6.99999999999999911
Ссылки
- Стандарт C17 (ISO/IEC 9899:2018):
- 7.12.7.1 Функции cbrt (стр: 180-181)
- 7.25 Универсальная математика <tgmath.h> (стр: 272-273)
- F.10.4.1 Функции cbrt (стр: 381-)
- Стандарт C11 (ISO/IEC 9899:2011):
- 7.12.7.1 Функции cbrt (стр: 247)
- 7.25 Универсальная математика <tgmath.h> (стр: 373-375)
- F.10.4.1 Функции cbrt (стр: 524)
- Стандарт C99 (ISO/IEC 9899:1999):
- 7.12.7.1 Функции cbrt (стр: 228)
- 7.22 Универсальная математика <tgmath.h> (стр: 335-337)
- F.9.4.1 Функции cbrt (стр: 460)
См. также
|
(C99)(C99) | вычисляет число, возведённое в заданную степень (\(\small{x^y}\)xy) (функция) |
|
(C99)(C99) | вычисляет квадратный корень (\(\small{\sqrt{x} }\)√x) (функция) |
|
(C99)(C99)(C99) | вычисляет квадратный корень из суммы квадратов двух заданных чисел (\(\scriptsize{\sqrt{x^2+y^2} }\)√x2+y2) (функция) |
Документация C++ для cbrt |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/c/numeric/math/cbrt