std::cbrt, std::cbrtf, std::cbrtl
Von cppreference.com
| Definiert in der Header-Datei <cmath> |
||
| (1) | ||
float cbrt ( float num ); double cbrt ( double num ); |
(bis C++23) | |
| /* Gleitkommazahl-Typ */ cbrt ( /*Gleitkommatyp*/ num ); |
(seit C++23) (constexpr seit C++26) |
|
float cbrtf( float num ); |
(2) | (seit C++11) (constexpr seit C++26) |
long double cbrtl( long double num ); |
(3) | (seit C++11) (constexpr seit C++26) |
| SIMD-Überladung (seit C++26) |
||
| Definiert im Header <simd> |
||
| template< /*math-floating-point*/ V > constexpr /*deduzierter-simd-t*/<V> |
(S) | (seit C++26) |
| Zusätzliche Überladungen (seit C++11) |
||
| Definiert in der Header-Datei <cmath> |
||
template< class Integer > double cbrt ( Integer num ); |
(A) | (constexpr seit C++26) |
1-3) Berechnet die Kubikwurzel von num. Die Bibliothek stellt Überladungen von
std::cbrt für alle cv-unqualifizierten Gleitkommatypen als Parametertyp bereit.(seit C++23)|
S) Die SIMD-Überladung führt ein elementweises
std::cbrt auf v_num durch.
|
(seit C++26) |
|
A) Zusätzliche Überladungen werden für alle ganzzahligen Typen bereitgestellt, die als double behandelt werden.
|
(seit C++11) |
Inhalt |
[bearbeiten] Parameter
| num | - | Gleitkomma- oder Ganzzahlwert |
[bearbeiten] Rückgabewert
Wenn keine Fehler auftreten, wird die Kubikwurzel von num (3√num) zurückgegeben.
Wenn ein Bereichsfehler aufgrund eines Unterlaufs auftritt, wird das korrekte Ergebnis (nach Rundung) zurückgegeben.
[bearbeiten] Fehlerbehandlung
Fehler werden wie in math_errhandling beschrieben gemeldet.
Wenn die Implementierung IEEE-Gleitkomma-Arithmetik (IEC 60559) unterstützt,
- Wenn das Argument ±0 oder ±∞ ist, wird es unverändert zurückgegeben.
- Wenn das Argument NaN ist, wird NaN zurückgegeben.
[bearbeiten] Hinweise
std::cbrt(num) ist nicht äquivalent zu std::pow(num, 1.0 / 3), da die rationale Zahl| 1 |
| 3 |
Die zusätzlichen Überladungen müssen nicht exakt wie (A) bereitgestellt werden. Sie müssen nur ausreichen, um sicherzustellen, dass für ihr Argument num vom ganzzahligen Typ, std::cbrt(num) denselben Effekt hat wie std::cbrt(static_cast<double>(num)).
[bearbeiten] Beispiel
Führen Sie diesen Code aus
#include <cmath> #include <iomanip> #include <iostream> #include <limits> int main() { std::cout << "Normal use:\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' << "Accuracy and comparison with `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'; }
Mögliche Ausgabe
Normal use: cbrt(729) = 9 cbrt(-0.125) = -0.5 Special values: cbrt(-0) = -0 cbrt(+inf) = inf Accuracy and comparison with `pow`: cbrt(343) = 7 pow(343,1.0/3) = 6.9999999999999991 cbrt(-343) = -7 pow(-343,1.0/3) = -nan
[bearbeiten] Siehe auch
| (C++11)(C++11) |
erhöht eine Zahl zur gegebenen Potenz (xy) (Funktion) |
| (C++11)(C++11) |
berechnet die Quadratwurzel (√x) (Funktion) |
| (C++11)(C++11)(C++11) |
berechnet die Hypotenuse √x2 +y2 und √x2 +y2 +z2 (seit C++17) (Funktion) |
| C-Dokumentation für cbrt
| |