--- rpl/lapack/lapack/dgesdd.f 2020/05/21 21:45:57 1.21 +++ rpl/lapack/lapack/dgesdd.f 2023/08/07 08:38:49 1.22 @@ -191,9 +191,10 @@ *> \param[out] INFO *> \verbatim *> INFO is INTEGER -*> = 0: successful exit. -*> < 0: if INFO = -i, the i-th argument had an illegal value. -*> > 0: DBDSDC did not converge, updating process failed. +*> < 0: if INFO = -i, the i-th argument had an illegal value. +*> = -4: if A had a NAN entry. +*> > 0: DBDSDC did not converge, updating process failed. +*> = 0: successful exit. *> \endverbatim * * Authors: @@ -204,8 +205,6 @@ *> \author Univ. of Colorado Denver *> \author NAG Ltd. * -*> \date June 2016 -* *> \ingroup doubleGEsing * *> \par Contributors: @@ -219,10 +218,9 @@ $ WORK, LWORK, IWORK, INFO ) implicit none * -* -- LAPACK driver routine (version 3.7.0) -- +* -- LAPACK driver routine -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- -* June 2016 * * .. Scalar Arguments .. CHARACTER JOBZ @@ -267,9 +265,10 @@ $ XERBLA * .. * .. External Functions .. - LOGICAL LSAME - DOUBLE PRECISION DLAMCH, DLANGE - EXTERNAL DLAMCH, DLANGE, LSAME + LOGICAL LSAME, DISNAN + DOUBLE PRECISION DLAMCH, DLANGE, DROUNDUP_LWORK + EXTERNAL DLAMCH, DLANGE, LSAME, DISNAN, + $ DROUNDUP_LWORK * .. * .. Intrinsic Functions .. INTRINSIC INT, MAX, MIN, SQRT @@ -570,7 +569,7 @@ END IF MAXWRK = MAX( MAXWRK, MINWRK ) - WORK( 1 ) = MAXWRK + WORK( 1 ) = DROUNDUP_LWORK( MAXWRK ) * IF( LWORK.LT.MINWRK .AND. .NOT.LQUERY ) THEN INFO = -12 @@ -599,6 +598,10 @@ * Scale A if max element outside range [SMLNUM,BIGNUM] * ANRM = DLANGE( 'M', M, N, A, LDA, DUM ) + IF( DISNAN( ANRM ) ) THEN + INFO = -4 + RETURN + END IF ISCL = 0 IF( ANRM.GT.ZERO .AND. ANRM.LT.SMLNUM ) THEN ISCL = 1 @@ -1539,7 +1542,7 @@ * * Return optimal workspace in WORK(1) * - WORK( 1 ) = MAXWRK + WORK( 1 ) = DROUNDUP_LWORK( MAXWRK ) * RETURN *