--- rpl/lapack/lapack/dlatdf.f 2010/08/07 13:22:21 1.6
+++ rpl/lapack/lapack/dlatdf.f 2023/08/07 08:39:00 1.21
@@ -1,10 +1,177 @@
+*> \brief \b DLATDF uses the LU factorization of the n-by-n matrix computed by sgetc2 and computes a contribution to the reciprocal Dif-estimate.
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
+*
+*> \htmlonly
+*> Download DLATDF + dependencies
+*>
+*> [TGZ]
+*>
+*> [ZIP]
+*>
+*> [TXT]
+*> \endhtmlonly
+*
+* Definition:
+* ===========
+*
+* SUBROUTINE DLATDF( IJOB, N, Z, LDZ, RHS, RDSUM, RDSCAL, IPIV,
+* JPIV )
+*
+* .. Scalar Arguments ..
+* INTEGER IJOB, LDZ, N
+* DOUBLE PRECISION RDSCAL, RDSUM
+* ..
+* .. Array Arguments ..
+* INTEGER IPIV( * ), JPIV( * )
+* DOUBLE PRECISION RHS( * ), Z( LDZ, * )
+* ..
+*
+*
+*> \par Purpose:
+* =============
+*>
+*> \verbatim
+*>
+*> DLATDF uses the LU factorization of the n-by-n matrix Z computed by
+*> DGETC2 and computes a contribution to the reciprocal Dif-estimate
+*> by solving Z * x = b for x, and choosing the r.h.s. b such that
+*> the norm of x is as large as possible. On entry RHS = b holds the
+*> contribution from earlier solved sub-systems, and on return RHS = x.
+*>
+*> The factorization of Z returned by DGETC2 has the form Z = P*L*U*Q,
+*> where P and Q are permutation matrices. L is lower triangular with
+*> unit diagonal elements and U is upper triangular.
+*> \endverbatim
+*
+* Arguments:
+* ==========
+*
+*> \param[in] IJOB
+*> \verbatim
+*> IJOB is INTEGER
+*> IJOB = 2: First compute an approximative null-vector e
+*> of Z using DGECON, e is normalized and solve for
+*> Zx = +-e - f with the sign giving the greater value
+*> of 2-norm(x). About 5 times as expensive as Default.
+*> IJOB .ne. 2: Local look ahead strategy where all entries of
+*> the r.h.s. b is chosen as either +1 or -1 (Default).
+*> \endverbatim
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> The number of columns of the matrix Z.
+*> \endverbatim
+*>
+*> \param[in] Z
+*> \verbatim
+*> Z is DOUBLE PRECISION array, dimension (LDZ, N)
+*> On entry, the LU part of the factorization of the n-by-n
+*> matrix Z computed by DGETC2: Z = P * L * U * Q
+*> \endverbatim
+*>
+*> \param[in] LDZ
+*> \verbatim
+*> LDZ is INTEGER
+*> The leading dimension of the array Z. LDA >= max(1, N).
+*> \endverbatim
+*>
+*> \param[in,out] RHS
+*> \verbatim
+*> RHS is DOUBLE PRECISION array, dimension (N)
+*> On entry, RHS contains contributions from other subsystems.
+*> On exit, RHS contains the solution of the subsystem with
+*> entries according to the value of IJOB (see above).
+*> \endverbatim
+*>
+*> \param[in,out] RDSUM
+*> \verbatim
+*> RDSUM is DOUBLE PRECISION
+*> On entry, the sum of squares of computed contributions to
+*> the Dif-estimate under computation by DTGSYL, where the
+*> scaling factor RDSCAL (see below) has been factored out.
+*> On exit, the corresponding sum of squares updated with the
+*> contributions from the current sub-system.
+*> If TRANS = 'T' RDSUM is not touched.
+*> NOTE: RDSUM only makes sense when DTGSY2 is called by STGSYL.
+*> \endverbatim
+*>
+*> \param[in,out] RDSCAL
+*> \verbatim
+*> RDSCAL is DOUBLE PRECISION
+*> On entry, scaling factor used to prevent overflow in RDSUM.
+*> On exit, RDSCAL is updated w.r.t. the current contributions
+*> in RDSUM.
+*> If TRANS = 'T', RDSCAL is not touched.
+*> NOTE: RDSCAL only makes sense when DTGSY2 is called by
+*> DTGSYL.
+*> \endverbatim
+*>
+*> \param[in] IPIV
+*> \verbatim
+*> IPIV is INTEGER array, dimension (N).
+*> The pivot indices; for 1 <= i <= N, row i of the
+*> matrix has been interchanged with row IPIV(i).
+*> \endverbatim
+*>
+*> \param[in] JPIV
+*> \verbatim
+*> JPIV is INTEGER array, dimension (N).
+*> The pivot indices; for 1 <= j <= N, column j of the
+*> matrix has been interchanged with column JPIV(j).
+*> \endverbatim
+*
+* Authors:
+* ========
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \ingroup doubleOTHERauxiliary
+*
+*> \par Further Details:
+* =====================
+*>
+*> This routine is a further developed implementation of algorithm
+*> BSOLVE in [1] using complete pivoting in the LU factorization.
+*
+*> \par Contributors:
+* ==================
+*>
+*> Bo Kagstrom and Peter Poromaa, Department of Computing Science,
+*> Umea University, S-901 87 Umea, Sweden.
+*
+*> \par References:
+* ================
+*>
+*> \verbatim
+*>
+*>
+*> [1] Bo Kagstrom and Lars Westin,
+*> Generalized Schur Methods with Condition Estimators for
+*> Solving the Generalized Sylvester Equation, IEEE Transactions
+*> on Automatic Control, Vol. 34, No. 7, July 1989, pp 745-751.
+*>
+*> [2] Peter Poromaa,
+*> On Efficient and Robust Estimators for the Separation
+*> between two Regular Matrix Pairs with Applications in
+*> Condition Estimation. Report IMINF-95.05, Departement of
+*> Computing Science, Umea University, S-901 87 Umea, Sweden, 1995.
+*> \endverbatim
+*>
+* =====================================================================
SUBROUTINE DLATDF( IJOB, N, Z, LDZ, RHS, RDSUM, RDSCAL, IPIV,
$ JPIV )
*
-* -- LAPACK auxiliary routine (version 3.2.2) --
+* -- LAPACK auxiliary routine --
* -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
-* June 2010
*
* .. Scalar Arguments ..
INTEGER IJOB, LDZ, N
@@ -15,91 +182,6 @@
DOUBLE PRECISION RHS( * ), Z( LDZ, * )
* ..
*
-* Purpose
-* =======
-*
-* DLATDF uses the LU factorization of the n-by-n matrix Z computed by
-* DGETC2 and computes a contribution to the reciprocal Dif-estimate
-* by solving Z * x = b for x, and choosing the r.h.s. b such that
-* the norm of x is as large as possible. On entry RHS = b holds the
-* contribution from earlier solved sub-systems, and on return RHS = x.
-*
-* The factorization of Z returned by DGETC2 has the form Z = P*L*U*Q,
-* where P and Q are permutation matrices. L is lower triangular with
-* unit diagonal elements and U is upper triangular.
-*
-* Arguments
-* =========
-*
-* IJOB (input) INTEGER
-* IJOB = 2: First compute an approximative null-vector e
-* of Z using DGECON, e is normalized and solve for
-* Zx = +-e - f with the sign giving the greater value
-* of 2-norm(x). About 5 times as expensive as Default.
-* IJOB .ne. 2: Local look ahead strategy where all entries of
-* the r.h.s. b is choosen as either +1 or -1 (Default).
-*
-* N (input) INTEGER
-* The number of columns of the matrix Z.
-*
-* Z (input) DOUBLE PRECISION array, dimension (LDZ, N)
-* On entry, the LU part of the factorization of the n-by-n
-* matrix Z computed by DGETC2: Z = P * L * U * Q
-*
-* LDZ (input) INTEGER
-* The leading dimension of the array Z. LDA >= max(1, N).
-*
-* RHS (input/output) DOUBLE PRECISION array, dimension (N)
-* On entry, RHS contains contributions from other subsystems.
-* On exit, RHS contains the solution of the subsystem with
-* entries acoording to the value of IJOB (see above).
-*
-* RDSUM (input/output) DOUBLE PRECISION
-* On entry, the sum of squares of computed contributions to
-* the Dif-estimate under computation by DTGSYL, where the
-* scaling factor RDSCAL (see below) has been factored out.
-* On exit, the corresponding sum of squares updated with the
-* contributions from the current sub-system.
-* If TRANS = 'T' RDSUM is not touched.
-* NOTE: RDSUM only makes sense when DTGSY2 is called by STGSYL.
-*
-* RDSCAL (input/output) DOUBLE PRECISION
-* On entry, scaling factor used to prevent overflow in RDSUM.
-* On exit, RDSCAL is updated w.r.t. the current contributions
-* in RDSUM.
-* If TRANS = 'T', RDSCAL is not touched.
-* NOTE: RDSCAL only makes sense when DTGSY2 is called by
-* DTGSYL.
-*
-* IPIV (input) INTEGER array, dimension (N).
-* The pivot indices; for 1 <= i <= N, row i of the
-* matrix has been interchanged with row IPIV(i).
-*
-* JPIV (input) INTEGER array, dimension (N).
-* The pivot indices; for 1 <= j <= N, column j of the
-* matrix has been interchanged with column JPIV(j).
-*
-* Further Details
-* ===============
-*
-* Based on contributions by
-* Bo Kagstrom and Peter Poromaa, Department of Computing Science,
-* Umea University, S-901 87 Umea, Sweden.
-*
-* This routine is a further developed implementation of algorithm
-* BSOLVE in [1] using complete pivoting in the LU factorization.
-*
-* [1] Bo Kagstrom and Lars Westin,
-* Generalized Schur Methods with Condition Estimators for
-* Solving the Generalized Sylvester Equation, IEEE Transactions
-* on Automatic Control, Vol. 34, No. 7, July 1989, pp 745-751.
-*
-* [2] Peter Poromaa,
-* On Efficient and Robust Estimators for the Separation
-* between two Regular Matrix Pairs with Applications in
-* Condition Estimation. Report IMINF-95.05, Departement of
-* Computing Science, Umea University, S-901 87 Umea, Sweden, 1995.
-*
* =====================================================================
*
* .. Parameters ..
@@ -175,7 +257,7 @@
*
* Solve for U-part, look-ahead for RHS(N) = +-1. This is not done
* in BSOLVE and will hopefully give us a better estimate because
-* any ill-conditioning of the original matrix is transfered to U
+* any ill-conditioning of the original matrix is transferred to U
* and not to L. U(N, N) is an approximation to sigma_min(LU).
*
CALL DCOPY( N-1, RHS, 1, XP, 1 )