public void Visit(Compiled.NaryFunc elem)
 {
     double[] args = new double[elem.Terms.Length];
     for (int i = 0; i < args.Length; i++)
     {
         args[i] = ValueOf(elem.Terms[i]);
     }
     elem.Value = elem.Eval(args);
 }
            public void Visit(Compiled.NaryFunc elem)
            {
                double[] args = new double[elem.Terms.Length];
                for (int i = 0; i < args.Length; i++)
                {
                    args[i] = ValueOf(elem.Terms[i]);
                }

                elem.Value = elem.Eval(args);
                var grad = elem.Diff(args);

                for (int i = 0; i < grad.Length; ++i)
                {
                    elem.Inputs[i].Weight = grad[i];
                }
            }