1 #include <stdio.h>
2 #include <math.h>
3
4 int main(void){
5 double x, s, c, t, l, e;
6
7 x=M_PI;
8
9 s=sin(x);
10 c=cos(x);
11 e=exp(x);
12 l=log(x);
13
14 printf("sin(pi)=%f\n",s);
15 printf("cos(pi)=%f\n",c);
16 printf("tan(pi)=%f\n",t);
17 printf("exp(pi)=%f\n",e);
18 printf("log(pi)=%f\n",l);
19
20 return 0;
21 }
sin(pi)=0.000000 cos(pi)=-1.000000 tan(pi)=0.000000 exp(pi)=23.140693 log(pi)=1.144730
このプログラムの各行の内容は,次の通りである.
数学関数を使うために,ヘッダーファイルmath.h をインクルードしている.数学 関数を使う場合,必ず必要である.
M_PIは円周率を表すマクロである.math.hをインクルードすると, M_PIはコンパイル時に,に置き換わる.
おなじみの数学関数が並んでいる.右辺の関数の戻り値を左辺の変数に代入している.
C言語の数学関数は,数学で使う初等関数とほとんど同じ記述のため簡単である.必要な関数 を数学で学習したように記述すればよい.math.hに用意されている関数は,表 1のとおである.引数も戻り値も倍精度実数型である.
数学の計算でしばしば使われる定数は,math.hでマクロとして定義されている.定 義されているマクロを表2に示す.いろいろ定義されているが, 円周率を表すM_PIを憶えておけば,ほとんどの場合事足りる.次に重要なのは,ネ ピア数を表すM_Eくらいである.
gcc -o fugafuga hogehoge.c -lm
| 数学関数名 | C言語関数 | 引数x | 戻り値 |
| 三角関数 | sin(x) | 単位はラジアン | |
| cos(x) | 単位はラジアン | ||
| tan(x) | 単位はラジアン | ||
| 逆三角関数 | asin(x) | 範囲 |
範囲
|
| acos(x) | 範囲 |
範囲 |
|
| atan(x) | 範囲
|
||
| atan2(x,y) |
|
||
| 双曲線関数 | sinh(x) | ||
| cosh(x) | |||
| tanh(x) | |||
| 指数関数 | exp(x) | ||
| 対数 | log(x) | 0 |
自然対数 |
| log10(x) | 0 |
常用対数
|
|
| 絶対値 | fabs(x) | ||
| 平方根 | sqrt(x) | ||
| べき乗 | pow(x,y) | xもyも実数可 | |
| 整数部 | floor(x) | ||
| ceil(x) |
| 数学定数名 | 数学記号 | C言語マクロ | 値 |
| 円周率 | M_PI | 3.14159265358979323846 | |
| M_PI_2 | 1.57079632679489661923 | ||
| M_PI_4 | 0.78539816339744830962 | ||
| M_1_PI | 0.31830988618379067154 | ||
| M_2_PI | 0.63661977236758134308 | ||
|
|
M_2_SQRTPI | 1.12837916709551257390 | |
| ネピア数 | M_E | 2.7182818284590452354 | |
| M_LOG2E | 1.4426950408889634074 | ||
|
|
M_LOG10E | 0.43429448190325182765 | |
| 対数 | M_LN2 | 0.69314718055994530942 | |
| M_LN10 | 2.30258509299404568402 | ||
| 平方根 | M_SQRT2 | 1.41421356237309504880 | |
|
|
M_SQRT1_2 | 0.70710678118654752440 |