asin, asinf, asinl
Von cppreference.com
| Definiert in Header <math.h> |
||
| float asinf( float arg ); |
(1) | (seit C99) |
| double asin( double arg ); |
(2) | |
| long double asinl( long double arg ); |
(3) | (seit C99) |
| _Decimal32 asind32( _Decimal32 arg ); |
(4) | (seit C23) |
| _Decimal64 asind64( _Decimal64 arg ); |
(5) | (seit C23) |
| _Decimal128 asind128( _Decimal128 arg ); |
(6) | (seit C23) |
| Definiert in Header <tgmath.h> |
||
| #define asin( arg ) |
(7) | (seit C99) |
1-6) Berechnet die Hauptwerte des Arkussinus von arg.
7) Typ-generische Makro: Wenn das Argument vom Typ long double ist, wird (3) (
asinl) aufgerufen. Andernfalls, wenn das Argument einen ganzzahligen Typ oder den Typ double hat, wird (2) (asin) aufgerufen. Andernfalls wird (1) (asinf) aufgerufen. Wenn das Argument komplex ist, ruft das Makro die entsprechende komplexe Funktion auf (casinf, casin, casinl).|
Die Funktionen (4-6) werden nur dann deklariert, wenn die Implementierung |
(seit C23) |
Inhalt |
[bearbeiten] Parameter
| arg | - | Gleitkommawert |
[bearbeiten] Rückgabewert
Wenn keine Fehler auftreten, wird der Arkussinus von arg (arcsin(arg)) im Bereich [-| π |
| 2 |
| π |
| 2 |
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.
[bearbeiten] Fehlerbehandlung
Fehler werden wie in math_errhandling angegeben gemeldet.
Ein Domänenfehler tritt auf, wenn arg außerhalb des Bereichs [-1.0; 1.0] liegt.
Wenn die Implementierung IEEE-Gleitkomma-Arithmetik (IEC 60559) unterstützt
- wenn das Argument ±0 ist, wird es unverändert zurückgegeben;
- Wenn |arg| > 1, tritt ein Domänenfehler auf und NaN wird zurückgegeben;
- Wenn das Argument NaN ist, wird NaN zurückgegeben.
[bearbeiten] Beispiel
Führen Sie diesen Code aus
#include <errno.h> #include <fenv.h> #include <math.h> #include <stdio.h> #include <string.h> #ifndef __GNUC__ #pragma STDC FENV_ACCESS ON #endif int main(void) { printf("asin( 1.0) = %+f, 2*asin( 1.0)=%+f\n", asin(1), 2 * asin(1)); printf("asin(-0.5) = %+f, 6*asin(-0.5)=%+f\n", asin(-0.5), 6 * asin(-0.5)); // special values printf("asin(0.0) = %1f, asin(-0.0)=%f\n", asin(+0.0), asin(-0.0)); // error handling errno = 0; feclearexcept(FE_ALL_EXCEPT); printf("asin(1.1) = %f\n", asin(1.1)); if (errno == EDOM) perror(" errno == EDOM"); if (fetestexcept(FE_INVALID)) puts(" FE_INVALID raised"); }
Mögliche Ausgabe
asin( 1.0) = +1.570796, 2*asin( 1.0)=+3.141593
asin(-0.5) = -0.523599, 6*asin(-0.5)=-3.141593
asin(0.0) = 0.000000, asin(-0.0)=-0.000000
asin(1.1) = nan
errno == EDOM: Numerical argument out of domain
FE_INVALID raised[bearbeiten] Referenzen
- C23-Standard (ISO/IEC 9899:2024)
- 7.12.4.2 The asin functions (p: TBD)
- 7.25 Typ-generische Mathematik <tgmath.h> (S. TBD)
- F.10.1.2 The asin functions (p: TBD)
- C17-Standard (ISO/IEC 9899:2018)
- 7.12.4.2 The asin functions (p: 174)
- 7.25 Typ-generische Mathematik <tgmath.h> (S. 272-273)
- F.10.1.2 The asin functions (p: 378)
- C11-Standard (ISO/IEC 9899:2011)
- 7.12.4.2 The asin functions (p: 238)
- 7.25 Typ-generische Mathematik <tgmath.h> (S. 373-375)
- F.10.1.2 The asin functions (p: 518)
- C99-Standard (ISO/IEC 9899:1999)
- 7.12.4.2 The asin functions (p: 219)
- 7.22 Typ-generische Mathematik <tgmath.h> (S. 335-337)
- F.9.1.2 The asin functions (p: 456)
- C89/C90-Standard (ISO/IEC 9899:1990)
- 4.5.2.2 The asin function
[bearbeiten] Siehe auch
| (C99)(C99) |
berechnet Arkuskosinus (arccos(x)) (Funktion) |
| (C99)(C99) |
berechnet Arkustangens (arctan(x)) (Funktion) |
| (C99)(C99) |
berechnet Arkustangens und verwendet Vorzeichen zur Bestimmung der Quadranten (Funktion) |
| (C99)(C99) |
berechnet Sinus (sin(x)) (Funktion) |
| (C99)(C99)(C99) |
berechnet den komplexen Arkussinus (Funktion) |
| C++ Dokumentation für asin
| |