(f, x, only_double=False)
Try to integrate f dx from zero to infinity.

    This function tries to apply the integration theorems found in literature,
    i.e. it tries to rewrite f as either one or a product of two G-functions.

    The parameter ``only_double`` is used internally in the recursive algorithm
    to disable trying to rewrite f as a single G-function.
Try to integrate f dx from zero to infinity.
Try to integrate f dx from zero to infinity .
def _meijerint_definite_4(f, x, only_double=False):
    """
    Try to integrate f dx from zero to infinity.

    This function tries to apply the integration theorems found in literature,
    i.e. it tries to rewrite f as either one or a product of two G-functions.

    The parameter ``only_double`` is used internally in the recursive algorithm
    to disable trying to rewrite f as a single G-function.
    """
    # This function does (2) and (3)
    _debug('Integrating', f)
    # Try single G function.
    if not only_double:
        gs = _rewrite1(f, x, recursive=False)
        if gs is not None:
            fac, po, g, cond = gs
            _debug('Could rewrite as single G function:', fac, po, g)
            res = S(0)
            for C, s, f in g:
                if C == 0:
                    continue
                C, f = _rewrite_saxena_1(fac*C, po*x**s, f, x)
                res += C*_int0oo_1(f, x)
                cond = And(cond, _check_antecedents_1(f, x))
            cond = _my_unpolarify(cond)
            _debug('Result before branch substitutions is:', res)
            if cond == False:
                _debug('But cond is always False.')
            else:
                return _my_unpolarify(hyperexpand(res)), cond

    # Try two G functions.
    gs = _rewrite2(f, x)
    if gs is not None:
        for full_pb in [False, True]:
            fac, po, g1, g2, cond = gs
            _debug('Could rewrite as two G functions:', fac, po, g1, g2)
            res = S(0)
            for C1, s1, f1 in g1:
                for C2, s2, f2 in g2:
                    r = _rewrite_saxena(fac*C1*C2, po*x**(s1 + s2),
                                        f1, f2, x, full_pb)
                    if r is None:
                        _debug('Non-rational exponents.')
                        return
                    C, f1_, f2_ = r
                    _debug('Saxena subst for yielded:', C, f1_, f2_)
                    cond = And(cond, _check_antecedents(f1_, f2_, x))
                    res += C*_int0oo(f1_, f2_, x)
            _debug('Result before branch substitutions is:', res)
            cond = _my_unpolarify(cond)
            if cond == False:
                _debug('But cond is always False (full_pb=%s).' % full_pb)
            else:
                if only_double:
                    return res, cond
                return _my_unpolarify(hyperexpand(res)), cond
def _meijerint_definite_4 ( f , x , only_double = False ) : # This function does (2) and (3) _debug ( 'Integrating' , f ) # Try single G function. if not only_double : gs = _rewrite1 ( f , x , recursive = False ) if gs is not None : fac , po , g , cond = gs _debug ( 'Could rewrite as single G function:' , fac , po , g ) res = S ( 0 ) for C , s , f in g : if C == 0 : continue C , f = _rewrite_saxena_1 ( fac * C , po * x ** s , f , x ) res += C * _int0oo_1 ( f , x ) cond = And ( cond , _check_antecedents_1 ( f , x ) ) cond = _my_unpolarify ( cond ) _debug ( 'Result before branch substitutions is:' , res ) if cond == False : _debug ( 'But cond is always False.' ) else : return _my_unpolarify ( hyperexpand ( res ) ) , cond # Try two G functions. gs = _rewrite2 ( f , x ) if gs is not None : for full_pb in [ False , True ] : fac , po , g1 , g2 , cond = gs _debug ( 'Could rewrite as two G functions:' , fac , po , g1 , g2 ) res = S ( 0 ) for C1 , s1 , f1 in g1 : for C2 , s2 , f2 in g2 : r = _rewrite_saxena ( fac * C1 * C2 , po * x ** ( s1 + s2 ) , f1 , f2 , x , full_pb ) if r is None : _debug ( 'Non-rational exponents.' ) return C , f1_ , f2_ = r _debug ( 'Saxena subst for yielded:' , C , f1_ , f2_ ) cond = And ( cond , _check_antecedents ( f1_ , f2_ , x ) ) res += C * _int0oo ( f1_ , f2_ , x ) _debug ( 'Result before branch substitutions is:' , res ) cond = _my_unpolarify ( cond ) if cond == False : _debug ( 'But cond is always False (full_pb=%s).' % full_pb ) else : if only_double : return res , cond return _my_unpolarify ( hyperexpand ( res ) ) , cond