boolean foundFloat = false;
boolean foundNaN = false;
// For the max function, reverse the collator
if (operation == MAX) {
atomicComparer = new DescendingComparer(atomicComparer);
}
// Process the sequence, retaining the min (or max) so far. This will be an actual value found
// in the sequence. At the same time, remember if a double and/or float has been encountered
// anywhere in the sequence, and if so, convert the min/max to double/float at the end. This is