def combination_step(self):
        """Build next update by a smart combination of previous updates.
        (standard FISTA :cite:`beck-2009-fast`).
        """

        # 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)
Build next update by a smart combination of previous updates.
        (standard FISTA :cite:`beck-2009-fast`).