use crate::error::ModelError;
pub(super) fn validate_learning_rate(learning_rate: f32) -> Result<(), ModelError> {
if !(learning_rate > 0.0 && learning_rate.is_finite()) {
return Err(ModelError::InputValidationError(format!(
"learning_rate must be positive and finite, got {}",
learning_rate
)));
}
Ok(())
}
pub(super) fn validate_decay_rate(value: f32, param_name: &str) -> Result<(), ModelError> {
if !((0.0..1.0).contains(&value) && value.is_finite()) {
return Err(ModelError::InputValidationError(format!(
"{} must be in range [0, 1) and finite, got {}",
param_name, value
)));
}
Ok(())
}
pub(super) fn validate_epsilon(epsilon: f32) -> Result<(), ModelError> {
if !(epsilon > 0.0 && epsilon.is_finite()) {
return Err(ModelError::InputValidationError(format!(
"epsilon must be positive and finite, got {}",
epsilon
)));
}
Ok(())
}
pub(super) fn validate_positive_finite(value: f32, param_name: &str) -> Result<(), ModelError> {
if !(value > 0.0 && value.is_finite()) {
return Err(ModelError::InputValidationError(format!(
"{} must be positive and finite, got {}",
param_name, value
)));
}
Ok(())
}