public static Stats Calculate(IEnumerable <double> values, Stats entire = default) => Calculate(values: values.Arg(nameof(values)), entire: entire);
// TODO: Improve exception message. // public static Stats Calculate(ArgumentUtilitiesHandle <IEnumerable <double> > values, Stats entire = default) { values.EnsureNotNull(); var valuesArray = values .Value .Select( (locValue, locIndex) => { if (double.IsNaN(locValue)) { throw new ArgumentOutOfRangeException( paramName: $"{values.Name}[{locIndex:d}]", message: FormatXResource(locator: typeof(ArgumentOutOfRangeException), subpath: "CanNotNaN")); } return(locValue); }) .ToArray(); if (valuesArray.Length == 0) { return(entire is null ? Empty : new Stats(entire: entire)); } else if (!(entire is null) && (entire.IsEmpty || entire.Count < valuesArray.Length)) { throw new ArgumentOutOfRangeException(paramName: nameof(entire)); }
public static Stats Calculate(ArgumentUtilitiesHandle <IEnumerable <int> > values, Stats entire = default) => Calculate(values: values.EnsureNotNull().Select(locValue => (double)locValue), entire: entire);