code: def _crosscov(x, y, axis=-1, all_lags=False, debias=True):
      
      if x.shape[axis] != y.shape[axis]:
          raise ValueError(
              'crosscov() only works on same-length sequences for now'
              )
      if debias:
          x = _remove_bias(x, axis)
          y = _remove_bias(y, axis)
      slicing = [slice(d) for d in x.shape]
      slicing[axis] = slice(None,None,-1)
      sxy = _fftconvolve(x, y[tuple(slicing)], axis=axis, mode='full')
      N = x.shape[axis]
      sxy /= N
      if all_lags:
          return sxy
      slicing[axis] = slice(N-1,2*N-1)
      return sxy[tuple(slicing)]
docs: Returns the crosscovariance sequence between two ndarrays.
      This is performed by calling fftconvolve on x, y[::-1]
  
      Parameters
  
  
      x: ndarray
      y: ndarray
      axis: time axis
  
      all_lags: {True/False}
      whether to return all nonzero lags, or to clip the length of s_xy
      to be the length of x and y. If False, then the zero lag covariance
      is at index 0. Otherwise, it is found at (len(x) + len(y) - 1)/2
  
      debias: {True/False}
      Always removes an estimate of the mean along the axis, unless
      told not to.
  
  
      cross covariance is defined as
      sxy[k] := E{X[t]*Y[t+k]}, where X,Y are zero mean random processes