std::acos, std::acosf, std::acosl
| Definiert in der Header-Datei <cmath> |
||
| (1) | ||
float acos ( float num ); double acos ( double num ); |
(bis C++23) | |
| /* Gleitkommazahl-Typ */ acos ( /*Gleitkomma-Typ*/ num ); |
(seit C++23) (constexpr seit C++26) |
|
float acosf( float num ); |
(2) | (seit C++11) (constexpr seit C++26) |
long double acosl( long double num ); |
(3) | (seit C++11) (constexpr seit C++26) |
| SIMD-Überladung (seit C++26) |
||
| Definiert im Header <simd> |
||
| template< /*math-floating-point*/ V > constexpr /*deduzierter-simd-t*/<V> |
(S) | (seit C++26) |
| Zusätzliche Überladungen (seit C++11) |
||
| Definiert in der Header-Datei <cmath> |
||
template< class Integer > double acos ( Integer num ); |
(A) | (constexpr seit C++26) |
std::acos für alle cv-unqualifizierten Gleitkommatypen als Parametertyp bereit.(seit C++23)|
S) Die SIMD-Überladung führt eine elementweise
std::acos auf v_num durch.
|
(seit C++26) |
|
A) Zusätzliche Überladungen werden für alle ganzzahligen Typen bereitgestellt, die als double behandelt werden.
|
(seit C++11) |
Inhalt |
[edit] Parameter
| num | - | Gleitkomma- oder Ganzzahlwert |
[edit] Rückgabewert
Wenn keine Fehler auftreten, wird der Arkuskosinus von num (arccos(num)) im Bereich [0, π] 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 beschrieben gemeldet.
Ein Definitionsbereichsfehler tritt auf, wenn num außerhalb des Bereichs [-1.0, 1.0] liegt.
Wenn die Implementierung IEEE-Gleitkomma-Arithmetik (IEC 60559) unterstützt,
- Wenn das Argument +1 ist, wird der Wert
+0zurückgegeben. - Wenn |num| > 1, tritt ein Definitionsbereichsfehler auf und NaN wird zurückgegeben.
- Wenn das Argument NaN ist, wird NaN zurückgegeben.
[edit] Anmerkungen
Die zusätzlichen Überladungen müssen nicht exakt wie in (A) bereitgestellt werden. Sie müssen lediglich ausreichen, um sicherzustellen, dass für ihr Argument num vom ganzzahligen Typ std::acos(num) dieselbe Wirkung hat wie std::acos(static_cast<double>(num)).
[edit] Beispiel
#include <cerrno> #include <cfenv> #include <cmath> #include <cstring> #include <iostream> // #pragma STDC FENV_ACCESS ON int main() { std::cout << "acos(-1) = " << std::acos(-1) << '\n' << "acos(0.0) = " << std::acos(0.0) << '\n' << "2*acos(0.0) = " << 2 * std::acos(0) << '\n' << "acos(0.5) = " << std::acos(0.5) << '\n' << "3*acos(0.5) = " << 3 * std::acos(0.5) << '\n' << "acos(1) = " << std::acos(1) << '\n'; // error handling errno = 0; std::feclearexcept(FE_ALL_EXCEPT); std::cout << "acos(1.1) = " << std::acos(1.1) << '\n'; if (errno == EDOM) std::cout << " errno == EDOM: " << std::strerror(errno) << '\n'; if (std::fetestexcept(FE_INVALID)) std::cout << " FE_INVALID raised" << '\n'; }
Ausgabe
acos(-1) = 3.14159
acos(0.0) = 1.5708
2*acos(0.0) = 3.14159
acos(0.5) = 1.0472
3*acos(0.5) = 3.14159
acos(1) = 0
acos(1.1) = nan
errno == EDOM: Numerical argument out of domain
FE_INVALID raised[edit] Siehe auch
| (C++11)(C++11) |
berechnet Arkussinus (arcsin(x)) (Funktion) |
| (C++11)(C++11) |
berechnet Arkustangens (arctan(x)) (Funktion) |
| (C++11)(C++11) |
Arkustangens, verwendet Vorzeichen zur Bestimmung der Quadranten (Funktion) |
| (C++11)(C++11) |
berechnet Kosinus (cos(x)) (Funktion) |
| (C++11) |
berechnet den Arkuskosinus einer komplexen Zahl (arccos(z)) (function template) |
| wendet die Funktion std::acos auf jedes Element von valarray an (function template) | |
| C-Dokumentation für acos
| |