1use crate::G26_safe::{eraPnm00a_safe, eraPnm00b_safe, eraPnm06a_safe};
10use crate::G29_safe::eraS00_safe;
11use crate::G30_safe::eraS06_safe;
12use crate::G6_safe::eraBpn2xy_safe;
13
14pub type ErfaResult<T> = Result<T, ()>;
15
16
17pub fn eraXys00a_safe(date1: f64, date2: f64) -> ErfaResult<(f64, f64, f64)> {
20 let rbpn = eraPnm00a_safe(date1, date2)?;
22 let (x, y) = eraBpn2xy_safe(&rbpn)?;
24 let s = eraS00_safe(date1, date2, x, y)?;
26 Ok((x, y, s))
27}
28
29pub fn eraXys00b_safe(date1: f64, date2: f64) -> ErfaResult<(f64, f64, f64)> {
31 let rbpn = eraPnm00b_safe(date1, date2)?;
32 let (x, y) = eraBpn2xy_safe(&rbpn)?;
33 let s = eraS00_safe(date1, date2, x, y)?;
34 Ok((x, y, s))
35}
36
37pub fn eraXys06a_safe(date1: f64, date2: f64) -> ErfaResult<(f64, f64, f64)> {
39 let rbpn = eraPnm06a_safe(date1, date2)?;
41 let (x, y) = eraBpn2xy_safe(&rbpn)?;
42 let s = eraS06_safe(date1, date2, x, y)?;
43 Ok((x, y, s))
44}
45
46pub fn eraZp_safe() -> [f64; 3] {
48 [0.0, 0.0, 0.0]
49}
50
51pub fn eraZpv_safe() -> [[f64; 3]; 2] {
53 [[0.0, 0.0, 0.0], [0.0, 0.0, 0.0]]
54}
55
56pub fn eraZr_safe() -> [[f64; 3]; 3] {
58 [[0.0, 0.0, 0.0], [0.0, 0.0, 0.0], [0.0, 0.0, 0.0]]
59}