static void Main(string[] args)
        {
            double[][] inputs  = new double[4][];
            double[]   outputs = { 1, 1, -1, -1 };
            inputs[0] = new double[] { -1, 1 };
            inputs[1] = new double[] { 1, -1 };
            inputs[2] = new double[] { 1, 1 };
            inputs[3] = new double[] { -1, -1 };

            MLP network = SourceMulti.mlp_create_model(3, new int[] { 2, 3, 1 });

            //SourceMulti.mlp_fit_classification_backdrop(network, inputs, outputs, 1000, 0.1);
            SourceMulti.mlp_fit_regression_backdrop(network, inputs, outputs, 1000, 0.1);

            /*Console.WriteLine(SourceMulti.mlp_classify(network, new double[] { -1, 1 })[0]);
             * Console.WriteLine(SourceMulti.mlp_classify(network, new double[] { 1, -1 })[0]);
             * Console.WriteLine(SourceMulti.mlp_classify(network, new double[] { 1, 1 })[0]);
             * Console.WriteLine(SourceMulti.mlp_classify(network, new double[] { -1, -1 })[0]);*/

            Console.WriteLine(SourceMulti.mlp_predict(network, new double[] { -1, 1 })[0]);
            Console.WriteLine(SourceMulti.mlp_predict(network, new double[] { 1, -1 })[0]);
            Console.WriteLine(SourceMulti.mlp_predict(network, new double[] { 1, 1 })[0]);
            Console.WriteLine(SourceMulti.mlp_predict(network, new double[] { -1, -1 })[0]);

            Console.ReadLine();
        }
 public static double[] mlp_predict(object model, double[] input)
 {
     return(SourceMulti.mlp_predict((MLP)model, input));
 }
 public static double[] mlp_classify(object model, double[] input)
 {
     return(SourceMulti.mlp_classify((MLP)model, input));
 }
 public static int mlp_fit_classification_backdrop(object model, double[][] inputs, double[] outputs, int iterationNumber, double step)
 {
     return(SourceMulti.mlp_fit_classification_backdrop((MLP)model, inputs, outputs, iterationNumber, step));
 }
 public static MLP mlp_create_model(int numLayers, int[] npl)
 {
     return(SourceMulti.mlp_create_model(numLayers, npl));
 }