Evaluate log of the density to propose ``x``, namely log(q(x))
        for each row in x.

        :param x:

            Matrix-like array; the proposed points. Expect i-th accessible
            as ``x[i]``.

        :param out:

            Vector-like array, length==``len(x)``, optional; If provided,
            the output is written into this array.

def multi_evaluate(self, x, out=None):
        """Evaluate log of the density to propose ``x``, namely log(q(x))
        for each row in x.

        :param x:

            Matrix-like array; the proposed points. Expect i-th accessible
            as ``x[i]``.

        :param out:

            Vector-like array, length==``len(x)``, optional; If provided,
            the output is written into this array.

        """
        if out is None:
            out = _np.empty(len(x))
        else:
            assert len(out) == len(x)

        for i, point in enumerate(x):
            out[i] = self.evaluate(point)

        return out