code: def _eval_func(self, x):
          
          cost_evals = []
          f_evals     = np.empty(shape=[0, 1])
  
          for i in range(x.shape[0]):
              st_time    = time.time()
              rlt = self.func(np.atleast_2d(x[i]))
              f_evals     = np.vstack([f_evals,rlt])
              cost_evals += [time.time()-st_time]
          return f_evals, cost_evals
docs: Performs sequential evaluations of the function at x (single location or batch). The computing time of each
          evaluation is also provided.