#!/bin/bash              
ulimit -c 0
if [ $# != 4 ]
then
	echo "usage:  conf_int <alg> <directory> <random | geometric> <input_file>"
	echo "ex   :  conf_int wmkl max_cut random I10000.011.256"
	echo "ex   :  conf_int wmkl min_quotient random I10000.011.256"
	echo "ex   :  conf_int wmkl min_cut random I10000.011.256"
	echo
	exit
fi

for i in result edge_file cut_file conf_file
do
	if [ -f $i ]
	then
		rm $i
	fi
done

if [ $2 = "min_cut" ]
then
	direct="min_quotient"
else
	direct=$2
fi

file="$HOME/partitioning/$direct/output/$1/$3/$4"
let lines=`wc -l $file | gawk '/./ {print $1}'`

case "$1" in
	ml)	ex_file="kl";;
	kl)	ex_file="kl";;
	sa)	ex_file="kl";;
	lkl)	ex_file="kl";;
	lsa)	ex_file="kl";;
	wsa)	ex_file="kl";;
	rs)	ex_file="kl";;
	klo)	ex_file="kl";;
	klp3)	ex_file="kl";;
	klp3o)	ex_file="kl";;
 	*)	ex_file="bk";;
esac

if [ $ex_file = "kl" ]
then
	let lines=lines-1
	if [ $2 = "max_cut" ]
	then
		kl_maple_list 	-v lines=$lines \
			       	-v list_name=conf $file > conf_file
		#maple_list 	-v field=7 -v lines=$lines \
		#		-v list_name=conf $file>conf_file
		maple_list 	-v field=7 -v lines=$lines \
				-v list_name=cut $file>cut_file
	elif [ $2 = "min_quotient" ]
	then
		maple_list     -v field=7 -v lines=$lines \
			           -v list_name=conf $file > conf_file
		maple_list 	-v field=8 -v lines=$lines \
				-v list_name=cut $file>cut_file
	else
		maple_list     -v field=8 -v lines=$lines \
			           -v list_name=conf $file > conf_file
		maple_list 	-v field=8 -v lines=$lines \
				-v list_name=cut $file>cut_file
	fi
	maple_list -v field=4 -v lines=$lines -v list_name=maxx $file>edge_file
else
	let lines=lines-2
	if [ $2 = "max_cut" ]
	then
		bk_maple_list -v lines=$lines \
			       -v list_name=conf $file > conf_file
		#maple_list 	-v field=6 -v lines=$lines \
		#		-v list_name=conf $file>conf_file
		maple_list 	-v field=6 -v lines=$lines \
				-v list_name=cut $file>cut_file
	elif [ $2 = "min_quotient" ]
	then
		maple_list     -v field=6 -v lines=$lines \
			           -v list_name=conf $file > conf_file
		maple_list 	-v field=7 -v lines=$lines \
				-v list_name=cut $file>cut_file
	else
		maple_list     -v field=7 -v lines=$lines \
			           -v list_name=conf $file > conf_file
		maple_list 	-v field=7 -v lines=$lines \
				-v list_name=cut $file>cut_file
	fi
	maple_list -v field=3 -v lines=$lines -v list_name=maxx $file>edge_file
fi

echo "inter := conf99(describe[standarddeviation](conf), $lines):" >> conf_file
echo "ave := describe[mean](conf):" >> conf_file
echo "printf(\`%.10f %.10f %.10f\\n\`, evalf(ave), evalf(ave-inter), evalf(ave+inter));" >> conf_file

#maple.old -q -f < conf_file > result
maple -q -f < conf_file > result

echo "ave := describe[mean](cut):" >> cut_file
echo "printf(\`%.10f\n\`, evalf(ave));" >> cut_file
#maple.old -q -f < cut_file >> result
maple -q -f < cut_file >> result

echo "ave := describe[mean](maxx):" >> edge_file
echo "printf(\`%.10f\n\`, evalf(ave));" >> edge_file
#maple.old -q -f < edge_file >> result
maple -q -f < edge_file >> result

tr '\012' ' ' < result

for i in conf_file edge_file cut_file result
do
	rm $i
done
