std:: sqrt, std:: sqrtf, std:: sqrtl
|
Definiert in Header
<cmath>
|
||
| (1) | ||
|
float
sqrt
(
float
num
)
;
double
sqrt
(
double
num
)
;
|
(bis C++23) | |
|
/*floating-point-type*/
sqrt ( /*floating-point-type*/ num ) ; |
(seit C++23)
(constexpr seit C++26) |
|
|
float
sqrtf
(
float
num
)
;
|
(2) |
(seit C++11)
(constexpr seit C++26) |
|
long
double
sqrtl
(
long
double
num
)
;
|
(3) |
(seit C++11)
(constexpr seit C++26) |
|
SIMD-Überladung
(seit C++26)
|
||
|
Definiert in Header
<simd>
|
||
|
template
<
/*math-floating-point*/
V
>
constexpr
/*deduced-simd-t*/
<
V
>
|
(S) | (seit C++26) |
|
Zusätzliche Überladungen
(seit C++11)
|
||
|
Definiert in Header
<cmath>
|
||
|
template
<
class
Integer
>
double sqrt ( Integer num ) ; |
(A) | (constexpr seit C++26) |
std::sqrt
für alle cv-unqualifizierten Gleitkommatypen als Typ des Parameters an.
(since C++23)
|
S)
Die SIMD-Überladung führt eine elementweise
std::sqrt
auf
v_num
aus.
|
(seit C++26) |
|
A)
Zusätzliche Überladungen werden für alle Ganzzahltypen bereitgestellt, die als
double
behandelt werden.
|
(since C++11) |
Inhaltsverzeichnis |
Parameter
| num | - | Gleitkomma- oder Ganzzahlwert |
Rückgabewert
Wenn keine Fehler auftreten, wird die Quadratwurzel von num ( √ num ) zurückgegeben.
Wenn ein Domänenfehler auftritt, wird ein implementierungsdefinierter Wert zurückgegeben (NaN, sofern unterstützt).
Wenn ein Bereichsfehler aufgrund von Unterlauf auftritt, wird das korrekte Ergebnis (nach Rundung) zurückgegeben.
Fehlerbehandlung
Fehler werden gemeldet, wie in math_errhandling spezifiziert.
Ein Domänenfehler tritt auf, wenn num kleiner als null ist.
Wenn die Implementierung IEEE-Gleitkommaarithmetik (IEC 60559) unterstützt,
- Wenn das Argument kleiner als -0 ist, FE_INVALID wird ausgelöst und NaN wird zurückgegeben.
- Wenn das Argument +∞ oder ±0 ist, wird es unverändert zurückgegeben.
- Wenn das Argument NaN ist, wird NaN zurückgegeben.
Hinweise
std::sqrt
ist laut IEEE-Standard verpflichtet, das unendlich genaue Ergebnis korrekt zu runden. Insbesondere wird das exakte Ergebnis erzeugt, wenn es im Fließkommatyp dargestellt werden kann. Die einzigen anderen Operationen, die dies erfordern, sind die
arithmetischen Operatoren
und die Funktion
std::fma
. Andere Funktionen, einschließlich
std::pow
, unterliegen dieser Einschränkung nicht.
Die zusätzlichen Überladungen müssen nicht exakt wie in (A) bereitgestellt werden. Sie müssen lediglich sicherstellen, dass für ihr Argument num vom Ganzzahltyp std :: sqrt ( num ) dieselbe Wirkung hat wie std :: sqrt ( static_cast < double > ( num ) ) .
Beispiel
#include <cerrno> #include <cfenv> #include <cmath> #include <cstring> #include <iostream> // #pragma STDC FENV_ACCESS ON int main() { // normale Verwendung std::cout << "sqrt(100) = " << std::sqrt(100) << '\n' << "sqrt(2) = " << std::sqrt(2) << '\n' << "golden ratio = " << (1 + std::sqrt(5)) / 2 << '\n'; // spezielle Werte std::cout << "sqrt(-0) = " << std::sqrt(-0.0) << '\n'; // Fehlerbehandlung errno = 0; std::feclearexcept(FE_ALL_EXCEPT); std::cout << "sqrt(-1.0) = " << std::sqrt(-1) << '\n'; if (errno == EDOM) std::cout << " errno = EDOM " << std::strerror(errno) << '\n'; if (std::fetestexcept(FE_INVALID)) std::cout << " FE_INVALID ausgelöst\n"; }
Mögliche Ausgabe:
sqrt(100) = 10
sqrt(2) = 1.41421
golden ratio = 1.61803
sqrt(-0) = -0
sqrt(-1.0) = -nan
errno = EDOM Numerical argument out of domain
FE_INVALID ausgelöst
Siehe auch
|
(C++11)
(C++11)
|
Potenziert eine Zahl mit dem gegebenen Exponenten (
x
y
)
(Funktion) |
|
(C++11)
(C++11)
(C++11)
|
berechnet die Kubikwurzel (
3
√
x
)
(Funktion) |
|
(C++11)
(C++11)
(C++11)
|
berechnet die Hypotenuse
√
x
2
+y 2 und √ x 2 +y 2 +z 2 (seit C++17) (Funktion) |
|
komplexe Quadratwurzel im Bereich der rechten Halbebene
(Funktionstemplate) |
|
|
wendet die Funktion
std::sqrt
auf jedes Element des valarray an
(Funktionstemplate) |
|
|
C-Dokumentation
für
sqrt
|
|