sqrt, sqrtf, sqrtl
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
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) |
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 ( \({\small \sqrt{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 (
\(\small{x^y}\)
x
y
)
(Funktion) |
|
(C99)
(C99)
(C99)
|
berechnet Kubikwurzel (
\(\small{\sqrt[3]{x} }\)
3
√
x
)
(Funktion) |
|
(C99)
(C99)
(C99)
|
berechnet Quadratwurzel der Summe der Quadrate zweier gegebener Zahlen (
\(\scriptsize{\sqrt{x^2+y^2} }\)
√
x
2
+y 2 ) (Funktion) |
|
(C99)
(C99)
(C99)
|
berechnet die komplexe Quadratwurzel
(Funktion) |
|
C++-Dokumentation
für
sqrt
|
|