def sinh(expr): """Hyperbolic sine""" if type(expr) == GC: return GC( se.sinh(expr.expr), {s: d * se.cosh(expr.expr) for s, d in expr.gradients.items()}) return se.sinh(expr)
def test_llvm_double(): import numpy as np from symengine import Lambdify args = x, y, z = symbols('x y z') expr = sin(sinh(x + y) + z) l = Lambdify(args, expr, cse=True, backend='llvm') ss = pickle.dumps(l) ll = pickle.loads(ss) inp = [1, 2, 3] assert np.allclose(l(inp), ll(inp))
def test_conv12b(): x = sympy.Symbol("x") y = sympy.Symbol("y") assert sympify(sympy.sinh(x / 3)) == sinh(Symbol("x") / 3) assert sympify(sympy.cosh(x / 3)) == cosh(Symbol("x") / 3) assert sympify(sympy.tanh(x / 3)) == tanh(Symbol("x") / 3) assert sympify(sympy.coth(x / 3)) == coth(Symbol("x") / 3) assert sympify(sympy.asinh(x / 3)) == asinh(Symbol("x") / 3) assert sympify(sympy.acosh(x / 3)) == acosh(Symbol("x") / 3) assert sympify(sympy.atanh(x / 3)) == atanh(Symbol("x") / 3) assert sympify(sympy.acoth(x / 3)) == acoth(Symbol("x") / 3)
def test_conv12(): x = Symbol("x") y = Symbol("y") assert sinh(x / 3) == sinh(sympy.Symbol("x") / 3) assert cosh(x / 3) == cosh(sympy.Symbol("x") / 3) assert tanh(x / 3) == tanh(sympy.Symbol("x") / 3) assert coth(x / 3) == coth(sympy.Symbol("x") / 3) assert asinh(x / 3) == asinh(sympy.Symbol("x") / 3) assert acosh(x / 3) == acosh(sympy.Symbol("x") / 3) assert atanh(x / 3) == atanh(sympy.Symbol("x") / 3) assert acoth(x / 3) == acoth(sympy.Symbol("x") / 3) assert sinh(x / 3)._sympy_() == sympy.sinh(sympy.Symbol("x") / 3) assert cosh(x / 3)._sympy_() == sympy.cosh(sympy.Symbol("x") / 3) assert tanh(x / 3)._sympy_() == sympy.tanh(sympy.Symbol("x") / 3) assert coth(x / 3)._sympy_() == sympy.coth(sympy.Symbol("x") / 3) assert asinh(x / 3)._sympy_() == sympy.asinh(sympy.Symbol("x") / 3) assert acosh(x / 3)._sympy_() == sympy.acosh(sympy.Symbol("x") / 3) assert atanh(x / 3)._sympy_() == sympy.atanh(sympy.Symbol("x") / 3) assert acoth(x / 3)._sympy_() == sympy.acoth(sympy.Symbol("x") / 3)
def test_conv12b(): x = sympy.Symbol("x") y = sympy.Symbol("y") assert sympify(sympy.sinh(x/3)) == sinh(Symbol("x") / 3) assert sympify(sympy.cosh(x/3)) == cosh(Symbol("x") / 3) assert sympify(sympy.tanh(x/3)) == tanh(Symbol("x") / 3) assert sympify(sympy.coth(x/3)) == coth(Symbol("x") / 3) assert sympify(sympy.asinh(x/3)) == asinh(Symbol("x") / 3) assert sympify(sympy.acosh(x/3)) == acosh(Symbol("x") / 3) assert sympify(sympy.atanh(x/3)) == atanh(Symbol("x") / 3) assert sympify(sympy.acoth(x/3)) == acoth(Symbol("x") / 3)
def test_conv12(): x = Symbol("x") y = Symbol("y") assert sinh(x/3) == sinh(sympy.Symbol("x") / 3) assert cosh(x/3) == cosh(sympy.Symbol("x") / 3) assert tanh(x/3) == tanh(sympy.Symbol("x") / 3) assert coth(x/3) == coth(sympy.Symbol("x") / 3) assert asinh(x/3) == asinh(sympy.Symbol("x") / 3) assert acosh(x/3) == acosh(sympy.Symbol("x") / 3) assert atanh(x/3) == atanh(sympy.Symbol("x") / 3) assert acoth(x/3) == acoth(sympy.Symbol("x") / 3) assert sinh(x/3)._sympy_() == sympy.sinh(sympy.Symbol("x") / 3) assert cosh(x/3)._sympy_() == sympy.cosh(sympy.Symbol("x") / 3) assert tanh(x/3)._sympy_() == sympy.tanh(sympy.Symbol("x") / 3) assert coth(x/3)._sympy_() == sympy.coth(sympy.Symbol("x") / 3) assert asinh(x/3)._sympy_() == sympy.asinh(sympy.Symbol("x") / 3) assert acosh(x/3)._sympy_() == sympy.acosh(sympy.Symbol("x") / 3) assert atanh(x/3)._sympy_() == sympy.atanh(sympy.Symbol("x") / 3) assert acoth(x/3)._sympy_() == sympy.acoth(sympy.Symbol("x") / 3)
def test_llvm_double(): import numpy as np from symengine import Lambdify args = x, y, z = symbols('x y z') expr = sin(sinh(x + y) + z) l = Lambdify(args, expr, cse=True, backend='llvm') ss = pickle.dumps(l) ll = pickle.loads(ss) inp = [1, 2, 3] assert np.allclose(l(inp), ll(inp)) # check that the LLVMDoubleVisitor is properly dumped/loaded assert np.allclose(l.unsafe_real(inp), ll.unsafe_real(inp))