#!/vol/gnu/bin/perl5.6 -w
#!/usr/local/bin/perl -w
#!/usr/bin/perl -w
use strict;
my $n='[0-9e\.\+\-]+'; # a number
my $s='[ \t]'; # a separator
my $x = 0.0;
my $f = 0.0;
my @x;
my @f;
my @fsym;
my $l = 0;
$x[1] = -1e10;
my $eps = 1e-12;
LINE: while (<STDIN>) {
SWITCH: {
/^\#/ && do {
next LINE;
};
/^$/ && do {
next LINE;
};
/^($s*)($n)($s+)($n)/ && do {
$x = $2;
$f = $4;
if (abs($x) < $eps) { $x = 0.0; }
if ($l == 0) { $l = 1; }
else { if (abs($x[$l]-$x) > $eps) { $l++; } }
$x[$l] = $x;
$f[$l] = $f;
next LINE;
};
next LINE;
};
};
my $z = 0;
if (abs($l % 2) == 1) { $z = ($l+1)/2; }
if (abs($l % 2) == 0) { $z = $l /2; }
for (my $i=1; $i<=$z; $i++) {
if (abs($x[$i] + $x[$l-$i+1]) > 1e-10) {
die "Sorry, interval [", $x[1], ", ", $x[$l], "] seems not to be symmetric:\n",
"i=", $i, " ", " ", $x[$i], " != ", $x[$l-$i+1], "\n";
}
}
for (my $i=1; $i<=$z; $i++) {
$fsym[$i] = $fsym[$l-$i+1] = $f[$i] + $f[$l-$i+1];
}
print "# Found $l values in [", $x[1], ", ", $x[$l], "].\n";
for (my $i=1; $i<=$l; $i++) {
printf("%18.12f\t%18.12f\n", $x[$i], $fsym[$i]);
}