23 #include <lal/LALStdlib.h>
25 #include <lal/XLALError.h>
27 #ifndef HAVE_LOCALTIME_R
28 #define localtime_r(timep, result) memcpy((result), localtime(timep), sizeof(struct tm))
32 #define FAIL_JULIAN_DAY 1
33 #define FAIL_MOD_JULIAN_DAY 2
34 #define FAIL_JULIAN_DATE 3
35 #define FAIL_MOD_JULIAN_DATE 4
104 static int test(
const struct tm *utc,
double expected_julian_day,
double expected_modified_julian_day,
int line)
107 double modified_julian_day;
112 strftime(buf,
sizeof(buf),
"%Y-%m-%d %H:%M:%S", utc);
113 fprintf(stderr,
"Testing %s ...\n", buf);
119 if(expected_julian_day && (julian_day != expected_julian_day)) {
120 fprintf(stderr,
"XLALConvertCivilTimeToJD() failed (line %d): expected %.17g got %.17g\n", line, expected_julian_day, julian_day);
123 fprintf(stderr,
"XLALConvertCivilTimeToJD() returned %.16g\n", julian_day);
125 if(expected_modified_julian_day && (modified_julian_day != expected_modified_julian_day)) {
126 fprintf(stderr,
"XLALModifiedJulianDayUTC() failed (line %d): expected %.17g got %.17g\n", line, expected_modified_julian_day, modified_julian_day);
129 fprintf(stderr,
"XLALModifiedJulianDayUTC() returned %.17g\n", modified_julian_day);
141 REAL8 ref_julian_day;
143 REAL8 ref_mod_julian_day;
144 REAL8 mod_julian_day;
159 if(
test(&tnow, 0, 0, __LINE__))
176 if(
test(&utc, 2451545.0, 51544.5, __LINE__))
189 if(
test(&utc, 2451544.9583333333, 51544.458333333489, __LINE__))
226 if(
test(&utc, 2449672.5, 49672.0, __LINE__))
241 if(
test(&utc, 2452044.6096527777, 52044.109652777668, __LINE__))
const REAL8 julian_precision
#define localtime_r(timep, result)
static int test(const struct tm *utc, double expected_julian_day, double expected_modified_julian_day, int line)
const REAL8 coarse_precision
double REAL8
Double precision real floating-point number (8 bytes).
REAL8 XLALConvertCivilTimeToJD(const struct tm *civil)
Returns the Julian Day (JD) corresponding to the civil date and time given in a broken down time stru...
REAL8 XLALConvertCivilTimeToMJD(const struct tm *civil)
Returns the Modified Julian Day MJD corresponding to the civil date and time given in a broken down t...
#define XLAL_REAL8_FAIL_NAN
Floating-point value of the XLAL REAL8 failure NaN.
int XLALClearErrno(void)
Clears the XLAL error number, returns the old value.
@ XLAL_FAILURE
Failure return value (not an error number)