現在、私の科学計算コードの1つに、次のものがあります。
//Include M_PI constant
#define _USE_MATH_DEFINES
//Needed for square root function.
#include <math.h>
これは動作します...少なくともLinuxでは...すべてのプラットフォームのCコンパイラでテストしたわけではありません。しかし、いくつかの古いFortranコードを調査したとき、私は最近、別のコード(自分のものではない)でpiを定義するこの一見賢い方法に出くわしました:
<angle in deg.>*8.0d0 * datan(1.0d0) / 360.0d0
もちろん、これはCで完全に実行可能ですよね?したがって、変換関数を次のように定義できます。
inline double DegToRad(const double A)
{
return A * atan(1.0) / 45.0;
}
どちらのアプローチがより移植性がありますか?あるアプローチを別のアプローチよりも使用する価値のある数値(丸めなど)の考慮事項はありますか?
M_PI定数によってコードが読みやすくなるのが好きです。もちろん、上記のアプローチを使用して、自分のPI定数を割り当てることもできます。
複数のプラットフォーム(Windows、Linuxなど)を対象とするC / C ++コードのベストプラクティスと見なされるものは何ですか?