average property

*<Null safety>*

double average

Implementation

double get average {
  var average = 0;
  var remainder = 0;
  var count = 0;
  for (var value in this) {
    // Invariant: Sum of values so far = average * count + remainder.
    // (Unless overflow has occurred).
    count += 1;
    var delta = value - average + remainder;
    average += delta ~/ count;
    remainder = delta.remainder(count);
  }
  if (count == 0) throw StateError('No elements');
  return average + remainder / count;
}