mod bernoulli;
mod categorical;
mod deterministic;
pub use bernoulli::Bernoulli;
pub use categorical::Categorical;
pub use deterministic::DeterministicEmptyVec;
use tch::{Kind, Tensor};
fn clamp_float_finite(x: &Tensor) -> Result<Tensor, Kind> {
match x.kind() {
Kind::Float => Ok(x.clamp(f64::from(f32::MIN), f64::from(f32::MAX))),
Kind::Double => Ok(x.clamp(f64::MIN, f64::MAX)),
kind => Err(kind),
}
}
fn clamp_float_min(x: &Tensor) -> Result<Tensor, Kind> {
match x.kind() {
Kind::Float => Ok(x.clamp_min(f64::from(f32::MIN))),
Kind::Double => Ok(x.clamp_min(f64::MIN)),
kind => Err(kind),
}
}