pub fn cosh<F: Float>(x: F) -> F
cosh x. It stays finite up to where cosh itself overflows, beyond the point where e^x does.