@Test public void inverseTransformTest() { for (int n = 2; n < 13; n++) { double[] theta = new double[n - 1]; for (int j = 0; j < n - 1; j++) { theta[j] = RANDOM.nextDouble() * Math.PI / 2; } SumToOne trans = new SumToOne(n); DoubleArray w = trans.transform(DoubleArray.copyOf(theta)); DoubleArray theta2 = trans.inverseTransform(w); for (int j = 0; j < n - 1; j++) { assertEquals("element " + j + ", of vector length " + n, theta[j], theta2.get(j), 1e-9); } } }
@Test public void transformTest() { for (int n = 2; n < 13; n++) { double[] from = new double[n - 1]; for (int j = 0; j < n - 1; j++) { from[j] = RANDOM.nextDouble() * Math.PI / 2; } SumToOne trans = new SumToOne(n); DoubleArray to = trans.transform(DoubleArray.copyOf(from)); assertEquals(n, to.size()); double sum = 0; for (int i = 0; i < n; i++) { sum += to.get(i); } assertEquals("vector length " + n, 1.0, sum, 1e-9); } }
final int n = 5; final SumToOne trans = new SumToOne(n); Function<DoubleArray, DoubleArray> func = new Function<DoubleArray, DoubleArray>() { @Override
double[] w = new double[] {0.01, 0.5, 0.3, 0.19 }; final int n = w.length; final SumToOne trans = new SumToOne(n); Function<DoubleArray, DoubleArray> func = new Function<DoubleArray, DoubleArray>() {