(e, **kwargs)
return coeff*e
Helper for futrig.
Helper for futrig.
Helper for futrig .
def _futrig(e, **kwargs):
    """Helper for futrig."""
    from sympy.strategies.tree import greedy
    from sympy.strategies.core import identity
    from sympy.simplify.fu import (
        TR1, TR2, TR3, TR2i, TR14, TR5, TR10, L, TR10i,
        TR8, TR6, TR15, TR16, TR111, TR5, TRmorrie, TR11, TR14, TR22,
        TR12)
    from sympy.core.compatibility import ordered, _nodes

    if not e.has(C.TrigonometricFunction):
        return e

    if e.is_Mul:
        coeff, e = e.as_independent(C.TrigonometricFunction)
    else:
        coeff = S.One

    Lops = lambda x: (L(x), x.count_ops(), _nodes(x), len(x.args), x.is_Add)
    trigs = lambda x: x.has(C.TrigonometricFunction)

    tree = [identity,
        (
        TR3,  # canonical angles
        TR1,  # sec-csc -> cos-sin
        TR12,  # expand tan of sum
        lambda x: _eapply(factor, x, trigs),
        TR2,  # tan-cot -> sin-cos
        [identity, lambda x: _eapply(_mexpand, x, trigs)],
        TR2i,  # sin-cos ratio -> tan
        lambda x: _eapply(lambda i: factor(i.normal()), x, trigs),
        TR14,  # factored identities
        TR5,  # sin-pow -> cos_pow
        TR10,  # sin-cos of sums -> sin-cos prod
        TR11, TR6, # reduce double angles and rewrite cos pows
        lambda x: _eapply(factor, x, trigs),
        TR14,  # factored powers of identities
        [identity, lambda x: _eapply(_mexpand, x, trigs)],
        TRmorrie,
        TR10i,  # sin-cos products > sin-cos of sums
        [identity, TR8],  # sin-cos products -> sin-cos of sums
        [identity, lambda x: TR2i(TR2(x))],  # tan -> sin-cos -> tan
        [
            lambda x: _eapply(expand_mul, TR5(x), trigs),
            lambda x: _eapply(
                expand_mul, TR15(x), trigs)], # pos/neg powers of sin
        [
            lambda x:  _eapply(expand_mul, TR6(x), trigs),
            lambda x:  _eapply(
                expand_mul, TR16(x), trigs)], # pos/neg powers of cos
        TR111,  # tan, sin, cos to neg power -> cot, csc, sec
        [identity, TR2i],  # sin-cos ratio to tan
        [identity, lambda x: _eapply(
            expand_mul, TR22(x), trigs)],  # tan-cot to sec-csc
        TR1, TR2, TR2i,
        [identity, lambda x: _eapply(
            factor_terms, TR12(x), trigs)],  # expand tan of sum
        )]
    e = greedy(tree, objective=Lops)(e)

    return coeff*e
def _futrig ( e , * * kwargs ) : from sympy . strategies . tree import greedy from sympy . strategies . core import identity from sympy . simplify . fu import ( TR1 , TR2 , TR3 , TR2i , TR14 , TR5 , TR10 , L , TR10i , TR8 , TR6 , TR15 , TR16 , TR111 , TR5 , TRmorrie , TR11 , TR14 , TR22 , TR12 ) from sympy . core . compatibility import ordered , _nodes if not e . has ( C . TrigonometricFunction ) : return e if e . is_Mul : coeff , e = e . as_independent ( C . TrigonometricFunction ) else : coeff = S . One Lops = lambda x : ( L ( x ) , x . count_ops ( ) , _nodes ( x ) , len ( x . args ) , x . is_Add ) trigs = lambda x : x . has ( C . TrigonometricFunction ) tree = [ identity , ( TR3 , # canonical angles TR1 , # sec-csc -> cos-sin TR12 , # expand tan of sum lambda x : _eapply ( factor , x , trigs ) , TR2 , # tan-cot -> sin-cos [ identity , lambda x : _eapply ( _mexpand , x , trigs ) ] , TR2i , # sin-cos ratio -> tan lambda x : _eapply ( lambda i : factor ( i . normal ( ) ) , x , trigs ) , TR14 , # factored identities TR5 , # sin-pow -> cos_pow TR10 , # sin-cos of sums -> sin-cos prod TR11 , TR6 , # reduce double angles and rewrite cos pows lambda x : _eapply ( factor , x , trigs ) , TR14 , # factored powers of identities [ identity , lambda x : _eapply ( _mexpand , x , trigs ) ] , TRmorrie , TR10i , # sin-cos products > sin-cos of sums [ identity , TR8 ] , # sin-cos products -> sin-cos of sums [ identity , lambda x : TR2i ( TR2 ( x ) ) ] , # tan -> sin-cos -> tan [ lambda x : _eapply ( expand_mul , TR5 ( x ) , trigs ) , lambda x : _eapply ( expand_mul , TR15 ( x ) , trigs ) ] , # pos/neg powers of sin [ lambda x : _eapply ( expand_mul , TR6 ( x ) , trigs ) , lambda x : _eapply ( expand_mul , TR16 ( x ) , trigs ) ] , # pos/neg powers of cos TR111 , # tan, sin, cos to neg power -> cot, csc, sec [ identity , TR2i ] , # sin-cos ratio to tan [ identity , lambda x : _eapply ( expand_mul , TR22 ( x ) , trigs ) ] , # tan-cot to sec-csc TR1 , TR2 , TR2i , [ identity , lambda x : _eapply ( factor_terms , TR12 ( x ) , trigs ) ] , # expand tan of sum ) ] e = greedy ( tree , objective = Lops ) ( e ) return coeff * e