public CrossValidatedCubicSplineController(CrossValidatedCubicSpline spline)
			: base(spline.ErrorVariance)
		{
			base._minimumValue = 0;
			base._isMinimumValueIncluded = false;
			_descriptionText = "Error variance (if unknown, set it to -1) :";
			_spline = spline;
		}
		public void Test1()
		{
			int len = _testvals.Length;

			double[] x = new double[len];
			double[] y = new double[len];
			double[] dy = new double[len];

			for (int i = 0; i < len; i++)
			{
				x[i] = _testvals[i][0];
				y[i] = _testvals[i][1];
				dy[i] = 1;
			}

			CrossValidatedCubicSpline spline = new CrossValidatedCubicSpline();
			spline.CalculateErrorEstimates = true;

			spline.SetErrorVariance(VectorMath.ToROVector(dy), -1);
			spline.Interpolate(VectorMath.ToROVector(x), VectorMath.ToROVector(y));

			// Test the values y at the points x[i] - this are the coefficients of 0th order
			for (int i = 0; i < len; i++)
			{
				AreEqual(_refy[i], spline.Coefficient0[i], 1e-7, 0, "Coeff0[" + i.ToString() + "]");
			}

			// test the higher order coefficients
			for (int i = 0; i < len - 1; i++)
			{
				AreEqual(_expectedCoefficients[i][0], spline.Coefficient1[i], 1e-7, 0, "Coeff1[" + i.ToString() + "]");
				AreEqual(_expectedCoefficients[i][1], spline.Coefficient2[i], 1e-7, 0, "Coeff2[" + i.ToString() + "]");
				AreEqual(_expectedCoefficients[i][2], spline.Coefficient3[i], 1e-7, 0, "Coeff3[" + i.ToString() + "]");
			}

			// test the standard error estimates
			for (int i = 0; i < len; i++)
			{
				AreEqual(_expectedErrorEstimates[i], spline.ErrorEstimate[i], 1e-7, 0, "Error[" + i.ToString() + "]");
			}

			AreEqual(_expectedFitVars[0], spline.SmoothingParameter, 1e-7, 0, "SmoothingParameter");
			AreEqual(_expectedFitVars[1], spline.EstimatedDegreesOfFreedom, 1e-7, 0, "EstimatedDegreesofFreedom");
			AreEqual(_expectedFitVars[2], spline.GeneralizedCrossValidation, 1e-7, 0, "GeneralizedCrossValidation");
			AreEqual(_expectedFitVars[3], spline.MeanSquareResidual, 1e-7, 0, "MeanSquareResidual");
			AreEqual(_expectedFitVars[4], spline.EstimatedTrueMeanSquareError, 1e-7, 0, "EstimatedTrueMeanSquareError");
			AreEqual(_expectedFitVars[5], spline.EstimatedErrorVariance, 1e-7, 0, "EstimatedErrorVariance");
			AreEqual(_expectedFitVars[6], spline.MeanSquareOfInputVariance, 1e-7, 0, "MeanSquareOfInputVariance");
		}