通常数学に現われる初等関数や、平方根 , 乗根 , 絶対値 などは、 C 言語では数学関数ライブラリィに用意されている。
prog05.c |
/* prog05.c --- 数学(関数)ライブラリィにある関数の呼び出し */ #include <stdio.h> #include <math.h> /* この行に注目 */ int main(void) { double x; printf("一つの実数を入力してください: "); scanf("%lf", &x); /* ルート (非負の平方根) */ printf("sqrt(%g) =%g\n", x, sqrt(x)); /* 三角関数 sin */ printf("sin(%g) =%g\n", x, sin(x)); /* e を底とする指数関数 */ printf("exp(%g) =%g\n", x, exp(x)); /* 自然対数 */ printf("log(%g) =%g\n", x, log(x)); /* 常用対数 (10 を底とする対数) */ printf("log10(%g) =%g\n", x, log10(x)); /* 双曲線関数 hyperbolic sin) */ printf("sinh(%g) =%g\n", x, sinh(x)); /* 巾乗 (power) --- ここでは 3 乗根 */ printf("pow(%g,%g)=%g\n", x, 1.0/3.0, pow(x, 1.0/3.0)); /* 逆三角関数 Arctan */ printf("atan(%g) =%g\n", x, atan(x)); /* 絶対値 */ printf("fabs(%g) =%g\n", x, fabs(x)); /* 整数部分 (-∞に向かっての切り捨て = いわゆる Gauss の括弧) */ printf("floor(%g) =%g\n", x, floor(x)); /* ∞に向かっての切り上げ */ printf("ceil(%g) =%g\n", x, ceil(x)); /* 最も近い整数への丸め (≒四捨五入) */ printf("rint(%g) =%g\n", x, rint(x)); return 0; } |
コンパイルと実行 | ||||||
|
整数/整数 に注意 |
上のプログラムで
を計算するのに
と
しているのに注意。
は整除で 0 になってしまう。
とすべきかもしれないが、
入力が面倒だし、
読みづらいので
あるいは
などにすることを奨める。
(細かい注) という表記はコンピューターでなければ、 常識的には有効数字 2 桁の数という意味になる。 だからあまり誉められた書き方でないかもしれない。 とする人もいるが…まあ好みの問題でしょうか。 |
円周率 , 自然対数の底 など、どうやって用意する? | |
簡単な応用として、円周率
や
自然対数の底 (Napier の数)
が
必要な場合に
|
余談 いわゆる特殊関数が使いたい場合は、 ライブラリィを探すことになるであろう。 その場合、C よりは C++ の方が見つかりやすいかもしれない。