mrs_real QGMMModel::deltaBIC(realvec C1, mrs_natural N1, realvec C2, mrs_natural N2, realvec C, mrs_real lambda) { //matrices should be square and equal sized if(C1.getCols() != C2.getCols() && C1.getCols() != C.getCols() && C1.getCols()!= C1.getRows()) { MRSERR("QGMMModel:deltaBIC: matrices should all be squared and equal sized..."); return MAXREAL; //just a way to sinalize the above error... [!] } mrs_real res; mrs_real N = (mrs_real)(N1 + N2); mrs_real d = (mrs_real)C1.getCols(); res = N * log(C.det()); res -= (mrs_real)N1 * log(C1.det()); res -= (mrs_real)N2 * log(C2.det()); res *= 0.5f; res -= 0.5f * lambda * (d + 0.5f*d*(d+1.0f))* log(N); return res; }