use crate::errors::RocheError;
use pyo3::prelude::*;
#[pyfunction]
pub fn zeta_rlobe_eggleton(q: f64) -> Result<f64, RocheError> {
if q <= 0. {
let message = format!("q = {} <= 0", q);
return Err(RocheError::ParameterError(message));
}
let q1 = q.powf(1./3.);
let loneq = (1. + q1).ln();
Ok((1. + q)/3.*(2.*loneq-q1/(1.+q1))/(0.6*q1*q1*loneq))
}
#[pyfunction]
pub fn dzetadq_rlobe_eggleton(q: f64) -> Result<f64, RocheError> {
if q <= 0. {
let message = format!("q = {} <= 0", q);
return Err(RocheError::ParameterError(message));
}
let q1 = q.powf(1./3.);
let q2 = q1*q1;
let opq1 = 1. + q1;
let loneq = opq1.ln();
let denom = 0.6*q2 + loneq;
let numer = 2.*loneq - q1/opq1;
Ok(numer/denom/3. + (1. + q)/3.*((1. + 2.*q1)/3./(q1*opq1).powi(2) - numer*(0.4/q1 + 1./(3.*q2*(1. + q1)))/denom)/denom)
}