r"""
        :math:`J`

        >>> import sip_models.res.cc as cc
        >>> import numpy as np
        >>> f = np.logspace(-3, 3, 20)
        >>> pars = [100, 0.1, 0.04, 0.8]
        >>> obj = cc.cc(f)
        >>> J = obj.Jacobian_re_im(pars)

def Jacobian_re_im(self, pars):
        r"""
        :math:`J`

        >>> import sip_models.res.cc as cc
        >>> import numpy as np
        >>> f = np.logspace(-3, 3, 20)
        >>> pars = [100, 0.1, 0.04, 0.8]
        >>> obj = cc.cc(f)
        >>> J = obj.Jacobian_re_im(pars)
        """
        partials = []

        # partials.append(self.dre_dlog10rho0(pars)[:, np.newaxis, :])
        partials.append(self.dre_drho0(pars)[:, np.newaxis])
        partials.append(self.dre_dm(pars))
        # partials.append(self.dre_dlog10tau(pars))
        partials.append(self.dre_dtau(pars))
        partials.append(self.dre_dc(pars))
        # partials.append(self.dim_dlog10rho0(pars)[:, np.newaxis, :])
        partials.append(self.dim_drho0(pars)[:, np.newaxis])
        partials.append(self.dim_dm(pars))
        # partials.append(self.dim_dlog10tau(pars))
        partials.append(self.dim_dtau(pars))
        partials.append(self.dim_dc(pars))

        print('SHAPES')
        for x in partials:
            print(x.shape)

        J = np.concatenate(partials, axis=1)
        return J