use crate::aliases::TVec; use crate::RealNumber; /// Component-wise exponential. /// /// # See also: /// /// * [`exp2()`] pub fn exp(v: &TVec) -> TVec { v.map(|x| x.exp()) } /// Component-wise base-2 exponential. /// /// # See also: /// /// * [`exp()`] pub fn exp2(v: &TVec) -> TVec { v.map(|x| x.exp2()) } /// Compute the inverse of the square root of each component of `v`. /// /// # See also: /// /// * [`sqrt()`] pub fn inversesqrt(v: &TVec) -> TVec { v.map(|x| T::one() / x.sqrt()) } /// Component-wise logarithm. /// /// # See also: /// /// * [`log2()`] pub fn log(v: &TVec) -> TVec { v.map(|x| x.ln()) } /// Component-wise base-2 logarithm. /// /// # See also: /// /// * [`log()`] pub fn log2(v: &TVec) -> TVec { v.map(|x| x.log2()) } /// Component-wise power. pub fn pow(base: &TVec, exponent: &TVec) -> TVec { base.zip_map(exponent, |b, e| b.powf(e)) } /// Component-wise square root. /// /// # See also: /// /// * [`exp()`] /// * [`exp2()`] /// * [`inversesqrt()`] /// * [`pow`] pub fn sqrt(v: &TVec) -> TVec { v.map(|x| x.sqrt()) }