if (equal(a, b, epsilon)) {
while (nA < NA && equal(a, A.get(nA), epsilon)) ++nA;
a = (nA < NA ? A.get(nA) : Double.MAX_VALUE);
while (nB < NB && equal(b, B.get(nB), epsilon)) ++nB;
b = (nB < NB ? B.get(nB) : Double.MAX_VALUE);
} elseif (a < b) {
if (equal(a, b, epsilon)) {
while (nA < NA && equal(a, A.get(nA), epsilon)) ++nA;
a = (nA < NA ? A.get(nA) : Double.MAX_VALUE);
while (nB < NB && equal(b, B.get(nB), epsilon)) ++nB;
b = (nB < NB ? B.get(nB) : Double.MAX_VALUE);
} elseif (a < b) {