percentile function
Implementation
double? percentile(Iterable<num> values, double p) {
if (p < 0 || p > 1) return null;
final List<double> list = values.map((num n) => n.toDouble()).toList()..sort();
if (list.isEmpty) return null;
if (list.length == 1) return list[0];
final double index = p * (list.length - 1);
final int i = index.floor().clamp(0, list.length - 1);
final int j = (i + 1).clamp(0, list.length - 1);
final double t = index - i;
return list[i] + t * (list[j] - list[i]);
}