sclass LearnDoubleRange { double min = positiveInfinity(), max = negativeInfinity(); void add(Number n) { if (n != null) { double d = toDouble(n); min = min(min, d); max = max(max, d); } } bool empty() { ret min > max; } DoubleRange range() { ret empty() ? null : DoubleRange(min, max); } }