void ssd_init_c(void);

void ssd_compute_ephemeris_c(
    double t_epoch, 
    double q, double e, double incl, double node, double arg_peri, double time_peri,
    double h_v, 
    char *obscod, 
    double t_eph_ut, 
    double *out_ra, 
    double *out_dec, 
    double *out_mag,
    int *out_errcod
);

void ssd_compute_ephemeris_pair_c(
    double t_epoch, 
    double q, double e, double incl, double node, double arg_peri, double time_peri,
    double h_v, 
    char *obscod, 
    double t_eph_ut, 
    double exposure_time_sec,
    double *out_ra_deg, 
    double *out_dec_deg, 
    double *out_mag,
    double *out_ra2_deg,
    double *out_dec2_deg,
    int *out_errcod
);

void ssd_compute_ephemeris_with_src_c(
    double t_epoch_mjd,
    double q_au, double e, double i_deg, double node_deg, double arg_peri_deg, double time_peri_mjd,
    double h_v, 
    char *obscod, 
    double t_eph_ut_mjd, 
    double src_01,		/* Stupid Perl XS! */
    double src_02,
    double src_03,
    double src_04,
    double src_05,
    double src_06,
    double src_07,
    double src_08,
    double src_09,
    double src_10,
    double src_11,
    double src_12,
    double src_13,
    double src_14,
    double src_15,
    double src_16,
    double src_17,
    double src_18,
    double src_19,
    double src_20,
    double src_21, 
    double *out_ra_deg, 
    double *out_dec_deg, 
    double *out_mag,
    double *out_smaa_sec,
    double *out_smia_sec,
    double *out_pa_deg,
    int *out_errcod
);

void ssd_compute_xyz_c(
    double t_epoch, 
    double q, double e, double incl, double node, double arg_peri, double time_peri,
    double h_v, 
    char *obscod, 
    double t_eph_ut, 
    double *out_ex, 
    double *out_ey, 
    double *out_ez,
    double *out_ox, 
    double *out_oy, 
    double *out_oz,
    int *out_errcod
);

void ssd_propagate_elements_c(
    double t_epoch,
    double q, double e, double incl, double node, double arg_peri, double time_peri,
    double t_eph_ut, 
    double *out_q, double *out_e, double *out_incl, double *out_node, double *out_arg_peri, double *out_time_peri,
    int *out_errcod
);
