public SparseDualNumber(SparseDualNumber f, double g, double g1) { value = g; if (g1 != 0.0 && f.variables != null) { variables = f.variables; int n = variables.Length; gradient = new double[n]; for (int i = 0; i < n; i++) { gradient[i] = g1 * f.gradient[i]; } } }
public SparseDualNumber(SparseDualNumber f1, SparseDualNumber f2, double g, double g1, double g2) { value = g; /*gradient = new Dictionary<int, double>(); if (g1 != 0.0) { foreach (KeyValuePair<int, double> gr in f1.gradient) { gradient[gr.Key] += g1 * gr.Value; } } if (g2 != 0.0) { foreach (KeyValuePair<int, double> gr in f1.gradient) { gradient[gr.Key] += g2 * gr.Value; } }*/ }
public static SparseDualNumber Exp(SparseDualNumber f) { double c = Math.Exp(f.value); return new SparseDualNumber(f, c, c); }