code: def combination_step(self):
          
  
          # Update t step
          tprv = self.t
          self.t = 0.5 * float(1. + np.sqrt(1. + 4. * tprv**2))
  
          # Update Y
          if not self.opt['FastSolve']:
              self.Yfprv = self.Yf.copy()
          self.Yf = self.Xf + ((tprv - 1.) / self.t) * (self.Xf - self.Xfprv)
docs: Update auxiliary state by a smart combination of previous
          updates in the frequency domain (standard FISTA
          :cite:`beck-2009-fast`).