Namespaces
Variants

std:: sqrt, std:: sqrtf, std:: sqrtl

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
Definiert in Header <cmath>
(1)
float sqrt ( float num ) ;

double sqrt ( double num ) ;

long double sqrt ( long 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 >

sqrt ( const V & v_num ) ;
(S) (seit C++26)
Definiert in Header <cmath>
template < class Integer >
double sqrt ( Integer num ) ;
(A) (constexpr seit C++26)
1-3) Berechnet die Quadratwurzel von num . Die Bibliothek bietet Überladungen von 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.
(Siehe math-floating-point und deduced-simd-t für deren Definitionen.)
(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)