(e, **kwargs)
return e
Return simplified ``e`` using Fu-like transformations.
    This is not the "Fu" algorithm. This is called by default
    from ``trigsimp``. By default, hyperbolics subexpressions
    will be simplified, but this can be disabled by setting
    ``hyper=False``.

    Examples
    ========

    >>> from sympy import trigsimp, tan, sinh, tanh
    >>> from sympy.simplify.simplify import futrig
    >>> from sympy.abc import x
    >>> trigsimp(1/tan(x)**2)
    tan(x)**(-2)

    >>> futrig(sinh(x)/tanh(x))
    cosh(x)
Return simplified ``e`` using Fu-like transformations.
    This is not the "Fu" algorithm. This is called by default
    from ``trigsimp``. By default, hyperbolics subexpressions
    will be simplified, but this can be disabled by setting
    ``hyper=False``.
Return simplified e using Fu - like transformations . This is not the Fu algorithm . This is called by default from trigsimp . By default hyperbolics subexpressions will be simplified but this can be disabled by setting hyper = False .
def futrig(e, **kwargs):
    """Return simplified ``e`` using Fu-like transformations.
    This is not the "Fu" algorithm. This is called by default
    from ``trigsimp``. By default, hyperbolics subexpressions
    will be simplified, but this can be disabled by setting
    ``hyper=False``.

    Examples
    ========

    >>> from sympy import trigsimp, tan, sinh, tanh
    >>> from sympy.simplify.simplify import futrig
    >>> from sympy.abc import x
    >>> trigsimp(1/tan(x)**2)
    tan(x)**(-2)

    >>> futrig(sinh(x)/tanh(x))
    cosh(x)

    """
    from sympy.simplify.fu import hyper_as_trig

    e = sympify(e)

    if not isinstance(e, Basic):
        return e

    if not e.args:
        return e

    old = e
    e = bottom_up(e, lambda x: _futrig(x, **kwargs))

    if kwargs.pop('hyper', True) and e.has(C.HyperbolicFunction):
        e, f = hyper_as_trig(e)
        e = f(_futrig(e))

    if e != old and e.is_Mul and e.args[0].is_Rational:
        # redistribute leading coeff on 2-arg Add
        e = Mul(*e.as_coeff_Mul())
    return e
def futrig ( e , * * kwargs ) : from sympy . simplify . fu import hyper_as_trig e = sympify ( e ) if not isinstance ( e , Basic ) : return e if not e . args : return e old = e e = bottom_up ( e , lambda x : _futrig ( x , * * kwargs ) ) if kwargs . pop ( 'hyper' , True ) and e . has ( C . HyperbolicFunction ) : e , f = hyper_as_trig ( e ) e = f ( _futrig ( e ) ) if e != old and e . is_Mul and e . args [ 0 ] . is_Rational : # redistribute leading coeff on 2-arg Add e = Mul ( * e . as_coeff_Mul ( ) ) return e