pub trait Ln {
type Output;
fn ln(self) -> Self::Output;
}
impl Ln for f64 {
type Output = f64;
fn ln(self) -> Self::Output {
<f64>::ln(self)
}
}
impl Ln for &f64 {
type Output = f64;
fn ln(self) -> Self::Output {
(*self).ln()
}
}
impl Ln for f32 {
type Output = f32;
fn ln(self) -> Self::Output {
<f32>::ln(self)
}
}
impl Ln for &f32 {
type Output = f32;
fn ln(self) -> Self::Output {
(*self).ln()
}
}
pub trait Exp {
type Output;
fn exp(self) -> Self::Output;
}
impl Exp for f64 {
type Output = Self;
fn exp(self) -> Self::Output {
<f64>::exp(self)
}
}
impl Exp for &f64 {
type Output = f64;
fn exp(self) -> Self::Output {
(*self).exp()
}
}
impl Exp for f32 {
type Output = Self;
fn exp(self) -> Self::Output {
<f32>::exp(self)
}
}
impl Exp for &f32 {
type Output = f32;
fn exp(self) -> Self::Output {
(*self).exp()
}
}
pub use num_traits::Pow;