std::cos, std::cosf, std::cosl
| Definiert in der Header-Datei <cmath> |
||
| (1) | ||
float cos ( float num ); double cos ( double num ); |
(bis C++23) | |
| /* Gleitkommazahl-Typ */ cos ( /*Gleitkommazahl-Typ*/ num ); |
(seit C++23) (constexpr seit C++26) |
|
float cosf( float num ); |
(2) | (seit C++11) (constexpr seit C++26) |
long double cosl( 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 cos ( Integer num ); |
(A) | (constexpr seit C++26) |
std::cos für alle cv-unqualifizierten Gleitkommazahltypen als Parametertyp bereit.(seit C++23)|
S) Die SIMD-Überladung führt eine elementweise
std::cos 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, der den Winkel in Radiant darstellt |
[edit] Rückgabewert
Wenn keine Fehler auftreten, wird der Kosinus von num (cos(num)) im Bereich [-1.0, +1.0] zurückgegeben.
|
Das Ergebnis hat möglicherweise wenig oder keine Bedeutung, wenn die Magnitude von num groß ist. |
(bis C++11) |
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.
Wenn die Implementierung IEEE-Gleitkomma-Arithmetik (IEC 60559) unterstützt,
- Wenn das Argument ±0 ist, ist das Ergebnis 1.0.
- Wenn das Argument ±∞ ist, wird NaN zurückgegeben und FE_INVALID wird ausgelöst.
- Wenn das Argument NaN ist, wird NaN zurückgegeben.
[edit] Anmerkungen
Der Fall, dass das Argument unendlich ist, ist in C nicht als Domänenfehler spezifiziert, aber er ist als Domänenfehler in POSIX definiert.
Die zusätzlichen Überladungen müssen nicht genau als (A) bereitgestellt werden. Sie müssen nur ausreichend sein, um sicherzustellen, dass für ihr Argument num vom Ganzzahltyp std::cos(num) denselben Effekt hat wie std::cos(static_cast<double>(num)).
[edit] Beispiel
#include <cerrno> #include <cfenv> #include <cmath> #include <iomanip> #include <iostream> #include <numbers> // #pragma STDC FENV_ACCESS ON constexpr double pi = std::numbers::pi; // or std::acos(-1) before C++20 constexpr double your_cos(double x) { double cos{1}, pow{x}; for (auto fac{1ull}, n{1ull}; n != 19; fac *= ++n, pow *= x) if ((n & 1) == 0) cos += (n & 2 ? -pow : pow) / fac; return cos; } int main() { std::cout << std::setprecision(10) << std::showpos << "Typical usage:\n" << "std::cos(pi/3) = " << std::cos(pi / 3) << '\n' << "your cos(pi/3) = " << your_cos(pi / 3) << '\n' << "std::cos(pi/2) = " << std::cos(pi / 2) << '\n' << "your cos(pi/2) = " << your_cos(pi / 2) << '\n' << "std::cos(-3*pi/4) = " << std::cos(-3 * pi / 4) << '\n' << "your cos(-3*pi/4) = " << your_cos(-3 * pi / 4) << '\n' << "Special values:\n" << "std::cos(+0) = " << std::cos(0.0) << '\n' << "std::cos(-0) = " << std::cos(-0.0) << '\n'; // error handling std::feclearexcept(FE_ALL_EXCEPT); std::cout << "cos(INFINITY) = " << std::cos(INFINITY) << '\n'; if (std::fetestexcept(FE_INVALID)) std::cout << " FE_INVALID raised\n"; }
Mögliche Ausgabe
Typical usage:
std::cos(pi/3) = +0.5
your cos(pi/3) = +0.5
std::cos(pi/2) = +6.123233996e-17
your cos(pi/2) = -3.373452105e-15
std::cos(-3*pi/4) = -0.7071067812
your cos(-3*pi/4) = -0.7071067812
Special values:
std::cos(+0) = +1
std::cos(-0) = +1
cos(INFINITY) = -nan
FE_INVALID raised[edit] Siehe auch
| (C++11)(C++11) |
berechnet Sinus (sin(x)) (Funktion) |
| (C++11)(C++11) |
berechnet Tangens (tan(x)) (Funktion) |
| (C++11)(C++11) |
berechnet Arkuskosinus (arccos(x)) (Funktion) |
| berechnet den Kosinus einer komplexen Zahl (cos(z)) (function template) | |
| wendet die Funktion std::cos auf jedes Element von valarray an (function template) | |
| C-Dokumentation für cos
| |