7.13.1 수학함수의 모임 math.h [doc] [smts]
다양한 수학 함수 값을 구하기 위한 함수들이 math.h에 정의되어 있다.
함수/상수 | 기능 | 비고 |
double sin(double x) | sin(x) | |
double cos(double x) | cos(x) | |
double tan(double x) | tan(x) | |
double asin(double x) | sin-1(x) | |
double asin(double x) | cos-1(x) | |
double asin(double x) | tan-1(x) | |
double asin2(double y, double x) | tan-1(y/x) x가 0인 경우도 구해짐 | |
double sinh(double x) | sinh(x) | |
double cosh(double x) | cosh(x) | |
double tanh(double x) | tanh(x) | |
double exp(double x) | ex | |
double log(double x) | ln x(= logex) | |
double log10(double x) | log10x | |
double pow(double x, double y) | xy | |
double sqrt(double x) | x의 제곱근(=x1/2) | |
double abs(double x) | x의 절대값 | |
double floor(double x) | x보다 크지 않은 가장 큰 정수 | |
double ceil(double x) | x보다 작지 않은 가장 큰 정수 |
(주의 : ANSI C에서 정의되었던 M_PI, M_E와 같은 상수들은 C99에서 삭제되었다.)
예를 들어 0~π/2 범위의 sin(x)값 테이블을 출력하는 프로그램은 다음과 같다.
0712-01.c |
#include <stdio.h>#include <math.h>#define PI 3.14int main() {for(double x=0; x<=PI/2; x+=0.01) {printf("sin(%.2f)=%lf\n", x, sin(x));}} |
실행 결과 |
sin(0.00)=0.000000sin(0.01)=0.010000sin(0.02)=0.019999…sin(1.53)=0.999168sin(1.54)=0.999526sin(1.55)=0.999784sin(1.56)=0.999942 |
이차 방정식의 두 근을 구하는 예제는 다음과 같다.
0712-02.c |
#include <stdio.h>#include <math.h>int main() {double da, db, dc;printf("input a, b, c of ax^2+bx+c=0 :");scanf("%lf,%lf,%lf", &da,&db,&dc);double dd = db*db-4*da*dc; //판별식if (dd>0) { // 서로 다른 두 실근double dr1, dr2;dr1 = (-db+sqrt(dd))/(2*da);dr2 = (-db-sqrt(dd))/(2*da);printf("two different real roots:%lf, %lf\n", dr1, dr2);} else if (dd<0) { //허근double real, imag;real = -db/(2*da);imag = sqrt(-dd)/(2*da);printf("complex roots:%lf+j%lf, %lf-j%lf\n", real, imag, real, imag);} else { //중근double r = -db/(2*da);printf("double root:%lf\n", r);}} |
실행 결과 |
input a, b, c of ax^2+bx+c=0 :1,4,4double root:-2.000000 |
이차 방정식의 근은 판별식의 조건에 따라 종류가 달라지므로 if ~ else if ~else 구문을 사용하여 각각을 처리하였다.
'프로그래밍언어.Lib > C,C++' 카테고리의 다른 글
7.13.3 stdlib.h (0) | 2016.05.30 |
---|---|
7.13.2 문자열 관련 함수 string.h (0) | 2016.05.30 |
7.13 표준함수 (0) | 2016.05.30 |
7.10 지역배열과 전역배열 (0) | 2016.05.30 |
6장 연습문제 (0) | 2016.05.30 |