code: def evaluate(self):
          
  
          if self.opt['AccurateDFid']:
              DX = self.reconstruct()
              W = self.dstep.W
              S = self.dstep.S
          else:
              W = mp_W
              S = mp_S
              Xf = mp_Zf
              Df = mp_Df
              DX = sl.irfftn(sl.inner(
                  Df[np.newaxis, ...], Xf, axis=self.xstep.cri.axisM+1),
                              self.xstep.cri.Nv,
                              np.array(self.xstep.cri.axisN) + 1)
  
          dfd = (np.linalg.norm(W * (DX - S))**2) / 2.0
          rl1 = np.sum(np.abs(self.getcoef()))
          obj = dfd + self.xstep.lmbda*rl1
  
          return (obj, dfd, rl1)
docs: Evaluate functional value of previous iteration.