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 the following line --- 'NoChecks' C ----------------------------------------------------------------------------- C C --- name of the output file --- C'FileName' C'OUTTUN1' C --- set output level --- 'OutputLevel' 2 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 ------------------------------------------------------------------------------ 'Print' '*** Setting nb for SYRDB ***' 'Print' '' 'Print' ' no update' 'Print' '' 'SYRDB' 'Rand' 0.0 'Lower' 200 200 64 0.0 1 1000000 1 'NoU' 200 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 200 200 64 0.0 4 1000000 4 'NoU' 200 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 200 200 64 0.0 6 1000000 6 'NoU' 200 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 200 200 64 0.0 8 1000000 8 'NoU' 200 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 200 200 64 0.0 12 1000000 12 'NoU' 200 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 200 200 64 0.0 16 1000000 16 'NoU' 200 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 200 200 64 0.0 20 1000000 20 'NoU' 200 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 200 200 64 0.0 24 1000000 24 'NoU' 200 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 200 200 64 0.0 32 1000000 32 'NoU' 200 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 200 200 64 0.0 40 1000000 40 'NoU' 200 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 200 200 64 0.0 48 1000000 48 'NoU' 200 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 200 200 64 0.0 64 1000000 64 'NoU' 200 1000000 1 'Check' 10.0 10.0 10.0 'Print' '' 'SYRDB' 'Rand' 0.0 'Lower' 400 400 64 0.0 1 1000000 1 'NoU' 400 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 400 400 64 0.0 4 1000000 4 'NoU' 400 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 400 400 64 0.0 6 1000000 6 'NoU' 400 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 400 400 64 0.0 8 1000000 8 'NoU' 400 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 400 400 64 0.0 12 1000000 12 'NoU' 400 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 400 400 64 0.0 16 1000000 16 'NoU' 400 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 400 400 64 0.0 20 1000000 20 'NoU' 400 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 400 400 64 0.0 24 1000000 24 'NoU' 400 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 400 400 64 0.0 32 1000000 32 'NoU' 400 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 400 400 64 0.0 40 1000000 40 'NoU' 400 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 400 400 64 0.0 48 1000000 48 'NoU' 400 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 400 400 64 0.0 64 1000000 64 'NoU' 400 1000000 1 'Check' 10.0 10.0 10.0 'Print' '' 'SYRDB' 'Rand' 0.0 'Lower' 600 600 64 0.0 1 1000000 1 'NoU' 600 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 600 600 64 0.0 4 1000000 4 'NoU' 600 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 600 600 64 0.0 6 1000000 6 'NoU' 600 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 600 600 64 0.0 8 1000000 8 'NoU' 600 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 600 600 64 0.0 12 1000000 12 'NoU' 600 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 600 600 64 0.0 16 1000000 16 'NoU' 600 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 600 600 64 0.0 20 1000000 20 'NoU' 600 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 600 600 64 0.0 24 1000000 24 'NoU' 600 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 600 600 64 0.0 32 1000000 32 'NoU' 600 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 600 600 64 0.0 40 1000000 40 'NoU' 600 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 600 600 64 0.0 48 1000000 48 'NoU' 600 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 600 600 64 0.0 64 1000000 64 'NoU' 600 1000000 1 'Check' 10.0 10.0 10.0 'Print' '' 'Print' ' with update' 'Print' '' 'SYRDB' 'Rand' 0.0 'Lower' 200 200 64 0.0 1 1000000 1 'OnF' 200 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 200 200 64 0.0 4 1000000 4 'OnF' 200 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 200 200 64 0.0 6 1000000 6 'OnF' 200 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 200 200 64 0.0 8 1000000 8 'OnF' 200 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 200 200 64 0.0 12 1000000 12 'OnF' 200 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 200 200 64 0.0 16 1000000 16 'OnF' 200 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 200 200 64 0.0 20 1000000 20 'OnF' 200 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 200 200 64 0.0 24 1000000 24 'OnF' 200 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 200 200 64 0.0 32 1000000 32 'OnF' 200 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 200 200 64 0.0 40 1000000 40 'OnF' 200 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 200 200 64 0.0 48 1000000 48 'OnF' 200 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 200 200 64 0.0 64 1000000 64 'OnF' 200 1000000 1 'Check' 10.0 10.0 10.0 'Print' '' 'SYRDB' 'Rand' 0.0 'Lower' 400 400 64 0.0 1 1000000 1 'OnF' 400 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 400 400 64 0.0 4 1000000 4 'OnF' 400 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 400 400 64 0.0 6 1000000 6 'OnF' 400 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 400 400 64 0.0 8 1000000 8 'OnF' 400 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 400 400 64 0.0 12 1000000 12 'OnF' 400 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 400 400 64 0.0 16 1000000 16 'OnF' 400 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 400 400 64 0.0 20 1000000 20 'OnF' 400 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 400 400 64 0.0 24 1000000 24 'OnF' 400 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 400 400 64 0.0 32 1000000 32 'OnF' 400 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 400 400 64 0.0 40 1000000 40 'OnF' 400 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 400 400 64 0.0 48 1000000 48 'OnF' 400 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 400 400 64 0.0 64 1000000 64 'OnF' 400 1000000 1 'Check' 10.0 10.0 10.0 'Print' '' 'SYRDB' 'Rand' 0.0 'Lower' 600 600 64 0.0 1 1000000 1 'OnF' 600 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 600 600 64 0.0 4 1000000 4 'OnF' 600 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 600 600 64 0.0 6 1000000 6 'OnF' 600 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 600 600 64 0.0 8 1000000 8 'OnF' 600 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 600 600 64 0.0 12 1000000 12 'OnF' 600 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 600 600 64 0.0 16 1000000 16 'OnF' 600 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 600 600 64 0.0 20 1000000 20 'OnF' 600 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 600 600 64 0.0 24 1000000 24 'OnF' 600 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 600 600 64 0.0 32 1000000 32 'OnF' 600 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 600 600 64 0.0 40 1000000 40 'OnF' 600 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 600 600 64 0.0 48 1000000 48 'OnF' 600 1000000 1 'Check' 10.0 10.0 10.0 'SYRDB' 'Rand' 0.0 'Lower' 600 600 64 0.0 64 1000000 64 'OnF' 600 1000000 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 ------------------------------------------------------------------------------ 'Print' '' 'Print' '*** Setting nb for SBRDB ***' 'Print' '' 'Print' ' no update' 'Print' '' 'SBRDB' 'Rand' 0.0 200 16 32 8 0.0 1 'NoU' 200 1000000 1 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 200 16 32 8 0.0 4 'NoU' 200 1000000 4 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 200 16 32 8 0.0 6 'NoU' 200 1000000 6 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 200 16 32 8 0.0 8 'NoU' 200 1000000 8 'Check' 10.0 10.0 10.0 'Print' '' 'SBRDB' 'Rand' 0.0 200 32 64 16 0.0 1 'NoU' 200 1000000 1 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 200 32 64 16 0.0 4 'NoU' 200 1000000 4 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 200 32 64 16 0.0 6 'NoU' 200 1000000 6 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 200 32 64 16 0.0 8 'NoU' 200 1000000 8 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 200 32 64 16 0.0 10 'NoU' 200 1000000 10 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 200 32 64 16 0.0 12 'NoU' 200 1000000 12 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 200 32 64 16 0.0 16 'NoU' 200 1000000 16 'Check' 10.0 10.0 10.0 'Print' '' 'SBRDB' 'Rand' 0.0 200 64 128 32 0.0 1 'NoU' 200 1000000 1 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 200 64 128 32 0.0 4 'NoU' 200 1000000 4 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 200 64 128 32 0.0 6 'NoU' 200 1000000 6 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 200 64 128 32 0.0 8 'NoU' 200 1000000 8 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 200 64 128 32 0.0 10 'NoU' 200 1000000 10 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 200 64 128 32 0.0 12 'NoU' 200 1000000 12 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 200 64 128 32 0.0 16 'NoU' 200 1000000 16 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 200 64 128 32 0.0 20 'NoU' 200 1000000 20 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 200 64 128 32 0.0 24 'NoU' 200 1000000 24 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 200 64 128 32 0.0 32 'NoU' 200 1000000 32 'Check' 10.0 10.0 10.0 'Print' '' 'SBRDB' 'Rand' 0.0 400 16 32 8 0.0 1 'NoU' 400 1000000 1 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 400 16 32 8 0.0 4 'NoU' 400 1000000 4 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 400 16 32 8 0.0 6 'NoU' 400 1000000 6 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 400 16 32 8 0.0 8 'NoU' 400 1000000 8 'Check' 10.0 10.0 10.0 'Print' '' 'SBRDB' 'Rand' 0.0 400 32 64 16 0.0 1 'NoU' 400 1000000 1 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 400 32 64 16 0.0 4 'NoU' 400 1000000 4 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 400 32 64 16 0.0 6 'NoU' 400 1000000 6 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 400 32 64 16 0.0 8 'NoU' 400 1000000 8 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 400 32 64 16 0.0 10 'NoU' 400 1000000 10 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 400 32 64 16 0.0 12 'NoU' 400 1000000 12 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 400 32 64 16 0.0 16 'NoU' 400 1000000 16 'Check' 10.0 10.0 10.0 'Print' '' 'SBRDB' 'Rand' 0.0 400 64 128 32 0.0 1 'NoU' 400 1000000 1 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 400 64 128 32 0.0 4 'NoU' 400 1000000 4 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 400 64 128 32 0.0 6 'NoU' 400 1000000 6 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 400 64 128 32 0.0 8 'NoU' 400 1000000 8 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 400 64 128 32 0.0 10 'NoU' 400 1000000 10 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 400 64 128 32 0.0 12 'NoU' 400 1000000 12 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 400 64 128 32 0.0 16 'NoU' 400 1000000 16 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 400 64 128 32 0.0 20 'NoU' 400 1000000 20 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 400 64 128 32 0.0 24 'NoU' 400 1000000 24 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 400 64 128 32 0.0 32 'NoU' 400 1000000 32 'Check' 10.0 10.0 10.0 'Print' '' 'SBRDB' 'Rand' 0.0 600 16 32 8 0.0 1 'NoU' 600 1000000 1 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 600 16 32 8 0.0 4 'NoU' 600 1000000 4 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 600 16 32 8 0.0 6 'NoU' 600 1000000 6 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 600 16 32 8 0.0 8 'NoU' 600 1000000 8 'Check' 10.0 10.0 10.0 'Print' '' 'SBRDB' 'Rand' 0.0 600 32 64 16 0.0 1 'NoU' 600 1000000 1 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 600 32 64 16 0.0 4 'NoU' 600 1000000 4 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 600 32 64 16 0.0 6 'NoU' 600 1000000 6 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 600 32 64 16 0.0 8 'NoU' 600 1000000 8 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 600 32 64 16 0.0 10 'NoU' 600 1000000 10 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 600 32 64 16 0.0 12 'NoU' 600 1000000 12 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 600 32 64 16 0.0 16 'NoU' 600 1000000 16 'Check' 10.0 10.0 10.0 'Print' '' 'SBRDB' 'Rand' 0.0 600 64 128 32 0.0 1 'NoU' 600 1000000 1 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 600 64 128 32 0.0 4 'NoU' 600 1000000 4 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 600 64 128 32 0.0 6 'NoU' 600 1000000 6 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 600 64 128 32 0.0 8 'NoU' 600 1000000 8 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 600 64 128 32 0.0 10 'NoU' 600 1000000 10 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 600 64 128 32 0.0 12 'NoU' 600 1000000 12 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 600 64 128 32 0.0 16 'NoU' 600 1000000 16 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 600 64 128 32 0.0 20 'NoU' 600 1000000 20 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 600 64 128 32 0.0 24 'NoU' 600 1000000 24 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 600 64 128 32 0.0 32 'NoU' 600 1000000 32 'Check' 10.0 10.0 10.0 'Print' '' 'Print' ' with update' 'Print' '' 'SBRDB' 'Rand' 0.0 200 16 32 8 0.0 1 'Upd' 200 1000000 1 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 200 16 32 8 0.0 4 'Upd' 200 1000000 4 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 200 16 32 8 0.0 6 'Upd' 200 1000000 6 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 200 16 32 8 0.0 8 'Upd' 200 1000000 8 'Check' 10.0 10.0 10.0 'Print' '' 'SBRDB' 'Rand' 0.0 200 32 64 16 0.0 1 'Upd' 200 1000000 1 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 200 32 64 16 0.0 4 'Upd' 200 1000000 4 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 200 32 64 16 0.0 6 'Upd' 200 1000000 6 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 200 32 64 16 0.0 8 'Upd' 200 1000000 8 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 200 32 64 16 0.0 10 'Upd' 200 1000000 10 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 200 32 64 16 0.0 12 'Upd' 200 1000000 12 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 200 32 64 16 0.0 16 'Upd' 200 1000000 16 'Check' 10.0 10.0 10.0 'Print' '' 'SBRDB' 'Rand' 0.0 200 64 128 32 0.0 1 'Upd' 200 1000000 1 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 200 64 128 32 0.0 4 'Upd' 200 1000000 4 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 200 64 128 32 0.0 6 'Upd' 200 1000000 6 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 200 64 128 32 0.0 8 'Upd' 200 1000000 8 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 200 64 128 32 0.0 10 'Upd' 200 1000000 10 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 200 64 128 32 0.0 12 'Upd' 200 1000000 12 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 200 64 128 32 0.0 16 'Upd' 200 1000000 16 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 200 64 128 32 0.0 20 'Upd' 200 1000000 20 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 200 64 128 32 0.0 24 'Upd' 200 1000000 24 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 200 64 128 32 0.0 32 'Upd' 200 1000000 32 'Check' 10.0 10.0 10.0 'Print' '' 'SBRDB' 'Rand' 0.0 400 16 32 8 0.0 1 'Upd' 400 1000000 1 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 400 16 32 8 0.0 4 'Upd' 400 1000000 4 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 400 16 32 8 0.0 6 'Upd' 400 1000000 6 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 400 16 32 8 0.0 8 'Upd' 400 1000000 8 'Check' 10.0 10.0 10.0 'Print' '' 'SBRDB' 'Rand' 0.0 400 32 64 16 0.0 1 'Upd' 400 1000000 1 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 400 32 64 16 0.0 4 'Upd' 400 1000000 4 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 400 32 64 16 0.0 6 'Upd' 400 1000000 6 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 400 32 64 16 0.0 8 'Upd' 400 1000000 8 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 400 32 64 16 0.0 10 'Upd' 400 1000000 10 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 400 32 64 16 0.0 12 'Upd' 400 1000000 12 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 400 32 64 16 0.0 16 'Upd' 400 1000000 16 'Check' 10.0 10.0 10.0 'Print' '' 'SBRDB' 'Rand' 0.0 400 64 128 32 0.0 1 'Upd' 400 1000000 1 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 400 64 128 32 0.0 4 'Upd' 400 1000000 4 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 400 64 128 32 0.0 6 'Upd' 400 1000000 6 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 400 64 128 32 0.0 8 'Upd' 400 1000000 8 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 400 64 128 32 0.0 10 'Upd' 400 1000000 10 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 400 64 128 32 0.0 12 'Upd' 400 1000000 12 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 400 64 128 32 0.0 16 'Upd' 400 1000000 16 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 400 64 128 32 0.0 20 'Upd' 400 1000000 20 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 400 64 128 32 0.0 24 'Upd' 400 1000000 24 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 400 64 128 32 0.0 32 'Upd' 400 1000000 32 'Check' 10.0 10.0 10.0 'Print' '' 'SBRDB' 'Rand' 0.0 600 16 32 8 0.0 1 'Upd' 600 1000000 1 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 600 16 32 8 0.0 4 'Upd' 600 1000000 4 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 600 16 32 8 0.0 6 'Upd' 600 1000000 6 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 600 16 32 8 0.0 8 'Upd' 600 1000000 8 'Check' 10.0 10.0 10.0 'Print' '' 'SBRDB' 'Rand' 0.0 600 32 64 16 0.0 1 'Upd' 600 1000000 1 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 600 32 64 16 0.0 4 'Upd' 600 1000000 4 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 600 32 64 16 0.0 6 'Upd' 600 1000000 6 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 600 32 64 16 0.0 8 'Upd' 600 1000000 8 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 600 32 64 16 0.0 10 'Upd' 600 1000000 10 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 600 32 64 16 0.0 12 'Upd' 600 1000000 12 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 600 32 64 16 0.0 16 'Upd' 600 1000000 16 'Check' 10.0 10.0 10.0 'Print' '' 'SBRDB' 'Rand' 0.0 600 64 128 32 0.0 1 'Upd' 600 1000000 1 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 600 64 128 32 0.0 4 'Upd' 600 1000000 4 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 600 64 128 32 0.0 6 'Upd' 600 1000000 6 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 600 64 128 32 0.0 8 'Upd' 600 1000000 8 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 600 64 128 32 0.0 10 'Upd' 600 1000000 10 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 600 64 128 32 0.0 12 'Upd' 600 1000000 12 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 600 64 128 32 0.0 16 'Upd' 600 1000000 16 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 600 64 128 32 0.0 20 'Upd' 600 1000000 20 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 600 64 128 32 0.0 24 'Upd' 600 1000000 24 'Check' 10.0 10.0 10.0 'SBRDB' 'Rand' 0.0 600 64 128 32 0.0 32 'Upd' 600 1000000 32 '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' '*** Setting nb for SBRDT ***' 'Print' '' 'Print' ' with update' 'Print' '' 'SBRDT' 'Rand' 0.0 200 8 16 0.0 1 'Upd' 200 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 200 8 16 0.0 4 'Upd' 200 1000000 4 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 200 8 16 0.0 6 'Upd' 200 1000000 6 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 200 8 16 0.0 8 'Upd' 200 1000000 8 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 200 8 16 0.0 10 'Upd' 200 1000000 10 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 200 8 16 0.0 12 'Upd' 200 1000000 12 'Check' 10.0 10.0 10.0 'Print' '' 'SBRDT' 'Rand' 0.0 200 16 32 0.0 1 'Upd' 200 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 200 16 32 0.0 4 'Upd' 200 1000000 4 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 200 16 32 0.0 6 'Upd' 200 1000000 6 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 200 16 32 0.0 8 'Upd' 200 1000000 8 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 200 16 32 0.0 10 'Upd' 200 1000000 10 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 200 16 32 0.0 12 'Upd' 200 1000000 12 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 200 16 32 0.0 16 'Upd' 200 1000000 16 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 200 16 32 0.0 20 'Upd' 200 1000000 20 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 200 16 32 0.0 24 'Upd' 200 1000000 24 'Check' 10.0 10.0 10.0 'Print' '' 'SBRDT' 'Rand' 0.0 200 32 64 0.0 1 'Upd' 200 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 200 32 64 0.0 4 'Upd' 200 1000000 4 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 200 32 64 0.0 6 'Upd' 200 1000000 6 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 200 32 64 0.0 8 'Upd' 200 1000000 8 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 200 32 64 0.0 10 'Upd' 200 1000000 10 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 200 32 64 0.0 12 'Upd' 200 1000000 12 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 200 32 64 0.0 16 'Upd' 200 1000000 16 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 200 32 64 0.0 20 'Upd' 200 1000000 20 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 200 32 64 0.0 32 'Upd' 200 1000000 32 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 200 32 64 0.0 40 'Upd' 200 1000000 40 'Check' 10.0 10.0 10.0 'Print' '' 'SBRDT' 'Rand' 0.0 400 8 16 0.0 1 'Upd' 400 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 400 8 16 0.0 4 'Upd' 400 1000000 4 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 400 8 16 0.0 6 'Upd' 400 1000000 6 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 400 8 16 0.0 8 'Upd' 400 1000000 8 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 400 8 16 0.0 10 'Upd' 400 1000000 10 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 400 8 16 0.0 12 'Upd' 400 1000000 12 'Check' 10.0 10.0 10.0 'Print' '' 'SBRDT' 'Rand' 0.0 400 16 32 0.0 1 'Upd' 400 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 400 16 32 0.0 4 'Upd' 400 1000000 4 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 400 16 32 0.0 6 'Upd' 400 1000000 6 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 400 16 32 0.0 8 'Upd' 400 1000000 8 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 400 16 32 0.0 10 'Upd' 400 1000000 10 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 400 16 32 0.0 12 'Upd' 400 1000000 12 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 400 16 32 0.0 16 'Upd' 400 1000000 16 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 400 16 32 0.0 20 'Upd' 400 1000000 20 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 400 16 32 0.0 24 'Upd' 400 1000000 24 'Check' 10.0 10.0 10.0 'Print' '' 'SBRDT' 'Rand' 0.0 400 32 64 0.0 1 'Upd' 400 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 400 32 64 0.0 4 'Upd' 400 1000000 4 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 400 32 64 0.0 6 'Upd' 400 1000000 6 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 400 32 64 0.0 8 'Upd' 400 1000000 8 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 400 32 64 0.0 10 'Upd' 400 1000000 10 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 400 32 64 0.0 12 'Upd' 400 1000000 12 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 400 32 64 0.0 16 'Upd' 400 1000000 16 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 400 32 64 0.0 20 'Upd' 400 1000000 20 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 400 32 64 0.0 32 'Upd' 400 1000000 32 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 400 32 64 0.0 40 'Upd' 400 1000000 40 'Check' 10.0 10.0 10.0 'Print' '' 'SBRDT' 'Rand' 0.0 600 8 16 0.0 1 'Upd' 600 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 600 8 16 0.0 4 'Upd' 600 1000000 4 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 600 8 16 0.0 6 'Upd' 600 1000000 6 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 600 8 16 0.0 8 'Upd' 600 1000000 8 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 600 8 16 0.0 10 'Upd' 600 1000000 10 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 600 8 16 0.0 12 'Upd' 600 1000000 12 'Check' 10.0 10.0 10.0 'Print' '' 'SBRDT' 'Rand' 0.0 600 16 32 0.0 1 'Upd' 600 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 600 16 32 0.0 4 'Upd' 600 1000000 4 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 600 16 32 0.0 6 'Upd' 600 1000000 6 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 600 16 32 0.0 8 'Upd' 600 1000000 8 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 600 16 32 0.0 10 'Upd' 600 1000000 10 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 600 16 32 0.0 12 'Upd' 600 1000000 12 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 600 16 32 0.0 16 'Upd' 600 1000000 16 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 600 16 32 0.0 20 'Upd' 600 1000000 20 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 600 16 32 0.0 24 'Upd' 600 1000000 24 'Check' 10.0 10.0 10.0 'Print' '' 'SBRDT' 'Rand' 0.0 600 32 64 0.0 1 'Upd' 600 1000000 1 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 600 32 64 0.0 4 'Upd' 600 1000000 4 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 600 32 64 0.0 6 'Upd' 600 1000000 6 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 600 32 64 0.0 8 'Upd' 600 1000000 8 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 600 32 64 0.0 10 'Upd' 600 1000000 10 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 600 32 64 0.0 12 'Upd' 600 1000000 12 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 600 32 64 0.0 16 'Upd' 600 1000000 16 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 600 32 64 0.0 20 'Upd' 600 1000000 20 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 600 32 64 0.0 32 'Upd' 600 1000000 32 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 600 32 64 0.0 40 'Upd' 600 1000000 40 'Check' 10.0 10.0 10.0 C ------------------------------------------------------------------------------ C C --- quit --- 'Quit' C SHAR_EOF fi # end of overwriting check if test -f 'data4' then echo shar: will not over-write existing file "'data4'" else cat << "SHAR_EOF" > 'data4' 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 the following line --- 'NoChecks' C ----------------------------------------------------------------------------- C C --- name of the output file --- C'FileName' C'OUTTUN2' C --- set output level --- 'OutputLevel' 2 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' '*** Setting intermediate bandwidth for SYRDD ***' 'Print' '' 'Print' ' no update' 'Print' '' 'Print' 'one-step (b=1):' 'SYRDD' 'Rand' 0.0 'Lower' 200 200 1 2 1 0.0 'NoU' 1000000 1 0 'Check' 10.0 10.0 10.0 'Print' 'b=12:' 'SYRDD' 'Rand' 0.0 'Lower' 200 200 1 24 2 0.0 'NoU' 1000000 1 12 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=16:' 'SYRDD' 'Rand' 0.0 'Lower' 200 200 1 32 2 0.0 'NoU' 1000000 1 16 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=20:' 'SYRDD' 'Rand' 0.0 'Lower' 200 200 1 40 2 0.0 'NoU' 1000000 1 20 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=24:' 'SYRDD' 'Rand' 0.0 'Lower' 200 200 1 48 2 0.0 'NoU' 1000000 1 24 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=32:' 'SYRDD' 'Rand' 0.0 'Lower' 200 200 1 64 2 0.0 'NoU' 1000000 1 32 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=40:' 'SYRDD' 'Rand' 0.0 'Lower' 200 200 1 80 2 0.0 'NoU' 1000000 1 40 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=48:' 'SYRDD' 'Rand' 0.0 'Lower' 200 200 1 96 2 0.0 'NoU' 1000000 1 48 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=64:' 'SYRDD' 'Rand' 0.0 'Lower' 200 200 1 128 2 0.0 'NoU' 1000000 1 64 0 0 'Check' 10.0 10.0 10.0 'Print' '' 'Print' 'one-step (b=1):' 'SYRDD' 'Rand' 0.0 'Lower' 400 400 1 2 1 0.0 'NoU' 1000000 1 0 'Check' 10.0 10.0 10.0 'Print' 'b=12:' 'SYRDD' 'Rand' 0.0 'Lower' 400 400 1 24 2 0.0 'NoU' 1000000 1 12 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=16:' 'SYRDD' 'Rand' 0.0 'Lower' 400 400 1 32 2 0.0 'NoU' 1000000 1 16 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=20:' 'SYRDD' 'Rand' 0.0 'Lower' 400 400 1 40 2 0.0 'NoU' 1000000 1 20 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=24:' 'SYRDD' 'Rand' 0.0 'Lower' 400 400 1 48 2 0.0 'NoU' 1000000 1 24 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=32:' 'SYRDD' 'Rand' 0.0 'Lower' 400 400 1 64 2 0.0 'NoU' 1000000 1 32 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=40:' 'SYRDD' 'Rand' 0.0 'Lower' 400 400 1 80 2 0.0 'NoU' 1000000 1 40 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=48:' 'SYRDD' 'Rand' 0.0 'Lower' 400 400 1 96 2 0.0 'NoU' 1000000 1 48 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=64:' 'SYRDD' 'Rand' 0.0 'Lower' 400 400 1 128 2 0.0 'NoU' 1000000 1 64 0 0 'Check' 10.0 10.0 10.0 'Print' '' 'Print' 'one-step (b=1):' 'SYRDD' 'Rand' 0.0 'Lower' 600 600 1 2 1 0.0 'NoU' 1000000 1 0 'Check' 10.0 10.0 10.0 'Print' 'b=12:' 'SYRDD' 'Rand' 0.0 'Lower' 600 600 1 24 2 0.0 'NoU' 1000000 1 12 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=16:' 'SYRDD' 'Rand' 0.0 'Lower' 600 600 1 32 2 0.0 'NoU' 1000000 1 16 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=20:' 'SYRDD' 'Rand' 0.0 'Lower' 600 600 1 40 2 0.0 'NoU' 1000000 1 20 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=24:' 'SYRDD' 'Rand' 0.0 'Lower' 600 600 1 48 2 0.0 'NoU' 1000000 1 24 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=32:' 'SYRDD' 'Rand' 0.0 'Lower' 600 600 1 64 2 0.0 'NoU' 1000000 1 32 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=40:' 'SYRDD' 'Rand' 0.0 'Lower' 600 600 1 80 2 0.0 'NoU' 1000000 1 40 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=48:' 'SYRDD' 'Rand' 0.0 'Lower' 600 600 1 96 2 0.0 'NoU' 1000000 1 48 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=64:' 'SYRDD' 'Rand' 0.0 'Lower' 600 600 1 128 2 0.0 'NoU' 1000000 1 64 0 0 'Check' 10.0 10.0 10.0 'Print' '' 'Print' ' with update' 'Print' '' 'Print' 'one-step (b=1):' 'SYRDD' 'Rand' 0.0 'Lower' 200 200 1 2 1 0.0 'Upd' 1000000 1 0 'Check' 10.0 10.0 10.0 'Print' 'b=12:' 'SYRDD' 'Rand' 0.0 'Lower' 200 200 1 24 2 0.0 'Upd' 1000000 1 12 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=16:' 'SYRDD' 'Rand' 0.0 'Lower' 200 200 1 32 2 0.0 'Upd' 1000000 1 16 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=20:' 'SYRDD' 'Rand' 0.0 'Lower' 200 200 1 40 2 0.0 'Upd' 1000000 1 20 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=24:' 'SYRDD' 'Rand' 0.0 'Lower' 200 200 1 48 2 0.0 'Upd' 1000000 1 24 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=32:' 'SYRDD' 'Rand' 0.0 'Lower' 200 200 1 64 2 0.0 'Upd' 1000000 1 32 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=40:' 'SYRDD' 'Rand' 0.0 'Lower' 200 200 1 80 2 0.0 'Upd' 1000000 1 40 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=48:' 'SYRDD' 'Rand' 0.0 'Lower' 200 200 1 96 2 0.0 'Upd' 1000000 1 48 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=64:' 'SYRDD' 'Rand' 0.0 'Lower' 200 200 1 128 2 0.0 'Upd' 1000000 1 64 0 0 'Check' 10.0 10.0 10.0 'Print' '' 'Print' 'one-step (b=1):' 'SYRDD' 'Rand' 0.0 'Lower' 400 400 1 2 1 0.0 'Upd' 1000000 1 0 'Check' 10.0 10.0 10.0 'Print' 'b=12:' 'SYRDD' 'Rand' 0.0 'Lower' 400 400 1 24 2 0.0 'Upd' 1000000 1 12 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=16:' 'SYRDD' 'Rand' 0.0 'Lower' 400 400 1 32 2 0.0 'Upd' 1000000 1 16 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=20:' 'SYRDD' 'Rand' 0.0 'Lower' 400 400 1 40 2 0.0 'Upd' 1000000 1 20 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=24:' 'SYRDD' 'Rand' 0.0 'Lower' 400 400 1 48 2 0.0 'Upd' 1000000 1 24 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=32:' 'SYRDD' 'Rand' 0.0 'Lower' 400 400 1 64 2 0.0 'Upd' 1000000 1 32 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=40:' 'SYRDD' 'Rand' 0.0 'Lower' 400 400 1 80 2 0.0 'Upd' 1000000 1 40 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=48:' 'SYRDD' 'Rand' 0.0 'Lower' 400 400 1 96 2 0.0 'Upd' 1000000 1 48 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=64:' 'SYRDD' 'Rand' 0.0 'Lower' 400 400 1 128 2 0.0 'Upd' 1000000 1 64 0 0 'Check' 10.0 10.0 10.0 'Print' '' 'Print' 'one-step (b=1):' 'SYRDD' 'Rand' 0.0 'Lower' 600 600 1 2 1 0.0 'Upd' 1000000 1 0 'Check' 10.0 10.0 10.0 'Print' 'b=12:' 'SYRDD' 'Rand' 0.0 'Lower' 600 600 1 24 2 0.0 'Upd' 1000000 1 12 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=16:' 'SYRDD' 'Rand' 0.0 'Lower' 600 600 1 32 2 0.0 'Upd' 1000000 1 16 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=20:' 'SYRDD' 'Rand' 0.0 'Lower' 600 600 1 40 2 0.0 'Upd' 1000000 1 20 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=24:' 'SYRDD' 'Rand' 0.0 'Lower' 600 600 1 48 2 0.0 'Upd' 1000000 1 24 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=32:' 'SYRDD' 'Rand' 0.0 'Lower' 600 600 1 64 2 0.0 'Upd' 1000000 1 32 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=40:' 'SYRDD' 'Rand' 0.0 'Lower' 600 600 1 80 2 0.0 'Upd' 1000000 1 40 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=48:' 'SYRDD' 'Rand' 0.0 'Lower' 600 600 1 96 2 0.0 'Upd' 1000000 1 48 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=64:' 'SYRDD' 'Rand' 0.0 'Lower' 600 600 1 128 2 0.0 'Upd' 1000000 1 64 0 0 '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' '*** Setting intermediate bandwidth for SBRDD ***' 'Print' '' 'Print' ' no update' 'Print' '' 'Print' 'one-step (b=1):' 'SBRDD' 'Rand' 0.0 'Lower' 200 32 64 1 1 0.0 'NoU' 200 1000000 1 0 'Check' 10.0 10.0 10.0 'Print' 'b=8:' 'SBRDD' 'Rand' 0.0 'Lower' 200 32 64 1 2 0.0 'NoU' 200 1000000 1 8 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=12:' 'SBRDD' 'Rand' 0.0 'Lower' 200 32 64 1 2 0.0 'NoU' 200 1000000 1 12 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=16:' 'SBRDD' 'Rand' 0.0 'Lower' 200 32 64 1 2 0.0 'NoU' 200 1000000 1 16 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=24:' 'SBRDD' 'Rand' 0.0 'Lower' 200 32 64 1 2 0.0 'NoU' 200 1000000 1 24 0 0 'Check' 10.0 10.0 10.0 'Print' '' 'Print' 'one-step (b=1):' 'SBRDD' 'Rand' 0.0 'Lower' 200 64 128 1 1 0.0 'NoU' 200 1000000 1 0 'Check' 10.0 10.0 10.0 'Print' 'b=8:' 'SBRDD' 'Rand' 0.0 'Lower' 200 64 128 1 2 0.0 'NoU' 200 1000000 1 8 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=12:' 'SBRDD' 'Rand' 0.0 'Lower' 200 64 128 1 2 0.0 'NoU' 200 1000000 1 12 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=16:' 'SBRDD' 'Rand' 0.0 'Lower' 200 64 128 1 2 0.0 'NoU' 200 1000000 1 16 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=24:' 'SBRDD' 'Rand' 0.0 'Lower' 200 64 128 1 2 0.0 'NoU' 200 1000000 1 24 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=32:' 'SBRDD' 'Rand' 0.0 'Lower' 200 64 128 1 2 0.0 'NoU' 200 1000000 1 32 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=48:' 'SBRDD' 'Rand' 0.0 'Lower' 200 64 128 1 2 0.0 'NoU' 200 1000000 1 48 0 0 'Check' 10.0 10.0 10.0 'Print' '' 'Print' 'one-step (b=1):' 'SBRDD' 'Rand' 0.0 'Lower' 200 96 192 1 1 0.0 'NoU' 200 1000000 1 0 'Check' 10.0 10.0 10.0 'Print' 'b=8:' 'SBRDD' 'Rand' 0.0 'Lower' 200 96 192 1 2 0.0 'NoU' 200 1000000 1 8 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=12:' 'SBRDD' 'Rand' 0.0 'Lower' 200 96 192 1 2 0.0 'NoU' 200 1000000 1 12 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=16:' 'SBRDD' 'Rand' 0.0 'Lower' 200 96 192 1 2 0.0 'NoU' 200 1000000 1 16 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=24:' 'SBRDD' 'Rand' 0.0 'Lower' 200 96 192 1 2 0.0 'NoU' 200 1000000 1 24 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=32:' 'SBRDD' 'Rand' 0.0 'Lower' 200 96 192 1 2 0.0 'NoU' 200 1000000 1 32 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=48:' 'SBRDD' 'Rand' 0.0 'Lower' 200 96 192 1 2 0.0 'NoU' 200 1000000 1 48 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=64:' 'SBRDD' 'Rand' 0.0 'Lower' 200 96 192 1 2 0.0 'NoU' 200 1000000 1 64 0 0 'Check' 10.0 10.0 10.0 'Print' '' 'Print' 'one-step (b=1):' 'SBRDD' 'Rand' 0.0 'Lower' 400 32 64 1 1 0.0 'NoU' 400 1000000 1 0 'Check' 10.0 10.0 10.0 'Print' 'b=8:' 'SBRDD' 'Rand' 0.0 'Lower' 400 32 64 1 2 0.0 'NoU' 400 1000000 1 8 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=12:' 'SBRDD' 'Rand' 0.0 'Lower' 400 32 64 1 2 0.0 'NoU' 400 1000000 1 12 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=16:' 'SBRDD' 'Rand' 0.0 'Lower' 400 32 64 1 2 0.0 'NoU' 400 1000000 1 16 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=24:' 'SBRDD' 'Rand' 0.0 'Lower' 400 32 64 1 2 0.0 'NoU' 400 1000000 1 24 0 0 'Check' 10.0 10.0 10.0 'Print' '' 'Print' 'one-step (b=1):' 'SBRDD' 'Rand' 0.0 'Lower' 400 64 128 1 1 0.0 'NoU' 400 1000000 1 0 'Check' 10.0 10.0 10.0 'Print' 'b=8:' 'SBRDD' 'Rand' 0.0 'Lower' 400 64 128 1 2 0.0 'NoU' 400 1000000 1 8 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=12:' 'SBRDD' 'Rand' 0.0 'Lower' 400 64 128 1 2 0.0 'NoU' 400 1000000 1 12 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=16:' 'SBRDD' 'Rand' 0.0 'Lower' 400 64 128 1 2 0.0 'NoU' 400 1000000 1 16 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=24:' 'SBRDD' 'Rand' 0.0 'Lower' 400 64 128 1 2 0.0 'NoU' 400 1000000 1 24 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=32:' 'SBRDD' 'Rand' 0.0 'Lower' 400 64 128 1 2 0.0 'NoU' 400 1000000 1 32 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=48:' 'SBRDD' 'Rand' 0.0 'Lower' 400 64 128 1 2 0.0 'NoU' 400 1000000 1 48 0 0 'Check' 10.0 10.0 10.0 'Print' '' 'Print' 'one-step (b=1):' 'SBRDD' 'Rand' 0.0 'Lower' 400 96 192 1 1 0.0 'NoU' 400 1000000 1 0 'Check' 10.0 10.0 10.0 'Print' 'b=8:' 'SBRDD' 'Rand' 0.0 'Lower' 400 96 192 1 2 0.0 'NoU' 400 1000000 1 8 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=12:' 'SBRDD' 'Rand' 0.0 'Lower' 400 96 192 1 2 0.0 'NoU' 400 1000000 1 12 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=16:' 'SBRDD' 'Rand' 0.0 'Lower' 400 96 192 1 2 0.0 'NoU' 400 1000000 1 16 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=24:' 'SBRDD' 'Rand' 0.0 'Lower' 400 96 192 1 2 0.0 'NoU' 400 1000000 1 24 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=32:' 'SBRDD' 'Rand' 0.0 'Lower' 400 96 192 1 2 0.0 'NoU' 400 1000000 1 32 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=48:' 'SBRDD' 'Rand' 0.0 'Lower' 400 96 192 1 2 0.0 'NoU' 400 1000000 1 48 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=64:' 'SBRDD' 'Rand' 0.0 'Lower' 400 96 192 1 2 0.0 'NoU' 400 1000000 1 64 0 0 'Check' 10.0 10.0 10.0 'Print' '' 'Print' 'one-step (b=1):' 'SBRDD' 'Rand' 0.0 'Lower' 600 32 64 1 1 0.0 'NoU' 600 1000000 1 0 'Check' 10.0 10.0 10.0 'Print' 'b=8:' 'SBRDD' 'Rand' 0.0 'Lower' 600 32 64 1 2 0.0 'NoU' 600 1000000 1 8 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=12:' 'SBRDD' 'Rand' 0.0 'Lower' 600 32 64 1 2 0.0 'NoU' 600 1000000 1 12 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=16:' 'SBRDD' 'Rand' 0.0 'Lower' 600 32 64 1 2 0.0 'NoU' 600 1000000 1 16 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=24:' 'SBRDD' 'Rand' 0.0 'Lower' 600 32 64 1 2 0.0 'NoU' 600 1000000 1 24 0 0 'Check' 10.0 10.0 10.0 'Print' '' 'Print' 'one-step (b=1):' 'SBRDD' 'Rand' 0.0 'Lower' 600 64 128 1 1 0.0 'NoU' 600 1000000 1 0 'Check' 10.0 10.0 10.0 'Print' 'b=8:' 'SBRDD' 'Rand' 0.0 'Lower' 600 64 128 1 2 0.0 'NoU' 600 1000000 1 8 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=12:' 'SBRDD' 'Rand' 0.0 'Lower' 600 64 128 1 2 0.0 'NoU' 600 1000000 1 12 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=16:' 'SBRDD' 'Rand' 0.0 'Lower' 600 64 128 1 2 0.0 'NoU' 600 1000000 1 16 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=24:' 'SBRDD' 'Rand' 0.0 'Lower' 600 64 128 1 2 0.0 'NoU' 600 1000000 1 24 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=32:' 'SBRDD' 'Rand' 0.0 'Lower' 600 64 128 1 2 0.0 'NoU' 600 1000000 1 32 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=48:' 'SBRDD' 'Rand' 0.0 'Lower' 600 64 128 1 2 0.0 'NoU' 600 1000000 1 48 0 0 'Check' 10.0 10.0 10.0 'Print' '' 'Print' 'one-step (b=1):' 'SBRDD' 'Rand' 0.0 'Lower' 600 96 192 1 1 0.0 'NoU' 600 1000000 1 0 'Check' 10.0 10.0 10.0 'Print' 'b=8:' 'SBRDD' 'Rand' 0.0 'Lower' 600 96 192 1 2 0.0 'NoU' 600 1000000 1 8 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=12:' 'SBRDD' 'Rand' 0.0 'Lower' 600 96 192 1 2 0.0 'NoU' 600 1000000 1 12 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=16:' 'SBRDD' 'Rand' 0.0 'Lower' 600 96 192 1 2 0.0 'NoU' 600 1000000 1 16 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=24:' 'SBRDD' 'Rand' 0.0 'Lower' 600 96 192 1 2 0.0 'NoU' 600 1000000 1 24 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=32:' 'SBRDD' 'Rand' 0.0 'Lower' 600 96 192 1 2 0.0 'NoU' 600 1000000 1 32 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=48:' 'SBRDD' 'Rand' 0.0 'Lower' 600 96 192 1 2 0.0 'NoU' 600 1000000 1 48 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=64:' 'SBRDD' 'Rand' 0.0 'Lower' 600 96 192 1 2 0.0 'NoU' 600 1000000 1 64 0 0 'Check' 10.0 10.0 10.0 'Print' '' 'Print' ' with update' 'Print' '' 'Print' 'one-step (b=1):' 'SBRDD' 'Rand' 0.0 'Lower' 200 32 64 1 1 0.0 'Upd' 200 1000000 1 0 'Check' 10.0 10.0 10.0 'Print' 'b=8:' 'SBRDD' 'Rand' 0.0 'Lower' 200 32 64 1 2 0.0 'Upd' 200 1000000 1 8 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=12:' 'SBRDD' 'Rand' 0.0 'Lower' 200 32 64 1 2 0.0 'Upd' 200 1000000 1 12 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=16:' 'SBRDD' 'Rand' 0.0 'Lower' 200 32 64 1 2 0.0 'Upd' 200 1000000 1 16 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=24:' 'SBRDD' 'Rand' 0.0 'Lower' 200 32 64 1 2 0.0 'Upd' 200 1000000 1 24 0 0 'Check' 10.0 10.0 10.0 'Print' '' 'Print' 'one-step (b=1):' 'SBRDD' 'Rand' 0.0 'Lower' 200 64 128 1 1 0.0 'Upd' 200 1000000 1 0 'Check' 10.0 10.0 10.0 'Print' 'b=8:' 'SBRDD' 'Rand' 0.0 'Lower' 200 64 128 1 2 0.0 'Upd' 200 1000000 1 8 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=12:' 'SBRDD' 'Rand' 0.0 'Lower' 200 64 128 1 2 0.0 'Upd' 200 1000000 1 12 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=16:' 'SBRDD' 'Rand' 0.0 'Lower' 200 64 128 1 2 0.0 'Upd' 200 1000000 1 16 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=24:' 'SBRDD' 'Rand' 0.0 'Lower' 200 64 128 1 2 0.0 'Upd' 200 1000000 1 24 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=32:' 'SBRDD' 'Rand' 0.0 'Lower' 200 64 128 1 2 0.0 'Upd' 200 1000000 1 32 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=48:' 'SBRDD' 'Rand' 0.0 'Lower' 200 64 128 1 2 0.0 'Upd' 200 1000000 1 48 0 0 'Check' 10.0 10.0 10.0 'Print' '' 'Print' 'one-step (b=1):' 'SBRDD' 'Rand' 0.0 'Lower' 200 96 192 1 1 0.0 'Upd' 200 1000000 1 0 'Check' 10.0 10.0 10.0 'Print' 'b=8:' 'SBRDD' 'Rand' 0.0 'Lower' 200 96 192 1 2 0.0 'Upd' 200 1000000 1 8 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=12:' 'SBRDD' 'Rand' 0.0 'Lower' 200 96 192 1 2 0.0 'Upd' 200 1000000 1 12 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=16:' 'SBRDD' 'Rand' 0.0 'Lower' 200 96 192 1 2 0.0 'Upd' 200 1000000 1 16 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=24:' 'SBRDD' 'Rand' 0.0 'Lower' 200 96 192 1 2 0.0 'Upd' 200 1000000 1 24 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=32:' 'SBRDD' 'Rand' 0.0 'Lower' 200 96 192 1 2 0.0 'Upd' 200 1000000 1 32 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=48:' 'SBRDD' 'Rand' 0.0 'Lower' 200 96 192 1 2 0.0 'Upd' 200 1000000 1 48 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=64:' 'SBRDD' 'Rand' 0.0 'Lower' 200 96 192 1 2 0.0 'Upd' 200 1000000 1 64 0 0 'Check' 10.0 10.0 10.0 'Print' '' 'Print' 'one-step (b=1):' 'SBRDD' 'Rand' 0.0 'Lower' 400 32 64 1 1 0.0 'Upd' 400 1000000 1 0 'Check' 10.0 10.0 10.0 'Print' 'b=8:' 'SBRDD' 'Rand' 0.0 'Lower' 400 32 64 1 2 0.0 'Upd' 400 1000000 1 8 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=12:' 'SBRDD' 'Rand' 0.0 'Lower' 400 32 64 1 2 0.0 'Upd' 400 1000000 1 12 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=16:' 'SBRDD' 'Rand' 0.0 'Lower' 400 32 64 1 2 0.0 'Upd' 400 1000000 1 16 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=24:' 'SBRDD' 'Rand' 0.0 'Lower' 400 32 64 1 2 0.0 'Upd' 400 1000000 1 24 0 0 'Check' 10.0 10.0 10.0 'Print' '' 'Print' 'one-step (b=1):' 'SBRDD' 'Rand' 0.0 'Lower' 400 64 128 1 1 0.0 'Upd' 400 1000000 1 0 'Check' 10.0 10.0 10.0 'Print' 'b=8:' 'SBRDD' 'Rand' 0.0 'Lower' 400 64 128 1 2 0.0 'Upd' 400 1000000 1 8 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=12:' 'SBRDD' 'Rand' 0.0 'Lower' 400 64 128 1 2 0.0 'Upd' 400 1000000 1 12 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=16:' 'SBRDD' 'Rand' 0.0 'Lower' 400 64 128 1 2 0.0 'Upd' 400 1000000 1 16 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=24:' 'SBRDD' 'Rand' 0.0 'Lower' 400 64 128 1 2 0.0 'Upd' 400 1000000 1 24 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=32:' 'SBRDD' 'Rand' 0.0 'Lower' 400 64 128 1 2 0.0 'Upd' 400 1000000 1 32 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=48:' 'SBRDD' 'Rand' 0.0 'Lower' 400 64 128 1 2 0.0 'Upd' 400 1000000 1 48 0 0 'Check' 10.0 10.0 10.0 'Print' '' 'Print' 'one-step (b=1):' 'SBRDD' 'Rand' 0.0 'Lower' 400 96 192 1 1 0.0 'Upd' 400 1000000 1 0 'Check' 10.0 10.0 10.0 'Print' 'b=8:' 'SBRDD' 'Rand' 0.0 'Lower' 400 96 192 1 2 0.0 'Upd' 400 1000000 1 8 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=12:' 'SBRDD' 'Rand' 0.0 'Lower' 400 96 192 1 2 0.0 'Upd' 400 1000000 1 12 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=16:' 'SBRDD' 'Rand' 0.0 'Lower' 400 96 192 1 2 0.0 'Upd' 400 1000000 1 16 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=24:' 'SBRDD' 'Rand' 0.0 'Lower' 400 96 192 1 2 0.0 'Upd' 400 1000000 1 24 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=32:' 'SBRDD' 'Rand' 0.0 'Lower' 400 96 192 1 2 0.0 'Upd' 400 1000000 1 32 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=48:' 'SBRDD' 'Rand' 0.0 'Lower' 400 96 192 1 2 0.0 'Upd' 400 1000000 1 48 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=64:' 'SBRDD' 'Rand' 0.0 'Lower' 400 96 192 1 2 0.0 'Upd' 400 1000000 1 64 0 0 'Check' 10.0 10.0 10.0 'Print' '' 'Print' 'one-step (b=1):' 'SBRDD' 'Rand' 0.0 'Lower' 600 32 64 1 1 0.0 'Upd' 600 1000000 1 0 'Check' 10.0 10.0 10.0 'Print' 'b=8:' 'SBRDD' 'Rand' 0.0 'Lower' 600 32 64 1 2 0.0 'Upd' 600 1000000 1 8 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=12:' 'SBRDD' 'Rand' 0.0 'Lower' 600 32 64 1 2 0.0 'Upd' 600 1000000 1 12 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=16:' 'SBRDD' 'Rand' 0.0 'Lower' 600 32 64 1 2 0.0 'Upd' 600 1000000 1 16 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=24:' 'SBRDD' 'Rand' 0.0 'Lower' 600 32 64 1 2 0.0 'Upd' 600 1000000 1 24 0 0 'Check' 10.0 10.0 10.0 'Print' '' 'Print' 'one-step (b=1):' 'SBRDD' 'Rand' 0.0 'Lower' 600 64 128 1 1 0.0 'Upd' 600 1000000 1 0 'Check' 10.0 10.0 10.0 'Print' 'b=8:' 'SBRDD' 'Rand' 0.0 'Lower' 600 64 128 1 2 0.0 'Upd' 600 1000000 1 8 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=12:' 'SBRDD' 'Rand' 0.0 'Lower' 600 64 128 1 2 0.0 'Upd' 600 1000000 1 12 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=16:' 'SBRDD' 'Rand' 0.0 'Lower' 600 64 128 1 2 0.0 'Upd' 600 1000000 1 16 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=24:' 'SBRDD' 'Rand' 0.0 'Lower' 600 64 128 1 2 0.0 'Upd' 600 1000000 1 24 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=32:' 'SBRDD' 'Rand' 0.0 'Lower' 600 64 128 1 2 0.0 'Upd' 600 1000000 1 32 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=48:' 'SBRDD' 'Rand' 0.0 'Lower' 600 64 128 1 2 0.0 'Upd' 600 1000000 1 48 0 0 'Check' 10.0 10.0 10.0 'Print' '' 'Print' 'one-step (b=1):' 'SBRDD' 'Rand' 0.0 'Lower' 600 96 192 1 1 0.0 'Upd' 600 1000000 1 0 'Check' 10.0 10.0 10.0 'Print' 'b=8:' 'SBRDD' 'Rand' 0.0 'Lower' 600 96 192 1 2 0.0 'Upd' 600 1000000 1 8 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=12:' 'SBRDD' 'Rand' 0.0 'Lower' 600 96 192 1 2 0.0 'Upd' 600 1000000 1 12 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=16:' 'SBRDD' 'Rand' 0.0 'Lower' 600 96 192 1 2 0.0 'Upd' 600 1000000 1 16 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=24:' 'SBRDD' 'Rand' 0.0 'Lower' 600 96 192 1 2 0.0 'Upd' 600 1000000 1 24 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=32:' 'SBRDD' 'Rand' 0.0 'Lower' 600 96 192 1 2 0.0 'Upd' 600 1000000 1 32 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=48:' 'SBRDD' 'Rand' 0.0 'Lower' 600 96 192 1 2 0.0 'Upd' 600 1000000 1 48 0 0 'Check' 10.0 10.0 10.0 'Print' 'b=64:' 'SBRDD' 'Rand' 0.0 'Lower' 600 96 192 1 2 0.0 'Upd' 600 1000000 1 64 0 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 ------------------------------------------------------------------------------ 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' '*** Where to switch from SYTRD to SYRDT ? ***' 'Print' '' 'Print' ' no update' 'Print' '' 'Print' 'b=4' 'SBTRD' 'Rand' 0.0 'Lower' 200 4 5 'NoU' 200 0 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 200 4 8 0.0 0 'NoU' 200 1000000 1 'Check' 10.0 10.0 10.0 'Print' 'b=6' 'SBTRD' 'Rand' 0.0 'Lower' 200 6 7 'NoU' 200 0 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 200 6 12 0.0 0 'NoU' 200 1000000 1 'Check' 10.0 10.0 10.0 'Print' 'b=8' 'SBTRD' 'Rand' 0.0 'Lower' 200 8 9 'NoU' 200 0 '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 'Print' 'b=10' 'SBTRD' 'Rand' 0.0 'Lower' 200 10 11 'NoU' 200 0 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 200 10 20 0.0 0 'NoU' 200 1000000 1 'Check' 10.0 10.0 10.0 'Print' 'b=12' 'SBTRD' 'Rand' 0.0 'Lower' 200 12 13 'NoU' 200 0 '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 'Print' 'b=16' 'SBTRD' 'Rand' 0.0 'Lower' 200 16 17 'NoU' 200 0 '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 'Print' 'b=20' 'SBTRD' 'Rand' 0.0 'Lower' 200 20 21 'NoU' 200 0 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 200 20 40 0.0 0 'NoU' 200 1000000 1 'Check' 10.0 10.0 10.0 'Print' 'b=24' 'SBTRD' 'Rand' 0.0 'Lower' 200 24 25 'NoU' 200 0 '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 'Print' 'b=32' 'SBTRD' 'Rand' 0.0 'Lower' 200 32 33 'NoU' 200 0 '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 'Print' 'b=40' 'SBTRD' 'Rand' 0.0 'Lower' 200 40 41 'NoU' 200 0 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 200 40 80 0.0 0 'NoU' 200 1000000 1 'Check' 10.0 10.0 10.0 'Print' 'b=48' 'SBTRD' 'Rand' 0.0 'Lower' 200 48 49 'NoU' 200 0 '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 'Print' 'b=64' 'SBTRD' 'Rand' 0.0 'Lower' 200 64 65 'NoU' 200 0 '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' '' 'Print' 'b=4' 'SBTRD' 'Rand' 0.0 'Lower' 400 4 5 'NoU' 400 0 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 400 4 8 0.0 0 'NoU' 400 1000000 1 'Check' 10.0 10.0 10.0 'Print' 'b=6' 'SBTRD' 'Rand' 0.0 'Lower' 400 6 7 'NoU' 400 0 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 400 6 12 0.0 0 'NoU' 400 1000000 1 'Check' 10.0 10.0 10.0 'Print' 'b=8' 'SBTRD' 'Rand' 0.0 'Lower' 400 8 9 'NoU' 400 0 '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 'Print' 'b=10' 'SBTRD' 'Rand' 0.0 'Lower' 400 10 11 'NoU' 400 0 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 400 10 20 0.0 0 'NoU' 400 1000000 1 'Check' 10.0 10.0 10.0 'Print' 'b=12' 'SBTRD' 'Rand' 0.0 'Lower' 400 12 13 'NoU' 400 0 '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 'Print' 'b=16' 'SBTRD' 'Rand' 0.0 'Lower' 400 16 17 'NoU' 400 0 '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 'Print' 'b=20' 'SBTRD' 'Rand' 0.0 'Lower' 400 20 21 'NoU' 400 0 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 400 20 40 0.0 0 'NoU' 400 1000000 1 'Check' 10.0 10.0 10.0 'Print' 'b=24' 'SBTRD' 'Rand' 0.0 'Lower' 400 24 25 'NoU' 400 0 '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 'Print' 'b=32' 'SBTRD' 'Rand' 0.0 'Lower' 400 32 33 'NoU' 400 0 '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 'Print' 'b=40' 'SBTRD' 'Rand' 0.0 'Lower' 400 40 41 'NoU' 400 0 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 400 40 80 0.0 0 'NoU' 400 1000000 1 'Check' 10.0 10.0 10.0 'Print' 'b=48' 'SBTRD' 'Rand' 0.0 'Lower' 400 48 49 'NoU' 400 0 '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 'Print' 'b=64' 'SBTRD' 'Rand' 0.0 'Lower' 400 64 65 'NoU' 400 0 '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' '' 'Print' 'b=4' 'SBTRD' 'Rand' 0.0 'Lower' 600 4 5 'NoU' 600 0 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 600 4 8 0.0 0 'NoU' 600 1000000 1 'Check' 10.0 10.0 10.0 'Print' 'b=6' 'SBTRD' 'Rand' 0.0 'Lower' 600 6 7 'NoU' 600 0 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 600 6 12 0.0 0 'NoU' 600 1000000 1 'Check' 10.0 10.0 10.0 'Print' 'b=8' 'SBTRD' 'Rand' 0.0 'Lower' 600 8 9 'NoU' 600 0 '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 'Print' 'b=10' 'SBTRD' 'Rand' 0.0 'Lower' 600 10 11 'NoU' 600 0 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 600 10 20 0.0 0 'NoU' 600 1000000 1 'Check' 10.0 10.0 10.0 'Print' 'b=12' 'SBTRD' 'Rand' 0.0 'Lower' 600 12 13 'NoU' 600 0 '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 'Print' 'b=16' 'SBTRD' 'Rand' 0.0 'Lower' 600 16 17 'NoU' 600 0 '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 'Print' 'b=20' 'SBTRD' 'Rand' 0.0 'Lower' 600 20 21 'NoU' 600 0 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 600 20 40 0.0 0 'NoU' 600 1000000 1 'Check' 10.0 10.0 10.0 'Print' 'b=24' 'SBTRD' 'Rand' 0.0 'Lower' 600 24 25 'NoU' 600 0 '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 'Print' 'b=32' 'SBTRD' 'Rand' 0.0 'Lower' 600 32 33 'NoU' 600 0 '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 'Print' 'b=40' 'SBTRD' 'Rand' 0.0 'Lower' 600 40 41 'NoU' 600 0 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 600 40 80 0.0 0 'NoU' 600 1000000 1 'Check' 10.0 10.0 10.0 'Print' 'b=48' 'SBTRD' 'Rand' 0.0 'Lower' 600 48 49 'NoU' 600 0 '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 'Print' 'b=64' 'SBTRD' 'Rand' 0.0 'Lower' 600 64 65 'NoU' 600 0 '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' '' 'Print' ' with update' 'Print' ' *** ignore messages about tests failing because ***' 'Print' ' *** SBRDT returned a wrong (but positive) info ***' 'Print' '' 'Print' 'b=4' 'SBTRD' 'Rand' 0.0 'Lower' 200 4 5 'Upd' 200 0 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 200 4 8 0.0 0 'Upd' 200 1000000 1 'Check' 10.0 10.0 10.0 'Print' 'b=6' 'SBTRD' 'Rand' 0.0 'Lower' 200 6 7 'Upd' 200 0 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 200 6 12 0.0 0 'Upd' 200 1000000 1 'Check' 10.0 10.0 10.0 'Print' 'b=8' 'SBTRD' 'Rand' 0.0 'Lower' 200 8 9 'Upd' 200 0 '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 'Print' 'b=10' 'SBTRD' 'Rand' 0.0 'Lower' 200 10 11 'Upd' 200 0 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 200 10 20 0.0 0 'Upd' 200 1000000 1 'Check' 10.0 10.0 10.0 'Print' 'b=12' 'SBTRD' 'Rand' 0.0 'Lower' 200 12 13 'Upd' 200 0 '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 'Print' 'b=16' 'SBTRD' 'Rand' 0.0 'Lower' 200 16 17 'Upd' 200 0 '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 'Print' 'b=20' 'SBTRD' 'Rand' 0.0 'Lower' 200 20 21 'Upd' 200 0 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 200 20 40 0.0 0 'Upd' 200 1000000 1 'Check' 10.0 10.0 10.0 'Print' 'b=24' 'SBTRD' 'Rand' 0.0 'Lower' 200 24 25 'Upd' 200 0 '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 'Print' 'b=32' 'SBTRD' 'Rand' 0.0 'Lower' 200 32 33 'Upd' 200 0 '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 'Print' 'b=40' 'SBTRD' 'Rand' 0.0 'Lower' 200 40 41 'Upd' 200 0 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 200 40 80 0.0 0 'Upd' 200 1000000 1 'Check' 10.0 10.0 10.0 'Print' 'b=48' 'SBTRD' 'Rand' 0.0 'Lower' 200 48 49 'Upd' 200 0 '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 'Print' 'b=64' 'SBTRD' 'Rand' 0.0 'Lower' 200 64 65 'Upd' 200 0 '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' '' 'Print' 'b=4' 'SBTRD' 'Rand' 0.0 'Lower' 400 4 5 'Upd' 400 0 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 400 4 8 0.0 0 'Upd' 400 1000000 1 'Check' 10.0 10.0 10.0 'Print' 'b=6' 'SBTRD' 'Rand' 0.0 'Lower' 400 6 7 'Upd' 400 0 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 400 6 12 0.0 0 'Upd' 400 1000000 1 'Check' 10.0 10.0 10.0 'Print' 'b=8' 'SBTRD' 'Rand' 0.0 'Lower' 400 8 9 'Upd' 400 0 '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 'Print' 'b=10' 'SBTRD' 'Rand' 0.0 'Lower' 400 10 11 'Upd' 400 0 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 400 10 20 0.0 0 'Upd' 400 1000000 1 'Check' 10.0 10.0 10.0 'Print' 'b=12' 'SBTRD' 'Rand' 0.0 'Lower' 400 12 13 'Upd' 400 0 '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 'Print' 'b=16' 'SBTRD' 'Rand' 0.0 'Lower' 400 16 17 'Upd' 400 0 '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 'Print' 'b=20' 'SBTRD' 'Rand' 0.0 'Lower' 400 20 21 'Upd' 400 0 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 400 20 40 0.0 0 'Upd' 400 1000000 1 'Check' 10.0 10.0 10.0 'Print' 'b=24' 'SBTRD' 'Rand' 0.0 'Lower' 400 24 25 'Upd' 400 0 '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 'Print' 'b=32' 'SBTRD' 'Rand' 0.0 'Lower' 400 32 33 'Upd' 400 0 '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 'Print' 'b=40' 'SBTRD' 'Rand' 0.0 'Lower' 400 40 41 'Upd' 400 0 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 400 40 80 0.0 0 'Upd' 400 1000000 1 'Check' 10.0 10.0 10.0 'Print' 'b=48' 'SBTRD' 'Rand' 0.0 'Lower' 400 48 49 'Upd' 400 0 '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 'Print' 'b=64' 'SBTRD' 'Rand' 0.0 'Lower' 400 64 65 'Upd' 400 0 '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' '' 'Print' 'b=4' 'SBTRD' 'Rand' 0.0 'Lower' 600 4 5 'Upd' 600 0 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 600 4 8 0.0 0 'Upd' 600 1000000 1 'Check' 10.0 10.0 10.0 'Print' 'b=6' 'SBTRD' 'Rand' 0.0 'Lower' 600 6 7 'Upd' 600 0 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 600 6 12 0.0 0 'Upd' 600 1000000 1 'Check' 10.0 10.0 10.0 'Print' 'b=8' 'SBTRD' 'Rand' 0.0 'Lower' 600 8 9 'Upd' 600 0 '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 'Print' 'b=10' 'SBTRD' 'Rand' 0.0 'Lower' 600 10 11 'Upd' 600 0 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 600 10 20 0.0 0 'Upd' 600 1000000 1 'Check' 10.0 10.0 10.0 'Print' 'b=12' 'SBTRD' 'Rand' 0.0 'Lower' 600 12 13 'Upd' 600 0 '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 'Print' 'b=16' 'SBTRD' 'Rand' 0.0 'Lower' 600 16 17 'Upd' 600 0 '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 'Print' 'b=20' 'SBTRD' 'Rand' 0.0 'Lower' 600 20 21 'Upd' 600 0 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 600 20 40 0.0 0 'Upd' 600 1000000 1 'Check' 10.0 10.0 10.0 'Print' 'b=24' 'SBTRD' 'Rand' 0.0 'Lower' 600 24 25 'Upd' 600 0 '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 'Print' 'b=32' 'SBTRD' 'Rand' 0.0 'Lower' 600 32 33 'Upd' 600 0 '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 'Print' 'b=40' 'SBTRD' 'Rand' 0.0 'Lower' 600 40 41 'Upd' 600 0 'Check' 10.0 10.0 10.0 'SBRDT' 'Rand' 0.0 600 40 80 0.0 0 'Upd' 600 1000000 1 'Check' 10.0 10.0 10.0 'Print' 'b=48' 'SBTRD' 'Rand' 0.0 'Lower' 600 48 49 'Upd' 600 0 '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 'Print' 'b=64' 'SBTRD' 'Rand' 0.0 'Lower' 600 64 65 'Upd' 600 0 '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 C ------------------------------------------------------------------------------ C C --- quit --- 'Quit' C SHAR_EOF fi # end of overwriting check if test -f 'driver.f' then echo shar: will not over-write existing file "'driver.f'" else cat << "SHAR_EOF" > 'driver.f' SUBROUTINE DORQLX( NB0, NX0, > M, N, K, A, LDA, TAU, WORK, LWORK, INFO ) C SUBROUTINE DORGQL( M, N, K, A, LDA, TAU, WORK, LWORK, INFO ) * * -- LAPACK routine (version 3.0) -- * Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd., * Courant Institute, Argonne National Lab, and Rice University * June 30, 1999 * * .. Scalar Arguments .. INTEGER NB0, NX0, INFO, K, LDA, LWORK, M, N * .. * .. Array Arguments .. DOUBLE PRECISION A( LDA, * ), TAU( * ), WORK( * ) C DOUBLE PRECISION A( LDA, * ), TAU( * ), WORK( * ) * .. * * Purpose * ======= * * dORQLx generates an M-by-N real matrix Q with orthonormal columns, C* DORGQL generates an M-by-N real matrix Q with orthonormal columns, * which is defined as the last N columns of a product of K elementary * reflectors of order M * * Q = H(k) . . . H(2) H(1) * * as returned by DGEQLF. * * Arguments * ========= * * nb0 (input) integer * The blocking factor. * * nx0 (input) integer * The cross-over point for the nonblocked algorithm. * * M (input) INTEGER * The number of rows of the matrix Q. M >= 0. * * N (input) INTEGER * The number of columns of the matrix Q. M >= N >= 0. * * K (input) INTEGER * The number of elementary reflectors whose product defines the * matrix Q. N >= K >= 0. * * A (input/output) double precision array, dimension (LDA,N) C* A (input/output) DOUBLE PRECISION array, dimension (LDA,N) * On entry, the (n-k+i)-th column must contain the vector which * defines the elementary reflector H(i), for i = 1,2,...,k, as * returned by DGEQLF in the last k columns of its array * argument A. * On exit, the M-by-N matrix Q. * * LDA (input) INTEGER * The first dimension of the array A. LDA >= max(1,M). * * TAU (input) double precision array, dimension (K) C* TAU (input) DOUBLE PRECISION array, dimension (K) * TAU(i) must contain the scalar factor of the elementary * reflector H(i), as returned by DGEQLF. * * WORK (workspace/output) double precision array, dimension (LWORK) C* WORK (workspace/output) DOUBLE PRECISION array, dimension (LWORK) * On exit, if INFO = 0, WORK(1) returns the optimal LWORK. * * LWORK (input) INTEGER * The dimension of the array WORK. LWORK >= max(1,N). * For optimum performance LWORK >= N*NB, where NB is the * optimal blocksize. * * If LWORK = -1, then a workspace query is assumed; the routine * only calculates the optimal size of the WORK array, returns * this value as the first entry of the WORK array, and no error * message related to LWORK is issued by XERBLA. * * INFO (output) INTEGER * = 0: successful exit * < 0: if INFO = -i, the i-th argument has an illegal value * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ZERO C DOUBLE PRECISION ZERO PARAMETER ( ZERO = 0.0D+0 ) C PARAMETER ( ZERO = 0.0D+0 ) * .. * .. Local Scalars .. LOGICAL LQUERY INTEGER I, IB, IINFO, IWS, J, KK, L, LDWORK, LWKOPT, $ NB, NBMIN, NX * .. * .. External Subroutines .. EXTERNAL DLARFB, DLARFT, DORG2L, XERBLA C EXTERNAL DLARFB, DLARFT, DORG2L, XERBLA * .. * .. Intrinsic Functions .. INTRINSIC MAX, MIN * .. * .. External Functions .. INTEGER ILAENV EXTERNAL ILAENV * .. * .. Executable Statements .. * * Test the input arguments * INFO = 0 IF ( NB0 .GT. 0 ) THEN NB = NB0 ELSE NB = ILAENV( 1, 'dORGQL', ' ', M, N, K, -1 ) ENDIF C NB = ILAENV( 1, 'DORGQL', ' ', M, N, K, -1 ) LWKOPT = MAX( 1, N )*NB WORK( 1 ) = LWKOPT LQUERY = ( LWORK.EQ.-1 ) IF( M.LT.0 ) THEN INFO = -1 ELSE IF( N.LT.0 .OR. N.GT.M ) THEN INFO = -2 ELSE IF( K.LT.0 .OR. K.GT.N ) THEN INFO = -3 ELSE IF( LDA.LT.MAX( 1, M ) ) THEN INFO = -5 ELSE IF( LWORK.LT.MAX( 1, N ) .AND. .NOT.LQUERY ) THEN INFO = -8 END IF IF( INFO.NE.0 ) THEN CALL XERBLA( 'dORGQL', -INFO ) C CALL XERBLA( 'DORGQL', -INFO ) RETURN ELSE IF( LQUERY ) THEN RETURN END IF * * Quick return if possible * IF( N.LE.0 ) THEN WORK( 1 ) = 1 RETURN END IF * NBMIN = 2 NX = 0 IWS = N IF( NB.GT.1 .AND. NB.LT.K ) THEN * * Determine when to cross over from blocked to unblocked code. * IF ( NX0 .GT. 0 ) THEN NX = NX0 ELSE NX = MAX( 0, ILAENV( 3, 'dORGQL', ' ', M, N, K, -1 ) ) ENDIF C NX = MAX( 0, ILAENV( 3, 'DORGQL', ' ', M, N, K, -1 ) ) IF( NX.LT.K ) THEN * * Determine if workspace is large enough for blocked code. * LDWORK = N IWS = LDWORK*NB IF( LWORK.LT.IWS ) THEN * * Not enough workspace to use optimal NB: reduce NB and * determine the minimum value of NB. * NB = LWORK / LDWORK NBMIN = 2 C NBMIN = MAX( 2, ILAENV( 2, 'DORGQL', ' ', M, N, K, -1 ) ) END IF END IF END IF * IF( NB.GE.NBMIN .AND. NB.LT.K .AND. NX.LT.K ) THEN * * Use blocked code after the first block. * The last kk columns are handled by the block method. * KK = MIN( K, ( ( K-NX+NB-1 ) / NB )*NB ) * * Set A(m-kk+1:m,1:n-kk) to zero. * DO 20 J = 1, N - KK DO 10 I = M - KK + 1, M A( I, J ) = ZERO 10 CONTINUE 20 CONTINUE ELSE KK = 0 END IF * * Use unblocked code for the first or only block. * CALL DORG2L( M-KK, N-KK, K-KK, A, LDA, TAU, WORK, IINFO ) C CALL DORG2L( M-KK, N-KK, K-KK, A, LDA, TAU, WORK, IINFO ) * IF( KK.GT.0 ) THEN * * Use blocked code * DO 50 I = K - KK + 1, K, NB IB = MIN( NB, K-I+1 ) IF( N-K+I.GT.1 ) THEN * * Form the triangular factor of the block reflector * H = H(i+ib-1) . . . H(i+1) H(i) * CALL DLARFT( 'Backward', 'Columnwise', M-K+I+IB-1, IB, $ A( 1, N-K+I ), LDA, TAU( I ), WORK, LDWORK ) C CALL DLARFT( 'Backward', 'Columnwise', M-K+I+IB-1, IB, C $ A( 1, N-K+I ), LDA, TAU( I ), WORK, LDWORK ) * * Apply H to A(1:m-k+i+ib-1,1:n-k+i-1) from the left * CALL DLARFB( 'Left', 'No transpose', 'Backward', $ 'Columnwise', M-K+I+IB-1, N-K+I-1, IB, $ A( 1, N-K+I ), LDA, WORK, LDWORK, A, LDA, $ WORK( IB+1 ), LDWORK ) C CALL DLARFB( 'Left', 'No transpose', 'Backward', C $ 'Columnwise', M-K+I+IB-1, N-K+I-1, IB, C $ A( 1, N-K+I ), LDA, WORK, LDWORK, A, LDA, C $ WORK( IB+1 ), LDWORK ) END IF * * Apply H to rows 1:m-k+i+ib-1 of current block * CALL DORG2L( M-K+I+IB-1, IB, IB, A( 1, N-K+I ), LDA, $ TAU( I ), WORK, IINFO ) C CALL DORG2L( M-K+I+IB-1, IB, IB, A( 1, N-K+I ), LDA, C $ TAU( I ), WORK, IINFO ) * * Set rows m-k+i+ib:m of current block to zero * DO 40 J = N - K + I, N - K + I + IB - 1 DO 30 L = M - K + I + IB, M A( L, J ) = ZERO 30 CONTINUE 40 CONTINUE 50 CONTINUE END IF * WORK( 1 ) = IWS RETURN * * End of dORQLx C* End of DORGQL * END SUBROUTINE DORQRX( NB0, NX0, > M, N, K, A, LDA, TAU, WORK, LWORK, INFO ) C SUBROUTINE DORGQR( M, N, K, A, LDA, TAU, WORK, LWORK, INFO ) * * -- LAPACK routine (version 3.0) -- * Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd., * Courant Institute, Argonne National Lab, and Rice University * June 30, 1999 * * .. Scalar Arguments .. INTEGER NB0, NX0, INFO, K, LDA, LWORK, M, N C INTEGER INFO, K, LDA, LWORK, M, N * .. * .. Array Arguments .. DOUBLE PRECISION A( LDA, * ), TAU( * ), WORK( * ) C DOUBLE PRECISION A( LDA, * ), TAU( * ), WORK( * ) * .. * * Purpose * ======= * * dORQRx generates an M-by-N real matrix Q with orthonormal columns, C* DORGQR generates an M-by-N real matrix Q with orthonormal columns, * which is defined as the first N columns of a product of K elementary * reflectors of order M * * Q = H(1) H(2) . . . H(k) * * as returned by dGEQRF. C* as returned by DGEQRF. * * Arguments * ========= * * nb0 (input) integer * The blocking factor. * * nx0 (input) integer * The cross-over point for the non-blocked algorithm. * * M (input) INTEGER * The number of rows of the matrix Q. M >= 0. * * N (input) INTEGER * The number of columns of the matrix Q. M >= N >= 0. * * K (input) INTEGER * The number of elementary reflectors whose product defines the * matrix Q. N >= K >= 0. * * A (input/output) double precision array, dimension (LDA,N) C* A (input/output) DOUBLE PRECISION array, dimension (LDA,N) * On entry, the i-th column must contain the vector which * defines the elementary reflector H(i), for i = 1,2,...,k, as * returned by dGEQRF in the first k columns of its array C* returned by DGEQRF in the first k columns of its array * argument A. * On exit, the M-by-N matrix Q. * * LDA (input) INTEGER * The first dimension of the array A. LDA >= max(1,M). * * TAU (input) double precision array, dimension (K) C* TAU (input) DOUBLE PRECISION array, dimension (K) * TAU(i) must contain the scalar factor of the elementary * reflector H(i), as returned by dGEQRF. C* reflector H(i), as returned by DGEQRF. * * WORK (workspace/output) double precision array, dimension (LWORK) C* WORK (workspace/output) DOUBLE PRECISION array, dimension (LWORK) * On exit, if INFO = 0, WORK(1) returns the optimal LWORK. * * LWORK (input) INTEGER * The dimension of the array WORK. LWORK >= max(1,N). * For optimum performance LWORK >= N*NB, where NB is the * optimal blocksize. * * If LWORK = -1, then a workspace query is assumed; the routine * only calculates the optimal size of the WORK array, returns * this value as the first entry of the WORK array, and no error * message related to LWORK is issued by XERBLA. * * INFO (output) INTEGER * = 0: successful exit * < 0: if INFO = -i, the i-th argument has an illegal value * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ZERO C DOUBLE PRECISION ZERO PARAMETER ( ZERO = 0.0D+0 ) C PARAMETER ( ZERO = 0.0D+0 ) * .. * .. Local Scalars .. LOGICAL LQUERY INTEGER I, IB, IINFO, IWS, J, KI, KK, L, LDWORK, $ LWKOPT, NB, NBMIN, NX * .. * .. External Subroutines .. EXTERNAL DLARFB, DLARFT, DORG2R, XERBLA C EXTERNAL DLARFB, DLARFT, DORG2R, XERBLA * .. * .. Intrinsic Functions .. INTRINSIC MAX, MIN * .. * .. External Functions .. INTEGER ILAENV EXTERNAL ILAENV * .. * .. Executable Statements .. * * Test the input arguments * INFO = 0 IF ( NB0 .GT. 0 ) THEN NB = NB0 ELSE NB = ILAENV( 1, 'dORGQR', ' ', M, N, K, -1 ) ENDIF C NB = ILAENV( 1, 'DORGQR', ' ', M, N, K, -1 ) LWKOPT = MAX( 1, N )*NB WORK( 1 ) = LWKOPT LQUERY = ( LWORK.EQ.-1 ) IF( M.LT.0 ) THEN INFO = -1 ELSE IF( N.LT.0 .OR. N.GT.M ) THEN INFO = -2 ELSE IF( K.LT.0 .OR. K.GT.N ) THEN INFO = -3 ELSE IF( LDA.LT.MAX( 1, M ) ) THEN INFO = -5 ELSE IF( LWORK.LT.MAX( 1, N ) .AND. .NOT.LQUERY ) THEN INFO = -8 END IF IF( INFO.NE.0 ) THEN CALL XERBLA( 'dORGQR', -INFO ) C CALL XERBLA( 'DORGQR', -INFO ) RETURN ELSE IF( LQUERY ) THEN RETURN END IF * * Quick return if possible * IF( N.LE.0 ) THEN WORK( 1 ) = 1 RETURN END IF * NBMIN = 2 NX = 0 IWS = N IF( NB.GT.1 .AND. NB.LT.K ) THEN * * Determine when to cross over from blocked to unblocked code. * IF ( NX0 .GT. 0 ) THEN NX = NX0 ELSE NX = MAX( 0, ILAENV( 3, 'dORGQR', ' ', M, N, K, -1 ) ) ENDIF C NX = MAX( 0, ILAENV( 3, 'DORGQR', ' ', M, N, K, -1 ) ) IF( NX.LT.K ) THEN * * Determine if workspace is large enough for blocked code. * LDWORK = N IWS = LDWORK*NB IF( LWORK.LT.IWS ) THEN * * Not enough workspace to use optimal NB: reduce NB and * determine the minimum value of NB. * NB = LWORK / LDWORK NBMIN = 2 C NBMIN = MAX( 2, ILAENV( 2, 'DORGQR', ' ', M, N, K, -1 ) ) END IF END IF END IF * IF( NB.GE.NBMIN .AND. NB.LT.K .AND. NX.LT.K ) THEN * * Use blocked code after the last block. * The first kk columns are handled by the block method. * KI = ( ( K-NX-1 ) / NB )*NB KK = MIN( K, KI+NB ) * * Set A(1:kk,kk+1:n) to zero. * DO 20 J = KK + 1, N DO 10 I = 1, KK A( I, J ) = ZERO 10 CONTINUE 20 CONTINUE ELSE KK = 0 END IF * * Use unblocked code for the last or only block. * IF( KK.LT.N ) $ CALL DORG2R( M-KK, N-KK, K-KK, A( KK+1, KK+1 ), LDA, $ TAU( KK+1 ), WORK, IINFO ) C $ CALL DORG2R( M-KK, N-KK, K-KK, A( KK+1, KK+1 ), LDA, C $ TAU( KK+1 ), WORK, IINFO ) * IF( KK.GT.0 ) THEN * * Use blocked code * DO 50 I = KI + 1, 1, -NB IB = MIN( NB, K-I+1 ) IF( I+IB.LE.N ) THEN * * Form the triangular factor of the block reflector * H = H(i) H(i+1) . . . H(i+ib-1) * CALL DLARFT( 'Forward', 'Columnwise', M-I+1, IB, $ A( I, I ), LDA, TAU( I ), WORK, LDWORK ) C CALL DLARFT( 'Forward', 'Columnwise', M-I+1, IB, C $ A( I, I ), LDA, TAU( I ), WORK, LDWORK ) * * Apply H to A(i:m,i+ib:n) from the left * CALL DLARFB( 'Left', 'No transpose', 'Forward', $ 'Columnwise', M-I+1, N-I-IB+1, IB, $ A( I, I ), LDA, WORK, LDWORK, A( I, I+IB ), $ LDA, WORK( IB+1 ), LDWORK ) C CALL DLARFB( 'Left', 'No transpose', 'Forward', C $ 'Columnwise', M-I+1, N-I-IB+1, IB, C $ A( I, I ), LDA, WORK, LDWORK, A( I, I+IB ), C $ LDA, WORK( IB+1 ), LDWORK ) END IF * * Apply H to rows i:m of current block * CALL DORG2R( M-I+1, IB, IB, A( I, I ), LDA, TAU( I ), WORK, $ IINFO ) C CALL DORG2R( M-I+1, IB, IB, A( I, I ), LDA, TAU( I ), WORK, C $ IINFO ) * * Set rows 1:i-1 of current block to zero * DO 40 J = I, I + IB - 1 DO 30 L = 1, I - 1 A( L, J ) = ZERO 30 CONTINUE 40 CONTINUE 50 CONTINUE END IF * WORK( 1 ) = IWS RETURN * * End of dORQRx C* End of DORGQR * END SUBROUTINE DORGTX( NB0, NX0, > UPLO, N, A, LDA, TAU, WORK, LWORK, INFO ) C SUBROUTINE DORGTR( UPLO, N, A, LDA, TAU, WORK, LWORK, INFO ) * * -- LAPACK routine (version 3.0) -- * Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd., * Courant Institute, Argonne National Lab, and Rice University * June 30, 1999 * * .. Scalar Arguments .. CHARACTER UPLO INTEGER NB0, NX0, INFO, LDA, LWORK, N C INTEGER INFO, LDA, LWORK, N * .. * .. Array Arguments .. DOUBLE PRECISION A( LDA, * ), TAU( * ), WORK( * ) C DOUBLE PRECISION A( LDA, * ), TAU( * ), WORK( * ) * .. * * Purpose * ======= * * dORGTx generates a real orthogonal matrix Q which is defined as the C* DORGTR generates a real orthogonal matrix Q which is defined as the * product of n-1 elementary reflectors of order N, as returned by * dSYTRD: C* DSYTRD: * * if UPLO = 'U', Q = H(n-1) . . . H(2) H(1), * * if UPLO = 'L', Q = H(1) H(2) . . . H(n-1). * * Arguments * ========= * * nb0 (input) integer * The blocking factor. * * nx0 (input) integer * The cross-over point for the nonblocked algorithm. * * UPLO (input) CHARACTER*1 * = 'U': Upper triangle of A contains elementary reflectors * from dSYTRD; C* from DSYTRD; * = 'L': Lower triangle of A contains elementary reflectors * from dSYTRD. C* from DSYTRD. * * N (input) INTEGER * The order of the matrix Q. N >= 0. * * A (input/output) dPreicision array, dimension (LDA,N) C* A (input/output) DOUBLE PRECISION array, dimension (LDA,N) * On entry, the vectors which define the elementary reflectors, * as returned by dSYTRD. C* as returned by DSYTRD. * On exit, the N-by-N orthogonal matrix Q. * * LDA (input) INTEGER * The leading dimension of the array A. LDA >= max(1,N). * * TAU (input) dPreicision array, dimension (N-1) C* TAU (input) DOUBLE PRECISION array, dimension (N-1) * TAU(i) must contain the scalar factor of the elementary * reflector H(i), as returned by dSYTRD. C* reflector H(i), as returned by DSYTRD. * * WORK (workspace/output) double precision array, dimension (LWORK) C* WORK (workspace/output) DOUBLE PRECISION array, dimension (LWORK) * On exit, if INFO = 0, WORK(1) returns the optimal LWORK. * * LWORK (input) INTEGER * The dimension of the array WORK. LWORK >= max(1,N-1). * For optimum performance LWORK >= (N-1)*NB, where NB is * the optimal blocksize. * * If LWORK = -1, then a workspace query is assumed; the routine * only calculates the optimal size of the WORK array, returns * this value as the first entry of the WORK array, and no error * message related to LWORK is issued by XERBLA. * * INFO (output) INTEGER * = 0: successful exit * < 0: if INFO = -i, the i-th argument had an illegal value * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ZERO, ONE C DOUBLE PRECISION ZERO, ONE PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 ) C PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 ) * .. * .. Local Scalars .. LOGICAL LQUERY, UPPER INTEGER I, IINFO, J, LWKOPT, NB * .. * .. External Functions .. LOGICAL LSAME INTEGER ILAENV EXTERNAL LSAME, ILAENV * .. * .. External Subroutines .. EXTERNAL DORQLX, DORQRX, XERBLA C EXTERNAL DORGQL, DORGQR, XERBLA * .. * .. Intrinsic Functions .. INTRINSIC MAX * .. * .. Executable Statements .. * * Test the input arguments * INFO = 0 LQUERY = ( LWORK.EQ.-1 ) UPPER = LSAME( UPLO, 'U' ) IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN INFO = -1 ELSE IF( N.LT.0 ) THEN INFO = -2 ELSE IF( LDA.LT.MAX( 1, N ) ) THEN INFO = -4 ELSE IF( LWORK.LT.MAX( 1, N-1 ) .AND. .NOT.LQUERY ) THEN INFO = -7 END IF * IF( INFO.EQ.0 ) THEN IF( UPPER ) THEN IF ( NB0 .GT. 0 ) THEN NB = NB0 ELSE NB = ILAENV( 1, 'dORGQL', ' ', N-1, N-1, N-1, -1 ) ENDIF C NB = ILAENV( 1, 'DORGQL', ' ', N-1, N-1, N-1, -1 ) ELSE IF ( NB0 .GT. 0 ) THEN NB = NB0 ELSE NB = ILAENV( 1, 'dORGQR', ' ', N-1, N-1, N-1, -1 ) ENDIF C NB = ILAENV( 1, 'DORGQR', ' ', N-1, N-1, N-1, -1 ) END IF LWKOPT = MAX( 1, N-1 )*NB WORK( 1 ) = LWKOPT END IF * IF( INFO.NE.0 ) THEN CALL XERBLA( 'dORGTR', -INFO ) C CALL XERBLA( 'DORGTR', -INFO ) RETURN ELSE IF( LQUERY ) THEN RETURN END IF * * Quick return if possible * IF( N.EQ.0 ) THEN WORK( 1 ) = 1 RETURN END IF * IF( UPPER ) THEN * * Q was determined by a call to dSYTRD with UPLO = 'U' C* Q was determined by a call to DSYTRD with UPLO = 'U' * * Shift the vectors which define the elementary reflectors one * column to the left, and set the last row and column of Q to * those of the unit matrix * DO 20 J = 1, N - 1 DO 10 I = 1, J - 1 A( I, J ) = A( I, J+1 ) 10 CONTINUE A( N, J ) = ZERO 20 CONTINUE DO 30 I = 1, N - 1 A( I, N ) = ZERO 30 CONTINUE A( N, N ) = ONE * * Generate Q(1:n-1,1:n-1) * CALL DORQLX( NB0, NX0, > N-1, N-1, N-1, A, LDA, TAU, WORK, LWORK, IINFO ) C CALL DORGQL( N-1, N-1, N-1, A, LDA, TAU, WORK, LWORK, IINFO ) * ELSE * * Q was determined by a call to dSYTRD with UPLO = 'L'. C* Q was determined by a call to DSYTRD with UPLO = 'L'. * * Shift the vectors which define the elementary reflectors one * column to the right, and set the first row and column of Q to * those of the unit matrix * DO 50 J = N, 2, -1 A( 1, J ) = ZERO DO 40 I = J + 1, N A( I, J ) = A( I, J-1 ) 40 CONTINUE 50 CONTINUE A( 1, 1 ) = ONE DO 60 I = 2, N A( I, 1 ) = ZERO 60 CONTINUE IF( N.GT.1 ) THEN * * Generate Q(2:n,2:n) * CALL DORQRX( NB0, NX0, > N-1, N-1, N-1, A( 2, 2 ), LDA, TAU, WORK, $ LWORK, IINFO ) C CALL DORGQR( N-1, N-1, N-1, A( 2, 2 ), LDA, TAU, WORK, C $ LWORK, IINFO ) END IF END IF WORK( 1 ) = LWKOPT RETURN * * End of dORGTR C* End of DORGTR * END C SUBROUTINE DSBTRD( VECT, UPLO, N, KD, AB, LDAB, D, E, Q, LDQ, SUBROUTINE DSBTRX( VECT, UPLO, N, KD, AB, LDAB, D, E, Q, LDQ, $ WORK, INFO ) * * -- LAPACK routine (version 3.0) -- * Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd., * Courant Institute, Argonne National Lab, and Rice University * June 30, 1999 * * .. Scalar Arguments .. CHARACTER UPLO, VECT INTEGER INFO, KD, LDAB, LDQ, N * .. * .. Array Arguments .. C DOUBLE PRECISION AB( LDAB, * ), D( * ), E( * ), Q( LDQ, * ), DOUBLE PRECISION AB( LDAB, * ), D( * ), E( * ), Q( LDQ, * ), $ WORK( * ) * .. * * Purpose * ======= * C* DSBTRD reduces a real symmetric band matrix A to symmetric * dSBTRD reduces a real symmetric band matrix A to symmetric * tridiagonal form T by an orthogonal similarity transformation: * Q**T * A * Q = T. * * Arguments * ========= * * VECT (input) CHARACTER*1 * = 'N': do not form Q; * = 'V': form Q; * = 'U': update a matrix X, by forming X*Q. * * UPLO (input) CHARACTER*1 * = 'U': Upper triangle of A is stored; * = 'L': Lower triangle of A is stored. * * N (input) INTEGER * The order of the matrix A. N >= 0. * * KD (input) INTEGER * The number of superdiagonals of the matrix A if UPLO = 'U', * or the number of subdiagonals if UPLO = 'L'. KD >= 0. * C* AB (input/output) DOUBLE PRECISION array, dimension (LDAB,N) * AB (input/output) double precision array, dimension (LDAB,N) * On entry, the upper or lower triangle of the symmetric band * matrix A, stored in the first KD+1 rows of the array. The * j-th column of A is stored in the j-th column of the array AB * as follows: * if UPLO = 'U', AB(kd+1+i-j,j) = A(i,j) for max(1,j-kd)<=i<=j; * if UPLO = 'L', AB(1+i-j,j) = A(i,j) for j<=i<=min(n,j+kd). * On exit, the diagonal elements of AB are overwritten by the * diagonal elements of the tridiagonal matrix T; if KD > 0, the * elements on the first superdiagonal (if UPLO = 'U') or the * first subdiagonal (if UPLO = 'L') are overwritten by the * off-diagonal elements of T; the rest of AB is overwritten by * values generated during the reduction. * * LDAB (input) INTEGER * The leading dimension of the array AB. LDAB >= KD+1. * C* D (output) DOUBLE PRECISION array, dimension (N) * D (output) double precision array, dimension (N) * The diagonal elements of the tridiagonal matrix T. * C* E (output) DOUBLE PRECISION array, dimension (N-1) * E (output) double precision array, dimension (N-1) * The off-diagonal elements of the tridiagonal matrix T: * E(i) = T(i,i+1) if UPLO = 'U'; E(i) = T(i+1,i) if UPLO = 'L'. * C* Q (input/output) DOUBLE PRECISION array, dimension (LDQ,N) * Q (input/output) double precision array, dimension (LDQ,N) * On entry, if VECT = 'U', then Q must contain an N-by-N * matrix X; if VECT = 'N' or 'V', then Q need not be set. * * On exit: * if VECT = 'V', Q contains the N-by-N orthogonal matrix Q; * if VECT = 'U', Q contains the product X*Q; * if VECT = 'N', the array Q is not referenced. * * LDQ (input) INTEGER * The leading dimension of the array Q. * LDQ >= 1, and LDQ >= N if VECT = 'V' or 'U'. * C* WORK (workspace) DOUBLE PRECISION array, dimension (N) * WORK (workspace) double precision array, dimension (N) * * INFO (output) INTEGER * = 0: successful exit * < 0: if INFO = -i, the i-th argument had an illegal value * * Further Details * =============== * * Modified by Linda Kaufman, Bell Labs. * * ===================================================================== * * .. Parameters .. C DOUBLE PRECISION ZERO, ONE DOUBLE PRECISION ZERO, ONE C PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 ) PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 ) * .. * .. Local Scalars .. LOGICAL INITQ, UPPER, WANTQ INTEGER I, I2, IBL, INCA, INCX, IQAEND, IQB, IQEND, J, $ J1, J1END, J1INC, J2, JEND, JIN, JINC, K, KD1, $ KDM1, KDN, L, LAST, LEND, NQ, NR, NRT C DOUBLE PRECISION TEMP DOUBLE PRECISION TEMP * .. * .. External Subroutines .. C EXTERNAL DLAR2V, DLARGV, DLARTG, DLARTV, DLASET, DROT, EXTERNAL DLAR2V, DLARGV, DLARTG, DLARTV, DLASET, DROT, $ XERBLA * .. * .. Intrinsic Functions .. INTRINSIC MAX, MIN * .. * .. External Functions .. LOGICAL LSAME EXTERNAL LSAME * .. * .. Executable Statements .. * * Test the input parameters * INITQ = LSAME( VECT, 'V' ) WANTQ = INITQ .OR. LSAME( VECT, 'U' ) UPPER = LSAME( UPLO, 'U' ) KD1 = KD + 1 KDM1 = KD - 1 INCX = LDAB - 1 IQEND = 1 * INFO = 0 IF( .NOT.WANTQ .AND. .NOT.LSAME( VECT, 'N' ) ) THEN INFO = -1 ELSE IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN INFO = -2 ELSE IF( N.LT.0 ) THEN INFO = -3 ELSE IF( KD.LT.0 ) THEN INFO = -4 ELSE IF( LDAB.LT.KD1 ) THEN INFO = -6 ELSE IF( LDQ.LT.MAX( 1, N ) .AND. WANTQ ) THEN INFO = -10 END IF IF( INFO.NE.0 ) THEN C CALL XERBLA( 'DSBTRD', -INFO ) CALL XERBLA( 'dSBTRD', -INFO ) RETURN END IF * * Quick return if possible * IF( N.EQ.0 ) $ RETURN * * Initialize Q to the unit matrix, if needed * IF( INITQ ) C $ CALL DLASET( 'Full', N, N, ZERO, ONE, Q, LDQ ) $ CALL DLASET( 'Full', N, N, ZERO, ONE, Q, LDQ ) * * Wherever possible, plane rotations are generated and applied in * vector operations of length NR over the index set J1:J2:KD1. * * The cosines and sines of the plane rotations are stored in the * arrays D and WORK. * INCA = KD1*LDAB KDN = MIN( N-1, KD ) IF( UPPER ) THEN * IF( KD.GT.1 ) THEN * * Reduce to tridiagonal form, working with upper triangle * NR = 0 J1 = KDN + 2 J2 = 1 * DO 90 I = 1, N - 2 * * Reduce i-th row of matrix to tridiagonal form * DO 80 K = KDN + 1, 2, -1 J1 = J1 + KDN J2 = J2 + KDN * IF( NR.GT.0 ) THEN * * generate plane rotations to annihilate nonzero * elements which have been created outside the band * C CALL DLARGV( NR, AB( 1, J1-1 ), INCA, WORK( J1 ), CALL DLARGV( NR, AB( 1, J1-1 ), INCA, WORK( J1 ), $ KD1, D( J1 ), KD1 ) * * apply rotations from the right * * * Dependent on the the number of diagonals either C* DLARTV or DROT is used * dLARTV or dROT is used * IF( NR.GE.2*KD-1 ) THEN DO 10 L = 1, KD - 1 C CALL DLARTV( NR, AB( L+1, J1-1 ), INCA, CALL DLARTV( NR, AB( L+1, J1-1 ), INCA, $ AB( L, J1 ), INCA, D( J1 ), $ WORK( J1 ), KD1 ) 10 CONTINUE * ELSE JEND = J1 + ( NR-1 )*KD1 DO 20 JINC = J1, JEND, KD1 C CALL DROT( KDM1, AB( 2, JINC-1 ), 1, CALL DROT( KDM1, AB( 2, JINC-1 ), 1, $ AB( 1, JINC ), 1, D( JINC ), $ WORK( JINC ) ) 20 CONTINUE END IF END IF * * IF( K.GT.2 ) THEN IF( K.LE.N-I+1 ) THEN * * generate plane rotation to annihilate a(i,i+k-1) * within the band * C CALL DLARTG( AB( KD-K+3, I+K-2 ), CALL DLARTG( AB( KD-K+3, I+K-2 ), $ AB( KD-K+2, I+K-1 ), D( I+K-1 ), $ WORK( I+K-1 ), TEMP ) AB( KD-K+3, I+K-2 ) = TEMP * * apply rotation from the right * C CALL DROT( K-3, AB( KD-K+4, I+K-2 ), 1, CALL DROT( K-3, AB( KD-K+4, I+K-2 ), 1, $ AB( KD-K+3, I+K-1 ), 1, D( I+K-1 ), $ WORK( I+K-1 ) ) END IF NR = NR + 1 J1 = J1 - KDN - 1 END IF * * apply plane rotations from both sides to diagonal * blocks * IF( NR.GT.0 ) C $ CALL DLAR2V( NR, AB( KD1, J1-1 ), AB( KD1, J1 ), $ CALL DLAR2V( NR, AB( KD1, J1-1 ), AB( KD1, J1 ), $ AB( KD, J1 ), INCA, D( J1 ), $ WORK( J1 ), KD1 ) * * apply plane rotations from the left * IF( NR.GT.0 ) THEN IF( 2*KD-1.LT.NR ) THEN * * Dependent on the the number of diagonals either C* DLARTV or DROT is used * dLARTV or dROT is used * DO 30 L = 1, KD - 1 IF( J2+L.GT.N ) THEN NRT = NR - 1 ELSE NRT = NR END IF IF( NRT.GT.0 ) C $ CALL DLARTV( NRT, AB( KD-L, J1+L ), INCA, $ CALL DLARTV( NRT, AB( KD-L, J1+L ), INCA, $ AB( KD-L+1, J1+L ), INCA, $ D( J1 ), WORK( J1 ), KD1 ) 30 CONTINUE ELSE J1END = J1 + KD1*( NR-2 ) IF( J1END.GE.J1 ) THEN DO 40 JIN = J1, J1END, KD1 C CALL DROT( KD-1, AB( KD-1, JIN+1 ), INCX, CALL DROT( KD-1, AB( KD-1, JIN+1 ), INCX, $ AB( KD, JIN+1 ), INCX, $ D( JIN ), WORK( JIN ) ) 40 CONTINUE END IF LEND = MIN( KDM1, N-J2 ) LAST = J1END + KD1 IF( LEND.GT.0 ) C $ CALL DROT( LEND, AB( KD-1, LAST+1 ), INCX, $ CALL DROT( LEND, AB( KD-1, LAST+1 ), INCX, $ AB( KD, LAST+1 ), INCX, D( LAST ), $ WORK( LAST ) ) END IF END IF * IF( WANTQ ) THEN * * accumulate product of plane rotations in Q * IF( INITQ ) THEN * * take advantage of the fact that Q was * initially the Identity matrix * IQEND = MAX( IQEND, J2 ) I2 = MAX( 0, K-3 ) IQAEND = 1 + I*KD IF( K.EQ.2 ) $ IQAEND = IQAEND + KD IQAEND = MIN( IQAEND, IQEND ) DO 50 J = J1, J2, KD1 IBL = I - I2 / KDM1 I2 = I2 + 1 IQB = MAX( 1, J-IBL ) NQ = 1 + IQAEND - IQB IQAEND = MIN( IQAEND+KD, IQEND ) C CALL DROT( NQ, Q( IQB, J-1 ), 1, Q( IQB, J ), CALL DROT( NQ, Q( IQB, J-1 ), 1, Q( IQB, J ), $ 1, D( J ), WORK( J ) ) 50 CONTINUE ELSE * DO 60 J = J1, J2, KD1 C CALL DROT( N, Q( 1, J-1 ), 1, Q( 1, J ), 1, CALL DROT( N, Q( 1, J-1 ), 1, Q( 1, J ), 1, $ D( J ), WORK( J ) ) 60 CONTINUE END IF * END IF * IF( J2+KDN.GT.N ) THEN * * adjust J2 to keep within the bounds of the matrix * NR = NR - 1 J2 = J2 - KDN - 1 END IF * DO 70 J = J1, J2, KD1 * * create nonzero element a(j-1,j+kd) outside the band * and store it in WORK * WORK( J+KD ) = WORK( J )*AB( 1, J+KD ) AB( 1, J+KD ) = D( J )*AB( 1, J+KD ) 70 CONTINUE 80 CONTINUE 90 CONTINUE END IF * IF( KD.GT.0 ) THEN * * copy off-diagonal elements to E * DO 100 I = 1, N - 1 E( I ) = AB( KD, I+1 ) 100 CONTINUE ELSE * * set E to zero if original matrix was diagonal * DO 110 I = 1, N - 1 E( I ) = ZERO 110 CONTINUE END IF * * copy diagonal elements to D * DO 120 I = 1, N D( I ) = AB( KD1, I ) 120 CONTINUE * ELSE * IF( KD.GT.1 ) THEN * * Reduce to tridiagonal form, working with lower triangle * NR = 0 J1 = KDN + 2 J2 = 1 * DO 210 I = 1, N - 2 * * Reduce i-th column of matrix to tridiagonal form * DO 200 K = KDN + 1, 2, -1 J1 = J1 + KDN J2 = J2 + KDN * IF( NR.GT.0 ) THEN * * generate plane rotations to annihilate nonzero * elements which have been created outside the band * C CALL DLARGV( NR, AB( KD1, J1-KD1 ), INCA, CALL DLARGV( NR, AB( KD1, J1-KD1 ), INCA, $ WORK( J1 ), KD1, D( J1 ), KD1 ) * * apply plane rotations from one side * * * Dependent on the the number of diagonals either C* DLARTV or DROT is used * dLARTV or dROT is used * IF( NR.GT.2*KD-1 ) THEN DO 130 L = 1, KD - 1 C CALL DLARTV( NR, AB( KD1-L, J1-KD1+L ), INCA, CALL DLARTV( NR, AB( KD1-L, J1-KD1+L ), INCA, $ AB( KD1-L+1, J1-KD1+L ), INCA, $ D( J1 ), WORK( J1 ), KD1 ) 130 CONTINUE ELSE JEND = J1 + KD1*( NR-1 ) DO 140 JINC = J1, JEND, KD1 C CALL DROT( KDM1, AB( KD, JINC-KD ), INCX, CALL DROT( KDM1, AB( KD, JINC-KD ), INCX, $ AB( KD1, JINC-KD ), INCX, $ D( JINC ), WORK( JINC ) ) 140 CONTINUE END IF * END IF * IF( K.GT.2 ) THEN IF( K.LE.N-I+1 ) THEN * * generate plane rotation to annihilate a(i+k-1,i) * within the band * C CALL DLARTG( AB( K-1, I ), AB( K, I ), CALL DLARTG( AB( K-1, I ), AB( K, I ), $ D( I+K-1 ), WORK( I+K-1 ), TEMP ) AB( K-1, I ) = TEMP * * apply rotation from the left * C CALL DROT( K-3, AB( K-2, I+1 ), LDAB-1, CALL DROT( K-3, AB( K-2, I+1 ), LDAB-1, $ AB( K-1, I+1 ), LDAB-1, D( I+K-1 ), $ WORK( I+K-1 ) ) END IF NR = NR + 1 J1 = J1 - KDN - 1 END IF * * apply plane rotations from both sides to diagonal * blocks * IF( NR.GT.0 ) C $ CALL DLAR2V( NR, AB( 1, J1-1 ), AB( 1, J1 ), $ CALL DLAR2V( NR, AB( 1, J1-1 ), AB( 1, J1 ), $ AB( 2, J1-1 ), INCA, D( J1 ), $ WORK( J1 ), KD1 ) * * apply plane rotations from the right * * * Dependent on the the number of diagonals either C* DLARTV or DROT is used * dLARTV or dROT is used * IF( NR.GT.0 ) THEN IF( NR.GT.2*KD-1 ) THEN DO 150 L = 1, KD - 1 IF( J2+L.GT.N ) THEN NRT = NR - 1 ELSE NRT = NR END IF IF( NRT.GT.0 ) C $ CALL DLARTV( NRT, AB( L+2, J1-1 ), INCA, $ CALL DLARTV( NRT, AB( L+2, J1-1 ), INCA, $ AB( L+1, J1 ), INCA, D( J1 ), $ WORK( J1 ), KD1 ) 150 CONTINUE ELSE J1END = J1 + KD1*( NR-2 ) IF( J1END.GE.J1 ) THEN DO 160 J1INC = J1, J1END, KD1 C CALL DROT( KDM1, AB( 3, J1INC-1 ), 1, CALL DROT( KDM1, AB( 3, J1INC-1 ), 1, $ AB( 2, J1INC ), 1, D( J1INC ), $ WORK( J1INC ) ) 160 CONTINUE END IF LEND = MIN( KDM1, N-J2 ) LAST = J1END + KD1 IF( LEND.GT.0 ) C $ CALL DROT( LEND, AB( 3, LAST-1 ), 1, $ CALL DROT( LEND, AB( 3, LAST-1 ), 1, $ AB( 2, LAST ), 1, D( LAST ), $ WORK( LAST ) ) END IF END IF * * * IF( WANTQ ) THEN * * accumulate product of plane rotations in Q * IF( INITQ ) THEN * * take advantage of the fact that Q was * initially the Identity matrix * IQEND = MAX( IQEND, J2 ) I2 = MAX( 0, K-3 ) IQAEND = 1 + I*KD IF( K.EQ.2 ) $ IQAEND = IQAEND + KD IQAEND = MIN( IQAEND, IQEND ) DO 170 J = J1, J2, KD1 IBL = I - I2 / KDM1 I2 = I2 + 1 IQB = MAX( 1, J-IBL ) NQ = 1 + IQAEND - IQB IQAEND = MIN( IQAEND+KD, IQEND ) C CALL DROT( NQ, Q( IQB, J-1 ), 1, Q( IQB, J ), CALL DROT( NQ, Q( IQB, J-1 ), 1, Q( IQB, J ), $ 1, D( J ), WORK( J ) ) 170 CONTINUE ELSE * DO 180 J = J1, J2, KD1 C CALL DROT( N, Q( 1, J-1 ), 1, Q( 1, J ), 1, CALL DROT( N, Q( 1, J-1 ), 1, Q( 1, J ), 1, $ D( J ), WORK( J ) ) 180 CONTINUE END IF END IF * IF( J2+KDN.GT.N ) THEN * * adjust J2 to keep within the bounds of the matrix * NR = NR - 1 J2 = J2 - KDN - 1 END IF * DO 190 J = J1, J2, KD1 * * create nonzero element a(j+kd,j-1) outside the * band and store it in WORK * WORK( J+KD ) = WORK( J )*AB( KD1, J ) AB( KD1, J ) = D( J )*AB( KD1, J ) 190 CONTINUE 200 CONTINUE 210 CONTINUE END IF * IF( KD.GT.0 ) THEN * * copy off-diagonal elements to E * DO 220 I = 1, N - 1 E( I ) = AB( 2, I ) 220 CONTINUE ELSE * * set E to zero if original matrix was diagonal * DO 230 I = 1, N - 1 E( I ) = ZERO 230 CONTINUE END IF * * copy diagonal elements to D * DO 240 I = 1, N D( I ) = AB( 1, I ) 240 CONTINUE END IF * RETURN * C* End of DSBTRD * End of dSBTRD * END SUBROUTINE DSYTRX( NB0, NX0, > UPLO, N, A, LDA, D, E, TAU, WORK, LWORK, INFO ) C SUBROUTINE DSYTRD( UPLO, N, A, LDA, D, E, TAU, WORK, LWORK, INFO ) * * -- LAPACK routine (version 3.0) -- * Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd., * Courant Institute, Argonne National Lab, and Rice University * June 30, 1999 * * .. Scalar Arguments .. CHARACTER UPLO INTEGER NB0, NX0, INFO, LDA, LWORK, N C INTEGER INFO, LDA, LWORK, N * .. * .. Array Arguments .. DOUBLE PRECISION A( LDA, * ), D( * ), E( * ), TAU( * ), $ WORK( * ) C DOUBLE PRECISION A( LDA, * ), D( * ), E( * ), TAU( * ), C $ WORK( * ) * .. * * Purpose * ======= * * dSYTRx reduces a real symmetric matrix A to real symmetric C* DSYTRD reduces a real symmetric matrix A to real symmetric * tridiagonal form T by an orthogonal similarity transformation: * Q**T * A * Q = T. * * Arguments * ========= * * nb0 (input) integer * The blocking factor. * * nx0 (input) integer * The cross-over point to the nonblocked algorithm. C * * UPLO (input) CHARACTER*1 * = 'U': Upper triangle of A is stored; * = 'L': Lower triangle of A is stored. * * N (input) INTEGER * The order of the matrix A. N >= 0. * * A (input/output) double precision array, dimension (LDA,N) C* A (input/output) DOUBLE PRECISION array, dimension (LDA,N) * On entry, the symmetric matrix A. If UPLO = 'U', the leading * N-by-N upper triangular part of A contains the upper * triangular part of the matrix A, and the strictly lower * triangular part of A is not referenced. If UPLO = 'L', the * leading N-by-N lower triangular part of A contains the lower * triangular part of the matrix A, and the strictly upper * triangular part of A is not referenced. * On exit, if UPLO = 'U', the diagonal and first superdiagonal * of A are overwritten by the corresponding elements of the * tridiagonal matrix T, and the elements above the first * superdiagonal, with the array TAU, represent the orthogonal * matrix Q as a product of elementary reflectors; if UPLO * = 'L', the diagonal and first subdiagonal of A are over- * written by the corresponding elements of the tridiagonal * matrix T, and the elements below the first subdiagonal, with * the array TAU, represent the orthogonal matrix Q as a product * of elementary reflectors. See Further Details. * * LDA (input) INTEGER * The leading dimension of the array A. LDA >= max(1,N). * * D (output) double precision array, dimension (N) C* D (output) DOUBLE PRECISION array, dimension (N) * The diagonal elements of the tridiagonal matrix T: * D(i) = A(i,i). * * E (output) double precision array, dimension (N-1) C* E (output) DOUBLE PRECISION array, dimension (N-1) * The off-diagonal elements of the tridiagonal matrix T: * E(i) = A(i,i+1) if UPLO = 'U', E(i) = A(i+1,i) if UPLO = 'L'. * * TAU (output) double precision array, dimension (N-1) C* TAU (output) DOUBLE PRECISION array, dimension (N-1) * The scalar factors of the elementary reflectors (see Further * Details). * * WORK (workspace/output) double precision array, dimension (LWORK) C* WORK (workspace/output) DOUBLE PRECISION array, dimension (LWORK) * On exit, if INFO = 0, WORK(1) returns the optimal LWORK. * * LWORK (input) INTEGER * The dimension of the array WORK. LWORK >= 1. * For optimum performance LWORK >= N*NB, where NB is the * optimal blocksize. * * If LWORK = -1, then a workspace query is assumed; the routine * only calculates the optimal size of the WORK array, returns * this value as the first entry of the WORK array, and no error * message related to LWORK is issued by XERBLA. * * INFO (output) INTEGER * = 0: successful exit * < 0: if INFO = -i, the i-th argument had an illegal value * * Further Details * =============== * * If UPLO = 'U', the matrix Q is represented as a product of elementary * reflectors * * Q = H(n-1) . . . H(2) H(1). * * Each H(i) has the form * * H(i) = I - tau * v * v' * * where tau is a real scalar, and v is a real vector with * v(i+1:n) = 0 and v(i) = 1; v(1:i-1) is stored on exit in * A(1:i-1,i+1), and tau in TAU(i). * * If UPLO = 'L', the matrix Q is represented as a product of elementary * reflectors * * Q = H(1) H(2) . . . H(n-1). * * Each H(i) has the form * * H(i) = I - tau * v * v' * * where tau is a real scalar, and v is a real vector with * v(1:i) = 0 and v(i+1) = 1; v(i+2:n) is stored on exit in A(i+2:n,i), * and tau in TAU(i). * * The contents of A on exit are illustrated by the following examples * with n = 5: * * if UPLO = 'U': if UPLO = 'L': * * ( d e v2 v3 v4 ) ( d ) * ( d e v3 v4 ) ( e d ) * ( d e v4 ) ( v1 e d ) * ( d e ) ( v1 v2 e d ) * ( d ) ( v1 v2 v3 e d ) * * where d and e denote diagonal and off-diagonal elements of T, and vi * denotes an element of the vector defining H(i). * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ONE C DOUBLE PRECISION ONE PARAMETER ( ONE = 1.0D+0 ) C PARAMETER ( ONE = 1.0D+0 ) * .. * .. Local Scalars .. LOGICAL LQUERY, UPPER INTEGER I, IINFO, IWS, J, KK, LDWORK, LWKOPT, NB, $ NBMIN, NX * .. * .. External Subroutines .. EXTERNAL DLATRD, DSYR2K, DSYTD2, XERBLA C EXTERNAL DLATRD, DSYR2K, DSYTD2, XERBLA * .. * .. Intrinsic Functions .. INTRINSIC MAX * .. * .. External Functions .. LOGICAL LSAME INTEGER ILAENV EXTERNAL LSAME, ILAENV * .. * .. Executable Statements .. * * Test the input parameters * INFO = 0 UPPER = LSAME( UPLO, 'U' ) LQUERY = ( LWORK.EQ.-1 ) IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN INFO = -1 ELSE IF( N.LT.0 ) THEN INFO = -2 ELSE IF( LDA.LT.MAX( 1, N ) ) THEN INFO = -4 ELSE IF( LWORK.LT.1 .AND. .NOT.LQUERY ) THEN INFO = -9 END IF * IF( INFO.EQ.0 ) THEN * * Determine the block size. * IF ( NB0 .GT. 0 ) THEN NB = NB0 ELSE NB = ILAENV( 1, 'DSYTRD', UPLO, N, -1, -1, -1 ) ENDIF C NB = ILAENV( 1, 'DSYTRD', UPLO, N, -1, -1, -1 ) LWKOPT = N*NB WORK( 1 ) = LWKOPT END IF * IF( INFO.NE.0 ) THEN CALL XERBLA( 'dSYTRD', -INFO ) C CALL XERBLA( 'DSYTRD', -INFO ) RETURN ELSE IF( LQUERY ) THEN RETURN END IF * * Quick return if possible * IF( N.EQ.0 ) THEN WORK( 1 ) = 1 RETURN END IF * NX = N IWS = 1 IF( NB.GT.1 .AND. NB.LT.N ) THEN * * Determine when to cross over from blocked to unblocked code * (last block is always handled by unblocked code). * IF ( NX0 .GT. 0 ) THEN NX = MAX( NB, NX0 ) ELSE NX = MAX( NB, ILAENV( 3, 'DSYTRD', UPLO, N, -1, -1, -1 ) ) ENDIF C NX = MAX( NB, ILAENV( 3, 'DSYTRD', UPLO, N, -1, -1, -1 ) ) IF( NX.LT.N ) THEN * * Determine if workspace is large enough for blocked code. * LDWORK = N IWS = LDWORK*NB IF( LWORK.LT.IWS ) THEN * * Not enough workspace to use optimal NB: determine the * minimum value of NB, and reduce NB or force use of * unblocked code by setting NX = N. * NB = MAX( LWORK / LDWORK, 1 ) NBMIN = 2 C NBMIN = ILAENV( 2, 'DSYTRD', UPLO, N, -1, -1, -1 ) IF( NB.LT.NBMIN ) $ NX = N END IF ELSE NX = N END IF ELSE NB = 1 END IF * IF( UPPER ) THEN * * Reduce the upper triangle of A. * Columns 1:kk are handled by the unblocked method. * KK = N - ( ( N-NX+NB-1 ) / NB )*NB DO 20 I = N - NB + 1, KK + 1, -NB * * Reduce columns i:i+nb-1 to tridiagonal form and form the * matrix W which is needed to update the unreduced part of * the matrix * CALL DLATRD( UPLO, I+NB-1, NB, A, LDA, E, TAU, WORK, $ LDWORK ) C CALL DLATRD( UPLO, I+NB-1, NB, A, LDA, E, TAU, WORK, C $ LDWORK ) * * Update the unreduced submatrix A(1:i-1,1:i-1), using an * update of the form: A := A - V*W' - W*V' * CALL DSYR2K( UPLO, 'No transpose', I-1, NB, -ONE, A( 1, I ), $ LDA, WORK, LDWORK, ONE, A, LDA ) C CALL DSYR2K( UPLO, 'No transpose', I-1, NB, -ONE, A( 1, I ), C $ LDA, WORK, LDWORK, ONE, A, LDA ) * * Copy superdiagonal elements back into A, and diagonal * elements into D * DO 10 J = I, I + NB - 1 A( J-1, J ) = E( J-1 ) D( J ) = A( J, J ) 10 CONTINUE 20 CONTINUE * * Use unblocked code to reduce the last or only block * CALL DSYTD2( UPLO, KK, A, LDA, D, E, TAU, IINFO ) C CALL DSYTD2( UPLO, KK, A, LDA, D, E, TAU, IINFO ) ELSE * * Reduce the lower triangle of A * DO 40 I = 1, N - NX, NB * * Reduce columns i:i+nb-1 to tridiagonal form and form the * matrix W which is needed to update the unreduced part of * the matrix * CALL DLATRD( UPLO, N-I+1, NB, A( I, I ), LDA, E( I ), $ TAU( I ), WORK, LDWORK ) C CALL DLATRD( UPLO, N-I+1, NB, A( I, I ), LDA, E( I ), C $ TAU( I ), WORK, LDWORK ) * * Update the unreduced submatrix A(i+ib:n,i+ib:n), using * an update of the form: A := A - V*W' - W*V' * CALL DSYR2K( UPLO, 'No transpose', N-I-NB+1, NB, -ONE, $ A( I+NB, I ), LDA, WORK( NB+1 ), LDWORK, ONE, $ A( I+NB, I+NB ), LDA ) C CALL DSYR2K( UPLO, 'No transpose', N-I-NB+1, NB, -ONE, C $ A( I+NB, I ), LDA, WORK( NB+1 ), LDWORK, ONE, C $ A( I+NB, I+NB ), LDA ) * * Copy subdiagonal elements back into A, and diagonal * elements into D * DO 30 J = I, I + NB - 1 A( J+1, J ) = E( J ) D( J ) = A( J, J ) 30 CONTINUE 40 CONTINUE * * Use unblocked code to reduce the last or only block * CALL DSYTD2( UPLO, N-I+1, A( I, I ), LDA, D( I ), E( I ), $ TAU( I ), IINFO ) C CALL DSYTD2( UPLO, N-I+1, A( I, I ), LDA, D( I ), E( I ), C $ TAU( I ), IINFO ) END IF * WORK( 1 ) = LWKOPT RETURN * * End of dSYTRD C* End of DSYTRD * END SUBROUTINE DLAGSY( N, K, D, A, LDA, ISEED, WORK, INFO ) * * -- LAPACK auxiliary test routine (version 3.0) * Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd., * Courant Institute, Argonne National Lab, and Rice University * February 29, 1992 * * .. Scalar Arguments .. INTEGER INFO, K, LDA, N * .. * .. Array Arguments .. INTEGER ISEED( 4 ) DOUBLE PRECISION A( LDA, * ), D( * ), WORK( * ) * .. * * Purpose * ======= * * DLAGSY generates a real symmetric matrix A, by pre- and post- * multiplying a real diagonal matrix D with a random orthogonal matrix: * A = U*D*U'. The semi-bandwidth may then be reduced to k by additional * orthogonal transformations. * * Arguments * ========= * * N (input) INTEGER * The order of the matrix A. N >= 0. * * K (input) INTEGER * The number of nonzero subdiagonals within the band of A. * 0 <= K <= N-1. * * D (input) DOUBLE PRECISION array, dimension (N) * The diagonal elements of the diagonal matrix D. * * A (output) DOUBLE PRECISION array, dimension (LDA,N) * The generated n by n symmetric matrix A (the full matrix is * stored). * * LDA (input) INTEGER * The leading dimension of the array A. LDA >= N. * * ISEED (input/output) INTEGER array, dimension (4) * On entry, the seed of the random number generator; the array * elements must be between 0 and 4095, and ISEED(4) must be * odd. * On exit, the seed is updated. * * WORK (workspace) DOUBLE PRECISION array, dimension (2*N) * * INFO (output) INTEGER * = 0: successful exit * < 0: if INFO = -i, the i-th argument had an illegal value * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ZERO, ONE, HALF PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0, HALF = 0.5D+0 ) * .. * .. Local Scalars .. INTEGER I, J DOUBLE PRECISION ALPHA, TAU, WA, WB, WN * .. * .. External Subroutines .. EXTERNAL DAXPY, DGEMV, DGER, DLARNV, DSCAL, DSYMV, $ DSYR2, XERBLA * .. * .. External Functions .. DOUBLE PRECISION DDOT, DNRM2 EXTERNAL DDOT, DNRM2 * .. * .. Intrinsic Functions .. INTRINSIC MAX, SIGN * .. * .. Executable Statements .. * * Test the input arguments * INFO = 0 IF( N.LT.0 ) THEN INFO = -1 ELSE IF( K.LT.0 .OR. K.GT.N-1 ) THEN INFO = -2 ELSE IF( LDA.LT.MAX( 1, N ) ) THEN INFO = -5 END IF IF( INFO.LT.0 ) THEN CALL XERBLA( 'DLAGSY', -INFO ) RETURN END IF * * initialize lower triangle of A to diagonal matrix * DO 20 J = 1, N DO 10 I = J + 1, N A( I, J ) = ZERO 10 CONTINUE 20 CONTINUE DO 30 I = 1, N A( I, I ) = D( I ) 30 CONTINUE * * Generate lower triangle of symmetric matrix * DO 40 I = N - 1, 1, -1 * * generate random reflection * CALL DLARNV( 3, ISEED, N-I+1, WORK ) WN = DNRM2( N-I+1, WORK, 1 ) WA = SIGN( WN, WORK( 1 ) ) IF( WN.EQ.ZERO ) THEN TAU = ZERO ELSE WB = WORK( 1 ) + WA CALL DSCAL( N-I, ONE / WB, WORK( 2 ), 1 ) WORK( 1 ) = ONE TAU = WB / WA END IF * * apply random reflection to A(i:n,i:n) from the left * and the right * * compute y := tau * A * u * CALL DSYMV( 'Lower', N-I+1, TAU, A( I, I ), LDA, WORK, 1, ZERO, $ WORK( N+1 ), 1 ) * * compute v := y - 1/2 * tau * ( y, u ) * u * ALPHA = -HALF*TAU*DDOT( N-I+1, WORK( N+1 ), 1, WORK, 1 ) CALL DAXPY( N-I+1, ALPHA, WORK, 1, WORK( N+1 ), 1 ) * * apply the transformation as a rank-2 update to A(i:n,i:n) * CALL DSYR2( 'Lower', N-I+1, -ONE, WORK, 1, WORK( N+1 ), 1, $ A( I, I ), LDA ) 40 CONTINUE * * Reduce number of subdiagonals to K * DO 60 I = 1, N - 1 - K * * generate reflection to annihilate A(k+i+1:n,i) * WN = DNRM2( N-K-I+1, A( K+I, I ), 1 ) WA = SIGN( WN, A( K+I, I ) ) IF( WN.EQ.ZERO ) THEN TAU = ZERO ELSE WB = A( K+I, I ) + WA CALL DSCAL( N-K-I, ONE / WB, A( K+I+1, I ), 1 ) A( K+I, I ) = ONE TAU = WB / WA END IF * * apply reflection to A(k+i:n,i+1:k+i-1) from the left * CALL DGEMV( 'Transpose', N-K-I+1, K-1, ONE, A( K+I, I+1 ), LDA, $ A( K+I, I ), 1, ZERO, WORK, 1 ) CALL DGER( N-K-I+1, K-1, -TAU, A( K+I, I ), 1, WORK, 1, $ A( K+I, I+1 ), LDA ) * * apply reflection to A(k+i:n,k+i:n) from the left and the right * * compute y := tau * A * u * CALL DSYMV( 'Lower', N-K-I+1, TAU, A( K+I, K+I ), LDA, $ A( K+I, I ), 1, ZERO, WORK, 1 ) * * compute v := y - 1/2 * tau * ( y, u ) * u * ALPHA = -HALF*TAU*DDOT( N-K-I+1, WORK, 1, A( K+I, I ), 1 ) CALL DAXPY( N-K-I+1, ALPHA, A( K+I, I ), 1, WORK, 1 ) * * apply symmetric rank-2 update to A(k+i:n,k+i:n) * CALL DSYR2( 'Lower', N-K-I+1, -ONE, A( K+I, I ), 1, WORK, 1, $ A( K+I, K+I ), LDA ) * A( K+I, I ) = -WA DO 50 J = K + I + 1, N A( J, I ) = ZERO 50 CONTINUE 60 CONTINUE * * Store full symmetric matrix * DO 80 J = 1, N DO 70 I = J + 1, N A( J, I ) = A( I, J ) 70 CONTINUE 80 CONTINUE RETURN * * End of DLAGSY * END DOUBLE PRECISION FUNCTION DLARAN( ISEED ) * * -- LAPACK auxiliary routine (version 3.0) -- * Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd., * Courant Institute, Argonne National Lab, and Rice University * February 29, 1992 * * .. Array Arguments .. INTEGER ISEED( 4 ) * .. * * Purpose * ======= * * DLARAN returns a random real number from a uniform (0,1) * distribution. * * Arguments * ========= * * ISEED (input/output) INTEGER array, dimension (4) * On entry, the seed of the random number generator; the array * elements must be between 0 and 4095, and ISEED(4) must be * odd. * On exit, the seed is updated. * * Further Details * =============== * * This routine uses a multiplicative congruential method with modulus * 2**48 and multiplier 33952834046453 (see G.S.Fishman, * 'Multiplicative congruential random number generators with modulus * 2**b: an exhaustive analysis for b = 32 and a partial analysis for * b = 48', Math. Comp. 189, pp 331-344, 1990). * * 48-bit integers are stored in 4 integer array elements with 12 bits * per element. Hence the routine is portable across machines with * integers of 32 bits or more. * * ===================================================================== * * .. Parameters .. INTEGER M1, M2, M3, M4 PARAMETER ( M1 = 494, M2 = 322, M3 = 2508, M4 = 2549 ) DOUBLE PRECISION ONE PARAMETER ( ONE = 1.0D+0 ) INTEGER IPW2 DOUBLE PRECISION R PARAMETER ( IPW2 = 4096, R = ONE / IPW2 ) * .. * .. Local Scalars .. INTEGER IT1, IT2, IT3, IT4 * .. * .. Intrinsic Functions .. INTRINSIC DBLE, MOD * .. * .. Executable Statements .. * * multiply the seed by the multiplier modulo 2**48 * IT4 = ISEED( 4 )*M4 IT3 = IT4 / IPW2 IT4 = IT4 - IPW2*IT3 IT3 = IT3 + ISEED( 3 )*M4 + ISEED( 4 )*M3 IT2 = IT3 / IPW2 IT3 = IT3 - IPW2*IT2 IT2 = IT2 + ISEED( 2 )*M4 + ISEED( 3 )*M3 + ISEED( 4 )*M2 IT1 = IT2 / IPW2 IT2 = IT2 - IPW2*IT1 IT1 = IT1 + ISEED( 1 )*M4 + ISEED( 2 )*M3 + ISEED( 3 )*M2 + $ ISEED( 4 )*M1 IT1 = MOD( IT1, IPW2 ) * * return updated seed * ISEED( 1 ) = IT1 ISEED( 2 ) = IT2 ISEED( 3 ) = IT3 ISEED( 4 ) = IT4 * * convert 48-bit integer to a real number in the interval (0,1) * DLARAN = R*( DBLE( IT1 )+R*( DBLE( IT2 )+R*( DBLE( IT3 )+R* $ ( DBLE( IT4 ) ) ) ) ) RETURN * * End of DLARAN * END * ********************************************************************** * PROGRAM DRUN * * Description: * * This is the testing and timing driver 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 * * Local constants and variables: * DOUBLE PRECISION ONE PARAMETER ( ONE = 1.0D0 ) * * --- array dimensions --- * INTEGER NMAX, SZA, SZACPY, SZU, SZWORK PARAMETER ( NMAX = 1400 , > SZA = NMAX * NMAX , > SZACPY = 500 * NMAX , > SZU = NMAX * NMAX , > SZWORK = NMAX * NMAX ) DOUBLE PRECISION A( SZA ), ACPY( SZACPY ), U( SZU ), > EVLS( NMAX ), D( NMAX ), E( NMAX ), > TAU( NMAX ), WORK( SZWORK ) COMMON /ARRAYS/ A, ACPY, U, EVLS, D, E, TAU, WORK * * nmax maximum matrix size * a holds the matrix A to be reduced (full or banded) * sza size of the array a. * sza >= nmax * nmax, if full matrices are handled * >= ( bmax+1 ) * nmax, if only banded matrices with * semibandwidth <= bmax are handled * acpy holds the reduced matrix (banded) * szacpy size of the array acpy. * szacpy >= ( bmax+1 ) * nmax, where bmax is the maximum * semibandwith * u holds the accumulated transformation matrix U, if required * szu size of the array u. * szu >= nmax * nmax, if U is accumulated * >= 0, otherwise * evls the eigenvalues of the matrix A (accessed during * initialization) * d main diagonal of the reduced tridiagonal matrix * e sub(super)diagonal of the reduced tridiagonal matrix * tau scaling factors in the reduction full -> banded/tridiagonal * work workspace * szwork size of the array work. * szwork depends on the reduction algorithms that are run, on * the matrix sizes, on the blocking factors, and on the * leading dimensions of the matrices. * Recomended: szwork >= 100 * nmax. * arrays common block is used only because some machines cannot * handle large arrays on the stack * * --- I/O control --- * INTEGER IUNIT, OUNIT, OUNITF, I1MACH * PARAMETER ( IUNIT = 5, OUNITF = 8 ) * CHARACTER*8 IFILE CHARACTER*8 OFILE * PARAMETER ( IFILE = 'INFILE' ) INTEGER OLEVEL, OUTSUM, OUTTUN, OUTRUN, OUTDET, > LINENO, LINE0 PARAMETER ( OUTSUM = 1, OUTTUN = 2, OUTRUN = 3, > OUTDET = 4 ) CHARACTER*78 MBUF * * iunit unit number for input file * ounit unit number for output * ounitf unit number for output file * ifile name of input file * ofile name of output file * olevel level of output * olevel = outsum : only summary for all the runs * = outtun : short summaries for tuning * = outrun : summary for each run * = outdet : detailed output for each run * lineno number of current input line * line0 first input line corresponding to the current run * mbuf buffer for messages * * --- for statistics --- * INTEGER SYTRD, ORGTR, SBTRD, SYRDB, SYGTR, SBRDB, > SBRDT, SY2BC, SY2BI, SB2BC, SB2BI, SYRDD, > SBRDD, TOTAL PARAMETER ( SYTRD = 1, ORGTR = 2, SBTRD = 3, > SYRDB = 4, SYGTR = 5, SBRDB = 6, > SBRDT = 7, SY2BC = 8, SY2BI = 9, > SB2BC = 10, SB2BI = 11, SYRDD = 12, > SBRDD = 13, TOTAL = 14 ) INTEGER TRY( TOTAL ), SKIP( TOTAL ), FAIL( TOTAL ) CHARACTER*6 PRBLMN( TOTAL ) CHARACTER*40 COMMNT( TOTAL ) * * sytrd tests for dsytrd (full -> tridiagonal, LAPACK) * orgtr tests for dorgtr (backward accumulation, LAPACK) * sbtrd tests for dsbtrd (banded -> tridiagonal, LAPACK) * syrdb tests for dsyrdb (full -> banded, SBR) * sygtr tests for dsygtr (backward accumulation, SBR) * sbrdb tests for dsbrdb (banded -> banded, SBR) * sbrdt tests for dsbrdt (banded -> tridiagonal, SBR) * sy2bc tests for dsy2bc (full -> banded copy, SBR) * sy2bi tests for dsy2bi (full -> banded repacking, SBR) * sb2bc tests for dsb2bc (banded -> banded copy, SBR) * sb2bi tests for dsb2bi (banded -> banded repacking, SBR) * syrdd tests for dsyrdd (reduction driver for full matrices, SBR) * sbrdd tests for dsbrdd (reduction driver for banded matrices, SBR) * total all tests * count counters for all tests * fail counters for failed tests * skip counters for skipped tests * prblmn names of the reduction paths (for output) * commnt comments to the reduction paths (for output) * REAL STIME, BTIME, CTIME, RTIME * * stime time before all the tests * btime time before the procedure call * ctime time for the procedure call * rtime time for a full reduction/accumulation path * * --- controlling the test runs --- * DOUBLE PRECISION EPS, NOTUSD * * eps machine epsilon * notusd (large) value for marking memory that should not be accessed * CHARACTER*5 PNAME INTEGER MAXDIM, PRBLM, N, B1, LDA1, B2, LDA2, LDU, > NSTEPS, STEP, LWORK1, LWORK2, NX1, NX2, > XINFO1, XINFO2, INFO CHARACTER MTYPE, UPLO, FRMT1, FRMT2, JOBU, JOBU0 DOUBLE PRECISION DIAM, DRPTOL INTEGER B( 100 ), NB( 100 ) * * pname name of the routine to test (without precision specifier) * maxdim maximum matrix size for the runs (runs with larger matrices * are skipped) * prblm number of the routine to test (numbering sytrd=1, etc. as * above) * mtype matrix type * mtype = 'R' : Eigenvalues are uniformly random in [ -1, 1 ). * = 'I' : ISDA-type matrix: eigenvalues are clustered * around 0 and 1. * diam diameter of the eigenvalue clusters in multiples of the * machine precision (used only for ISDA-type matrices) * uplo use upper or lower triangle of the matrix ? * n matrix dimension * frmt1 format of the matrix before the reduction ('F'ull/'B'anded) * b1 semibandwidth before the reduction * lda1 leading dimension before the reductino * frmt2 format after the reduction ('B'anded/'T'ridiagonal) * b2 semibandwidth after the reduction * lda2 leading dimension after the reduction * jobu0 accumulate the transformations in an orthogonal matrix ? * jobu accumulate in the current routine ? * ldu leading dimension of the array u * nsteps number of reduction steps (used only in the driver routines) * step number of the last step performed or tried * b intermediate bandwidths for multi-step reduction * nb blocking factors for the reduction/accumulation steps * drptol threshold for skipping ransformations * lwork1 length of workspace for the reduction * lwork2 length of workspace for backward accumulation * nx1 cross-over point for LAPACK tridiagonalization dsytrd * nx2 cross-over point for LAPACK backward accumulation dorgtr * xinfo1 error code expected from the reduction routine * xinfo2 error code expected from backward accumulation * info actual error code returned from the routines * CHARACTER CHECK DOUBLE PRECISION ORTHU, SORTHU, TORTHU, RES, SRES, TRES, > DEVLS, SDEVLS, TDEVLS LOGICAL CHECKS, ERRCHK, OK INTEGER NUSED * * check is result checking required ? ('C'check/'N'oCheck) * checks are checks enabled ? * orthu ortogonality error, i.e., (Frobenius) norm of U' * U - I * sorthu = orthu / ( n * eps ), the scaled orthogonality error * torthu threshold on sorthu for accepting the run * res residual, i.e., (Frobenius) norm of U * B - A * U, where * A is the original matrix and B is the reduced matrix * sres = res / ( n * eps * norm( A ) ), the scaled residual * tres threshold on sres * devls deviation of the eigenvalues, i.e., (Frobenius) norm of * spec( A ) - spec( B ), where spec( A ) and spec( B ) are * the (ascendingly sorted) eigenvalues of the original matrix * and the reduced matrix, respectively * sdevls = devls / ( n * eps * norm( A ) ), the scaled deviation * tdevls threshold on devls * errchk was it a check for error exit ? * ok did the numerical checks meet the thresholds ? * nused number of workspace elements that were modified * INTEGER I * * Routines called: * REAL SECOND DOUBLE PRECISION D1MACH LOGICAL LSAME, LXSAME EXTERNAL SECOND, D1MACH, LSAME, LXSAME * * dsecnd timer (LAPACK) * dlamch determine machine parameters (LAPACK) * lsame case-insensitive character-matching (BLAS) * lxsame case-insensitive string matching (this file) * EXTERNAL DLACPY, DORGTX, DSB2BC, DSB2BI, DSBRDB, > DSBRDD, DSBRDT, DSBTRX, DSY2BC, DSY2BI, > DSYGTR, DSYINI, DSYNCK, DSYRDB, DSYRDD, > DSYTRX * * dlacpy copy matrix (LAPACK) * dorgtx backward accumulation of transformations (LAPACK, modified) * dsb2bc banded -> banded copy (SBR) * dsb2bi banded -> banded repacking (SBR) * dsbrdb banded -> banded reduction (SBR) * dsbrdd reduction driver for banded matrices (SBR) * dsbrdt banded -> tridiagonal reduction (SBR) * dsbtrx banded -> tridiagonal reduction (LAPACK, modified) * dsy2bc full -> banded copy (SBR) * dsy2bi full -> banded repacking (SBR) * dsygtr backward accumulation of transformations (SBR) * dsyini initialize symmetric (full or banded) matrix * dsynck numerical checks for the reduction * dsyrdb full -> banded reduction (SBR) * dsyrdd reduction driver for full matrices (SBR) * dsytrx full -> tridiagonal reduction (LAPACK, modified) * INTRINSIC MAX, MIN * * --- names and explanations for the test paths --- * DATA > PRBLMN( SYTRD )/'dsytrd'/, > COMMNT( SYTRD )/'full -> tridiagonal, one-step (LAPACK)'/, > PRBLMN( ORGTR )/'dorgtr'/, > COMMNT( ORGTR )/'accumulation of transformations (LAPACK)'/, > PRBLMN( SBTRD )/'dsbtrd'/, > COMMNT( SBTRD )/'banded -> tridiagonal, one-step (LAPACK)'/ DATA > PRBLMN( SYRDB )/'dsyrdb'/, > COMMNT( SYRDB )/'full -> banded, one-step (SBR)'/, > PRBLMN( SYGTR )/'dsygtr'/, > COMMNT( SYGTR )/'accumulation of transformations (SBR)'/, > PRBLMN( SBRDB )/'dsbrdb'/, > COMMNT( SBRDB )/'banded -> banded, one-step (SBR)'/, > PRBLMN( SBRDT )/'dsbrdt'/, > COMMNT( SBRDT )/'banded -> tridiagonal, one-step (SBR)'/ DATA > PRBLMN( SY2BC )/'dsy2bc'/, > COMMNT( SY2BC )/'copy full -> banded (SBR)'/, > PRBLMN( SY2BI )/'dsy2bi'/, > COMMNT( SY2BI )/'in-place copy full -> banded (SBR)'/, > PRBLMN( SB2BC )/'dsb2bc'/, > COMMNT( SB2BC )/'copy banded -> banded (SBR)'/, > PRBLMN( SB2BI )/'dsb2bi'/, > COMMNT( SB2BI )/'in-place copy banded -> banded (SBR)'/ DATA > PRBLMN( SYRDD )/'dsyrdd'/, > COMMNT( SYRDD )/'reduction driver for full matrices (SBR)'/, > PRBLMN( SBRDD )/'dsbrdd'/, > COMMNT( SBRDD )/'reduction driver for banded matrcs (SBR)'/, > PRBLMN( TOTAL )/'Total '/, > COMMNT( TOTAL )/' '/ * * ---------------------------------------------------------------------- * STIME = SECOND() * * --- initialize --- * DO 1000 I = 1, TOTAL TRY( I ) = 0 SKIP( I ) = 0 FAIL( I ) = 0 1000 CONTINUE * * EPS = DLAMCH( 'Epsilon' ) * NOTUSD = ONE / DLAMCH( 'SafeMinimum' ) EPS = D1MACH(4) NOTUSD = ONE /(D1MACH(1)*(ONE+EPS)) * * --- open input and output files --- * * OPEN( UNIT=IUNIT, FILE=IFILE ) LINENO = 0 * IUNIT = I1MACH(1) OUNIT = I1MACH(2) OLEVEL = OUTSUM MAXDIM = NMAX CHECKS = .TRUE. * 2000 CONTINUE * * --- read next line from input file --- * LINENO = LINENO + 1 LINE0 = LINENO READ( IUNIT, * ) PNAME * WRITE( *, * ) LINE0 * * --- if comment line then just skip it --- * IF ( LSAME( PNAME( 1:1 ), 'Comment' ) ) THEN GOTO 2000 * * --- filename for output file ? --- * ELSEIF ( LSAME( PNAME( 1:1 ), 'FileName' ) ) THEN LINENO = LINENO + 1 READ( IUNIT, * ) OFILE( 2:8 ) OFILE( 1:1 ) = 'DoublePrec' OUNIT = OUNITF OPEN( UNIT=OUNIT, FILE=OFILE ) GOTO 2000 * * --- set output level ? --- * ELSEIF ( LSAME( PNAME( 1:1 ), 'OutputLevel' ) ) THEN LINENO = LINENO + 1 READ( IUNIT, * ) I IF ( ( I .LT. OUTSUM ) .OR. ( I .GT. OUTDET ) ) THEN WRITE( OUNIT, 9300 ) LINENO, 'Output level out of range' ELSE OLEVEL = I ENDIF GOTO 2000 * * --- message to print --- * ELSEIF ( LSAME( PNAME( 1:1 ), 'Print' ) ) THEN LINENO = LINENO + 1 READ( IUNIT, * ) MBUF WRITE( OUNIT, 9100 ) MBUF GOTO 2000 * * --- maximum matrix size --- * ELSEIF ( LSAME( PNAME( 1:1 ), 'MaxDim' ) ) THEN LINENO = LINENO + 1 READ( IUNIT, * ) MAXDIM GOTO 2000 * * --- disable checks ? --- * ELSEIF ( LSAME( PNAME( 1:1 ), 'NoChecks' ) ) THEN CHECKS = .FALSE. GOTO 2000 * * --- test run ? * If so then read and set parameters for the run --- * ELSEIF ( LXSAME( PNAME, 'SYTRD' ) ) THEN * * --- LAPACK reduction full -> tridiagonal --- * PRBLM = SYTRD READ( IUNIT, * ) MTYPE, DIAM, UPLO, N, LDA1, NB( 1 ), NX1, > LWORK1, XINFO1, JOBU, NB( 2 ), NX2, LWORK2, > XINFO2 FRMT1 = 'Full' B1 = MAX( N-1, 0 ) FRMT2 = 'Tridiagonal' B2 = 1 LDA2 = B2 + 1 LDU = N ELSEIF ( LXSAME( PNAME, 'SBTRD' ) ) THEN * * --- LAPACK reduction banded -> tridiagonal --- * PRBLM = SBTRD READ( IUNIT, * ) MTYPE, DIAM, UPLO, N, B1, LDA1, JOBU, LDU, > XINFO1 FRMT1 = 'Banded' FRMT2 = 'Tridiagonal' B2 = 1 LDA2 = B2 + 1 LWORK1 = N ELSEIF ( LXSAME( PNAME, 'SYRDB' ) ) THEN * * --- SBR reduction full -> banded --- * PRBLM = SYRDB READ( IUNIT, * ) MTYPE, DIAM, UPLO, N, LDA1, B2, DRPTOL, > NB( 1 ), LWORK1, XINFO1 LINENO = LINENO + 1 READ( IUNIT, * ) JOBU0, LDU, LWORK2, XINFO2 FRMT1 = 'Full' B1 = MAX( N-1, 0 ) DRPTOL = DRPTOL * EPS FRMT2 = 'Banded' LDA2 = B2 + 1 IF ( LSAME( JOBU0, 'OnFly' ) ) THEN JOBU = 'Update' ELSEIF ( LSAME( JOBU0, 'Update' ) ) THEN JOBU = 'NoU' ELSE JOBU = JOBU0 ENDIF ELSEIF ( LXSAME( PNAME, 'SBRDB' ) ) THEN * * --- SBR reduction banded -> banded --- * PRBLM = SBRDB READ( IUNIT, * ) MTYPE, DIAM, N, B1, LDA1, B2, DRPTOL, > NB( 1 ), JOBU, LDU, LWORK1, XINFO1 FRMT1 = 'Banded' UPLO = 'Lower' DRPTOL = DRPTOL * EPS FRMT2 = 'Banded' LDA2 = B2 + 1 ELSEIF ( LXSAME( PNAME, 'SBRDT' ) ) THEN * * --- SBR reduction banded -> tridiagonal --- * PRBLM = SBRDT READ( IUNIT, * ) MTYPE, DIAM, N, B1, LDA1, DRPTOL, NB( 1 ), > JOBU, LDU, LWORK1, XINFO1 FRMT1 = 'Banded' UPLO = 'Lower' DRPTOL = DRPTOL * EPS FRMT2 = 'Tridiagonal' B2 = 1 LDA2 = B2 + 1 ELSEIF ( LXSAME( PNAME, 'SY2BC' ) ) THEN * * --- SBR copy full -> banded --- * PRBLM = SY2BC READ( IUNIT, * ) MTYPE, DIAM, UPLO, N, B1, LDA1, LDA2, > XINFO1 FRMT1 = 'Full' FRMT2 = 'Banded' B2 = B1 LWORK1 = 0 JOBU = 'NoU' LDU = N ELSEIF ( LXSAME( PNAME, 'SY2BI' ) ) THEN * * --- SBR in-place copy full -> banded --- * PRBLM = SY2BI READ( IUNIT, * ) MTYPE, DIAM, UPLO, N, B1, LDA1, LDA2, > XINFO1 FRMT1 = 'Full' FRMT2 = 'Banded' B2 = B1 LWORK1 = 0 JOBU = 'NoU' LDU = N ELSEIF ( LXSAME( PNAME, 'SB2BC' ) ) THEN * * --- SBR copy banded -> banded --- * PRBLM = SB2BC READ( IUNIT, * ) MTYPE, DIAM, UPLO, N, B1, LDA1, LDA2, > XINFO1 FRMT1 = 'Banded' FRMT2 = 'Banded' B2 = B1 LWORK1 = 0 JOBU = 'NoU' LDU = N ELSEIF ( LXSAME( PNAME, 'SB2BI' ) ) THEN * * --- SBR in-place copy full -> banded --- * PRBLM = SB2BI READ( IUNIT, * ) MTYPE, DIAM, UPLO, N, B1, LDA1, LDA2, > XINFO1 FRMT1 = 'Banded' FRMT2 = 'Banded' B2 = B1 LWORK1 = 0 JOBU = 'NoU' LDU = N ELSEIF ( LXSAME( PNAME, 'SYRDD' ) ) THEN * * --- SBR driver for full matrices --- * PRBLM = SYRDD READ( IUNIT, * ) MTYPE, DIAM, UPLO, N, LDA1, B2, LDA2, > NSTEPS, DRPTOL, JOBU, LWORK1, XINFO1 FRMT1 = 'Full' B1 = MAX( N-1, 0 ) DRPTOL = DRPTOL * EPS IF ( B2 .EQ. 1 ) THEN FRMT2 = 'Tridiagonal' ELSE FRMT2 = 'Banded' ENDIF LDU = N IF ( NSTEPS .GT. 1 ) THEN LINENO = LINENO + 1 READ( IUNIT, * ) ( B( I ), I = 1, NSTEPS-1 ) ENDIF IF ( NSTEPS .GT. 0 ) THEN LINENO = LINENO + 1 READ( IUNIT, * ) ( NB( I ), I = 1, NSTEPS ) ENDIF ELSEIF ( LXSAME( PNAME, 'SBRDD' ) ) THEN * * --- SBR driver for banded matrices --- * PRBLM = SBRDD READ( IUNIT, * ) MTYPE, DIAM, UPLO, N, B1, LDA1, B2, NSTEPS, > DRPTOL, JOBU, LDU, LWORK1, XINFO1 FRMT1 = 'Banded' DRPTOL = DRPTOL * EPS IF ( B2 .EQ. 1 ) THEN FRMT2 = 'Tridiagonal' ELSE FRMT2 = 'Banded' ENDIF LDA2 = B2 + 1 IF ( NSTEPS .GT. 1 ) THEN LINENO = LINENO + 1 READ( IUNIT, * ) ( B( I ), I = 1, NSTEPS-1 ) ENDIF IF ( NSTEPS .GT. 0 ) THEN LINENO = LINENO + 1 READ( IUNIT, * ) ( NB( I ), I = 1, NSTEPS ) ENDIF * * --- done ? --- * ELSEIF ( LSAME( PNAME( 1:1 ), 'Quit' ) ) THEN GOTO 8000 ELSE WRITE( OUNIT, 9300 ) LINENO, 'Command not recognized' GOTO 2000 ENDIF * * - - - - - - - - if we get here then a test run is required - - - - - * LINENO = LINENO + 2 READ ( IUNIT, * ) CHECK, TORTHU, TRES, TDEVLS ERRCHK = .FALSE. * TRY( PRBLM ) = TRY( PRBLM ) + 1 * * --- is the problem too large ? --- * IF ( N .GT. MAXDIM ) THEN SKIP( PRBLM ) = SKIP( PRBLM ) + 1 WRITE( OUNIT, 9310 ) LINE0 GOTO 2000 ENDIF * * --- initialize matrices --- * INFO = 0 BTIME = SECOND() CALL DSYINI( MTYPE, EVLS, NMAX, DIAM, > FRMT1, UPLO, N, B1, A, LDA1, SZA, > JOBU, U, LDU, SZU, > NOTUSD, WORK, SZWORK, INFO ) CTIME = SECOND() - BTIME * * --- protocol output, if required --- * IF ( OLEVEL .GE. OUTDET ) THEN WRITE( OUNIT, 9500 ) MTYPE, NMAX, DIAM, FRMT1, UPLO, N WRITE( OUNIT, 9501 ) B1, LDA1, SZA, JOBU, LDU, SZU WRITE( OUNIT, 9502 ) NOTUSD, SZWORK WRITE( OUNIT, 9400 ) INFO, CTIME ENDIF * IF ( ( INFO .EQ. -3 ) .OR. ( INFO .EQ. -11 ) .OR. > ( INFO .EQ. -15 ) .OR. ( INFO .EQ. -18 ) ) THEN * * --- test problem is too large : skip --- * SKIP( PRBLM ) = SKIP( PRBLM ) + 1 WRITE( OUNIT, 9310 ) LINE0 GOTO 3000 ENDIF * * --- mark workspace "unused" --- * DO 2100 I = 1, MIN( MAX( 2*LWORK1, 10000 ), SZWORK ) WORK( I ) = NOTUSD 2100 CONTINUE * * - - - - - - - - do the reduction / repacking - - - - - - - - - - - - * INFO = 0 BTIME = SECOND() IF ( PRBLM .EQ. SYTRD ) THEN CALL DSYTRX( NB( 1 ), NX1, UPLO, N, A, LDA1, D, E, > TAU, WORK, LWORK1, INFO ) ELSEIF ( PRBLM .EQ. SBTRD ) THEN CALL DSBTRX( JOBU, UPLO, N, B1, A, LDA1, D, E, > U, LDU, WORK, INFO ) ELSEIF ( PRBLM .EQ. SYRDB ) THEN CALL DSYRDB( UPLO, JOBU, N, B2, A, LDA1, DRPTOL, > U, LDU, NB( 1 ), TAU, WORK, LWORK1, INFO ) ELSEIF ( PRBLM .EQ. SBRDB ) THEN CALL DSBRDB( JOBU, N, B1, B2, A, LDA1, DRPTOL, > U, LDU, NB( 1 ), WORK, LWORK1, INFO ) ELSEIF ( PRBLM .EQ. SBRDT ) THEN CALL DSBRDT( JOBU, N, B1, A, LDA1, DRPTOL, D, E, > U, LDU, NB( 1 ), WORK, LWORK1, INFO ) ELSEIF ( PRBLM .EQ. SY2BC ) THEN CALL DSY2BC( UPLO, N, B1, A, LDA1, ACPY, LDA2, INFO ) ELSEIF ( PRBLM .EQ. SY2BI ) THEN CALL DSY2BI( UPLO, N, B1, A, LDA1, LDA2, INFO ) ELSEIF ( PRBLM .EQ. SB2BC ) THEN CALL DSB2BC( UPLO, N, B1, A, LDA1, ACPY, LDA2, INFO ) ELSEIF ( PRBLM .EQ. SB2BI ) THEN CALL DSB2BI( UPLO, N, B1, A, LDA1, LDA2, INFO ) ELSEIF ( PRBLM .EQ. SYRDD ) THEN CALL DSYRDD( JOBU, UPLO, N, B2, A, LDA1, DRPTOL, > ACPY, LDA2, D, E, NSTEPS, B, NB, > WORK, LWORK1, STEP, INFO ) ELSEIF ( PRBLM .EQ. SBRDD ) THEN CALL DSBRDD( JOBU, UPLO, N, B1, B2, A, LDA1, DRPTOL, > D, E, U, LDU, NSTEPS, B, NB, > WORK, LWORK1, STEP, INFO ) ENDIF CTIME = SECOND() - BTIME RTIME = CTIME * * --- protocol output, if required --- * IF ( OLEVEL .GE. OUTDET ) THEN IF ( PRBLM .EQ. SYTRD ) THEN WRITE( OUNIT, 9510 ) UPLO, N, LDA1, NB( 1 ), NX1, LWORK1 WRITE( OUNIT, 9400 ) INFO, CTIME ELSEIF ( PRBLM .EQ. SBTRD ) THEN WRITE( OUNIT, 9520 ) JOBU, UPLO, N, B1, LDA1, LDU WRITE( OUNIT, 9400 ) INFO, CTIME ELSEIF ( PRBLM .EQ. SYRDB ) THEN WRITE( OUNIT, 9530 ) UPLO, JOBU, N, B2, LDA1, DRPTOL WRITE( OUNIT, 9531 ) LDU, NB( 1 ), LWORK1 WRITE( OUNIT, 9400 ) INFO, CTIME ELSEIF ( PRBLM .EQ. SBRDB ) THEN WRITE( OUNIT, 9540 ) JOBU, N, B1, B2, LDA1, DRPTOL WRITE( OUNIT, 9531 ) LDU, NB( 1 ), LWORK1 WRITE( OUNIT, 9400 ) INFO, CTIME ELSEIF ( PRBLM .EQ. SBRDT ) THEN WRITE( OUNIT, 9550 ) JOBU, N, B1, LDA1, DRPTOL WRITE( OUNIT, 9531 ) LDU, NB( 1 ), LWORK1 WRITE( OUNIT, 9400 ) INFO, CTIME ELSEIF ( PRBLM .EQ. SY2BC ) THEN WRITE( OUNIT, 9560 ) UPLO, N, B1, LDA1, LDA2 WRITE( OUNIT, 9400 ) INFO, CTIME ELSEIF ( PRBLM .EQ. SY2BI ) THEN WRITE( OUNIT, 9570 ) UPLO, N, B1, LDA1, LDA2 WRITE( OUNIT, 9400 ) INFO, CTIME ELSEIF ( PRBLM .EQ. SB2BC ) THEN WRITE( OUNIT, 9580 ) UPLO, N, B1, LDA1, LDA2 WRITE( OUNIT, 9400 ) INFO, CTIME ELSEIF ( PRBLM .EQ. SB2BI ) THEN WRITE( OUNIT, 9590 ) UPLO, N, B1, LDA1, LDA2 WRITE( OUNIT, 9400 ) INFO, CTIME ELSEIF ( PRBLM .EQ. SYRDD ) THEN WRITE( OUNIT, 9600 ) JOBU, UPLO, N, B2, LDA1 WRITE( OUNIT, 9601 ) DRPTOL, LDA2, NSTEPS, LWORK1 WRITE( OUNIT, 9401 ) STEP, INFO, CTIME ELSEIF ( PRBLM .EQ. SBRDD ) THEN WRITE( OUNIT, 9610 ) JOBU, UPLO, N, B1, B2, LDA1 WRITE( OUNIT, 9611 ) DRPTOL, LDU, NSTEPS, LWORK1 WRITE( OUNIT, 9401 ) STEP, INFO, CTIME ENDIF ELSEIF ( OLEVEL .EQ. OUTTUN ) THEN IF ( PRBLM .EQ. SYTRD ) THEN WRITE( OUNIT, 9515 ) UPLO, N, NB( 1 ), INFO, CTIME ELSEIF ( PRBLM .EQ. SBTRD ) THEN WRITE( OUNIT, 9525 ) UPLO, JOBU, N, B1, INFO, CTIME ELSEIF ( PRBLM .EQ. SYRDB ) THEN WRITE( OUNIT, 9535 ) UPLO, JOBU, N, B2, NB( 1 ), INFO, > CTIME ELSEIF ( PRBLM .EQ. SBRDB ) THEN WRITE( OUNIT, 9545 ) JOBU, N, B1, B2, NB( 1 ), INFO, CTIME ELSEIF ( PRBLM .EQ. SBRDT ) THEN WRITE( OUNIT, 9555 ) JOBU, N, B1, NB( 1 ), INFO, CTIME ELSEIF ( PRBLM .EQ. SYRDD ) THEN WRITE( OUNIT, 9605 ) UPLO, JOBU, N, B2, NSTEPS, STEP, > INFO, CTIME ELSEIF ( PRBLM .EQ. SBRDD ) THEN WRITE( OUNIT, 9615 ) UPLO, JOBU, N, B1, B2, NSTEPS, STEP, > INFO, CTIME ENDIF ENDIF * * - - - - - - - - check if the error code is as expected - - - - - - - * IF ( INFO .NE. XINFO1 ) THEN * * --- wrong error code --- * FAIL( PRBLM ) = FAIL( PRBLM ) + 1 IF ( ( PRBLM .EQ. SYRDD ) .OR. ( PRBLM .EQ. SBRDD ) ) THEN WRITE( OUNIT, 9900 ) LINE0, PRBLMN( PRBLM ), INFO, STEP, > XINFO1 ELSE WRITE( OUNIT, 9901 ) LINE0, PRBLMN( PRBLM ), INFO, XINFO1 ENDIF GOTO 3000 ELSEIF ( ( ( PRBLM .EQ. SYRDD ) .OR. ( PRBLM .EQ. SBRDD ) ) > .AND. ( INFO .EQ. 1 ) .AND. ( NSTEPS .GT. 0 ) > .AND. ( STEP .NE. NSTEPS ) ) THEN * * --- error code was ok, but the driver took a wrong * number of steps --- * FAIL( PRBLM ) = FAIL( PRBLM ) + 1 WRITE( OUNIT, 9910 ) LINE0, PRBLMN( PRBLM ), STEP, > NSTEPS GOTO 3000 ELSEIF ( INFO .LT. 0 ) THEN * * --- successful error exit --- * ERRCHK = .TRUE. GOTO 3000 ENDIF * * - - - - - - - - check workspace usage - - - - - - - - - - - - - - - - * NUSED = 0 DO 2200 I = 1, MIN( MAX( 2*LWORK1, 10000 ), SZWORK ) IF ( .NOT. ( WORK( I ) .EQ. NOTUSD ) ) NUSED = I 2200 CONTINUE * IF ( NUSED .GT. LWORK1 ) THEN * * --- ran over the workspace bounds --- * FAIL( PRBLM ) = FAIL( PRBLM ) + 1 WRITE( OUNIT, 9920 ) LINE0, PRBLMN( PRBLM ), NUSED, LWORK1 GOTO 3000 ELSEIF ( OLEVEL .GE. OUTDET ) THEN * * --- write protocol --- * WRITE( OUNIT, 9410 ) NUSED, LWORK1 ENDIF * * - - - - - - - - accumulate transformations, if required - - - - - - - * IF ( ( PRBLM .EQ. SYTRD ) .AND. LSAME( JOBU, 'Update' ) ) THEN * * --- copy the Householder vectors into the array u --- * CALL DLACPY( UPLO, N, N, A, LDA1, U, LDU ) * * --- backward accumulation --- * TRY( ORGTR ) = TRY( ORGTR ) + 1 INFO = 0 BTIME = SECOND() CALL DORGTX( NB( 2 ), NX2, UPLO, N, U, LDU, TAU, > WORK, LWORK2, INFO ) CTIME = SECOND() - BTIME RTIME = RTIME + CTIME * * --- protocol output, if required --- * IF ( OLEVEL .GE. OUTDET ) THEN WRITE( OUNIT, 9620 ) UPLO, N, LDU, NB( 2 ), NX2, LWORK2 WRITE( OUNIT, 9400 ) INFO, CTIME ENDIF * * --- is the error code as expected ? --- * IF ( INFO .NE. XINFO2 ) THEN FAIL( ORGTR ) = FAIL( ORGTR ) + 1 WRITE( OUNIT, 9901 ) LINE0, 'dorgtr', INFO, XINFO2 GOTO 3000 ELSEIF ( INFO .NE. 0 ) THEN ERRCHK = .TRUE. GOTO 3000 ENDIF * ELSEIF ( ( PRBLM .EQ. SYRDB ) .AND. LSAME( JOBU0, 'Update' ) ) > THEN * * --- copy the Householder vectors into the array u --- * CALL DLACPY( UPLO, N, N, A, LDA1, U, LDU ) * * --- backward accumulation --- * TRY( SYGTR ) = TRY( SYGTR ) + 1 INFO = 0 BTIME = SECOND() CALL DSYGTR( UPLO, N, B2, U, LDU, TAU, WORK, LWORK2, INFO ) CTIME = SECOND() - BTIME RTIME = RTIME + CTIME * * --- protocol output, if required --- * IF ( OLEVEL .GE. OUTDET ) THEN WRITE( OUNIT, 9630 ) UPLO, N, B2, LDU, LWORK2 WRITE( OUNIT, 9400 ) INFO, CTIME ENDIF * * --- is the error code as expected ? --- * IF ( INFO .NE. XINFO2 ) THEN FAIL( SYGTR ) = FAIL( SYGTR ) + 1 WRITE( OUNIT, 9901 ) LINE0, 'dsygtr', INFO, XINFO2 GOTO 3000 ELSEIF ( INFO .NE. 1 ) THEN GOTO 3000 ENDIF ENDIF * * - - - - - - - - check results - - - - - - - - - - - - - - - - - - - - * ORTHU = -ONE SORTHU = -ONE RES = -ONE SRES = -ONE DEVLS = -ONE SDEVLS = -ONE * IF ( ( .NOT. ERRCHK ) .AND. > CHECKS .AND. LSAME( CHECK, 'Check' ) ) THEN OK = .TRUE. * * --- if the reduced matrix is banded then copy it * into the array acpy --- * IF ( PRBLM .EQ. SYRDB ) THEN INFO = 0 BTIME = SECOND() CALL DSY2BC( UPLO, N, B2, A, LDA1, ACPY, LDA2, INFO ) CTIME = SECOND() - BTIME IF ( OLEVEL .GE. OUTDET ) THEN WRITE( OUNIT, 9560 ) UPLO, N, B2, LDA1, LDA2 WRITE( OUNIT, 9400 ) INFO, CTIME ENDIF IF ( LSAME( JOBU0, 'Update' ) ) JOBU = 'Update' ELSEIF ( ( PRBLM .EQ. SBRDB ) .OR. > ( ( PRBLM .EQ. SBRDD ) .AND. ( B2 .GT. 1 ) ) ) THEN INFO = 0 BTIME = SECOND() CALL DSB2BC( 'Lower', N, B2, A, LDA1, ACPY, LDA2, INFO ) CTIME = SECOND() - BTIME IF ( OLEVEL .GE. OUTDET ) THEN WRITE( OUNIT, 9580 ) 'Lower', N, B2, LDA1, LDA2 WRITE( OUNIT, 9400 ) INFO, CTIME ENDIF ELSEIF ( ( PRBLM .EQ. SY2BI ) .OR. ( PRBLM .EQ. SB2BI ) ) > THEN INFO = 0 BTIME = SECOND() CALL DSB2BC( 'Lower', N, B2, A, LDA2, ACPY, LDA2, INFO ) CTIME = SECOND() - BTIME IF ( OLEVEL .GE. OUTDET ) THEN WRITE( OUNIT, 9580 ) UPLO, N, B2, LDA2, LDA2 WRITE( OUNIT, 9400 ) INFO, CTIME ENDIF ELSEIF ( PRBLM .EQ. SYRDD ) THEN * * --- copy orthogonal matrix into u --- * CALL DLACPY( 'Full', N, N, A, LDA1, U, LDU ) ENDIF * * --- perform numerical checks --- * INFO = 0 BTIME = SECOND() CALL DSYNCK( EVLS, FRMT1, UPLO, N, B1, A, LDA1, SZA, > FRMT2, B2, ACPY, LDA2, D, E, JOBU, U, LDU, > ORTHU, SORTHU, RES, SRES, DEVLS, SDEVLS, > NOTUSD, WORK, SZWORK, INFO ) CTIME = SECOND() - BTIME * * --- protocol output, if required --- * IF ( OLEVEL .GE. OUTDET ) THEN WRITE( OUNIT, 9640 ) FRMT1, UPLO, N, B1, LDA1, SZA WRITE( OUNIT, 9641 ) FRMT2, B2, LDA2, JOBU, LDU WRITE( OUNIT, 9642 ) ORTHU, SORTHU WRITE( OUNIT, 9643 ) RES, SRES WRITE( OUNIT, 9644 ) DEVLS, SDEVLS WRITE( OUNIT, 9645 ) NOTUSD, SZWORK WRITE( OUNIT, 9400 ) INFO, CTIME ENDIF * * --- failed any computational check ? --- * IF ( .NOT. ( SORTHU .LE. TORTHU ) ) THEN WRITE( OUNIT, 9930 ) LINE0, 'orhogonality', SORTHU, TORTHU OK = .FALSE. ENDIF IF ( .NOT. ( SRES .LE. TRES ) ) THEN WRITE( OUNIT, 9930 ) LINE0, 'residual', SRES, TRES OK = .FALSE. ENDIF IF ( .NOT. ( SDEVLS .LE. TDEVLS ) ) THEN WRITE( OUNIT, 9930 ) LINE0, 'eigenvalues', SDEVLS, TDEVLS OK = .FALSE. ENDIF IF ( .NOT. OK ) FAIL( PRBLM ) = FAIL( PRBLM ) + 1 ENDIF * * - - - - - - - - print summary for this run - - - - - - - - - - - - - * 3000 IF ( OLEVEL .GE. OUTRUN ) THEN WRITE( OUNIT, 9700 ) LINE0, PRBLMN( PRBLM ), COMMNT( PRBLM ) * IF ( PRBLM .EQ. SYTRD ) THEN WRITE( OUNIT, 9710 ) MTYPE, DIAM, UPLO, N, LDA1 WRITE( OUNIT, 9711 ) NB( 1 ), NX1, LWORK1, XINFO1 WRITE( OUNIT, 9712 ) JOBU, NB( 2 ), NX2, LWORK2, XINFO2 ELSEIF ( PRBLM .EQ. SBTRD ) THEN WRITE( OUNIT, 9720 ) MTYPE, DIAM, UPLO, N, B1, LDA1 WRITE( OUNIT, 9721 ) JOBU, LDU, XINFO1 ELSEIF ( PRBLM .EQ. SYRDB ) THEN WRITE( OUNIT, 9730 ) MTYPE, DIAM, UPLO, N, LDA1, B2 WRITE( OUNIT, 9731 ) DRPTOL, NB( 1 ), LWORK1, XINFO1 WRITE( OUNIT, 9732 ) JOBU, LDU, LWORK2, XINFO2 ELSEIF ( PRBLM .EQ. SBRDB ) THEN WRITE( OUNIT, 9740 ) MTYPE, DIAM, N, B1, LDA1, B2 WRITE( OUNIT, 9741 ) DRPTOL, NB( 1 ), JOBU, LDU, LWORK1 WRITE( OUNIT, 9742 ) XINFO1 ELSEIF ( PRBLM .EQ. SBRDT ) THEN WRITE( OUNIT, 9750 ) MTYPE, DIAM, N, B1, LDA1 WRITE( OUNIT, 9741 ) DRPTOL, NB( 1 ), JOBU, LDU, LWORK1 WRITE( OUNIT, 9742 ) XINFO1 ELSEIF ( ( PRBLM .EQ. SY2BC ) > .OR. ( PRBLM .EQ. SY2BI ) > .OR. ( PRBLM .EQ. SB2BC ) > .OR. ( PRBLM .EQ. SB2BI ) ) THEN WRITE( OUNIT, 9760 ) MTYPE, DIAM, UPLO, N, B1, LDA1 WRITE( OUNIT, 9761 ) LDA2, XINFO1 ELSEIF ( PRBLM .EQ. SYRDD ) THEN WRITE( OUNIT, 9770 ) MTYPE, DIAM, UPLO, N, LDA1, B2 WRITE( OUNIT, 9771 ) LDA2, NSTEPS, DRPTOL, JOBU, LWORK1 WRITE( OUNIT, 9742 ) XINFO1 IF ( NSTEPS .GT. 1 ) THEN WRITE( OUNIT, 9772 ) ( B( I ), I = 1, NSTEPS-1 ) ENDIF IF ( NSTEPS .GT. 0 ) THEN WRITE( OUNIT, 9773 ) ( NB( I ), I = 1, NSTEPS ) ENDIF ELSEIF ( PRBLM .EQ. SBRDD ) THEN WRITE( OUNIT, 9780 ) MTYPE, DIAM, UPLO, N, B1, LDA1, B2 WRITE( OUNIT, 9781 ) NSTEPS, DRPTOL, JOBU, LDU WRITE( OUNIT, 9782 ) LWORK1, XINFO1 IF ( NSTEPS .GT. 1 ) THEN WRITE( OUNIT, 9772 ) ( B( I ), I = 1, NSTEPS-1 ) ENDIF IF ( NSTEPS .GT. 0 ) THEN WRITE( OUNIT, 9773 ) ( NB( I ), I = 1, NSTEPS ) ENDIF ENDIF * * --- print available information on numerical checks --- * IF ( ERRCHK ) THEN WRITE( OUNIT, 9420 ) ELSE IF ( .NOT. ( SORTHU .EQ. -ONE ) ) THEN WRITE( OUNIT, 9430 ) ORTHU, SORTHU, TORTHU ENDIF IF ( .NOT. ( SRES .EQ. -ONE ) ) THEN WRITE( OUNIT, 9431 ) RES, SRES, TRES ENDIF IF ( .NOT. ( SDEVLS .EQ. -ONE ) ) THEN WRITE( OUNIT, 9432 ) DEVLS, SDEVLS, TDEVLS ENDIF ENDIF * WRITE( OUNIT, 9440 ) RTIME ENDIF * IF ( OLEVEL .GE. OUTDET ) WRITE( OUNIT, 9000 ) * * --- end of the main loop --- * GOTO 2000 * * - - - - - - - - print "global" summary - - - - - - - - - - - - - - - * 8000 WRITE( OUNIT, * ) WRITE( OUNIT, 9010 ) WRITE( OUNIT, 9020 ) WRITE( OUNIT, 9000 ) DO 8100 PRBLM = SYTRD, TOTAL-1 WRITE( OUNIT, 9030 ) PRBLMN( PRBLM ), COMMNT( PRBLM ), > TRY( PRBLM ), SKIP( PRBLM ), > FAIL( PRBLM ) TRY( TOTAL ) = TRY( TOTAL ) + TRY( PRBLM ) SKIP( TOTAL ) = SKIP( TOTAL ) + SKIP( PRBLM ) FAIL( TOTAL ) = FAIL( TOTAL ) + FAIL( PRBLM ) 8100 CONTINUE WRITE( OUNIT, 9000 ) WRITE( OUNIT, 9030 ) PRBLMN( TOTAL ), COMMNT( TOTAL ), > TRY( TOTAL ), SKIP( TOTAL ), FAIL( TOTAL ) WRITE( OUNIT, 9000 ) WRITE( OUNIT, 9040 ) SECOND() - STIME * * - - - - - - - - formats - - - - - - - - - - - - - - - - - - - - - - - * * --- "global" summary" --- * 9000 FORMAT( 1X, '----------------------------------------', > '---------------------------------------' ) 9010 FORMAT( 1X, '========================================', > '=======================================' ) * 9020 FORMAT( 1X, 'Tests for ', > ' Total Skipped Failed' ) 9030 FORMAT( 1X, A6, ' : ', A40, ' :', I8, I8, I8 ) * 9040 FORMAT( 1X, 'Total time : ', F8.2, ' seconds' ) * * --- messages --- * 9100 FORMAT( 1X, A ) * * --- problems with the input file --- * 9300 FORMAT( 1X, '*** Error in line ', I5, ' : ', A40 ) 9310 FORMAT( 1X, '+++ Line ', I5, ' : Test too large - skipped' ) * * --- general status reporting --- * 9400 FORMAT( 1X, ' info=', I5, ', time=', F12.6 ) 9401 FORMAT( 1X, ' step=', I5, ', info=', I5, > ', time=', F12.6 ) * 9410 FORMAT( 1X, ' used ', I8, ' out of ', > I8, ' workspace' ) * 9420 FORMAT( 1X, ' ((( check for error exit ))),' ) * 9430 FORMAT( 1X, ' Norm(U''*U-I) =', E10.3, '=', > E10.3, '*n*macheps (thresh=', E10.3, '),' ) 9431 FORMAT( 1X, ' Norm(U*B-A*U)=', E10.3, '=', > E10.3, '*n*macheps*Norm(A) (thresh=', E10.3, '),' ) 9432 FORMAT( 1X, ' Norm(Dlambda)=', E10.3, '=', > E10.3, '*n*macheps*Norm(A) (thresh=', E10.3, '),' ) * 9440 FORMAT( 1X, ' reduction time=', F12.6 ) * * --- formats for tracing single routine calls --- * 9500 FORMAT( 1X, ' dsyini: mtype=', A1, ', szevls=', I5, > ', diam=', E11.4, ', frmt=', A1, ', uplo=', A1, > ', n=', I5, ',' ) 9501 FORMAT( 1X, ' b=', I5, ', lda=', I5, ', sza=', I8, > ', jobu=', A1, ', ldu=', I5, ', szu=', I8, ',' ) 9502 FORMAT( 1X, ' notusd=', E11.4, ', szwork=', I8, ',' ) * 9510 FORMAT( 1X, ' dsytrd: uplo=', A1, ', n=', I5, ', lda=', I5, > ', nb0=', I5, ', nx0=', I5, ', lwork=', I8, ',' ) 9515 FORMAT( 1X, 'dsytrd: uplo=', A1, ', n=', I5, ', nb=', I3, > ', info=', I3, ', time=', F9.3 ) * 9520 FORMAT( 1X, ' dsbtrd: vect=', A1, ', uplo=', A1, ', n=', I5, > ', kd=', I5, ', ldab=', I5, ', ldu=', I5, ',' ) 9525 FORMAT( 1X, 'dsbtrd: uplo=', A1, ', jobu=', A1, ', n=', I5, > ', b1=', I3, ', info=', I3, ', time=', F9.3 ) * 9530 FORMAT( 1X, ' dsyrdb: uplo=', A1, ', job=', A1, ', n=', I5, > ', b=', I5, ', lda=', I5, ', drptol=', E11.4, ',' ) 9531 FORMAT( 1X, ' ldu=', I5, ', nb=', I5, ', lwork=', I8, > ',' ) 9535 FORMAT( 1X, 'dsyrdb: uplo=', A1, ', jobu=', A1, ', n=', I5, > ', b2=', I3, ', nb=', I3, ', info=', I3, > ', time=', F9.3 ) * 9540 FORMAT( 1X, ' dsbrdb: job=', A1, ', n=', I5, ', b1=', I5, > ', b2=', I5, ', lda=', I5, ', drptol=', E11.4, ',' ) 9545 FORMAT( 1X, 'dsbrdb: jobu=', A1, ', n=', I5, ', b1=', I3, > ', b2=', I3, ', nb=',I3, ', info=', I3, > ', time=', F9.3 ) * 9550 FORMAT( 1X, ' dsbrdt: job=', A1, ', n=', I5, ', b=', I5, > ', lda=', I5, ', drptol=', E11.4, ',' ) 9555 FORMAT( 1X, 'dsbrdt: jobu=', A1, ', n=', I5, ', b1=', I3, > ', nb=', I3, ', info=', I3, ', time=', F9.3 ) * 9560 FORMAT( 1X, ' dsy2bc: uplo=', A1, ', n=', I5, ', b=', I5, > ', ldfull=', I5, ', ldband=', I5, ',' ) * 9570 FORMAT( 1X, ' dsy2bi: uplo=', A1, ', n=', I5, ', b=', I5, > ', ldfull=', I5, ', ldband=', I5, ',' ) * 9580 FORMAT( 1X, ' dsb2bc: uplo=', A1, ', n=', I5, ', b=', I5, > ', ldsrc=', I5, ', lddst=', I5, ',' ) * 9590 FORMAT( 1X, ' dsb2bi: uplo=', A1, ', n=', I5, ', b=', I5, > ', ldsrc=', I5, ', lddst=', I5, ',' ) * 9600 FORMAT( 1X, ' dsyrdd: job=', A1, ', uplo=', A1, ', n=', I5, > ', b2=', I5, ', lda=', I5, ',' ) 9601 FORMAT( 1X, ' drptol=', E11.4, ', ldband=', I5, > ', nsteps=', I5, ', lwork=', I8, ',' ) 9605 FORMAT( 1X, 'dsyrdd: uplo=', A1, ', job=', A1, ', n=', I5, > ', b2=', I3, ', nsteps=', I2, ', step=', I2, > ', info=', I3, ', time=', F9.3 ) * 9610 FORMAT( 1X, ' dsbrdd: jobu=', A1, ', uplo=', A1, ', n=', I5, > ', b1=', I5, ', b2=', I5, ', lda=', I5, ',' ) 9611 FORMAT( 1X, ' drptol=', E11.4, ', ldu=', I5, > ', nsteps=', I5, ', lwork=', I8, ',' ) 9615 FORMAT( 1X, 'dsbrdd: uplo=', A1, ', jobu=', A1, ', n=', I5, > ', b1=', I3, ', b2=', I3, ', nsteps=', I2, > ', step=', I2, ', info=', I3, ', time=', F9.3 ) * 9620 FORMAT( 1X, ' dorgtr: uplo=', A1, ', n=', I5, ', lda=', I5, > ', nb=', I5, ', nx=', I5, ', lwork=', I8, ',' ) * 9630 FORMAT( 1X, ' dsygtr: uplo=', A1, ', n=', I5, ', b=', I5, > ', lda=', I5, ', lwork=', I8, ',' ) * 9640 FORMAT( 1X, ' dsynck: frmt1=', A1, ', uplo1=', A1, ', n=', I5, > ', b1=', I5, ', lda1=', I5, ', sza1=', I8, ',' ) 9641 FORMAT( 1X, ' frmt2=', A1, ', b2=', I5, ', lda2=', I5, > ', jobu=', A1, ', ldu=', I5, ',' ) 9642 FORMAT( 1X, ' Norm( U''*U - I ) =', E11.4, > ' = ', E11.4, '*n*macheps,' ) 9643 FORMAT( 1X, ' Norm( U*B - A*U )=', E11.4, > ' = ', E11.4, '*n*macheps*Norm( A ),' ) 9644 FORMAT( 1X, ' Norm( Dlambda ) =', E11.4, > ' = ', E11.4, '*n*macheps*Norm( A ),' ) 9645 FORMAT( 1X, ' notusd=', E11.4, ', szwork=', I8, ',' ) * * --- formats for tracing single runs --- * 9700 FORMAT( 1X, 'Line ', I5, ' / ', A, ' : ', A, ',' ) * 9710 FORMAT( 1X, ' mtype=', A1, ', diam=', E11.4, > ', uplo=', A1, ', n=', I5, ', lda=', I5, ',' ) 9711 FORMAT( 1X, ' nb1=', I5, ', nx1=', I5, ', lwork1=', I8, > ', xinfo1=', I5, ',' ) 9712 FORMAT( 1X, ' jobu=', A1, ', nb2=', I5, ', nx2=', I5, > ', lwork2=', I8, ', xinfo2=', I5, ',' ) * 9720 FORMAT( 1X, ' mtype=', A1, ', diam=', E11.4, ', uplo=', A1, > ', n=', I5, ', b1=', I5, ', lda=', I5, ',' ) 9721 FORMAT( 1X, ' jobu=', A1, ', ldu=', I5, ', xinfo=', I5, ',' ) * 9730 FORMAT( 1X, ' mtype=', A1, ', diam=', E11.4, ', uplo=', A1, > ', n=', I5, ', lda=', I5, ', b2=', I5, ',' ) 9731 FORMAT( 1X, ' drptol=', E11.4, ', nb=', I5, ', lwork1=', I8, > ', xinfo1=', I5, ',' ) 9732 FORMAT( 1X, ' jobu=', A1, ', ldu=', I5, ', lwork2=', I8, > ', xinfo2=', I5, ',' ) * 9740 FORMAT( 1X, ' mtype=', A1, ', diam=', E11.4, ', n=', I5, > ', b1=', I5, ', lda=', I5, ', b2=', I5, ',' ) 9741 FORMAT( 1X, ' drptol=', E11.4, ', nb=', I5, ', jobu=', A1, > ', ldu=', I5, ', lwork=', I8, ',' ) 9742 FORMAT( 1X, ' xinfo=', I5, ',' ) * 9750 FORMAT( 1X, ' mtype=', A1, ', diam=', E11.4, > ', n=', I5, ', b1=', I5, ', lda=', I5, ',' ) * 9760 FORMAT( 1X, ' mtype=', A1, ', diam=', E11.4, ', uplo=', A1, > ', n=', I5, ', b1=', I5, ', lda1=', I5, ',' ) 9761 FORMAT( 1X, ' lda2=', I5, ', xinfo=', I5, ',' ) * 9770 FORMAT( 1X, ' mtype=', A1, ', diam=', E11.4, ', uplo=', A1, > ', n=', I5, ', lda1=', I5, ', b2=', I5, ',' ) 9771 FORMAT( 1X, ' lda2=', I5, ', nsteps=', I5, > ', drptol=', E11.4, ', jobu=', A1, ', lwork=', I8, ',' ) 9772 FORMAT( 1X, ' b ( 2: )=', 100(I5, ',') ) 9773 FORMAT( 1X, ' nb( 1: )=', 100(I5, ',') ) * 9780 FORMAT( 1X, ' mtype=', A1, ', diam=', E11.4, ', uplo=', A1, > ', n=', I5, ', b1=', I5, ', lda=', I5, ', b2=', I5, > ',' ) 9781 FORMAT( 1X, ' nsteps=', I5, ', drptol=', E11.4, > ', jobu=', A1, ', ldu=', I5, ',' ) 9782 FORMAT( 1X, ' lwork=', I8, ', xinfo=', I5, ',' ) * * --- unexpected behaviour of the routines --- * 9900 FORMAT( 1X, '*** Test in line ', I5, ' failed : ', A6, > ' returned info=', I5, ' in step ', I5, > ' (expected ', I5, ')' ) 9901 FORMAT( 1X, '*** Test in line ', I5, ' failed : ', A6, > ' returned info=', I5, ' (expected ', I5, ')' ) * 9910 FORMAT( 1X, '*** Test in line ', I5, ' failed : ', A6, > ' returned step=', I5, ' (expected ', I5, ')' ) * 9920 FORMAT( 1X, '*** Test in line ', I5, ' failed : ', A6, > ' used ', I8, ' workspace (allowed ', I8, ')' ) * 9930 FORMAT( 1X, '*** Test in line ', I5, ' failed ', A, > ' test: ', E10.3, ' (thresh=', E10.3, ')' ) * * - - - - - - - - done - - - - - - - - - - - - - - - - - - - - - - - - * STOP END * * ********************************************************************** * SUBROUTINE DSYINI( MTYPE, EVLS, SZEVLS, DIAM, > FRMT, UPLO, N, B, A, LDA, SZA, > JOBU, U, LDU, SZU, > NOTUSD, WORK, SZWORK, INFO ) * * Description: * * Generates a symmetric (full or banded) matrix A with either * prescribed eigenvalues, random eigenvalues, or two clusters of * eigenvalues. The matrix is returned either in (upper or lower) * symmetric full storage or in (upper or lower) symmetric banded * storage. In addition, U can be set to the identity matrix. * * Note: In contrast to the LAPACK routine dlagsy, this routine * generates the banded matrix within an n-by-(b+1) array. * * Author: Bruno Lang * Aachen University of Technology * na.blang@na-net.ornl.gov * Date: May 17, 2000 * Version: SBR Toolbox, Rev. 1.4.1 * * ---------------------------------------------------------------------- * * Parameters: * CHARACTER*1 MTYPE, FRMT, UPLO, JOBU INTEGER N, B, LDA, SZA, LDU, SZU, SZWORK, SZEVLS, > INFO DOUBLE PRECISION DIAM, NOTUSD DOUBLE PRECISION A( LDA, * ), U( LDU, * ), EVLS( * ), > WORK( * ) * * mtype (in) character*1 * The matrix type. * mtype = 'S' : Generate a matrix with prescribed eigenvalues. * = 'R' : Eigenvalues are uniformly random in [ -1, 1 ). * = 'I' : ISDA-type matrix: eigenvalues are clustered * around 0 and 1. * * evls (in OR out) double precision array, dimension ( szevls ) * The eigenvalues of the matrix A. * If mtype = 'S' then evls is an input parameter, and the * first n elements of evls are taken as eigenvalues for the * matrix A. * If mtype = 'R' or 'I', then evls is an output parameter and * contains the eigenvalues of the matrix A. * * szevls (in) integer * The size of the array evls. * szevls >= n. * * diam (in) double precision * The diameter of the eigenvalue clusters (in multiples of * machine_epsilon). * Accessed only if mtype = 'I'. * * frmt (in) character*1 * The storage format for the matrix A. * frmt = 'F' : (Symmetric upper or lower) full storage. * = 'B' : (Symmetric upper or lower) banded storage. * * uplo (in) character*1 * Which triangle of the matrix is used? * uplo = 'U' : Initialize the upper triangle. * = 'L' : Initialize the lower triangle. * In banded storage (frmt = 'B'), uplo also determines * whether the upper or lower banded storage scheme is used. * * n (in) integer * The dimension of the matrix. * n >= 0. * * b (in) integer * The semibandwidth (i.e., the number of subdiagonals) of the * matrix A. * 0 <= b <= max( n-1, 0 ). * * a (out) double precision array, dimension ( lda, n ) * The n-by-n symmetric matrix with semibandwidth b. * If frmt = 'F' then A is returned in the leading n-by-n * subarray - that is, matrix element A( i, j ) is stored at * array position a( i, j ) -, with the strict lower * (uplo = 'U') or the strictly upper (uplo = 'L') triangle set * to some large value (NOT_USED). * If frmt = 'B' then A is returned in banded format in the * leading (b+1)-times-n subarray - that is, matrix element * A( i, j ) is stored at array position a( b+1+i-j, j ) if * uplo = 'U', and at position a( 1+i-j, j ) if uplo = 'L'. * In any case, the remainder of the first n columns is set * to the same large value mentioned above. * * lda (in) integer * The leading dimension of the array a. * lda >= n, if frmt = 'F' * >= b+1, if frmt = 'B'. * * sza (in) integer * The total size (in elements) of the array (not matrix!) a. * sza >= lda * n. * * jobu (in) character*1 * Set the matrix U to identity? * jobu = 'U' : Yes. * = 'N' : No. * * u (out) double precision array, dimension ( ldu, n ) * If jobu = 'U' then the leading n-by-n subarray is set to * an n-by-n identity matrix. * If jobu = 'N' then u is not accessed. * * ldu (in) integer * The leading dimension of the array u. * ldu >= n. * * szu (in) integer * The total size (in elements) of the array (not matrix!) u. * szu >= ldu * n, if jobu = 'U' * >= 0 , if jobu = 'N'. * * notusd (in) double precision * Value for marking elements that should not be used. * Typically a rather large number. * * work (workspace) double precision array, dimension ( szwork ) * * szwork (in) integer * The size of the array work. * szwork >= 2 * n. * * info (out) integer * On exit, info indicates the consistence of the arguments. * = 0 : All arguments are OK. * = -1 : mtype is none of 'S', 'R', 'I' (upper/lower case). * = -3 : szevls is too small ( < n ). * = -4 : diam is out of range (negative). * = -5 : frmt is none of 'F', 'B' (upper or lower case). * = -6 : uplo is none of 'U', 'L' (upper or lower case). * = -7 : n is out of range ( < 0 ). * = -8 : b is out of range ( < 0 or > max( n-1, 0 ) ). * = -10 : lda is too small ( < n, if full, < b+1, if banded). * = -11 : sza is too small ( < n*lda ). * = -12 : jobu is none of 'U', 'N' (upper or lower case). * = -14 : ldu is too small ( < n ). * = -15 : szu is too small ( < n*ldu, if U is required). * = -18 : szwork is too small (see above). * * ---------------------------------------------------------------------- * * Local constants and variables: * DOUBLE PRECISION ZERO, HALF, ONE, TWO PARAMETER ( ZERO = 0.0D0, HALF = 0.5D0, > ONE = 1.0D0, TWO = 2.0D0 ) * LOGICAL SPEC, ISDA, FULL, UPPER, NEEDU INTEGER ISEED( 4 ) DOUBLE PRECISION SDIAM * * spec matrix with prescribed spectrum ? * isda ISDA-type matrix or random matrix ? * full store the matrix in full or banded format ? * upper use upper or lower triangle ? * needu update I or not ? * iseed seed for the random number generator * sdiam scaled diameter * INTEGER D, I, J, K, Q DOUBLE PRECISION C, S, FILL, A11, A12, A21, A22, TMP * * d the number of the new diagonal * c cosine of the rotation angle * s sine of the rotation angle * fill new fill-in element * * Routines called: * LOGICAL LSAME EXTERNAL LSAME * * lsame case-insensitive character matching (BLAS) * DOUBLE PRECISION D1MACH, DLARAN EXTERNAL DCOPY, DLAGSY, D1MACH, DLARAN, DLARTG, > DLASET * * dcopy vector copy (BLAS) * dlagsy generate symmetric matrix (LAPACK TMG) * dlamch inquire machine parameters (LAPACK) * dlaran random number generator (LAPACK TMG) * dlartg generate rotation (LAPACK) * dlaset initialize diagonal matrix (LAPACK) * INTRINSIC MAX, MIN * * ---------------------------------------------------------------------- * * --- sanity check for the arguments --- * SPEC = LSAME( MTYPE, 'Spectrum' ) ISDA = LSAME( MTYPE, 'Isda' ) FULL = LSAME( FRMT, 'Full' ) UPPER = LSAME( UPLO, 'Upper' ) NEEDU = LSAME( JOBU, 'Update' ) * IF ( .NOT. ( ISDA .OR. SPEC .OR. LSAME( MTYPE, 'Random' ) ) ) > THEN INFO = -1 ELSEIF ( SZEVLS .LT. N ) THEN INFO = -3 ELSEIF ( DIAM .LT. ZERO ) THEN INFO = -4 ELSEIF ( .NOT. ( FULL .OR. LSAME( FRMT, 'Banded' ) ) ) THEN INFO = -5 ELSEIF ( .NOT. ( UPPER .OR. LSAME( UPLO, 'Lower' ) ) ) THEN INFO = -6 ELSEIF ( N .LT. 0 ) THEN INFO = -7 ELSEIF ( ( B .LT. 0 ) .OR. ( B .GT. MAX( N-1, 0 ) ) ) THEN INFO = -8 ELSEIF ( ( FULL .AND. ( LDA .LT. N ) ) > .OR. ( LDA .LT. B+1 ) ) THEN INFO = -10 ELSEIF ( SZA .LT. N*LDA ) THEN INFO = -11 ELSEIF ( .NOT. ( NEEDU .OR. LSAME( JOBU, 'NoUpdate' ) ) ) THEN INFO = -12 ELSEIF ( LDU .LT. N ) THEN INFO = -14 ELSEIF ( NEEDU .AND. ( SZU .LT. N*LDU ) ) THEN INFO = -15 ELSEIF ( SZWORK .LT. 2*N ) THEN INFO = -18 ELSE INFO = 0 ENDIF IF ( INFO .NE. 0 ) GOTO 9999 * * --- check for quick return --- * IF ( N .EQ. 0 ) GOTO 9999 * IF ( .NOT. SPEC ) THEN * * --- set up eigenvalue distribution --- * ISEED( 1 ) = 4001 ISEED( 2 ) = 3001 ISEED( 3 ) = 2001 ISEED( 4 ) = 1001 * SDIAM = TWO * DIAM * D1MACH(4) DO 1000 I = 1, N IF ( ISDA ) THEN EVLS( I ) = SDIAM * ( DLARAN( ISEED ) - HALF ) IF ( DLARAN( ISEED ) .LT. HALF ) THEN EVLS( I ) = EVLS( I ) + ONE ENDIF ELSE EVLS( I ) = TWO * ( DLARAN( ISEED ) - HALF ) ENDIF 1000 CONTINUE ENDIF * * --- initialize random number generator --- * ISEED( 1 ) = 1001 ISEED( 2 ) = 2001 ISEED( 3 ) = 3001 ISEED( 4 ) = 4001 * IF ( FULL ) THEN * * - - - - - - - initialize matrix in full storage - - - - - - - - - - - * CALL DLAGSY( N, B, EVLS, A, LDA, ISEED, WORK, INFO ) * IF ( UPPER ) THEN * * --- mark lower triangle "not used" --- * DO 2100 J = 1, N-1 DO 2010 I = J+1, N A( I, J ) = NOTUSD 2010 CONTINUE 2100 CONTINUE ELSE * * --- mark upper triangle "not used" --- * DO 2300 J = 2, N DO 2210 I = 1, J-1 A( I, J ) = NOTUSD 2210 CONTINUE 2300 CONTINUE ENDIF * ELSE * * - - - - - - - - initialize matrix in banded storage - - - - - - - - - * * - - - - - - - - first initialize in lower packed storage - - - - - - - * CALL DCOPY( N, EVLS, 1, A( 1, 1 ), LDA ) * DO 3500 D = 1, B * * --- add d-th diagonal --- * DO 3300 I = N-1, 1, -1 * * --- to generate an new element at position * ( i+1, i-d ), ... --- * * --- ... first determine a random rotation, ... --- * A11 = DLARAN( ISEED ) A12 = DLARAN( ISEED ) CALL DLARTG( A11, A12, C, S, TMP ) * * --- ... apply it to rows i and i+1, ... --- * DO 3010 Q = MAX( I-D+1, 1 ), I-1 IF ( Q .EQ. ( I-D+1 ) ) THEN A( D+1, Q ) = -S * A( D, Q ) A( D, Q ) = C * A( D, Q ) ELSE TMP = C * A( I-Q+2, Q ) - S * A( I-Q+1, Q ) A( I-Q+1, Q ) = C * A( I-Q+1, Q ) + S * A( I-Q+2, Q ) A( I-Q+2, Q ) = TMP ENDIF 3010 CONTINUE * * --- ... apply it to A( i:i+1, i:i+1 ), ... --- * IF ( D .EQ. 1 ) THEN A11 = C * A( 1, I ) A21 = -S * A( 1, I ) A12 = S * A( 1, I+1 ) A22 = C * A( 1, I+1 ) ELSE A11 = C * A( 1, I ) + S * A( 2, I ) A21 = C * A( 2, I ) - S * A( 1, I ) A12 = C * A( 2, I ) + S * A( 1, I+1 ) A22 = C * A( 1, I+1 ) - S * A( 2, I ) ENDIF A( 1, I ) = C * A11 + S * A12 A( 2, I ) = C * A21 + S * A22 A( 1, I+1 ) = C * A22 - S * A21 * * --- ... apply it to columns i and i+1, ... --- * DO 3020 Q = I+2, MIN( I+D, N ) TMP = C * A( Q-I, I+1 ) - S * A( Q-I+1, I ) A( Q-I+1, I ) = C * A( Q-I+1, I ) + S * A( Q-I, I+1 ) A( Q-I, I+1 ) = TMP 3020 CONTINUE IF ( ( I+D+1 ) .LE. N ) THEN FILL = S * A( D+1, I+1 ) A( D+1, I+1 ) = C * A( D+1, I+1 ) ENDIF * * --- ... and chase the fill-in element down the band --- * DO 3200 K = I+D, N-1, D * CALL DLARTG( A( D+1, K-D ), FILL, C, S, TMP ) A( D+1, K-D ) = TMP * DO 3110 Q = K-D+1, K-1 TMP = C * A( K-Q+2, Q ) - S * A( K-Q+1, Q ) A( K-Q+1, Q ) = C * A( K-Q+1, Q ) + S * A( K-Q+2, Q ) A( K-Q+2, Q ) = TMP 3110 CONTINUE * A11 = C * A( 1, K ) + S * A( 2, K ) A21 = C * A( 2, K ) - S * A( 1, K ) A12 = C * A( 2, K ) + S * A( 1, K+1 ) A22 = C * A( 1, K+1 ) - S * A( 2, K ) A( 1, K ) = C * A11 + S * A12 A( 2, K ) = C * A21 + S * A22 A( 1, K+1 ) = C * A22 - S * A21 * DO 3120 Q = K+2, MIN( K+D, N ) TMP = C * A( Q-K, K+1 ) - S * A( Q-K+1, K ) A( Q-K+1, K ) = C * A( Q-K+1, K ) + S * A( Q-K, K+1 ) A( Q-K, K+1 ) = TMP 3120 CONTINUE IF ( ( K+D+1 ) .LE. N ) THEN FILL = S * A( D+1, K+1 ) A( D+1, K+1 ) = C * A( D+1, K+1 ) ENDIF 3200 CONTINUE * 3300 CONTINUE * * --- mark the last d entries of the row "not used" --- * DO 3410 I = N-D+1, N A( D+1, I ) = NOTUSD 3410 CONTINUE * 3500 CONTINUE * * - - - - - - - - end : first initialize in lower packed storage - - - - * IF ( UPPER ) THEN * * --- convert from lower to upper banded storage --- * DO 3700 I = 0, B/2 CALL DCOPY( N-B+I, A( B+1-I, 1 ), LDA, WORK, 1 ) DO 3610 J = 1, N-I A( B+1-I, I+J ) = A( I+1, J ) 3610 CONTINUE DO 3620 K = 1, I A( B+1-I, K ) = NOTUSD 3620 CONTINUE CALL DCOPY( N-B+I, WORK, 1, A( I+1, B+1-I ), LDA ) DO 3630 K = 1, B-I A( I+1, K ) = NOTUSD 3630 CONTINUE 3700 CONTINUE ENDIF * * - - - - - - - - end : initialize matrix in banded storage - - - - - - * ENDIF * * --- generate identity matrix in U --- * IF ( NEEDU ) THEN CALL DLASET( 'All', N, N, ZERO, ONE, U, LDU ) ENDIF * 9999 RETURN END * * ********************************************************************** * SUBROUTINE DSYNCK( EVLS, FRMT1, UPLO1, N, B1, A1, LDA1, SZA1, > FRMT2, B2, A2, LDA2, D, E, > JOBU, U, LDU, > ORTHU, SORTHU, RES, SRES, DEVLS, SDEVLS, > NOTUSD, WORK, SZWORK, INFO ) * * Description: * * This routine performs numerical tests after an orthogonal * transformation * T * A --> B = U * A * U. * A is rebuilt by calling dsyini, B may be given in banded or * tridiagonal format. * Depending on whether U was build explicitly during the reduction, * either * T * the orthogonality U * U - I of U * and the residual U * B - A * U * or * the difference between A's and B's eigenvalues * is checked. * * Author: Bruno Lang * Aachen University of Technology * na.blang@na-net.ornl.gov * Date: May 17, 2000 * Version: SBR Toolbox, Rev. 1.4.1 * * ---------------------------------------------------------------------- * * Parameters: * CHARACTER*1 FRMT1, UPLO1, FRMT2, JOBU INTEGER N, B1, LDA1, SZA1, B2, LDA2, LDU, > SZWORK, INFO DOUBLE PRECISION ORTHU, SORTHU, RES, SRES, DEVLS, SDEVLS, > NOTUSD DOUBLE PRECISION EVLS( * ), A1( LDA1, * ), A2( LDA2, * ), > D( * ), E( * ), U( LDU, * ), WORK( * ) * * evls (in) double precision array, dimension ( n ) * The eigenvalues of the matrix A, as returned from dsyini. * * frmt1 (in) character*1 * The storage format of the original matrix A. * frmt1 = 'F' : (Symmetric) full storage. * = 'B' : (Symmetric) banded storage. * * uplo1 (in) character*1 * Which triangle of the matrix A (and B) is used? * uplo1 = 'U' : Use the upper triangle. * = 'L' : Use the lower triangle. * In banded storage (frmt1 = 'B'), uplo1 also determines * whether the upper or lower banded storage scheme is used. * * n (in) integer * The dimension of the matrix. * n >= 0. * * b1 (in) integer * The semibandwidth (i.e., the number of subdiagonals) of the * original matrix A. * 0 <= b1 <= max( n-1, 0 ). * * a1 (out) double precision array, dimension ( lda1, n ) * a1 is used to build a copy of the original n-by-n symmetric * matrix A with semibandwidth b1. * If frmt = 'F' then A is returned in the leading n-by-n * subarray - that is, matrix element A( i, j ) is stored at * array position a1( i, j ) -, with the strict lower * (uplo = 'U') or the strictly upper (uplo = 'L') triangle set * to some large value (NOT_USED). * If frmt = 'B' then A is returned in banded format in the * leading (b1+1)-times-n subarray - that is, matrix element * A( i, j ) is stored at array position a1( b1+1+i-j, j ) if * uplo = 'U', and at position a1( 1+i-j, j ) if uplo = 'L'. * * lda1 (in) integer * The leading dimension of the array a1. * lda >= n, if frmt1 = 'F' * >= b1+1, if frmt1 = 'B'. * * sza1 (in) integer * The total size (in elements) of the array (not matrix!) a1. * sza1 >= lda1 * n. * * frmt2 (in) character*1 * The storage format of the reduced matrix B. * frmt1 = 'B' : (Symmetric) banded storage. * = 'T' : (Symmetric) tridiagonal in arrays d and e. * * b2 (in) integer * The semibandwidth (i.e., the number of subdiagonals) of the * reduced matrix B. * 0 <= b2 <= max( n-1, 0 ). * * a2 (in) double precision array, dimension ( lda2, n ) * If frmt2 = 'B' then the leading (b2+1)-times-n subarray of * a2 holds the reduced symmetric matrix B with semibandwidth * b2 in banded format - that is, matrix element A( i, j ) is * stored at array position a2( b2+1+i-j, j ) if uplo = 'U', * and at position a2( 1+i-j, j ) if uplo = 'L'. * If frmt2 = 'T' then a2 is not referenced. * * lda2 (in) integer * The leading dimension of the array a2. * lda2 >= b2+1. * * d (in) double precision array, dimension ( n ) * If frmt2 = 'T' then the first n elements of d hold the * main diagonal of the tridiagonal matrix B. * If frmt2 = 'B' then d is not referenced. * * e (in) double precision array, dimension ( n-1 ) * If frmt2 = 'T' then the first n-1 elements of e hold the * subdiagonal (superdiagonal) of the tridiagonal matrix B. * If frmt2 = 'B' then e is not referenced. * * jobu (in) character*1 * Does U contain the accumulated transformations ? * jobu = 'U' : Yes. * = 'N' : No. * * u (in) double precision array, dimension ( ldu, n ) * If jobu = 'U' then the leading n-by-n subarray contains * the accumulated transformations from the reduction (an * orthogonal matrix). * If jobu = 'N' then u is not accessed. * * ldu (in) integer * The leading dimension of the array u. * ldu >= n. * * orthu (out) double precision * The orthogonality error : F-norm( U''*U - I ). * If jobu = 'N' then orthu is set to 0. * * sorthu (out) double precision * The scaled orthogonality error : orthu / ( n * macheps). * If jobu = 'N' then sorthu is set to 0. * * res (out) double precision * The residual : F-norm( U*B - A*U ). * If jobu = 'N' then res is set to 0. * * sres (out) double precision * The scaled residual : res / ( n * macheps * F-norm( A ) ). * If jobu = 'N' then sres is set to 0. * * devls (out) double precision * The change of the eigenvalues : * 2-norm( sort(evls) - sort(spec(B)) ). * If jobu = 'U' then devls is set to 0. * * sdevls (out) double precision * The scaled eigenvalue changes : * devls / ( n * macheps * F-norm( A ) ). * If jobu = 'U' then sdevls is set to 0. * * notusd (in) double precision * Value for marking elements that should not be used. * Typically a rather large number. * * work (workspace) double precision array, dimension ( szwork ) * * szwork (in) integer * The length of the array work. * szwork >= max( 3*n-2, 2*n ). * * info (out) integer * On exit, info indicates the consistence of the arguments. * = 0 : All arguments are OK. * = -2 : frmt1 is none of 'F', 'B' (upper/lower case). * = -3 : uplo1 is none of 'U', 'L' (upper/lower case). * = -4 : n is out of range ( < 0 ). * = -5 : b1 is out of range ( < 0 or > max( n-1, 0 ) ). * = -7 : lda1 too small ( < n, if full, < b1+1, if banded). * = -8 : sza1 is too small ( < n * lda1 ). * = -9 : frmt2 is none of 'B', 'T' (upper/lower case). * = -10 : b2 is out of range ( < 0 or > max( n-1, 0 ), * or > 1 if frmt2 = 'T' ). * = -12 : lda2 is too small ( < b2+1 ). * = -15 : jobu is none of 'U', 'N' (upper/lower case). * = -17 : ldu is too small ( < n ). * = -26 : szwork is too small (see above). * * ---------------------------------------------------------------------- * * Local constants and variables: * DOUBLE PRECISION ZERO, ONE PARAMETER ( ZERO = 0.0D0, ONE = 1.0D0 ) * LOGICAL FULL1, UPPER, TRI2, HAVEU DOUBLE PRECISION EPS, NORMA INTEGER NCOLS, COLS, J0, J, IX * * full1 build A in full storage ? * upper use upper triangle ? * tri2 is B given in tridiagonal storage ? * haveu is the accumulated matrix U available ? * eps machine epsilon * norma the Frobenius norm of the matrix A * ncols maximum width of a block column that fits into workspace * cols width of current block column * j0 first column of the current block column * j current column * ix points to the position of the current column in workspace * * Routines called: * LOGICAL LSAME EXTERNAL LSAME * * lsame case-insensitive character matching (BLAS) * DOUBLE PRECISION D1MACH, DLANGE, DNRM2 EXTERNAL DAXPY, DCOPY, DGEMM, DGEMV, D1MACH, > DLANGE, DLASRT, DNRM2, DSBEV, DSBMV, > DSCAL, DSTEV, DSYINI, DSYMM * * daxpy add multiple of a vector to another one (BLAS) * dcopy vector copy (BLAS) * dgemm matrix-matrix product (BLAS) * dgemv matrix-vector product (BLAS) * dlamch determine machine parameters (LAPACK) * dlange matrix norm (LAPACK) * dlasrt sort a vector (LAPACK) * dnrm2 2-norm of a vector (BLAS) * dsbev compute eigensystem of symmetric banded matrix (LAPACK) * dsbmv banded symmetri matrix-vector product (BLAS) * dscal scale a vector (BLAS) * dstev compute eigensystem of symmetric tridiagonal matrix (LAPACK) * dsyini initialize symmetric matrix (this file) * dsymm symmetric matrix-matrix product (BLAS) * INTRINSIC MAX, MIN, SQRT * * ---------------------------------------------------------------------- * * --- sanity check for the arguments --- * FULL1 = LSAME( FRMT1, 'Full' ) UPPER = LSAME( UPLO1, 'Upper' ) TRI2 = LSAME( FRMT2, 'Tridiagonal' ) HAVEU = LSAME( JOBU, 'U' ) * IF ( .NOT. ( FULL1 .OR. LSAME( FRMT1, 'Banded' ) ) ) THEN INFO = -2 ELSEIF ( .NOT. ( UPPER .OR. LSAME( UPLO1, 'Lower' ) ) ) THEN INFO = -3 ELSEIF ( N .LT. 0 ) THEN INFO = -4 ELSEIF ( ( B1 .LT. 0 ) .OR. ( B1 .GT. MAX( N-1, 0 ) ) ) THEN INFO = -5 ELSEIF ( ( FULL1 .AND. ( LDA1 .LT. N ) ) .OR. > ( LDA1 .LT. B1+1 ) ) THEN INFO = -7 ELSEIF ( SZA1 .LT. N*LDA1 ) THEN INFO = -8 ELSEIF ( .NOT. ( TRI2 .OR. LSAME( FRMT2, 'Banded' ) ) ) THEN INFO = -9 ELSEIF ( ( B2 .LT. 0 ) .OR. > ( ( N .GT. 0 ) .AND. > ( ( B2 .GT. N-1 ) .OR. > ( TRI2 .AND. ( B2 .GT. 1 ) ) ) ) ) THEN INFO = -10 ELSEIF ( LDA2 .LT. B2+1 ) THEN INFO = -12 ELSEIF ( .NOT. ( HAVEU .OR. LSAME( JOBU, 'NoU' ) ) ) THEN INFO = -15 ELSEIF ( LDU .LT. N ) THEN INFO = -17 ELSEIF ( SZWORK .LT. MAX( 3*N-2, 2*N ) ) THEN INFO = -26 ELSE INFO = 0 ENDIF IF ( INFO .NE. 0 ) GOTO 9999 * * --- check for quick return --- * IF ( N .EQ. 0 ) GOTO 9999 * * --- determine machine precision --- * EPS = D1MACH(4) * T * - - - - - - compute orthogonality error = F-Norm( U * U - I ) - - - * IF ( LSAME( JOBU, 'Update' ) ) THEN ORTHU = ZERO * T * --- how many columns of U * U - I fit into workspace ? --- * NCOLS = SZWORK / N DO 1100 J0 = 1, N, NCOLS COLS = MIN( NCOLS, N-J0+1 ) * T * --- compute n-by-cols block column of U * U --- * CALL DGEMM( 'Transpose', 'NoTranspose', N, COLS, N, > ONE, U, LDU, U( 1, J0 ), LDU, ZERO, WORK, N ) * * --- subtract corresponding parts of I --- * DO 1010 J = J0, J0+COLS-1 WORK( (J-J0)*N+J ) = WORK( (J-J0)*N+J ) - ONE 1010 CONTINUE ORTHU = ORTHU + DLANGE( 'Frobenius', N, COLS, WORK, N, > WORK )**2 1100 CONTINUE ORTHU = SQRT( ORTHU ) SORTHU = ORTHU / ( N * EPS ) ELSE * * --- no orthogonality information available --- * ORTHU = - ONE SORTHU = - ONE ENDIF * T * - - - - - - end : compute orthogonality error = F-Norm( U * U - I ) * NORMA = DNRM2( N, EVLS, 1 ) * IF ( LSAME( JOBU, 'Update' ) ) THEN * * --- do not compute changes in eigenvalues --- * DEVLS = - ONE SDEVLS = - ONE * * - - - - - - - compute residual error = F-Norm( U * B - A * U ) - - - * * --- build another copy of the original matrix A --- * CALL DSYINI( 'Spectrum', EVLS, N, ZERO, > FRMT1, UPLO1, N, B1, A1, LDA1, SZA1, > 'NoU', WORK, N, 0, > NOTUSD, WORK, SZWORK, INFO ) * RES = ZERO * * --- how many cols of U * B - A * U fit into workspace ? --- * NCOLS = SZWORK / N * DO 2000 J0 = 1, N, NCOLS COLS = MIN( NCOLS, N-J0+1 ) * * --- build the next cols columns of U * B --- * IF ( LSAME( FRMT2, 'Tridiagonal' ) ) THEN DO 2010 J = J0, J0+COLS-1 IX = ( J - J0 ) * N + 1 CALL DCOPY( N, U( 1, J ), 1, WORK( IX ), 1 ) CALL DSCAL( N, D( J ), WORK( IX ), 1 ) IF ( J .GT. 1 ) THEN CALL DAXPY( N, E( J-1 ), U( 1, J-1 ), 1, > WORK( IX ), 1 ) ENDIF IF ( J .LT. N ) THEN CALL DAXPY( N, E( J ), U( 1, J+1 ), 1, WORK( IX ), 1 ) ENDIF 2010 CONTINUE ELSE DO 2020 J = J0, J0+COLS-1 IX = ( J - J0 ) * N + 1 CALL DGEMV( 'NoTranspose', N, MIN( B2+1, N-J+1 ), > ONE, U( 1, J ), LDU, A2( 1, J ), 1, > ZERO, WORK( IX ), 1 ) IF ( B2 .GT. 0 ) THEN IF ( J .GT. B2 ) THEN CALL DGEMV( 'NoTranspose', N, B2, > ONE, U( 1, J-B2 ), LDU, > A2( B2+1, J-B2 ), LDA2 - 1, > ONE, WORK( IX ), 1 ) ELSEIF ( J .GT. 1 ) THEN CALL DGEMV( 'NoTranspose', N, J - 1, > ONE, U( 1, 1 ), LDU, > A2( J, 1 ), LDA2 - 1, > ONE, WORK( IX ), 1 ) ENDIF ENDIF 2020 CONTINUE ENDIF * * --- subtract corresponding columns of A * U --- * IF ( LSAME( FRMT1, 'Full' ) ) THEN CALL DSYMM( 'Left', UPLO1, N, COLS, > -ONE, A1, LDA1, U( 1, J0 ), LDU, > ONE, WORK, N ) ELSE DO 2110 J = J0, J0+COLS-1 CALL DSBMV( UPLO1, N, B1, -ONE, A1, LDA1, U( 1, J ), 1, > ONE, WORK( (J-J0)*N+1 ), 1 ) 2110 CONTINUE ENDIF * RES = RES + DLANGE( 'Frobenius', N, COLS, WORK, N, WORK )**2 2000 CONTINUE * RES = SQRT( RES ) SRES = RES / ( N * NORMA * EPS ) * * - - - - - - - end : compute residual error = F-Norm( U * B - A * U ) * ELSE * * --- no residual information available --- * RES = - ONE SRES = - ONE * * - - - - - - - check if eigenvalues have changed - - - - - - - - - - - * * --- compute eigenvalues of the tridiagonal or banded * matrix --- * IF ( LSAME( FRMT2, 'Tridiagonal' ) ) THEN CALL DSTEV( 'NoEigenvectors', N, D, E, WORK, N, WORK, INFO ) ELSE CALL DSBEV( 'NoEigenvectors', 'Lower', N, B2, A2, LDA2, > D, WORK, N, WORK, INFO ) ENDIF * * --- compare with (sorted) original eigenvalues --- * IF ( INFO .EQ. 0 ) THEN CALL DLASRT( 'Increasing', N, EVLS, INFO ) CALL DAXPY( N, -ONE, EVLS, 1, D, 1 ) DEVLS = DNRM2( N, D, 1 ) SDEVLS = DEVLS / ( N * NORMA * EPS ) ELSE DEVLS = - ONE SDEVLS = - ONE ENDIF * * - - - - - - - end : check if eigenvalues have changed - - - - - - - - * ENDIF * 9999 RETURN END * * ********************************************************************** * LOGICAL FUNCTION LXSAME( S1, S2 ) * * Description: * * Checks if two strings agree (ignoring case). * * Author: Bruno Lang * Aachen University of Technology * na.blang@na-net.ornl.gov * Date: May 17, 2000 * Version: SBR Toolbox, Rev. 1.4.1 * * Parameters: * CHARACTER*( * ) S1, S2 * * s1 (in) character*( * ) * The first string. * * s2 (in) character*( * ) * The second string. * * Local constants and variables: * INTEGER I * * Routines called: * LOGICAL LSAME EXTERNAL LSAME * * lsame case-insensitive character matching (BLAS) * INTRINSIC LEN * * ---------------------------------------------------------------------- * LXSAME = ( LEN( S1 ) .EQ. LEN( S2 ) ) IF ( LXSAME ) THEN DO 100 I = 1, LEN( S1 ) LXSAME = LXSAME .AND. LSAME( S1( I:I ), S2( I:I ) ) 100 CONTINUE ENDIF * RETURN END * SHAR_EOF fi # end of overwriting check if test -f 'res1' then echo shar: will not over-write existing file "'res1'" else cat << "SHAR_EOF" > 'res1' =============================================================================== Tests for Total Skipped Failed ------------------------------------------------------------------------------- dsytrd : full -> tridiagonal, one-step (LAPACK) : 4 0 0 dorgtr : accumulation of transformations (LAPACK) : 2 0 0 dsbtrd : banded -> tridiagonal, one-step (LAPACK) : 4 0 0 dsyrdb : full -> banded, one-step (SBR) : 36 0 0 dsygtr : accumulation of transformations (SBR) : 11 0 0 dsbrdb : banded -> banded, one-step (SBR) : 50 0 0 dsbrdt : banded -> tridiagonal, one-step (SBR) : 44 0 0 dsy2bc : copy full -> banded (SBR) : 27 0 0 dsy2bi : in-place copy full -> banded (SBR) : 27 0 0 dsb2bc : copy banded -> banded (SBR) : 19 0 0 dsb2bi : in-place copy banded -> banded (SBR) : 19 0 0 dsyrdd : reduction driver for full matrices (SBR) : 45 0 0 dsbrdd : reduction driver for banded matrcs (SBR) : 52 0 0 ------------------------------------------------------------------------------- Total : : 340 0 0 ------------------------------------------------------------------------------- Total time : 129.96 seconds SHAR_EOF fi # end of overwriting check if test -f 'res2' then echo shar: will not over-write existing file "'res2'" else cat << "SHAR_EOF" > 'res2' *** Timing the LAPACK reduction full -> tridiagonal *** no update Line 81 / dsytrd : full -> tridiagonal, one-step (LAPACK) , mtype=R, diam= 0.0000E+00, uplo=L, n= 200, lda= 200, nb1= 0, nx1= 0, lwork1= 1000000, xinfo1= 0, jobu=N, nb2= 0, nx2= 0, lwork2= 1000000, xinfo2= 0, reduction time= 1.400000 Line 84 / dsytrd : full -> tridiagonal, one-step (LAPACK) , mtype=R, diam= 0.0000E+00, uplo=L, n= 400, lda= 400, nb1= 0, nx1= 0, lwork1= 1000000, xinfo1= 0, jobu=N, nb2= 0, nx2= 0, lwork2= 1000000, xinfo2= 0, reduction time= 10.709999 Line 87 / dsytrd : full -> tridiagonal, one-step (LAPACK) , mtype=R, diam= 0.0000E+00, uplo=L, n= 600, lda= 600, nb1= 0, nx1= 0, lwork1= 1000000, xinfo1= 0, jobu=N, nb2= 0, nx2= 0, lwork2= 1000000, xinfo2= 0, reduction time= 37.089996 Line 90 / dsytrd : full -> tridiagonal, one-step (LAPACK) , mtype=R, diam= 0.0000E+00, uplo=L, n= 800, lda= 800, nb1= 0, nx1= 0, lwork1= 1000000, xinfo1= 0, jobu=N, nb2= 0, nx2= 0, lwork2= 1000000, xinfo2= 0, reduction time= 89.190002 Line 93 / dsytrd : full -> tridiagonal, one-step (LAPACK) , mtype=R, diam= 0.0000E+00, uplo=L, n= 1000, lda= 1000, nb1= 0, nx1= 0, lwork1= 1000000, xinfo1= 0, jobu=N, nb2= 0, nx2= 0, lwork2= 1000000, xinfo2= 0, reduction time= 175.879974 with update Line 102 / dsytrd : full -> tridiagonal, one-step (LAPACK) , mtype=R, diam= 0.0000E+00, uplo=L, n= 200, lda= 200, nb1= 0, nx1= 0, lwork1= 1000000, xinfo1= 0, jobu=U, nb2= 0, nx2= 0, lwork2= 1000000, xinfo2= 0, reduction time= 3.750061 Line 105 / dsytrd : full -> tridiagonal, one-step (LAPACK) , mtype=R, diam= 0.0000E+00, uplo=L, n= 400, lda= 400, nb1= 0, nx1= 0, lwork1= 1000000, xinfo1= 0, jobu=U, nb2= 0, nx2= 0, lwork2= 1000000, xinfo2= 0, reduction time= 30.540039 Line 108 / dsytrd : full -> tridiagonal, one-step (LAPACK) , mtype=R, diam= 0.0000E+00, uplo=L, n= 600, lda= 600, nb1= 0, nx1= 0, lwork1= 1000000, xinfo1= 0, jobu=U, nb2= 0, nx2= 0, lwork2= 1000000, xinfo2= 0, reduction time= 103.380005 Line 111 / dsytrd : full -> tridiagonal, one-step (LAPACK) , mtype=R, diam= 0.0000E+00, uplo=L, n= 800, lda= 800, nb1= 0, nx1= 0, lwork1= 1000000, xinfo1= 0, jobu=U, nb2= 0, nx2= 0, lwork2= 1000000, xinfo2= 0, reduction time= 247.030090 Line 114 / dsytrd : full -> tridiagonal, one-step (LAPACK) , mtype=R, diam= 0.0000E+00, uplo=L, n= 1000, lda= 1000, nb1= 0, nx1= 0, lwork1= 1000000, xinfo1= 0, jobu=U, nb2= 0, nx2= 0, lwork2= 1000000, xinfo2= 0, reduction time= 482.520020 *** Timing the SBR driver full -> tridiagonal *** no update Line 171 / dsyrdd : reduction driver for full matrices (SBR), mtype=R, diam= 0.0000E+00, uplo=U, n= 200, lda1= 200, b2= 1, lda2= 2, nsteps= 0, drptol= 0.0000E+00, jobu=N, lwork= 1000000, xinfo= 1, reduction time= 1.260010 Line 174 / dsyrdd : reduction driver for full matrices (SBR), mtype=R, diam= 0.0000E+00, uplo=U, n= 400, lda1= 400, b2= 1, lda2= 2, nsteps= 0, drptol= 0.0000E+00, jobu=N, lwork= 1000000, xinfo= 1, reduction time= 10.060059 Line 177 / dsyrdd : reduction driver for full matrices (SBR), mtype=R, diam= 0.0000E+00, uplo=U, n= 600, lda1= 600, b2= 1, lda2= 2, nsteps= 0, drptol= 0.0000E+00, jobu=N, lwork= 1000000, xinfo= 1, reduction time= 34.719971 Line 180 / dsyrdd : reduction driver for full matrices (SBR), mtype=R, diam= 0.0000E+00, uplo=U, n= 800, lda1= 800, b2= 1, lda2= 2, nsteps= 0, drptol= 0.0000E+00, jobu=N, lwork= 1000000, xinfo= 1, reduction time= 84.540161 Line 183 / dsyrdd : reduction driver for full matrices (SBR), mtype=R, diam= 0.0000E+00, uplo=U, n= 1000, lda1= 1000, b2= 1, lda2= 2, nsteps= 0, drptol= 0.0000E+00, jobu=N, lwork= 1000000, xinfo= 1, reduction time= 167.760010 with update Line 192 / dsyrdd : reduction driver for full matrices (SBR), mtype=R, diam= 0.0000E+00, uplo=U, n= 200, lda1= 200, b2= 1, lda2= 2, nsteps= 0, drptol= 0.0000E+00, jobu=U, lwork= 1000000, xinfo= 1, reduction time= 3.699951 Line 195 / dsyrdd : reduction driver for full matrices (SBR), mtype=R, diam= 0.0000E+00, uplo=U, n= 400, lda1= 400, b2= 1, lda2= 2, nsteps= 0, drptol= 0.0000E+00, jobu=U, lwork= 1000000, xinfo= 1, reduction time= 29.310059 Line 198 / dsyrdd : reduction driver for full matrices (SBR), mtype=R, diam= 0.0000E+00, uplo=U, n= 600, lda1= 600, b2= 1, lda2= 2, nsteps= 0, drptol= 0.0000E+00, jobu=U, lwork= 1000000, xinfo= 1, reduction time= 100.560059 Line 201 / dsyrdd : reduction driver for full matrices (SBR), mtype=R, diam= 0.0000E+00, uplo=U, n= 800, lda1= 800, b2= 1, lda2= 2, nsteps= 0, drptol= 0.0000E+00, jobu=U, lwork= 1000000, xinfo= 1, reduction time= 241.930176 Line 204 / dsyrdd : reduction driver for full matrices (SBR), mtype=R, diam= 0.0000E+00, uplo=U, n= 1000, lda1= 1000, b2= 1, lda2= 2, nsteps= 0, drptol= 0.0000E+00, jobu=U, lwork= 1000000, xinfo= 1, reduction time= 473.800049 *** Timing the LAPACK reduction banded -> tridiagonal *** no update Line 249 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 200, b1= 4, lda= 5, jobu=N, ldu= 200, xinfo= 0, reduction time= 0.110107 Line 252 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 200, b1= 8, lda= 9, jobu=N, ldu= 200, xinfo= 0, reduction time= 0.280029 Line 255 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 200, b1= 12, lda= 13, jobu=N, ldu= 200, xinfo= 0, reduction time= 0.389893 Line 258 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 200, b1= 16, lda= 17, jobu=N, ldu= 200, xinfo= 0, reduction time= 0.460205 Line 261 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 200, b1= 24, lda= 25, jobu=N, ldu= 200, xinfo= 0, reduction time= 0.580078 Line 264 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 200, b1= 32, lda= 33, jobu=N, ldu= 200, xinfo= 0, reduction time= 0.700195 Line 267 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 200, b1= 48, lda= 49, jobu=N, ldu= 200, xinfo= 0, reduction time= 0.889893 Line 270 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 200, b1= 64, lda= 65, jobu=N, ldu= 200, xinfo= 0, reduction time= 1.060059 Line 275 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 400, b1= 4, lda= 5, jobu=N, ldu= 400, xinfo= 0, reduction time= 0.390137 Line 278 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 400, b1= 8, lda= 9, jobu=N, ldu= 400, xinfo= 0, reduction time= 0.899902 Line 281 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 400, b1= 12, lda= 13, jobu=N, ldu= 400, xinfo= 0, reduction time= 1.469971 Line 284 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 400, b1= 16, lda= 17, jobu=N, ldu= 400, xinfo= 0, reduction time= 1.820068 Line 287 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 400, b1= 24, lda= 25, jobu=N, ldu= 400, xinfo= 0, reduction time= 2.319824 Line 290 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 400, b1= 32, lda= 33, jobu=N, ldu= 400, xinfo= 0, reduction time= 2.810059 Line 293 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 400, b1= 48, lda= 49, jobu=N, ldu= 400, xinfo= 0, reduction time= 3.719971 Line 296 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 400, b1= 64, lda= 65, jobu=N, ldu= 400, xinfo= 0, reduction time= 4.600098 Line 301 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 600, b1= 4, lda= 5, jobu=N, ldu= 600, xinfo= 0, reduction time= 0.850098 Line 304 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 600, b1= 8, lda= 9, jobu=N, ldu= 600, xinfo= 0, reduction time= 1.859863 Line 307 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 600, b1= 12, lda= 13, jobu=N, ldu= 600, xinfo= 0, reduction time= 3.110107 Line 310 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 600, b1= 16, lda= 17, jobu=N, ldu= 600, xinfo= 0, reduction time= 4.020020 Line 313 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 600, b1= 24, lda= 25, jobu=N, ldu= 600, xinfo= 0, reduction time= 5.189941 Line 316 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 600, b1= 32, lda= 33, jobu=N, ldu= 600, xinfo= 0, reduction time= 6.340088 Line 319 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 600, b1= 48, lda= 49, jobu=N, ldu= 600, xinfo= 0, reduction time= 8.659912 Line 322 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 600, b1= 64, lda= 65, jobu=N, ldu= 600, xinfo= 0, reduction time= 10.760010 Line 327 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 800, b1= 4, lda= 5, jobu=N, ldu= 800, xinfo= 0, reduction time= 1.459961 Line 330 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 800, b1= 8, lda= 9, jobu=N, ldu= 800, xinfo= 0, reduction time= 3.220215 Line 333 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 800, b1= 12, lda= 13, jobu=N, ldu= 800, xinfo= 0, reduction time= 5.169922 Line 336 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 800, b1= 16, lda= 17, jobu=N, ldu= 800, xinfo= 0, reduction time= 6.910156 Line 339 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 800, b1= 24, lda= 25, jobu=N, ldu= 800, xinfo= 0, reduction time= 9.379883 Line 342 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 800, b1= 32, lda= 33, jobu=N, ldu= 800, xinfo= 0, reduction time= 11.469971 Line 345 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 800, b1= 48, lda= 49, jobu=N, ldu= 800, xinfo= 0, reduction time= 15.540039 Line 348 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 800, b1= 64, lda= 65, jobu=N, ldu= 800, xinfo= 0, reduction time= 19.250000 Line 353 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 1000, b1= 4, lda= 5, jobu=N, ldu= 1000, xinfo= 0, reduction time= 2.270020 Line 356 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 1000, b1= 8, lda= 9, jobu=N, ldu= 1000, xinfo= 0, reduction time= 4.869873 Line 359 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 1000, b1= 12, lda= 13, jobu=N, ldu= 1000, xinfo= 0, reduction time= 7.830078 Line 362 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 1000, b1= 16, lda= 17, jobu=N, ldu= 1000, xinfo= 0, reduction time= 10.510010 Line 365 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 1000, b1= 24, lda= 25, jobu=N, ldu= 1000, xinfo= 0, reduction time= 14.540039 Line 368 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 1000, b1= 32, lda= 33, jobu=N, ldu= 1000, xinfo= 0, reduction time= 17.910156 Line 371 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 1000, b1= 48, lda= 49, jobu=N, ldu= 1000, xinfo= 0, reduction time= 24.200195 Line 374 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 1000, b1= 64, lda= 65, jobu=N, ldu= 1000, xinfo= 0, reduction time= 30.220215 with update Line 383 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 200, b1= 4, lda= 5, jobu=U, ldu= 200, xinfo= 0, reduction time= 1.259766 Line 386 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 200, b1= 8, lda= 9, jobu=U, ldu= 200, xinfo= 0, reduction time= 1.589844 Line 389 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 200, b1= 12, lda= 13, jobu=U, ldu= 200, xinfo= 0, reduction time= 1.779785 Line 392 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 200, b1= 16, lda= 17, jobu=U, ldu= 200, xinfo= 0, reduction time= 1.889648 Line 395 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 200, b1= 24, lda= 25, jobu=U, ldu= 200, xinfo= 0, reduction time= 2.030273 Line 398 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 200, b1= 32, lda= 33, jobu=U, ldu= 200, xinfo= 0, reduction time= 2.160156 Line 401 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 200, b1= 48, lda= 49, jobu=U, ldu= 200, xinfo= 0, reduction time= 2.350098 Line 404 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 200, b1= 64, lda= 65, jobu=U, ldu= 200, xinfo= 0, reduction time= 2.500000 Line 409 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 400, b1= 4, lda= 5, jobu=U, ldu= 400, xinfo= 0, reduction time= 9.290039 Line 412 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 400, b1= 8, lda= 9, jobu=U, ldu= 400, xinfo= 0, reduction time= 11.290039 Line 415 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 400, b1= 12, lda= 13, jobu=U, ldu= 400, xinfo= 0, reduction time= 12.409668 Line 418 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 400, b1= 16, lda= 17, jobu=U, ldu= 400, xinfo= 0, reduction time= 12.990234 Line 421 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 400, b1= 24, lda= 25, jobu=U, ldu= 400, xinfo= 0, reduction time= 13.759766 Line 424 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 400, b1= 32, lda= 33, jobu=U, ldu= 400, xinfo= 0, reduction time= 14.400391 Line 427 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 400, b1= 48, lda= 49, jobu=U, ldu= 400, xinfo= 0, reduction time= 15.609863 Line 430 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 400, b1= 64, lda= 65, jobu=U, ldu= 400, xinfo= 0, reduction time= 16.390137 Line 435 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 600, b1= 4, lda= 5, jobu=U, ldu= 600, xinfo= 0, reduction time= 32.070313 Line 438 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 600, b1= 8, lda= 9, jobu=U, ldu= 600, xinfo= 0, reduction time= 37.889648 Line 441 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 600, b1= 12, lda= 13, jobu=U, ldu= 600, xinfo= 0, reduction time= 41.080078 Line 444 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 600, b1= 16, lda= 17, jobu=U, ldu= 600, xinfo= 0, reduction time= 42.890137 Line 447 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 600, b1= 24, lda= 25, jobu=U, ldu= 600, xinfo= 0, reduction time= 45.090332 Line 450 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 600, b1= 32, lda= 33, jobu=U, ldu= 600, xinfo= 0, reduction time= 46.979980 Line 453 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 600, b1= 48, lda= 49, jobu=U, ldu= 600, xinfo= 0, reduction time= 49.069824 Line 456 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 600, b1= 64, lda= 65, jobu=U, ldu= 600, xinfo= 0, reduction time= 52.009766 Line 461 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 800, b1= 4, lda= 5, jobu=U, ldu= 800, xinfo= 0, reduction time= 79.229980 Line 464 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 800, b1= 8, lda= 9, jobu=U, ldu= 800, xinfo= 0, reduction time= 93.649902 Line 467 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 800, b1= 12, lda= 13, jobu=U, ldu= 800, xinfo= 0, reduction time= 100.850098 Line 470 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 800, b1= 16, lda= 17, jobu=U, ldu= 800, xinfo= 0, reduction time= 100.650391 Line 473 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 800, b1= 24, lda= 25, jobu=U, ldu= 800, xinfo= 0, reduction time= 109.579590 Line 476 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 800, b1= 32, lda= 33, jobu=U, ldu= 800, xinfo= 0, reduction time= 107.930176 Line 479 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 800, b1= 48, lda= 49, jobu=U, ldu= 800, xinfo= 0, reduction time= 113.150391 Line 482 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 800, b1= 64, lda= 65, jobu=U, ldu= 800, xinfo= 0, reduction time= 122.680176 Line 487 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 1000, b1= 4, lda= 5, jobu=U, ldu= 1000, xinfo= 0, reduction time= 154.910156 Line 490 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 1000, b1= 8, lda= 9, jobu=U, ldu= 1000, xinfo= 0, reduction time= 176.100098 Line 493 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 1000, b1= 12, lda= 13, jobu=U, ldu= 1000, xinfo= 0, reduction time= 193.929688 Line 496 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 1000, b1= 16, lda= 17, jobu=U, ldu= 1000, xinfo= 0, reduction time= 192.419922 Line 499 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 1000, b1= 24, lda= 25, jobu=U, ldu= 1000, xinfo= 0, reduction time= 200.620117 Line 502 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 1000, b1= 32, lda= 33, jobu=U, ldu= 1000, xinfo= 0, reduction time= 206.000000 Line 505 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 1000, b1= 48, lda= 49, jobu=U, ldu= 1000, xinfo= 0, reduction time= 213.649902 Line 508 / dsbtrd : banded -> tridiagonal, one-step (LAPACK), mtype=R, diam= 0.0000E+00, uplo=L, n= 1000, b1= 64, lda= 65, jobu=U, ldu= 1000, xinfo= 0, reduction time= 229.709961 *** Timing the SBR reduction banded -> tridiagonal *** no update Line 555 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 200, b1= 4, lda= 8, drptol= 0.0000E+00, nb= 0, jobu=N, ldu= 200, lwork= 1000000, xinfo= 1, reduction time= 0.370117 Line 558 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 200, b1= 8, lda= 16, drptol= 0.0000E+00, nb= 0, jobu=N, ldu= 200, lwork= 1000000, xinfo= 1, reduction time= 0.329590 Line 561 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 200, b1= 12, lda= 24, drptol= 0.0000E+00, nb= 0, jobu=N, ldu= 200, lwork= 1000000, xinfo= 1, reduction time= 0.540039 Line 564 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 200, b1= 16, lda= 32, drptol= 0.0000E+00, nb= 0, jobu=N, ldu= 200, lwork= 1000000, xinfo= 1, reduction time= 0.620117 Line 567 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 200, b1= 24, lda= 48, drptol= 0.0000E+00, nb= 0, jobu=N, ldu= 200, lwork= 1000000, xinfo= 1, reduction time= 0.800293 Line 570 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 200, b1= 32, lda= 64, drptol= 0.0000E+00, nb= 0, jobu=N, ldu= 200, lwork= 1000000, xinfo= 1, reduction time= 0.939941 Line 573 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 200, b1= 48, lda= 96, drptol= 0.0000E+00, nb= 0, jobu=N, ldu= 200, lwork= 1000000, xinfo= 1, reduction time= 1.169922 Line 576 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 200, b1= 64, lda= 128, drptol= 0.0000E+00, nb= 0, jobu=N, ldu= 200, lwork= 1000000, xinfo= 1, reduction time= 1.380371 Line 581 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 400, b1= 4, lda= 8, drptol= 0.0000E+00, nb= 0, jobu=N, ldu= 400, lwork= 1000000, xinfo= 1, reduction time= 1.520020 Line 584 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 400, b1= 8, lda= 16, drptol= 0.0000E+00, nb= 0, jobu=N, ldu= 400, lwork= 1000000, xinfo= 1, reduction time= 1.390137 Line 587 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 400, b1= 12, lda= 24, drptol= 0.0000E+00, nb= 0, jobu=N, ldu= 400, lwork= 1000000, xinfo= 1, reduction time= 2.239746 Line 590 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 400, b1= 16, lda= 32, drptol= 0.0000E+00, nb= 0, jobu=N, ldu= 400, lwork= 1000000, xinfo= 1, reduction time= 2.610352 Line 593 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 400, b1= 24, lda= 48, drptol= 0.0000E+00, nb= 0, jobu=N, ldu= 400, lwork= 1000000, xinfo= 1, reduction time= 3.490234 Line 596 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 400, b1= 32, lda= 64, drptol= 0.0000E+00, nb= 0, jobu=N, ldu= 400, lwork= 1000000, xinfo= 1, reduction time= 4.299805 Line 599 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 400, b1= 48, lda= 96, drptol= 0.0000E+00, nb= 0, jobu=N, ldu= 400, lwork= 1000000, xinfo= 1, reduction time= 5.899902 Line 602 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 400, b1= 64, lda= 128, drptol= 0.0000E+00, nb= 0, jobu=N, ldu= 400, lwork= 1000000, xinfo= 1, reduction time= 7.330078 Line 607 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 600, b1= 4, lda= 8, drptol= 0.0000E+00, nb= 0, jobu=N, ldu= 600, lwork= 1000000, xinfo= 1, reduction time= 3.399902 Line 610 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 600, b1= 8, lda= 16, drptol= 0.0000E+00, nb= 0, jobu=N, ldu= 600, lwork= 1000000, xinfo= 1, reduction time= 3.160156 Line 613 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 600, b1= 12, lda= 24, drptol= 0.0000E+00, nb= 0, jobu=N, ldu= 600, lwork= 1000000, xinfo= 1, reduction time= 5.120117 Line 616 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 600, b1= 16, lda= 32, drptol= 0.0000E+00, nb= 0, jobu=N, ldu= 600, lwork= 1000000, xinfo= 1, reduction time= 6.000000 Line 619 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 600, b1= 24, lda= 48, drptol= 0.0000E+00, nb= 0, jobu=N, ldu= 600, lwork= 1000000, xinfo= 1, reduction time= 8.060059 Line 622 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 600, b1= 32, lda= 64, drptol= 0.0000E+00, nb= 0, jobu=N, ldu= 600, lwork= 1000000, xinfo= 1, reduction time= 10.120117 Line 625 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 600, b1= 48, lda= 96, drptol= 0.0000E+00, nb= 0, jobu=N, ldu= 600, lwork= 1000000, xinfo= 1, reduction time= 14.099609 Line 628 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 600, b1= 64, lda= 128, drptol= 0.0000E+00, nb= 0, jobu=N, ldu= 600, lwork= 1000000, xinfo= 1, reduction time= 18.010254 Line 633 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 800, b1= 4, lda= 8, drptol= 0.0000E+00, nb= 0, jobu=N, ldu= 800, lwork= 1000000, xinfo= 1, reduction time= 6.079590 Line 636 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 800, b1= 8, lda= 16, drptol= 0.0000E+00, nb= 0, jobu=N, ldu= 800, lwork= 1000000, xinfo= 1, reduction time= 5.600098 Line 639 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 800, b1= 12, lda= 24, drptol= 0.0000E+00, nb= 0, jobu=N, ldu= 800, lwork= 1000000, xinfo= 1, reduction time= 9.179688 Line 642 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 800, b1= 16, lda= 32, drptol= 0.0000E+00, nb= 0, jobu=N, ldu= 800, lwork= 1000000, xinfo= 1, reduction time= 10.760742 Line 645 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 800, b1= 24, lda= 48, drptol= 0.0000E+00, nb= 0, jobu=N, ldu= 800, lwork= 1000000, xinfo= 1, reduction time= 14.620117 Line 648 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 800, b1= 32, lda= 64, drptol= 0.0000E+00, nb= 0, jobu=N, ldu= 800, lwork= 1000000, xinfo= 1, reduction time= 18.359375 Line 651 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 800, b1= 48, lda= 96, drptol= 0.0000E+00, nb= 0, jobu=N, ldu= 800, lwork= 1000000, xinfo= 1, reduction time= 25.959961 Line 654 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 800, b1= 64, lda= 128, drptol= 0.0000E+00, nb= 0, jobu=N, ldu= 800, lwork= 1000000, xinfo= 1, reduction time= 33.459961 Line 659 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 1000, b1= 4, lda= 8, drptol= 0.0000E+00, nb= 0, jobu=N, ldu= 1000, lwork= 1000000, xinfo= 1, reduction time= 9.459961 Line 662 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 1000, b1= 8, lda= 16, drptol= 0.0000E+00, nb= 0, jobu=N, ldu= 1000, lwork= 1000000, xinfo= 1, reduction time= 8.769531 Line 665 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 1000, b1= 12, lda= 24, drptol= 0.0000E+00, nb= 0, jobu=N, ldu= 1000, lwork= 1000000, xinfo= 1, reduction time= 14.440430 Line 668 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 1000, b1= 16, lda= 32, drptol= 0.0000E+00, nb= 0, jobu=N, ldu= 1000, lwork= 1000000, xinfo= 1, reduction time= 16.919922 Line 671 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 1000, b1= 24, lda= 48, drptol= 0.0000E+00, nb= 0, jobu=N, ldu= 1000, lwork= 1000000, xinfo= 1, reduction time= 22.909180 Line 674 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 1000, b1= 32, lda= 64, drptol= 0.0000E+00, nb= 0, jobu=N, ldu= 1000, lwork= 1000000, xinfo= 1, reduction time= 28.959961 Line 677 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 1000, b1= 48, lda= 96, drptol= 0.0000E+00, nb= 0, jobu=N, ldu= 1000, lwork= 1000000, xinfo= 1, reduction time= 41.360352 Line 680 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 1000, b1= 64, lda= 128, drptol= 0.0000E+00, nb= 0, jobu=N, ldu= 1000, lwork= 1000000, xinfo= 1, reduction time= 53.570313 with update *** ignore messages about tests failing because *** *** SBRDT returned a wrong (but positive) info *** *** Test in line 693 failed : dsbrdt returned info= 3 (expected 1) Line 693 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 200, b1= 4, lda= 8, drptol= 0.0000E+00, nb= 0, jobu=U, ldu= 200, lwork= 1000000, xinfo= 1, reduction time= 5.169922 *** Test in line 696 failed : dsbrdt returned info= 4 (expected 1) Line 696 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 200, b1= 8, lda= 16, drptol= 0.0000E+00, nb= 0, jobu=U, ldu= 200, lwork= 1000000, xinfo= 1, reduction time= 4.809570 *** Test in line 699 failed : dsbrdt returned info= 4 (expected 1) Line 699 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 200, b1= 12, lda= 24, drptol= 0.0000E+00, nb= 0, jobu=U, ldu= 200, lwork= 1000000, xinfo= 1, reduction time= 4.870117 *** Test in line 702 failed : dsbrdt returned info= 6 (expected 1) Line 702 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 200, b1= 16, lda= 32, drptol= 0.0000E+00, nb= 0, jobu=U, ldu= 200, lwork= 1000000, xinfo= 1, reduction time= 5.160156 *** Test in line 705 failed : dsbrdt returned info= 8 (expected 1) Line 705 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 200, b1= 24, lda= 48, drptol= 0.0000E+00, nb= 0, jobu=U, ldu= 200, lwork= 1000000, xinfo= 1, reduction time= 5.140625 *** Test in line 708 failed : dsbrdt returned info= 12 (expected 1) Line 708 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 200, b1= 32, lda= 64, drptol= 0.0000E+00, nb= 0, jobu=U, ldu= 200, lwork= 1000000, xinfo= 1, reduction time= 5.389648 *** Test in line 711 failed : dsbrdt returned info= 16 (expected 1) Line 711 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 200, b1= 48, lda= 96, drptol= 0.0000E+00, nb= 0, jobu=U, ldu= 200, lwork= 1000000, xinfo= 1, reduction time= 5.629883 *** Test in line 714 failed : dsbrdt returned info= 22 (expected 1) Line 714 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 200, b1= 64, lda= 128, drptol= 0.0000E+00, nb= 0, jobu=U, ldu= 200, lwork= 1000000, xinfo= 1, reduction time= 5.889648 *** Test in line 719 failed : dsbrdt returned info= 3 (expected 1) Line 719 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 400, b1= 4, lda= 8, drptol= 0.0000E+00, nb= 0, jobu=U, ldu= 400, lwork= 1000000, xinfo= 1, reduction time= 40.810547 *** Test in line 722 failed : dsbrdt returned info= 4 (expected 1) Line 722 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 400, b1= 8, lda= 16, drptol= 0.0000E+00, nb= 0, jobu=U, ldu= 400, lwork= 1000000, xinfo= 1, reduction time= 38.150391 *** Test in line 725 failed : dsbrdt returned info= 4 (expected 1) Line 725 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 400, b1= 12, lda= 24, drptol= 0.0000E+00, nb= 0, jobu=U, ldu= 400, lwork= 1000000, xinfo= 1, reduction time= 37.580078 *** Test in line 728 failed : dsbrdt returned info= 6 (expected 1) Line 728 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 400, b1= 16, lda= 32, drptol= 0.0000E+00, nb= 0, jobu=U, ldu= 400, lwork= 1000000, xinfo= 1, reduction time= 37.529297 *** Test in line 731 failed : dsbrdt returned info= 8 (expected 1) Line 731 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 400, b1= 24, lda= 48, drptol= 0.0000E+00, nb= 0, jobu=U, ldu= 400, lwork= 1000000, xinfo= 1, reduction time= 38.089844 *** Test in line 734 failed : dsbrdt returned info= 12 (expected 1) Line 734 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 400, b1= 32, lda= 64, drptol= 0.0000E+00, nb= 0, jobu=U, ldu= 400, lwork= 1000000, xinfo= 1, reduction time= 39.389648 *** Test in line 737 failed : dsbrdt returned info= 16 (expected 1) Line 737 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 400, b1= 48, lda= 96, drptol= 0.0000E+00, nb= 0, jobu=U, ldu= 400, lwork= 1000000, xinfo= 1, reduction time= 41.040039 *** Test in line 740 failed : dsbrdt returned info= 22 (expected 1) Line 740 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 400, b1= 64, lda= 128, drptol= 0.0000E+00, nb= 0, jobu=U, ldu= 400, lwork= 1000000, xinfo= 1, reduction time= 42.830078 *** Test in line 745 failed : dsbrdt returned info= 3 (expected 1) Line 745 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 600, b1= 4, lda= 8, drptol= 0.0000E+00, nb= 0, jobu=U, ldu= 600, lwork= 1000000, xinfo= 1, reduction time= 135.049805 *** Test in line 748 failed : dsbrdt returned info= 4 (expected 1) Line 748 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 600, b1= 8, lda= 16, drptol= 0.0000E+00, nb= 0, jobu=U, ldu= 600, lwork= 1000000, xinfo= 1, reduction time= 126.279297 *** Test in line 751 failed : dsbrdt returned info= 4 (expected 1) Line 751 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 600, b1= 12, lda= 24, drptol= 0.0000E+00, nb= 0, jobu=U, ldu= 600, lwork= 1000000, xinfo= 1, reduction time= 123.990234 *** Test in line 754 failed : dsbrdt returned info= 6 (expected 1) Line 754 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 600, b1= 16, lda= 32, drptol= 0.0000E+00, nb= 0, jobu=U, ldu= 600, lwork= 1000000, xinfo= 1, reduction time= 126.099609 *** Test in line 757 failed : dsbrdt returned info= 8 (expected 1) Line 757 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 600, b1= 24, lda= 48, drptol= 0.0000E+00, nb= 0, jobu=U, ldu= 600, lwork= 1000000, xinfo= 1, reduction time= 127.290039 *** Test in line 760 failed : dsbrdt returned info= 12 (expected 1) Line 760 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 600, b1= 32, lda= 64, drptol= 0.0000E+00, nb= 0, jobu=U, ldu= 600, lwork= 1000000, xinfo= 1, reduction time= 131.120117 *** Test in line 763 failed : dsbrdt returned info= 16 (expected 1) Line 763 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 600, b1= 48, lda= 96, drptol= 0.0000E+00, nb= 0, jobu=U, ldu= 600, lwork= 1000000, xinfo= 1, reduction time= 134.370117 *** Test in line 766 failed : dsbrdt returned info= 22 (expected 1) Line 766 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 600, b1= 64, lda= 128, drptol= 0.0000E+00, nb= 0, jobu=U, ldu= 600, lwork= 1000000, xinfo= 1, reduction time= 139.489258 *** Test in line 771 failed : dsbrdt returned info= 3 (expected 1) Line 771 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 800, b1= 4, lda= 8, drptol= 0.0000E+00, nb= 0, jobu=U, ldu= 800, lwork= 1000000, xinfo= 1, reduction time= 314.759766 *** Test in line 774 failed : dsbrdt returned info= 4 (expected 1) Line 774 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 800, b1= 8, lda= 16, drptol= 0.0000E+00, nb= 0, jobu=U, ldu= 800, lwork= 1000000, xinfo= 1, reduction time= 298.330078 *** Test in line 777 failed : dsbrdt returned info= 4 (expected 1) Line 777 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 800, b1= 12, lda= 24, drptol= 0.0000E+00, nb= 0, jobu=U, ldu= 800, lwork= 1000000, xinfo= 1, reduction time= 291.160156 *** Test in line 780 failed : dsbrdt returned info= 6 (expected 1) Line 780 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 800, b1= 16, lda= 32, drptol= 0.0000E+00, nb= 0, jobu=U, ldu= 800, lwork= 1000000, xinfo= 1, reduction time= 296.000000 *** Test in line 783 failed : dsbrdt returned info= 8 (expected 1) Line 783 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 800, b1= 24, lda= 48, drptol= 0.0000E+00, nb= 0, jobu=U, ldu= 800, lwork= 1000000, xinfo= 1, reduction time= 297.229492 *** Test in line 786 failed : dsbrdt returned info= 12 (expected 1) Line 786 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 800, b1= 32, lda= 64, drptol= 0.0000E+00, nb= 0, jobu=U, ldu= 800, lwork= 1000000, xinfo= 1, reduction time= 304.639648 *** Test in line 789 failed : dsbrdt returned info= 16 (expected 1) Line 789 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 800, b1= 48, lda= 96, drptol= 0.0000E+00, nb= 0, jobu=U, ldu= 800, lwork= 1000000, xinfo= 1, reduction time= 310.850586 *** Test in line 792 failed : dsbrdt returned info= 22 (expected 1) Line 792 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 800, b1= 64, lda= 128, drptol= 0.0000E+00, nb= 0, jobu=U, ldu= 800, lwork= 1000000, xinfo= 1, reduction time= 320.259766 *** Test in line 797 failed : dsbrdt returned info= 3 (expected 1) Line 797 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 1000, b1= 4, lda= 8, drptol= 0.0000E+00, nb= 0, jobu=U, ldu= 1000, lwork= 1000000, xinfo= 1, reduction time= 612.699219 *** Test in line 800 failed : dsbrdt returned info= 4 (expected 1) Line 800 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 1000, b1= 8, lda= 16, drptol= 0.0000E+00, nb= 0, jobu=U, ldu= 1000, lwork= 1000000, xinfo= 1, reduction time= 582.500000 *** Test in line 803 failed : dsbrdt returned info= 4 (expected 1) Line 803 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 1000, b1= 12, lda= 24, drptol= 0.0000E+00, nb= 0, jobu=U, ldu= 1000, lwork= 1000000, xinfo= 1, reduction time= 567.380859 *** Test in line 806 failed : dsbrdt returned info= 6 (expected 1) Line 806 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 1000, b1= 16, lda= 32, drptol= 0.0000E+00, nb= 0, jobu=U, ldu= 1000, lwork= 1000000, xinfo= 1, reduction time= 574.790039 *** Test in line 809 failed : dsbrdt returned info= 8 (expected 1) Line 809 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 1000, b1= 24, lda= 48, drptol= 0.0000E+00, nb= 0, jobu=U, ldu= 1000, lwork= 1000000, xinfo= 1, reduction time= 576.379883 *** Test in line 812 failed : dsbrdt returned info= 12 (expected 1) Line 812 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 1000, b1= 32, lda= 64, drptol= 0.0000E+00, nb= 0, jobu=U, ldu= 1000, lwork= 1000000, xinfo= 1, reduction time= 589.299805 *** Test in line 815 failed : dsbrdt returned info= 16 (expected 1) Line 815 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 1000, b1= 48, lda= 96, drptol= 0.0000E+00, nb= 0, jobu=U, ldu= 1000, lwork= 1000000, xinfo= 1, reduction time= 597.101563 *** Test in line 818 failed : dsbrdt returned info= 22 (expected 1) Line 818 / dsbrdt : banded -> tridiagonal, one-step (SBR) , mtype=R, diam= 0.0000E+00, n= 1000, b1= 64, lda= 128, drptol= 0.0000E+00, nb= 0, jobu=U, ldu= 1000, lwork= 1000000, xinfo= 1, reduction time= 612.800781 *** Timing the SBR driver banded -> tridiagonal *** no update Line 876 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 200, b1= 4, lda= 8, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 200, lwork= 1000000, xinfo= 1, reduction time= 0.109375 Line 879 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 200, b1= 8, lda= 16, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 200, lwork= 1000000, xinfo= 1, reduction time= 0.291016 Line 882 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 200, b1= 12, lda= 24, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 200, lwork= 1000000, xinfo= 1, reduction time= 0.509766 Line 885 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 200, b1= 16, lda= 32, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 200, lwork= 1000000, xinfo= 1, reduction time= 0.599609 Line 888 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 200, b1= 24, lda= 48, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 200, lwork= 1000000, xinfo= 1, reduction time= 0.769531 Line 891 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 200, b1= 32, lda= 64, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 200, lwork= 1000000, xinfo= 1, reduction time= 0.919922 Line 894 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 200, b1= 48, lda= 96, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 200, lwork= 1000000, xinfo= 1, reduction time= 1.509766 Line 897 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 200, b1= 64, lda= 128, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 200, lwork= 1000000, xinfo= 1, reduction time= 1.990234 Line 902 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 400, b1= 4, lda= 8, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 400, lwork= 1000000, xinfo= 1, reduction time= 0.390625 Line 905 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 400, b1= 8, lda= 16, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 400, lwork= 1000000, xinfo= 1, reduction time= 0.900391 Line 908 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 400, b1= 12, lda= 24, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 400, lwork= 1000000, xinfo= 1, reduction time= 1.560547 Line 911 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 400, b1= 16, lda= 32, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 400, lwork= 1000000, xinfo= 1, reduction time= 2.560547 Line 914 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 400, b1= 24, lda= 48, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 400, lwork= 1000000, xinfo= 1, reduction time= 3.400391 Line 917 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 400, b1= 32, lda= 64, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 400, lwork= 1000000, xinfo= 1, reduction time= 4.191406 Line 920 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 400, b1= 48, lda= 96, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 400, lwork= 1000000, xinfo= 1, reduction time= 7.160156 Line 923 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 400, b1= 64, lda= 128, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 400, lwork= 1000000, xinfo= 1, reduction time= 9.830078 Line 928 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 600, b1= 4, lda= 8, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 600, lwork= 1000000, xinfo= 1, reduction time= 0.839844 Line 931 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 600, b1= 8, lda= 16, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 600, lwork= 1000000, xinfo= 1, reduction time= 1.869141 Line 934 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 600, b1= 12, lda= 24, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 600, lwork= 1000000, xinfo= 1, reduction time= 3.179688 Line 937 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 600, b1= 16, lda= 32, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 600, lwork= 1000000, xinfo= 1, reduction time= 5.871094 Line 940 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 600, b1= 24, lda= 48, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 600, lwork= 1000000, xinfo= 1, reduction time= 7.880859 Line 943 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 600, b1= 32, lda= 64, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 600, lwork= 1000000, xinfo= 1, reduction time= 9.880859 Line 946 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 600, b1= 48, lda= 96, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 600, lwork= 1000000, xinfo= 1, reduction time= 16.980469 Line 949 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 600, b1= 64, lda= 128, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 600, lwork= 1000000, xinfo= 1, reduction time= 23.710938 Line 954 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 800, b1= 4, lda= 8, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 800, lwork= 1000000, xinfo= 1, reduction time= 1.451172 Line 957 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 800, b1= 8, lda= 16, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 800, lwork= 1000000, xinfo= 1, reduction time= 3.210938 Line 960 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 800, b1= 12, lda= 24, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 800, lwork= 1000000, xinfo= 1, reduction time= 5.300781 Line 963 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 800, b1= 16, lda= 32, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 800, lwork= 1000000, xinfo= 1, reduction time= 10.570313 Line 966 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 800, b1= 24, lda= 48, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 800, lwork= 1000000, xinfo= 1, reduction time= 14.279297 Line 969 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 800, b1= 32, lda= 64, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 800, lwork= 1000000, xinfo= 1, reduction time= 17.919922 Line 972 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 800, b1= 48, lda= 96, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 800, lwork= 1000000, xinfo= 1, reduction time= 30.880859 Line 975 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 800, b1= 64, lda= 128, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 800, lwork= 1000000, xinfo= 1, reduction time= 43.470703 Line 980 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 1000, b1= 4, lda= 8, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 1000, lwork= 1000000, xinfo= 1, reduction time= 2.250000 Line 983 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 1000, b1= 8, lda= 16, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 1000, lwork= 1000000, xinfo= 1, reduction time= 4.849609 Line 986 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 1000, b1= 12, lda= 24, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 1000, lwork= 1000000, xinfo= 1, reduction time= 7.990234 Line 989 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 1000, b1= 16, lda= 32, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 1000, lwork= 1000000, xinfo= 1, reduction time= 16.589844 Line 992 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 1000, b1= 24, lda= 48, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 1000, lwork= 1000000, xinfo= 1, reduction time= 22.480469 Line 995 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 1000, b1= 32, lda= 64, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 1000, lwork= 1000000, xinfo= 1, reduction time= 28.359375 Line 998 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 1000, b1= 48, lda= 96, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 1000, lwork= 1000000, xinfo= 1, reduction time= 48.900391 Line 1001 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 1000, b1= 64, lda= 128, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 1000, lwork= 1000000, xinfo= 1, reduction time= 69.310547 with update Line 1010 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 200, b1= 4, lda= 8, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 200, lwork= 1000000, xinfo= 1, reduction time= 0.109375 Line 1013 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 200, b1= 8, lda= 16, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 200, lwork= 1000000, xinfo= 1, reduction time= 0.289063 Line 1016 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 200, b1= 12, lda= 24, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 200, lwork= 1000000, xinfo= 1, reduction time= 0.509766 Line 1019 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 200, b1= 16, lda= 32, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 200, lwork= 1000000, xinfo= 1, reduction time= 0.611328 Line 1022 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 200, b1= 24, lda= 48, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 200, lwork= 1000000, xinfo= 1, reduction time= 0.781250 Line 1025 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 200, b1= 32, lda= 64, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 200, lwork= 1000000, xinfo= 1, reduction time= 0.919922 Line 1028 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 200, b1= 48, lda= 96, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 200, lwork= 1000000, xinfo= 1, reduction time= 1.529297 Line 1031 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 200, b1= 64, lda= 128, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 200, lwork= 1000000, xinfo= 1, reduction time= 2.000000 Line 1036 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 400, b1= 4, lda= 8, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 400, lwork= 1000000, xinfo= 1, reduction time= 0.390625 Line 1039 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 400, b1= 8, lda= 16, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 400, lwork= 1000000, xinfo= 1, reduction time= 0.898438 Line 1042 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 400, b1= 12, lda= 24, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 400, lwork= 1000000, xinfo= 1, reduction time= 1.558594 Line 1045 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 400, b1= 16, lda= 32, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 400, lwork= 1000000, xinfo= 1, reduction time= 2.560547 Line 1048 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 400, b1= 24, lda= 48, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 400, lwork= 1000000, xinfo= 1, reduction time= 3.410156 Line 1051 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 400, b1= 32, lda= 64, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 400, lwork= 1000000, xinfo= 1, reduction time= 4.199219 Line 1054 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 400, b1= 48, lda= 96, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 400, lwork= 1000000, xinfo= 1, reduction time= 7.160156 Line 1057 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 400, b1= 64, lda= 128, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 400, lwork= 1000000, xinfo= 1, reduction time= 9.859375 Line 1062 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 600, b1= 4, lda= 8, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 600, lwork= 1000000, xinfo= 1, reduction time= 0.841797 Line 1065 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 600, b1= 8, lda= 16, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 600, lwork= 1000000, xinfo= 1, reduction time= 1.880859 Line 1068 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 600, b1= 12, lda= 24, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 600, lwork= 1000000, xinfo= 1, reduction time= 3.179688 Line 1071 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 600, b1= 16, lda= 32, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 600, lwork= 1000000, xinfo= 1, reduction time= 5.878906 Line 1074 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 600, b1= 24, lda= 48, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 600, lwork= 1000000, xinfo= 1, reduction time= 7.900391 Line 1077 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 600, b1= 32, lda= 64, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 600, lwork= 1000000, xinfo= 1, reduction time= 9.900391 Line 1080 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 600, b1= 48, lda= 96, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 600, lwork= 1000000, xinfo= 1, reduction time= 17.089844 Line 1083 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 600, b1= 64, lda= 128, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 600, lwork= 1000000, xinfo= 1, reduction time= 23.699219 Line 1088 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 800, b1= 4, lda= 8, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 800, lwork= 1000000, xinfo= 1, reduction time= 1.449219 Line 1091 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 800, b1= 8, lda= 16, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 800, lwork= 1000000, xinfo= 1, reduction time= 3.189453 Line 1094 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 800, b1= 12, lda= 24, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 800, lwork= 1000000, xinfo= 1, reduction time= 5.320313 Line 1097 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 800, b1= 16, lda= 32, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 800, lwork= 1000000, xinfo= 1, reduction time= 10.560547 Line 1100 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 800, b1= 24, lda= 48, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 800, lwork= 1000000, xinfo= 1, reduction time= 14.240234 Line 1103 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 800, b1= 32, lda= 64, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 800, lwork= 1000000, xinfo= 1, reduction time= 17.900391 Line 1106 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 800, b1= 48, lda= 96, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 800, lwork= 1000000, xinfo= 1, reduction time= 30.910156 Line 1109 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 800, b1= 64, lda= 128, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 800, lwork= 1000000, xinfo= 1, reduction time= 43.628906 Line 1114 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 1000, b1= 4, lda= 8, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 1000, lwork= 1000000, xinfo= 1, reduction time= 2.259766 Line 1117 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 1000, b1= 8, lda= 16, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 1000, lwork= 1000000, xinfo= 1, reduction time= 4.949219 Line 1120 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 1000, b1= 12, lda= 24, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 1000, lwork= 1000000, xinfo= 1, reduction time= 8.111328 Line 1123 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 1000, b1= 16, lda= 32, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 1000, lwork= 1000000, xinfo= 1, reduction time= 16.529297 Line 1126 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 1000, b1= 24, lda= 48, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 1000, lwork= 1000000, xinfo= 1, reduction time= 22.419922 Line 1129 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 1000, b1= 32, lda= 64, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 1000, lwork= 1000000, xinfo= 1, reduction time= 28.361328 Line 1132 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 1000, b1= 48, lda= 96, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 1000, lwork= 1000000, xinfo= 1, reduction time= 49.230469 Line 1135 / dsbrdd : reduction driver for banded matrcs (SBR), mtype=R, diam= 0.0000E+00, uplo=L, n= 1000, b1= 64, lda= 128, b2= 1, nsteps= 0, drptol= 0.0000E+00, jobu=N, ldu= 1000, lwork= 1000000, xinfo= 1, reduction time= 69.419922 =============================================================================== Tests for Total Skipped Failed ------------------------------------------------------------------------------- dsytrd : full -> tridiagonal, one-step (LAPACK) : 10 0 0 dorgtr : accumulation of transformations (LAPACK) : 5 0 0 dsbtrd : banded -> tridiagonal, one-step (LAPACK) : 80 0 0 dsyrdb : full -> banded, one-step (SBR) : 0 0 0 dsygtr : accumulation of transformations (SBR) : 0 0 0 dsbrdb : banded -> banded, one-step (SBR) : 0 0 0 dsbrdt : banded -> tridiagonal, one-step (SBR) : 80 0 40 dsy2bc : copy full -> banded (SBR) : 0 0 0 dsy2bi : in-place copy full -> banded (SBR) : 0 0 0 dsb2bc : copy banded -> banded (SBR) : 0 0 0 dsb2bi : in-place copy banded -> banded (SBR) : 0 0 0 dsyrdd : reduction driver for full matrices (SBR) : 10 0 0 dsbrdd : reduction driver for banded matrcs (SBR) : 80 0 0 ------------------------------------------------------------------------------- Total : : 265 0 40 ------------------------------------------------------------------------------- Total time : 20163.49 seconds SHAR_EOF fi # end of overwriting check if test -f 'res3' then echo shar: will not over-write existing file "'res3'" else cat << "SHAR_EOF" > 'res3' *** Setting nb for SYRDB *** no update dsyrdb: uplo=L, jobu=N, n= 200, b2= 64, nb= 1, info= 1, time= 1.270 dsyrdb: uplo=L, jobu=N, n= 200, b2= 64, nb= 4, info= 4, time= 1.240 dsyrdb: uplo=L, jobu=N, n= 200, b2= 64, nb= 6, info= 6, time= 1.320 dsyrdb: uplo=L, jobu=N, n= 200, b2= 64, nb= 8, info= 8, time= 1.290 dsyrdb: uplo=L, jobu=N, n= 200, b2= 64, nb= 12, info= 12, time= 1.420 dsyrdb: uplo=L, jobu=N, n= 200, b2= 64, nb= 16, info= 16, time= 1.450 dsyrdb: uplo=L, jobu=N, n= 200, b2= 64, nb= 20, info= 20, time= 1.510 dsyrdb: uplo=L, jobu=N, n= 200, b2= 64, nb= 24, info= 24, time= 1.580 dsyrdb: uplo=L, jobu=N, n= 200, b2= 64, nb= 32, info= 32, time= 1.730 dsyrdb: uplo=L, jobu=N, n= 200, b2= 64, nb= 40, info= 40, time= 1.880 dsyrdb: uplo=L, jobu=N, n= 200, b2= 64, nb= 48, info= 48, time= 2.040 dsyrdb: uplo=L, jobu=N, n= 200, b2= 64, nb= 64, info= 64, time= 2.430 dsyrdb: uplo=L, jobu=N, n= 400, b2= 64, nb= 1, info= 1, time= 13.390 dsyrdb: uplo=L, jobu=N, n= 400, b2= 64, nb= 4, info= 4, time= 13.300 dsyrdb: uplo=L, jobu=N, n= 400, b2= 64, nb= 6, info= 6, time= 13.450 dsyrdb: uplo=L, jobu=N, n= 400, b2= 64, nb= 8, info= 8, time= 13.800 dsyrdb: uplo=L, jobu=N, n= 400, b2= 64, nb= 12, info= 12, time= 14.120 dsyrdb: uplo=L, jobu=N, n= 400, b2= 64, nb= 16, info= 16, time= 14.760 dsyrdb: uplo=L, jobu=N, n= 400, b2= 64, nb= 20, info= 20, time= 14.640 dsyrdb: uplo=L, jobu=N, n= 400, b2= 64, nb= 24, info= 24, time= 14.980 dsyrdb: uplo=L, jobu=N, n= 400, b2= 64, nb= 32, info= 32, time= 15.730 dsyrdb: uplo=L, jobu=N, n= 400, b2= 64, nb= 40, info= 40, time= 16.440 dsyrdb: uplo=L, jobu=N, n= 400, b2= 64, nb= 48, info= 48, time= 17.400 dsyrdb: uplo=L, jobu=N, n= 400, b2= 64, nb= 64, info= 64, time= 19.230 dsyrdb: uplo=L, jobu=N, n= 600, b2= 64, nb= 1, info= 1, time= 48.980 dsyrdb: uplo=L, jobu=N, n= 600, b2= 64, nb= 4, info= 4, time= 49.430 dsyrdb: uplo=L, jobu=N, n= 600, b2= 64, nb= 6, info= 6, time= 49.630 dsyrdb: uplo=L, jobu=N, n= 600, b2= 64, nb= 8, info= 8, time= 49.520 dsyrdb: uplo=L, jobu=N, n= 600, b2= 64, nb= 12, info= 12, time= 50.610 dsyrdb: uplo=L, jobu=N, n= 600, b2= 64, nb= 16, info= 16, time= 51.060 dsyrdb: uplo=L, jobu=N, n= 600, b2= 64, nb= 20, info= 20, time= 52.040 dsyrdb: uplo=L, jobu=N, n= 600, b2= 64, nb= 24, info= 24, time= 53.560 dsyrdb: uplo=L, jobu=N, n= 600, b2= 64, nb= 32, info= 32, time= 55.650 dsyrdb: uplo=L, jobu=N, n= 600, b2= 64, nb= 40, info= 40, time= 56.910 dsyrdb: uplo=L, jobu=N, n= 600, b2= 64, nb= 48, info= 48, time= 58.370 dsyrdb: uplo=L, jobu=N, n= 600, b2= 64, nb= 64, info= 64, time= 62.150 with update dsyrdb: uplo=L, jobu=U, n= 200, b2= 64, nb= 1, info= 1, time= 3.070 dsyrdb: uplo=L, jobu=U, n= 200, b2= 64, nb= 4, info= 4, time= 3.120 dsyrdb: uplo=L, jobu=U, n= 200, b2= 64, nb= 6, info= 6, time= 3.140 dsyrdb: uplo=L, jobu=U, n= 200, b2= 64, nb= 8, info= 8, time= 3.170 dsyrdb: uplo=L, jobu=U, n= 200, b2= 64, nb= 12, info= 12, time= 3.250 dsyrdb: uplo=L, jobu=U, n= 200, b2= 64, nb= 16, info= 16, time= 3.470 dsyrdb: uplo=L, jobu=U, n= 200, b2= 64, nb= 20, info= 20, time= 3.550 dsyrdb: uplo=L, jobu=U, n= 200, b2= 64, nb= 24, info= 24, time= 3.620 dsyrdb: uplo=L, jobu=U, n= 200, b2= 64, nb= 32, info= 32, time= 3.810 dsyrdb: uplo=L, jobu=U, n= 200, b2= 64, nb= 40, info= 40, time= 4.030 dsyrdb: uplo=L, jobu=U, n= 200, b2= 64, nb= 48, info= 48, time= 4.140 dsyrdb: uplo=L, jobu=U, n= 200, b2= 64, nb= 64, info= 64, time= 4.610 dsyrdb: uplo=L, jobu=U, n= 400, b2= 64, nb= 1, info= 1, time= 36.240 dsyrdb: uplo=L, jobu=U, n= 400, b2= 64, nb= 4, info= 4, time= 35.970 dsyrdb: uplo=L, jobu=U, n= 400, b2= 64, nb= 6, info= 6, time= 36.550 dsyrdb: uplo=L, jobu=U, n= 400, b2= 64, nb= 8, info= 8, time= 36.880 dsyrdb: uplo=L, jobu=U, n= 400, b2= 64, nb= 12, info= 12, time= 37.120 dsyrdb: uplo=L, jobu=U, n= 400, b2= 64, nb= 16, info= 16, time= 37.410 dsyrdb: uplo=L, jobu=U, n= 400, b2= 64, nb= 20, info= 20, time= 37.980 dsyrdb: uplo=L, jobu=U, n= 400, b2= 64, nb= 24, info= 24, time= 38.480 dsyrdb: uplo=L, jobu=U, n= 400, b2= 64, nb= 32, info= 32, time= 39.160 dsyrdb: uplo=L, jobu=U, n= 400, b2= 64, nb= 40, info= 40, time= 40.440 dsyrdb: uplo=L, jobu=U, n= 400, b2= 64, nb= 48, info= 48, time= 41.380 dsyrdb: uplo=L, jobu=U, n= 400, b2= 64, nb= 64, info= 64, time= 44.110 dsyrdb: uplo=L, jobu=U, n= 600, b2= 64, nb= 1, info= 1, time= 138.830 dsyrdb: uplo=L, jobu=U, n= 600, b2= 64, nb= 4, info= 4, time= 138.800 dsyrdb: uplo=L, jobu=U, n= 600, b2= 64, nb= 6, info= 6, time= 139.300 dsyrdb: uplo=L, jobu=U, n= 600, b2= 64, nb= 8, info= 8, time= 139.740 dsyrdb: uplo=L, jobu=U, n= 600, b2= 64, nb= 12, info= 12, time= 141.290 dsyrdb: uplo=L, jobu=U, n= 600, b2= 64, nb= 16, info= 16, time= 142.420 dsyrdb: uplo=L, jobu=U, n= 600, b2= 64, nb= 20, info= 20, time= 143.170 dsyrdb: uplo=L, jobu=U, n= 600, b2= 64, nb= 24, info= 24, time= 144.470 dsyrdb: uplo=L, jobu=U, n= 600, b2= 64, nb= 32, info= 32, time= 146.940 dsyrdb: uplo=L, jobu=U, n= 600, b2= 64, nb= 40, info= 40, time= 150.100 dsyrdb: uplo=L, jobu=U, n= 600, b2= 64, nb= 48, info= 48, time= 153.050 dsyrdb: uplo=L, jobu=U, n= 600, b2= 64, nb= 64, info= 64, time= 156.950 *** Setting nb for SBRDB *** no update dsbrdb: jobu=N, n= 200, b1= 16, b2= 8, nb= 1, info= 1, time= 0.630 dsbrdb: jobu=N, n= 200, b1= 16, b2= 8, nb= 4, info= 4, time= 0.640 dsbrdb: jobu=N, n= 200, b1= 16, b2= 8, nb= 6, info= 6, time= 0.700 dsbrdb: jobu=N, n= 200, b1= 16, b2= 8, nb= 8, info= 8, time= 0.820 dsbrdb: jobu=N, n= 200, b1= 32, b2= 16, nb= 1, info= 1, time= 0.750 dsbrdb: jobu=N, n= 200, b1= 32, b2= 16, nb= 4, info= 4, time= 0.780 dsbrdb: jobu=N, n= 200, b1= 32, b2= 16, nb= 6, info= 6, time= 0.870 dsbrdb: jobu=N, n= 200, b1= 32, b2= 16, nb= 8, info= 8, time= 0.950 dsbrdb: jobu=N, n= 200, b1= 32, b2= 16, nb= 10, info= 10, time= 1.060 dsbrdb: jobu=N, n= 200, b1= 32, b2= 16, nb= 12, info= 12, time= 1.070 dsbrdb: jobu=N, n= 200, b1= 32, b2= 16, nb= 16, info= 16, time= 1.260 dsbrdb: jobu=N, n= 200, b1= 64, b2= 32, nb= 1, info= 1, time= 0.960 dsbrdb: jobu=N, n= 200, b1= 64, b2= 32, nb= 4, info= 4, time= 1.000 dsbrdb: jobu=N, n= 200, b1= 64, b2= 32, nb= 6, info= 6, time= 1.070 dsbrdb: jobu=N, n= 200, b1= 64, b2= 32, nb= 8, info= 8, time= 1.120 dsbrdb: jobu=N, n= 200, b1= 64, b2= 32, nb= 10, info= 10, time= 1.120 dsbrdb: jobu=N, n= 200, b1= 64, b2= 32, nb= 12, info= 12, time= 1.250 dsbrdb: jobu=N, n= 200, b1= 64, b2= 32, nb= 16, info= 16, time= 1.320 dsbrdb: jobu=N, n= 200, b1= 64, b2= 32, nb= 20, info= 20, time= 1.480 dsbrdb: jobu=N, n= 200, b1= 64, b2= 32, nb= 24, info= 24, time= 1.670 dsbrdb: jobu=N, n= 200, b1= 64, b2= 32, nb= 32, info= 32, time= 1.940 dsbrdb: jobu=N, n= 400, b1= 16, b2= 8, nb= 1, info= 1, time= 2.620 dsbrdb: jobu=N, n= 400, b1= 16, b2= 8, nb= 4, info= 4, time= 2.700 dsbrdb: jobu=N, n= 400, b1= 16, b2= 8, nb= 6, info= 6, time= 3.010 dsbrdb: jobu=N, n= 400, b1= 16, b2= 8, nb= 8, info= 8, time= 3.410 dsbrdb: jobu=N, n= 400, b1= 32, b2= 16, nb= 1, info= 1, time= 3.330 dsbrdb: jobu=N, n= 400, b1= 32, b2= 16, nb= 4, info= 4, time= 3.500 dsbrdb: jobu=N, n= 400, b1= 32, b2= 16, nb= 6, info= 6, time= 3.880 dsbrdb: jobu=N, n= 400, b1= 32, b2= 16, nb= 8, info= 8, time= 4.270 dsbrdb: jobu=N, n= 400, b1= 32, b2= 16, nb= 10, info= 10, time= 4.780 dsbrdb: jobu=N, n= 400, b1= 32, b2= 16, nb= 12, info= 12, time= 4.960 dsbrdb: jobu=N, n= 400, b1= 32, b2= 16, nb= 16, info= 16, time= 5.790 dsbrdb: jobu=N, n= 400, b1= 64, b2= 32, nb= 1, info= 1, time= 5.000 dsbrdb: jobu=N, n= 400, b1= 64, b2= 32, nb= 4, info= 4, time= 5.250 dsbrdb: jobu=N, n= 400, b1= 64, b2= 32, nb= 6, info= 6, time= 5.610 dsbrdb: jobu=N, n= 400, b1= 64, b2= 32, nb= 8, info= 8, time= 5.650 dsbrdb: jobu=N, n= 400, b1= 64, b2= 32, nb= 10, info= 10, time= 5.920 dsbrdb: jobu=N, n= 400, b1= 64, b2= 32, nb= 12, info= 12, time= 6.240 dsbrdb: jobu=N, n= 400, b1= 64, b2= 32, nb= 16, info= 16, time= 7.160 dsbrdb: jobu=N, n= 400, b1= 64, b2= 32, nb= 20, info= 20, time= 7.660 dsbrdb: jobu=N, n= 400, b1= 64, b2= 32, nb= 24, info= 24, time= 8.450 dsbrdb: jobu=N, n= 400, b1= 64, b2= 32, nb= 32, info= 32, time= 10.080 dsbrdb: jobu=N, n= 600, b1= 16, b2= 8, nb= 1, info= 1, time= 5.970 dsbrdb: jobu=N, n= 600, b1= 16, b2= 8, nb= 4, info= 4, time= 6.120 dsbrdb: jobu=N, n= 600, b1= 16, b2= 8, nb= 6, info= 6, time= 6.840 dsbrdb: jobu=N, n= 600, b1= 16, b2= 8, nb= 8, info= 8, time= 7.870 dsbrdb: jobu=N, n= 600, b1= 32, b2= 16, nb= 1, info= 1, time= 7.790 dsbrdb: jobu=N, n= 600, b1= 32, b2= 16, nb= 4, info= 4, time= 8.280 dsbrdb: jobu=N, n= 600, b1= 32, b2= 16, nb= 6, info= 6, time= 9.020 dsbrdb: jobu=N, n= 600, b1= 32, b2= 16, nb= 8, info= 8, time= 10.090 dsbrdb: jobu=N, n= 600, b1= 32, b2= 16, nb= 10, info= 10, time= 10.990 dsbrdb: jobu=N, n= 600, b1= 32, b2= 16, nb= 12, info= 12, time= 11.510 dsbrdb: jobu=N, n= 600, b1= 32, b2= 16, nb= 16, info= 16, time= 13.560 dsbrdb: jobu=N, n= 600, b1= 64, b2= 32, nb= 1, info= 1, time= 12.380 dsbrdb: jobu=N, n= 600, b1= 64, b2= 32, nb= 4, info= 4, time= 12.830 dsbrdb: jobu=N, n= 600, b1= 64, b2= 32, nb= 6, info= 6, time= 13.780 dsbrdb: jobu=N, n= 600, b1= 64, b2= 32, nb= 8, info= 8, time= 14.010 dsbrdb: jobu=N, n= 600, b1= 64, b2= 32, nb= 10, info= 10, time= 14.709 dsbrdb: jobu=N, n= 600, b1= 64, b2= 32, nb= 12, info= 12, time= 15.780 dsbrdb: jobu=N, n= 600, b1= 64, b2= 32, nb= 16, info= 16, time= 17.170 dsbrdb: jobu=N, n= 600, b1= 64, b2= 32, nb= 20, info= 20, time= 18.850 dsbrdb: jobu=N, n= 600, b1= 64, b2= 32, nb= 24, info= 24, time= 20.540 dsbrdb: jobu=N, n= 600, b1= 64, b2= 32, nb= 32, info= 32, time= 24.650 with update dsbrdb: jobu=U, n= 200, b1= 16, b2= 8, nb= 1, info= 1, time= 2.930 dsbrdb: jobu=U, n= 200, b1= 16, b2= 8, nb= 4, info= 4, time= 3.060 dsbrdb: jobu=U, n= 200, b1= 16, b2= 8, nb= 6, info= 6, time= 3.210 dsbrdb: jobu=U, n= 200, b1= 16, b2= 8, nb= 8, info= 8, time= 3.480 dsbrdb: jobu=U, n= 200, b1= 32, b2= 16, nb= 1, info= 1, time= 2.780 dsbrdb: jobu=U, n= 200, b1= 32, b2= 16, nb= 4, info= 4, time= 2.920 dsbrdb: jobu=U, n= 200, b1= 32, b2= 16, nb= 6, info= 6, time= 3.000 dsbrdb: jobu=U, n= 200, b1= 32, b2= 16, nb= 8, info= 8, time= 3.180 dsbrdb: jobu=U, n= 200, b1= 32, b2= 16, nb= 10, info= 10, time= 3.310 dsbrdb: jobu=U, n= 200, b1= 32, b2= 16, nb= 12, info= 12, time= 3.460 dsbrdb: jobu=U, n= 200, b1= 32, b2= 16, nb= 16, info= 16, time= 3.750 dsbrdb: jobu=U, n= 200, b1= 64, b2= 32, nb= 1, info= 1, time= 2.740 dsbrdb: jobu=U, n= 200, b1= 64, b2= 32, nb= 4, info= 4, time= 2.790 dsbrdb: jobu=U, n= 200, b1= 64, b2= 32, nb= 6, info= 6, time= 2.940 dsbrdb: jobu=U, n= 200, b1= 64, b2= 32, nb= 8, info= 8, time= 2.980 dsbrdb: jobu=U, n= 200, b1= 64, b2= 32, nb= 10, info= 10, time= 3.040 dsbrdb: jobu=U, n= 200, b1= 64, b2= 32, nb= 12, info= 12, time= 3.130 dsbrdb: jobu=U, n= 200, b1= 64, b2= 32, nb= 16, info= 16, time= 3.330 dsbrdb: jobu=U, n= 200, b1= 64, b2= 32, nb= 20, info= 20, time= 3.510 dsbrdb: jobu=U, n= 200, b1= 64, b2= 32, nb= 24, info= 24, time= 3.660 dsbrdb: jobu=U, n= 200, b1= 64, b2= 32, nb= 32, info= 32, time= 4.140 dsbrdb: jobu=U, n= 400, b1= 16, b2= 8, nb= 1, info= 1, time= 20.950 dsbrdb: jobu=U, n= 400, b1= 16, b2= 8, nb= 4, info= 4, time= 22.300 dsbrdb: jobu=U, n= 400, b1= 16, b2= 8, nb= 6, info= 6, time= 23.640 dsbrdb: jobu=U, n= 400, b1= 16, b2= 8, nb= 8, info= 8, time= 24.880 dsbrdb: jobu=U, n= 400, b1= 32, b2= 16, nb= 1, info= 1, time= 20.020 dsbrdb: jobu=U, n= 400, b1= 32, b2= 16, nb= 4, info= 4, time= 21.020 dsbrdb: jobu=U, n= 400, b1= 32, b2= 16, nb= 6, info= 6, time= 21.940 dsbrdb: jobu=U, n= 400, b1= 32, b2= 16, nb= 8, info= 8, time= 22.590 dsbrdb: jobu=U, n= 400, b1= 32, b2= 16, nb= 10, info= 10, time= 23.700 dsbrdb: jobu=U, n= 400, b1= 32, b2= 16, nb= 12, info= 12, time= 23.920 dsbrdb: jobu=U, n= 400, b1= 32, b2= 16, nb= 16, info= 16, time= 26.150 dsbrdb: jobu=U, n= 400, b1= 64, b2= 32, nb= 1, info= 1, time= 20.490 dsbrdb: jobu=U, n= 400, b1= 64, b2= 32, nb= 4, info= 4, time= 20.790 dsbrdb: jobu=U, n= 400, b1= 64, b2= 32, nb= 6, info= 6, time= 21.900 dsbrdb: jobu=U, n= 400, b1= 64, b2= 32, nb= 8, info= 8, time= 22.290 dsbrdb: jobu=U, n= 400, b1= 64, b2= 32, nb= 10, info= 10, time= 22.880 dsbrdb: jobu=U, n= 400, b1= 64, b2= 32, nb= 12, info= 12, time= 23.110 dsbrdb: jobu=U, n= 400, b1= 64, b2= 32, nb= 16, info= 16, time= 24.390 dsbrdb: jobu=U, n= 400, b1= 64, b2= 32, nb= 20, info= 20, time= 25.380 dsbrdb: jobu=U, n= 400, b1= 64, b2= 32, nb= 24, info= 24, time= 27.070 dsbrdb: jobu=U, n= 400, b1= 64, b2= 32, nb= 32, info= 32, time= 29.140 dsbrdb: jobu=U, n= 600, b1= 16, b2= 8, nb= 1, info= 1, time= 70.370 dsbrdb: jobu=U, n= 600, b1= 16, b2= 8, nb= 4, info= 4, time= 74.440 dsbrdb: jobu=U, n= 600, b1= 16, b2= 8, nb= 6, info= 6, time= 79.360 dsbrdb: jobu=U, n= 600, b1= 16, b2= 8, nb= 8, info= 8, time= 82.550 dsbrdb: jobu=U, n= 600, b1= 32, b2= 16, nb= 1, info= 1, time= 66.310 dsbrdb: jobu=U, n= 600, b1= 32, b2= 16, nb= 4, info= 4, time= 68.650 dsbrdb: jobu=U, n= 600, b1= 32, b2= 16, nb= 6, info= 6, time= 71.141 dsbrdb: jobu=U, n= 600, b1= 32, b2= 16, nb= 8, info= 8, time= 74.350 dsbrdb: jobu=U, n= 600, b1= 32, b2= 16, nb= 10, info= 10, time= 76.760 dsbrdb: jobu=U, n= 600, b1= 32, b2= 16, nb= 12, info= 12, time= 78.660 dsbrdb: jobu=U, n= 600, b1= 32, b2= 16, nb= 16, info= 16, time= 84.010 dsbrdb: jobu=U, n= 600, b1= 64, b2= 32, nb= 1, info= 1, time= 67.820 dsbrdb: jobu=U, n= 600, b1= 64, b2= 32, nb= 4, info= 4, time= 68.250 dsbrdb: jobu=U, n= 600, b1= 64, b2= 32, nb= 6, info= 6, time= 70.200 dsbrdb: jobu=U, n= 600, b1= 64, b2= 32, nb= 8, info= 8, time= 71.410 dsbrdb: jobu=U, n= 600, b1= 64, b2= 32, nb= 10, info= 10, time= 73.390 dsbrdb: jobu=U, n= 600, b1= 64, b2= 32, nb= 12, info= 12, time= 74.640 dsbrdb: jobu=U, n= 600, b1= 64, b2= 32, nb= 16, info= 16, time= 77.880 dsbrdb: jobu=U, n= 600, b1= 64, b2= 32, nb= 20, info= 20, time= 80.810 dsbrdb: jobu=U, n= 600, b1= 64, b2= 32, nb= 24, info= 24, time= 84.390 dsbrdb: jobu=U, n= 600, b1= 64, b2= 32, nb= 32, info= 32, time= 91.760 *** Setting nb for SBRDT *** with update dsbrdt: jobu=U, n= 200, b1= 8, nb= 1, info= 1, time= 1.061 dsbrdt: jobu=U, n= 200, b1= 8, nb= 4, info= 4, time= 4.899 dsbrdt: jobu=U, n= 200, b1= 8, nb= 6, info= 6, time= 5.300 dsbrdt: jobu=U, n= 200, b1= 8, nb= 8, info= 8, time= 5.400 dsbrdt: jobu=U, n= 200, b1= 8, nb= 10, info= 10, time= 5.650 dsbrdt: jobu=U, n= 200, b1= 8, nb= 12, info= 12, time= 5.931 dsbrdt: jobu=U, n= 200, b1= 16, nb= 1, info= 1, time= 3.279 dsbrdt: jobu=U, n= 200, b1= 16, nb= 4, info= 4, time= 4.890 dsbrdt: jobu=U, n= 200, b1= 16, nb= 6, info= 6, time= 5.021 dsbrdt: jobu=U, n= 200, b1= 16, nb= 8, info= 8, time= 5.210 dsbrdt: jobu=U, n= 200, b1= 16, nb= 10, info= 10, time= 5.320 dsbrdt: jobu=U, n= 200, b1= 16, nb= 12, info= 12, time= 5.510 dsbrdt: jobu=U, n= 200, b1= 16, nb= 16, info= 16, time= 5.790 dsbrdt: jobu=U, n= 200, b1= 16, nb= 20, info= 20, time= 6.120 dsbrdt: jobu=U, n= 200, b1= 16, nb= 24, info= 24, time= 6.330 dsbrdt: jobu=U, n= 200, b1= 32, nb= 1, info= 1, time= 3.630 dsbrdt: jobu=U, n= 200, b1= 32, nb= 4, info= 4, time= 5.060 dsbrdt: jobu=U, n= 200, b1= 32, nb= 6, info= 6, time= 5.190 dsbrdt: jobu=U, n= 200, b1= 32, nb= 8, info= 8, time= 5.280 dsbrdt: jobu=U, n= 200, b1= 32, nb= 10, info= 10, time= 5.431 dsbrdt: jobu=U, n= 200, b1= 32, nb= 12, info= 12, time= 5.390 dsbrdt: jobu=U, n= 200, b1= 32, nb= 16, info= 16, time= 5.640 dsbrdt: jobu=U, n= 200, b1= 32, nb= 20, info= 20, time= 5.840 dsbrdt: jobu=U, n= 200, b1= 32, nb= 32, info= 32, time= 6.351 dsbrdt: jobu=U, n= 200, b1= 32, nb= 40, info= 40, time= 6.750 dsbrdt: jobu=U, n= 400, b1= 8, nb= 1, info= 1, time= 7.909 dsbrdt: jobu=U, n= 400, b1= 8, nb= 4, info= 4, time= 37.670 dsbrdt: jobu=U, n= 400, b1= 8, nb= 6, info= 6, time= 39.450 dsbrdt: jobu=U, n= 400, b1= 8, nb= 8, info= 8, time= 41.660 dsbrdt: jobu=U, n= 400, b1= 8, nb= 10, info= 10, time= 43.540 dsbrdt: jobu=U, n= 400, b1= 8, nb= 12, info= 12, time= 45.710 dsbrdt: jobu=U, n= 400, b1= 16, nb= 1, info= 1, time= 24.511 dsbrdt: jobu=U, n= 400, b1= 16, nb= 4, info= 4, time= 36.641 dsbrdt: jobu=U, n= 400, b1= 16, nb= 6, info= 6, time= 37.859 dsbrdt: jobu=U, n= 400, b1= 16, nb= 8, info= 8, time= 38.819 dsbrdt: jobu=U, n= 400, b1= 16, nb= 10, info= 10, time= 39.811 dsbrdt: jobu=U, n= 400, b1= 16, nb= 12, info= 12, time= 41.170 dsbrdt: jobu=U, n= 400, b1= 16, nb= 16, info= 16, time= 43.399 dsbrdt: jobu=U, n= 400, b1= 16, nb= 20, info= 20, time= 45.570 dsbrdt: jobu=U, n= 400, b1= 16, nb= 24, info= 24, time= 47.580 dsbrdt: jobu=U, n= 400, b1= 32, nb= 1, info= 1, time= 25.990 dsbrdt: jobu=U, n= 400, b1= 32, nb= 4, info= 4, time= 37.250 dsbrdt: jobu=U, n= 400, b1= 32, nb= 6, info= 6, time= 38.069 dsbrdt: jobu=U, n= 400, b1= 32, nb= 8, info= 8, time= 38.739 dsbrdt: jobu=U, n= 400, b1= 32, nb= 10, info= 10, time= 39.380 dsbrdt: jobu=U, n= 400, b1= 32, nb= 12, info= 12, time= 40.000 dsbrdt: jobu=U, n= 400, b1= 32, nb= 16, info= 16, time= 40.950 dsbrdt: jobu=U, n= 400, b1= 32, nb= 20, info= 20, time= 42.250 dsbrdt: jobu=U, n= 400, b1= 32, nb= 32, info= 32, time= 46.030 dsbrdt: jobu=U, n= 400, b1= 32, nb= 40, info= 40, time= 48.239 dsbrdt: jobu=U, n= 600, b1= 8, nb= 1, info= 1, time= 25.600 dsbrdt: jobu=U, n= 600, b1= 8, nb= 4, info= 4, time= 127.690 dsbrdt: jobu=U, n= 600, b1= 8, nb= 6, info= 6, time= 134.300 dsbrdt: jobu=U, n= 600, b1= 8, nb= 8, info= 8, time= 141.820 dsbrdt: jobu=U, n= 600, b1= 8, nb= 10, info= 10, time= 148.960 dsbrdt: jobu=U, n= 600, b1= 8, nb= 12, info= 12, time= 155.729 dsbrdt: jobu=U, n= 600, b1= 16, nb= 1, info= 1, time= 81.830 dsbrdt: jobu=U, n= 600, b1= 16, nb= 4, info= 4, time= 123.700 dsbrdt: jobu=U, n= 600, b1= 16, nb= 6, info= 6, time= 127.140 dsbrdt: jobu=U, n= 600, b1= 16, nb= 8, info= 8, time= 131.060 dsbrdt: jobu=U, n= 600, b1= 16, nb= 10, info= 10, time= 134.700 dsbrdt: jobu=U, n= 600, b1= 16, nb= 12, info= 12, time= 137.830 dsbrdt: jobu=U, n= 600, b1= 16, nb= 16, info= 16, time= 145.110 dsbrdt: jobu=U, n= 600, b1= 16, nb= 20, info= 20, time= 154.210 dsbrdt: jobu=U, n= 600, b1= 16, nb= 24, info= 24, time= 161.670 dsbrdt: jobu=U, n= 600, b1= 32, nb= 1, info= 1, time= 86.070 dsbrdt: jobu=U, n= 600, b1= 32, nb= 4, info= 4, time= 125.300 dsbrdt: jobu=U, n= 600, b1= 32, nb= 6, info= 6, time= 127.330 dsbrdt: jobu=U, n= 600, b1= 32, nb= 8, info= 8, time= 128.700 dsbrdt: jobu=U, n= 600, b1= 32, nb= 10, info= 10, time= 131.110 dsbrdt: jobu=U, n= 600, b1= 32, nb= 12, info= 12, time= 132.750 dsbrdt: jobu=U, n= 600, b1= 32, nb= 16, info= 16, time= 136.310 dsbrdt: jobu=U, n= 600, b1= 32, nb= 20, info= 20, time= 140.510 dsbrdt: jobu=U, n= 600, b1= 32, nb= 32, info= 32, time= 152.310 dsbrdt: jobu=U, n= 600, b1= 32, nb= 40, info= 40, time= 160.960 =============================================================================== Tests for Total Skipped Failed ------------------------------------------------------------------------------- dsytrd : full -> tridiagonal, one-step (LAPACK) : 0 0 0 dorgtr : accumulation of transformations (LAPACK) : 0 0 0 dsbtrd : banded -> tridiagonal, one-step (LAPACK) : 0 0 0 dsyrdb : full -> banded, one-step (SBR) : 72 0 0 dsygtr : accumulation of transformations (SBR) : 0 0 0 dsbrdb : banded -> banded, one-step (SBR) : 126 0 0 dsbrdt : banded -> tridiagonal, one-step (SBR) : 75 0 0 dsy2bc : copy full -> banded (SBR) : 0 0 0 dsy2bi : in-place copy full -> banded (SBR) : 0 0 0 dsb2bc : copy banded -> banded (SBR) : 0 0 0 dsb2bi : in-place copy banded -> banded (SBR) : 0 0 0 dsyrdd : reduction driver for full matrices (SBR) : 0 0 0 dsbrdd : reduction driver for banded matrcs (SBR) : 0 0 0 ------------------------------------------------------------------------------- Total : : 273 0 0 ------------------------------------------------------------------------------- Total time : 13000.97 seconds SHAR_EOF fi # end of overwriting check if test -f 'res4' then echo shar: will not over-write existing file "'res4'" else cat << "SHAR_EOF" > 'res4' *** Setting intermediate bandwidth for SYRDD *** no update one-step (b=1): dsyrdd: uplo=L, job=N, n= 200, b2= 1, nsteps= 1, step= 1, info= 1, time= 1.320 b=12: dsyrdd: uplo=L, job=N, n= 200, b2= 1, nsteps= 2, step= 2, info= 1, time= 2.690 b=16: dsyrdd: uplo=L, job=N, n= 200, b2= 1, nsteps= 2, step= 2, info= 1, time= 2.860 b=20: dsyrdd: uplo=L, job=N, n= 200, b2= 1, nsteps= 2, step= 2, info= 1, time= 3.010 b=24: dsyrdd: uplo=L, job=N, n= 200, b2= 1, nsteps= 2, step= 2, info= 1, time= 3.100 b=32: dsyrdd: uplo=L, job=N, n= 200, b2= 1, nsteps= 2, step= 2, info= 1, time= 3.350 b=40: dsyrdd: uplo=L, job=N, n= 200, b2= 1, nsteps= 2, step= 2, info= 1, time= 3.400 b=48: dsyrdd: uplo=L, job=N, n= 200, b2= 1, nsteps= 2, step= 2, info= 1, time= 3.230 b=64: dsyrdd: uplo=L, job=N, n= 200, b2= 1, nsteps= 2, step= 2, info= 1, time= 3.090 one-step (b=1): dsyrdd: uplo=L, job=N, n= 400, b2= 1, nsteps= 1, step= 1, info= 1, time= 10.130 b=12: dsyrdd: uplo=L, job=N, n= 400, b2= 1, nsteps= 2, step= 2, info= 1, time= 18.920 b=16: dsyrdd: uplo=L, job=N, n= 400, b2= 1, nsteps= 2, step= 2, info= 1, time= 20.190 b=20: dsyrdd: uplo=L, job=N, n= 400, b2= 1, nsteps= 2, step= 2, info= 1, time= 20.610 b=24: dsyrdd: uplo=L, job=N, n= 400, b2= 1, nsteps= 2, step= 2, info= 1, time= 20.900 b=32: dsyrdd: uplo=L, job=N, n= 400, b2= 1, nsteps= 2, step= 2, info= 1, time= 21.980 b=40: dsyrdd: uplo=L, job=N, n= 400, b2= 1, nsteps= 2, step= 2, info= 1, time= 22.510 b=48: dsyrdd: uplo=L, job=N, n= 400, b2= 1, nsteps= 2, step= 2, info= 1, time= 23.210 b=64: dsyrdd: uplo=L, job=N, n= 400, b2= 1, nsteps= 2, step= 2, info= 1, time= 23.240 one-step (b=1): dsyrdd: uplo=L, job=N, n= 600, b2= 1, nsteps= 1, step= 1, info= 1, time= 35.030 b=12: dsyrdd: uplo=L, job=N, n= 600, b2= 1, nsteps= 2, step= 2, info= 1, time= 60.340 b=16: dsyrdd: uplo=L, job=N, n= 600, b2= 1, nsteps= 2, step= 2, info= 1, time= 63.460 b=20: dsyrdd: uplo=L, job=N, n= 600, b2= 1, nsteps= 2, step= 2, info= 1, time= 64.890 b=24: dsyrdd: uplo=L, job=N, n= 600, b2= 1, nsteps= 2, step= 2, info= 1, time= 66.460 b=32: dsyrdd: uplo=L, job=N, n= 600, b2= 1, nsteps= 2, step= 2, info= 1, time= 69.220 b=40: dsyrdd: uplo=L, job=N, n= 600, b2= 1, nsteps= 2, step= 2, info= 1, time= 71.170 b=48: dsyrdd: uplo=L, job=N, n= 600, b2= 1, nsteps= 2, step= 2, info= 1, time= 71.720 b=64: dsyrdd: uplo=L, job=N, n= 600, b2= 1, nsteps= 2, step= 2, info= 1, time= 73.120 with update one-step (b=1): dsyrdd: uplo=L, job=U, n= 200, b2= 1, nsteps= 1, step= 1, info= 1, time= 3.620 b=12: dsyrdd: uplo=L, job=U, n= 200, b2= 1, nsteps= 2, step= 2, info= 1, time= 9.020 b=16: dsyrdd: uplo=L, job=U, n= 200, b2= 1, nsteps= 2, step= 2, info= 1, time= 9.090 b=20: dsyrdd: uplo=L, job=U, n= 200, b2= 1, nsteps= 2, step= 2, info= 1, time= 9.200 b=24: dsyrdd: uplo=L, job=U, n= 200, b2= 1, nsteps= 2, step= 2, info= 1, time= 9.130 b=32: dsyrdd: uplo=L, job=U, n= 200, b2= 1, nsteps= 2, step= 2, info= 1, time= 9.230 b=40: dsyrdd: uplo=L, job=U, n= 200, b2= 1, nsteps= 2, step= 2, info= 1, time= 9.070 b=48: dsyrdd: uplo=L, job=U, n= 200, b2= 1, nsteps= 2, step= 2, info= 1, time= 8.750 b=64: dsyrdd: uplo=L, job=U, n= 200, b2= 1, nsteps= 2, step= 2, info= 1, time= 8.460 one-step (b=1): dsyrdd: uplo=L, job=U, n= 400, b2= 1, nsteps= 1, step= 1, info= 1, time= 29.590 b=12: dsyrdd: uplo=L, job=U, n= 400, b2= 1, nsteps= 2, step= 2, info= 1, time= 71.840 b=16: dsyrdd: uplo=L, job=U, n= 400, b2= 1, nsteps= 2, step= 2, info= 1, time= 72.500 b=20: dsyrdd: uplo=L, job=U, n= 400, b2= 1, nsteps= 2, step= 2, info= 1, time= 73.100 b=24: dsyrdd: uplo=L, job=U, n= 400, b2= 1, nsteps= 2, step= 2, info= 1, time= 72.620 b=32: dsyrdd: uplo=L, job=U, n= 400, b2= 1, nsteps= 2, step= 2, info= 1, time= 72.770 b=40: dsyrdd: uplo=L, job=U, n= 400, b2= 1, nsteps= 2, step= 2, info= 1, time= 71.920 b=48: dsyrdd: uplo=L, job=U, n= 400, b2= 1, nsteps= 2, step= 2, info= 1, time= 71.840 b=64: dsyrdd: uplo=L, job=U, n= 400, b2= 1, nsteps= 2, step= 2, info= 1, time= 70.300 one-step (b=1): dsyrdd: uplo=L, job=U, n= 600, b2= 1, nsteps= 1, step= 1, info= 1, time= 101.170 b=12: dsyrdd: uplo=L, job=U, n= 600, b2= 1, nsteps= 2, step= 2, info= 1, time= 245.990 b=16: dsyrdd: uplo=L, job=U, n= 600, b2= 1, nsteps= 2, step= 2, info= 1, time= 247.640 b=20: dsyrdd: uplo=L, job=U, n= 600, b2= 1, nsteps= 2, step= 2, info= 1, time= 249.290 b=24: dsyrdd: uplo=L, job=U, n= 600, b2= 1, nsteps= 2, step= 2, info= 1, time= 246.640 b=32: dsyrdd: uplo=L, job=U, n= 600, b2= 1, nsteps= 2, step= 2, info= 1, time= 248.040 b=40: dsyrdd: uplo=L, job=U, n= 600, b2= 1, nsteps= 2, step= 2, info= 1, time= 246.080 b=48: dsyrdd: uplo=L, job=U, n= 600, b2= 1, nsteps= 2, step= 2, info= 1, time= 244.880 b=64: dsyrdd: uplo=L, job=U, n= 600, b2= 1, nsteps= 2, step= 2, info= 1, time= 243.220 *** Setting intermediate bandwidth for SBRDD *** no update one-step (b=1): dsbrdd: uplo=L, jobu=N, n= 200, b1= 32, b2= 1, nsteps= 1, step= 1, info= 1, time= 0.950 b=8: dsbrdd: uplo=L, jobu=N, n= 200, b1= 32, b2= 1, nsteps= 2, step= 2, info= 1, time= 1.540 b=12: dsbrdd: uplo=L, jobu=N, n= 200, b1= 32, b2= 1, nsteps= 2, step= 2, info= 1, time= 1.600 b=16: dsbrdd: uplo=L, jobu=N, n= 200, b1= 32, b2= 1, nsteps= 2, step= 2, info= 1, time= 1.410 b=24: dsbrdd: uplo=L, jobu=N, n= 200, b1= 32, b2= 1, nsteps= 2, step= 2, info= 1, time= 1.240 one-step (b=1): dsbrdd: uplo=L, jobu=N, n= 200, b1= 64, b2= 1, nsteps= 1, step= 1, info= 1, time= 1.380 b=8: dsbrdd: uplo=L, jobu=N, n= 200, b1= 64, b2= 1, nsteps= 2, step= 2, info= 1, time= 2.310 b=12: dsbrdd: uplo=L, jobu=N, n= 200, b1= 64, b2= 1, nsteps= 2, step= 2, info= 1, time= 2.490 b=16: dsbrdd: uplo=L, jobu=N, n= 200, b1= 64, b2= 1, nsteps= 2, step= 2, info= 1, time= 2.490 b=24: dsbrdd: uplo=L, jobu=N, n= 200, b1= 64, b2= 1, nsteps= 2, step= 2, info= 1, time= 2.280 b=32: dsbrdd: uplo=L, jobu=N, n= 200, b1= 64, b2= 1, nsteps= 2, step= 2, info= 1, time= 2.000 b=48: dsbrdd: uplo=L, jobu=N, n= 200, b1= 64, b2= 1, nsteps= 2, step= 2, info= 1, time= 1.700 one-step (b=1): dsbrdd: uplo=L, jobu=N, n= 200, b1= 96, b2= 1, nsteps= 1, step= 1, info= 1, time= 1.490 b=8: dsbrdd: uplo=L, jobu=N, n= 200, b1= 96, b2= 1, nsteps= 2, step= 2, info= 1, time= 2.530 b=12: dsbrdd: uplo=L, jobu=N, n= 200, b1= 96, b2= 1, nsteps= 2, step= 2, info= 1, time= 2.790 b=16: dsbrdd: uplo=L, jobu=N, n= 200, b1= 96, b2= 1, nsteps= 2, step= 2, info= 1, time= 2.860 b=24: dsbrdd: uplo=L, jobu=N, n= 200, b1= 96, b2= 1, nsteps= 2, step= 2, info= 1, time= 2.850 b=32: dsbrdd: uplo=L, jobu=N, n= 200, b1= 96, b2= 1, nsteps= 2, step= 2, info= 1, time= 2.670 b=48: dsbrdd: uplo=L, jobu=N, n= 200, b1= 96, b2= 1, nsteps= 2, step= 2, info= 1, time= 2.410 b=64: dsbrdd: uplo=L, jobu=N, n= 200, b1= 96, b2= 1, nsteps= 2, step= 2, info= 1, time= 2.110 one-step (b=1): dsbrdd: uplo=L, jobu=N, n= 400, b1= 32, b2= 1, nsteps= 1, step= 1, info= 1, time= 4.310 b=8: dsbrdd: uplo=L, jobu=N, n= 400, b1= 32, b2= 1, nsteps= 2, step= 2, info= 1, time= 6.540 b=12: dsbrdd: uplo=L, jobu=N, n= 400, b1= 32, b2= 1, nsteps= 2, step= 2, info= 1, time= 6.260 b=16: dsbrdd: uplo=L, jobu=N, n= 400, b1= 32, b2= 1, nsteps= 2, step= 2, info= 1, time= 6.290 b=24: dsbrdd: uplo=L, jobu=N, n= 400, b1= 32, b2= 1, nsteps= 2, step= 2, info= 1, time= 5.600 one-step (b=1): dsbrdd: uplo=L, jobu=N, n= 400, b1= 64, b2= 1, nsteps= 1, step= 1, info= 1, time= 7.260 b=8: dsbrdd: uplo=L, jobu=N, n= 400, b1= 64, b2= 1, nsteps= 2, step= 2, info= 1, time= 11.350 b=12: dsbrdd: uplo=L, jobu=N, n= 400, b1= 64, b2= 1, nsteps= 2, step= 2, info= 1, time= 11.820 b=16: dsbrdd: uplo=L, jobu=N, n= 400, b1= 64, b2= 1, nsteps= 2, step= 2, info= 1, time= 12.070 b=24: dsbrdd: uplo=L, jobu=N, n= 400, b1= 64, b2= 1, nsteps= 2, step= 2, info= 1, time= 10.910 b=32: dsbrdd: uplo=L, jobu=N, n= 400, b1= 64, b2= 1, nsteps= 2, step= 2, info= 1, time= 10.000 b=48: dsbrdd: uplo=L, jobu=N, n= 400, b1= 64, b2= 1, nsteps= 2, step= 2, info= 1, time= 8.500 one-step (b=1): dsbrdd: uplo=L, jobu=N, n= 400, b1= 96, b2= 1, nsteps= 1, step= 1, info= 1, time= 9.570 b=8: dsbrdd: uplo=L, jobu=N, n= 400, b1= 96, b2= 1, nsteps= 2, step= 2, info= 1, time= 14.540 b=12: dsbrdd: uplo=L, jobu=N, n= 400, b1= 96, b2= 1, nsteps= 2, step= 2, info= 1, time= 15.230 b=16: dsbrdd: uplo=L, jobu=N, n= 400, b1= 96, b2= 1, nsteps= 2, step= 2, info= 1, time= 16.330 b=24: dsbrdd: uplo=L, jobu=N, n= 400, b1= 96, b2= 1, nsteps= 2, step= 2, info= 1, time= 16.020 b=32: dsbrdd: uplo=L, jobu=N, n= 400, b1= 96, b2= 1, nsteps= 2, step= 2, info= 1, time= 14.850 b=48: dsbrdd: uplo=L, jobu=N, n= 400, b1= 96, b2= 1, nsteps= 2, step= 2, info= 1, time= 13.220 b=64: dsbrdd: uplo=L, jobu=N, n= 400, b1= 96, b2= 1, nsteps= 2, step= 2, info= 1, time= 11.840 one-step (b=1): dsbrdd: uplo=L, jobu=N, n= 600, b1= 32, b2= 1, nsteps= 1, step= 1, info= 1, time= 10.090 b=8: dsbrdd: uplo=L, jobu=N, n= 600, b1= 32, b2= 1, nsteps= 2, step= 2, info= 1, time= 15.160 b=12: dsbrdd: uplo=L, jobu=N, n= 600, b1= 32, b2= 1, nsteps= 2, step= 2, info= 1, time= 14.300 b=16: dsbrdd: uplo=L, jobu=N, n= 600, b1= 32, b2= 1, nsteps= 2, step= 2, info= 1, time= 14.500 b=24: dsbrdd: uplo=L, jobu=N, n= 600, b1= 32, b2= 1, nsteps= 2, step= 2, info= 1, time= 12.890 one-step (b=1): dsbrdd: uplo=L, jobu=N, n= 600, b1= 64, b2= 1, nsteps= 1, step= 1, info= 1, time= 17.790 b=8: dsbrdd: uplo=L, jobu=N, n= 600, b1= 64, b2= 1, nsteps= 2, step= 2, info= 1, time= 27.650 b=12: dsbrdd: uplo=L, jobu=N, n= 600, b1= 64, b2= 1, nsteps= 2, step= 2, info= 1, time= 28.510 b=16: dsbrdd: uplo=L, jobu=N, n= 600, b1= 64, b2= 1, nsteps= 2, step= 2, info= 1, time= 29.250 b=24: dsbrdd: uplo=L, jobu=N, n= 600, b1= 64, b2= 1, nsteps= 2, step= 2, info= 1, time= 26.330 b=32: dsbrdd: uplo=L, jobu=N, n= 600, b1= 64, b2= 1, nsteps= 2, step= 2, info= 1, time= 24.000 b=48: dsbrdd: uplo=L, jobu=N, n= 600, b1= 64, b2= 1, nsteps= 2, step= 2, info= 1, time= 20.440 one-step (b=1): dsbrdd: uplo=L, jobu=N, n= 600, b1= 96, b2= 1, nsteps= 1, step= 1, info= 1, time= 24.290 b=8: dsbrdd: uplo=L, jobu=N, n= 600, b1= 96, b2= 1, nsteps= 2, step= 2, info= 1, time= 36.580 b=12: dsbrdd: uplo=L, jobu=N, n= 600, b1= 96, b2= 1, nsteps= 2, step= 2, info= 1, time= 38.040 b=16: dsbrdd: uplo=L, jobu=N, n= 600, b1= 96, b2= 1, nsteps= 2, step= 2, info= 1, time= 41.210 b=24: dsbrdd: uplo=L, jobu=N, n= 600, b1= 96, b2= 1, nsteps= 2, step= 2, info= 1, time= 43.010 b=32: dsbrdd: uplo=L, jobu=N, n= 600, b1= 96, b2= 1, nsteps= 2, step= 2, info= 1, time= 37.120 b=48: dsbrdd: uplo=L, jobu=N, n= 600, b1= 96, b2= 1, nsteps= 2, step= 2, info= 1, time= 33.150 b=64: dsbrdd: uplo=L, jobu=N, n= 600, b1= 96, b2= 1, nsteps= 2, step= 2, info= 1, time= 29.580 with update one-step (b=1): dsbrdd: uplo=L, jobu=U, n= 200, b1= 32, b2= 1, nsteps= 1, step= 1, info= 1, time= 5.420 b=8: dsbrdd: uplo=L, jobu=U, n= 200, b1= 32, b2= 1, nsteps= 2, step= 2, info= 1, time= 9.370 b=12: dsbrdd: uplo=L, jobu=U, n= 200, b1= 32, b2= 1, nsteps= 2, step= 2, info= 1, time= 8.580 b=16: dsbrdd: uplo=L, jobu=U, n= 200, b1= 32, b2= 1, nsteps= 2, step= 2, info= 1, time= 7.960 b=24: dsbrdd: uplo=L, jobu=U, n= 200, b1= 32, b2= 1, nsteps= 2, step= 2, info= 1, time= 6.720 one-step (b=1): dsbrdd: uplo=L, jobu=U, n= 200, b1= 64, b2= 1, nsteps= 1, step= 1, info= 1, time= 6.030 b=8: dsbrdd: uplo=L, jobu=U, n= 200, b1= 64, b2= 1, nsteps= 2, step= 2, info= 1, time= 10.530 b=12: dsbrdd: uplo=L, jobu=U, n= 200, b1= 64, b2= 1, nsteps= 2, step= 2, info= 1, time= 10.340 b=16: dsbrdd: uplo=L, jobu=U, n= 200, b1= 64, b2= 1, nsteps= 2, step= 2, info= 1, time= 10.020 b=24: dsbrdd: uplo=L, jobu=U, n= 200, b1= 64, b2= 1, nsteps= 2, step= 2, info= 1, time= 9.290 b=32: dsbrdd: uplo=L, jobu=U, n= 200, b1= 64, b2= 1, nsteps= 2, step= 2, info= 1, time= 8.440 b=48: dsbrdd: uplo=L, jobu=U, n= 200, b1= 64, b2= 1, nsteps= 2, step= 2, info= 1, time= 7.200 one-step (b=1): dsbrdd: uplo=L, jobu=U, n= 200, b1= 96, b2= 1, nsteps= 1, step= 1, info= 1, time= 6.160 b=8: dsbrdd: uplo=L, jobu=U, n= 200, b1= 96, b2= 1, nsteps= 2, step= 2, info= 1, time= 10.710 b=12: dsbrdd: uplo=L, jobu=U, n= 200, b1= 96, b2= 1, nsteps= 2, step= 2, info= 1, time= 10.630 b=16: dsbrdd: uplo=L, jobu=U, n= 200, b1= 96, b2= 1, nsteps= 2, step= 2, info= 1, time= 10.600 b=24: dsbrdd: uplo=L, jobu=U, n= 200, b1= 96, b2= 1, nsteps= 2, step= 2, info= 1, time= 10.130 b=32: dsbrdd: uplo=L, jobu=U, n= 200, b1= 96, b2= 1, nsteps= 2, step= 2, info= 1, time= 9.560 b=48: dsbrdd: uplo=L, jobu=U, n= 200, b1= 96, b2= 1, nsteps= 2, step= 2, info= 1, time= 8.730 b=64: dsbrdd: uplo=L, jobu=U, n= 200, b1= 96, b2= 1, nsteps= 2, step= 2, info= 1, time= 7.720 one-step (b=1): dsbrdd: uplo=L, jobu=U, n= 400, b1= 32, b2= 1, nsteps= 1, step= 1, info= 1, time= 39.940 b=8: dsbrdd: uplo=L, jobu=U, n= 400, b1= 32, b2= 1, nsteps= 2, step= 2, info= 1, time= 69.140 b=12: dsbrdd: uplo=L, jobu=U, n= 400, b1= 32, b2= 1, nsteps= 2, step= 2, info= 1, time= 63.600 b=16: dsbrdd: uplo=L, jobu=U, n= 400, b1= 32, b2= 1, nsteps= 2, step= 2, info= 1, time= 58.660 b=24: dsbrdd: uplo=L, jobu=U, n= 400, b1= 32, b2= 1, nsteps= 2, step= 2, info= 1, time= 50.510 one-step (b=1): dsbrdd: uplo=L, jobu=U, n= 400, b1= 64, b2= 1, nsteps= 1, step= 1, info= 1, time= 43.370 b=8: dsbrdd: uplo=L, jobu=U, n= 400, b1= 64, b2= 1, nsteps= 2, step= 2, info= 1, time= 77.150 b=12: dsbrdd: uplo=L, jobu=U, n= 400, b1= 64, b2= 1, nsteps= 2, step= 2, info= 1, time= 75.050 b=16: dsbrdd: uplo=L, jobu=U, n= 400, b1= 64, b2= 1, nsteps= 2, step= 2, info= 1, time= 72.570 b=24: dsbrdd: uplo=L, jobu=U, n= 400, b1= 64, b2= 1, nsteps= 2, step= 2, info= 1, time= 67.130 b=32: dsbrdd: uplo=L, jobu=U, n= 400, b1= 64, b2= 1, nsteps= 2, step= 2, info= 1, time= 61.830 b=48: dsbrdd: uplo=L, jobu=U, n= 400, b1= 64, b2= 1, nsteps= 2, step= 2, info= 1, time= 52.180 one-step (b=1): dsbrdd: uplo=L, jobu=U, n= 400, b1= 96, b2= 1, nsteps= 1, step= 1, info= 1, time= 45.500 b=8: dsbrdd: uplo=L, jobu=U, n= 400, b1= 96, b2= 1, nsteps= 2, step= 2, info= 1, time= 80.890 b=12: dsbrdd: uplo=L, jobu=U, n= 400, b1= 96, b2= 1, nsteps= 2, step= 2, info= 1, time= 80.150 b=16: dsbrdd: uplo=L, jobu=U, n= 400, b1= 96, b2= 1, nsteps= 2, step= 2, info= 1, time= 79.350 b=24: dsbrdd: uplo=L, jobu=U, n= 400, b1= 96, b2= 1, nsteps= 2, step= 2, info= 1, time= 76.190 b=32: dsbrdd: uplo=L, jobu=U, n= 400, b1= 96, b2= 1, nsteps= 2, step= 2, info= 1, time= 72.450 b=48: dsbrdd: uplo=L, jobu=U, n= 400, b1= 96, b2= 1, nsteps= 2, step= 2, info= 1, time= 63.960 b=64: dsbrdd: uplo=L, jobu=U, n= 400, b1= 96, b2= 1, nsteps= 2, step= 2, info= 1, time= 57.730 one-step (b=1): dsbrdd: uplo=L, jobu=U, n= 600, b1= 32, b2= 1, nsteps= 1, step= 1, info= 1, time= 132.370 b=8: dsbrdd: uplo=L, jobu=U, n= 600, b1= 32, b2= 1, nsteps= 2, step= 2, info= 1, time= 230.830 b=12: dsbrdd: uplo=L, jobu=U, n= 600, b1= 32, b2= 1, nsteps= 2, step= 2, info= 1, time= 211.480 b=16: dsbrdd: uplo=L, jobu=U, n= 600, b1= 32, b2= 1, nsteps= 2, step= 2, info= 1, time= 197.271 b=24: dsbrdd: uplo=L, jobu=U, n= 600, b1= 32, b2= 1, nsteps= 2, step= 2, info= 1, time= 165.730 one-step (b=1): dsbrdd: uplo=L, jobu=U, n= 600, b1= 64, b2= 1, nsteps= 1, step= 1, info= 1, time= 140.061 b=8: dsbrdd: uplo=L, jobu=U, n= 600, b1= 64, b2= 1, nsteps= 2, step= 2, info= 1, time= 253.980 b=12: dsbrdd: uplo=L, jobu=U, n= 600, b1= 64, b2= 1, nsteps= 2, step= 2, info= 1, time= 245.500 b=16: dsbrdd: uplo=L, jobu=U, n= 600, b1= 64, b2= 1, nsteps= 2, step= 2, info= 1, time= 240.290 b=24: dsbrdd: uplo=L, jobu=U, n= 600, b1= 64, b2= 1, nsteps= 2, step= 2, info= 1, time= 219.939 b=32: dsbrdd: uplo=L, jobu=U, n= 600, b1= 64, b2= 1, nsteps= 2, step= 2, info= 1, time= 204.771 b=48: dsbrdd: uplo=L, jobu=U, n= 600, b1= 64, b2= 1, nsteps= 2, step= 2, info= 1, time= 170.040 one-step (b=1): dsbrdd: uplo=L, jobu=U, n= 600, b1= 96, b2= 1, nsteps= 1, step= 1, info= 1, time= 146.820 b=8: dsbrdd: uplo=L, jobu=U, n= 600, b1= 96, b2= 1, nsteps= 2, step= 2, info= 1, time= 267.130 b=12: dsbrdd: uplo=L, jobu=U, n= 600, b1= 96, b2= 1, nsteps= 2, step= 2, info= 1, time= 261.311 b=16: dsbrdd: uplo=L, jobu=U, n= 600, b1= 96, b2= 1, nsteps= 2, step= 2, info= 1, time= 261.090 b=24: dsbrdd: uplo=L, jobu=U, n= 600, b1= 96, b2= 1, nsteps= 2, step= 2, info= 1, time= 248.360 b=32: dsbrdd: uplo=L, jobu=U, n= 600, b1= 96, b2= 1, nsteps= 2, step= 2, info= 1, time= 237.181 b=48: dsbrdd: uplo=L, jobu=U, n= 600, b1= 96, b2= 1, nsteps= 2, step= 2, info= 1, time= 210.290 b=64: dsbrdd: uplo=L, jobu=U, n= 600, b1= 96, b2= 1, nsteps= 2, step= 2, info= 1, time= 189.641 *** Where to switch from SYTRD to SYRDT ? *** no update b=4 dsbtrd: uplo=L, jobu=N, n= 200, b1= 4, info= 0, time= 0.110 dsbrdt: jobu=N, n= 200, b1= 4, nb= 0, info= 1, time= 0.410 b=6 dsbtrd: uplo=L, jobu=N, n= 200, b1= 6, info= 0, time= 0.200 dsbrdt: jobu=N, n= 200, b1= 6, nb= 0, info= 1, time= 0.370 b=8 dsbtrd: uplo=L, jobu=N, n= 200, b1= 8, info= 0, time= 0.280 dsbrdt: jobu=N, n= 200, b1= 8, nb= 0, info= 1, time= 0.359 b=10 dsbtrd: uplo=L, jobu=N, n= 200, b1= 10, info= 0, time= 0.360 dsbrdt: jobu=N, n= 200, b1= 10, nb= 0, info= 1, time= 0.369 b=12 dsbtrd: uplo=L, jobu=N, n= 200, b1= 12, info= 0, time= 0.380 dsbrdt: jobu=N, n= 200, b1= 12, nb= 0, info= 1, time= 0.550 b=16 dsbtrd: uplo=L, jobu=N, n= 200, b1= 16, info= 0, time= 0.449 dsbrdt: jobu=N, n= 200, b1= 16, nb= 0, info= 1, time= 0.630 b=20 dsbtrd: uplo=L, jobu=N, n= 200, b1= 20, info= 0, time= 0.530 dsbrdt: jobu=N, n= 200, b1= 20, nb= 0, info= 1, time= 0.710 b=24 dsbtrd: uplo=L, jobu=N, n= 200, b1= 24, info= 0, time= 0.590 dsbrdt: jobu=N, n= 200, b1= 24, nb= 0, info= 1, time= 0.801 b=32 dsbtrd: uplo=L, jobu=N, n= 200, b1= 32, info= 0, time= 0.689 dsbrdt: jobu=N, n= 200, b1= 32, nb= 0, info= 1, time= 0.960 b=40 dsbtrd: uplo=L, jobu=N, n= 200, b1= 40, info= 0, time= 0.811 dsbrdt: jobu=N, n= 200, b1= 40, nb= 0, info= 1, time= 1.100 b=48 dsbtrd: uplo=L, jobu=N, n= 200, b1= 48, info= 0, time= 0.880 dsbrdt: jobu=N, n= 200, b1= 48, nb= 0, info= 1, time= 1.220 b=64 dsbtrd: uplo=L, jobu=N, n= 200, b1= 64, info= 0, time= 1.060 dsbrdt: jobu=N, n= 200, b1= 64, nb= 0, info= 1, time= 1.420 b=4 dsbtrd: uplo=L, jobu=N, n= 400, b1= 4, info= 0, time= 0.400 dsbrdt: jobu=N, n= 400, b1= 4, nb= 0, info= 1, time= 1.609 b=6 dsbtrd: uplo=L, jobu=N, n= 400, b1= 6, info= 0, time= 0.641 dsbrdt: jobu=N, n= 400, b1= 6, nb= 0, info= 1, time= 1.470 b=8 dsbtrd: uplo=L, jobu=N, n= 400, b1= 8, info= 0, time= 0.891 dsbrdt: jobu=N, n= 400, b1= 8, nb= 0, info= 1, time= 1.431 b=10 dsbtrd: uplo=L, jobu=N, n= 400, b1= 10, info= 0, time= 1.130 dsbrdt: jobu=N, n= 400, b1= 10, nb= 0, info= 1, time= 1.490 b=12 dsbtrd: uplo=L, jobu=N, n= 400, b1= 12, info= 0, time= 1.439 dsbrdt: jobu=N, n= 400, b1= 12, nb= 0, info= 1, time= 2.300 b=16 dsbtrd: uplo=L, jobu=N, n= 400, b1= 16, info= 0, time= 1.800 dsbrdt: jobu=N, n= 400, b1= 16, nb= 0, info= 1, time= 2.670 b=20 dsbtrd: uplo=L, jobu=N, n= 400, b1= 20, info= 0, time= 2.060 dsbrdt: jobu=N, n= 400, b1= 20, nb= 0, info= 1, time= 3.100 b=24 dsbtrd: uplo=L, jobu=N, n= 400, b1= 24, info= 0, time= 2.300 dsbrdt: jobu=N, n= 400, b1= 24, nb= 0, info= 1, time= 3.520 b=32 dsbtrd: uplo=L, jobu=N, n= 400, b1= 32, info= 0, time= 2.850 dsbrdt: jobu=N, n= 400, b1= 32, nb= 0, info= 1, time= 4.340 b=40 dsbtrd: uplo=L, jobu=N, n= 400, b1= 40, info= 0, time= 3.280 dsbrdt: jobu=N, n= 400, b1= 40, nb= 0, info= 1, time= 5.189 b=48 dsbtrd: uplo=L, jobu=N, n= 400, b1= 48, info= 0, time= 3.779 dsbrdt: jobu=N, n= 400, b1= 48, nb= 0, info= 1, time= 5.910 b=64 dsbtrd: uplo=L, jobu=N, n= 400, b1= 64, info= 0, time= 4.580 dsbrdt: jobu=N, n= 400, b1= 64, nb= 0, info= 1, time= 7.380 b=4 dsbtrd: uplo=L, jobu=N, n= 600, b1= 4, info= 0, time= 0.840 dsbrdt: jobu=N, n= 600, b1= 4, nb= 0, info= 1, time= 3.620 b=6 dsbtrd: uplo=L, jobu=N, n= 600, b1= 6, info= 0, time= 1.350 dsbrdt: jobu=N, n= 600, b1= 6, nb= 0, info= 1, time= 3.311 b=8 dsbtrd: uplo=L, jobu=N, n= 600, b1= 8, info= 0, time= 1.840 dsbrdt: jobu=N, n= 600, b1= 8, nb= 0, info= 1, time= 3.280 b=10 dsbtrd: uplo=L, jobu=N, n= 600, b1= 10, info= 0, time= 2.410 dsbrdt: jobu=N, n= 600, b1= 10, nb= 0, info= 1, time= 3.410 b=12 dsbtrd: uplo=L, jobu=N, n= 600, b1= 12, info= 0, time= 3.040 dsbrdt: jobu=N, n= 600, b1= 12, nb= 0, info= 1, time= 5.240 b=16 dsbtrd: uplo=L, jobu=N, n= 600, b1= 16, info= 0, time= 4.040 dsbrdt: jobu=N, n= 600, b1= 16, nb= 0, info= 1, time= 6.149 b=20 dsbtrd: uplo=L, jobu=N, n= 600, b1= 20, info= 0, time= 4.630 dsbrdt: jobu=N, n= 600, b1= 20, nb= 0, info= 1, time= 7.150 b=24 dsbtrd: uplo=L, jobu=N, n= 600, b1= 24, info= 0, time= 5.199 dsbrdt: jobu=N, n= 600, b1= 24, nb= 0, info= 1, time= 8.190 b=32 dsbtrd: uplo=L, jobu=N, n= 600, b1= 32, info= 0, time= 6.400 dsbrdt: jobu=N, n= 600, b1= 32, nb= 0, info= 1, time= 10.170 b=40 dsbtrd: uplo=L, jobu=N, n= 600, b1= 40, info= 0, time= 7.460 dsbrdt: jobu=N, n= 600, b1= 40, nb= 0, info= 1, time= 12.320 b=48 dsbtrd: uplo=L, jobu=N, n= 600, b1= 48, info= 0, time= 8.479 dsbrdt: jobu=N, n= 600, b1= 48, nb= 0, info= 1, time= 14.260 b=64 dsbtrd: uplo=L, jobu=N, n= 600, b1= 64, info= 0, time= 10.659 dsbrdt: jobu=N, n= 600, b1= 64, nb= 0, info= 1, time= 18.220 with update *** ignore messages about tests failing because *** *** SBRDT returned a wrong (but positive) info *** b=4 dsbtrd: uplo=L, jobu=U, n= 200, b1= 4, info= 0, time= 1.270 dsbrdt: jobu=U, n= 200, b1= 4, nb= 0, info= 3, time= 5.180 *** Test in line 1768 failed : dsbrdt returned info= 3 (expected 1) b=6 dsbtrd: uplo=L, jobu=U, n= 200, b1= 6, info= 0, time= 1.460 dsbrdt: jobu=U, n= 200, b1= 6, nb= 0, info= 4, time= 5.050 *** Test in line 1776 failed : dsbrdt returned info= 4 (expected 1) b=8 dsbtrd: uplo=L, jobu=U, n= 200, b1= 8, info= 0, time= 1.610 dsbrdt: jobu=U, n= 200, b1= 8, nb= 0, info= 4, time= 4.870 *** Test in line 1784 failed : dsbrdt returned info= 4 (expected 1) b=10 dsbtrd: uplo=L, jobu=U, n= 200, b1= 10, info= 0, time= 1.710 dsbrdt: jobu=U, n= 200, b1= 10, nb= 0, info= 4, time= 4.790 *** Test in line 1792 failed : dsbrdt returned info= 4 (expected 1) b=12 dsbtrd: uplo=L, jobu=U, n= 200, b1= 12, info= 0, time= 1.760 dsbrdt: jobu=U, n= 200, b1= 12, nb= 0, info= 4, time= 4.891 *** Test in line 1800 failed : dsbrdt returned info= 4 (expected 1) b=16 dsbtrd: uplo=L, jobu=U, n= 200, b1= 16, info= 0, time= 1.869 dsbrdt: jobu=U, n= 200, b1= 16, nb= 0, info= 6, time= 5.070 *** Test in line 1808 failed : dsbrdt returned info= 6 (expected 1) b=20 dsbtrd: uplo=L, jobu=U, n= 200, b1= 20, info= 0, time= 1.970 dsbrdt: jobu=U, n= 200, b1= 20, nb= 0, info= 8, time= 5.160 *** Test in line 1816 failed : dsbrdt returned info= 8 (expected 1) b=24 dsbtrd: uplo=L, jobu=U, n= 200, b1= 24, info= 0, time= 2.040 dsbrdt: jobu=U, n= 200, b1= 24, nb= 0, info= 8, time= 5.180 *** Test in line 1824 failed : dsbrdt returned info= 8 (expected 1) b=32 dsbtrd: uplo=L, jobu=U, n= 200, b1= 32, info= 0, time= 2.170 dsbrdt: jobu=U, n= 200, b1= 32, nb= 0, info= 12, time= 5.400 *** Test in line 1832 failed : dsbrdt returned info= 12 (expected 1) b=40 dsbtrd: uplo=L, jobu=U, n= 200, b1= 40, info= 0, time= 2.270 dsbrdt: jobu=U, n= 200, b1= 40, nb= 0, info= 14, time= 5.630 *** Test in line 1840 failed : dsbrdt returned info= 14 (expected 1) b=48 dsbtrd: uplo=L, jobu=U, n= 200, b1= 48, info= 0, time= 2.350 dsbrdt: jobu=U, n= 200, b1= 48, nb= 0, info= 16, time= 5.660 *** Test in line 1848 failed : dsbrdt returned info= 16 (expected 1) b=64 dsbtrd: uplo=L, jobu=U, n= 200, b1= 64, info= 0, time= 2.490 dsbrdt: jobu=U, n= 200, b1= 64, nb= 0, info= 22, time= 6.000 *** Test in line 1856 failed : dsbrdt returned info= 22 (expected 1) b=4 dsbtrd: uplo=L, jobu=U, n= 400, b1= 4, info= 0, time= 9.490 dsbrdt: jobu=U, n= 400, b1= 4, nb= 0, info= 3, time= 39.631 *** Test in line 1866 failed : dsbrdt returned info= 3 (expected 1) b=6 dsbtrd: uplo=L, jobu=U, n= 400, b1= 6, info= 0, time= 10.620 dsbrdt: jobu=U, n= 400, b1= 6, nb= 0, info= 4, time= 38.910 *** Test in line 1874 failed : dsbrdt returned info= 4 (expected 1) b=8 dsbtrd: uplo=L, jobu=U, n= 400, b1= 8, info= 0, time= 11.380 dsbrdt: jobu=U, n= 400, b1= 8, nb= 0, info= 4, time= 37.540 *** Test in line 1882 failed : dsbrdt returned info= 4 (expected 1) b=10 dsbtrd: uplo=L, jobu=U, n= 400, b1= 10, info= 0, time= 11.980 dsbrdt: jobu=U, n= 400, b1= 10, nb= 0, info= 4, time= 36.870 *** Test in line 1890 failed : dsbrdt returned info= 4 (expected 1) b=12 dsbtrd: uplo=L, jobu=U, n= 400, b1= 12, info= 0, time= 12.480 dsbrdt: jobu=U, n= 400, b1= 12, nb= 0, info= 4, time= 37.170 *** Test in line 1898 failed : dsbrdt returned info= 4 (expected 1) b=16 dsbtrd: uplo=L, jobu=U, n= 400, b1= 16, info= 0, time= 13.120 dsbrdt: jobu=U, n= 400, b1= 16, nb= 0, info= 6, time= 37.710 *** Test in line 1906 failed : dsbrdt returned info= 6 (expected 1) b=20 dsbtrd: uplo=L, jobu=U, n= 400, b1= 20, info= 0, time= 13.529 dsbrdt: jobu=U, n= 400, b1= 20, nb= 0, info= 8, time= 38.771 *** Test in line 1914 failed : dsbrdt returned info= 8 (expected 1) b=24 dsbtrd: uplo=L, jobu=U, n= 400, b1= 24, info= 0, time= 13.900 dsbrdt: jobu=U, n= 400, b1= 24, nb= 0, info= 8, time= 38.681 *** Test in line 1922 failed : dsbrdt returned info= 8 (expected 1) b=32 dsbtrd: uplo=L, jobu=U, n= 400, b1= 32, info= 0, time= 14.430 dsbrdt: jobu=U, n= 400, b1= 32, nb= 0, info= 12, time= 39.950 *** Test in line 1930 failed : dsbrdt returned info= 12 (expected 1) b=40 dsbtrd: uplo=L, jobu=U, n= 400, b1= 40, info= 0, time= 15.021 dsbrdt: jobu=U, n= 400, b1= 40, nb= 0, info= 14, time= 40.830 *** Test in line 1938 failed : dsbrdt returned info= 14 (expected 1) b=48 dsbtrd: uplo=L, jobu=U, n= 400, b1= 48, info= 0, time= 15.529 dsbrdt: jobu=U, n= 400, b1= 48, nb= 0, info= 16, time= 41.530 *** Test in line 1946 failed : dsbrdt returned info= 16 (expected 1) b=64 dsbtrd: uplo=L, jobu=U, n= 400, b1= 64, info= 0, time= 16.470 dsbrdt: jobu=U, n= 400, b1= 64, nb= 0, info= 22, time= 43.271 *** Test in line 1954 failed : dsbrdt returned info= 22 (expected 1) b=4 dsbtrd: uplo=L, jobu=U, n= 600, b1= 4, info= 0, time= 31.620 dsbrdt: jobu=U, n= 600, b1= 4, nb= 0, info= 3, time= 134.631 *** Test in line 1964 failed : dsbrdt returned info= 3 (expected 1) b=6 dsbtrd: uplo=L, jobu=U, n= 600, b1= 6, info= 0, time= 35.880 dsbrdt: jobu=U, n= 600, b1= 6, nb= 0, info= 4, time= 132.239 *** Test in line 1972 failed : dsbrdt returned info= 4 (expected 1) b=8 dsbtrd: uplo=L, jobu=U, n= 600, b1= 8, info= 0, time= 38.141 dsbrdt: jobu=U, n= 600, b1= 8, nb= 0, info= 4, time= 127.700 *** Test in line 1980 failed : dsbrdt returned info= 4 (expected 1) b=10 dsbtrd: uplo=L, jobu=U, n= 600, b1= 10, info= 0, time= 40.050 dsbrdt: jobu=U, n= 600, b1= 10, nb= 0, info= 4, time= 126.499 *** Test in line 1988 failed : dsbrdt returned info= 4 (expected 1) b=12 dsbtrd: uplo=L, jobu=U, n= 600, b1= 12, info= 0, time= 41.290 dsbrdt: jobu=U, n= 600, b1= 12, nb= 0, info= 4, time= 126.221 *** Test in line 1996 failed : dsbrdt returned info= 4 (expected 1) b=16 dsbtrd: uplo=L, jobu=U, n= 600, b1= 16, info= 0, time= 44.010 dsbrdt: jobu=U, n= 600, b1= 16, nb= 0, info= 6, time= 131.989 *** Test in line 2004 failed : dsbrdt returned info= 6 (expected 1) b=20 dsbtrd: uplo=L, jobu=U, n= 600, b1= 20, info= 0, time= 44.570 dsbrdt: jobu=U, n= 600, b1= 20, nb= 0, info= 8, time= 132.899 *** Test in line 2012 failed : dsbrdt returned info= 8 (expected 1) b=24 dsbtrd: uplo=L, jobu=U, n= 600, b1= 24, info= 0, time= 45.700 dsbrdt: jobu=U, n= 600, b1= 24, nb= 0, info= 8, time= 129.671 *** Test in line 2020 failed : dsbrdt returned info= 8 (expected 1) b=32 dsbtrd: uplo=L, jobu=U, n= 600, b1= 32, info= 0, time= 46.770 dsbrdt: jobu=U, n= 600, b1= 32, nb= 0, info= 12, time= 133.810 *** Test in line 2028 failed : dsbrdt returned info= 12 (expected 1) b=40 dsbtrd: uplo=L, jobu=U, n= 600, b1= 40, info= 0, time= 47.640 dsbrdt: jobu=U, n= 600, b1= 40, nb= 0, info= 14, time= 135.030 *** Test in line 2036 failed : dsbrdt returned info= 14 (expected 1) b=48 dsbtrd: uplo=L, jobu=U, n= 600, b1= 48, info= 0, time= 49.592 dsbrdt: jobu=U, n= 600, b1= 48, nb= 0, info= 16, time= 135.590 *** Test in line 2044 failed : dsbrdt returned info= 16 (expected 1) b=64 dsbtrd: uplo=L, jobu=U, n= 600, b1= 64, info= 0, time= 51.391 dsbrdt: jobu=U, n= 600, b1= 64, nb= 0, info= 22, time= 140.850 *** Test in line 2052 failed : dsbrdt returned info= 22 (expected 1) =============================================================================== Tests for Total Skipped Failed ------------------------------------------------------------------------------- dsytrd : full -> tridiagonal, one-step (LAPACK) : 0 0 0 dorgtr : accumulation of transformations (LAPACK) : 0 0 0 dsbtrd : banded -> tridiagonal, one-step (LAPACK) : 72 0 0 dsyrdb : full -> banded, one-step (SBR) : 0 0 0 dsygtr : accumulation of transformations (SBR) : 0 0 0 dsbrdb : banded -> banded, one-step (SBR) : 0 0 0 dsbrdt : banded -> tridiagonal, one-step (SBR) : 72 0 36 dsy2bc : copy full -> banded (SBR) : 0 0 0 dsy2bi : in-place copy full -> banded (SBR) : 0 0 0 dsb2bc : copy banded -> banded (SBR) : 0 0 0 dsb2bi : in-place copy banded -> banded (SBR) : 0 0 0 dsyrdd : reduction driver for full matrices (SBR) : 54 0 0 dsbrdd : reduction driver for banded matrcs (SBR) : 120 0 0 ------------------------------------------------------------------------------- Total : : 318 0 36 ------------------------------------------------------------------------------- Total time : 16797.73 seconds SHAR_EOF fi # end of overwriting check cd .. if test ! -d 'Src' then mkdir 'Src' fi cd 'Src' if test -f 'src.f' then echo shar: will not over-write existing file "'src.f'" else cat << "SHAR_EOF" > 'src.f' * ********************************************************************** * INTEGER FUNCTION NBDFLT( ALGO, PREC, REQEST, N, B1, B2, NEEDU ) * * ---------------------------------------------------------------------- * * Description: * * Determine an appropriate default blocking factor or crossover point * or intermediate bandwidth for the reduction routine specified in * algo. * * Author: Bruno Lang * Aachen University of Technology * na.blang@na-net.ornl.gov * Date: May 17, 2000 * Version: SBR Toolbox, Rev. 1.4.1 * * Note: >>> This routine performs no sanity checks on its arguments. <<< * * ---------------------------------------------------------------------- * * Parameters: * CHARACTER*5 ALGO CHARACTER*1 PREC, REQEST INTEGER N, B1, B2 LOGICAL NEEDU * * algo (in) character*5 * For which SBR routine do we need a control parameter ? * algo = 'SYRDB' : Reduction full -> banded. * = 'SBRDB' : Reduction banded -> banded. * = 'SBRDT' : Reduction banded -> tridiagonal. * = 'SYRDD' : Driver for reducing full matrices. * = 'SBRDD' : Driver for reducing banded matrices. * * prec (in) character*1 * Is it the single or double precision routine ? * prec = 'D' : Double precision. * = 'S' : Single precision. * * reqest (in) character*1 * Which control parameter is required ? * reqest = 'B' : Blocking factor or intermediate bandwidth. * = 'C' : Crossover point to LAPACK code. * * n (in) integer * The size of the matrix to reduce. * n >= 0. * * b1 (in) integer * The bandwidth of the matrix before the reduction. * 0 <= b1 < n. * * b2 (in) integer * The bandwidth of the matrix after the reduction. * 1 <= b2 <= b1 or b1 = b2 = 0. * * needu (in) logical * Do we update the transformation matrix ? * needu = .true. : Yes. * = .false. : No. * * ---------------------------------------------------------------------- * * Local variables: * LOGICAL SINGLE INTEGER DELTAB * * single single or double precision routine ? * deltab number of diagonals to reduce * * Routines called: * LOGICAL LSAME EXTERNAL LSAME * * lsame case-insensitive character matching (BLAS) * * ---------------------------------------------------------------------- * SINGLE =