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.Yprv = self.Y.copy()
          self.Y = self.X + ((tprv - 1.) / self.t) * (self.X - self.Xprv)
docs: Build next update by a smart combination of previous updates.
          (standard FISTA :cite:`beck-2009-fast`).