1#[repr(C)]
12#[derive(Clone, Copy, Debug, Default)]
13pub struct eraASTROM {
14 pub pmt: f64,
15 pub eb: [f64; 3],
16 pub eh: [f64; 3],
17 pub em: f64,
18 pub v: [f64; 3],
19 pub bm1: f64,
20 pub bpn: [[f64; 3]; 3],
21 pub along: f64,
22 pub phi: f64,
23 pub xpl: f64,
24 pub ypl: f64,
25 pub sphi: f64,
26 pub cphi: f64,
27 pub diurab: f64,
28 pub eral: f64,
29 pub refa: f64,
30 pub refb: f64,
31}
32
33#[repr(C)]
35#[derive(Clone, Copy, Debug, Default)]
36pub struct eraLDBODY {
37 pub bm: f64,
38 pub dl: f64,
39 pub pv: [[f64; 3]; 2],
40}
41
42pub use crate::G12_safe::eraEpb2jd_safe;
46pub use crate::G12_safe::eraEpb_safe;
47pub use crate::G12_safe::eraEpj2jd_safe;
48pub use crate::G12_safe::eraEpj_safe;
49pub use crate::G19_safe::eraJd2cal_safe;
50pub use crate::G19_safe::eraJdcalf_safe;
51pub use crate::G8_safe::eraCal2jd_safe;
52
53pub use crate::G1_safe::eraAb_safe;
55pub use crate::G1_safe::eraApcg13_safe;
56pub use crate::G1_safe::eraApcg_safe;
57pub use crate::G1_safe::eraApci13_safe;
58pub use crate::G1_safe::eraApci_safe;
59
60pub use crate::G2_safe::eraApco13_safe;
61pub use crate::G2_safe::eraApco_safe;
62pub use crate::G2_safe::eraApcs13_safe;
63pub use crate::G2_safe::eraApcs_safe;
64pub use crate::G2_safe::eraAper_safe;
65
66pub use crate::G3_safe::eraAper13_safe;
67pub use crate::G3_safe::eraApio13_safe;
68pub use crate::G3_safe::eraApio_safe;
69pub use crate::G3_safe::eraAtcc13_safe;
70pub use crate::G3_safe::eraAtccq_safe;
71
72pub use crate::G4_safe::eraAtci13_safe;
73pub use crate::G4_safe::eraAtciq_safe;
74pub use crate::G4_safe::eraAtciqn_safe;
75pub use crate::G4_safe::eraAtciqz_safe;
76pub use crate::G4_safe::eraAtco13_safe;
77pub use crate::G4_safe::eraAtic13_safe;
78pub use crate::G4_safe::eraAticq_safe;
79pub use crate::G4_safe::eraAticqn_safe;
80pub use crate::G4_safe::eraAtio13_safe;
81pub use crate::G4_safe::eraAtioq_safe;
82
83pub use crate::G5_safe::eraAtoc13_safe;
84pub use crate::G5_safe::eraAtoi13_safe;
85pub use crate::G5_safe::eraAtoiq_safe;
86
87pub use crate::G20_safe::eraLd_safe;
88pub use crate::G20_safe::eraLdn_safe;
89pub use crate::G20_safe::eraLdsun_safe;
90pub use crate::G25_safe::eraPmpx_safe;
91pub use crate::G25_safe::eraPmsafe_safe;
92pub use crate::G27_safe::eraPvtob_safe;
93pub use crate::G28_safe::eraRefco_safe;
94
95pub use crate::G13_safe::eraEpv00_safe;
97pub use crate::G21_safe::eraMoon98_safe;
98pub use crate::G24_safe::eraPlan94_safe;
99
100pub use crate::G15_safe::eraFad03_safe;
102pub use crate::G15_safe::eraFae03_safe;
103pub use crate::G15_safe::eraFaf03_safe;
104pub use crate::G15_safe::eraFaju03_safe;
105pub use crate::G15_safe::eraFal03_safe;
106pub use crate::G15_safe::eraFalp03_safe;
107pub use crate::G15_safe::eraFama03_safe;
108pub use crate::G15_safe::eraFame03_safe;
109pub use crate::G15_safe::eraFane03_safe;
110pub use crate::G15_safe::eraFaom03_safe;
111pub use crate::G15_safe::eraFapa03_safe;
112pub use crate::G15_safe::eraFasa03_safe;
113pub use crate::G15_safe::eraFaur03_safe;
114pub use crate::G15_safe::eraFave03_safe;
115
116pub use crate::G6_safe::eraBi00_safe;
118pub use crate::G6_safe::eraBp00_safe;
119pub use crate::G6_safe::eraBp06_safe;
120pub use crate::G6_safe::eraBpn2xy_safe;
121
122pub use crate::G7_safe::eraC2i00a_safe;
123pub use crate::G7_safe::eraC2i00b_safe;
124pub use crate::G7_safe::eraC2i06a_safe;
125pub use crate::G7_safe::eraC2ibpn_safe;
126pub use crate::G7_safe::eraC2ixy_safe;
127pub use crate::G7_safe::eraC2ixys_safe;
128pub use crate::G7_safe::eraC2t00a_safe;
129pub use crate::G7_safe::eraC2t00b_safe;
130pub use crate::G7_safe::eraC2t06a_safe;
131
132pub use crate::G8_safe::eraC2tcio_safe;
133pub use crate::G8_safe::eraC2teqx_safe;
134pub use crate::G8_safe::eraC2tpe_safe;
135pub use crate::G8_safe::eraC2txy_safe;
136
137pub use crate::G11_safe::eraEo06a_safe;
138pub use crate::G11_safe::eraEors_safe;
139
140pub use crate::G16_safe::eraFw2m_safe;
141pub use crate::G16_safe::eraFw2xy_safe;
142
143pub use crate::G20_safe::eraLtp_safe;
144pub use crate::G20_safe::eraLtpb_safe;
145pub use crate::G20_safe::eraLtpecl_safe;
146pub use crate::G20_safe::eraLtpequ_safe;
147
148pub use crate::G21_safe::eraNum00a_safe;
149pub use crate::G21_safe::eraNum00b_safe;
150pub use crate::G21_safe::eraNum06a_safe;
151pub use crate::G21_safe::eraNumat_safe;
152
153pub use crate::G22_safe::eraNut00a_safe;
154
155pub use crate::G23_safe::eraNut00b_safe;
156pub use crate::G23_safe::eraNut06a_safe;
157pub use crate::G23_safe::eraNut80_safe;
158pub use crate::G23_safe::eraNutm80_safe;
159pub use crate::G23_safe::eraObl06_safe;
160pub use crate::G23_safe::eraObl80_safe;
161
162pub use crate::G24_safe::eraP06e_safe;
163pub use crate::G24_safe::eraPb06_safe;
164pub use crate::G24_safe::eraPfw06_safe;
165
166pub use crate::G25_safe::eraPmat00_safe;
167pub use crate::G25_safe::eraPmat06_safe;
168pub use crate::G25_safe::eraPmat76_safe;
169pub use crate::G25_safe::eraPn00_safe;
170pub use crate::G25_safe::eraPn00a_safe;
171pub use crate::G25_safe::eraPn00b_safe;
172
173pub use crate::G26_safe::eraPn06_safe;
174pub use crate::G26_safe::eraPn06a_safe;
175pub use crate::G26_safe::eraPnm00a_safe;
176pub use crate::G26_safe::eraPnm00b_safe;
177pub use crate::G26_safe::eraPnm06a_safe;
178pub use crate::G26_safe::eraPnm80_safe;
179pub use crate::G26_safe::eraPom00_safe;
180pub use crate::G26_safe::eraPr00_safe;
181
182pub use crate::G27_safe::eraPrec76_safe;
183
184pub use crate::G29_safe::eraS00_safe;
185pub use crate::G29_safe::eraS00a_safe;
186pub use crate::G29_safe::eraS00b_safe;
187
188pub use crate::G30_safe::eraS06_safe;
189pub use crate::G30_safe::eraS06a_safe;
190pub use crate::G30_safe::eraSp00_safe;
191
192pub use crate::G34_safe::eraXy06_safe;
193pub use crate::G35_safe::eraXys00a_safe;
194pub use crate::G35_safe::eraXys00b_safe;
195pub use crate::G35_safe::eraXys06a_safe;
196
197pub use crate::G11_safe::eraEe00_safe;
199pub use crate::G11_safe::eraEe00a_safe;
200pub use crate::G11_safe::eraEe00b_safe;
201pub use crate::G11_safe::eraEe06a_safe;
202pub use crate::G11_safe::eraEect00_safe;
203
204pub use crate::G14_safe::eraEqeq94_safe;
205pub use crate::G14_safe::eraEra00_safe;
206
207pub use crate::G17_safe::eraGmst00_safe;
208pub use crate::G17_safe::eraGmst06_safe;
209pub use crate::G17_safe::eraGmst82_safe;
210pub use crate::G17_safe::eraGst00a_safe;
211pub use crate::G17_safe::eraGst00b_safe;
212pub use crate::G17_safe::eraGst06_safe;
213pub use crate::G17_safe::eraGst06a_safe;
214pub use crate::G17_safe::eraGst94_safe;
215
216pub use crate::G27_safe::eraPvstar_safe;
218pub use crate::G30_safe::eraStarpv_safe;
219
220pub use crate::G15_safe::eraFk5hip_safe;
222pub use crate::G16_safe::eraFk425_safe;
223pub use crate::G16_safe::eraFk45z_safe;
224pub use crate::G16_safe::eraFk524_safe;
225pub use crate::G16_safe::eraFk52h_safe;
226pub use crate::G16_safe::eraFk54z_safe;
227pub use crate::G16_safe::eraFk5hz_safe;
228pub use crate::G18_safe::eraH2fk5_safe;
229pub use crate::G18_safe::eraHfk5z_safe;
230pub use crate::G30_safe::eraStarpm_safe;
231
232pub use crate::G11_safe::eraEceq06_safe;
234pub use crate::G11_safe::eraEcm06_safe;
235pub use crate::G14_safe::eraEqec06_safe;
236pub use crate::G20_safe::eraLteceq_safe;
237pub use crate::G20_safe::eraLtecm_safe;
238pub use crate::G20_safe::eraLteqec_safe;
239
240pub use crate::G17_safe::eraG2icrs_safe;
242pub use crate::G19_safe::eraIcrs2g_safe;
243
244pub use crate::G11_safe::eraEform_safe;
246pub use crate::G17_safe::eraGc2gd_safe;
247pub use crate::G17_safe::eraGc2gde_safe;
248pub use crate::G17_safe::eraGd2gc_safe;
249pub use crate::G17_safe::eraGd2gce_safe;
250
251pub use crate::G10_safe::eraDtdb_safe;
253pub use crate::G10_safe::eraDtf2d_safe;
254pub use crate::G32_safe::eraTaitt_safe;
255pub use crate::G32_safe::eraTaiut1_safe;
256pub use crate::G32_safe::eraTaiutc_safe;
257pub use crate::G32_safe::eraTcbtdb_safe;
258pub use crate::G32_safe::eraTcgtt_safe;
259pub use crate::G32_safe::eraTdbtcb_safe;
260pub use crate::G32_safe::eraTdbtt_safe;
261pub use crate::G33_safe::eraTttai_safe;
262pub use crate::G33_safe::eraTttcg_safe;
263pub use crate::G33_safe::eraTttdb_safe;
264pub use crate::G33_safe::eraTtut1_safe;
265pub use crate::G33_safe::eraUt1tai_safe;
266pub use crate::G33_safe::eraUt1tt_safe;
267pub use crate::G33_safe::eraUt1utc_safe;
268pub use crate::G33_safe::eraUtctai_safe;
269pub use crate::G33_safe::eraUtcut1_safe;
270pub use crate::G9_safe::eraD2dtf_safe;
271pub use crate::G9_safe::eraDat_safe;
272
273pub use crate::G18_safe::eraHd2ae_safe;
275pub use crate::G18_safe::eraHd2pa_safe;
276pub use crate::G1_safe::eraAe2hd_safe;
277
278pub use crate::G32_safe::eraTpors_safe;
280pub use crate::G32_safe::eraTporv_safe;
281pub use crate::G32_safe::eraTpsts_safe;
282pub use crate::G32_safe::eraTpstv_safe;
283pub use crate::G32_safe::eraTpxes_safe;
284pub use crate::G32_safe::eraTpxev_safe;
285
286pub use crate::G1_safe::eraA2af_safe;
288pub use crate::G1_safe::eraA2tf_safe;
289pub use crate::G1_safe::eraAf2a_safe;
290pub use crate::G1_safe::eraAnp_safe;
291pub use crate::G1_safe::eraAnpm_safe;
292pub use crate::G32_safe::eraTf2a_safe;
293pub use crate::G32_safe::eraTf2d_safe;
294pub use crate::G9_safe::eraD2tf_safe;
295
296pub use crate::G28_safe::eraRx_safe;
298pub use crate::G28_safe::eraRy_safe;
299pub use crate::G28_safe::eraRz_safe;
300
301pub use crate::G24_safe::eraP2pv_safe;
303pub use crate::G27_safe::eraPv2p_safe;
304pub use crate::G8_safe::eraCp_safe;
305pub use crate::G8_safe::eraCpv_safe;
306pub use crate::G8_safe::eraCr_safe;
307
308pub use crate::G19_safe::eraIr_safe;
310pub use crate::G35_safe::eraZp_safe;
311pub use crate::G35_safe::eraZpv_safe;
312pub use crate::G35_safe::eraZr_safe;
313
314pub use crate::G28_safe::eraRxr_safe;
316pub use crate::G33_safe::eraTr_safe;
317
318pub use crate::G28_safe::eraRxp_safe;
320pub use crate::G28_safe::eraRxpv_safe;
321pub use crate::G33_safe::eraTrxp_safe;
322pub use crate::G33_safe::eraTrxpv_safe;
323
324pub use crate::G28_safe::eraRm2v_safe;
326pub use crate::G28_safe::eraRv2m_safe;
327
328pub use crate::G24_safe::eraPap_safe;
330pub use crate::G24_safe::eraPas_safe;
331pub use crate::G30_safe::eraSepp_safe;
332pub use crate::G30_safe::eraSeps_safe;
333
334pub use crate::G24_safe::eraP2s_safe;
336pub use crate::G27_safe::eraPv2s_safe;
337pub use crate::G29_safe::eraS2c_safe;
338pub use crate::G29_safe::eraS2p_safe;
339pub use crate::G29_safe::eraS2pv_safe;
340pub use crate::G7_safe::eraC2s_safe;
341
342pub use crate::G24_safe::eraPdp_safe;
344pub use crate::G24_safe::eraPm_safe;
345pub use crate::G25_safe::eraPmp_safe;
346pub use crate::G25_safe::eraPn_safe;
347pub use crate::G26_safe::eraPpp_safe;
348pub use crate::G26_safe::eraPpsp_safe;
349pub use crate::G27_safe::eraPvdpv_safe;
350pub use crate::G27_safe::eraPvm_safe;
351pub use crate::G27_safe::eraPvmpv_safe;
352pub use crate::G27_safe::eraPvppv_safe;
353pub use crate::G27_safe::eraPvu_safe;
354pub use crate::G27_safe::eraPvup_safe;
355pub use crate::G27_safe::eraPvxpv_safe;
356pub use crate::G27_safe::eraPxp_safe;
357pub use crate::G29_safe::eraS2xpv_safe;
358pub use crate::G30_safe::eraSxp_safe;
359pub use crate::G30_safe::eraSxpv_safe;
360
361
362#[repr(C)]
366#[derive(Clone, Copy, Debug, Default)]
367pub struct eraLEAPSECOND {
368 pub iyear: i32,
369 pub month: i32,
370 pub delat: f64,
371}
372
373pub use crate::G14_safe::eraSofaVersion_safe;
375pub use crate::G14_safe::eraVersionMajor_safe;
376pub use crate::G14_safe::eraVersionMicro_safe;
377pub use crate::G14_safe::eraVersionMinor_safe;
378pub use crate::G14_safe::eraVersion_safe;
379
380pub use crate::G14_safe::eraGetLeapSeconds_safe;
382pub use crate::G14_safe::eraSetLeapSeconds_safe;
383
384
385pub use crate::G14_safe::eraDatini_safe;
388
389
390pub const ERFA_DPI: f64 = 3.141592653589793238462643;
394pub const ERFA_D2PI: f64 = 6.283185307179586476925287;
395pub const ERFA_DR2D: f64 = 57.29577951308232087679815;
396pub const ERFA_DD2R: f64 = 1.745329251994329576923691e-2;
397pub const ERFA_DR2AS: f64 = 206_264.806_247_096_355_156_4734;
398pub const ERFA_DAS2R: f64 = 4.848_136_811_095_359_935_899_141e-6;
399pub const ERFA_DS2R: f64 = 7.272_205_216_643_039_903_848_712e-5;
400pub const ERFA_TURNAS: f64 = 1_296_000.0;
401pub const ERFA_DMAS2R: f64 = ERFA_DAS2R / 1.0e3;
402pub const ERFA_DTY: f64 = 365.242_198_781;
403pub const ERFA_DAYSEC: f64 = 86_400.0;
404pub const ERFA_DJY: f64 = 365.25;
405pub const ERFA_DJC: f64 = 36_525.0;
406pub const ERFA_DJM: f64 = 365_250.0;
407pub const ERFA_DJ00: f64 = 2_451_545.0;
408pub const ERFA_DJM0: f64 = 2_400_000.5;
409pub const ERFA_DJM00: f64 = 51_544.5;
410pub const ERFA_DJM77: f64 = 43_144.0;
411pub const ERFA_TTMTAI: f64 = 32.184;
412pub const ERFA_DAU: f64 = 149_597_870.7e3;
413pub const ERFA_CMPS: f64 = 299_792_458.0;
414pub const ERFA_AULT: f64 = ERFA_DAU / ERFA_CMPS;
415pub const ERFA_DC: f64 = ERFA_DAYSEC / ERFA_AULT;
416pub const ERFA_ELG: f64 = 6.969_290_134e-10;
417pub const ERFA_ELB: f64 = 1.550_519_768e-8;
418pub const ERFA_TDB0: f64 = -6.55e-5;
419pub const ERFA_SRS: f64 = 1.974_125_743_36e-8;
420
421pub const ERFA_WGS84: i32 = 1;
423pub const ERFA_GRS80: i32 = 2;
424pub const ERFA_WGS72: i32 = 3;
425
426#[inline]
428pub fn ERFA_DINT(a: f64) -> f64 {
429 if a < 0.0 {
430 a.ceil()
431 } else {
432 a.floor()
433 }
434}
435#[inline]
436pub fn ERFA_DNINT(a: f64) -> f64 {
437 if a.abs() < 0.5 {
438 0.0
439 } else if a < 0.0 {
440 (a - 0.5).ceil()
441 } else {
442 (a + 0.5).floor()
443 }
444}
445#[inline]
446pub fn ERFA_DSIGN(a: f64, b: f64) -> f64 {
447 if b < 0.0 {
448 -a.abs()
449 } else {
450 a.abs()
451 }
452}
453#[inline]
454pub fn ERFA_GMAX<T: PartialOrd + Copy>(a: T, b: T) -> T {
455 if a > b {
456 a
457 } else {
458 b
459 }
460}
461#[inline]
462pub fn ERFA_GMIN<T: PartialOrd + Copy>(a: T, b: T) -> T {
463 if a < b {
464 a
465 } else {
466 b
467 }
468}