pub fn ln<T: FloatingNumber>(x: &T) -> Option<T>where for<'a> &'a T: Sub<Output = T> + Mul<Output = T> + Reciprocal<Output = T>,