public double getCRB() { double p = h / var; AllPAMSymbolGenerator gen = new AllPAMSymbolGenerator(); double bestcrb = Double.NEGATIVE_INFINITY; double[] d = new double[T]; for (int i = 0; i < Math.pow(M, T); i++) { double[] nextsym = gen.getNext(); // System.out.println(nextsym.length); for (int j = 0; j < T; j++) { d[j] = x[j] - nextsym[j]; } double magd2 = VectorFunctions.sum2(d); if (magd2 > 0.5) { double std = VectorFunctions.dot(x, d); double crb = var / (magx2 - p * std * std / Math.expm1(p * magd2)); if (crb > bestcrb) bestcrb = crb; } } return bestcrb; }