wpt = bTS.blackVariance(/*@Time*/ (t + dt), strike, true);
QL.require(wpt >= w , "decreasing variance at strike"); // TODO: message
dwdt = (wpt - w) / dt;
} else {
dt = Math.min(0.0001, t / 2.0);
wpt = bTS.blackVariance(/*@Time*/ (t + dt), strike, true);
wmt = bTS.blackVariance(/*@Time*/ (t - dt), strike, true);
QL.ensure(wpt >= w , "decreasing variance at strike"); // TODO: message
QL.ensure(w >= wmt , "decreasing variance at strike"); // TODO: message
dwdt = (wpt - wmt) / (2.0 * dt);
}