//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes: //ORIGINAL LINE: @Test public void solverTest() public virtual void solverTest() { double[] w = new double[] { 0.01, 0.5, 0.3, 0.19 }; //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final int n = w.length; int n = w.Length; //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final SumToOne trans = new SumToOne(n); SumToOne trans = new SumToOne(n); System.Func <DoubleArray, DoubleArray> func = (DoubleArray theta) => { return(trans.transform(theta)); }; DoubleArray sigma = DoubleArray.filled(n, 1e-4); DoubleArray start = DoubleArray.filled(n - 1, 0.8); LeastSquareResults res = SOLVER.solve(DoubleArray.copyOf(w), sigma, func, start); assertEquals("chi sqr", 0.0, res.ChiSq, 1e-9); double[] fit = res.FitParameters.toArray(); double[] expected = trans.inverseTransform(w); for (int i = 0; i < n - 1; i++) { //put the fit result back in the range 0 - pi/2 double x = fit[i]; if (x < 0) { x = -x; } if (x > Math.PI / 2) { int p = (int)(x / Math.PI); x -= p * Math.PI; if (x > Math.PI / 2) { x = -x + Math.PI; } } assertEquals(expected[i], x, 1e-9); } }
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes: //ORIGINAL LINE: @Test public void inverseTransformTest() public virtual 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); } } }