code: def _studentized_residuals_fast(self, p=None):
          
          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
docs: 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.