human
I wrote the below code

    from itertools import repeat
    from sympy import Poly, gamma, Mul, re, CRootOf, exp as exp_, expand, roots, ilcm, pi, sin, cos, tan, cot, igcd, exp_polar
    (a_, b_) = S([a, b])
    def left(c, is_numer):
        '\n                                Decide    whether    pole    at    c    lies    to    the    left    of    the    fundamental    strip.\n                                '
        c = expand(re(c))
        if ((a_ is None) and (b_ is oo)):
            return True
        if (a_ is None):
            return (c < b_)
        if (b_ is None):
            return (c <= a_)
        if ((c >= b_) == True):
            return False
        if ((c <= a_) == True):
            return True
        if is_numer:
            return None
        if (a_.free_symbols or b_.free_symbols or c.free_symbols):
            return None
        raise MellinTransformStripError('Pole    inside    critical    strip?')
    s_multipliers = []
    for g in f.atoms(gamma):
        if (not g.has(s)):
            continue
        arg = g.args[0]
        if arg.is_Add:
            arg = arg.as_independent(s)[1]
        (coeff, _) = arg.as_coeff_mul(s)
        s_multipliers += [coeff]
    for g in f.atoms(sin, cos, tan, cot):
        if (not g.has(s)):
            continue
        arg = g.args[0]
        if arg.is_Add:
            arg = arg.as_independent(s)[1]
        (coeff, _) = arg.as_coeff_mul(s)
        s_multipliers += [(coeff / pi)]
    s_multipliers = [(abs(x) if x.is_real else x) for x in s_multipliers]
    common_coefficient = S(1)
    for x in s_multipliers:
        if (not x.is_Rational):
            common_coefficient = x
            break
    s_multipliers = [(x / common_coefficient) for x in s_multipliers]
    if (any(((not x.is_Rational) for x in s_multipliers)) or (not common_coefficient.is_real)):
        raise IntegralTransformError('Gamma', None, 'Nonrational    multiplier')
    s_multiplier = (common_coefficient / reduce(ilcm, [S(x.q) for x in s_multipliers], S(1)))
    if (s_multiplier ==...

What's a good function header?
assistant
#Here's a good function header.

def _rewrite_gamma(f, s, a, b):