#!/usr/bin/perl sub usage { print STDERR "usage: $0 [-i] [log_file]\n"; exit(1); } $with = "steps"; if ($ARGV[0] eq "-i") { shift @ARGV; $with = "lines"; } &usage if $ARGV[0] =~ /^-/; $n = 1; while (<>) { next unless /^=== (\d+) ===/; while ($1 != $n) { push(@f, $n); $n++; } $n++; } $n--; $f = int($n/@f+0.5); $last = 0; for (@f) { push(@d, $_-$last); $last = $_; } $cmd = "|gnuplot -e '". 'set term postscript color eps enhanced solid lw 2 20;'. 'set output "out.eps";'. 'set title "Probability distribution of time between NOR corruptions";'. 'set xlabel "Power cycles";'. 'set ylabel "Cumulative probability";'. 'set key bottom;'. 'plot "-" with '.$with.' title "Empirical distribution (N='.@f.')", '. '1-exp(-'.1/$f.'*x) with lines lt 3 '. 'title "Exponential distribution ({/Symbol l}=1/'.$f.')"'. "'"; open(PIPE, $cmd) || die "open: $!"; print PIPE "0 0\n"; $i = 0; for (sort { $a <=> $b } @d) { $i++; print PIPE $_, " ", $i/@f, "\n"; } close(PIPE) || die "close: $!"; system("cat out.eps | ". "gs -sDEVICE=ppmraw -r100 -sOutputFile=- ". "-dTextAlphaBits=4 -dGraphicsAlphaBits=4 -sPAPERSIZE=a4 -q - | ". "convert -trim - out.png"); unlink("out.eps");