1use crate::{Dt, Real};
5
6pub const STRFTIME_SIZE: usize = 512;
7
8pub(crate) const SEC_PER_YEAR: i128 = 31_557_600; pub(crate) const SEC_PER_MONTH: i128 = 2_629_800; pub(crate) const SEC_PER_DAY: i128 = 86_400;
11
12pub const SEC_PER_DAY_F: Real = 86_400.0;
15pub const SEC_PER_DAYI64: i64 = 86_400;
16pub(crate) const SEC_PER_DAYI128: i128 = 86_400;
17
18pub(crate) const SEC_PER_WEEK: i64 = 7 * SEC_PER_DAYI64;
20pub(crate) const ATTOS_PER_WEEK: i128 = SEC_PER_WEEK as i128 * ATTOS_PER_SEC_I128;
22pub const ATTOS_PER_DAY: i128 = SEC_PER_DAYI128 * ATTOS_PER_SEC_I128;
23pub const ATTOS_PER_HALF_DAY: i128 = ATTOS_PER_DAY / 2;
24pub const ATTOS_PER_HALF_DAYU: u128 = ATTOS_PER_HALF_DAY as u128;
25
26pub const GM_SUN: Real = 1.3271244e20;
29
30pub const C: Real = 299792458.0;
32
33pub const C_SQUARED: Real = C * C;
35
36pub const GM_SUN_OVER_C3: Real = GM_SUN / (C * C_SQUARED);
38
39pub const TWO_GM_SUN_OVER_C3: Real = 2.0 * GM_SUN_OVER_C3;
41
42pub const ATTOS_PER_SEC: u64 = 1_000_000_000_000_000_000;
44pub const ATTOS_PER_SECF: Real = f!(1_000_000_000_000_000_000.0);
45pub const ATTOS_PER_SEC_I128: i128 = ATTOS_PER_SEC as i128;
46pub const ATTOS_PER_SEC_U128: u128 = ATTOS_PER_SEC as u128;
47
48pub const ATTOS_PER_MS: u64 = 1_000_000_000_000_000;
50pub const ATTOS_PER_US: u64 = 1_000_000_000_000;
52pub const ATTOS_PER_NS: u64 = 1_000_000_000;
54pub const ATTOS_PER_PS: u64 = 1_000_000;
56pub const ATTOS_PER_FS: u64 = 1_000;
58pub const ATTOS_PER_MS_I128: i128 = ATTOS_PER_MS as i128;
60pub const ATTOS_PER_US_I128: i128 = ATTOS_PER_US as i128;
62pub const ATTOS_PER_NS_I128: i128 = ATTOS_PER_NS as i128;
64pub const ATTOS_PER_PS_I128: i128 = ATTOS_PER_PS as i128;
66pub const ATTOS_PER_FS_I128: i128 = ATTOS_PER_FS as i128;
68
69pub(crate) const TT_TAI_OFFSET_SEC: i64 = 32;
71pub(crate) const TT_TAI_OFFSET_SUBSEC: u64 = 184_000_000_000_000_000; pub const TT_TAI_OFFSET: Dt = Dt::new(TT_TAI_OFFSET_SEC, TT_TAI_OFFSET_SUBSEC);
75
76pub const JD_2000_2_451_545: i64 = 2_451_545;
78pub const JD_2000_2_451_545F: Real = f!(2_451_545.0);
79pub const MJD_1970: i64 = 40_587;
81pub const TAI_SEC_AT_1972: i64 = -883_655_990;
83
84pub(crate) const TAI_SECS_1970_MIDNIGHT_TO_2000_NOON: i64 = 946_728_000;
86
87pub const PLANCK_LENGTH: Real = 1.616255e-35; pub const PLANCK_LENGTH_4: Real = PLANCK_LENGTH * PLANCK_LENGTH * PLANCK_LENGTH * PLANCK_LENGTH;
89
90pub(crate) const LG_NUM: i128 = 6_969_290_134;
92pub(crate) const LG_DEN: i128 = 10_000_000_000_000_000_000; pub(crate) const LB_NUM: i128 = 1_550_519_768;
96pub(crate) const LB_DEN: i128 = 100_000_000_000_000_000; pub(crate) const TCG_TCB_REF_JD_INT: i64 = 2_443_144;
100pub(crate) const TCG_TCB_REF_TOD_SEC: i64 = 43_232; pub(crate) const TCG_TCB_REF_TOD_SUBSEC: u64 = TT_TAI_OFFSET_SUBSEC;
102
103pub(crate) const TCG_TCB_REF_ATTOS_SINCE_J2000: i128 = {
106 let days_since_j2000 = (TCG_TCB_REF_JD_INT - JD_2000_2_451_545) as i128;
107 let sec_part = days_since_j2000 * SEC_PER_DAYI128 + (TCG_TCB_REF_TOD_SEC as i128);
108 sec_part * ATTOS_PER_SEC_I128 + (TCG_TCB_REF_TOD_SUBSEC as i128)
109};
110
111pub(crate) const TDB0_ATTOS: i128 = -65_500_000_000_000;