/// <inheritdoc/> /// <exception cref="NumberIsTooLargeException"> if derivation order is greater /// than 1</exception> public DerivativeStructure value(DerivativeStructure t) { switch (t.getOrder()) { case 0: return(new DerivativeStructure(t.getFreeParameters(), 0, f.value(t.getValue()))); case 1: { int parameters = t.getFreeParameters(); double[] derivatives = new double[parameters + 1]; derivatives[0] = f.value(t.getValue()); double fPrime = f.derivative().value(t.getValue()); int[] orders = new int[parameters]; for (int i = 0; i < parameters; ++i) { orders[i] = 1; derivatives[i + 1] = fPrime * t.getPartialDerivative(orders); orders[i] = 0; } return(new DerivativeStructure(parameters, 1, derivatives)); } default: throw new NumberIsTooLargeException <Int32, Int32>(t.getOrder(), 1, true); } }
/// <inheritdoc/> public DerivativeStructure value(DerivativeStructure t) { return(new DerivativeStructure(t.getFreeParameters(), t.getOrder(), c)); }