#include extern "C" { #include } #include namespace Poincare { HyperbolicArcSine::HyperbolicArcSine() : Function("asinh") { } Expression::Type HyperbolicArcSine::type() const { return Type::HyperbolicArcSine; } Expression * HyperbolicArcSine::cloneWithDifferentOperands(Expression** newOperands, int numberOfOperands, bool cloneOperands) const { assert(newOperands != nullptr); HyperbolicArcSine * s = new HyperbolicArcSine(); s->setArgument(newOperands, numberOfOperands, cloneOperands); return s; } template Complex HyperbolicArcSine::templatedComputeComplex(const Complex c) const { if (c.b() != 0) { return Complex::Float(NAN); } return Complex::Float(std::asinh(c.a())); } }