#ifndef _INPOP_H #define _INPOP_H #include "longjd.h" // TDB or TCB function number #define FNUM_TT_TDB 16 #define FNUM_TCG_TCB 17 #define INPOP_NO_ERR 0 #define INPOP_READ_ERR -1 #define INPOP_FILE_ERR -2 #define INPOP_TDB_BASE FNUM_TT_TDB #define INPOP_TCB_BASE FNUM_TCG_TCB /* ------------------------------------------------ proto type ------------------------------------------------ */ int init_inpop(void); void close_inpop(void); #endif |
#include |
/* ============================================= = TT,TCG to TCB = = = =ent: LONGJD *pdJDtt = TT JulianDay = = LONGJD *pdJDtcg = TCG JulianDay = =exit: return double TCB-TCG = = LONGJD *pdJDtcb = TCB JulianDay = ============================================= */ double inpop_tcg_tcb(LONGJD *pdJDtt, LONGJD *pdJDtcg, LONGJD *pdJDtcb) { double dTCB; // Get TCB - TCG inpop(pdJDtt, &dTCB); // Calc. TCB pdJDtcb->dDate = pdJDtcg->dDate; pdJDtcb->dTime = pdJDtcg->dTime - (dTCB / DAYSEC); ljd_normalize(pdJDtcb); return dTCB; } /* ============================================= = TCB to TT,TCG = = = =ent: LONGJD *pdJDtcb = TCB JulianDay = =exit: return double TCB-TCG = = LONGJD *pdJDtt = TT JulianDay = = LONGJD *pdJDtcg = TCG JulianDay = ============================================= */ double inpop_tcb_tt(LONGJD *pdJDtcb, LONGJD *pdJDtt, LONGJD *pdJDtcg) { double dTCB; double nOldDay; *pdJDtt = *pdJDtcb; do{ nOldDay = pdJDtt->dTime; inpop(pdJDtt, &dTCB); pdJDtcg->dDate = pdJDtcb->dDate; pdJDtcg->dTime = pdJDtcb->dTime + (dTCB / DAYSEC); tcg_tt(pdJDtcg, pdJDtt); }while(fabs(nOldDay - pdJDtt->dTime) > 1e-15); return dTCB; } |
$ ./atime UTC 2018/01/10 05:42:29.000000 JD = 2458128.737836 TT 2018/01/10 05:43:38.184000 TCG 2018/01/10 05:43:39.086271 XCB 2018/01/10 05:43:58.257891 TCB 2018/01/10 05:43:58.257891 TDB 2018/01/10 05:43:38.184204 TCB 2018/01/10 05:43:58.257891 TCG 2018/01/10 05:43:39.086271 TT 2018/01/10 05:43:38.184000 UTC 2018/01/10 05:42:29.000000 $ ./atime 2100 12 31 23 59 UTC 2100/12/31 23:59:00.000000 JD = 2488434.499306 TT 2101/01/01 00:00:09.184000 TCG 2101/01/01 00:00:11.911122 XCB 2101/01/01 00:01:09.856674 TCB 2101/01/01 00:01:09.856674 TDB 2101/01/01 00:00:09.183901 $ ./atime 1950 UT 1950/01/01 00:00:00.000000 JD = 2433282.500000 ET 1950/01/01 00:00:29.150000 TCG 1950/01/01 00:00:28.556163 XCB 1950/01/01 00:00:15.938376 TCB 1950/01/01 00:00:15.938376 TDB 1950/01/01 00:00:29.149930 |