【6日でできるC言語入門】数学関数

 C言語には、さまざまな計算で役立つ数学関数が標準ライブラリとして用意されています。これらの関数は math.h をインクルードすることで利用でき、三角関数・べき乗・絶対値・平方根などが簡単に扱えます。
ここでは、実用的なサンプルを交えて、数学関数の使い方をわかりやすく解説します。

1.角度変換と三角関数の応用

1.1. サンプル:ラジアンを指定して三角関数を計算

三角関数の引数にはラジアンを指定します。
ここでは、ラジアン値を入力して、sin・cos・tanの値を求めるプログラムを示します。

プロジェクト/ファイル名: Lesson47_1/main.c

#include <stdio.h>
#include <math.h>

int main(void) {
    double radian;

    printf("ラジアン値を入力してください(例:1.0): ");
    scanf("%lf", &radian);

    printf("sin(%.2f) の値は %.4f です\n", radian, sin(radian));
    printf("cos(%.2f) の値は %.4f です\n", radian, cos(radian));
    printf("tan(%.2f) の値は %.4f です\n", radian, tan(radian));

    return 0;
}

実行結果

「SDLチェック」を「いいえ」にして、プログラムを実行します。

ラジアン値を入力してください(例:1.0): 1.0
sin(1.00) の値は 0.8415 です
cos(1.00) の値は 0.5403 です
tan(1.00) の値は 1.5574 です

1.2. 角度からラジアンへの変換

ラジアン値に慣れていない場合、度数法→ラジアンの変換式も活用しましょう。

#define PI 3.141592653589793

double to_radian(double degree) {
    return degree * PI / 180.0;
}

この関数を使えば、sin(to_radian(60.0)) のように記述できます。

2.よく使う数学関数のバリエーション

2.1. サンプル:様々な数学関数を使ってみる

絶対値、平方根、べき乗など、便利な関数を実際に使ってみましょう。

プロジェクト/ファイル名: Lesson47_2/main.c

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main(void) {
    int a = -8;
    double b = -4.2, c = 5.5;

    printf("%d の絶対値は %d です\n", a, abs(a));
    printf("%.1f の絶対値は %.1f です\n", b, fabs(b));
    printf("%.1f の3乗は %.2f です\n", c, pow(c, 3));
    printf("%.1f の平方根は %.2f です\n", c, sqrt(c));

    return 0;
}

実行結果

-8 の絶対値は 8 です
-4.2 の絶対値は 4.2 です
5.5 の3乗は 166.38 です
5.5 の平方根は 2.35 です

2.2. 切り上げ・切り下げも活用

小数の切り上げ切り下げも、数学関数で簡単に行えます。

プロジェクト/ファイル名: Lesson47_3/main.c

#include <stdio.h>
#include <math.h>

int main(void) {
    double value = 3.75;

    printf("%.2f を切り上げると %.2f\n", value, ceil(value));
    printf("%.2f を切り下げると %.2f\n", value, floor(value));

    return 0;
}

実行結果

3.75 を切り上げると 4.00
3.75 を切り下げると 3.00

3.定数やマクロを使った工夫

3.1. マクロで角度変換を便利に

#define PI 3.141592653589793
#define DEG2RAD(x) ((x) * PI / 180.0)

これで、sin(DEG2RAD(45)) のように角度指定ができます。

4.補足・注意点

  • math.hをインクルードしないと三角関数や平方根関数は使えません。
  • abs() は整数のみ、fabs() は実数(double)専用です。
  • べき乗や平方根は戻り値も引数もdouble型なので、整数の場合もキャストが必要な場合があります。

まとめ

  • math.hをインクルードすることで多彩な数学関数が使えます。
  • 三角関数はラジアン指定、度を使う場合は変換が必要です。
  • 絶対値、べき乗、平方根、切り上げ・切り下げなども標準関数で簡単に扱えます。
  • 定数やマクロを活用して、より可読性の高いプログラムを書きましょう。