tags 693269 +patch severity 693269 important thanks On Wed, Nov 14, 2012 at 02:14:53PM -0800, Victor Liu wrote: > When writing code that uses Lapack as well as threads (pthreads or OpenMP), > certain routines, like the nonsymmetric eigensolver, produce incorrect results > due to statically allocated arrays.
Thanks for filing the bug, I bumped into this last week while packaging elk (ITP #706538). I was puzzled at first as elk ships its own set of blas/lapack routines, and when linking them in, its test suites runs fine. However, patching them out and linking to the Debian-provided blas and lapack libraries resulted in random but significant numerical errors. It turned out that elk unconditionally adds -fopenmp to its FFLAGS, so the blas/lapack routines were compiled like this as well. This apparently works around the bug, however, it is probably not the best (if any) fix. > The Lapack source uses large local arrays which are deemed by gfortran > (by default) to be too large to allocate on the stack, leading to > statically allocated variables which are corrupted when multiple > threads write to them. Adding the "-frecursive" flag to the > compilation flags would force gfortran to always allocate the arrays > on the stack. I discussed this with one of the maintainers on IRC this weekend and they preferred to declare only the problematic routines as RECURSIVE. > The problem along with code to reproduce it has been listed in this > forum post: > http://icl.cs.utk.edu/lapack-forum/viewtopic.php?f=2&t=1930 Thanks for your(?) work in http://icl.cs.utk.edu/lapack-forum/viewtopic.php?f=2&t=1930#p9928 I created a patch which makes all the subroutines with large local arrays RECURSIVE. I can confirm that this fixes the problem for the case of elk. I keep the severity at "important" for now, but I consider this a serious bug which should get fixed in the first squeeze point release. Michael
--- ./src/cgbtrf.f.orig 2013-05-06 00:43:02.302380624 +0200 +++ ./src/cgbtrf.f 2013-05-06 00:44:23.910803548 +0200 @@ -18,7 +18,8 @@ * Definition: * =========== * -* SUBROUTINE CGBTRF( M, N, KL, KU, AB, LDAB, IPIV, INFO ) +* RECURSIVE SUBROUTINE CGBTRF( M, N, KL, KU, AB, LDAB, IPIV, +* INFO ) * * .. Scalar Arguments .. * INTEGER INFO, KL, KU, LDAB, M, N @@ -142,7 +143,7 @@ *> \endverbatim *> * ===================================================================== - SUBROUTINE CGBTRF( M, N, KL, KU, AB, LDAB, IPIV, INFO ) + RECURSIVE SUBROUTINE CGBTRF( M, N, KL, KU, AB, LDAB, IPIV, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- --- ./src/cgehrd.f.orig 2013-05-06 00:43:02.330380770 +0200 +++ ./src/cgehrd.f 2013-05-06 00:44:48.006928485 +0200 @@ -18,7 +18,8 @@ * Definition: * =========== * -* SUBROUTINE CGEHRD( N, ILO, IHI, A, LDA, TAU, WORK, LWORK, INFO ) +* RECURSIVE SUBROUTINE CGEHRD( N, ILO, IHI, A, LDA, TAU, WORK, +* LWORK, INFO ) * * .. Scalar Arguments .. * INTEGER IHI, ILO, INFO, LDA, LWORK, N @@ -166,7 +167,8 @@ *> \endverbatim *> * ===================================================================== - SUBROUTINE CGEHRD( N, ILO, IHI, A, LDA, TAU, WORK, LWORK, INFO ) + RECURSIVE SUBROUTINE CGEHRD( N, ILO, IHI, A, LDA, TAU, WORK, + $ LWORK, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- --- ./src/cunmlq.f.orig 2013-05-06 00:43:02.342380830 +0200 +++ ./src/cunmlq.f 2013-05-06 00:45:13.531060884 +0200 @@ -18,8 +18,8 @@ * Definition: * =========== * -* SUBROUTINE CUNMLQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, -* WORK, LWORK, INFO ) +* RECURSIVE SUBROUTINE CUNMLQ( SIDE, TRANS, M, N, K, A, LDA, TAU, +* C, LDC, WORK, LWORK, INFO ) * * .. Scalar Arguments .. * CHARACTER SIDE, TRANS @@ -167,8 +167,8 @@ *> \ingroup complexOTHERcomputational * * ===================================================================== - SUBROUTINE CUNMLQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, - $ WORK, LWORK, INFO ) + RECURSIVE SUBROUTINE CUNMLQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, + $ LDC, WORK, LWORK, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- --- ./src/cunmql.f.orig 2013-05-06 00:43:02.346380852 +0200 +++ ./src/cunmql.f 2013-05-06 00:45:38.595190881 +0200 @@ -18,8 +18,8 @@ * Definition: * =========== * -* SUBROUTINE CUNMQL( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, -* WORK, LWORK, INFO ) +* RECURSIVE SUBROUTINE CUNMQL( SIDE, TRANS, M, N, K, A, LDA, TAU, +* C, LDC, WORK, LWORK, INFO ) * * .. Scalar Arguments .. * CHARACTER SIDE, TRANS @@ -167,8 +167,8 @@ *> \ingroup complexOTHERcomputational * * ===================================================================== - SUBROUTINE CUNMQL( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, - $ WORK, LWORK, INFO ) + RECURSIVE SUBROUTINE CUNMQL( SIDE, TRANS, M, N, K, A, LDA, TAU, C, + $ LDC, WORK, LWORK, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- --- ./src/cunmqr.f.orig 2013-05-06 00:43:02.354380895 +0200 +++ ./src/cunmqr.f 2013-05-06 00:46:00.215303045 +0200 @@ -18,8 +18,8 @@ * Definition: * =========== * -* SUBROUTINE CUNMQR( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, -* WORK, LWORK, INFO ) +* RECURSIVE SUBROUTINE CUNMQR( SIDE, TRANS, M, N, K, A, LDA, TAU, +* C, LDC, WORK, LWORK, INFO ) * * .. Scalar Arguments .. * CHARACTER SIDE, TRANS @@ -167,8 +167,8 @@ *> \ingroup complexOTHERcomputational * * ===================================================================== - SUBROUTINE CUNMQR( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, - $ WORK, LWORK, INFO ) + RECURSIVE SUBROUTINE CUNMQR( SIDE, TRANS, M, N, K, A, LDA, TAU, C, + $ LDC, WORK, LWORK, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- --- ./src/cunmrq.f.orig 2013-05-06 00:43:02.358380915 +0200 +++ ./src/cunmrq.f 2013-05-06 00:46:19.227401696 +0200 @@ -18,8 +18,8 @@ * Definition: * =========== * -* SUBROUTINE CUNMRQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, -* WORK, LWORK, INFO ) +* RECURSIVE SUBROUTINE CUNMRQ( SIDE, TRANS, M, N, K, A, LDA, TAU, +* C, LDC, WORK, LWORK, INFO ) * * .. Scalar Arguments .. * CHARACTER SIDE, TRANS @@ -167,8 +167,8 @@ *> \ingroup complexOTHERcomputational * * ===================================================================== - SUBROUTINE CUNMRQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, - $ WORK, LWORK, INFO ) + RECURSIVE SUBROUTINE CUNMRQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, + $ LDC, WORK, LWORK, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- --- ./src/cunmrz.f.orig 2013-05-06 00:43:02.366380963 +0200 +++ ./src/cunmrz.f 2013-05-06 00:47:00.103613938 +0200 @@ -18,8 +18,8 @@ * Definition: * =========== * -* SUBROUTINE CUNMRZ( SIDE, TRANS, M, N, K, L, A, LDA, TAU, C, LDC, -* WORK, LWORK, INFO ) +* RECURSIVE SUBROUTINE CUNMRZ( SIDE, TRANS, M, N, K, L, A, LDA, +* TAU, C, LDC, WORK, LWORK, INFO ) * * .. Scalar Arguments .. * CHARACTER SIDE, TRANS @@ -186,8 +186,8 @@ *> \endverbatim *> * ===================================================================== - SUBROUTINE CUNMRZ( SIDE, TRANS, M, N, K, L, A, LDA, TAU, C, LDC, - $ WORK, LWORK, INFO ) + RECURSIVE SUBROUTINE CUNMRZ( SIDE, TRANS, M, N, K, L, A, LDA, TAU, + $ C, LDC, WORK, LWORK, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- --- ./src/dgbtrf.f.orig 2013-05-06 00:43:02.370380976 +0200 +++ ./src/dgbtrf.f 2013-05-06 00:47:24.251739304 +0200 @@ -18,7 +18,8 @@ * Definition: * =========== * -* SUBROUTINE DGBTRF( M, N, KL, KU, AB, LDAB, IPIV, INFO ) +* RECURSIVE SUBROUTINE DGBTRF( M, N, KL, KU, AB, LDAB, IPIV, +* INFO ) * * .. Scalar Arguments .. * INTEGER INFO, KL, KU, LDAB, M, N @@ -142,7 +143,7 @@ *> \endverbatim *> * ===================================================================== - SUBROUTINE DGBTRF( M, N, KL, KU, AB, LDAB, IPIV, INFO ) + RECURSIVE SUBROUTINE DGBTRF( M, N, KL, KU, AB, LDAB, IPIV, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- --- ./src/dgehrd.f.orig 2013-05-06 00:43:02.374380999 +0200 +++ ./src/dgehrd.f 2013-05-06 00:48:03.159940485 +0200 @@ -18,7 +18,8 @@ * Definition: * =========== * -* SUBROUTINE DGEHRD( N, ILO, IHI, A, LDA, TAU, WORK, LWORK, INFO ) +* RECURSIVE SUBROUTINE DGEHRD( N, ILO, IHI, A, LDA, TAU, WORK, +* LWORK, INFO ) * * .. Scalar Arguments .. * INTEGER IHI, ILO, INFO, LDA, LWORK, N @@ -166,7 +167,8 @@ *> \endverbatim *> * ===================================================================== - SUBROUTINE DGEHRD( N, ILO, IHI, A, LDA, TAU, WORK, LWORK, INFO ) + RECURSIVE SUBROUTINE DGEHRD( N, ILO, IHI, A, LDA, TAU, WORK, + $ LWORK, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- --- ./src/dormlq.f.orig 2013-05-06 00:43:02.378381025 +0200 +++ ./src/dormlq.f 2013-05-06 00:48:46.296162283 +0200 @@ -18,8 +18,8 @@ * Definition: * =========== * -* SUBROUTINE DORMLQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, -* WORK, LWORK, INFO ) +* RECURSIVE SUBROUTINE DORMLQ( SIDE, TRANS, M, N, K, A, LDA, TAU, +* C, LDC, WORK, LWORK, INFO ) * * .. Scalar Arguments .. * CHARACTER SIDE, TRANS @@ -166,8 +166,8 @@ *> \ingroup doubleOTHERcomputational * * ===================================================================== - SUBROUTINE DORMLQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, - $ WORK, LWORK, INFO ) + RECURSIVE SUBROUTINE DORMLQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, + $ LDC, WORK, LWORK, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- --- ./src/dormql.f.orig 2013-05-06 00:43:02.378381025 +0200 +++ ./src/dormql.f 2013-05-06 00:49:09.000279167 +0200 @@ -18,8 +18,8 @@ * Definition: * =========== * -* SUBROUTINE DORMQL( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, -* WORK, LWORK, INFO ) +* RECURSIVE SUBROUTINE DORMQL( SIDE, TRANS, M, N, K, A, LDA, TAU, +* C, LDC, WORK, LWORK, INFO ) * * .. Scalar Arguments .. * CHARACTER SIDE, TRANS @@ -166,8 +166,8 @@ *> \ingroup doubleOTHERcomputational * * ===================================================================== - SUBROUTINE DORMQL( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, - $ WORK, LWORK, INFO ) + RECURSIVE SUBROUTINE DORMQL( SIDE, TRANS, M, N, K, A, LDA, TAU, C, + $ LDC, WORK, LWORK, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- --- ./src/dormqr.f.orig 2013-05-06 00:43:02.386381060 +0200 +++ ./src/dormqr.f 2013-05-06 00:49:28.200378044 +0200 @@ -18,8 +18,8 @@ * Definition: * =========== * -* SUBROUTINE DORMQR( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, -* WORK, LWORK, INFO ) +* RECURSIVE SUBROUTINE DORMQR( SIDE, TRANS, M, N, K, A, LDA, TAU, +* C, LDC, WORK, LWORK, INFO ) * * .. Scalar Arguments .. * CHARACTER SIDE, TRANS @@ -166,8 +166,8 @@ *> \ingroup doubleOTHERcomputational * * ===================================================================== - SUBROUTINE DORMQR( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, - $ WORK, LWORK, INFO ) + RECURSIVE SUBROUTINE DORMQR( SIDE, TRANS, M, N, K, A, LDA, TAU, C, + $ LDC, WORK, LWORK, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- --- ./src/dormrq.f.orig 2013-05-06 00:43:02.390381086 +0200 +++ ./src/dormrq.f 2013-05-06 00:49:45.356466338 +0200 @@ -18,8 +18,8 @@ * Definition: * =========== * -* SUBROUTINE DORMRQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, -* WORK, LWORK, INFO ) +* RECURSIVE SUBROUTINE DORMRQ( SIDE, TRANS, M, N, K, A, LDA, TAU, +* C, LDC, WORK, LWORK, INFO ) * * .. Scalar Arguments .. * CHARACTER SIDE, TRANS @@ -166,8 +166,8 @@ *> \ingroup doubleOTHERcomputational * * ===================================================================== - SUBROUTINE DORMRQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, - $ WORK, LWORK, INFO ) + RECURSIVE SUBROUTINE DORMRQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, + $ LDC, WORK, LWORK, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- --- ./src/dormrz.f.orig 2013-05-06 00:43:02.390381086 +0200 +++ ./src/dormrz.f 2013-05-06 00:50:09.080588466 +0200 @@ -18,8 +18,8 @@ * Definition: * =========== * -* SUBROUTINE DORMRZ( SIDE, TRANS, M, N, K, L, A, LDA, TAU, C, LDC, -* WORK, LWORK, INFO ) +* RECURSIVE SUBROUTINE DORMRZ( SIDE, TRANS, M, N, K, L, A, LDA, +* TAU, C, LDC, WORK, LWORK, INFO ) * * .. Scalar Arguments .. * CHARACTER SIDE, TRANS @@ -186,8 +186,8 @@ *> \endverbatim *> * ===================================================================== - SUBROUTINE DORMRZ( SIDE, TRANS, M, N, K, L, A, LDA, TAU, C, LDC, - $ WORK, LWORK, INFO ) + RECURSIVE SUBROUTINE DORMRZ( SIDE, TRANS, M, N, K, L, A, LDA, TAU, + $ C, LDC, WORK, LWORK, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- --- ./src/zgbtrf.f.orig 2013-05-06 00:43:02.402381151 +0200 +++ ./src/zgbtrf.f 2013-05-06 00:50:22.912659759 +0200 @@ -18,7 +18,8 @@ * Definition: * =========== * -* SUBROUTINE ZGBTRF( M, N, KL, KU, AB, LDAB, IPIV, INFO ) +* RECURSIVE SUBROUTINE ZGBTRF( M, N, KL, KU, AB, LDAB, IPIV, +* INFO ) * * .. Scalar Arguments .. * INTEGER INFO, KL, KU, LDAB, M, N @@ -142,7 +143,7 @@ *> \endverbatim *> * ===================================================================== - SUBROUTINE ZGBTRF( M, N, KL, KU, AB, LDAB, IPIV, INFO ) + RECURSIVE SUBROUTINE ZGBTRF( M, N, KL, KU, AB, LDAB, IPIV, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- --- ./src/zgehrd.f.orig 2013-05-06 00:43:02.410381187 +0200 +++ ./src/zgehrd.f 2013-05-06 00:50:47.492786505 +0200 @@ -18,7 +18,8 @@ * Definition: * =========== * -* SUBROUTINE ZGEHRD( N, ILO, IHI, A, LDA, TAU, WORK, LWORK, INFO ) +* RECURSIVE SUBROUTINE ZGEHRD( N, ILO, IHI, A, LDA, TAU, WORK, +* LWORK, INFO ) * * .. Scalar Arguments .. * INTEGER IHI, ILO, INFO, LDA, LWORK, N @@ -166,7 +167,8 @@ *> \endverbatim *> * ===================================================================== - SUBROUTINE ZGEHRD( N, ILO, IHI, A, LDA, TAU, WORK, LWORK, INFO ) + RECURSIVE SUBROUTINE ZGEHRD( N, ILO, IHI, A, LDA, TAU, WORK, + $ LWORK, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- --- ./src/zhseqr.f.orig 2013-05-06 00:43:02.418381225 +0200 +++ ./src/zhseqr.f 2013-05-06 00:51:10.892907129 +0200 @@ -18,8 +18,8 @@ * Definition: * =========== * -* SUBROUTINE ZHSEQR( JOB, COMPZ, N, ILO, IHI, H, LDH, W, Z, LDZ, -* WORK, LWORK, INFO ) +* RECURSIVE SUBROUTINE ZHSEQR( JOB, COMPZ, N, ILO, IHI, H, LDH, W, +* Z, LDZ, WORK, LWORK, INFO ) * * .. Scalar Arguments .. * INTEGER IHI, ILO, INFO, LDH, LDZ, LWORK, N @@ -296,8 +296,8 @@ *> of Matrix Analysis, volume 23, pages 948--973, 2002. * * ===================================================================== - SUBROUTINE ZHSEQR( JOB, COMPZ, N, ILO, IHI, H, LDH, W, Z, LDZ, - $ WORK, LWORK, INFO ) + RECURSIVE SUBROUTINE ZHSEQR( JOB, COMPZ, N, ILO, IHI, H, LDH, W, + $ Z, LDZ, WORK, LWORK, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- --- ./src/zunmlq.f.orig 2013-05-06 00:43:02.434381307 +0200 +++ ./src/zunmlq.f 2013-05-06 00:51:36.541039363 +0200 @@ -18,8 +18,8 @@ * Definition: * =========== * -* SUBROUTINE ZUNMLQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, -* WORK, LWORK, INFO ) +* RECURSIVE SUBROUTINE ZUNMLQ( SIDE, TRANS, M, N, K, A, LDA, TAU, +* C, LDC, WORK, LWORK, INFO ) * * .. Scalar Arguments .. * CHARACTER SIDE, TRANS @@ -166,8 +166,8 @@ *> \ingroup complex16OTHERcomputational * * ===================================================================== - SUBROUTINE ZUNMLQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, - $ WORK, LWORK, INFO ) + RECURSIVE SUBROUTINE ZUNMLQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, + $ LDC, WORK, LWORK, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- --- ./src/zunmql.f.orig 2013-05-06 00:43:02.446381363 +0200 +++ ./src/zunmql.f 2013-05-06 00:51:56.885144378 +0200 @@ -18,8 +18,8 @@ * Definition: * =========== * -* SUBROUTINE ZUNMQL( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, -* WORK, LWORK, INFO ) +* RECURSIVE SUBROUTINE ZUNMQL( SIDE, TRANS, M, N, K, A, LDA, TAU, +* C, LDC, WORK, LWORK, INFO ) * * .. Scalar Arguments .. * CHARACTER SIDE, TRANS @@ -166,8 +166,8 @@ *> \ingroup complex16OTHERcomputational * * ===================================================================== - SUBROUTINE ZUNMQL( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, - $ WORK, LWORK, INFO ) + RECURSIVE SUBROUTINE ZUNMQL( SIDE, TRANS, M, N, K, A, LDA, TAU, C, + $ LDC, WORK, LWORK, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- --- ./src/zunmqr.f.orig 2013-05-06 00:43:02.454381421 +0200 +++ ./src/zunmqr.f 2013-05-06 00:52:16.285244558 +0200 @@ -18,8 +18,8 @@ * Definition: * =========== * -* SUBROUTINE ZUNMQR( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, -* WORK, LWORK, INFO ) +* RECURSIVE SUBROUTINE ZUNMQR( SIDE, TRANS, M, N, K, A, LDA, TAU, +* C, LDC, WORK, LWORK, INFO ) * * .. Scalar Arguments .. * CHARACTER SIDE, TRANS @@ -166,8 +166,8 @@ *> \ingroup complex16OTHERcomputational * * ===================================================================== - SUBROUTINE ZUNMQR( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, - $ WORK, LWORK, INFO ) + RECURSIVE SUBROUTINE ZUNMQR( SIDE, TRANS, M, N, K, A, LDA, TAU, C, + $ LDC, WORK, LWORK, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- --- ./src/zunmrq.f.orig 2013-05-06 00:43:02.462381453 +0200 +++ ./src/zunmrq.f 2013-05-06 00:52:49.781417511 +0200 @@ -18,8 +18,8 @@ * Definition: * =========== * -* SUBROUTINE ZUNMRQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, -* WORK, LWORK, INFO ) +* RECURSIVE SUBROUTINE ZUNMRQ( SIDE, TRANS, M, N, K, A, LDA, TAU, +* C, LDC, WORK, LWORK, INFO ) * * .. Scalar Arguments .. * CHARACTER SIDE, TRANS @@ -166,8 +166,8 @@ *> \ingroup complex16OTHERcomputational * * ===================================================================== - SUBROUTINE ZUNMRQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, - $ WORK, LWORK, INFO ) + RECURSIVE SUBROUTINE ZUNMRQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, + $ LDC, WORK, LWORK, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- --- ./src/zunmrz.f.orig 2013-05-06 00:43:02.470381498 +0200 +++ ./src/zunmrz.f 2013-05-06 00:53:26.621607788 +0200 @@ -18,8 +18,8 @@ * Definition: * =========== * -* SUBROUTINE ZUNMRZ( SIDE, TRANS, M, N, K, L, A, LDA, TAU, C, LDC, -* WORK, LWORK, INFO ) +* RECURSIVE SUBROUTINE ZUNMRZ( SIDE, TRANS, M, N, K, L, A, LDA, +* TAU, C, LDC, WORK, LWORK, INFO ) * * .. Scalar Arguments .. * CHARACTER SIDE, TRANS @@ -186,8 +186,8 @@ *> \endverbatim *> * ===================================================================== - SUBROUTINE ZUNMRZ( SIDE, TRANS, M, N, K, L, A, LDA, TAU, C, LDC, - $ WORK, LWORK, INFO ) + RECURSIVE SUBROUTINE ZUNMRZ( SIDE, TRANS, M, N, K, L, A, LDA, TAU, + $ C, LDC, WORK, LWORK, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, --