sqrt, sqrtf, sqrtl
| Definiert in 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 in 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).Inhalt |
[edit] Parameter
| arg | - | Gleitkommawert |
[edit] Rückgabewert
Wenn keine Fehler auftreten, wird die Quadratwurzel von arg (√arg) zurückgegeben.
Wenn ein Domänenfehler auftritt, wird ein implementierungsabhängiger Wert zurückgegeben (NaN, wo unterstützt).
Wenn ein Bereichsfehler aufgrund eines Unterlaufs auftritt, wird das korrekte Ergebnis (nach Rundung) zurückgegeben.
[edit] Fehlerbehandlung
Fehler werden wie in math_errhandling angegeben gemeldet.
Ein Domänenfehler tritt auf, wenn arg kleiner als Null ist.
Wenn die Implementierung IEEE-Gleitkomma-Arithmetik (IEC 60559) unterstützt,
- Wenn das Argument kleiner als -0 ist, wird FE_INVALID ausgelöst und NaN zurückgegeben.
- Wenn das Argument +∞ oder ±0 ist, wird es unverändert zurückgegeben.
- Wenn das Argument NaN ist, wird NaN zurückgegeben.
[edit] Hinweise
sqrt muss gemäß dem IEEE-Standard korrekt gerundet sein vom unendlich präzisen Ergebnis. 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, sind nicht so eingeschränkt.
[edit] Beispiel
#include <errno.h> #include <fenv.h> #include <math.h> #include <stdio.h> // #pragma STDC FENV_ACCESS ON int main(void) { // normal use printf("sqrt(100) = %f\n", sqrt(100)); printf("sqrt(2) = %f\n", sqrt(2)); printf("golden ratio = %f\n", (1 + sqrt(5)) / 2); // special values printf("sqrt(-0) = %f\n", sqrt(-0.0)); // error handling 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[edit] Referenzen
- C23-Standard (ISO/IEC 9899:2024)
- 7.12.7.5 The sqrt functions (p: TBD)
- 7.25 Typ-generische Mathematik <tgmath.h> (S. TBD)
- F.10.4.5 The sqrt functions (p: TBD)
- C17-Standard (ISO/IEC 9899:2018)
- 7.12.7.5 The sqrt functions (p: TBD)
- 7.25 Typ-generische Mathematik <tgmath.h> (S. TBD)
- F.10.4.5 The sqrt functions (p: TBD)
- C11-Standard (ISO/IEC 9899:2011)
- 7.12.7.5 The sqrt functions (p: 249)
- 7.25 Typ-generische Mathematik <tgmath.h> (S. 373-375)
- F.10.4.5 The sqrt functions (p: 525)
- C99-Standard (ISO/IEC 9899:1999)
- 7.12.7.5 The sqrt functions (p: 229-230)
- 7.22 Typ-generische Mathematik <tgmath.h> (S. 335-337)
- F.9.4.5 The sqrt functions (p: 462)
- C89/C90-Standard (ISO/IEC 9899:1990)
- 4.5.5.2 The sqrt function
[edit] Siehe auch
| (C99)(C99) |
berechnet eine Zahl hoch die gegebene Potenz (xy) (Funktion) |
| (C99)(C99)(C99) |
berechnet die Kubikwurzel (3√x) (Funktion) |
| (C99)(C99)(C99) |
berechnet die Quadratwurzel der Summe der Quadrate zweier gegebener Zahlen (√x2 +y2 ) (Funktion) |
| (C99)(C99)(C99) |
berechnet die komplexe Quadratwurzel (Funktion) |
| C++ Dokumentation für sqrt
| |