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 |