std::cos,st...f,std::cosl(3)
π NAME
std::cos, std::cosf, std::cosl β bestie, this is the cosine function from the C++ Standard Library (that's the <cmath> crew, we love them) π
β¨ SYNOPSIS
okay so first things first, everything here lives in the header <cmath>:
Defined in header <cmath>
float cos ( float num );
double cos ( double num ); (until C++23)
long double cos ( long double num );
/* floating-point-type */ (since C++23)
cos ( /* floating-point-type */ num ); (constexpr since C++26)
float cosf( float num ); (1) (2) (since C++11)
(constexpr since C++26)
long double cosl( long double num ); (3) (since C++11)
(constexpr since C++26)
Additional overloads (since C++11)
Defined in header <cmath>
template< class Integer > (A) (constexpr since C++26)
double cos ( Integer num );
So like, breaking it down for you πΈ:
- 1-3) Computes the cosine of
num(measured in radians). Like, actual radians, not degrees, we're not doing that today π - Since C++23, the library provides overloads of
std::cosfor all cv-unqualified floating-point types as the type of the parameter. Slay. - A) Additional overloads are provided for all integer types (since C++11), and those get treated as
double.
π PARAMETERS
numβ a floating-point or integer value representing an angle in radians π¦
πΈ RETURN VALUE
If no errors occur, you get the cosine of num (that's cos(num)) in the range [-1.0, +1.0]. Iconic range tbh π
until C++11: heads up bestie β the result may have little or no significance if the magnitude of num is large. Like, don't come crying to me π
If a domain error occurs, an implementation-defined value is returned (NaN where supported).
If a range error occurs due to underflow, the correct result (after rounding) is returned. Good for it.
π¦ ERROR HANDLING
Errors are reported as specified in math_errhandling. fr fr, go read that one too.
If the implementation supports IEEE floating-point arithmetic (IEC 60559), then:
- if the argument is
Β±0, the result is1.0β¨ - if the argument is
Β±β,NaNis returned andFE_INVALIDis raised π - if the argument is
NaN,NaNis returned (garbage in, garbage out, no cap)
π NOTES
The case where the argument is infinite is not specified to be a domain error in C β but it is defined as a domain error in POSIX. So like, C is chill about it and POSIX is not. Pick your fighter π«Ά
The additional overloads are not required to be provided exactly as (A). They only need to be sufficient to ensure that for their argument num of integer type, std::cos(num) has the same effect as std::cos(static_cast<double>(num)). That's the whole vibe check, nothing more required π
π₯ EXAMPLE
go ahead, run it, I'll wait π
// Run this code
#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";
}
π POSSIBLE OUTPUT
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
not the +6.123233996e-17 for pi/2 π that's the floating-point representation of zero being a little dramatic, love that for us
π SEE ALSO
the whole trig family, they're all in the group chat π
sin,sinf(C++11),sinl(C++11) β computes sine (sin(x)) (function) π¦tan,tanf(C++11),tanl(C++11) β computes tangent (tan(x)) (function) π₯acos,acosf(C++11),acosl(C++11) β computes arc cosine (arccos(x)) (function) πΈcos(std::complex)β computes cosine of a complex number (cos(z)) (function template) πcos(std::valarray)β applies the functionstd::costo each element of valarray (function template) β- C documentation for
cosβ yes there's a C one too, go off π
and that's the page, bestie!! πβ¨ this one came from cppreference.com, version 2024.06.10 β mwah, thanks for reading, go compute some cosines ππ«Ά
π¦ where this page comes from
- nixpkgs unstable: stdman 2024.07.05
- opensuse-leap 16.0: stdman 2024.07.05-bp160.1.9 Β· MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms