math_cos

math_cos (코사인)

std::cos는 라디안으로 측정된 num의 코사인을 계산하는 함수예요. 결과 범위는 [-1.0, +1.0]이에요.

출처: cppreference

본문

<cmath> 헤더에 정의되어 있고, 시그니처는 다음과 같아요.

float       cos ( float num );
double      cos ( double num );
long double cos ( long double num );

(1) (until C++23)

/*floating-point-type*/
            cos ( /*floating-point-type*/ num );

(since C++23) (constexpr since C++26)

float       cosf( float num );

(2) (since C++11) (constexpr since C++26)

long double cosl( long double num );

(3) (since C++11) (constexpr since C++26)

SIMD 오버로드 (since C++26): <simd> 헤더에 정의돼요.

template< /*math-floating-point*/ V >
constexpr /*deduced-simd-t*/<V>
            cos ( const V& v_num );

(S) (since C++26)

추가 오버로드 (since C++11): <cmath> 헤더에 정의돼요.

template< class Integer >
double      cos ( Integer num );

(A) (constexpr since C++26)

  • 1-3) 라디안으로 측정된 num의 코사인을 계산해요. 라이브러리는 매개변수의 타입으로 모든 cv 한정되지 않은 부동소수점 타입에 대한 std::cos 오버로드를 제공해요. (C++23부터)
  • S) SIMD 오버로드는 v_num에 요소별 std::cos을 수행해요.
  • A) 모든 정수 타입에 대해 추가 오버로드가 제공되는데, double로 취급돼요.

(C++11부터)

매개변수 (Parameters)

  • num — 라디안의 각도를 나타내는 부동소수점 또는 정수 값

반환값 (Return value)

오류가 없다면 범위 [-1.0, +1.0]의 num의 코사인(cos(num))을 반환해요.

num의 크기가 크면 결과가 거의 또는 전혀 의미가 없을 수 있어요. (until C++11)

도메인 오류가 발생하면 구현 정의 값을 반환해요 (NaN 지원 시 NaN).

언더플로로 인한 범위 오류가 발생하면 (반올림 후의) 올바른 결과를 반환해요.

오류 처리 (Error handling)

오류는 math_errhandling에 지정된 대로 보고돼요.

구현이 IEEE 부동소수점 연산(IEC 60559)을 지원한다면:

  • 인자가 ±0이면 결과는 1.0이에요.
  • 인자가 ±∞이면 NaN을 반환하고 FE_INVALID를 발생시켜요.
  • 인자가 NaN이면 NaN을 반환해요.

참고 (Notes)

인자가 무한인 경우는 C에서 도메인 오류로 지정되지 않지만, POSIX에서는 도메인 오류로 정의돼요.

추가 오버로드는 정확히 (A) 형태로 제공될 필요는 없어요. 정수 타입의 인자 num에 대해 std::cos(num)std::cos(static_cast<double>(num))과 같은 효과만 있으면 충분해요.

예제 (Example)

이 코드를 실행해 봐요.

#include <cmath>
#include <iostream>

int main()
{
    const double pi = std::acos(-1.0);
    std::cout << "cos(0) = " << std::cos(0) << '\n'
              << "cos(pi/2) = " << std::cos(pi / 2) << '\n'
              << "cos(pi) = " << std::cos(pi) << '\n';
}

더 알아보기 (Learn more)

cppreference