def cdot(L, out=None):
    r"""Product of a Cholesky matrix with itself transposed.

    Args:
        L (array_like): Cholesky matrix.
        out (:class:`numpy.ndarray`, optional): copy result to.

    Returns:
        :class:`numpy.ndarray`: :math:`\mathrm L\mathrm L^\intercal`.
    """
    L = asarray(L, float)

    layout_error = "Wrong matrix layout."

    if L.ndim != 2:
        raise ValueError(layout_error)

    if L.shape[0] != L.shape[1]:
        raise ValueError(layout_error)

    if out is None:
        out = empty((L.shape[0], L.shape[1]), float)

    return einsum("ij,kj->ik", L, L, out=out)
r"""Product of a Cholesky matrix with itself transposed.

    Args:
        L (array_like): Cholesky matrix.
        out (:class:`numpy.ndarray`, optional): copy result to.

    Returns:
        :class:`numpy.ndarray`: :math:`\mathrm L\mathrm L^\intercal`.