Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F90975276
dgecon.f
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Wed, Nov 6, 13:52
Size
6 KB
Mime Type
text/html
Expires
Fri, Nov 8, 13:52 (1 d, 23 h)
Engine
blob
Format
Raw Data
Handle
22030794
Attached To
rLAMMPS lammps
dgecon.f
View Options
*>
\
brief
\
b
DGECON
*
*
===========
DOCUMENTATION
===========
*
*
Online
html
documentation
available
at
*
http
:
//
www
.
netlib
.
org
/
lapack
/
explore
-
html
/
*
*>
\
htmlonly
*>
Download
DGECON
+
dependencies
*>
<
a
href
=
"http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/dgecon.f"
>
*>
[
TGZ
]
</
a
>
*>
<
a
href
=
"http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/dgecon.f"
>
*>
[
ZIP
]
</
a
>
*>
<
a
href
=
"http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/dgecon.f"
>
*>
[
TXT
]
</
a
>
*>
\
endhtmlonly
*
*
Definition
:
*
===========
*
*
SUBROUTINE
DGECON
(
NORM
,
N
,
A
,
LDA
,
ANORM
,
RCOND
,
WORK
,
IWORK
,
*
INFO
)
*
*
..
Scalar
Arguments
..
*
CHARACTER
NORM
*
INTEGER
INFO
,
LDA
,
N
*
DOUBLE PRECISION
ANORM
,
RCOND
*
..
*
..
Array
Arguments
..
*
INTEGER
IWORK
(
*
)
*
DOUBLE PRECISION
A
(
LDA
,
*
),
WORK
(
*
)
*
..
*
*
*>
\
par
Purpose
:
*
=============
*>
*>
\
verbatim
*>
*>
DGECON
estimates
the
reciprocal
of
the
condition
number
of
a
general
*>
real
matrix
A
,
in
either
the
1
-
norm
or
the
infinity
-
norm
,
using
*>
the
LU
factorization
computed
by
DGETRF
.
*>
*>
An
estimate
is
obtained
for
norm
(
inv
(
A
)),
and
the
reciprocal
of
the
*>
condition
number
is
computed
as
*>
RCOND
=
1
/
(
norm
(
A
)
*
norm
(
inv
(
A
))
)
.
*>
\
endverbatim
*
*
Arguments
:
*
==========
*
*>
\
param
[
in
]
NORM
*>
\
verbatim
*>
NORM
is
CHARACTER
*
1
*>
Specifies
whether
the
1
-
norm
condition
number
or
the
*>
infinity
-
norm
condition
number
is
required
:
*>
=
'1'
or
'O'
:
1
-
norm
;
*>
=
'I'
:
Infinity
-
norm
.
*>
\
endverbatim
*>
*>
\
param
[
in
]
N
*>
\
verbatim
*>
N
is
INTEGER
*>
The
order
of
the
matrix
A
.
N
>=
0.
*>
\
endverbatim
*>
*>
\
param
[
in
]
A
*>
\
verbatim
*>
A
is
DOUBLE PRECISION
array
,
dimension
(
LDA
,
N
)
*>
The
factors
L
and
U
from
the
factorization
A
=
P
*
L
*
U
*>
as
computed
by
DGETRF
.
*>
\
endverbatim
*>
*>
\
param
[
in
]
LDA
*>
\
verbatim
*>
LDA
is
INTEGER
*>
The
leading
dimension
of
the
array
A
.
LDA
>=
max
(
1
,
N
)
.
*>
\
endverbatim
*>
*>
\
param
[
in
]
ANORM
*>
\
verbatim
*>
ANORM
is
DOUBLE PRECISION
*>
If
NORM
=
'1'
or
'O'
,
the
1
-
norm
of
the
original
matrix
A
.
*>
If
NORM
=
'I'
,
the
infinity
-
norm
of
the
original
matrix
A
.
*>
\
endverbatim
*>
*>
\
param
[
out
]
RCOND
*>
\
verbatim
*>
RCOND
is
DOUBLE PRECISION
*>
The
reciprocal
of
the
condition
number
of
the
matrix
A
,
*>
computed
as
RCOND
=
1
/
(
norm
(
A
)
*
norm
(
inv
(
A
)))
.
*>
\
endverbatim
*>
*>
\
param
[
out
]
WORK
*>
\
verbatim
*>
WORK
is
DOUBLE PRECISION
array
,
dimension
(
4
*
N
)
*>
\
endverbatim
*>
*>
\
param
[
out
]
IWORK
*>
\
verbatim
*>
IWORK
is
INTEGER
array
,
dimension
(
N
)
*>
\
endverbatim
*>
*>
\
param
[
out
]
INFO
*>
\
verbatim
*>
INFO
is
INTEGER
*>
=
0
:
successful
exit
*>
<
0
:
if
INFO
=
-
i
,
the
i
-
th
argument
had
an
illegal
value
*>
\
endverbatim
*
*
Authors
:
*
========
*
*>
\
author
Univ
.
of
Tennessee
*>
\
author
Univ
.
of
California
Berkeley
*>
\
author
Univ
.
of
Colorado
Denver
*>
\
author
NAG
Ltd
.
*
*>
\
date
November
2011
*
*>
\
ingroup
doubleGEcomputational
*
*
=====================================================================
SUBROUTINE
DGECON
(
NORM
,
N
,
A
,
LDA
,
ANORM
,
RCOND
,
WORK
,
IWORK
,
$
INFO
)
*
*
--
LAPACK
computational
routine
(
version
3.4.0
)
--
*
--
LAPACK
is
a
software
package
provided
by
Univ
.
of
Tennessee
,
--
*
--
Univ
.
of
California
Berkeley
,
Univ
.
of
Colorado
Denver
and
NAG
Ltd
..
--
*
November
2011
*
*
..
Scalar
Arguments
..
CHARACTER
NORM
INTEGER
INFO
,
LDA
,
N
DOUBLE PRECISION
ANORM
,
RCOND
*
..
*
..
Array
Arguments
..
INTEGER
IWORK
(
*
)
DOUBLE PRECISION
A
(
LDA
,
*
),
WORK
(
*
)
*
..
*
*
=====================================================================
*
*
..
Parameters
..
DOUBLE PRECISION
ONE
,
ZERO
PARAMETER
(
ONE
=
1.0
D
+
0
,
ZERO
=
0.0
D
+
0
)
*
..
*
..
Local
Scalars
..
LOGICAL
ONENRM
CHARACTER
NORMIN
INTEGER
IX
,
KASE
,
KASE1
DOUBLE PRECISION
AINVNM
,
SCALE
,
SL
,
SMLNUM
,
SU
*
..
*
..
Local
Arrays
..
INTEGER
ISAVE
(
3
)
*
..
*
..
External
Functions
..
LOGICAL
LSAME
INTEGER
IDAMAX
DOUBLE PRECISION
DLAMCH
EXTERNAL
LSAME
,
IDAMAX
,
DLAMCH
*
..
*
..
External
Subroutines
..
EXTERNAL
DLACN2
,
DLATRS
,
DRSCL
,
XERBLA
*
..
*
..
Intrinsic
Functions
..
INTRINSIC
ABS
,
MAX
*
..
*
..
Executable
Statements
..
*
*
Test
the
input
parameters
.
*
INFO
=
0
ONENRM
=
NORM
.EQ.
'1'
.OR.
LSAME
(
NORM
,
'O'
)
IF
(
.NOT.
ONENRM
.AND.
.NOT.
LSAME
(
NORM
,
'I'
)
)
THEN
INFO
=
-
1
ELSE IF
(
N
.LT.
0
)
THEN
INFO
=
-
2
ELSE IF
(
LDA
.LT.
MAX
(
1
,
N
)
)
THEN
INFO
=
-
4
ELSE IF
(
ANORM
.LT.
ZERO
)
THEN
INFO
=
-
5
END IF
IF
(
INFO
.NE.
0
)
THEN
CALL
XERBLA
(
'DGECON'
,
-
INFO
)
RETURN
END IF
*
*
Quick
return if
possible
*
RCOND
=
ZERO
IF
(
N
.EQ.
0
)
THEN
RCOND
=
ONE
RETURN
ELSE IF
(
ANORM
.EQ.
ZERO
)
THEN
RETURN
END IF
*
SMLNUM
=
DLAMCH
(
'Safe minimum'
)
*
*
Estimate
the
norm
of
inv
(
A
)
.
*
AINVNM
=
ZERO
NORMIN
=
'N'
IF
(
ONENRM
)
THEN
KASE1
=
1
ELSE
KASE1
=
2
END IF
KASE
=
0
10
CONTINUE
CALL
DLACN2
(
N
,
WORK
(
N
+
1
),
WORK
,
IWORK
,
AINVNM
,
KASE
,
ISAVE
)
IF
(
KASE
.NE.
0
)
THEN
IF
(
KASE
.EQ.
KASE1
)
THEN
*
*
Multiply
by
inv
(
L
)
.
*
CALL
DLATRS
(
'Lower'
,
'No transpose'
,
'Unit'
,
NORMIN
,
N
,
A
,
$
LDA
,
WORK
,
SL
,
WORK
(
2
*
N
+
1
),
INFO
)
*
*
Multiply
by
inv
(
U
)
.
*
CALL
DLATRS
(
'Upper'
,
'No transpose'
,
'Non-unit'
,
NORMIN
,
N
,
$
A
,
LDA
,
WORK
,
SU
,
WORK
(
3
*
N
+
1
),
INFO
)
ELSE
*
*
Multiply
by
inv
(
U
**
T
)
.
*
CALL
DLATRS
(
'Upper'
,
'Transpose'
,
'Non-unit'
,
NORMIN
,
N
,
A
,
$
LDA
,
WORK
,
SU
,
WORK
(
3
*
N
+
1
),
INFO
)
*
*
Multiply
by
inv
(
L
**
T
)
.
*
CALL
DLATRS
(
'Lower'
,
'Transpose'
,
'Unit'
,
NORMIN
,
N
,
A
,
$
LDA
,
WORK
,
SL
,
WORK
(
2
*
N
+
1
),
INFO
)
END IF
*
*
Divide
X
by
1
/
(
SL
*
SU
)
if
doing
so
will
not
cause
overflow
.
*
SCALE
=
SL
*
SU
NORMIN
=
'Y'
IF
(
SCALE
.NE.
ONE
)
THEN
IX
=
IDAMAX
(
N
,
WORK
,
1
)
IF
(
SCALE
.LT.
ABS
(
WORK
(
IX
)
)
*
SMLNUM
.OR.
SCALE
.EQ.
ZERO
)
$
GO
TO
20
CALL
DRSCL
(
N
,
SCALE
,
WORK
,
1
)
END IF
GO
TO
10
END IF
*
*
Compute
the
estimate
of
the
reciprocal
condition
number
.
*
IF
(
AINVNM
.NE.
ZERO
)
$
RCOND
=
(
ONE
/
AINVNM
)
/
ANORM
*
20
CONTINUE
RETURN
*
*
End
of
DGECON
*
END
Event Timeline
Log In to Comment