# Pastebin xDgr0koH template runTest( xInitial, yInitial, yMin, yMax, xMin, xMax: float, objectiveBody: untyped ) {.dirty.} = proc objective(state: GenericState, state2: Option[GenericState], minScore: Option[Score]): Score = objectiveBody let initialState: GenericState = [xInitial, yInitial] var settings = OptimizerSettings( xDefault: xInitial, yDefault: yInitial, yMin: yMin, yMax: yMax, xMin: xMin, xMax: xMax ) settings.xScale = (settings.xMax - settings.xMin) / 6.0 settings.yScale = (settings.yMax - settings.yMin) / 6.0 ... test "mccormick": runTest(0.0, 0.0, -3.0, 4.0, -1.5, 4.0): let x = state[x] y = state[y] result = sin(x + y) + (x - y).pow(2) - 1.5 * x + 2.5 * y + 1