#[cfg(feature = "f64")]
#[inline(always)]
pub const fn to_base_f64(
x_unit: f64,
scale_num: i128,
scale_den: i128,
offset_num: i128,
offset_den: i128,
) -> f64 {
let scaled = x_unit * (scale_num as f64) / (scale_den as f64);
if offset_num == 0 {
scaled
} else {
scaled + (offset_num as f64) / (offset_den as f64)
}
}
#[cfg(feature = "f64")]
#[inline(always)]
pub const fn from_base_f64(
x_base: f64,
scale_num: i128,
scale_den: i128,
offset_num: i128,
offset_den: i128,
) -> f64 {
let shifted = if offset_num == 0 {
x_base
} else {
x_base - (offset_num as f64) / (offset_den as f64)
};
shifted * (scale_den as f64) / (scale_num as f64)
}
#[cfg(feature = "f32")]
#[inline(always)]
pub const fn to_base_f32(
x_unit: f32,
scale_num: i128,
scale_den: i128,
offset_num: i128,
offset_den: i128,
) -> f32 {
let scaled = x_unit * (scale_num as f32) / (scale_den as f32);
if offset_num == 0 {
scaled
} else {
scaled + (offset_num as f32) / (offset_den as f32)
}
}
#[cfg(feature = "f32")]
#[inline(always)]
pub const fn from_base_f32(
x_base: f32,
scale_num: i128,
scale_den: i128,
offset_num: i128,
offset_den: i128,
) -> f32 {
let shifted = if offset_num == 0 {
x_base
} else {
x_base - (offset_num as f32) / (offset_den as f32)
};
shifted * (scale_den as f32) / (scale_num as f32)
}