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