{{위키데이터 속성 추적}}
{{C 표준 라이브러리}}
{{C POSIX 라이브러리}}
'''C 수식 함수'''는 기초 수식 함수들을 구현하는 [[C 프로그래밍 언어]]의 [[표준 라이브러리]] 안의 함수들의 모임이다.<ref name="c99">{{서적 인용| url=http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf | title=ISO/IEC 9899:1999 specification | at=p. 212, § 7.12 }}</ref><ref name="c_primer">{{서적 인용|title=C primer plus | first=Stephen | last=Prata | year=2004 | publisher=Sams Publishing | isbn=0-672-32696-5 | at=Appendix B, Section V: The Standard ANSI C Library with C99 Additions}}</ref>

== 함수 개요 ==
'''math.h'''는 여러 수학 함수들을 포함하는 [[C 언어]]의 [[C 표준 라이브러리|표준 라이브러리]]이다. 대부분의 함수들이 부동소수점을 다루며, 각도는 라디안을 사용한다.

{| class="wikitable"
! 함수 !! 설명
|-
!colspan=2| 삼각 함수
|-
| double '''sin''' ( double x );
||사인 x를 구한다.
|-
| double '''cos''' ( double x );
||코사인 x를 구한다.
|-
| double '''tan''' ( double x );
||탄젠트 x를 구한다.
|-
!colspan=2| 역 삼각 함수
|-
| double '''asin''' ( double x );
||아크 사인 x를 구한다.
|-
| double '''acos''' ( double x );
||아크 코사인 x를 구한다.
|-
| double '''atan''' ( double x );
||아크 탄젠트 x를 구한다.
|-
| double '''atan2''' ( double y, double x );
||아크 탄젠트 y/x를 구한다.
|-
!colspan=2| 쌍곡선 함수
|-
| double '''sinh''' ( double x );
||하이퍼볼릭 사인 x를 구한다.
|-
| double '''cosh''' ( double x );
||하이퍼볼릭 코사인 x를 구한다.
|-
| double '''tanh''' ( double x );
||하이퍼볼릭 탄젠트 x를 구한다.
|-
!colspan=2| 지수 · 대수 함수
|-
| double '''exp''' ( double x );
||e<sup>x</sup>를 구한다.
|-
| double '''[[부동소수점|frexp]]''' ( double x, int * exp );
||지수를 exp가 가리키는 변수에 저장하고 가수를 반환한다.
|-
| double '''ldexp''' ( double x, int exp );
||x * 2<sup>exp</sup>를 반환한다.
|-
| double '''log''' ( double x );
||log<sub>e</sub> x를 구한다.
|-
| double '''log10''' ( double x );
||log<sub>10</sub> x를 구한다.
|-
| double '''modf''' ( double x, double * intpart );
||정수부를 intpart가 가리키는 변수에 저장하고 소수부를 반환한다.
|-
!colspan=2| 거듭제곱 · 거듭제곱근 · 올림 · 내림 · 절댓값 · 나머지 함수
|-
| double '''pow''' ( double x, double y );
||x<sup>y</sup>를 구한다.
|-
| double '''sqrt''' ( double x );
||<math>\sqrt{x}</math>를 구한다.
|-
| double '''ceil''' ( double x );
||x보다 작지 않은 가장 작은 정수를 구한다.
|-
| double '''floor''' ( double x );
||x보다 크지 않은 가장 큰 정수를 구한다.
|-
| double '''fabs''' (double x);
||x의 [[절댓값]]을 구한다.
|-
| double '''fmod''' ( double x, double y );
||x를 y로 나눈 나머지를 구한다.
|-
|}

==XSI에서 추가된 것들==
이 함수들은 ANSI나 표준 C에는 등록되지 않았다.
{| class="wikitable"
|-
! 이름 !! 설명
|-
| double '''j0'''(double x) || 밑이 0인 제 1종 베셀 함수
|-
| double '''j1'''(double x) || 밑이 1인 제 1종 베셀 함수
|-
| double '''jn'''(int n,double x)|| 밑이 n인 제 1종 베셀 함수
|-
| double '''scalb'''(double x,int y)|| ''x'' * <code>FLT_RADIX</code><sup>''y''</sup>
|-
| double '''y0'''(double x) || 밑이 0인 제 2종 베셀 함수
|-
| double '''y1'''(double x) || 밑이 1인 제 2종 베셀 함수
|-
| double '''yn'''(int n,double x) || 밑이 n인 제 2종 베셀 함수
|}

The <code>double</code>-to-string conversion functions <code>ecvt</code>, <code>fcvt</code> and <code>gcvt</code> have been deprecated in favour of <code>[[sprintf]]</code>.

==변수 · 상수 · 형식==
{| class="wikitable"
! 이름 !! 설명
|-
!colspan=2| 상수
|-
| HUGE_VAL
||아주 큰 값을 나타낸다. 수학 계산에서 결과가 너무 커 오버플로우가 나면 이 값을 반환한다.
|-
|M_E || 자연상수 e
|-
|M_LOG2E || log<sub>2</sub>e
|-
|M_LOG10E || log<sub>10</sub>e
|-
|M_LN2 || log<sub>e</sub>2
|-
|M_LN10 || log<sub>e</sub>10
|-
|M_PI || 원주율 π
|-
|M_PI_2 || <math>{\pi \over 2}</math>
|-
|M_PI_4 || <math>{\pi \over 4}</math>
|-
|M_1_PI || <math>{1 \over \pi}</math>
|-
|M_2_PI || <math>{2 \over \pi}</math>
|-
|M_2_SQRTPI || <math>{2 \over \sqrt{\pi} }</math>
|-
|M_SQRT2 || <math>\sqrt{2}</math>
|-
|M_1_SQRT2 || <math>{1 \over \sqrt{2}}</math>
|-
|}

==예제==
다음 예제는 부동소수점 수들의 거듭제곱을 출력한다.
컴파일시에 -lm 옵션을 추가해주어야 한다
<syntaxhighlight lang = c>
int main (void)
{
  printf ("7 ^ 3 = %lf\n", pow (7.0,3));
  printf ("4.73 ^ 12 = %lf\n", pow (4.73,12));
  printf ("32.01 ^ 1.54 = %lf\n", pow (32.01,1.54));
  return 0;
}
</syntaxhighlight>
'''실행 결과'''
<pre>
7 ^ 3 = 343.000000
4.73 ^ 12 = 125410439.217423
32.01 ^ 1.54 = 208.036691
</pre>

== 같이 보기 ==
* [[C99]]
== 각주 ==
{{각주}}

== 외부 링크 ==
* {{man|bd|math.h|SUS|mathematical declarations}}
* [https://en.cppreference.com/w/c/numeric/math C reference for math functions]

{{C 프로그래밍 언어}}

[[분류:C 표준 라이브러리]]