'Returns the homogeneous polynomial of ``f``.
A homogeneous polynomial is a polynomial whose all monomials with
non-zero coefficients have the same total degree. If you only
want to check if a polynomial is homogeneous, then use
:func:`Poly.is_homogeneous`. If you want not only to check if a
polynomial is homogeneous but also compute its homogeneous order,
then use :func:`Poly.homogeneous_order`.
Examples
>>> from sympy import Poly
>>> from sympy.abc import x, y, z
>>> f = Poly(x**5 + 2*x**2*y**2 + 9*x*y**3)
>>> f.homogenize(z)
Poly(x**5 + 2*x**2*y**2*z + 9*x*y**3*z, x, y, z, domain=\'ZZ\')'

def homogenize(f, s):

    if (not isinstance(s, Symbol)):
        raise TypeError(('``Symbol``    expected,    got    %s' % type(s)))
    if (s in f.gens):
        i = f.gens.index(s)
        gens = f.gens
    else:
        i = len(f.gens)
        gens = (f.gens + (s,))
    if hasattr(f.rep, 'homogenize'):
        return f.per(f.rep.homogenize(i), gens=gens)
    raise OperationNotSupported(f, 'homogeneous_order')
