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 -lm -o fugafuga hogehoge.c
数学関数名 | 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) | 0x | 自然対数の値 |
log10(x) | 0x | 常用対数 の値 | |
絶対値 | fabs(x) | ||
平方根 | sqrt(x) | ||
べき乗 | pow(x,y) | xもyも実数可 | の値.複素数 の場合エラー |
整数部 | floor(x) | 以下の最大の整数値をdouble型で返す | |
ceil(x) | 以上の最小の整数値をdouble型で返す |
数学定数名 | 数学記号 | 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 |