def METHOD_NAME(self, fx):
    """ See :meth:`Optimiser.tell()`. """
    if not self._ready_for_tell:
        raise Exception('ask() not called before tell()')
    self._ready_for_tell = False
    # Boundaries? Then reconstruct full fx vector
    if self._boundaries is not None and len(fx) < self._population_size:
        bounded_fx = fx
        fx = np.ones((self._population_size, )) * np.inf
        fx[self._bounded_ids] = bounded_fx
    # Order the normalized samples according to the scores
    order = np.argsort(fx)
    self._zs = self._zs[order]
    # Update center
    Gd = np.dot(self._us, self._zs)
    self._mu += self._eta_mu * np.dot(self._A, Gd)
    # Update root of covariance matrix
    Gm = np.dot(
        np.array([np.outer(z, z).T - self._I for z in self._zs]).T,
        self._us)
    self._A *= scipy.linalg.expm(np.dot(0.5 * self._eta_A, Gm))
    # Update f_guessed on the assumption that the lowest value in our
    # sample approximates f(mu)
    self._f_guessed = fx[order[0]]
    # Update x_best and f_best
    if self._f_guessed < self._f_best:
        self._x_best = np.array(self._xs[order[0]], copy=True)
        self._f_best = fx[order[0]]