def mdl_eigen(s, N):
import numpy as np<EOL>kmdl = []<EOL>n = len(s)<EOL>for k in range(<NUM_LIT:0>, n-<NUM_LIT:1>):<EOL><INDENT>ak = <NUM_LIT:1.>/(n-k) * np.sum(s[k+<NUM_LIT:1>:])<EOL>gk = np.prod(s[k+<NUM_LIT:1>:]**(<NUM_LIT:1.>/(n-k)))<EOL>kmdl.append( -(n-k)*N * np.log(gk/ak) + <NUM_LIT:0.5>*k*(<NUM_LIT>*n-k)*np.log(N))<EOL><DEDENT>return kmdl<EOL>
r"""MDL order-selection using eigen values

    :param s: a list of `p` sorted eigen values
    :param N: the size of the input data. To be defined precisely.

    :return:
        * an array containing the AIC values

    .. math:: MDL(k) = (n-k)N \ln \frac{g(k)}{a(k)} + 0.5k(2n-k) log(N)

    .. seealso:: :func:`aic_eigen` for details

    :References:
        * [Marple]_ Chap 13,
        * [Wax]_