UncoupledParameterTransforms transforms = new UncoupledParameterTransforms(start, TRANSFORMS, fixed);
NonLinearTransformFunction transFunc = new NonLinearTransformFunction(FUNCTION, JACOBIAN, transforms);
Function1D<DoubleMatrix1D, DoubleMatrix1D> func = transFunc.getFittingFunction();
Function1D<DoubleMatrix1D, DoubleMatrix2D> jacFunc = transFunc.getFittingJacobian();
VectorFieldFirstOrderDifferentiator diff = new VectorFieldFirstOrderDifferentiator();
Function1D<DoubleMatrix1D, DoubleMatrix2D> jacFuncFD = diff.differentiate(func);
DoubleMatrix1D testPoint = new DoubleMatrix1D(new double[] {4.5, -2.1 });
DoubleMatrix2D jac = jacFunc.evaluate(testPoint);
DoubleMatrix2D jacFD = jacFuncFD.evaluate(testPoint);
assertEquals(3, jac.getNumberOfRows());