Coverage Report

Created: 2026-09-04 06:48

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/rust/registry/src/index.crates.io-1949cf8c6b5b557f/sofars-0.6.1/src/ts/tdbtcb.rs
Line
Count
Source
1
use crate::consts::{DAYSEC, DJM0, DJM77, ELB, TDB0, TTMTAI};
2
3
///  Time scale transformation:  Barycentric Dynamical Time, TDB, to
4
///  Barycentric Coordinate Time, TCB.
5
///
6
///  This function is part of the International Astronomical Union's
7
///  SOFA (Standards of Fundamental Astronomy) software collection.
8
///
9
///  Status:  canonical.
10
///
11
///  Given:
12
///     tdb1,tdb2  double    TDB as a 2-part Julian Date
13
///
14
///  Returned:
15
///     tcb1,tcb2  double    TCB as a 2-part Julian Date
16
///
17
///  Returned (function value):
18
///                int       status:  0 = OK
19
///
20
0
pub fn tdbtcb(tdb1: f64, tdb2: f64) -> Result<(f64, f64), i32> {
21
    /* 1977 Jan 1 00:00:32.184 TT, as two-part JD */
22
    const T77TD: f64 = DJM0 + DJM77;
23
0
    let t77tf: f64 = TTMTAI / DAYSEC;
24
25
    /* TDB (days) at TAI 1977 Jan 1.0 */
26
0
    let tdb0_val: f64 = TDB0 / DAYSEC;
27
28
    /* TDB to TCB rate */
29
0
    let elbb: f64 = ELB / (1.0 - ELB);
30
31
    let (d, f);
32
    let (tcb1, tcb2);
33
34
    /* Result, preserving date format but safeguarding precision. */
35
0
    if tdb1.abs() > tdb2.abs() {
36
0
        d = T77TD - tdb1;
37
0
        f = tdb2 - tdb0_val;
38
0
        tcb1 = tdb1;
39
0
        tcb2 = f - (d - (f - t77tf)) * elbb;
40
0
    } else {
41
0
        d = T77TD - tdb2;
42
0
        f = tdb1 - tdb0_val;
43
0
        tcb1 = f - (d - (f - t77tf)) * elbb;
44
0
        tcb2 = tdb2;
45
0
    }
46
47
0
    Ok((tcb1, tcb2))
48
0
}