#!/bin/sh
../build/wildtype_demo                         > wildtype_demo.out
../build/simple_demo                           > simple_demo.out
../build/complex_demo                          > complex_demo_out.m
../build/pthread_demo                          > pthread_demo.out
../build/openmp_demo                           > openmp_demo.out

../build/import_demo   < Matrix/west0067            > import_demo.out

../build/pagerank_demo < Matrix/eye3                > pagerank_demo.out
../build/pagerank_demo < Matrix/2blocks            >> pagerank_demo.out
../build/pagerank_demo < Matrix/t1                 >> pagerank_demo.out
../build/pagerank_demo < Matrix/bcsstk01           >> pagerank_demo.out
../build/pagerank_demo < Matrix/bcsstk16           >> pagerank_demo.out
../build/pagerank_demo < Matrix/fs_183_1           >> pagerank_demo.out
../build/pagerank_demo < Matrix/west0067           >> pagerank_demo.out

../build/mis_demo 1 4 4                        > mis_demo.out
../build/mis_demo 0 5 5 30 1                  >> mis_demo.out
../build/mis_demo < Matrix/eye3               >> mis_demo.out
../build/mis_demo < Matrix/2blocks            >> mis_demo.out
../build/mis_demo < Matrix/t1                 >> mis_demo.out
../build/mis_demo < Matrix/t2                 >> mis_demo.out
../build/mis_demo < Matrix/ash219             >> mis_demo.out
../build/mis_demo < Matrix/bcsstk01           >> mis_demo.out
../build/mis_demo < Matrix/bcsstk16           >> mis_demo.out
../build/mis_demo < Matrix/fs_183_1           >> mis_demo.out
../build/mis_demo < Matrix/ibm32a             >> mis_demo.out
../build/mis_demo < Matrix/ibm32b             >> mis_demo.out
../build/mis_demo < Matrix/lp_afiro           >> mis_demo.out
../build/mis_demo < Matrix/mbeacxc            >> mis_demo.out
../build/mis_demo < Matrix/west0067           >> mis_demo.out
../build/mis_demo 1 200 200 0                 >> mis_demo.out
../build/mis_demo 0 10000 10000 100000 0      >> mis_demo.out
../build/mis_demo 0 10000 10000 100000 1      >> mis_demo.out
../build/mis_demo 0 100000 100000 10000000 0  >> mis_demo.out
../build/mis_demo 0 100000 100000 10000000 1  >> mis_demo.out

../build/bfs_demo 1 4 4                        > bfs_demo.out
../build/bfs_demo 0 5 5 30 1                  >> bfs_demo.out
../build/bfs_demo < Matrix/eye3               >> bfs_demo.out
../build/bfs_demo < Matrix/2blocks            >> bfs_demo.out
../build/bfs_demo < Matrix/t1                 >> bfs_demo.out
../build/bfs_demo < Matrix/t2                 >> bfs_demo.out
../build/bfs_demo < Matrix/ash219             >> bfs_demo.out
../build/bfs_demo < Matrix/bcsstk01           >> bfs_demo.out
../build/bfs_demo < Matrix/bcsstk16           >> bfs_demo.out
../build/bfs_demo < Matrix/fs_183_1           >> bfs_demo.out
../build/bfs_demo < Matrix/ibm32a             >> bfs_demo.out
../build/bfs_demo < Matrix/ibm32b             >> bfs_demo.out
../build/bfs_demo < Matrix/lp_afiro           >> bfs_demo.out
../build/bfs_demo < Matrix/mbeacxc            >> bfs_demo.out
../build/bfs_demo < Matrix/west0067           >> bfs_demo.out
../build/bfs_demo 1 200 200 0                 >> bfs_demo.out
../build/bfs_demo 0 10000 10000 100000 0      >> bfs_demo.out
../build/bfs_demo 0 10000 10000 100000 1      >> bfs_demo.out
../build/bfs_demo 0 100000 100000 10000000 0  >> bfs_demo.out
../build/bfs_demo 0 100000 100000 10000000 1  >> bfs_demo.out

../build/tri_demo 1 4 4                        > tri_demo.out
../build/tri_demo 0 5 5 30 1                  >> tri_demo.out
../build/tri_demo < Matrix/eye3               >> tri_demo.out
../build/tri_demo < Matrix/2blocks            >> tri_demo.out
../build/tri_demo < Matrix/t1                 >> tri_demo.out
../build/tri_demo < Matrix/t2                 >> tri_demo.out
../build/tri_demo < Matrix/ash219             >> tri_demo.out
../build/tri_demo < Matrix/bcsstk01           >> tri_demo.out
../build/tri_demo < Matrix/bcsstk16           >> tri_demo.out
../build/tri_demo < Matrix/fs_183_1           >> tri_demo.out
../build/tri_demo < Matrix/ibm32a             >> tri_demo.out
../build/tri_demo < Matrix/ibm32b             >> tri_demo.out
../build/tri_demo < Matrix/lp_afiro           >> tri_demo.out
../build/tri_demo < Matrix/mbeacxc            >> tri_demo.out
../build/tri_demo < Matrix/west0067           >> tri_demo.out
../build/tri_demo 1 200 200 0                 >> tri_demo.out
../build/tri_demo 0 10000 10000 100000 0      >> tri_demo.out
../build/tri_demo 0 10000 10000 100000 1      >> tri_demo.out
../build/tri_demo 0 100000 100000 10000000 0  >> tri_demo.out
../build/tri_demo 0 100000 100000 10000000 1  >> tri_demo.out

diff -I time Output/simple_demo.out       simple_demo.out
diff -I time Output/complex_demo_out.m    complex_demo_out.m
diff -I time Output/wildtype_demo.out     wildtype_demo.out
diff -I time Output/bfs_demo.out          bfs_demo.out
diff -I time Output/mis_demo.out          mis_demo.out

grep -v time Output/tri_demo.out | grep -v rate > t1.out
grep -v time tri_demo.out        | grep -v rate > t2.out
diff t1.out t2.out

echo "Comparing PageRank results:"
diff -I time -I " d:" Output/pagerank_demo.out     pagerank_demo.out
echo "Some mismatches are expected between dpagerank and ipagerank."
echo "number of mismatches between dpagerank and ipagerank in your tests: "
grep mismatch pagerank_demo.out | wc -l
echo "number of mismatches between dpagerank and ipagerank in Demo/Output: "
grep mismatch Output/pagerank_demo.out | wc -l
echo "Compare pthread_demo.out and openmp_demo.out with Output/* manually,"
echo "since the threads can print their results in random order."

../build/wildtype_demo                         > wildtype_demo.out

exit 0
