Namespaces
Variants

sqrt, sqrtf, sqrtl

From cppreference.net
< c ‎ | numeric ‎ | math
Common mathematical functions
Functions
Basic operations
(C99)
(C99)
(C99)
(C99) (C99) (C99) (C23)
Maximum/minimum operations
Exponential functions
Power functions
sqrt
(C99)
(C23)
(C23)

Trigonometric and hyperbolic functions
Nearest integer floating-point
(C99) (C99) (C99)
(C23) (C23) (C23) (C23)
Floating-point manipulation
Narrowing operations
(C23)
(C23)
(C23)
(C23)
(C23)
(C23)
Quantum and quantum exponent
Decimal re-encoding functions
Total order and payload functions
Classification
Error and gamma functions
(C99)
(C99)
(C99)
(C99)
Types
Macro constants
Special floating-point values
Arguments and return values
Error handling
Fast operation indicators
Definiert im Header <math.h>
float sqrtf ( float arg ) ;
(1) (seit C99)
double sqrt ( double arg ) ;
(2)
long double sqrtl ( long double arg ) ;
(3) (seit C99)
Definiert im Header <tgmath.h>
#define sqrt( arg )
(4) (seit C99)
1-3) Berechnet die Quadratwurzel von arg .
4) Typgenerisches Makro: Wenn arg den Typ long double hat, wird sqrtl aufgerufen. Andernfalls, wenn arg einen ganzzahligen Typ oder den Typ double hat, wird sqrt aufgerufen. Andernfalls wird sqrtf aufgerufen. Wenn arg komplex oder imaginär ist, ruft das Makro die entsprechende komplexe Funktion auf ( csqrtf , csqrt , csqrtl ).

Inhaltsverzeichnis

Parameter

arg - Gleitkommawert

Rückgabewert

Wenn keine Fehler auftreten, wird die Quadratwurzel von arg ( arg ) 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 arg 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

sqrt muss laut IEEE-Standard korrekt vom unendlich genauen Ergebnis gerundet werden. 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 fma . Andere Funktionen, einschließlich pow , unterliegen dieser Einschränkung nicht.

Beispiel

#include <errno.h>
#include <fenv.h>
#include <math.h>
#include <stdio.h>
// #pragma STDC FENV_ACCESS ON
int main(void)
{
    // normale Verwendung
    printf("sqrt(100) = %f\n", sqrt(100));
    printf("sqrt(2) = %f\n", sqrt(2));
    printf("golden ratio = %f\n", (1 + sqrt(5)) / 2);
    // spezielle Werte
    printf("sqrt(-0) = %f\n", sqrt(-0.0));
    // Fehlerbehandlung
    errno = 0; feclearexcept(FE_ALL_EXCEPT);
    printf("sqrt(-1.0) = %f\n", sqrt(-1));
    if (errno == EDOM)
        perror("    errno == EDOM");
    if (fetestexcept(FE_INVALID))
        puts("    FE_INVALID was raised");
}

Mögliche Ausgabe:

sqrt(100) = 10.000000
sqrt(2) = 1.414214
golden ratio = 1.618034
sqrt(-0) = -0.000000
sqrt(-1.0) = -nan
    errno = EDOM: Numerical argument out of domain
    FE_INVALID was raised

Referenzen

  • C23-Standard (ISO/IEC 9899:2024):
  • 7.12.7.5 Die sqrt-Funktionen (S: TBD)
  • 7.25 Typgenerische Mathematik <tgmath.h> (S: TBD)
  • F.10.4.5 Die sqrt-Funktionen (S: TBD)
  • C17-Standard (ISO/IEC 9899:2018):
  • 7.12.7.5 Die sqrt-Funktionen (S: TBD)
  • 7.25 Typgenerische Mathematik <tgmath.h> (S: TBD)
  • F.10.4.5 Die sqrt-Funktionen (S: TBD)
  • C11-Standard (ISO/IEC 9899:2011):
  • 7.12.7.5 Die sqrt-Funktionen (S. 249)
  • 7.25 Typgenerische Mathematik <tgmath.h> (S. 373-375)
  • F.10.4.5 Die sqrt-Funktionen (S. 525)
  • C99-Standard (ISO/IEC 9899:1999):
  • 7.12.7.5 The sqrt functions (S. 229-230)
  • 7.22 Type-generic math <tgmath.h> (S. 335-337)
  • F.9.4.5 The sqrt functions (S. 462)
  • C89/C90 Standard (ISO/IEC 9899:1990):
  • 4.5.5.2 Die sqrt-Funktion

Siehe auch

(C99) (C99)
berechnet eine Zahl potenziert mit dem gegebenen Exponenten ( x y )
(Funktion)
(C99) (C99) (C99)
berechnet Kubikwurzel ( 3 x )
(Funktion)
(C99) (C99) (C99)
berechnet Quadratwurzel der Summe der Quadrate zweier gegebener Zahlen ( x 2
+y 2
)
(Funktion)
(C99) (C99) (C99)
berechnet die komplexe Quadratwurzel
(Funktion)