# Convert the Y coordinate to an average eval "exec perl -sS $0 $*" if 0; @values = (); $sum = $n = 0; $min = 1.7E+308; $max = 2.2E-308; while (<>) { next if /^[%#]/; split; if ($_[0] > 1000000) { #warn "$file: ignoring $_"; next; } if ($#_ >= 1) { $val = $_[1]; } else { $val = $_[0]; } push(@values, $val); $sum += $val; $min = $val if $val < $min; $max = $val if $val > $max; $n++; } # Do some statistics. @s = sort(@values); if ($n & 1) { $median = $s[($n + 1)/2]; } else { $i = $n / 2; $median = ($s[$i] + $s[$i+1]) / 2; } $avg = $sum/$n; $avgdev = $var = 0; foreach $_ (@values) { $var += ($_ - $median) ** 2; $tmp = $_ - $median; $avgdev += $tmp > 0 ? $tmp : -$tmp; } $var /= $n - 1; $stddev = sqrt($var); $avgdev /= $n; #printf("%8s %8s %8s %8s %8s %4s %8s\n", "Min", "Max", "Average", "Median", "Std Dev", "%", "Avg Dev"); #printf "%8.2f %8.2f %8.2f %8.2f %8.2f %4.1f%% %8.2f\n", $min, $max, $avg, $median, $stddev, $stddev/$median*100, $avgdev; printf "%4.1f%%\n", $stddev/$median*100; exit 0;