code: def rsdl_s(self, Yprev, Y):
          
  
          # Since s = rho A^T B (y^(k+1) - y^(k)) and B = -(I I I ...)^T,
          # the correct calculation here would involve replicating (Yprev - Y)
          # on the axis on which the blocks of X are stacked. Since this would
          # require allocating additional memory, and since it is only the norm
          # of s that is required, instead of replicating the vector it is
          # scaled to have the same l2 norm as the replicated vector
          return np.sqrt(self.Nb) * self.rho * (Yprev - Y)
docs: Compute dual residual vector.