def _studentized_residuals_fast(self, p=None):
        """
        Returns a list of studentized residuals, (ydata - model)/error

        This function relies on a previous call to set_data(), and assumes
        self._massage_data() has been called (to increase speed).
        
        Parameters
        ----------
        p=None 
            Function parameters to use. None means use the fit results; if no fit, use guess results.
        """
        if len(self._set_xdata)==0 or len(self._set_ydata)==0: return
        
        if p is None:
            if self.results is None: p = self._pguess
            else:                    p = self.results[0]

        # evaluate the function for all the data, returns a list!
        f = self._evaluate_all_functions(self._xdata_massaged, p)

        # get the full residuals list
        residuals = []
        for n in range(len(f)):
            numerator = self._ydata_massaged[n]-f[n]
            denominator = _n.absolute(self._eydata_massaged[n])
            residuals.append(numerator/denominator)
        return residuals