The acos functions - acos, acosf, acosl

逆余弦 (arccos) を計算します.

acos

#include <math.h>
double acos(
    double x
);

acos 関数は x の逆余弦 (arccos) を計算し,結果を double 型で返します.

acosf (C99)

#include <math.h>
float acosf(
    float x
);

acosf 関数は x の逆余弦 (arccos) を計算し,結果を float 型で返します.

acosl (C99)

#include <math.h>
long double acosl(
    long double x
);

acosl 関数は x の逆余弦 (arccos) を計算し,結果を long double 型で返します.

acos,acosf,acosl 関数は,引数 x が区間 [-1, +1] 内にない場合,定義域エラー (domain error) が発生します.

戻り値

  • 区間 [0, +pi]ラジアンの逆余弦値

数学上の表記

arccos

C言語サンプルプログラム

以下に acos,acosf,acosl 関数それぞれを使用して逆余弦を求めるサンプルプログラムを示します.

/* header files */
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

/* functions */
double to_deg(double);
double pi();

/* main */
int main(void) {
    double d = cos(pi() / 3.0), d_rad, d_deg;
    float f = cos(pi() / 4.0), f_rad, f_deg;
    long double ld = cos(pi() / 6.0L), ld_rad, ld_deg;

    /* 逆余弦 (arccos) を取得する */
    d_rad = acos(d);
    f_rad = acosf(f);
    ld_rad = acosl(ld);

    /* 弧度法 から 度数法 に変換する */
    d_deg = to_deg(d_rad);
    f_deg = to_deg(f_rad);
    ld_deg = to_deg(ld_rad);

    /* 結果の表示 */
    printf("acos(%.8f): %.2f度\n", d, d_deg);
    printf("acosf(%.8f): %.2f度\n", f,f_deg);
    printf("acosl(%.8Lf): %.2Lf度\n", ld, ld_deg);

    return EXIT_SUCCESS;
}

/**
 * 弧度法表記を度数法表記に変換する
 * @param r 角度[rad]
 * @return  角度[deg]
 */
double to_deg(double r) {
    return r * 180.0 / (atan(1.0) * 4.0);
}

/**
 * 円周率を求める
 * @return 円周率
 */
double pi(void) {
    return atan(1.0) * 4.0;
}

実行例

サンプルプログラムの実行結果は以下のようになります.

acos(0.50000000): 60.00度
acosf(0.70710677): 45.00度
acosl(0.86602540): 30.00度

Cプログラマの必読書

たくさんあるC言語関連の書籍の中でも特に役に立った本です.よかったら参考にしてみてください.

C実践プログラミング 第3版

C言語の実践的参考書.少々値段は張りますが初心者を脱しようとしている人は絶対に読むべきです.
文法だけでなく,コーディングスタイルやデバッグなど文字通り「実践的」なことが書かれているので非常にためになります. オライリーの本は,読みにくい本が多いのですが本書はとても読みやすくオススメです.


C言語ポインタ完全制覇 (標準プログラマーズライブラリ)

ポインタの解説書としては最高の書籍です.
この1冊でポインタを完全に理解することができます.全くの初学者が読むには敷居が高いですが,入門書を読み終えた後に読むと非常に有益です.