def test_time_to_mjd_string_versus_decimal(format, i_f): i, f = i_f with decimal.localcontext(decimal.Context(prec=40)): m = Decimal(i) + Decimal(f) t = Time(val=i, val2=f, format=format, scale="utc") assert (abs(Decimal(time_to_mjd_string(t)) - m) * u.day).to( u.ns) < 1 * u.ns
def test_time_from_mjd_string_roundtrip(format, i_f): i, f = i_f assume(not (format == "pulsar_mjd" and i in leap_sec_days and (1 - f) * 86400 < 1e-9)) t = Time(val=i, val2=f, format=format, scale="utc") assert ( abs(t - time_from_mjd_string(time_to_mjd_string(t), format=format)).to( u.ns) < 1 * u.ns)
def test_time_to_mjd_string_versus_longdouble(format, i_f): i, f = i_f m = i + np.longdouble(f) t = Time(val=i, val2=f, format=format, scale="utc") tstr = time_to_mjd_string(t) # NOTE: have to add str() here, because of a numpy bug which treats # numpy string type differently from python str. # See https://github.com/numpy/numpy/issues/15608 tld_str = np.longdouble(str(tstr)) assert abs(tld_str - m) * u.day < 1 * u.ns
def test_time_from_mjd_string_roundtrip_very_close(format): i = 50000 f = np.finfo(float).eps t = Time(val=i, val2=f, format=format, scale="utc") s = time_to_mjd_string(t) assert abs(time_from_mjd_string(s) - t).to(u.ns) <= 4 * time_eps
def test_time_to_mjd_string_versus_decimal(dec, format, i_f): i, f = i_f m = Decimal(i) + Decimal(f) t = Time(val=i, val2=f, format=format, scale="utc") assert (abs(Decimal(time_to_mjd_string(t)) - m) * u.day).to(u.ns) < 1 * u.ns
def test_time_to_mjd_string_versus_longdouble(format, i_f): i, f = i_f m = i + np.longdouble(f) t = Time(val=i, val2=f, format=format, scale="utc") assert (abs(np.longdouble(time_to_mjd_string(t)) - m) * u.day).to(u.ns) < 1 * u.ns
def test_time_to_longdouble_no_longer_than_time_to_mjd_string(i_f): i, f = i_f t = Time(val=i, val2=f, format="mjd", scale="tai") assert len(time_to_mjd_string(t)) >= len(str(time_to_longdouble(t)))
def test_time_to_longdouble_close_to_time_to_mjd_string(format, i_f): i, f = i_f t = Time(val=i, val2=f, format=format, scale="utc") assert ( abs(np.longdouble(time_to_mjd_string(t)) - time_to_longdouble(t)) * u.day ).to(u.ns) < 1 * u.ns