public void TestRandomData()
        {
            var x = new double[] { 0, 1, 2, 3, 4 };
            var y = new double[] { 79, 5, 37, 20, 21 };

            (var k, var b, var r) = LinearApproximation.GetLinearApproximation(x, y);

            Assert.Equal(-10.1, k);
            Assert.Equal(52.6, b);
            Assert.True(r - 21.01 < 0.00001);
        }
        public void TestNonMonotonicFunction()
        {
            var x = new double[] { 0, 1, 2, 3, 4, 5 };
            var y = new double[] { 5, 6, 5, 6, 5, 6 };

            (var k, var b, var r) = LinearApproximation.GetLinearApproximation(x, y);

            Assert.Equal(0.0857, (int)(k * 10_000) / 10_000.0);
            Assert.Equal(5.2857, (int)(b * 10_000) / 10_000.0);
            Assert.True(r - 0.47809 < 0.00001);
        }
        public void TestLinearFunction()
        {
            // Take points of line y = 11x + 29
            var x = new double[] { 0, 1, 2, 3, 4 };
            var y = new double[] { 29, 40, 51, 62, 73 };

            (var k, var b, var r) = LinearApproximation.GetLinearApproximation(x, y);

            Assert.Equal(11, k);
            Assert.Equal(29, b);
            Assert.Equal(0, r);
        }