'Computes square-free norm of ``f``.
Returns ``s``, ``f``, ``r``, such that ``g(x) = f(x-sa)`` and
``r(x) = Norm(g(x))`` is a square-free polynomial over ``K``,
where ``a`` is the algebraic extension of the ground domain.
Examples
>>> from sympy import Poly, sqrt
>>> from sympy.abc import x
>>> s, f, r = Poly(x**2 + 1, x, extension=[sqrt(3)]).sqf_norm()
>>> s
1
>>> f
Poly(x**2 - 2*sqrt(3)*x + 4, x, domain=\'QQ<sqrt(3)>\')
>>> r
Poly(x**4 - 4*x**2 + 16, x, domain=\'QQ\')'

def sqf_norm(f):

    if hasattr(f.rep, 'sqf_norm'):
        (s, g, r) = f.rep.sqf_norm()
    else:
        raise OperationNotSupported(f, 'sqf_norm')
    return (s, f.per(g), f.per(r))
