私が使用しているタラには、これらのコードスニペットが含まれています。ユリウス日サンプルのサンプルである引数2455343.50000を使用してThetaG_JDを呼び出しています。プログラムを実行するたびに、指定された行にEXC_BAD_ACCESSが表示されます。gdbを使用して中間値を出力し、それらをfloor関数に渡すと、エラーは発生しませんが、Frac()を使用すると、常にエラーが返されます。
double Frac(double arg)
{
/* Returns fractional part of double argument */
return arg - floor(arg);
}
double ThetaG_JD(double jd)
{
/* Reference: The 1992 Astronomical Almanac, page B6. */
double UT=0, TU=0, GMST=0;
//THIS LINE
UT=Frac(jd+0.5);
// THAT ONE ^^
jd=jd-UT;
TU=(jd-2451545.0)/36525;
GMST=24110.54841+TU*(8640184.812866+TU*(0.093104-TU*6.2E-6));
GMST=Modulus(GMST+secday*omega_E*UT,secday);
return (twopi*GMST/secday);
}