public void TestNNLS_1()
        {
            double[][] a = new double[2][];
            a[0] = new double[] { 1, 2, 3, 4 };
            a[1] = new double[] { 1, 4, 9, 16 };

            double[] b = new double[] { 0.6, 2.2, 4.8, 8.4 };

            double[] x = new double[2];

            double rnorm;

            NonNegativeLeastSquaresCalc.NNLS(a, 4, 2, b, x, out rnorm, null, null, null);

            Assert.AreEqual(0.1, x[0], 0.01);
            Assert.AreEqual(0.5, x[1], 0.01);
        }
        public void TestNNLS_4()
        {
            double[][] a = new double[3][];
            a[0] = new double[] { 1, 2, 3, 4 };
            a[1] = new double[] { 1, 4, 9, 16 };
            a[2] = new double[] { 1, 8, 27, 64 };

            double[] b = new double[] { 0.23, 1.24, 3.81, 8.72 };

            double[] x = new double[3];

            double rnorm;

            NonNegativeLeastSquaresCalc.NNLS(a, 4, 3, b, x, out rnorm, null, null, null);

            Assert.AreEqual(0.1, x[0], 0.01);
            Assert.AreEqual(0.0, x[1], 0.01);
            Assert.AreEqual(0.13, x[2], 0.01);
        }
        public void TestNNLS_3()
        {
            double[][] a = new double[4][];
            a[0] = new double[] { 1, 2, 3, 4 };
            a[1] = new double[] { 1, 4, 9, 16 };
            a[2] = new double[] { 1, 8, 27, 64 };
            a[3] = new double[] { 1, 16, 81, 256 };

            double[] b = new double[] { 0.73, 3.24, 8.31, 16.72 };

            double[] x = new double[4];

            double rnorm;

            NonNegativeLeastSquaresCalc.NNLS(a, 4, 4, b, x, out rnorm, null, null, null);

            Assert.AreEqual(0.1, x[0], 0.01);
            Assert.AreEqual(0.5, x[1], 0.01);
            Assert.AreEqual(0.13, x[2], 0.01);
            Assert.AreEqual(0, x[3], 0.01);
        }