generateFunction("x") new CalcFunctions[randRange(1, CalcFunctions.length - 1)](INNER.f)
randFromArray( INNER.wrongs ) randFromArray( OUTER.wrongs )
randFromArray( INNER.wrongs ) randFromArray( OUTER.wrongs )
expr(["*", OUTER.ddxF, INNER.ddxF]) funcNotation("x")

Let NOTATION.f = OUTER.fText

NOTATION.ddxF = {?}

DERIVATIVE

  • expr(["*", OUTER.ddxF, randFromArray(INNER.wrongs)])
  • expr(["*", randFromArray(OUTER.wrongs), INNER.ddxF])
  • expr(["*", OUTER_WRONG_1, INNER_WRONG_1])
  • expr(["*", OUTER_WRONG_2, INNER_WRONG_1])
  • expr(["+", randFromArray(OUTER.wrongs), randFromArray(INNER.wrongs)])
  • expr(["+", randFromArray(OUTER.wrongs), randFromArray(INNER.wrongs)])
  • expr(OUTER.ddxF)
  • expr(randFromArray(OUTER.wrongs))
  • expr(randFromArray(OUTER.wrongs))

NOTATION.ddxF = ( derivative of OUTER.fText with respect to INNER.fText ) \cdot ( derivative of INNER.fText with respect to x)

The derivative of OUTER.fText with respect to INNER.fText is OUTER.ddxFText.

The derivative of INNER.fText with respect to x is INNER.ddxFText.

So NOTATION.ddxF = DERIVATIVE.