#*************************************************************************
#                          (c) Copyright 1993
#                       University of Tennessee
#                         All Rights Reserved
#*************************************************************************
#!/bin/csh -f 
# svdsum
#
#######################################################################
#      This script is used to produce "INPUT.sumN" files from the output
# files generated by the script "svdrun", where n=id form the input file
# and INPUT= the name of the input filei (i.e. svdin).
# input the parameters described in the sample input file "svdin".
# Each "INPUT.sumN" file displays output for up to seven runs of SVDPACKC
# codes.  These files will normally have record lengths much larger than
# 80 characters, and thus should be printed in "landscape" mode (i.e.,
# written to 11'' by 8.5 '' paper format versus the normal 8.5'' by 11''
# paper format.  Sample svdin.sum1 and svdin.sum2 files are supplied
# in this package.  These output files are obtained by issuing 
# "svdsum svdin" at the prompt.  This script assumes that all the
# output files of the form "DATA.outN", where DATA is a dataset and 
# N an integer, are available in your current working directory.
#######################################################################
# Author: G. O'Brien, Dept. of Computer Science, UTK (May 1993)
#######################################################################
#
	if ($#argv == 0) then
		echo "Usage: svdsum <filename>"
		exit 1
	endif

	if ($#argv == 1) then
	   set inputfile = $argv[1]
	   if (! -r $inputfile ) then
		  echo "$inputfile unreadable."
		  exit 1
       endif

       set id = (`awk '$0 !~ /^#/ {print $1} ' $inputfile`)
	   set numberofdatafiles = (`awk '$0 !~ /^#/ {print $3} ' $inputfile`)
	   set programs = (`awk '$0 !~ /^#/ {print $2} ' $inputfile`)

       set number = $#numberofdatafiles

    else
	  echo "Usage: svdsum <filename>"
	  exit 1
    endif

#---------------------------------------------------------------
# Variables ----------------------------------------------------
#---------------------------------------------------------------

   set error1 = 0
   set error2 = 0
   set error3 = 0
   set error4 = 0
   set error5 = 0
   set error6 = 0
   set error7 = 0
   set error8 = 0
   set error9 = 0
   set error10 = 0
   set error11 = 0
   set error12 = 0
   set error13 = 0
   set error14 = 0
   set blockerror = 0
   set singularerror = 0
   set initblockerror = 0
   set matrixtoobig = 0
   set suberror = 0
   set matrixtoobig = 0
   set ncolerror = 0
   set toleranceerror = 0
   set endlerror = 0
   set maxprserror = 0
   set nerror = 0
   set nw1error = 0
   set nw2error = 0

#---------------------------------------------------------------
# Determine how many files to generate (5 sets of runs per file)
#---------------------------------------------------------------

   @ count = 0
   if ($number > 5) then
      @ loop = $number / 5
   else  
      @ loop = 0
   endif

   echo "Summarizing Results ..."

   echo " "
   echo "(Please wait...)"
   echo " "
   echo "Results are written to:"

#---------------------------------------------------------------
# Get values ----------------------------------------------------
#---------------------------------------------------------------

while ($count <= $loop)

   @ upperbound = ($count + 1) * 5
   @ lowerbound = $upperbound - 5
   @ incr = $count + 1
   set output = $argv[1]:r.sum$incr

   @ tmp = $lowerbound + 1
   @ first = $tmp
   if ($upperbound > $number) then
      @ upperbound = $number
   endif
   while ($tmp <= $upperbound)
     if ($tmp == $first) then
        set datafiles = (`awk '$0 !~ /^#/ && $1 == "'$id[$tmp]'" + 0 {print $3}' $inputfile`)
     else
        set datafiles = (`echo $datafiles` `awk '$0 !~ /^#/ && $1 == "'$id[$tmp]'" + 0 {print $3} ' $inputfile`)
     endif
     @ tmp++
   end



    echo -n "===========================" > $output 
    foreach item ($datafiles)
       echo -n "================" >> $output
    end
    echo "=" >> $output


    echo -n "|        PROGRAM          |" >> $output
	@ tmp = $lowerbound + 1
	@ first = $tmp
	if ($loop == 0) then
	   @ upperbound = $number
    endif
    while ($tmp <= $upperbound)
      awk '$0 !~ /^#/ && $1 == "'$id[$tmp]'" + 0 {printf("| %-13s ", $2) >> "'$output'" }' $inputfile
      @ tmp++
    end
    echo "|" >> $output

    echo -n "+--------------------------" >> $output
    foreach item ($datafiles)
       echo -n "----------------" >> $output
    end
    echo "+" >> $output

    echo -n "|        DATASETS         |" >> $output
    @ c = 1 + ($count * 5)
    foreach file ($datafiles)
       set coutputfile = $file.out$id[$c]
       set value = `fgrep "'" $coutputfile | awk '{printf ("%-12s", $1) }'`
       if ($value !~ \'[a-z0-9]*\') then
	      set matrixtoobig = `grep -c 'SORRY, YOUR MATRIX IS TOO BIG' $coutputfile`
		  if ($matrixtoobig == 1) then
             echo -n "|   ERROR 5    " >> $output
             set error5 = 1
             set matrixtoobig = 0
          else
             echo -n "|      -        " >> $output
		  endif
       else
          grep "'"  $coutputfile | awk '{printf ("| %-13s ", $1) >> "'$output'" }'
       endif 
       @ c++
    end
    echo "|" >> $output


    echo -n "+--------------------------" >> $output
    foreach item ($datafiles)
       echo -n "----------------" >> $output
    end
    echo "+" >> $output


    echo -n "|        FILENAME         |" >> $output
    @ c = 1 + ($count * 5)
    foreach file ($datafiles)
       set coutputfile = $file.out$id[$c]
	   echo $coutputfile | awk '{printf ("| %-13s ", $1) >> "'$output'" }'
       @ c++
    end
    echo "|" >> $output


    echo -n "+--------------------------" >> $output
    foreach item ($datafiles)
       echo -n "----------------" >> $output
    end
    echo "+" >> $output


    echo -n "|          DATE           |" >> $output
    @ c = 1 + ($count * 5)
    foreach file ($datafiles)
       set coutputfile = $file.out$id[$c]
	   set value = `grep "DATE:" $coutputfile | awk '{printf ("%.2s", $5)}'`
	   if ($value =~ [0-9], ) then
          grep "DATE:" $coutputfile | awk '{printf ("| %-3s %-2s %-4s   ", $4, $5, $6) >> "'$output'" }'
	   else
          grep "DATE:" $coutputfile | awk '{printf ("| %-3s %-2s %-4s   ", $4, $5, $6) >> "'$output'" }'
	   endif
       @ c++
    end
    echo "|" >> $output

	echo -n "|  MAX. NO. OF ITERATIONS |" >> $output
   @ c = 1 + ($count * 5)
   @ tmp = $lowerbound + 1
   @ first = $tmp
   if ($loop == 0) then
      @ upperbound = $number
   endif
   while ($tmp <= $upperbound)
      if ($tmp == $first) then
         set programfiles = (`awk '$0 !~ /^#/ && $1 == "'$id[$tmp]'" + 0 {print $3 " " $2}' $inputfile`)
      else
         set programfiles = (`echo $programfiles` `awk '$0 !~ /^#/ && $1 == "'$id[$tmp]'" + 0 {print $3 " " $2}' $inputfile`)
      endif
      @ tmp++
   end
   ##########################################
   #  save list of programs in $programlist #
   ##########################################

   set programlist = `echo $programfiles`
   while ($#programfiles > 0)
	   set coutputfile = $programfiles[1].out$id[$c]
	   shift programfiles
       if ($programfiles[1] =~ las1 || $programfiles[1] =~ las2) then
          set value = `grep "MAX. NO. OF LANCZOS STEPS" $coutputfile | awk '{printf ("%-13s ", $8) }'`
       else
          set value = `grep "MAX. NO. OF ITERATIONS" $coutputfile | awk '{printf ("%-13s ", $7) }'`
       endif
       set maxprserror = `grep -c 'MAXPRS CANNOT EXCEED LANMAX' $coutputfile`
	   set lanmaxerror = `grep -c 'LANMAX (NUMBER OF LANCZOS STEPS) IS INVALID' $coutputfile`
	   if ($value !~ [0-9]*) then
          if ($maxprserror == 1) then
             echo -n "|    ERROR 9   " >> $output
             set error9 = 1
             set maxprserror = 0
          else
             echo -n "|      -        " >> $output
          endif
	   else if ($programfiles[1] =~ las1 || $programfiles[1] =~ las2) then
          set maxprserror = `grep -c 'MAXPRS CANNOT EXCEED LANMAX' $coutputfile`
          if ($maxprserror == 1) then
             echo -n "|    ERROR 9   " >> $output
             set error9 = 1
             set maxprserror = 0
          else if ($lanmaxerror == 1) then
             echo -n "|   ERROR 11   " >> $output
             set error11 = 1
             set lanmaxerror = 0
	      else
             grep "MAX. NO. OF LANCZOS STEPS" $coutputfile | awk '{printf ("| %-13s ", $8) >> "'$output'" }'
          endif
       else
          grep "MAX. NO. OF ITERATIONS" $coutputfile | awk '{printf ("| %-13s ", $7) >> "'$output'" }'
       endif
       @ c++
	   shift programfiles
    end
    echo "|" >> $output


    echo -n "|  ORDER  OF EIGENSYSTEM  |" >> $output
    @ c = 1 + ($count * 5)
	set programfiles = `echo $programlist`
    while ($#programfiles > 0)
       set coutputfile = $programfiles[1].out$id[$c]
	   shift programfiles
       set value = `grep "NO. OF EQUATIONS" $coutputfile | awk '{printf ("%-13s ", $6) }'`
       if ($value !~ [0-9]*) then
          set nerror = `grep -c 'N = NROW + NCOL MUST BE GREATER THAN ZERO' $coutputfile`
		  if ($nerror == 1) then
             echo -n "|   ERROR 10   " >> $output
             set error10 = 1
             set nerror = 0
          else
             echo -n "|      -        " >> $output
          endif
       else
          grep "NO. OF EQUATIONS" $coutputfile | awk '{printf ("| %-13s ", $6) >> "'$output'" }'
       endif
       @ c++
       shift programfiles
    end
    echo "|" >> $output


    echo -n "|  ROW    DIMENSION OF A  |" >> $output
    @ c = 1 + ($count * 5)
	set programfiles = `echo $programlist`
	while ($#programfiles > 0)
       set coutputfile = $programfiles[1].out$id[$c]
	   shift programfiles
       if ($programfiles[1] =~ las1 || $programfiles[1] =~ las2) then
          set value = `grep "NO. OF DOC" $coutputfile | awk '{printf ("%-13s ", $7) }'`
       else if ($programfiles[1] =~ sis1 || $programfiles[1] =~ sis2) then
		  set value = `grep "NO. OF DOC" $coutputfile | awk '{printf ("%-13s ", $7) }'`
       else if ($programfiles[1] =~ tms1 || $programfiles[1] =~ tms2) then
		  set value = `grep "NO. OF DOC" $coutputfile | awk '{printf ("%-13s ", $7) }'`
	   else
          set value = `grep "NO. OF DOC" $coutputfile | awk '{printf ("%-13s ", $9) }'`
       endif
       if ($value !~ [0-9]*) then
          echo -n "|      -        " >> $output
       else if ($programfiles[1] =~ las1 || $programfiles[1] =~ las2) then
          grep "NO. OF DOC" $coutputfile | awk '{printf ("| %-13s ", $7) >> "'$output'" }'
       else if ($programfiles[1] =~ sis1 || $programfiles[1] =~ sis2) then
		  grep "NO. OF DOC" $coutputfile | awk '{printf ("| %-13s ", $7) >> "'$output'" }'
       else if ($programfiles[1] =~ tms1 || $programfiles[1] =~ tms2) then
		  grep "NO. OF DOC" $coutputfile | awk '{printf ("| %-13s ", $7) >> "'$output'" }'
       else
          grep "NO. OF DOC" $coutputfile | awk '{printf ("| %-13s ", $9) >> "'$output'" }'
       endif
       @ c++
	   shift programfiles
    end
    echo "|" >> $output


    echo -n "|  COLUMN DIMENSION OF A  |" >> $output
    @ c = 1 + ($count * 5)
	set programfiles = `echo $programlist`
	while ($#programfiles > 0)
       set coutputfile = $programfiles[1].out$id[$c]
	   shift programfiles
       if ($programfiles[1] =~ las1 || $programfiles[1] =~ las2) then
          set value = `grep "NO. OF TERMS " $coutputfile | awk '{printf ("%-13s ", $7) }'`
       else if ($programfiles[1] =~ sis1 || $programfiles[1] =~ sis2) then
		  set value = `grep "NO. OF TERMS " $coutputfile | awk '{printf ("%-13s ", $7) }'`
	   else if ($programfiles[1] =~ tms1 || $programfiles[1] =~ tms2) then
		  set value = `grep "NO. OF TERMS " $coutputfile | awk '{printf ("%-13s ", $7) }'`
	   else
          set value = `grep "NO. OF TERMS " $coutputfile | awk '{printf ("%-13s ", $9) }'`
       endif
       if ($value !~ [0-9]*) then
          set ncolerror = `grep -c 'NCOL MUST NOT BE GREATER THAN NROW' $coutputfile`
          if ($ncolerror == 1) then
             echo -n "|   ERROR 6   " >> $output
             set error6 = 1
             set ncolerror = 0
          else
             echo -n "|      -        " >> $output
          endif
       else if ($programfiles[1] =~ las1 || $programfiles[1] =~ las2) then
          grep "NO. OF TERMS " $coutputfile | awk '{printf ("| %-13s ", $7) >> "'$output'" }'
       else if ($programfiles[1] =~ sis1 || $programfiles[1] =~ sis2) then
		  grep "NO. OF TERMS " $coutputfile | awk '{printf ("| %-13s ", $7) >> "'$output'" }'
	   else if ($programfiles[1] =~ tms1 || $programfiles[1] =~ tms2) then
		  grep "NO. OF TERMS " $coutputfile | awk '{printf ("| %-13s ", $7) >> "'$output'" }'
       else
          grep "NO. OF TERMS " $coutputfile | awk '{printf ("| %-13s ", $9) >> "'$output'" }'
       endif
       @ c++
	   shift programfiles
    end
    echo "|" >> $output


    echo -n "| AUXILLARY MEMORY(BYTES) |" >> $output
    @ c = 1 + ($count * 5)
	set programfiles = `echo $programlist`
	while ($#programfiles > 0)
       set coutputfile = $programfiles[1].out$id[$c]
	   shift programfiles
       if ($programfiles[1] =~ las1 || $programfiles[1] =~ las2) then
          set value = `grep "ALLOCATED MEMORY" $coutputfile | awk '{printf ("%-13s ", $5) }'`
       else if ($programfiles[1] =~ tms1 || $programfiles[1] =~ tms2) then
		  set value = `grep "MEMORY REQUIRED" $coutputfile | awk '{printf ("%-13s ", $6) }'`
       else if ($programfiles[1] =~ sis1 || $programfiles[1] =~ sis2) then
		  set value = `grep "MEM REQUIRED" $coutputfile | awk '{printf ("%-13s ", $6) }'`
       else
          set value = `grep "MEMORY NEEDED" $coutputfile | awk '{printf ("%-13s ", $7) }'`
       endif
       if ($value !~ [0-9]*) then
          echo -n "|      -        " >> $output
       else if ($programfiles[1] =~ las1 || $programfiles[1] =~ las2) then
          grep "ALLOCATED MEMORY" $coutputfile | awk '{printf ("| %-13s ", $5) >> "'$output'" }'
       else if ($programfiles[1] =~ tms1 || $programfiles[1] =~ tms2) then
		  grep "MEMORY REQUIRED" $coutputfile | awk '{printf ("| %-13s ", $6) >> "'$output'" }'
       else if ($programfiles[1] =~ sis1 || $programfiles[1] =~ sis2) then
		  grep "MEM REQUIRED" $coutputfile | awk '{printf ("| %-13s ", $6) >> "'$output'" }'
       else
          grep "MEMORY NEEDED" $coutputfile | awk '{printf ("| %-13s ", $7) >> "'$output'" }'
       endif
       @ c++
	   shift programfiles
    end
    echo "|" >> $output


    echo -n "|  WANT S-VECTORS? [T/F]  |" >> $output
    @ c = 1 + ($count * 5)
	set programfiles = `echo $programlist`
	while ($#programfiles > 0)
       set coutputfile = $programfiles[1].out$id[$c]
       shift programfiles
	   if ($programfiles[1] =~ tms1 || $programfiles[1] =~ tms2) then
          set value = `grep "WANT S-VECTORS?" $coutputfile | awk '{printf ("%-13s ", $6) }'`
       else
          set value = `grep "WANT S-VECTORS" $coutputfile | awk '{printf ("%-13s ", $6) }'`
       endif
       if ($value !~ [T,F]*) then
          echo -n "|      -        " >> $output
       else if ($programfiles[1] =~ tms1 || $programfiles[1] =~ tms2) then
          grep "WANT S-VECTORS?" $coutputfile | awk '{printf ("| %-13s ", $6) >> "'$output'" }'
       else
          grep "WANT S-VECTORS" $coutputfile | awk '{printf ("| %-13s ", $6) >> "'$output'" }'
       endif
       @ c++
	   shift programfiles
    end
    echo "|" >> $output



    echo -n "| NO. OF STEPS/ITERATIONS |" >> $output
    @ c = 1 + ($count * 5)
	set programfiles = `echo $programlist`
    while ($#programfiles > 0)
       set coutputfile = $programfiles[1].out$id[$c]
       shift programfiles
       if ($programfiles[1] =~ las1 || $programfiles[1] =~ las2) then
          set value = `grep "NUMBER OF LANCZOS STEPS" $coutputfile | awk '{printf ("%-13s ", $7) }'`
       else
          set value = `grep "NO. OF ITERATIONS TAKEN" $coutputfile | awk '{printf ("%-13s ", $7) }'`
       endif
       if ($value !~ [0-9]*) then
		  set nw1error = `grep -c '6\*N\+4\*LANMAX\+1 \+ LANMAX\*LANMAX CANNOT EXCEED NW' $coutputfile`
          if ($nw1error == 1) then
             echo -n "|   ERROR 13   " >> $output
             set error13 = 1
             set nw1error = 0
          else
             echo -n "|      -        " >> $output
          endif
       else if ($programfiles[1] =~ las1 || $programfiles[1] =~ las2) then
          grep "NUMBER OF LANCZOS STEPS" $coutputfile | awk '{printf ("| %-13s ", $7) >> "'$output'" }'
       else
          grep "NO. OF ITERATIONS TAKEN" $coutputfile | awk '{printf ("| %-13s ", $7) >> "'$output'" }'
       endif
       @ c++
       shift programfiles
    end
    echo "|" >> $output


   echo -n "|        TOLERANCE        |" >> $output
   @ c = 1 + ($count * 5)
   set programfiles = `echo $programlist`
   while ($#programfiles > 0)
      set coutputfile = $programfiles[1].out$id[$c]
      shift programfiles
      if ($programfiles[1] =~ las1 || $programfiles[1] =~ las2) then
         set value = `grep "KAPPA" $coutputfile | awk '{printf ("%12s ", $4) }'`
      else if ($programfiles[1] =~ tms1 || $programfiles[1] =~ tms2) then
         set value = `grep "TOLERANCE" $coutputfile | awk '{printf ("%12s ", $6) }'`
      else
         set value = `grep "TOLERANCE" $coutputfile | awk '{printf ("%-13s ", $4) }'`
      endif
      if ($value !~ [0-9]*) then
	     set toleranceerror = `grep -c 'TOLERANCE IS INVALID' $coutputfile`
		 if ($toleranceerror == 1) then
            echo -n "|   ERROR 7    " >> $output
            set error7 = 1
            set toleranceerror = 0
         else 
            echo -n "|      -        " >> $output
         endif
      else if ($programfiles[1] =~ las1 || $programfiles[1] =~ las2) then
         grep "KAPPA" $coutputfile | awk '{printf ("| %-13s ", $4) >> "'$output'" }'
      else if ($programfiles[1] =~ tms1 || $programfiles[1] =~ tms2) then
         grep "TOLERANCE" $coutputfile | awk '{printf ("| %-13s ", $6) >> "'$output'" }'
      else
         grep "TOLERANCE" $coutputfile | awk '{printf ("| %-13s ", $4) >> "'$output'" }'
      endif
      @ c++
      shift programfiles
   end
   echo "|" >> $output


    echo -n "|  USER  CPU TIME (SECS)  |" >> $output
    @ c = 1 + ($count * 5)
	set programfiles = `echo $programlist`
    while ($#programfiles > 0)
       set coutputfile = $programfiles[1].out$id[$c]
       shift programfiles
       if ($programfiles[1] =~ las1 || $programfiles[1] =~ las2) then
	      set value = `grep "LASVD EXECUTION TIME" $coutputfile | awk '{printf ("%-13s ", $5) }'`
       else if ($programfiles[1] =~ sis1 || $programfiles[1] =~ sis2) then
	      set value = `grep "SISVD EXECUTION TIME" $coutputfile | awk '{printf ("%-13s ", $5) }'`
       else if ($programfiles[1] =~ tms1 || $programfiles[1] =~ tms2) then
	      set value = `grep "TOTAL CPU  TIME" $coutputfile | awk '{printf ("%-13s ", $7) }'`
       else
          set value = `grep "BLSVD EXECUTION TIME" $coutputfile | awk '{printf ("%-13s ", $5) }'`
       endif
       if ($value !~ [0-9]*) then
        echo -n "|      -        " >> $output
       else if ($programfiles[1] =~ las1 || $programfiles[1] =~ las2) then
          grep "LASVD EXECUTION TIME" $coutputfile | awk '{printf ("| %-13s ", $5) >> "'$output'" }'
       else if ($programfiles[1] =~ sis1 || $programfiles[1] =~ sis2) then
          grep "SISVD EXECUTION TIME" $coutputfile | awk '{printf ("| %-13s ", $5) >> "'$output'" }'
       else if ($programfiles[1] =~ tms1 || $programfiles[1] =~ tms2) then
          grep "TOTAL CPU  TIME" $coutputfile | awk '{printf ("| %-13s ", $7) >> "'$output'" }'
       else
          grep "BLSVD EXECUTION TIME" $coutputfile | awk '{printf ("| %-13s ", $5) >> "'$output'" }'
       endif
       @ c++
       shift programfiles
    end
    echo "|" >> $output


    echo -n "| NO. OF TRIPLETS FOUND   |" >> $output
    @ c = 1 + ($count * 5)
	set programfiles = `echo $programlist`
    while ($#programfiles > 0)
       set coutputfile = $programfiles[1].out$id[$c]
       shift programfiles
       if ($programfiles[1] =~ las1 || $programfiles[1] =~ las2) then
          set value = `grep "NSIG" $coutputfile | awk '{printf ("%-13s ", $4) }'`
       else if ($programfiles[1] =~ tms1 || $programfiles[1] =~ tms2) then
	   	  set value = `grep "NO. OF DESIRED EIGENPAIRS" $coutputfile | awk '{printf ("% -13s ", $7) }'`
       else if ($programfiles[1] =~ sis1 || $programfiles[1] =~ sis2) then
	   	  set value = `grep "NO. OF APPROX. EIGENPAIRS" $coutputfile | awk '{printf ("% -13s ", $7) }'`
	   else
          set value = `grep "NO. OF TRIPLETS FOUND" $coutputfile | awk '{printf ("%-13s ", $7) }'`
       endif
       if ($value !~ [0-9]*) then
          echo -n "|      -        " >> $output
       else if ($programfiles[1] =~ las1 || $programfiles[1] =~ las2) then
          grep "NSIG" $coutputfile | awk '{printf ("| %-13s ", $4) >> "'$output'" }'
       else if ($programfiles[1] =~ tms1 || $programfiles[1] =~ tms2) then
    	  grep "NO. OF DESIRED EIGENPAIRS" $coutputfile | awk '{printf ("| %-13s ", $7) >> "'$output'" }'
       else if ($programfiles[1] =~ sis1 || $programfiles[1] =~ sis2) then
    	  grep "NO. OF APPROX. EIGENPAIRS" $coutputfile | awk '{printf ("| %-13s ", $7) >> "'$output'" }'
	   else
          grep "NO. OF TRIPLETS FOUND" $coutputfile | awk '{printf ("| %-13s ", $7) >> "'$output'" }'
       endif
       @ c++
       shift programfiles
    end
    echo "|" >> $output


    echo -n "| NO. OF TRIPLETS SOUGHT  |" >> $output
    @ c = 1 + ($count * 5)
	set programfiles = `echo $programlist`
    while ($#programfiles > 0)
       set coutputfile = $programfiles[1].out$id[$c]
       shift programfiles
       if ($programfiles[1] =~ las1 || $programfiles[1] =~ las2) then
          set value = `grep "NO. OF EIGENPAIRS" $coutputfile | awk '{printf ("%-13s ", $7) }'`
       else if ($programfiles[1] =~ tms1 || $programfiles[1] =~ tms2) then
          set value = `grep "NO. OF DESIRED EIGENPAIRS" $coutputfile | awk '{printf ("%-13s ", $7) }'`
       else if ($programfiles[1] =~ sis1 || $programfiles[1] =~ sis2) then
	   	  set value = `grep "NO. OF DESIRED EIGENPAIRS" $coutputfile | awk '{printf ("% -13s ", $7) }'`
       else
          set value = `grep "NO. OF TRIPLETS SOUGHT" $coutputfile | awk '{printf ("%-13s ", $7) }'`
	   endif
       if ($value !~ [0-9]*) then
          set singularerror = `grep -c 'NUMBER OF SINGULAR VALUES DESIRED IS INVALID' $coutputfile`
          set initblockerror = `grep -c 'INIT BLOCK SIZE MUST BE LESS THAN NO. OF S-VALUES DESIRED' $coutputfile`
          if ($singularerror == 1) then
		     echo -n "|   ERROR 1    " >> $output
			 set error1 = 1
		     set singularerror = 0
          else if ($initblockerror == 1) then
             echo -n "|   ERROR 3    " >> $output
			 set error3 = 1
			 set initblockerror = 0
          else
             echo -n "|      -        " >> $output
          endif
       else if ($programfiles[1] =~ las1 || $programfiles[1] =~ las2) then
	      grep "NO. OF EIGENPAIRS" $coutputfile | awk '{printf ("| %-13s ", $7) >> "'$output'" }'
       else if ($programfiles[1] =~ tms1 || $programfiles[1] =~ tms2) then
	      grep "NO. OF DESIRED EIGENPAIRS" $coutputfile | awk '{printf ("| %-13s ", $7) >> "'$output'" }'
       else if ($programfiles[1] =~ sis1 || $programfiles[1] =~ sis2) then
    	  grep "NO. OF DESIRED EIGENPAIRS" $coutputfile | awk '{printf ("| %-13s ", $7) >> "'$output'" }'
       else
	      grep "NO. OF TRIPLETS SOUGHT" $coutputfile | awk '{printf ("| %-13s ", $7) >> "'$output'" }'
       endif
	   @ c++
	   shift programfiles
	end
	echo "|" >> $output


    echo -n "| NO. MULTIPLICATIONS BY A|" >> $output
    @ c = 1 + ($count * 5)
   set programfiles = `echo $programlist`
   while ($#programfiles > 0)
      set coutputfile = $programfiles[1].out$id[$c]
      shift programfiles
      if ($programfiles[1] =~ las1 || $programfiles[1] =~ las2) then
         set value = `grep "NO. MULTIPLICATIONS" $coutputfile | awk '{printf ("%-13s ", $7) }'`
      else if ($programfiles[1] =~ sis1 || $programfiles[1] =~ sis2) then
         set value = `grep "MXV" $coutputfile | awk '{printf ("%-13s ", $4) }'`
      else if ($programfiles[1] =~ tms1 || $programfiles[1] =~ tms2) then
         set value = `grep "MULTIPLICATIONS BY A " $coutputfile | awk '{printf ("%-13s ", $6) }'`
      else
         set value = `grep "NO. MULTIPLICATIONS" $coutputfile | awk '{printf ("%-13s ", $7) }'`
      endif
      if ($value !~ [0-9]*) then
         echo -n "|      -        " >> $output
      else if ($programfiles[1] =~ las1 || $programfiles[1] =~ las2) then
         grep "NO. MULTIPLICATIONS" $coutputfile | awk '{printf ("| %-13s ", $7) >> "'$output'" }'
      else if ($programfiles[1] =~ sis1 || $programfiles[1] =~ sis2) then
         grep "MXV" $coutputfile | awk '{printf ("| %-13s ", $4) >> "'$output'" }'
      else if ($programfiles[1] =~ tms1 || $programfiles[1] =~ tms2) then
         grep "MULTIPLICATIONS BY A " $coutputfile | awk '{printf ("| %-13s ", $6) >> "'$output'" }'
      else
         grep "NO. MULTIPLICATIONS" $coutputfile | awk '{printf ("| %-13s ", $7) >> "'$output'" }'
      endif
      @ c++
	  shift programfiles
    end
    echo "|" >> $output
 

    echo -n "|NO. MULT. BY TRANSPOSE(A)|" >> $output
    @ c = 1 + ($count * 5)
   set programfiles = `echo $programlist`
   while ($#programfiles > 0)
      set coutputfile = $programfiles[1].out$id[$c]
      shift programfiles
      if ($programfiles[1] =~ las1 || $programfiles[1] =~ las2) then
         set value = `grep "NO. MULT. BY TRANSPOSE" $coutputfile | awk '{printf ("%-13s ", $7) }'`
      else if ($programfiles[1] =~ sis1 || $programfiles[1] =~ sis2) then
         set value = `grep "MXV" $coutputfile | awk '{printf ("%-13s ", $4) }'`
      else if ($programfiles[1] =~ tms1 || $programfiles[1] =~ tms2) then
         set value = `grep "MULTIPLICATIONS BY A^T" $coutputfile | awk '{printf ("%-13s ", $6) }'`
      else
         set value = `grep "NO. MULT. BY TRANSPOSE" $coutputfile | awk '{printf ("%-13s ", $7) }'`
      endif
      if ($value !~ [0-9]*) then
         echo -n "|      -        " >> $output
      else if ($programfiles[1] =~ las1 || $programfiles[1] =~ las2) then
          grep "NO. MULT. BY TRANSPOSE" $coutputfile | awk '{printf ("| %-13s ", $7) >> "'$output'" }'
      else if ($programfiles[1] =~ sis1 || $programfiles[1] =~ sis2) then
          grep "MXV" $coutputfile | awk '{printf ("| %-13s ", $4) >> "'$output'" }'
      else if ($programfiles[1] =~ tms1 || $programfiles[1] =~ tms2) then
          grep "MULTIPLICATIONS BY A^T" $coutputfile | awk '{printf ("| %-13s ", $6) >> "'$output'" }'
      else
         grep "NO. MULT. BY TRANSPOSE" $coutputfile | awk '{printf ("| %-13s ", $7) >> "'$output'" }'
      endif
      @ c++
	  shift programfiles
    end
    echo "|" >> $output


    echo -n "+--------------------------" >> $output
    foreach item ($datafiles)
       echo -n "----------------" >> $output
    end
    echo "+" >> $output


    echo -n "|  LEFT  END OF INTERVAL  |" >> $output
    @ c = 1 + ($count * 5)
    foreach file ($datafiles)
       set coutputfile = $file.out$id[$c]
       set value = `grep "LEFT  END OF THE INTERVAL" $coutputfile | awk '{printf ("%-13s ", $8) }'`
       if ($value !~ -[0-9]*) then
	      set endlerror = `grep -c 'ENDL MUST BE LESS THAN ENDR' $coutputfile`
		  if ($endlerror == 1) then
             echo -n "|   ERROR 8   " >> $output
             set error8 = 1
             set endlerror = 0
          else
             echo -n "|      -        " >> $output
          endif
       else
          grep "LEFT  END OF THE INTERVAL" $coutputfile | awk '{printf ("| %-13s ", $8) >> "'$output'" }'
       endif
       @ c++
    end
    echo "|" >> $output


    echo -n "|  RIGHT END OF INTERVAL  |" >> $output
    @ c = 1 + ($count * 5)
    foreach file ($datafiles)
       set coutputfile = $file.out$id[$c]
       set value = `grep "RIGHT END OF THE INTERVAL" $coutputfile | awk '{printf (" %-13s ", $8) }'`
       if ($value !~ [-0-9]*) then
          echo -n "|      -        " >> $output
       else
          grep "RIGHT END OF THE INTERVAL" $coutputfile | awk '{printf ("|  %-12s ", $8) >> "'$output'" }'
       endif
       @ c++
    end
    echo "|" >> $output


    echo -n "+--------------------------" >> $output
    foreach item ($datafiles)
       echo -n "----------------" >> $output
    end
    echo "+" >> $output


    echo -n "|    INITIAL BLOCKSIZE    |" >> $output
    @ c = 1 + ($count * 5)
    set programfiles = `echo $programlist`
    while ($#programfiles > 0)
       set coutputfile = $programfiles[1].out$id[$c]
       shift programfiles
       if ($programfiles[1] =~ sis1 || $programfiles[1] =~ sis2) then
          set value = `grep "INITIAL SUBSPACE" $coutputfile | awk '{printf ("%-13s ", $6) }'`
       else if ($programfiles[1] =~ tms1 || $programfiles[1] =~ tms2) then
          set value = `grep "INITIAL SUBSPACE" $coutputfile | awk '{printf ("%-13s ", $6) }'`
       else
          set value = `grep "INITIAL BLOCKSIZE" $coutputfile | awk '{printf ("%-13s ", $5) }'`
       endif
       if ($value !~ [0-9]*) then
          set blockerror = `grep -c 'INITIAL BLOCK SIZE MUST BE GREATER THAN 1' $coutputfile`
          if ($blockerror == 1) then
             echo -n "|   ERROR 2    " >> $output
			 set error2 = 1
	         set blockerror = 0
          else
             echo -n "|      -        " >> $output
          endif
       else if ($programfiles[1] =~ sis1 || $programfiles[1] =~ sis2) then
	      grep "INITIAL SUBSPACE" $coutputfile | awk '{printf ("| %-13s ", $6) >> "'$output'" }'
       else if ($programfiles[1] =~ tms1 || $programfiles[1] =~ tms2) then
	      grep "INITIAL SUBSPACE" $coutputfile | awk '{printf ("| %-13s ", $6) >> "'$output'" }'
       else
	      grep "INITIAL BLOCKSIZE" $coutputfile | awk '{printf ("| %-13s ", $5) >> "'$output'" }'
           
       endif
       @ c++
       shift programfiles
       end
       echo "|" >> $output


    echo -n "|     FINAL BLOCKSIZE     |" >> $output
    @ c = 1 + ($count * 5)
    set programfiles = `echo $programlist`
    while ($#programfiles > 0)
       set coutputfile = $programfiles[1].out$id[$c]
       shift programfiles
       if ($programfiles[1] =~ sis1 || $programfiles[1] =~ sis2) then
          set value = `grep "FINAL   SUBSPACE"   $coutputfile | awk  '{printf ("%-12s  ", $6) }'`
       else if ($programfiles[1] =~ tms1 || $programfiles[1] =~ tms2) then
          set value = `grep "FINAL   SUBSPACE"   $coutputfile | awk  '{printf ("%-12s  ", $6) }'`
       else
          set value = `grep "FINAL   BLOCKSIZE" $coutputfile | awk '{printf ("%-13s ", $5) }'`
       endif
       if ($value !~ [0-9]*) then
          echo -n "|      -        " >> $output
       else if($programfiles[1] =~ sis1 || $programfiles[1] =~ sis2) then
          grep "FINAL   SUBSPACE" $coutputfile | awk '{printf ("| %-12s  ", $6) >> "'$output'" }'
       else if($programfiles[1] =~ tms1 || $programfiles[1] =~ tms2) then
          grep "FINAL   SUBSPACE" $coutputfile | awk '{printf ("| %-12s  ", $6) >> "'$output'" }'
       else
          grep "FINAL   BLOCKSIZE" $coutputfile | awk '{printf ("| %-13s ", $5) >> "'$output'" }'
       endif
       @ c++
       shift programfiles
    end
    echo "|" >> $output


    echo -n "| MAXIMUM SUBSPACE BOUND  |" >> $output
	@ c = 1 + ($count * 5)
	foreach file ($datafiles)
	set coutputfile = $file.out$id[$c]
	set value = `grep "MAXIMUM SUBSPACE BOUND" $coutputfile | awk '{printf ("%-13s ", $6) }'`
	if ($value !~ [0-9]*) then
        set suberror = `grep -c 'MAXIMUM SUBSPACE DIMENSION IS INVALID' $coutputfile`
		if ($suberror == 1) then
           echo -n "|   ERROR 4    " >> $output
           set error4 = 1
           set suberror = 0
        else
           echo -n "|      -        " >> $output
        endif
    else
	   grep "MAXIMUM SUBSPACE BOUND" $coutputfile | awk '{printf ("| %-13s ", $6) >> "'$output'" }'
    endif
	@ c++
	end
	echo "|" >> $output


    echo -n "|  FINAL  SUBSPACE BOUND  |" >> $output
    @ c = 1 + ($count * 5)
    foreach file ($datafiles)
       set coutputfile = $file.out$id[$c]
       set value = `grep "FINAL   SUBSPACE BOUND" $coutputfile | awk '{printf ("%-13s ", $6) }'`
       if ($value !~ [0-9]*) then
          echo -n "|      -        " >> $output
       else
          grep "FINAL   SUBSPACE BOUND" $coutputfile | awk '{printf ("| %-13s ", $6) >> "'$output'" }'
       endif
       @ c++
    end
    echo "|" >> $output


    echo -n "+--------------------------" >> $output
    foreach item ($datafiles)
       echo -n "----------------" >> $output
    end
    echo "+" >> $output


	echo -n "|  MAX CHEBYSHEV DEGREE   |" >> $output
	@ c = 1 + ($count * 5)
	foreach file ($datafiles)
	   set coutputfile = $file.out$id[$c]
	   set value = `grep "CHEBYSHEV POLY" $coutputfile | awk '{printf ("%-13s ", $7) }'`
	   if ($value !~ [0-9]*) then
		  echo -n "|      -        " >> $output
	   else
		  grep "CHEBYSHEV POLY" $coutputfile | awk '{printf ("| %-13s ",$7) >> "'$output'" }'
	   endif
	   @ c++
	end
	echo "|" >> $output
	
	echo -n "+--------------------------" >> $output
	foreach item ($datafiles)
	   echo -n "----------------" >> $output
	end
	echo "+" >> $output

   echo -n "|  JOB PARM FOR TMS1(2)   |" >> $output
   @ c = 1 + ($count * 5)
   foreach file ($datafiles)
	  set coutputfile = $file.out$id[$c]
	  set value = `grep "JOB:" $coutputfile | awk '{printf ("%-13s ", $7) }'`
	  if ($value !~ [0-9]*) then
	     echo -n "|       -       " >> $output
      else
		 grep "JOB:" $coutputfile | awk '{printf ("| %-13s ",$7) >>"'$output'"}'
	  endif
	  @ c++
   end
   echo "|" >> $output

   echo -n "|  RESID. REDUCTION TOL.  |" >> $output
   @ c = 1 + ($count * 5)
   foreach file ($datafiles)
      set coutputfile = $file.out$id[$c]
      set value = `grep "REDUCTION"  $coutputfile | awk '{printf ("%-13s ", $6)}'`
	  if ($value !~ [0-9]*) then
         echo -n "|       -       " >> $output
      else
         grep "REDUCTION" $coutputfile | awk '{printf ("| %-13s ",$6) >> "'$output'" }'
      endif
      @ c++
   end
   echo "|" >> $output

   echo -n "+--------------------------" >> $output
   foreach item ($datafiles)
      echo -n "----------------" >> $output
   end
   echo "+" >> $output

    if ($error1 == 1) then
	   echo "ERROR 1 = NUMBER OF SINGULAR VALUES INVALID" >> $output
	   set error1 = 0
    endif

    if ($error2 == 1) then
       echo "ERROR 2 = INITIAL BLOCK SIZE MUST BE GREATER THAN 1" >> $output
	   set error2 = 0
    endif

    if ($error3 == 1) then
       echo "ERROR 3 = INIT BLOCK SIZE MUST BE LESS THAN NO. OF S-VALUES DESIRED" >> $output
	   set error3 = 0
    endif

	if ($error4 == 1) then
       echo "ERROR 4 = MAXIMUM SUBSPACE DIMENSION IS INVALID" >> $output
	   set error4 = 0
    endif


    if ($error5 == 1) then
       echo "ERROR 5 = SORRY, YOUR MATRIX IS TOO BIG" >> $output
       set error5 = 0
    endif


    if ($error6 == 1) then
       echo "ERROR 6 = NCOL MUST NOT BE GREATER THAN NROW" >> $output
       set error6 = 0
    endif


    if ($error7 == 1) then
       echo "ERROR 7 = TOLERANCE IS INVALID" >> $output
       set error7 = 0
    endif


    if ($error8 == 1) then
       echo "ERROR 8 = ENDL MUST BE LESS THAN ENDR" >> $output
       set error8 = 0
    endif


    if ($error9 == 1) then
       echo "ERROR 9 = MAXPRS CANNOT EXCEED LANMAX" >> $output
       set error9 = 0
    endif


    if ($error10 == 1) then
       echo "ERROR 10 = N = NROW + NCOL MUST BE GREATER THAN ZERO" >> $output
       set error10 = 0
    endif


    if ($error11 == 1) then
       echo "ERROR 11 = LANMAX (NUMBER OF LANCZOS STEPS) IS INVALID" >> $output
       set error11 = 0
    endif


    if ($error12 == 1) then
       echo "ERROR 12 = MAXPRS (NUMBER OF EIGENPAIRS DESIRED) IS INVALID" >> $output
       set error12 = 0
    endif

	
    if ($error13 == 1) then
       echo "ERROR 13 =  6*N+4+LANMAX+1 + LANMAX>*LANMAX CANNOT EXCEED NW" >> $output
       set error13 = 0
    endif


	if ($error14 == 1) then
       echo "ERROR 14 = " >> $output
       set error14 = 0
    endif


    echo "  -- $output"

   @ count++

end


   echo " "
   echo "... svdsum complete"
#---------------------------------------------------------------------------
# End of svdsum ------------------------------------------------------------
#---------------------------------------------------------------------------
