public static ReducedDualNumber Sqrt(ReducedDualNumber s) { double u = Math.Sqrt(s.value); return new ReducedDualNumber(u, s.gradient, 0.5 * s.multiplier / u); }
static ReducedDualNumber() { // Used very often (e.g. in matrix initialization). zero = new ReducedDualNumber(0.0); }
public static ReducedDualNumber Sqr(ReducedDualNumber s) { return new ReducedDualNumber(s.value * s.value, s.gradient, 2.0 * s.multiplier * s.value); }
public static ReducedDualNumber Pow(ReducedDualNumber s, ReducedDualNumber t) { double u = Math.Pow(s.value, t.value); return new ReducedDualNumber(u, s.gradient, t.value * Math.Pow(s.value, t.value - 1.0) * s.multiplier, t.gradient, u * Math.Log(s.value) * t.multiplier); }
public static ReducedDualNumber Pow(ReducedDualNumber s, double t) { return new ReducedDualNumber(Math.Pow(s.value, t), s.gradient, t * Math.Pow(s.value, t - 1.0) * s.multiplier); }
public static ReducedDualNumber Log(ReducedDualNumber s) { return new ReducedDualNumber(Math.Log(s.value), s.gradient, s.multiplier / s.value); }
public static ReducedDualNumber Exp(ReducedDualNumber s) { double u = Math.Exp(s.value); return new ReducedDualNumber(u, s.gradient, s.multiplier * u); }