C言語には円周率を計算する関数やマクロはありません.したがって,プログラマが自ら円周率を求める必要があります.(gcc などのコンパイラには円周率を扱う M_PI というマクロが定義されていますが,ANSI-C や C99 には定義されていないので,ここでは扱いません.)
円周率を求める有名な計算法としてはマチンの公式 (Machin's formula) がありますが,今回はアークタンジェントを利用して円周率を求める方法を紹介します.
tan(pi/4) は 1 になります.
したがって,この逆正接は当然以下のようになります.
分母の 4 を移行すれば,円周率を求める式が導出できます.
上記の式を C言語で実装すると以下のようになります.
atan(1.0) * 4.0;
以下に円周率を計算するサンプルプログラムを示します.
/* header files */
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
/* functions */
double pi(void);
/* main */
int main(void) {
/* 真値 */
printf("真値 : %.16f\n",
3.14159265358979323846264338327950288);
/* 計算値 */
printf("計算値: %.16f\n", pi());
return EXIT_SUCCESS;
}
/**
* 円周率を求める
* @return 円周率
*/
double pi(void) {
return atan(1.0) * 4.0;
}
サンプルプログラムの実行結果は以下のようになります.
真値 : 3.1415926535897931 計算値: 3.1415926535897931
たくさんあるC言語関連の書籍の中でも特に役に立った本です.よかったら参考にしてみてください.
C言語の実践的参考書.少々値段は張りますが初心者を脱しようとしている人は絶対に読むべきです.
文法だけでなく,コーディングスタイルやデバッグなど文字通り「実践的」なことが書かれているので非常にためになります.
オライリーの本は,読みにくい本が多いのですが本書はとても読みやすくオススメです.
ポインタの解説書としては最高の書籍です.
この1冊でポインタを完全に理解することができます.全くの初学者が読むには敷居が高いですが,入門書を読み終えた後に読むと非常に有益です.