C ALGORITHM 807, COLLECTED ALGORITHMS FROM ACM. C THIS WORK PUBLISHED IN TRANSACTIONS ON MATHEMATICAL SOFTWARE, C VOL. 26,NO. 4, December, 2000, P. 602--616. #! /bin/sh # This is a shell archive, meaning: # 1. Remove everything above the #! /bin/sh line. # 2. Save the resulting text in a file. # 3. Execute the file with /bin/sh (not csh) to create the files: # Doc/ # Doc/Makefile.Dp # Doc/Makefile.Sp # Doc/README # Doc/install # Fortran77/ # Fortran77/Dp/ # Fortran77/Dp/Drivers/ # Fortran77/Dp/Drivers/data1 # Fortran77/Dp/Drivers/data2 # Fortran77/Dp/Drivers/data3 # Fortran77/Dp/Drivers/data4 # Fortran77/Dp/Drivers/driver.f # Fortran77/Dp/Drivers/res1 # Fortran77/Dp/Drivers/res2 # Fortran77/Dp/Drivers/res3 # Fortran77/Dp/Drivers/res4 # Fortran77/Dp/Src/ # Fortran77/Dp/Src/src.f # Fortran77/Sp/ # Fortran77/Sp/Drivers/ # Fortran77/Sp/Drivers/data1 # Fortran77/Sp/Drivers/data2 # Fortran77/Sp/Drivers/data3 # Fortran77/Sp/Drivers/data4 # Fortran77/Sp/Drivers/driver.f # Fortran77/Sp/Src/ # Fortran77/Sp/Src/src.f # This archive created: Fri Sep 14 15:00:12 2001 export PATH; PATH=/bin:$PATH if test ! -d 'Doc' then mkdir 'Doc' fi cd 'Doc' if test -f 'Makefile.Dp' then echo shar: will not over-write existing file "'Makefile.Dp'" else cat << "SHAR_EOF" > 'Makefile.Dp' include makefile.inc all: res1 res2 res3 res4 SRCLIBS= $(PORT) $(BLAS) DRIVERLIBS = $(TIMER) $(LAPACK) Objs1= driver.o src.o driver1: $(Objs1) $(F77LINK) $(F77LINKOPTS) -o driver1 $(Objs1) $(DRIVERLIBS) $(SRCLIBS) res1: driver1 data1 driver1 res1 res2: driver1 data2 driver1 res2 res3: driver1 data3 driver1 res3 res4: driver1 data4 driver1 res4 SHAR_EOF fi # end of overwriting check if test -f 'Makefile.Sp' then echo shar: will not over-write existing file "'Makefile.Sp'" else cat << "SHAR_EOF" > 'Makefile.Sp' include makefile.inc all: res1 res2 res3 res4 SRCLIBS= $(PORT) $(BLAS) DRIVERLIBS = $(TIMER) $(LAPACK) Objs1= driver.o src.o driver1: $(Objs1) $(F77LINK) $(F77LINKOPTS) -o driver1 $(Objs1) $(DRIVERLIBS) $(SRCLIBS) res1: driver1 data1 driver1 res1 res2: driver1 data2 driver1 res2 res3: driver1 data3 driver1 res3 res4: driver1 data4 driver1 res4 SHAR_EOF fi # end of overwriting check if test -f 'README' then echo shar: will not over-write existing file "'README'" else cat << "SHAR_EOF" > 'README' -------------------------------------------------------------------------------- - - - README file for the SBR toolbox - - - -------------------------------------------------------------------------------- Author: Bruno Lang Aachen University of Technology na.blang@na-net.ornl.gov Date: May 17, 2000 Version: SBR Toolbox, Rev. 1.4.1 This file provides information for installing, tuning, and testing the SBR toolbox library on a UNIX system. Overview: 0. The installation procedure 1. Getting and unpacking the SBR toolbox 2. Building the SBR library 2.1 Editing the makefile 2.2 Building 2.3 Cross-compiling 3. Performance tuning 4. Running the testing driver 5. Running additional timings 6. Making the SBR toolbox available to other users 7. Bug reports 8. Revision history % ------------------------------------------------------------------------------ 0. The installation procedure ========================== The standard installation procedure is 1. Get and unpack the SBR toolbox (see Sec. 1). 2. Build the SBR library 3. (Optional.) Performance tuning 4. (Recommended.) Running the testing driver 5. (Optional.) Running additional timings 6. (Optional.) Making the SBR toolbox available to other users If you are adventurous then try the following short cut. Otherwise, or if anything goes wrong, follow the detailed instructions. 1. Get and unpack the SBR toolbox (see Sec. 1). 2/4. Type make checks to build the library libSBR.a and to run the quick checks. 6. (Optional.) Move the library to a directory searched by the linker. % ------------------------------------------------------------------------------ 1. Getting and unpacking the SBR toolbox ===================================== Get the file sbr.tar.Z and unpack it with the command zcat sbr.tar.Z | tar xf - (Since you are reading this file you probably have already done both.) This will create a new subdirectory sbr in the current working directory. Change to this directory. The following files should be present: README this file makefile a UNIX makefile for building the library make.inc the file containing site-specific settings sbr.f the SBR toolbox routines drun.f the double-precision testing program srun.f the single-precision testing program INCHK input file for the test runs REFCHK sample output file from the testing driver INTUN1 input file for the first tuning phase INTUN2 input file for the second tuning phase INTIM input file for the additional timings la_ori.f original LAPACK routines needed by the testing program la_mod.f modified LAPACK routines needed by the testing program la_tmg.f routines from the LAPACK test matrix generation suite, needed by the testing program aux_blas.f auxiliary routines for IBM RS machines etime.c timing routine for IBM RS machines % ------------------------------------------------------------------------------ 2. Building the SBR library ======================== 2.1 Editing the file make.inc ------------------------- Edit the file make.inc to match your system setup. In particular, you may want to set: * F77 The name of the Fortran compiler (if you don't have a Fortran77 compiler you can't build the library). * FF77OPTS The compile flags for the Fortran compiler with optimization turned on. * F77LINK The Fortran linker. * F77LINKOPTS Options for the linker when optimization is on. * F77NOOPT The compile flags for the Fortran compiler with optimization turned off. * FF77LINKNOOPT Options for the linker when optimization is off. * CC The C compiler. * CCOPTS Compile flags for the C compiler. * AR The command (including flags) for building object archives. * RANLIB The command for converting archives to random libraries. If that's already done with $(AR), set RANLIB = echo. * SBR_LIB The name of the resulting library will be lib$(SBR_LIB).a, e.g., libSBR.a when the default setting SBR_LIB=SBR is used. * NEW_LIBS Additional object files that must be compiled for the testing program. * OLD_LIBS Linking options for pre-compiled objects, in particular the BLAS. !!! If the BLAS are not already installed then you must install them before installing the SBR toolbox !!! The testing program requires some LAPACK routines. There are two ways to provide these: - You can compile just the required LAPACK routines; for convenience, they are included in the files la_ori.f and la_tmg.f of the SBR distribution. The makefile is pre-configured to use this option. - Instead you may link to an installed LAPACK library. Then you can include the name of the LAPACK library and the test matrix generation library in OLDLIBS: e.g., NEW_LIBS = la_mod.o OLD_LIBS = -lLAPACK -lTMG -lBLAS Note that the modified LAPACK routines must be recompiled in any case. Auxiliary objects: additional objects required for successful linking may be specified in NEW_LIBS: - The ESSL library does not contain the lsame and xerbla functions. Also, etime is provided for timing. % - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 2.2 Building -------- Type make library to build the SBR library. % - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 2.3 Cross-compiling --------------- If the compile server is not identical to the target machine for which the library is built then you must issue a make drivers on the compile server before running the performance tuning and testing driver on the target machine. Otherwise, the programs will be compiled on the target machine or be run on the compile server. (If you do not intend to run the divers, you may omit this step.) % ------------------------------------------------------------------------------ 3. Performance tuning ================== The block sizes for the blocked Householder transformations in the SBR toolbox routines are set in the function NBDFLT, which is the first routine in sbr.f. The default settings may be adequate to obtain reasonable performance on a variety of platforms, but for optimal performance this function must be adapted to the machine. The toolbox comes with double-precision and single-precision drivers and an input file for timing the routines DSYRDB (SSYRDB), DSBRDB (SSBRDB), and DSBRDT (SSBRDT) with matrices of specified size and varying bandwidths and block sizes. The output of the drivers helps to determine a function that can compute a (nearly) optimal block size for a given matrix. * To (build and) run the drivers, have a look at the file INTUN1 (in particular you might want to uncomment one of the 'MaxDim' lines at the beginning - remember that the time grows cubically with the matrix dimension) and then type make tuning1 This command may take a few minutes to complete (about half an hour on a 400 MHz PentiumII, if the matrix size is not restricted). The drivers, 'drun' and 'srun' read the file INTUN1 and produce two output files, DOUTTUN1 and SOUTTUN1. These two files contain the data necessary to determine an optimum block size: the order and semibandwidth(s) of the matrix, the block size, and the time required. In general, the optimum block size will depend on many factors, e.g., - the semibandwidth of the matrix before and after the reduction, - are the transformations accumulated in another matrix U or not ? , - the working precision (single or double) - is the upper or lower triangle of the mattrix worked upon (routines DSYRDB and SSYRDB only) ? , and - the dimension of the matrix. We have listed the factors with respect to decreasing importance. In our experience, it is sufficient to consider only the number of diagonals REMOVED (provided in the variable DELTAB in NBDFLT) for the band reduction routines, or the matrix size for the reduction of full matrices. In addition, the working precision (provided in the logical variable SINGLE) and the accumulation of the transformations (logical variable NEEDU) must be taken into account. Therefore, the code for determining a nearly optimal block size for one of the reduction routines might look like IF ( ALGO .EQ. 'SBRDB' ) THEN * * --- blocksize for reduction banded -> banded --- * IF ( NEEDU ) THEN IF ( SINGLE ) THEN some code ELSE some code ENDIF ELSE IF ( SINGLE ) THEN some code ELSE some code ENDIF ENDIF where each instance of "some code" might be of the form IF ( DELTAB .LT. some threshold ) > THEN * * --- suppress blocking --- * NBDFLT = 1 ELSEIF ( DELTAB .GT. some other threshold ) > THEN * * --- do not use excessive block sizes --- * NBDFLT = some maximum block size ELSE * * --- between these thresholds, increase NBDFLT linearly * with the number of diagonals removed --- * NBDFLT = nbmin + ( DELTAB / some factor ) ENDIF Choosing suitable thresholds and limiting block sizes (which may be obtained from a close inspection of the xOUTTUN1 files) will give an NBDFLT function that delivers close to optimum performance for any matrix size. Note that NBDFLT needs not take care of algorithmic restrictions in the choice of NB (for example, when reducing banded matrices from semibandwidth B1 to B2, the block size must not exceed B2). These restrictions are enforced WITHIN THE REDUCTION ROUTINES. (In the xOUTTUN1 files, NB indicates the block size proposed by the driver, and INFO returns the block size that was eventually used in the routine. Thus, you should have a closer look at NB.) This feature may facilitate obtaining a simple formula for NBDFLT. !!! You must re-build the library after modifying the routine NBDFLT !!! If you are cross-compiling, re-make the drivers on the compile server before proceeding. The next step is to set the intermediate bandwidths in the reduction drivers and the cross-over point in the driver xSBRDD from using the LAPACK routine xSBRDT for tridiagonalizing banded matrices to the SBR routine xSBRDT, which does the same job. To this end, have a look at the file INTUN2 (in particular, you might want to limit the matrix size), and then type make tuning2 which will after some minutes (about half an hour on a 400 MHz PentiumII, if the matrix size was not restricted) produce the files DOUTTUN2 and SOUTTUN2. These contain timings for the drivers with varying intermediate bandwidths and comparisons of xSBTRD with xSBRDT for varying bandwidths. Based on this information, suitable intermediate bandwidths and the crossover point are coded into NBDFLT. Now the tuning phase is completed, except ... !!! You must re-build the library after modifying the routine NBDFLT !!! If you are cross-compiling, re-make the drivers on the compile server before proceeding. % ------------------------------------------------------------------------------ 4. Running the testing drivers =========================== The SBR toolbox comes with double-precision and single-precision testing drivers and an input file INCHK that tests the following reduction paths: - One-step tridiagonalization of a symmetric full matrix (LAPACK) - Reduction of a full matrix to banded form (SBR) - One-step tridiagonalization of a symmetric banded matrix (LAPACK) - Alternative one-step tridiagonalization of a symmetric banded matrix (SBR) - Reduction of a full matrix with the SBR driver - Reduction of a banded matrix with the SBR driver To (build and) run the testing drivers, type make checks The testing drivers, 'drun' and 'srun', read the input file INCHK and produce two output files DOUTCHK and SOUTCHK. This may require a few minutes (about half a minute on a 400 MHz PentiumII). A sample output file, REFCHK, is provided with the SBR toolbox. Note that you can follow the progress of the testing driver through the input file, as the line numbers are written to the standard output. By default, INCHK instructs the testing driver to produce only a summary of all the tests. If the SBR toolbox is installed correctly then the OUTCHK file should not contain lines starting with '***', and it should not report any failed or skipped tests. Note that you may run additional tests or cancel some tests by modifying the input file INCHK. The format of the entries is described in that file. If any of the tests fails, indicating that the residual and/or orthogonality error exceeded some bound, proceed as follows: 1. Edit the INCHK file to enable medium or full output (change line 83 to '3' or '4'). (Medium output generates output for each reduction path, including the problem parameters and timings, full output also includes output for each major routine called in the path, with a listing of its scalar arguments.) 2. Re-run the testing driver. 3. Analyze the output to find the test(s) that failed. Usually the ratios will only marginally exceed the thresholds. In this case, you may either accept the results or increase the thresholds by editing INCHK and re-run the testing driver. If the ratios exceed the thresholds by some orders of magnitude there is some serious problem. If the output files contain lines with '*** Error in line ...' then there was some problem with the input file. Change the INCHK file to enable full output, re-run the testing driver, and try to localize the problem. !!! The testing driver may also be used for getting timings: depending on the desired level of detail, you should set the output level to "1" or "2" by changing line 7 of the INCHK file. Output level 1 will produce overall timings for each reduction path, whereas level 2 will also give the timings for each subroutine call in the path. !!! % ------------------------------------------------------------------------------ 5. Running additional timings ========================== First have a look at the input file INTIM (in particular you might want to restrict the matrix size - remember that the execution time grows cubically with the matrix dimension), then type make timing This will take some minutes (slightly over one hour on a 400 MHz PentiumII) and produce two output files, DOUTTIM and SOUTTIM for the double and single precision results, respectively. These files contain data for the following reduction paths: - LAPACK reduction full -> tridiagonal - SBR driver full -> tridiagonal - LAPACK reduction banded -> tridiagonal - SBR one-step reduction banded -> tridiagonal - SBR driver banded -> tridiagonal % ------------------------------------------------------------------------------ 6. Making the SBR toolbox available to other users =============================================== Move the SBR toolbox library (libSBR.a if you did not change the name) into a directory searched by the linker, e.g., /usr/lib or /usr/local/lib. This may require superuser privileges. % ------------------------------------------------------------------------------ 7. Bug reports =========== Please help us to eliminate any remaining bug in the SBR toolbox. If you discover a bug in one of the SBR toolbox routines, please send a mail to one of the following addresses bischof@sc.rwth-aachen.de (Christian H. Bischof) na.blang@na-net.ornl.gov (Bruno Lang) xiaobai@cs.duke.edu (Xiaobai Sun) indicating the version number of the SBR toolbox, the faulty routine and the conditions under which the error occured (parameters, machine, underlying BLAS / LAPACK libraries, etc.) We will try to fix these problems as soon as possible. % ------------------------------------------------------------------------------ 7. History ======= 1.0 April 30, 1996. First public release 1.1 May 09, 1996. Minor fixes; Fortran standard adherence enhanced; matrix size for the checks reduced. 1.2 June 17, 1996. Minor changes; number of files reduced; single check driver provided 1.3 July 01, 1996. Minor fixes; check driver expanded 1.4 December 29, 1999. Major changes: - completely new testing driver - added reduction drivers - repacking routines have changed - reduction routines can now handle tightly packed band. 1.4.1 May 17, 2000. Minor fixes in the output formats SHAR_EOF fi # end of overwriting check if test -f 'install' then echo shar: will not over-write existing file "'install'" else cat << "SHAR_EOF" > 'install' \section{Installation} \label{sec:install} The SBR toolbox comes with a {\tt UNIX} makefile for easy installation and a testing program for validation and performance tuning. In this section we briefly describe the ``standard'' installation procedure. Detailed information about the installation process may be found in the \NAME{README} file distributed with the software. The installation consists of the following steps. \begin{enumerate} \item Get the SBR toolbox from the TOMS repository at \texttt{netlib} and unpack it with \COMMAND{zcat sbr.tar.Z | tar xf -}% This command puts all the SBR software into a new directory \texttt{sbr}. \item Edit the file \NAME{make.inc} to match your system setup (e.g., the location of the LAPACK library, if the latter is installed on your machine). \item Type \COMMAND{make library}% This command will build the library (called \NAME{libSBR.a} if you did not change the name). \item (Optional.) Fine-tune the performance of the algorithms (cf.\ the \NAME{README} file). \item (Recommended.) Run the validation tests by typing \COMMAND{make checks}% and have a look at the output files \NAME{DOUTCHK} and \NAME{SOUTCHK}. They should report no ``skipped'' or ``failed'' tests. \item (Optional.) Run the additional timings (cf.\ the \NAME{README} file). \item (Optional.) Move the SBR library to a directory searched by the linker. \end{enumerate} The testing programs provide the residuals $|| U \tilde A - A U ||_{F}$, the orthogonality errors $|| U^{T} U - I ||_{F}$, and the timings for the reduction of a symmetric (full or banded) matrix $A$ to a (narrower) banded or tridiagonal matrix $\tilde A$ for matrices of different orders $n$ and different semibandwidths. If the orthogonal matrix $U$ is not accumulated then the above error measures are not available. In this case the deviation of the eigenvalues, $|| \mbox{spec}( A ) - \mbox{spec}( \tilde A ) ||_{2}$, is computed instead, where $\mbox{spec}( A )$ and $\mbox{spec}( \tilde A )$ are the eigenvalues of $A$ and $\tilde A$, respectively, in ascending order. SHAR_EOF fi # end of overwriting check cd .. if test ! -d 'Fortran77' then mkdir 'Fortran77' fi cd 'Fortran77' if test ! -d 'Dp' then mkdir 'Dp' fi cd 'Dp' if test ! -d 'Drivers' then mkdir 'Drivers' fi cd 'Drivers' if test -f 'data1' then echo shar: will not over-write existing file "'data1'" else cat << "SHAR_EOF" > 'data1' C ----------------------------------------------------------------------------- C - - C - Default input file for testing the SBR toolbox - C - - C ----------------------------------------------------------------------------- C C Author: Bruno Lang C Aachen University of Technology C na.blang@na-net.ornl.gov C Date: May 17, 2000 C Version: SBR Toolbox, Rev. 1.4.1 C C ----------------------------------------------------------------------------- C C Format of the commands: C C 'Comment' : The remainder of this line is treated as a comment. C 'FileName' : The following line contains the name of the output file C (up to 7 characters). For example, if you specify 'OUTHCK' C and run the double-precision test driver 'drun', then the C output is directed to the file 'DOUTCHK', whereas the C output of the single-precision driver 'srun' would be C directed to 'SOUTCHK'. C 'MaxDim' : The following line determines a maximum matrix size for C the runs. All runs with larger matrices will be skipped. C This feature can be used to limit the execution time of C the timing/tuning runs without much file editing. C 'NoChecks' : Switch off all numerical checks, even if they are C requested in the following runs. This feature can be used C to reduce the execution time of the timing/tuning runs C without much file editing. C 'OutputLevel' : The value in the following line determines how much output C is produced. C 1 : Generate only the overall summary. C 2 : Generate also condensed summaries for selected C computational routines (this mode should be used to C obtain tuning information). C 3 : Generate a more detailed summary for each test run. C 4 : Generate summaries for each routine called. C 'Print' : The following line (up to 78 characters) is printed to C the output file. C 'Quit' : Quit the test driver, ignore the remainder of the input C file. C C For the above commands, only the first character is relevant (see the C current comment lines), case is ignored. C The following commands trigger tests for computational routines. These C commands must be specified with all 5 characters (case is ignored), and C each requires at least two additional lines (see below). C C 'SYTRD' (cf. lines 86ff): Test run for the one-step reduction C full -> tridiagonal (LAPACK) and, optionally, C for the backward accumulation of the C transformations (ORGTR from LAPACK) C 'SBTRD' (cf. lines 138ff): Test run for the one-step reduction C banded -> tridiagonal (LAPACK) C 'SYRDB' (cf. lines 182ff): Test run for the one-step reduction C full -> banded (SBR) and, optionally, for the C backward accumulation of the transformations C (SYGTR from SBR) C 'SBRDB' (cf. lines 387ff): Test run for the one-step reduction C banded -> banded (SBR) C 'SBRDT' (cf. lines 591ff): Test run for the one-step reduction C banded -> tridiagonal (SBR) C 'SY2BC' (cf. lines 773ff): Test run for the copy full -> banded (SBR) C 'SY2BI' (cf. lines 897ff): Test run for the in-place repacking C full -> banded (SBR) C 'SB2BC' (cf. lines 1021ff): Test run for the copy banded -> banded (SBR) C 'SB2BI' (cf. lines 1123ff): Test run for the in-place repacking C banded -> banded (SBR) C 'SYRDD' (cf. lines 1225ff): Test run for the multi-step reduction driver C full -> banded/tridiagonal (SBR) C 'SBRDD' (cf. lines 1463ff): Test run for the multi-step reduction driver C banded -> banded/tridiagonal (SBR) C C ----------------------------------------------------------------------------- C C --- name of the output file --- C'FileName' C'OUTCHK' C --- set output level --- 'OutputLevel' 1 C ------------------------------------------------------------------------------ C C SYTRD : one-step reduction full -> tridiagonal (LAPACK) C C Parameters in the second line: C 1 : mtype = matrix type (mtype='R' : random, mtype='I' : isda) C 2 : diam = diameter of the eigenvalue clusters (in multiples of macheps; C used only if mtype='I' C 3 : uplo = use upper (uplo='U') or lower triangle (uplo='L') of the C matrix A ? C 4 : n = dimension of the matrix A C 5 : lda = leading dimension of the array a C 6 : nb1 = blocking factor for the reduction (nb1=0 : use default) C 7 : nx1 = cross-over point to non-blocked algorithm for the reduction C (nx1=0 : use default) C 8 : lwork1 = length of the workspace for the reduction C 9 : xinfo1 = expected info value for the routine sytrd C (xinfo1 <> 0 may be used for checking error exits) C 10 : jobu = accumulate the transformations in a matrix U with the C routine orgtr (jobu='U') or not (jobu='N') ? C 11 : nb2 = blocking factor for the accumulation (nb2=0 : use default) C 12 : nx2 = cross-over point to non-blocked algorithm for the accumulation C (nb2=0 : use default) C 13 : lwork2 = length of workspace for the accumulation C 14 : xinfo2 = expected info value for the routine orgtr C (xinfo2 <> 0 may be used for checking error exits) C C Parameters in the third line: C 1 : check = check the results (check='C') or not (check='N') ? C 2 : torthu = threshold for the orthogonality error F-norm( U' * U - I ) C (in multiples of n * macheps); C used only if check='C' and jobu='U' C 3 : tres = threshold for the residual error F-norm( U * A - B * U ) C (in multiples of n * macheps * F-norm( A )); C used only if check='C' and jobu='U' C 4 : tdevls = threshold for the orthogonality error F-norm( U' * U - I ) C (in multiples of n * macheps * F-norm( A )); C used only if check='C' and jobu='N' C C ------------------------------------------------------------------------------ 'SYTRD' 'Rand' 0.0 'Upper' 30 30 8 8 10000 0 'Upd' 8 8 10000 0 'Check' 10.0 10.0 10.0 'SYTRD' 'Rand' 0.0 'Lower' 30 30 8 8 10000 0 'Upd' 8 8 10000 0 'Check' 10.0 10.0 10.0 'SYTRD' 'Rand' 0.0 'Upper' 30 30 8 8 10000 0 'NoU' 8 8 10000 0 'Check' 10.0 10.0 10.0 'SYTRD' 'Rand' 0.0 'Lower' 30 30 8 8 10000 0 'NoU' 8 8 10000 0 'Check' 10.0 10.0 10.0 C ------------------------------------------------------------------------------ C C SBTRD : one-step reduction banded -> tridiagonal (LAPACK) C C Parameters in the second line: C 1 : mtype = matrix type (mtype='R' : random, mtype='I' : isda) C 2 : diam = diameter of the eigenvalue clusters (in multiples of macheps; C used only if mtype='I' C 3 : uplo = use upper (uplo='U') or lower triangle (uplo='L') of the C matrix A ? C 4 : n = dimension of the matrix A C 5 : b1 = (semi-)bandwidth of the banded matrix A C 6 : lda = leading dimension of the array a C 7 : jobu = accumulate the transformations in a matrix U (jobu='U') or C not (jobu='N') ? C 8 : ldu = leading dimension of the array u C 9 : xinfo = expected info value for the routine sbtrd C (xinfo <> 0 may be used for checking error exits) C C Parameters in the third line: C 1 : check = check the results (check='C') or not (check='N') ? C 2 : torthu = threshold for the orthogonality error F-norm( U' * U - I ) C (in multiples of n * macheps); C used only if check='C' and jobu='U' C 3 : tres = threshold for the residual error F-norm( U * A - B * U ) C (in multiples of n * macheps * F-norm( A )); C used only if check='C' and jobu='U' C 4 : tdevls = threshold for the orthogonality error F-norm( U' * U - I ) C (in multiples of n * macheps * F-norm( A )); C used only if check='C' and jobu='N' C C ------------------------------------------------------------------------------ 'SBTRD' 'Rand' 0.0 'Upper' 30 7 8 'Upd' 50 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 30 7 8 'Upd' 50 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Upper' 30 7 8 'NoU' 50 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 30 7 8 'NoU' 50 0 'Check' 10.0 10.0 10.0 C ------------------------------------------------------------------------------ C C SYRDB : one-step reduction full -> banded (SBR) C C Parameters in the second line: C 1 : mtype = matrix type (mtype='R' : random, mtype='I' : isda) C 2 : diam = diameter of the eigenvalue clusters (in multiples of macheps; C used only if mtype='I' C 3 : uplo = use upper (uplo='U') or lower triangle (uplo='L') of the C matrix A ? C 4 : n = dimension of the matrix A C 5 : lda = leading dimension of the array a C 6 : b2 = (semi-)bandwidth of the reduced matrix B C 7 : drptol = threshold for dropping Householder transforms (in multiples C of macheps) C 8 : nb = blocking factor for the reduction (nb=0 : use default) C 9 : lwork1 = length of the workspace for the reduction C 10 : xinfo1 = expected info value for the routine syrdb C (xinfo1 <> 0 may be used for checking error exits) C C Parameters in the third line: C 1 : jobu = accumulate the transformations in a matrix U or not ? C jobu = 'O' : do the accumulation 'on the fly' in syrdb C = 'U' : do the accumulation after the reduction with C sygtr C jobu = 'N' : no accumulation C 2 : ldu = leading dimension of the array u C 3 : lwork2 = length of workspace for the accumulation with sygtr C 4 : xinfo2 = expected info value for the routine sygtr C (xinfo2 <> 0 may be used for checking error exits) C C Parameters in the fourth line: C 1 : check = check the results (check='C') or not (check='N') ? C 2 : torthu = threshold for the orthogonality error F-norm( U' * U - I ) C (in multiples of n * macheps); C used only if check='C' and jobu='U' or 'O' C 3 : tres = threshold for the residual error F-norm( U * A - B * U ) C (in multiples of n * macheps * F-norm( A )); C used only if check='C' and jobu='U' or 'O' C 4 : tdevls = threshold for the orthogonality error F-norm( U' * U - I ) C (in multiples of n * macheps * F-norm( A )); C used only if check='C' and jobu='N' C C ------------------------------------------------------------------------------ C --- nonblocked reduction --- 'SYRDB' 'Rand' 0.0 'Upper' 30 30 6 0.0 1 10000 1 'OnF' 30 10000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 30 30 6 0.0 1 10000 1 'Onf' 30 10000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Upper' 30 30 6 0.0 1 10000 1 'Upd' 30 10000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 30 30 6 0.0 1 10000 1 'Upd' 30 10000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Upper' 30 30 6 0.0 1 10000 1 'NoU' 30 10000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 30 30 6 0.0 1 10000 1 'NoU' 30 10000 1 'Check' 10.0 10.0 10.0 C --- blocked reduction --- 'SYRDB' 'Rand' 0.0 'Upper' 30 30 7 0.0 6 10000 6 'OnF' 30 10000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 30 30 7 0.0 6 10000 6 'OnF' 30 10000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Upper' 30 30 7 0.0 6 10000 6 'Upd' 30 10000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 30 30 7 0.0 6 10000 6 'Upd' 30 10000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Upper' 30 30 7 0.0 6 10000 6 'NoU' 30 10000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 30 30 7 0.0 6 10000 6 'NoU' 30 10000 1 'Check' 10.0 10.0 10.0 C --- autopilot, non-exact dimensions --- 'SYRDB' 'Rand' 0.0 'Upper' 29 31 8 0.0 0 10000 8 'OnF' 32 10000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 29 31 8 0.0 0 10000 8 'OnF' 32 10000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Upper' 29 31 8 0.0 0 10000 8 'Upd' 32 10000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 29 31 8 0.0 0 10000 8 'Upd' 32 10000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Upper' 29 31 8 0.0 0 10000 8 'NoU' 32 10000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 29 31 8 0.0 0 10000 8 'NoU' 32 10000 1 'Check' 10.0 10.0 10.0 C --- small workspace forcing blocksize reduction --- 'SYRDB' 'Rand' 0.0 'Upper' 30 30 8 0.0 6 300 4 'Upd' 30 10000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Upper' 30 30 8 0.0 0 300 4 'Upd' 30 10000 1 'Check' 10.0 10.0 10.0 C --- ISDA-type matrix --- 'SYRDB' 'ISDA' 1.0E3 'Upper' 30 30 8 1.0E4 6 10000 6 'Upd' 30 10000 1 'Check' 10.0 1.0E4 10.0 'SYRDB' 'ISDA' 1.0E3 'Upper' 30 30 8 1.0E4 6 10000 6 'NoU' 30 10000 1 'Check' 10.0 10.0 1.0E4 C --- checks for quick return --- 'SYRDB' 'Rand' 0.0 'Upper' 1 30 0 0.0 1 600 1 'Upd' 30 10000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Upper' 30 30 29 0.0 1 600 1 'Upd' 30 10000 1 'Check' 10.0 10.0 10.0 C --- checks for error exits : --- C --- uplo is neither 'U' nor 'L' --- 'SYRDB' 'Rand' 0.0 'Error' 10 10 4 0.0 4 10000 -1 'NoU' 10 10000 1 'Check' 10.0 10.0 10.0 C --- jobu is neither 'U' nor 'N' --- 'SYRDB' 'Rand' 0.0 'Lower' 10 10 4 0.0 4 10000 -2 'Err' 10 10000 1 'Check' 10.0 10.0 10.0 C --- n is negative --- 'SYRDB' 'Rand' 0.0 'Lower' -10 10 4 0.0 4 10000 -3 'NoU' 10 10000 1 'Check' 10.0 10.0 10.0 C --- b is out of range --- 'SYRDB' 'Rand' 0.0 'Lower' 1 10 4 0.0 4 10000 -4 'NoU' 10 10000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 10 10 0 0.0 4 10000 -4 'NoU' 10 10000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 10 10 10 0.0 4 10000 -4 'NoU' 10 10000 1 'Check' 10.0 10.0 10.0 C --- lda is too small --- 'SYRDB' 'Rand' 0.0 'Lower' 10 8 4 0.0 4 10000 -6 'NoU' 10 10000 1 'Check' 10.0 10.0 10.0 C --- drptol is negative --- 'SYRDB' 'Rand' 0.0 'Lower' 10 10 4 -1.0 4 10000 -7 'NoU' 10 10000 1 'Check' 10.0 10.0 10.0 C --- ldu is too small --- 'SYRDB' 'Rand' 0.0 'Lower' 10 10 4 0.0 4 10000 -9 'Upd' 7 10000 1 'Check' 10.0 10.0 10.0 C --- nb negative --- 'SYRDB' 'Rand' 0.0 'Lower' 10 10 4 0.0 -4 10000 -10 'NoU' 10 10000 1 'Check' 10.0 10.0 10.0 C --- lwork is too small --- 'SYRDB' 'Rand' 0.0 'Lower' 10 10 4 0.0 4 21 -13 'NoU' 10 10000 1 'Check' 10.0 10.0 10.0 C --- this should be just enough --- 'SYRDB' 'Rand' 0.0 'Lower' 10 10 4 0.0 4 22 1 'NoU' 10 10000 1 'Check' 10.0 10.0 10.0 C ------------------------------------------------------------------------------ C C SBRDB : one-step reduction banded -> banded (SBR) C C Parameters in the second line: C 1 : mtype = matrix type (mtype='R' : random, mtype='I' : isda) C 2 : diam = diameter of the eigenvalue clusters (in multiples of macheps; C used only if mtype='I' C 3 : n = dimension of the matrix A C 4 : b1 = (semi-)bandwidth of the matrix A C 5 : lda = leading dimension of the array a C 6 : b2 = (semi-)bandwidth of the reduced matrix B C 7 : drptol = threshold for dropping Householder transforms (in multiples C of macheps) C 8 : nb = blocking factor for the reduction (nb=0 : use default) C 9 : jobu = accumulate the transformations in a matrix U (jobu='U') or C not (jobu='N') ? C 10 : ldu = leading dimension of the array u C 11 : lwork = length of workspace for the reduction and accumulation C 12 : xinfo = expected info value for the routine sbrdb C (xinfo <> 0 may be used for checking error exits) C C Parameters in the third line: C 1 : check = check the results (check='C') or not (check='N') ? C 2 : torthu = threshold for the orthogonality error F-norm( U' * U - I ) C (in multiples of n * macheps); C used only if check='C' and jobu='U' C 3 : tres = threshold for the residual error F-norm( U * A - B * U ) C (in multiples of n * macheps * F-norm( A )); C used only if check='C' and jobu='U' C 4 : tdevls = threshold for the orthogonality error F-norm( U' * U - I ) C (in multiples of n * macheps * F-norm( A )); C used only if check='C' and jobu='N' C C ------------------------------------------------------------------------------ C --- nonblocked reduction --- 'SBRDB' 'Rand' 0.0 30 8 13 4 0.0 1 'Upd' 30 10000 1 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 30 8 13 4 0.0 1 'NoU' 30 10000 1 'Check' 10.0 10.0 10.0 C --- blocked reduction --- 'SBRDB' 'Rand' 0.0 31 8 15 4 0.0 3 'Upd' 31 10000 3 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 31 8 15 4 0.0 3 'NoU' 31 10000 3 'Check' 10.0 10.0 10.0 C --- autopilot, nonexact dimensions --- 'SBRDB' 'Rand' 0.0 29 8 23 4 0.0 0 'Upd' 32 10000 4 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 29 8 23 4 0.0 0 'NoU' 32 10000 4 'Check' 10.0 10.0 10.0 C --- force blocksize reduction by insufficient workspace --- 'SBRDB' 'Rand' 0.0 30 8 20 5 0.0 5 'Upd' 30 200 4 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 30 8 20 5 0.0 5 'NoU' 30 100 3 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 30 29 59 5 0.0 0 'Upd' 30 400 4 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 30 29 59 5 0.0 0 'NoU' 30 300 3 'Check' 10.0 10.0 10.0 C --- ISDA-type matrix --- 'SBRDB' 'ISDA' 1.0E3 30 12 24 8 1.0E4 8 'Upd' 30 10000 8 'Check' 10.0 1.0E4 10.0 'SBRDB' 'ISDA' 1.0E3 30 12 24 8 1.0E4 8 'NoU' 30 10000 8 'Check' 10.0 10.0 1.0E4 C --- now the workspace should fit exactly --- 'SBRDB' 'Rand' 0.0 30 10 20 6 0.0 6 'Upd' 30 306 6 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 30 10 20 6 0.0 6 'NoU' 30 216 6 'Check' 10.0 10.0 10.0 C --- force buffering by providing very tight lda --- 'SBRDB' 'Rand' 0.0 30 9 16 5 0.0 4 'Upd' 30 10000 4 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 30 9 16 5 0.0 4 'NoU' 30 10000 4 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 30 9 15 5 0.0 4 'Upd' 30 10000 4 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 30 9 15 5 0.0 4 'NoU' 30 10000 4 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 30 9 14 5 0.0 4 'Upd' 30 10000 4 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 30 9 14 5 0.0 4 'NoU' 30 10000 4 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 30 9 13 5 0.0 4 'Upd' 30 10000 4 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 30 9 13 5 0.0 4 'NoU' 30 10000 4 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 30 9 12 5 0.0 4 'Upd' 30 10000 4 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 30 9 12 5 0.0 4 'NoU' 30 10000 4 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 30 9 11 5 0.0 4 'Upd' 30 10000 4 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 30 9 11 5 0.0 4 'NoU' 30 10000 4 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 30 9 10 5 0.0 4 'Upd' 30 10000 4 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 30 9 10 5 0.0 4 'NoU' 30 10000 4 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 20 12 20 5 0.0 4 'Upd' 20 10000 4 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 20 12 20 5 0.0 4 'NoU' 20 10000 4 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 20 12 13 5 0.0 4 'Upd' 20 10000 4 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 20 12 13 5 0.0 4 'NoU' 20 10000 4 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 20 19 20 5 0.0 4 'Upd' 20 10000 4 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 20 19 20 5 0.0 4 'NoU' 20 10000 4 'Check' 10.0 10.0 10.0 C --- checks for quick return --- 'SBRDB' 'Rand' 0.0 10 6 10 6 0.0 1 'Upd' 10 10000 1 'Check' 10.0 10.0 10.0 C --- checks for error exits : --- C --- jobu is neither 'U' nor 'N' --- 'SBRDB' 'Rand' 0.0 10 6 10 3 0.0 1 'Err' 10 10000 -1 'Check' 10.0 10.0 10.0 C --- n is negative --- 'SBRDB' 'Rand' 0.0 -10 6 10 3 0.0 1 'Upd' 10 10000 -2 'Check' 10.0 10.0 10.0 C --- b1 is out of range --- 'SBRDB' 'Rand' 0.0 10 -6 10 3 0.0 1 'Upd' 10 10000 -3 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 10 10 10 3 0.0 1 'Upd' 10 10000 -3 'Check' 10.0 10.0 10.0 C --- b2 is out of range --- 'SBRDB' 'Rand' 0.0 10 6 10 -3 0.0 1 'Upd' 10 10000 -4 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 10 6 10 0 0.0 1 'Upd' 10 10000 -4 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 10 6 10 7 0.0 1 'Upd' 10 10000 -4 'Check' 10.0 10.0 10.0 C --- lda is too small --- 'SBRDB' 'Rand' 0.0 10 6 6 3 0.0 1 'Upd' 10 10000 -6 'Check' 10.0 10.0 10.0 C --- drptol is negative --- 'SBRDB' 'Rand' 0.0 10 6 10 3 -1.0 1 'Upd' 10 10000 -7 'Check' 10.0 10.0 10.0 C --- ldu is too small --- 'SBRDB' 'Rand' 0.0 10 6 10 3 0.0 1 'Upd' 8 10000 -9 'Check' 10.0 10.0 10.0 C --- nb is negative --- 'SBRDB' 'Rand' 0.0 10 6 10 3 0.0 -1 'Upd' 10 10000 -10 'Check' 10.0 10.0 10.0 C --- lwork is too small --- 'SBRDB' 'Rand' 0.0 10 6 10 3 0.0 1 'Upd' 10 22 -12 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 10 6 10 3 0.0 1 'NoU' 10 20 -12 'Check' 10.0 10.0 10.0 C --- for these, workspace should be just sufficient --- 'SBRDB' 'Rand' 0.0 10 6 10 3 0.0 1 'Upd' 10 23 1 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 10 6 10 3 0.0 1 'NoU' 10 21 1 'Check' 10.0 10.0 10.0 C ------------------------------------------------------------------------------ C C SBRDT : one-step reduction banded -> tridiagonal (SBR) C C Parameters in the second line: C 1 : mtype = matrix type (mtype='R' : random, mtype='I' : isda) C 2 : diam = diameter of the eigenvalue clusters (in multiples of macheps; C used only if mtype='I' C 3 : n = dimension of the matrix A C 4 : b1 = (semi-)bandwidth of the matrix A C 5 : lda = leading dimension of the array a C 6 : drptol = threshold for dropping Householder transforms (in multiples C of macheps) C 7 : nb = blocking factor for the reduction (nb=0 : use default) C 8 : jobu = accumulate the transformations in a matrix U (jobu='U') or C not (jobu='N') ? C 9 : ldu = leading dimension of the array u C 10 : lwork = length of workspace for the reduction and accumulation C 11 : xinfo = expected info value for the routine sbrdt C (xinfo <> 0 may be used for checking error exits) C C Parameters in the third line: C 1 : check = check the results (check='C') or not (check='N') ? C 2 : torthu = threshold for the orthogonality error F-norm( U' * U - I ) C (in multiples of n * macheps); C used only if check='C' and jobu='U' C 3 : tres = threshold for the residual error F-norm( U * A - B * U ) C (in multiples of n * macheps * F-norm( A )); C used only if check='C' and jobu='U' C 4 : tdevls = threshold for the orthogonality error F-norm( U' * U - I ) C (in multiples of n * macheps * F-norm( A )); C used only if check='C' and jobu='N' C C ------------------------------------------------------------------------------ C --- non-blocked reduction/update --- 'SBRDT' 'Rand' 0.0 30 8 16 0.0 1 'Upd' 30 10000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 30 8 16 0.0 1 'NoU' 30 10000 1 'Check' 10.0 10.0 10.0 C --- blocked reduction/update --- 'SBRDT' 'Rand' 0.0 31 8 16 0.0 8 'Upd' 31 10000 8 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 31 8 16 0.0 8 'NoU' 31 10000 1 'Check' 10.0 10.0 10.0 C --- autopilot --- 'SBRDT' 'Rand' 0.0 29 4 5 0.0 0 'Upd' 32 10000 3 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 29 4 5 0.0 0 'NoU' 32 10000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 29 8 18 0.0 0 'Upd' 32 10000 4 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 29 8 18 0.0 0 'NoU' 32 10000 1 'Check' 10.0 10.0 10.0 C --- ISDA-type matrix --- 'SBRDT' 'ISDA' 1.0E3 30 8 16 1.0E4 8 'Upd' 30 10000 8 'Check' 10.0 1.0E4 10.0 'SBRDT' 'ISDA' 1.0E3 30 8 16 1.0E4 8 'NoU' 30 10000 1 'Check' 10.0 10.0 1.0E4 C --- force repacking by providing rather tight lda --- 'SBRDT' 'Rand' 0.0 30 8 15 0.0 6 'Upd' 30 517 6 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 30 8 15 0.0 6 'NoU' 30 17 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 30 8 14 0.0 6 'Upd' 30 522 6 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 30 8 14 0.0 6 'NoU' 30 23 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 30 8 13 0.0 6 'Upd' 30 531 6 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 30 8 13 0.0 6 'NoU' 30 31 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 30 8 12 0.0 6 'Upd' 30 544 6 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 30 8 12 0.0 6 'NoU' 30 44 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 30 8 11 0.0 6 'Upd' 30 561 6 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 30 8 11 0.0 6 'NoU' 30 61 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 30 8 10 0.0 6 'Upd' 30 582 6 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 30 8 10 0.0 6 'NoU' 30 82 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 30 8 9 0.0 6 'Upd' 30 607 6 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 30 8 9 0.0 6 'NoU' 30 107 1 'Check' 10.0 10.0 10.0 C --- force blocksize reduction by providing too small workspace --- 'SBRDT' 'Rand' 0.0 30 8 16 0.0 6 'Upd' 30 350 4 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 30 13 26 0.0 0 'Upd' 30 370 4 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 30 8 14 0.0 6 'Upd' 30 250 3 'Check' 10.0 10.0 10.0 C --- checks for quick return --- 'SBRDT' 'Rand' 0.0 0 0 2 0.0 6 'Upd' 30 10000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 30 0 2 0.0 6 'Upd' 30 10000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 30 1 2 0.0 6 'Upd' 30 10000 1 'Check' 10.0 10.0 10.0 C --- checks for error exits --- C --- jobu is neither 'U' nor 'N' --- 'SBRDT' 'Rand' 0.0 10 6 12 0.0 6 'Err' 10 10000 -1 'Check' 10.0 10.0 10.0 C --- n is negative --- 'SBRDT' 'Rand' 0.0 -10 6 12 0.0 6 'Upd' 10 10000 -2 'Check' 10.0 10.0 10.0 C --- b is out of range --- 'SBRDT' 'Rand' 0.0 10 -6 12 0.0 6 'Upd' 10 10000 -3 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 10 10 12 0.0 6 'Upd' 10 10000 -3 'Check' 10.0 10.0 10.0 C --- lda is too small --- 'SBRDT' 'Rand' 0.0 10 6 6 0.0 6 'Upd' 10 10000 -5 'Check' 10.0 10.0 10.0 C --- drptol is negative --- 'SBRDT' 'Rand' 0.0 10 6 12 -1.0 6 'Upd' 10 10000 -6 'Check' 10.0 10.0 10.0 C --- ldu is too small --- 'SBRDT' 'Rand' 0.0 10 6 12 0.0 6 'Upd' 8 10000 -10 'Check' 10.0 10.0 10.0 C --- nb is negative --- 'SBRDT' 'Rand' 0.0 10 6 12 0.0 -6 'Upd' 10 10000 -11 'Check' 10.0 10.0 10.0 C --- workspace is too small --- 'SBRDT' 'Rand' 0.0 30 8 16 0.0 6 'Upd' 50 37 -13 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 30 8 16 0.0 6 'NoU' 50 15 -13 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 30 8 15 0.0 6 'Upd' 50 38 -13 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 30 8 15 0.0 6 'NoU' 50 16 -13 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 30 8 9 0.0 6 'Upd' 50 128 -13 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 30 8 9 0.0 6 'NoU' 50 106 -13 'Check' 10.0 10.0 10.0 C ------------------------------------------------------------------------------ C C SY2BC : copy full -> banded (SBR) C C Parameters in the second line: C 1 : mtype = matrix type (mtype='R' : random, mtype='I' : isda) C 2 : diam = diameter of the eigenvalue clusters (in multiples of macheps; C used only if mtype='I' C 3 : uplo = use upper (uplo='U') or lower triangle (uplo='L') of the C matrix A ? C 4 : n = dimension of the matrix A C 5 : b1 = (semi-)bandwidth of the matrix A C 6 : lda1 = leading dimension of the array a in full storage C 7 : lda2 = leading dimension of the array holding A in packed storage C 8 : xinfo = expected info value for the routine sy2bc C (xinfo <> 0 may be used for checking error exits) C C Parameters in the third line: C 1 : check = check the results (check='C') or not (check='N') ? C 2 : torthu = threshold for the orthogonality error F-norm( U' * U - I ) C (in multiples of n * macheps); C used only if check='C' and jobu='U' C 3 : tres = threshold for the residual error F-norm( U * A - B * U ) C (in multiples of n * macheps * F-norm( A )); C used only if check='C' and jobu='U' C 4 : tdevls = threshold for the orthogonality error F-norm( U' * U - I ) C (in multiples of n * macheps * F-norm( A )); C used only if check='C' and jobu='N' C C ------------------------------------------------------------------------------ C --- repack to a tightly fitting band --- 'SY2BC' 'Rand' 0.0 'Upper' 25 8 25 9 1 'Check' 10.0 10.0 10.0 'SY2BC' 'Rand' 0.0 'Lower' 25 8 25 9 1 'Check' 10.0 10.0 10.0 C --- repack to a band with spare diagonals --- 'SY2BC' 'Rand' 0.0 'Upper' 25 8 25 12 1 'Check' 10.0 10.0 10.0 'SY2BC' 'Rand' 0.0 'Lower' 25 8 25 12 1 'Check' 10.0 10.0 10.0 C --- repack to a band with the same leading dimension --- 'SY2BC' 'Rand' 0.0 'Upper' 25 8 25 25 1 'Check' 10.0 10.0 10.0 'SY2BC' 'Rand' 0.0 'Lower' 25 8 25 25 1 'Check' 10.0 10.0 10.0 C --- repack to a band with leading dimension larger by 1 --- 'SY2BC' 'Rand' 0.0 'Upper' 25 8 25 26 1 'Check' 10.0 10.0 10.0 'SY2BC' 'Rand' 0.0 'Lower' 25 8 25 26 1 'Check' 10.0 10.0 10.0 C --- repack to a band with larger leading dimension --- 'SY2BC' 'Rand' 0.0 'Upper' 25 8 25 33 1 'Check' 10.0 10.0 10.0 'SY2BC' 'Rand' 0.0 'Lower' 25 8 25 33 1 'Check' 10.0 10.0 10.0 C --- and now the same tests again, with inexact lda --- 'SY2BC' 'Rand' 0.0 'Upper' 25 8 30 9 1 'Check' 10.0 10.0 10.0 'SY2BC' 'Rand' 0.0 'Lower' 25 8 30 9 1 'Check' 10.0 10.0 10.0 'SY2BC' 'Rand' 0.0 'Upper' 25 8 30 12 1 'Check' 10.0 10.0 10.0 'SY2BC' 'Rand' 0.0 'Lower' 25 8 30 12 1 'Check' 10.0 10.0 10.0 'SY2BC' 'Rand' 0.0 'Upper' 25 8 30 30 1 'Check' 10.0 10.0 10.0 'SY2BC' 'Rand' 0.0 'Lower' 25 8 30 30 1 'Check' 10.0 10.0 10.0 'SY2BC' 'Rand' 0.0 'Upper' 25 8 30 31 1 'Check' 10.0 10.0 10.0 'SY2BC' 'Rand' 0.0 'Lower' 25 8 30 31 1 'Check' 10.0 10.0 10.0 'SY2BC' 'Rand' 0.0 'Upper' 25 8 30 35 1 'Check' 10.0 10.0 10.0 'SY2BC' 'Rand' 0.0 'Lower' 25 8 30 35 1 'Check' 10.0 10.0 10.0 C --- check for quick return --- 'SY2BC' 'Rand' 0.0 'Lower' 0 8 30 9 1 'Check' 10.0 10.0 10.0 C --- checks for error exits --- C --- uplo is neither 'U' nor 'L' --- 'SY2BC' 'Rand' 0.0 'Error' 25 8 30 9 -1 'Check' 10.0 10.0 10.0 C --- n is negative --- 'SY2BC' 'Rand' 0.0 'Lower' -25 8 30 9 -2 'Check' 10.0 10.0 10.0 C --- b is out of range --- 'SY2BC' 'Rand' 0.0 'Lower' 25 -8 30 9 -3 'Check' 10.0 10.0 10.0 'SY2BC' 'Rand' 0.0 'Lower' 25 25 30 9 -3 'Check' 10.0 10.0 10.0 C --- ldfull is too small --- 'SY2BC' 'Rand' 0.0 'Lower' 25 8 23 9 -5 'Check' 10.0 10.0 10.0 C --- ldband is too small --- 'SY2BC' 'Rand' 0.0 'Lower' 25 8 30 8 -7 'Check' 10.0 10.0 10.0 C ------------------------------------------------------------------------------ C C SY2BI : in-place copy full -> banded (SBR) C C Parameters in the second line: C 1 : mtype = matrix type (mtype='R' : random, mtype='I' : isda) C 2 : diam = diameter of the eigenvalue clusters (in multiples of macheps; C used only if mtype='I' C 3 : uplo = use upper (uplo='U') or lower triangle (uplo='L') of the C matrix A ? C 4 : n = dimension of the matrix A C 5 : b1 = (semi-)bandwidth of the matrix A C 6 : lda1 = leading dimension of the array a in full storage C 7 : lda2 = leading dimension of the array holding A in packed storage C 8 : xinfo = expected info value for the routine sy2bi C (xinfo <> 0 may be used for checking error exits) C C Parameters in the third line: C 1 : check = check the results (check='C') or not (check='N') ? C 2 : torthu = threshold for the orthogonality error F-norm( U' * U - I ) C (in multiples of n * macheps); C used only if check='C' and jobu='U' C 3 : tres = threshold for the residual error F-norm( U * A - B * U ) C (in multiples of n * macheps * F-norm( A )); C used only if check='C' and jobu='U' C 4 : tdevls = threshold for the orthogonality error F-norm( U' * U - I ) C (in multiples of n * macheps * F-norm( A )); C used only if check='C' and jobu='N' C C ------------------------------------------------------------------------------ C --- repack to a tightly fitting band --- 'SY2BI' 'Rand' 0.0 'Upper' 25 8 25 9 1 'Check' 10.0 10.0 10.0 'SY2BI' 'Rand' 0.0 'Lower' 25 8 25 9 1 'Check' 10.0 10.0 10.0 C --- repack to a band with spare diagonals --- 'SY2BI' 'Rand' 0.0 'Upper' 25 8 25 12 1 'Check' 10.0 10.0 10.0 'SY2BI' 'Rand' 0.0 'Lower' 25 8 25 12 1 'Check' 10.0 10.0 10.0 C --- repack to a band with the same leading dimension --- 'SY2BI' 'Rand' 0.0 'Upper' 25 8 25 25 1 'Check' 10.0 10.0 10.0 'SY2BI' 'Rand' 0.0 'Lower' 25 8 25 25 1 'Check' 10.0 10.0 10.0 C --- repack to a band with leading dimension larger by 1 --- 'SY2BI' 'Rand' 0.0 'Upper' 25 8 25 26 1 'Check' 10.0 10.0 10.0 'SY2BI' 'Rand' 0.0 'Lower' 25 8 25 26 1 'Check' 10.0 10.0 10.0 C --- repack to a band with larger leading dimension --- 'SY2BI' 'Rand' 0.0 'Upper' 25 8 25 33 1 'Check' 10.0 10.0 10.0 'SY2BI' 'Rand' 0.0 'Lower' 25 8 25 33 1 'Check' 10.0 10.0 10.0 C --- and now the same tests again, with inexact lda --- 'SY2BI' 'Rand' 0.0 'Upper' 25 8 30 9 1 'Check' 10.0 10.0 10.0 'SY2BI' 'Rand' 0.0 'Lower' 25 8 30 9 1 'Check' 10.0 10.0 10.0 'SY2BI' 'Rand' 0.0 'Upper' 25 8 30 12 1 'Check' 10.0 10.0 10.0 'SY2BI' 'Rand' 0.0 'Lower' 25 8 30 12 1 'Check' 10.0 10.0 10.0 'SY2BI' 'Rand' 0.0 'Upper' 25 8 30 30 1 'Check' 10.0 10.0 10.0 'SY2BI' 'Rand' 0.0 'Lower' 25 8 30 30 1 'Check' 10.0 10.0 10.0 'SY2BI' 'Rand' 0.0 'Upper' 25 8 30 31 1 'Check' 10.0 10.0 10.0 'SY2BI' 'Rand' 0.0 'Lower' 25 8 30 31 1 'Check' 10.0 10.0 10.0 'SY2BI' 'Rand' 0.0 'Upper' 25 8 30 35 1 'Check' 10.0 10.0 10.0 'SY2BI' 'Rand' 0.0 'Lower' 25 8 30 35 1 'Check' 10.0 10.0 10.0 C --- check for quick return --- 'SY2BI' 'Rand' 0.0 'Lower' 0 8 30 9 1 'Check' 10.0 10.0 10.0 C --- checks for error exits --- C --- uplo is neither 'U' nor 'L' --- 'SY2BI' 'Rand' 0.0 'Error' 25 8 30 9 -1 'Check' 10.0 10.0 10.0 C --- n is negative --- 'SY2BI' 'Rand' 0.0 'Lower' -25 8 30 9 -2 'Check' 10.0 10.0 10.0 C --- b is out of range --- 'SY2BI' 'Rand' 0.0 'Lower' 25 -8 30 9 -3 'Check' 10.0 10.0 10.0 'SY2BI' 'Rand' 0.0 'Lower' 25 25 30 9 -3 'Check' 10.0 10.0 10.0 C --- ldfull is too small --- 'SY2BI' 'Rand' 0.0 'Lower' 25 8 23 9 -5 'Check' 10.0 10.0 10.0 C --- ldband is too small --- 'SY2BI' 'Rand' 0.0 'Lower' 25 8 30 8 -6 'Check' 10.0 10.0 10.0 C ------------------------------------------------------------------------------ C C SB2BC : copy banded -> banded (SBR) C C Parameters in the second line: C 1 : mtype = matrix type (mtype='R' : random, mtype='I' : isda) C 2 : diam = diameter of the eigenvalue clusters (in multiples of macheps; C used only if mtype='I' C 3 : uplo = use upper (uplo='U') or lower triangle (uplo='L') of the C matrix A ? C 4 : n = dimension of the matrix A C 5 : b1 = (semi-)bandwidth of the matrix A C 6 : lda1 = leading dimension of the source array a C 7 : lda2 = leading dimension of the destination array C 8 : xinfo = expected info value for the routine sb2bc C (xinfo <> 0 may be used for checking error exits) C C Parameters in the third line: C 1 : check = check the results (check='C') or not (check='N') ? C 2 : torthu = threshold for the orthogonality error F-norm( U' * U - I ) C (in multiples of n * macheps); C used only if check='C' and jobu='U' C 3 : tres = threshold for the residual error F-norm( U * A - B * U ) C (in multiples of n * macheps * F-norm( A )); C used only if check='C' and jobu='U' C 4 : tdevls = threshold for the orthogonality error F-norm( U' * U - I ) C (in multiples of n * macheps * F-norm( A )); C used only if check='C' and jobu='N' C C ------------------------------------------------------------------------------ C --- repack a tightly fitting band --- C --- repack to a tightly fitting band --- 'SB2BC' 'Rand' 0.0 'Upper' 25 8 9 9 1 'Check' 10.0 10.0 10.0 'SB2BC' 'Rand' 0.0 'Lower' 25 8 9 9 1 'Check' 10.0 10.0 10.0 C --- repack to a band with spare diagonals --- 'SB2BC' 'Rand' 0.0 'Upper' 25 8 9 12 1 'Check' 10.0 10.0 10.0 'SB2BC' 'Rand' 0.0 'Lower' 25 8 9 12 1 'Check' 10.0 10.0 10.0 C --- and now repack a band with diagonals to spare --- C --- repack to tight fit --- 'SB2BC' 'Rand' 0.0 'Upper' 25 8 15 9 1 'Check' 10.0 10.0 10.0 'SB2BC' 'Rand' 0.0 'Lower' 25 8 15 9 1 'Check' 10.0 10.0 10.0 C --- repack to a band with spare diagonals --- 'SB2BC' 'Rand' 0.0 'Upper' 25 8 15 12 1 'Check' 10.0 10.0 10.0 'SB2BC' 'Rand' 0.0 'Lower' 25 8 15 12 1 'Check' 10.0 10.0 10.0 C --- repack to a band with the same leading dimension --- 'SB2BC' 'Rand' 0.0 'Upper' 25 8 15 15 1 'Check' 10.0 10.0 10.0 'SB2BC' 'Rand' 0.0 'Lower' 25 8 15 15 1 'Check' 10.0 10.0 10.0 C --- repack to a band with larger leading dimension --- 'SB2BC' 'Rand' 0.0 'Upper' 25 8 15 25 1 'Check' 10.0 10.0 10.0 'SB2BC' 'Rand' 0.0 'Lower' 25 8 15 25 1 'Check' 10.0 10.0 10.0 C --- check for quick return --- 'SB2BC' 'Rand' 0.0 'Lower' 0 0 30 9 1 'Check' 10.0 10.0 10.0 C --- checks for error exits --- C --- uplo is neither 'U' nor 'L' --- 'SB2BC' 'Rand' 0.0 'Error' 25 8 12 9 -1 'Check' 10.0 10.0 10.0 C --- n is negative --- 'SB2BC' 'Rand' 0.0 'Lower' -25 8 12 9 -2 'Check' 10.0 10.0 10.0 C --- b is out of range --- 'SB2BC' 'Rand' 0.0 'Lower' 25 -8 12 9 -3 'Check' 10.0 10.0 10.0 'SB2BC' 'Rand' 0.0 'Lower' 25 25 25 9 -3 'Check' 10.0 10.0 10.0 C --- ldsrc is too small --- 'SB2BC' 'Rand' 0.0 'Lower' 25 8 6 9 -5 'Check' 10.0 10.0 10.0 C --- lddst is too small --- 'SB2BC' 'Rand' 0.0 'Lower' 25 8 11 7 -7 'Check' 10.0 10.0 10.0 C ------------------------------------------------------------------------------ C C SB2BI : in-place copy banded -> banded (SBR) C C Parameters in the second line: C 1 : mtype = matrix type (mtype='R' : random, mtype='I' : isda) C 2 : diam = diameter of the eigenvalue clusters (in multiples of macheps; C used only if mtype='I' C 3 : uplo = use upper (uplo='U') or lower triangle (uplo='L') of the C matrix A ? C 4 : n = dimension of the matrix A C 5 : b1 = (semi-)bandwidth of the matrix A C 6 : lda1 = leading dimension of the source array a C 7 : lda2 = leading dimension of the destination array C 8 : xinfo = expected info value for the routine sb2bi C (xinfo <> 0 may be used for checking error exits) C C Parameters in the third line: C 1 : check = check the results (check='C') or not (check='N') ? C 2 : torthu = threshold for the orthogonality error F-norm( U' * U - I ) C (in multiples of n * macheps); C used only if check='C' and jobu='U' C 3 : tres = threshold for the residual error F-norm( U * A - B * U ) C (in multiples of n * macheps * F-norm( A )); C used only if check='C' and jobu='U' C 4 : tdevls = threshold for the orthogonality error F-norm( U' * U - I ) C (in multiples of n * macheps * F-norm( A )); C used only if check='C' and jobu='N' C C ------------------------------------------------------------------------------ C --- repack a tightly fitting band --- C --- repack to a tightly fitting band --- 'SB2BI' 'Rand' 0.0 'Upper' 25 8 9 9 1 'Check' 10.0 10.0 10.0 'SB2BI' 'Rand' 0.0 'Lower' 25 8 9 9 1 'Check' 10.0 10.0 10.0 C --- repack to a band with spare diagonals --- 'SB2BI' 'Rand' 0.0 'Upper' 25 8 9 12 1 'Check' 10.0 10.0 10.0 'SB2BI' 'Rand' 0.0 'Lower' 25 8 9 12 1 'Check' 10.0 10.0 10.0 C --- and now repack a band with diagonals to spare --- C --- repack to tight fit --- 'SB2BI' 'Rand' 0.0 'Upper' 25 8 15 9 1 'Check' 10.0 10.0 10.0 'SB2BI' 'Rand' 0.0 'Lower' 25 8 15 9 1 'Check' 10.0 10.0 10.0 C --- repack to a band with spare diagonals --- 'SB2BI' 'Rand' 0.0 'Upper' 25 8 15 12 1 'Check' 10.0 10.0 10.0 'SB2BI' 'Rand' 0.0 'Lower' 25 8 15 12 1 'Check' 10.0 10.0 10.0 C --- repack to a band with the same leading dimension --- 'SB2BI' 'Rand' 0.0 'Upper' 25 8 15 15 1 'Check' 10.0 10.0 10.0 'SB2BI' 'Rand' 0.0 'Lower' 25 8 15 15 1 'Check' 10.0 10.0 10.0 C --- repack to a band with larger leading dimension --- 'SB2BI' 'Rand' 0.0 'Upper' 25 8 15 25 1 'Check' 10.0 10.0 10.0 'SB2BI' 'Rand' 0.0 'Lower' 25 8 15 25 1 'Check' 10.0 10.0 10.0 C --- check for quick return --- 'SB2BI' 'Rand' 0.0 'Lower' 0 0 30 9 1 'Check' 10.0 10.0 10.0 C --- checks for error exits --- C --- uplo is neither 'U' nor 'L' --- 'SB2BI' 'Rand' 0.0 'Error' 25 8 12 9 -1 'Check' 10.0 10.0 10.0 C --- n is negative --- 'SB2BI' 'Rand' 0.0 'Lower' -25 8 12 9 -2 'Check' 10.0 10.0 10.0 C --- b is out of range --- 'SB2BI' 'Rand' 0.0 'Lower' 25 -8 12 9 -3 'Check' 10.0 10.0 10.0 'SB2BI' 'Rand' 0.0 'Lower' 25 25 25 9 -3 'Check' 10.0 10.0 10.0 C --- ldsrc is too small --- 'SB2BI' 'Rand' 0.0 'Lower' 25 8 6 9 -5 'Check' 10.0 10.0 10.0 C --- lddst is too small --- 'SB2BI' 'Rand' 0.0 'Lower' 25 8 11 7 -6 'Check' 10.0 10.0 10.0 C ------------------------------------------------------------------------------ C C SYRDD : driver routine for the reduction full -> banded/tridiagonal C C Parameters in the second line: C 1 : mtype = matrix type (mtype='R' : random, mtype='I' : isda) C 2 : diam = diameter of the eigenvalue clusters (in multiples of macheps; C used only if mtype='I' C 3 : uplo = use upper (uplo='U') or lower triangle (uplo='L') of the C matrix A ? C 4 : n = dimension of the matrix A C 5 : lda1 = leading dimension of the array a C 6 : b2 = (semi-)bandwidth of the reduced matrix B C 7 : lda2 = leading dimension of the array holding the banded matrix C 8 : nsteps = number of reduction steps C 9 : drptol = threshold for dropping Householder transforms (in multiples C of macheps) C 10 : jobu = accumulate the transformations in a matrix U (jobu='U') or C not (jobu='N') ? C 11 : lwork = length of workspace for the reduction and accumulation C 12 : xinfo = expected info value for the routine syrdb C (xinfo <> 0 may be used for checking error exits) C C If nsteps > 1 then the second line contains the nstep-1 intermediate C bandwidths, and the third line contains the nsteps blocking factors for the C reduction steps. C If nsteps = 1 then the second line contains the blocking factor for the C reduction step (the line specifying intermediate bandwidths is missing). C If nsteps = 0 then no intermediate bandwidths or blocking factors are C specified (so both lines are missing). C C Parameters in the last line: C 1 : check = check the results (check='C') or not (check='N') ? C 2 : torthu = threshold for the orthogonality error F-norm( U' * U - I ) C (in multiples of n * macheps); C used only if check='C' and jobu='U' C 3 : tres = threshold for the residual error F-norm( U * A - B * U ) C (in multiples of n * macheps * F-norm( A )); C used only if check='C' and jobu='U' C 4 : tdevls = threshold for the orthogonality error F-norm( U' * U - I ) C (in multiples of n * macheps * F-norm( A )); C used only if check='C' and jobu='N' C C ------------------------------------------------------------------------------ C --- one-step reduction --- 'SYRDD' 'Rand' 0.0 'Upper' 30 30 1 2 1 0.0 'Upd' 10000 1 5 'Check' 10.0 10.0 10.0 'SYRDD' 'Rand' 0.0 'Upper' 30 30 1 2 1 0.0 'NoU' 10000 1 5 'Check' 10.0 10.0 10.0 'SYRDD' 'Rand' 0.0 'Lower' 30 30 1 2 1 0.0 'Upd' 10000 1 5 'Check' 10.0 10.0 10.0 'SYRDD' 'Rand' 0.0 'Lower' 30 30 1 2 1 0.0 'NoU' 10000 1 5 'Check' 10.0 10.0 10.0 'SYRDD' 'Rand' 0.0 'Upper' 30 30 8 9 1 0.0 'Upd' 10000 1 5 'Check' 10.0 10.0 10.0 'SYRDD' 'Rand' 0.0 'Upper' 30 30 8 9 1 0.0 'NoU' 10000 1 5 'Check' 10.0 10.0 10.0 'SYRDD' 'Rand' 0.0 'Lower' 30 30 8 9 1 0.0 'Upd' 10000 1 5 'Check' 10.0 10.0 10.0 'SYRDD' 'Rand' 0.0 'Lower' 30 30 8 9 1 0.0 'NoU' 10000 1 5 'Check' 10.0 10.0 10.0 C --- two-step reduction --- 'SYRDD' 'Rand' 0.0 'Upper' 30 30 1 16 2 0.0 'Upd' 10000 1 12 5 4 'Check' 10.0 10.0 10.0 'SYRDD' 'Rand' 0.0 'Upper' 30 30 1 16 2 0.0 'NoU' 10000 1 12 5 4 'Check' 10.0 10.0 10.0 'SYRDD' 'Rand' 0.0 'Lower' 30 30 1 16 2 0.0 'Upd' 10000 1 12 5 4 'Check' 10.0 10.0 10.0 'SYRDD' 'Rand' 0.0 'Lower' 30 30 1 16 2 0.0 'NoU' 10000 1 12 5 4 'Check' 10.0 10.0 10.0 'SYRDD' 'Rand' 0.0 'Upper' 30 30 8 14 2 0.0 'Upd' 10000 1 12 5 4 'Check' 10.0 10.0 10.0 'SYRDD' 'Rand' 0.0 'Upper' 30 30 8 14 2 0.0 'NoU' 10000 1 12 5 4 'Check' 10.0 10.0 10.0 'SYRDD' 'Rand' 0.0 'Lower' 30 30 8 14 2 0.0 'Upd' 10000 1 12 5 4 'Check' 10.0 10.0 10.0 'SYRDD' 'Rand' 0.0 'Lower' 30 30 8 14 2 0.0 'NoU' 10000 1 12 5 4 'Check' 10.0 10.0 10.0 C --- autopilot --- 'SYRDD' 'Rand' 0.0 'Upper' 30 30 1 2 0 0.0 'Upd' 10000 1 'Check' 10.0 10.0 10.0 'SYRDD' 'Rand' 0.0 'Upper' 30 30 1 2 0 0.0 'NoU' 10000 1 'Check' 10.0 10.0 10.0 'SYRDD' 'Rand' 0.0 'Lower' 30 30 1 2 0 0.0 'Upd' 10000 1 'Check' 10.0 10.0 10.0 'SYRDD' 'Rand' 0.0 'Lower' 30 30 1 2 0 0.0 'NoU' 10000 1 'Check' 10.0 10.0 10.0 'SYRDD' 'Rand' 0.0 'Upper' 30 30 5 6 0 0.0 'Upd' 10000 1 'Check' 10.0 10.0 10.0 'SYRDD' 'Rand' 0.0 'Upper' 30 30 5 6 0 0.0 'NoU' 10000 1 'Check' 10.0 10.0 10.0 'SYRDD' 'Rand' 0.0 'Lower' 30 30 5 6 0 0.0 'Upd' 10000 1 'Check' 10.0 10.0 10.0 'SYRDD' 'Rand' 0.0 'Lower' 30 30 5 6 0 0.0 'NoU' 10000 1 'Check' 10.0 10.0 10.0 'SYRDD' 'Rand' 0.0 'Upper' 300 300 1 64 0 0.0 'Upd' 20000 1 'Check' 10.0 10.0 10.0 'SYRDD' 'Rand' 0.0 'Upper' 300 300 1 64 0 0.0 'NoU' 20000 1 'Check' 10.0 10.0 10.0 'SYRDD' 'Rand' 0.0 'Lower' 300 300 1 64 0 0.0 'Upd' 20000 1 'Check' 10.0 10.0 10.0 'SYRDD' 'Rand' 0.0 'Lower' 300 300 1 64 0 0.0 'NoU' 20000 1 'Check' 10.0 10.0 10.0 C --- check for quick return --- 'SYRDD' 'Rand' 0.0 'Lower' 0 4 1 2 0 0.0 'Upd' 10000 1 'Check' 10.0 10.0 10.0 C --- check for error exits --- C --- jobu is neither 'U' nor 'N' --- 'SYRDD' 'Rand' 0.0 'Lower' 10 10 4 8 1 0.0 'Err' 10000 -1 5 'Check' 10.0 10.0 10.0 C --- uplo is neither 'U' nor 'L' --- 'SYRDD' 'Rand' 0.0 'Error' 10 10 4 8 1 0.0 'Upd' 10000 -2 5 'Check' 10.0 10.0 10.0 C --- n is negative --- 'SYRDD' 'Rand' 0.0 'Lower' -10 10 4 8 1 0.0 'Upd' 10000 -3 5 'Check' 10.0 10.0 10.0 C --- b2 is out of range --- 'SYRDD' 'Rand' 0.0 'Lower' 10 10 -1 8 1 0.0 'Upd' 10000 -4 5 'Check' 10.0 10.0 10.0 'SYRDD' 'Rand' 0.0 'Lower' 10 10 0 8 1 0.0 'Upd' 10000 -4 5 'Check' 10.0 10.0 10.0 'SYRDD' 'Rand' 0.0 'Lower' 10 10 10 20 1 0.0 'Upd' 10000 -4 5 'Check' 10.0 10.0 10.0 C --- lda is too small --- 'SYRDD' 'Rand' 0.0 'Lower' 10 8 4 8 1 0.0 'Upd' 10000 -6 5 'Check' 10.0 10.0 10.0 C --- drptol is out of range --- 'SYRDD' 'Rand' 0.0 'Lower' 10 10 4 8 1 -1.0 'Upd' 10000 -7 5 'Check' 10.0 10.0 10.0 C --- ldband is out of range --- 'SYRDD' 'Rand' 0.0 'Lower' 10 10 4 4 1 0.0 'Upd' 10000 -9 5 'Check' 10.0 10.0 10.0 'SYRDD' 'Rand' 0.0 'Lower' 10 10 4 6 2 0.0 'Upd' 10000 -9 6 5 3 'Check' 10.0 10.0 10.0 C --- nsteps is negative --- 'SYRDD' 'Rand' 0.0 'Lower' 10 10 4 8 -1 0.0 'Upd' 10000 -12 'Check' 10.0 10.0 10.0 C --- sequence of bandwidths is non-decreasing --- 'SYRDD' 'Rand' 0.0 'Lower' 10 10 1 20 3 0.0 'Upd' 10000 -13 10 3 5 5 5 'Check' 10.0 10.0 10.0 'SYRDD' 'Rand' 0.0 'Lower' 10 10 3 8 3 0.0 'Upd' 10000 -13 6 2 5 5 5 'Check' 10.0 10.0 10.0 'SYRDD' 'Rand' 0.0 'Lower' 10 10 1 8 3 0.0 'Upd' 10000 -13 4 5 5 5 5 'Check' 10.0 10.0 10.0 C --- sequence of blocking factors contains negative entries --- 'SYRDD' 'Rand' 0.0 'Lower' 10 10 4 8 1 0.0 'Upd' 10000 -14 -5 'Check' 10.0 10.0 10.0 C --- workspace is too small --- 'SYRDD' 'Rand' 0.0 'Lower' 10 10 4 8 1 0.0 'Upd' 38 -16 5 'Check' 10.0 10.0 10.0 C ------------------------------------------------------------------------------ C C SBRDD : driver routine for the reduction banded -> banded/tridiagonal C C Parameters in the second line: C 1 : mtype = matrix type (mtype='R' : random, mtype='I' : isda) C 2 : diam = diameter of the eigenvalue clusters (in multiples of macheps; C used only if mtype='I' C 3 : uplo = use upper (uplo='U') or lower triangle (uplo='L') of the C matrix A ? C 4 : n = dimension of the matrix A C 5 : b1 = (semi-)bandwidth of the matrix A C 6 : lda = leading dimension of the array a C 7 : b2 = (seim-)bandwidth of the reduced matrix B C 8 : nsteps = number of reduction steps C 9 : drptol = threshold for dropping Householder transforms (in multiples C of macheps) C 10 : jobu = accumulate the transformations in a matrix U (jobu='U') or C not (jobu='N') ? C 11 : ldu = leading dimension of the array u C 12 : lwork = length of workspace for the reduction and accumulation C 13 : xinfo = expected info value for the routine syrdb C (xinfo <> 0 may be used for checking error exits) C C If nsteps > 1 then the second line contains the nstep-1 intermediate C bandwidths, and the third line contains the nsteps blocking factors for the C reduction steps. C If nsteps = 1 then the second line contains the blocking factor for the C reduction step (the line specifying intermediate bandwidths is missing). C If nsteps = 0 then no intermediate bandwidths or blocking factors are C specified (so both lines are missing). C C Parameters in the last line: C 1 : check = check the results (check='C') or not (check='N') ? C 2 : torthu = threshold for the orthogonality error F-norm( U' * U - I ) C (in multiples of n * macheps); C used only if check='C' and jobu='U' C 3 : tres = threshold for the residual error F-norm( U * A - B * U ) C (in multiples of n * macheps * F-norm( A )); C used only if check='C' and jobu='U' C 4 : tdevls = threshold for the orthogonality error F-norm( U' * U - I ) C (in multiples of n * macheps * F-norm( A )); C used only if check='C' and jobu='N' C C ------------------------------------------------------------------------------ C --- one-step reduction --- 'SBRDD' 'Rand' 0.0 'Upper' 30 15 30 1 1 0.0 'Upd' 30 10000 1 5 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Upper' 30 15 30 1 1 0.0 'NoU' 30 10000 1 5 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 30 15 30 1 1 0.0 'Upd' 30 10000 1 5 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 30 15 30 1 1 0.0 'NoU' 30 10000 1 5 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Upper' 30 4 8 1 1 0.0 'Upd' 30 10000 1 5 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Upper' 30 4 8 1 1 0.0 'NoU' 30 10000 1 5 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 30 4 8 1 1 0.0 'Upd' 30 10000 1 5 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 30 4 8 1 1 0.0 'NoU' 30 10000 1 5 'Check' 10.0 10.0 10.0 C --- two-step reduction --- 'SBRDD' 'Rand' 0.0 'Upper' 30 15 30 1 2 0.0 'Upd' 30 10000 1 12 5 3 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Upper' 30 15 30 1 2 0.0 'NoU' 30 10000 1 12 5 3 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 30 15 30 1 2 0.0 'Upd' 30 10000 1 12 5 3 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 30 15 30 1 2 0.0 'NoU' 30 10000 1 12 5 3 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Upper' 30 15 30 3 2 0.0 'Upd' 30 10000 1 12 5 3 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Upper' 30 15 30 3 2 0.0 'NoU' 30 10000 1 12 5 3 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 30 15 30 3 2 0.0 'Upd' 30 10000 1 12 5 3 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 30 15 30 3 2 0.0 'NoU' 30 10000 1 12 5 3 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Upper' 30 15 30 1 2 0.0 'Upd' 30 10000 1 3 5 3 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Upper' 30 15 30 1 2 0.0 'NoU' 30 10000 1 3 5 3 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 30 15 30 1 2 0.0 'Upd' 30 10000 1 3 5 3 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 30 15 30 1 2 0.0 'NoU' 30 10000 1 3 5 3 'Check' 10.0 10.0 10.0 C --- doubling sequence --- 'SBRDD' 'Rand' 0.0 'Upper' 30 15 16 1 4 0.0 'Upd' 30 10000 1 14 12 8 0 0 0 0 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Upper' 30 15 16 1 4 0.0 'NoU' 30 10000 1 14 12 8 0 0 0 0 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 30 15 16 1 4 0.0 'Upd' 30 10000 1 14 12 8 0 0 0 0 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 30 15 16 1 4 0.0 'NoU' 30 10000 1 14 12 8 0 0 0 0 'Check' 10.0 10.0 10.0 C --- autopilot --- 'SBRDD' 'Rand' 0.0 'Upper' 80 70 80 1 0 0.0 'Upd' 80 10000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Upper' 80 70 80 1 0 0.0 'NoU' 80 10000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 80 70 80 1 0 0.0 'Upd' 80 10000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 80 70 80 1 0 0.0 'NoU' 80 10000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Upper' 30 12 30 1 0 0.0 'Upd' 30 10000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Upper' 30 12 30 1 0 0.0 'NoU' 30 10000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 30 12 30 1 0 0.0 'Upd' 30 10000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 30 12 30 1 0 0.0 'NoU' 30 10000 1 'Check' 10.0 10.0 10.0 C --- check for quick return --- 'SBRDD' 'Rand' 0.0 'Lower' 0 4 8 1 0 0.0 'Upd' 10 10000 1 'Check' 10.0 10.0 10.0 C --- check for error exits --- C --- jobu is neither 'U' nor 'N' --- 'SBRDD' 'Rand' 0.0 'Lower' 10 4 8 1 1 0.0 'Err' 10 10000 -1 5 'Check' 10.0 10.0 10.0 C --- uplo is neither 'U' nor 'L' --- 'SBRDD' 'Rand' 0.0 'Error' 10 4 8 1 1 0.0 'Upd' 10 10000 -2 5 'Check' 10.0 10.0 10.0 C --- n is negative --- 'SBRDD' 'Rand' 0.0 'Lower' -10 4 8 1 1 0.0 'Upd' 10 10000 -3 5 'Check' 10.0 10.0 10.0 C --- b1 is out of range --- 'SBRDD' 'Rand' 0.0 'Lower' 10 -4 8 1 1 0.0 'Upd' 10 10000 -4 5 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 10 10 18 1 1 0.0 'Upd' 10 10000 -4 5 'Check' 10.0 10.0 10.0 C --- b2 is out of range --- 'SBRDD' 'Rand' 0.0 'Lower' 10 4 8 0 1 0.0 'Upd' 10 10000 -5 5 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 0 0 8 1 1 0.0 'Upd' 10 10000 -5 5 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 10 4 8 5 1 0.0 'Upd' 10 10000 -5 5 'Check' 10.0 10.0 10.0 C --- lda is too small --- 'SBRDD' 'Rand' 0.0 'Lower' 10 4 4 1 1 0.0 'Upd' 10 10000 -7 5 'Check' 10.0 10.0 10.0 C --- drptol is out of range --- 'SBRDD' 'Rand' 0.0 'Lower' 10 4 8 1 1 -1.0 'Upd' 10 10000 -8 5 'Check' 10.0 10.0 10.0 C --- ldu is out of range --- 'SBRDD' 'Rand' 0.0 'Lower' 10 4 8 1 1 0.0 'Upd' 8 10000 -12 5 'Check' 10.0 10.0 10.0 C --- nsteps is negative --- 'SBRDD' 'Rand' 0.0 'Lower' 10 4 8 1 -1 0.0 'Upd' 10 10000 -13 'Check' 10.0 10.0 10.0 C --- sequence of bandwidths is non-decreasing --- 'SBRDD' 'Rand' 0.0 'Lower' 10 4 8 1 4 0.0 'Upd' 10 10000 -14 5 3 2 5 5 5 5 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 10 4 8 1 4 0.0 'Upd' 10 10000 -14 3 5 2 5 5 5 5 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 10 4 8 1 4 0.0 'Upd' 10 10000 -14 3 2 5 5 5 5 5 'Check' 10.0 10.0 10.0 C --- negative blocking factors --- 'SBRDD' 'Rand' 0.0 'Lower' 10 4 8 1 3 0.0 'Upd' 10 10000 -15 3 2 5 -5 5 'Check' 10.0 10.0 10.0 C --- workspace is too small --- 'SBRDD' 'Rand' 0.0 'Lower' 30 15 30 1 1 0.0 'Upd' 30 42 -17 5 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 10 4 8 1 1 0.0 'Upd' 10 8 -17 5 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 30 15 30 1 2 0.0 'Upd' 30 55 -17 8 5 5 'Check' 10.0 10.0 10.0 C ------------------------------------------------------------------------------ C C --- quit --- 'Quit' C SHAR_EOF fi # end of overwriting check if test -f 'data2' then echo shar: will not over-write existing file "'data2'" else cat << "SHAR_EOF" > 'data2' C ----------------------------------------------------------------------------- C - - C - Default input file for timing the SBR toolbox - C - - C ----------------------------------------------------------------------------- C C Author: Bruno Lang C Aachen University of Technology C na.blang@na-net.ornl.gov C Date: May 17, 2000 C Version: SBR Toolbox, Rev. 1.4.1 C C ----------------------------------------------------------------------------- C C For the format of the commands, see the file INCHK C C --- if you are in a hurry, uncomment the following two lines --- C'MaxDim' C800 C --- if you are in a real hurry, uncomment the following two lines --- C'MaxDim' C400 C --- if you want result checking, comment out the following line --- 'NoChecks' C ----------------------------------------------------------------------------- C C --- name of the output file --- C'FileName' C'OUTTIM' C --- set output level --- 'OutputLevel' 3 C ----------------------------------------------------------------------------- C C SYTRD : one-step reduction full -> tridiagonal (LAPACK) C C Parameters in the second line: C 1 : mtype = matrix type (mtype='R' : random, mtype='I' : isda) C 2 : diam = diameter of the eigenvalue clusters (in multiples of macheps; C used only if mtype='I' C 3 : uplo = use upper (uplo='U') or lower triangle (uplo='L') of the C matrix A ? C 4 : n = dimension of the matrix A C 5 : lda = leading dimension of the array a C 6 : nb1 = blocking factor for the reduction (nb1=0 : use default) C 7 : nx1 = cross-over point to non-blocked algorithm for the reduction C (nx1=0 : use default) C 8 : lwork1 = length of the workspace for the reduction C 9 : xinfo1 = expected info value for the routine sytrd C (xinfo1 <> 0 may be used for checking error exits) C 10 : jobu = accumulate the transformations in a matrix U with the C routine orgtr (jobu='U') or not (jobu='N') ? C 11 : nb2 = blocking factor for the accumulation (nb2=0 : use default) C 12 : nx2 = cross-over point to non-blocked algorithm for the accumulation C (nb2=0 : use default) C 13 : lwork2 = length of workspace for the accumulation C 14 : xinfo2 = expected info value for the routine orgtr C (xinfo2 <> 0 may be used for checking error exits) C C Parameters in the third line: C 1 : check = check the results (check='C') or not (check='N') ? C 2 : torthu = threshold for the orthogonality error F-norm( U' * U - I ) C (in multiples of n * macheps); C used only if check='C' and jobu='U' C 3 : tres = threshold for the residual error F-norm( U * A - B * U ) C (in multiples of n * macheps * F-norm( A )); C used only if check='C' and jobu='U' C 4 : tdevls = threshold for the orthogonality error F-norm( U' * U - I ) C (in multiples of n * macheps * F-norm( A )); C used only if check='C' and jobu='N' C C ------------------------------------------------------------------------------ 'Print' '*** Timing the LAPACK reduction full -> tridiagonal ***' 'Print' '' 'Print' ' no update' 'Print' '' 'SYTRD' 'Rand' 0.0 'Lower' 200 200 0 0 1000000 0 'NoU' 0 0 1000000 0 'Check' 10.0 10.0 10.0 'SYTRD' 'Rand' 0.0 'Lower' 400 400 0 0 1000000 0 'NoU' 0 0 1000000 0 'Check' 10.0 10.0 10.0 'SYTRD' 'Rand' 0.0 'Lower' 600 600 0 0 1000000 0 'NoU' 0 0 1000000 0 'Check' 10.0 10.0 10.0 'SYTRD' 'Rand' 0.0 'Lower' 800 800 0 0 1000000 0 'NoU' 0 0 1000000 0 'Check' 10.0 10.0 10.0 'SYTRD' 'Rand' 0.0 'Lower' 1000 1000 0 0 1000000 0 'NoU' 0 0 1000000 0 'Check' 10.0 10.0 10.0 'Print' '' 'Print' ' with update' 'Print' '' 'SYTRD' 'Rand' 0.0 'Lower' 200 200 0 0 1000000 0 'Upd' 0 0 1000000 0 'Check' 10.0 10.0 10.0 'SYTRD' 'Rand' 0.0 'Lower' 400 400 0 0 1000000 0 'Upd' 0 0 1000000 0 'Check' 10.0 10.0 10.0 'SYTRD' 'Rand' 0.0 'Lower' 600 600 0 0 1000000 0 'Upd' 0 0 1000000 0 'Check' 10.0 10.0 10.0 'SYTRD' 'Rand' 0.0 'Lower' 800 800 0 0 1000000 0 'Upd' 0 0 1000000 0 'Check' 10.0 10.0 10.0 'SYTRD' 'Rand' 0.0 'Lower' 1000 1000 0 0 1000000 0 'Upd' 0 0 1000000 0 'Check' 10.0 10.0 10.0 C ------------------------------------------------------------------------------ C C SYRDD : driver routine for the reduction full -> banded/tridiagonal C C Parameters in the second line: C 1 : mtype = matrix type (mtype='R' : random, mtype='I' : isda) C 2 : diam = diameter of the eigenvalue clusters (in multiples of macheps; C used only if mtype='I' C 3 : uplo = use upper (uplo='U') or lower triangle (uplo='L') of the C matrix A ? C 4 : n = dimension of the matrix A C 5 : lda1 = leading dimension of the array a C 6 : b2 = (semi-)bandwidth of the reduced matrix B C 7 : lda2 = leading dimension of the array holding the banded matrix C 8 : nsteps = number of reduction steps C 9 : drptol = threshold for dropping Householder transforms (in multiples C of macheps) C 10 : jobu = accumulate the transformations in a matrix U (jobu='U') or C not (jobu='N') ? C 11 : lwork = length of workspace for the reduction and accumulation C 12 : xinfo = expected info value for the routine syrdb C (xinfo <> 0 may be used for checking error exits) C C If nsteps > 1 then the second line contains the nstep-1 intermediate C bandwidths, and the third line contains the nsteps blocking factors for the C reduction steps. C If nsteps = 1 then the second line contains the blocking factor for the C reduction step (the line specifying intermediate bandwidths is missing). C If nsteps = 0 then no intermediate bandwidths or blocking factors are C specified (so both lines are missing). C C Parameters in the last line: C 1 : check = check the results (check='C') or not (check='N') ? C 2 : torthu = threshold for the orthogonality error F-norm( U' * U - I ) C (in multiples of n * macheps); C used only if check='C' and jobu='U' C 3 : tres = threshold for the residual error F-norm( U * A - B * U ) C (in multiples of n * macheps * F-norm( A )); C used only if check='C' and jobu='U' C 4 : tdevls = threshold for the orthogonality error F-norm( U' * U - I ) C (in multiples of n * macheps * F-norm( A )); C used only if check='C' and jobu='N' C C ------------------------------------------------------------------------------ 'Print' '' 'Print' '*** Timing the SBR driver full -> tridiagonal ***' 'Print' '' 'Print' ' no update' 'Print' '' 'SYRDD' 'Rand' 0.0 'Upper' 200 200 1 2 0 0.0 'NoU' 1000000 1 'Check' 10.0 10.0 10.0 'SYRDD' 'Rand' 0.0 'Upper' 400 400 1 2 0 0.0 'NoU' 1000000 1 'Check' 10.0 10.0 10.0 'SYRDD' 'Rand' 0.0 'Upper' 600 600 1 2 0 0.0 'NoU' 1000000 1 'Check' 10.0 10.0 10.0 'SYRDD' 'Rand' 0.0 'Upper' 800 800 1 2 0 0.0 'NoU' 1000000 1 'Check' 10.0 10.0 10.0 'SYRDD' 'Rand' 0.0 'Upper' 1000 1000 1 2 0 0.0 'NoU' 1000000 1 'Check' 10.0 10.0 10.0 'Print' '' 'Print' ' with update' 'Print' '' 'SYRDD' 'Rand' 0.0 'Upper' 200 200 1 2 0 0.0 'Upd' 1000000 1 'Check' 10.0 10.0 10.0 'SYRDD' 'Rand' 0.0 'Upper' 400 400 1 2 0 0.0 'Upd' 1000000 1 'Check' 10.0 10.0 10.0 'SYRDD' 'Rand' 0.0 'Upper' 600 600 1 2 0 0.0 'Upd' 1000000 1 'Check' 10.0 10.0 10.0 'SYRDD' 'Rand' 0.0 'Upper' 800 800 1 2 0 0.0 'Upd' 1000000 1 'Check' 10.0 10.0 10.0 'SYRDD' 'Rand' 0.0 'Upper' 1000 1000 1 2 0 0.0 'Upd' 1000000 1 'Check' 10.0 10.0 10.0 C ------------------------------------------------------------------------------ C C SBTRD : one-step reduction banded -> tridiagonal (LAPACK) C C Parameters in the second line: C 1 : mtype = matrix type (mtype='R' : random, mtype='I' : isda) C 2 : diam = diameter of the eigenvalue clusters (in multiples of macheps; C used only if mtype='I' C 3 : uplo = use upper (uplo='U') or lower triangle (uplo='L') of the C matrix A ? C 4 : n = dimension of the matrix A C 5 : b1 = (semi-)bandwidth of the banded matrix A C 6 : lda = leading dimension of the array a C 7 : jobu = accumulate the transformations in a matrix U (jobu='U') or C not (jobu='N') ? C 8 : ldu = leading dimension of the array u C 9 : xinfo = expected info value for the routine sbtrd C (xinfo <> 0 may be used for checking error exits) C C Parameters in the third line: C 1 : check = check the results (check='C') or not (check='N') ? C 2 : torthu = threshold for the orthogonality error F-norm( U' * U - I ) C (in multiples of n * macheps); C used only if check='C' and jobu='U' C 3 : tres = threshold for the residual error F-norm( U * A - B * U ) C (in multiples of n * macheps * F-norm( A )); C used only if check='C' and jobu='U' C 4 : tdevls = threshold for the orthogonality error F-norm( U' * U - I ) C (in multiples of n * macheps * F-norm( A )); C used only if check='C' and jobu='N' C C ------------------------------------------------------------------------------ 'Print' '' 'Print' '*** Timing the LAPACK reduction banded -> tridiagonal ***' 'Print' '' 'Print' ' no update' 'Print' '' 'SBTRD' 'Rand' 0.0 'Lower' 200 4 5 'NoU' 200 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 200 8 9 'NoU' 200 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 200 12 13 'NoU' 200 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 200 16 17 'NoU' 200 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 200 24 25 'NoU' 200 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 200 32 33 'NoU' 200 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 200 48 49 'NoU' 200 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 200 64 65 'NoU' 200 0 'Check' 10.0 10.0 10.0 'Print' '' 'SBTRD' 'Rand' 0.0 'Lower' 400 4 5 'NoU' 400 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 400 8 9 'NoU' 400 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 400 12 13 'NoU' 400 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 400 16 17 'NoU' 400 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 400 24 25 'NoU' 400 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 400 32 33 'NoU' 400 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 400 48 49 'NoU' 400 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 400 64 65 'NoU' 400 0 'Check' 10.0 10.0 10.0 'Print' '' 'SBTRD' 'Rand' 0.0 'Lower' 600 4 5 'NoU' 600 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 600 8 9 'NoU' 600 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 600 12 13 'NoU' 600 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 600 16 17 'NoU' 600 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 600 24 25 'NoU' 600 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 600 32 33 'NoU' 600 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 600 48 49 'NoU' 600 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 600 64 65 'NoU' 600 0 'Check' 10.0 10.0 10.0 'Print' '' 'SBTRD' 'Rand' 0.0 'Lower' 800 4 5 'NoU' 800 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 800 8 9 'NoU' 800 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 800 12 13 'NoU' 800 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 800 16 17 'NoU' 800 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 800 24 25 'NoU' 800 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 800 32 33 'NoU' 800 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 800 48 49 'NoU' 800 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 800 64 65 'NoU' 800 0 'Check' 10.0 10.0 10.0 'Print' '' 'SBTRD' 'Rand' 0.0 'Lower' 1000 4 5 'NoU' 1000 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 1000 8 9 'NoU' 1000 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 1000 12 13 'NoU' 1000 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 1000 16 17 'NoU' 1000 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 1000 24 25 'NoU' 1000 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 1000 32 33 'NoU' 1000 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 1000 48 49 'NoU' 1000 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 1000 64 65 'NoU' 1000 0 'Check' 10.0 10.0 10.0 'Print' '' 'Print' ' with update' 'Print' '' 'SBTRD' 'Rand' 0.0 'Lower' 200 4 5 'Upd' 200 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 200 8 9 'Upd' 200 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 200 12 13 'Upd' 200 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 200 16 17 'Upd' 200 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 200 24 25 'Upd' 200 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 200 32 33 'Upd' 200 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 200 48 49 'Upd' 200 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 200 64 65 'Upd' 200 0 'Check' 10.0 10.0 10.0 'Print' '' 'SBTRD' 'Rand' 0.0 'Lower' 400 4 5 'Upd' 400 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 400 8 9 'Upd' 400 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 400 12 13 'Upd' 400 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 400 16 17 'Upd' 400 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 400 24 25 'Upd' 400 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 400 32 33 'Upd' 400 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 400 48 49 'Upd' 400 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 400 64 65 'Upd' 400 0 'Check' 10.0 10.0 10.0 'Print' '' 'SBTRD' 'Rand' 0.0 'Lower' 600 4 5 'Upd' 600 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 600 8 9 'Upd' 600 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 600 12 13 'Upd' 600 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 600 16 17 'Upd' 600 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 600 24 25 'Upd' 600 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 600 32 33 'Upd' 600 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 600 48 49 'Upd' 600 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 600 64 65 'Upd' 600 0 'Check' 10.0 10.0 10.0 'Print' '' 'SBTRD' 'Rand' 0.0 'Lower' 800 4 5 'Upd' 800 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 800 8 9 'Upd' 800 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 800 12 13 'Upd' 800 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 800 16 17 'Upd' 800 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 800 24 25 'Upd' 800 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 800 32 33 'Upd' 800 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 800 48 49 'Upd' 800 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 800 64 65 'Upd' 800 0 'Check' 10.0 10.0 10.0 'Print' '' 'SBTRD' 'Rand' 0.0 'Lower' 1000 4 5 'Upd' 1000 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 1000 8 9 'Upd' 1000 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 1000 12 13 'Upd' 1000 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 1000 16 17 'Upd' 1000 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 1000 24 25 'Upd' 1000 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 1000 32 33 'Upd' 1000 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 1000 48 49 'Upd' 1000 0 'Check' 10.0 10.0 10.0 'SBTRD' 'Rand' 0.0 'Lower' 1000 64 65 'Upd' 1000 0 'Check' 10.0 10.0 10.0 C ------------------------------------------------------------------------------ C C SBRDT : one-step reduction banded -> tridiagonal (SBR) C C Parameters in the second line: C 1 : mtype = matrix type (mtype='R' : random, mtype='I' : isda) C 2 : diam = diameter of the eigenvalue clusters (in multiples of macheps; C used only if mtype='I' C 3 : n = dimension of the matrix A C 4 : b1 = (semi-)bandwidth of the matrix A C 5 : lda = leading dimension of the array a C 6 : drptol = threshold for dropping Householder transforms (in multiples C of macheps) C 7 : nb = blocking factor for the reduction (nb=0 : use default) C 8 : jobu = accumulate the transformations in a matrix U (jobu='U') or C not (jobu='N') ? C 9 : ldu = leading dimension of the array u C 10 : lwork = length of workspace for the reduction and accumulation C 11 : xinfo = expected info value for the routine sbrdt C (xinfo <> 0 may be used for checking error exits) C C Parameters in the third line: C 1 : check = check the results (check='C') or not (check='N') ? C 2 : torthu = threshold for the orthogonality error F-norm( U' * U - I ) C (in multiples of n * macheps); C used only if check='C' and jobu='U' C 3 : tres = threshold for the residual error F-norm( U * A - B * U ) C (in multiples of n * macheps * F-norm( A )); C used only if check='C' and jobu='U' C 4 : tdevls = threshold for the orthogonality error F-norm( U' * U - I ) C (in multiples of n * macheps * F-norm( A )); C used only if check='C' and jobu='N' C C ------------------------------------------------------------------------------ 'Print' '' 'Print' '*** Timing the SBR reduction banded -> tridiagonal ***' 'Print' '' 'Print' ' no update' 'Print' '' 'SBRDT' 'Rand' 0.0 200 4 8 0.0 0 'NoU' 200 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 200 8 16 0.0 0 'NoU' 200 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 200 12 24 0.0 0 'NoU' 200 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 200 16 32 0.0 0 'NoU' 200 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 200 24 48 0.0 0 'NoU' 200 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 200 32 64 0.0 0 'NoU' 200 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 200 48 96 0.0 0 'NoU' 200 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 200 64 128 0.0 0 'NoU' 200 1000000 1 'Check' 10.0 10.0 10.0 'Print' '' 'SBRDT' 'Rand' 0.0 400 4 8 0.0 0 'NoU' 400 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 400 8 16 0.0 0 'NoU' 400 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 400 12 24 0.0 0 'NoU' 400 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 400 16 32 0.0 0 'NoU' 400 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 400 24 48 0.0 0 'NoU' 400 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 400 32 64 0.0 0 'NoU' 400 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 400 48 96 0.0 0 'NoU' 400 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 400 64 128 0.0 0 'NoU' 400 1000000 1 'Check' 10.0 10.0 10.0 'Print' '' 'SBRDT' 'Rand' 0.0 600 4 8 0.0 0 'NoU' 600 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 600 8 16 0.0 0 'NoU' 600 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 600 12 24 0.0 0 'NoU' 600 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 600 16 32 0.0 0 'NoU' 600 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 600 24 48 0.0 0 'NoU' 600 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 600 32 64 0.0 0 'NoU' 600 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 600 48 96 0.0 0 'NoU' 600 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 600 64 128 0.0 0 'NoU' 600 1000000 1 'Check' 10.0 10.0 10.0 'Print' '' 'SBRDT' 'Rand' 0.0 800 4 8 0.0 0 'NoU' 800 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 800 8 16 0.0 0 'NoU' 800 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 800 12 24 0.0 0 'NoU' 800 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 800 16 32 0.0 0 'NoU' 800 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 800 24 48 0.0 0 'NoU' 800 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 800 32 64 0.0 0 'NoU' 800 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 800 48 96 0.0 0 'NoU' 800 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 800 64 128 0.0 0 'NoU' 800 1000000 1 'Check' 10.0 10.0 10.0 'Print' '' 'SBRDT' 'Rand' 0.0 1000 4 8 0.0 0 'NoU' 1000 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 1000 8 16 0.0 0 'NoU' 1000 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 1000 12 24 0.0 0 'NoU' 1000 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 1000 16 32 0.0 0 'NoU' 1000 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 1000 24 48 0.0 0 'NoU' 1000 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 1000 32 64 0.0 0 'NoU' 1000 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 1000 48 96 0.0 0 'NoU' 1000 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 1000 64 128 0.0 0 'NoU' 1000 1000000 1 'Check' 10.0 10.0 10.0 'Print' '' 'Print' ' with update' 'Print' ' *** ignore messages about tests failing because ***' 'Print' ' *** SBRDT returned a wrong (but positive) info ***' 'Print' '' 'SBRDT' 'Rand' 0.0 200 4 8 0.0 0 'Upd' 200 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 200 8 16 0.0 0 'Upd' 200 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 200 12 24 0.0 0 'Upd' 200 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 200 16 32 0.0 0 'Upd' 200 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 200 24 48 0.0 0 'Upd' 200 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 200 32 64 0.0 0 'Upd' 200 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 200 48 96 0.0 0 'Upd' 200 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 200 64 128 0.0 0 'Upd' 200 1000000 1 'Check' 10.0 10.0 10.0 'Print' '' 'SBRDT' 'Rand' 0.0 400 4 8 0.0 0 'Upd' 400 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 400 8 16 0.0 0 'Upd' 400 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 400 12 24 0.0 0 'Upd' 400 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 400 16 32 0.0 0 'Upd' 400 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 400 24 48 0.0 0 'Upd' 400 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 400 32 64 0.0 0 'Upd' 400 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 400 48 96 0.0 0 'Upd' 400 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 400 64 128 0.0 0 'Upd' 400 1000000 1 'Check' 10.0 10.0 10.0 'Print' '' 'SBRDT' 'Rand' 0.0 600 4 8 0.0 0 'Upd' 600 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 600 8 16 0.0 0 'Upd' 600 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 600 12 24 0.0 0 'Upd' 600 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 600 16 32 0.0 0 'Upd' 600 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 600 24 48 0.0 0 'Upd' 600 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 600 32 64 0.0 0 'Upd' 600 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 600 48 96 0.0 0 'Upd' 600 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 600 64 128 0.0 0 'Upd' 600 1000000 1 'Check' 10.0 10.0 10.0 'Print' '' 'SBRDT' 'Rand' 0.0 800 4 8 0.0 0 'Upd' 800 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 800 8 16 0.0 0 'Upd' 800 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 800 12 24 0.0 0 'Upd' 800 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 800 16 32 0.0 0 'Upd' 800 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 800 24 48 0.0 0 'Upd' 800 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 800 32 64 0.0 0 'Upd' 800 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 800 48 96 0.0 0 'Upd' 800 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 800 64 128 0.0 0 'Upd' 800 1000000 1 'Check' 10.0 10.0 10.0 'Print' '' 'SBRDT' 'Rand' 0.0 1000 4 8 0.0 0 'Upd' 1000 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 1000 8 16 0.0 0 'Upd' 1000 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 1000 12 24 0.0 0 'Upd' 1000 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 1000 16 32 0.0 0 'Upd' 1000 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 1000 24 48 0.0 0 'Upd' 1000 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 1000 32 64 0.0 0 'Upd' 1000 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 1000 48 96 0.0 0 'Upd' 1000 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 1000 64 128 0.0 0 'Upd' 1000 1000000 1 'Check' 10.0 10.0 10.0 C ------------------------------------------------------------------------------ C C SBRDD : driver routine for the reduction banded -> banded/tridiagonal C C Parameters in the second line: C 1 : mtype = matrix type (mtype='R' : random, mtype='I' : isda) C 2 : diam = diameter of the eigenvalue clusters (in multiples of macheps; C used only if mtype='I' C 3 : uplo = use upper (uplo='U') or lower triangle (uplo='L') of the C matrix A ? C 4 : n = dimension of the matrix A C 5 : b1 = (semi-)bandwidth of the matrix A C 6 : lda = leading dimension of the array a C 7 : b2 = (seim-)bandwidth of the reduced matrix B C 8 : nsteps = number of reduction steps C 9 : drptol = threshold for dropping Householder transforms (in multiples C of macheps) C 10 : jobu = accumulate the transformations in a matrix U (jobu='U') or C not (jobu='N') ? C 11 : ldu = leading dimension of the array u C 12 : lwork = length of workspace for the reduction and accumulation C 13 : xinfo = expected info value for the routine syrdb C (xinfo <> 0 may be used for checking error exits) C C If nsteps > 1 then the second line contains the nstep-1 intermediate C bandwidths, and the third line contains the nsteps blocking factors for the C reduction steps. C If nsteps = 1 then the second line contains the blocking factor for the C reduction step (the line specifying intermediate bandwidths is missing). C If nsteps = 0 then no intermediate bandwidths or blocking factors are C specified (so both lines are missing). C C Parameters in the last line: C 1 : check = check the results (check='C') or not (check='N') ? C 2 : torthu = threshold for the orthogonality error F-norm( U' * U - I ) C (in multiples of n * macheps); C used only if check='C' and jobu='U' C 3 : tres = threshold for the residual error F-norm( U * A - B * U ) C (in multiples of n * macheps * F-norm( A )); C used only if check='C' and jobu='U' C 4 : tdevls = threshold for the orthogonality error F-norm( U' * U - I ) C (in multiples of n * macheps * F-norm( A )); C used only if check='C' and jobu='N' C C ------------------------------------------------------------------------------ 'Print' '' 'Print' '*** Timing the SBR driver banded -> tridiagonal ***' 'Print' '' 'Print' ' no update' 'Print' '' 'SBRDD' 'Rand' 0.0 'Lower' 200 4 8 1 0 0.0 'NoU' 200 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 200 8 16 1 0 0.0 'NoU' 200 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 200 12 24 1 0 0.0 'NoU' 200 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 200 16 32 1 0 0.0 'NoU' 200 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 200 24 48 1 0 0.0 'NoU' 200 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 200 32 64 1 0 0.0 'NoU' 200 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 200 48 96 1 0 0.0 'NoU' 200 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 200 64 128 1 0 0.0 'NoU' 200 1000000 1 'Check' 10.0 10.0 10.0 'Print' '' 'SBRDD' 'Rand' 0.0 'Lower' 400 4 8 1 0 0.0 'NoU' 400 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 400 8 16 1 0 0.0 'NoU' 400 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 400 12 24 1 0 0.0 'NoU' 400 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 400 16 32 1 0 0.0 'NoU' 400 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 400 24 48 1 0 0.0 'NoU' 400 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 400 32 64 1 0 0.0 'NoU' 400 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 400 48 96 1 0 0.0 'NoU' 400 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 400 64 128 1 0 0.0 'NoU' 400 1000000 1 'Check' 10.0 10.0 10.0 'Print' '' 'SBRDD' 'Rand' 0.0 'Lower' 600 4 8 1 0 0.0 'NoU' 600 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 600 8 16 1 0 0.0 'NoU' 600 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 600 12 24 1 0 0.0 'NoU' 600 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 600 16 32 1 0 0.0 'NoU' 600 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 600 24 48 1 0 0.0 'NoU' 600 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 600 32 64 1 0 0.0 'NoU' 600 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 600 48 96 1 0 0.0 'NoU' 600 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 600 64 128 1 0 0.0 'NoU' 600 1000000 1 'Check' 10.0 10.0 10.0 'Print' '' 'SBRDD' 'Rand' 0.0 'Lower' 800 4 8 1 0 0.0 'NoU' 800 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 800 8 16 1 0 0.0 'NoU' 800 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 800 12 24 1 0 0.0 'NoU' 800 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 800 16 32 1 0 0.0 'NoU' 800 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 800 24 48 1 0 0.0 'NoU' 800 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 800 32 64 1 0 0.0 'NoU' 800 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 800 48 96 1 0 0.0 'NoU' 800 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 800 64 128 1 0 0.0 'NoU' 800 1000000 1 'Check' 10.0 10.0 10.0 'Print' '' 'SBRDD' 'Rand' 0.0 'Lower' 1000 4 8 1 0 0.0 'NoU' 1000 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 1000 8 16 1 0 0.0 'NoU' 1000 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 1000 12 24 1 0 0.0 'NoU' 1000 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 1000 16 32 1 0 0.0 'NoU' 1000 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 1000 24 48 1 0 0.0 'NoU' 1000 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 1000 32 64 1 0 0.0 'NoU' 1000 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 1000 48 96 1 0 0.0 'NoU' 1000 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 1000 64 128 1 0 0.0 'NoU' 1000 1000000 1 'Check' 10.0 10.0 10.0 'Print' '' 'Print' ' with update' 'Print' '' 'SBRDD' 'Rand' 0.0 'Lower' 200 4 8 1 0 0.0 'NoU' 200 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 200 8 16 1 0 0.0 'NoU' 200 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 200 12 24 1 0 0.0 'NoU' 200 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 200 16 32 1 0 0.0 'NoU' 200 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 200 24 48 1 0 0.0 'NoU' 200 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 200 32 64 1 0 0.0 'NoU' 200 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 200 48 96 1 0 0.0 'NoU' 200 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 200 64 128 1 0 0.0 'NoU' 200 1000000 1 'Check' 10.0 10.0 10.0 'Print' '' 'SBRDD' 'Rand' 0.0 'Lower' 400 4 8 1 0 0.0 'NoU' 400 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 400 8 16 1 0 0.0 'NoU' 400 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 400 12 24 1 0 0.0 'NoU' 400 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 400 16 32 1 0 0.0 'NoU' 400 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 400 24 48 1 0 0.0 'NoU' 400 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 400 32 64 1 0 0.0 'NoU' 400 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 400 48 96 1 0 0.0 'NoU' 400 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 400 64 128 1 0 0.0 'NoU' 400 1000000 1 'Check' 10.0 10.0 10.0 'Print' '' 'SBRDD' 'Rand' 0.0 'Lower' 600 4 8 1 0 0.0 'NoU' 600 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 600 8 16 1 0 0.0 'NoU' 600 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 600 12 24 1 0 0.0 'NoU' 600 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 600 16 32 1 0 0.0 'NoU' 600 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 600 24 48 1 0 0.0 'NoU' 600 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 600 32 64 1 0 0.0 'NoU' 600 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 600 48 96 1 0 0.0 'NoU' 600 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 600 64 128 1 0 0.0 'NoU' 600 1000000 1 'Check' 10.0 10.0 10.0 'Print' '' 'SBRDD' 'Rand' 0.0 'Lower' 800 4 8 1 0 0.0 'NoU' 800 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 800 8 16 1 0 0.0 'NoU' 800 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 800 12 24 1 0 0.0 'NoU' 800 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 800 16 32 1 0 0.0 'NoU' 800 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 800 24 48 1 0 0.0 'NoU' 800 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 800 32 64 1 0 0.0 'NoU' 800 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 800 48 96 1 0 0.0 'NoU' 800 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 800 64 128 1 0 0.0 'NoU' 800 1000000 1 'Check' 10.0 10.0 10.0 'Print' '' 'SBRDD' 'Rand' 0.0 'Lower' 1000 4 8 1 0 0.0 'NoU' 1000 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 1000 8 16 1 0 0.0 'NoU' 1000 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 1000 12 24 1 0 0.0 'NoU' 1000 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 1000 16 32 1 0 0.0 'NoU' 1000 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 1000 24 48 1 0 0.0 'NoU' 1000 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 1000 32 64 1 0 0.0 'NoU' 1000 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 1000 48 96 1 0 0.0 'NoU' 1000 1000000 1 'Check' 10.0 10.0 10.0 'SBRDD' 'Rand' 0.0 'Lower' 1000 64 128 1 0 0.0 'NoU' 1000 1000000 1 'Check' 10.0 10.0 10.0 C ------------------------------------------------------------------------------ C C --- quit --- 'Quit' C SHAR_EOF fi # end of overwriting check if test -f 'data3' then echo shar: will not over-write existing file "'data3'" else cat << "SHAR_EOF" > 'data3' C ----------------------------------------------------------------------------- C - - C - Default input file for tuning the SBR toolbox - C - - C ----------------------------------------------------------------------------- C C Author: Bruno Lang C Aachen University of Technology C na.blang@na-net.ornl.gov C Date: May 17, 2000 C Version: SBR Toolbox, Rev. 1.4.1 C C ----------------------------------------------------------------------------- C C For the format of the commands, see the file INCHK C C --- if you are in a hurry, uncomment the following two lines --- C'MaxDim' C400 C --- if you are in a real hurry, uncomment the following two lines --- C'MaxDim' C200 C --- if you want result checking, comment out