annotate libcruft/arpack/src/snaitr.f @ 12274:9f5d2ef078e8 release-3-4-x

import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
author John W. Eaton <jwe@octave.org>
date Fri, 28 Jan 2011 14:04:33 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
12274
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1 c-----------------------------------------------------------------------
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2 c\BeginDoc
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
3 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
4 c\Name: snaitr
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
5 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
6 c\Description:
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
7 c Reverse communication interface for applying NP additional steps to
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
8 c a K step nonsymmetric Arnoldi factorization.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
9 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
10 c Input: OP*V_{k} - V_{k}*H = r_{k}*e_{k}^T
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
11 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
12 c with (V_{k}^T)*B*V_{k} = I, (V_{k}^T)*B*r_{k} = 0.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
13 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
14 c Output: OP*V_{k+p} - V_{k+p}*H = r_{k+p}*e_{k+p}^T
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
15 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
16 c with (V_{k+p}^T)*B*V_{k+p} = I, (V_{k+p}^T)*B*r_{k+p} = 0.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
17 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
18 c where OP and B are as in snaupd. The B-norm of r_{k+p} is also
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
19 c computed and returned.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
20 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
21 c\Usage:
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
22 c call snaitr
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
23 c ( IDO, BMAT, N, K, NP, NB, RESID, RNORM, V, LDV, H, LDH,
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
24 c IPNTR, WORKD, INFO )
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
25 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
26 c\Arguments
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
27 c IDO Integer. (INPUT/OUTPUT)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
28 c Reverse communication flag.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
29 c -------------------------------------------------------------
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
30 c IDO = 0: first call to the reverse communication interface
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
31 c IDO = -1: compute Y = OP * X where
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
32 c IPNTR(1) is the pointer into WORK for X,
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
33 c IPNTR(2) is the pointer into WORK for Y.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
34 c This is for the restart phase to force the new
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
35 c starting vector into the range of OP.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
36 c IDO = 1: compute Y = OP * X where
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
37 c IPNTR(1) is the pointer into WORK for X,
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
38 c IPNTR(2) is the pointer into WORK for Y,
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
39 c IPNTR(3) is the pointer into WORK for B * X.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
40 c IDO = 2: compute Y = B * X where
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
41 c IPNTR(1) is the pointer into WORK for X,
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
42 c IPNTR(2) is the pointer into WORK for Y.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
43 c IDO = 99: done
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
44 c -------------------------------------------------------------
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
45 c When the routine is used in the "shift-and-invert" mode, the
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
46 c vector B * Q is already available and do not need to be
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
47 c recompute in forming OP * Q.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
48 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
49 c BMAT Character*1. (INPUT)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
50 c BMAT specifies the type of the matrix B that defines the
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
51 c semi-inner product for the operator OP. See snaupd.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
52 c B = 'I' -> standard eigenvalue problem A*x = lambda*x
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
53 c B = 'G' -> generalized eigenvalue problem A*x = lambda*M**x
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
54 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
55 c N Integer. (INPUT)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
56 c Dimension of the eigenproblem.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
57 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
58 c K Integer. (INPUT)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
59 c Current size of V and H.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
60 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
61 c NP Integer. (INPUT)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
62 c Number of additional Arnoldi steps to take.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
63 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
64 c NB Integer. (INPUT)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
65 c Blocksize to be used in the recurrence.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
66 c Only work for NB = 1 right now. The goal is to have a
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
67 c program that implement both the block and non-block method.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
68 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
69 c RESID Real array of length N. (INPUT/OUTPUT)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
70 c On INPUT: RESID contains the residual vector r_{k}.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
71 c On OUTPUT: RESID contains the residual vector r_{k+p}.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
72 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
73 c RNORM Real scalar. (INPUT/OUTPUT)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
74 c B-norm of the starting residual on input.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
75 c B-norm of the updated residual r_{k+p} on output.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
76 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
77 c V Real N by K+NP array. (INPUT/OUTPUT)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
78 c On INPUT: V contains the Arnoldi vectors in the first K
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
79 c columns.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
80 c On OUTPUT: V contains the new NP Arnoldi vectors in the next
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
81 c NP columns. The first K columns are unchanged.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
82 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
83 c LDV Integer. (INPUT)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
84 c Leading dimension of V exactly as declared in the calling
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
85 c program.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
86 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
87 c H Real (K+NP) by (K+NP) array. (INPUT/OUTPUT)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
88 c H is used to store the generated upper Hessenberg matrix.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
89 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
90 c LDH Integer. (INPUT)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
91 c Leading dimension of H exactly as declared in the calling
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
92 c program.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
93 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
94 c IPNTR Integer array of length 3. (OUTPUT)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
95 c Pointer to mark the starting locations in the WORK for
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
96 c vectors used by the Arnoldi iteration.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
97 c -------------------------------------------------------------
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
98 c IPNTR(1): pointer to the current operand vector X.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
99 c IPNTR(2): pointer to the current result vector Y.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
100 c IPNTR(3): pointer to the vector B * X when used in the
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
101 c shift-and-invert mode. X is the current operand.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
102 c -------------------------------------------------------------
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
103 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
104 c WORKD Real work array of length 3*N. (REVERSE COMMUNICATION)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
105 c Distributed array to be used in the basic Arnoldi iteration
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
106 c for reverse communication. The calling program should not
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
107 c use WORKD as temporary workspace during the iteration !!!!!!
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
108 c On input, WORKD(1:N) = B*RESID and is used to save some
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
109 c computation at the first step.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
110 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
111 c INFO Integer. (OUTPUT)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
112 c = 0: Normal exit.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
113 c > 0: Size of the spanning invariant subspace of OP found.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
114 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
115 c\EndDoc
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
116 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
117 c-----------------------------------------------------------------------
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
118 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
119 c\BeginLib
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
120 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
121 c\Local variables:
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
122 c xxxxxx real
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
123 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
124 c\References:
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
125 c 1. D.C. Sorensen, "Implicit Application of Polynomial Filters in
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
126 c a k-Step Arnoldi Method", SIAM J. Matr. Anal. Apps., 13 (1992),
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
127 c pp 357-385.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
128 c 2. R.B. Lehoucq, "Analysis and Implementation of an Implicitly
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
129 c Restarted Arnoldi Iteration", Rice University Technical Report
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
130 c TR95-13, Department of Computational and Applied Mathematics.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
131 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
132 c\Routines called:
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
133 c sgetv0 ARPACK routine to generate the initial vector.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
134 c ivout ARPACK utility routine that prints integers.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
135 c arscnd ARPACK utility routine for timing.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
136 c smout ARPACK utility routine that prints matrices
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
137 c svout ARPACK utility routine that prints vectors.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
138 c slabad LAPACK routine that computes machine constants.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
139 c slamch LAPACK routine that determines machine constants.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
140 c slascl LAPACK routine for careful scaling of a matrix.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
141 c slanhs LAPACK routine that computes various norms of a matrix.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
142 c sgemv Level 2 BLAS routine for matrix vector multiplication.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
143 c saxpy Level 1 BLAS that computes a vector triad.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
144 c sscal Level 1 BLAS that scales a vector.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
145 c scopy Level 1 BLAS that copies one vector to another .
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
146 c sdot Level 1 BLAS that computes the scalar product of two vectors.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
147 c snrm2 Level 1 BLAS that computes the norm of a vector.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
148 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
149 c\Author
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
150 c Danny Sorensen Phuong Vu
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
151 c Richard Lehoucq CRPC / Rice University
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
152 c Dept. of Computational & Houston, Texas
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
153 c Applied Mathematics
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
154 c Rice University
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
155 c Houston, Texas
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
156 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
157 c\Revision history:
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
158 c xx/xx/92: Version ' 2.4'
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
159 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
160 c\SCCS Information: @(#)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
161 c FILE: naitr.F SID: 2.4 DATE OF SID: 8/27/96 RELEASE: 2
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
162 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
163 c\Remarks
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
164 c The algorithm implemented is:
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
165 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
166 c restart = .false.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
167 c Given V_{k} = [v_{1}, ..., v_{k}], r_{k};
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
168 c r_{k} contains the initial residual vector even for k = 0;
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
169 c Also assume that rnorm = || B*r_{k} || and B*r_{k} are already
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
170 c computed by the calling program.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
171 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
172 c betaj = rnorm ; p_{k+1} = B*r_{k} ;
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
173 c For j = k+1, ..., k+np Do
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
174 c 1) if ( betaj < tol ) stop or restart depending on j.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
175 c ( At present tol is zero )
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
176 c if ( restart ) generate a new starting vector.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
177 c 2) v_{j} = r(j-1)/betaj; V_{j} = [V_{j-1}, v_{j}];
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
178 c p_{j} = p_{j}/betaj
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
179 c 3) r_{j} = OP*v_{j} where OP is defined as in snaupd
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
180 c For shift-invert mode p_{j} = B*v_{j} is already available.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
181 c wnorm = || OP*v_{j} ||
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
182 c 4) Compute the j-th step residual vector.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
183 c w_{j} = V_{j}^T * B * OP * v_{j}
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
184 c r_{j} = OP*v_{j} - V_{j} * w_{j}
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
185 c H(:,j) = w_{j};
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
186 c H(j,j-1) = rnorm
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
187 c rnorm = || r_(j) ||
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
188 c If (rnorm > 0.717*wnorm) accept step and go back to 1)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
189 c 5) Re-orthogonalization step:
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
190 c s = V_{j}'*B*r_{j}
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
191 c r_{j} = r_{j} - V_{j}*s; rnorm1 = || r_{j} ||
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
192 c alphaj = alphaj + s_{j};
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
193 c 6) Iterative refinement step:
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
194 c If (rnorm1 > 0.717*rnorm) then
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
195 c rnorm = rnorm1
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
196 c accept step and go back to 1)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
197 c Else
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
198 c rnorm = rnorm1
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
199 c If this is the first time in step 6), go to 5)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
200 c Else r_{j} lies in the span of V_{j} numerically.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
201 c Set r_{j} = 0 and rnorm = 0; go to 1)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
202 c EndIf
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
203 c End Do
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
204 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
205 c\EndLib
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
206 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
207 c-----------------------------------------------------------------------
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
208 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
209 subroutine snaitr
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
210 & (ido, bmat, n, k, np, nb, resid, rnorm, v, ldv, h, ldh,
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
211 & ipntr, workd, info)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
212 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
213 c %----------------------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
214 c | Include files for debugging and timing information |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
215 c %----------------------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
216 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
217 include 'debug.h'
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
218 include 'stat.h'
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
219 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
220 c %------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
221 c | Scalar Arguments |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
222 c %------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
223 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
224 character bmat*1
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
225 integer ido, info, k, ldh, ldv, n, nb, np
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
226 Real
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
227 & rnorm
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
228 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
229 c %-----------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
230 c | Array Arguments |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
231 c %-----------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
232 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
233 integer ipntr(3)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
234 Real
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
235 & h(ldh,k+np), resid(n), v(ldv,k+np), workd(3*n)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
236 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
237 c %------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
238 c | Parameters |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
239 c %------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
240 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
241 Real
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
242 & one, zero
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
243 parameter (one = 1.0E+0, zero = 0.0E+0)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
244 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
245 c %---------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
246 c | Local Scalars |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
247 c %---------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
248 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
249 logical first, orth1, orth2, rstart, step3, step4
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
250 integer ierr, i, infol, ipj, irj, ivj, iter, itry, j, msglvl,
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
251 & jj
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
252 Real
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
253 & betaj, ovfl, temp1, rnorm1, smlnum, tst1, ulp, unfl,
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
254 & wnorm
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
255 save first, orth1, orth2, rstart, step3, step4,
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
256 & ierr, ipj, irj, ivj, iter, itry, j, msglvl, ovfl,
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
257 & betaj, rnorm1, smlnum, ulp, unfl, wnorm
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
258 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
259 c %-----------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
260 c | Local Array Arguments |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
261 c %-----------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
262 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
263 Real
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
264 & xtemp(2)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
265 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
266 c %----------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
267 c | External Subroutines |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
268 c %----------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
269 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
270 external saxpy, scopy, sscal, sgemv, sgetv0, slabad,
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
271 & svout, smout, ivout, arscnd
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
272 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
273 c %--------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
274 c | External Functions |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
275 c %--------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
276 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
277 Real
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
278 & sdot, snrm2, slanhs, slamch
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
279 external sdot, snrm2, slanhs, slamch
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
280 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
281 c %---------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
282 c | Intrinsic Functions |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
283 c %---------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
284 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
285 intrinsic abs, sqrt
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
286 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
287 c %-----------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
288 c | Data statements |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
289 c %-----------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
290 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
291 data first / .true. /
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
292 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
293 c %-----------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
294 c | Executable Statements |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
295 c %-----------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
296 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
297 if (first) then
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
298 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
299 c %-----------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
300 c | Set machine-dependent constants for the |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
301 c | the splitting and deflation criterion. |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
302 c | If norm(H) <= sqrt(OVFL), |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
303 c | overflow should not occur. |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
304 c | REFERENCE: LAPACK subroutine slahqr |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
305 c %-----------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
306 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
307 unfl = slamch( 'safe minimum' )
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
308 ovfl = one / unfl
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
309 call slabad( unfl, ovfl )
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
310 ulp = slamch( 'precision' )
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
311 smlnum = unfl*( n / ulp )
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
312 first = .false.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
313 end if
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
314 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
315 if (ido .eq. 0) then
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
316 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
317 c %-------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
318 c | Initialize timing statistics |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
319 c | & message level for debugging |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
320 c %-------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
321 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
322 call arscnd (t0)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
323 msglvl = mnaitr
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
324 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
325 c %------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
326 c | Initial call to this routine |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
327 c %------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
328 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
329 info = 0
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
330 step3 = .false.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
331 step4 = .false.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
332 rstart = .false.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
333 orth1 = .false.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
334 orth2 = .false.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
335 j = k + 1
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
336 ipj = 1
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
337 irj = ipj + n
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
338 ivj = irj + n
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
339 end if
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
340 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
341 c %-------------------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
342 c | When in reverse communication mode one of: |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
343 c | STEP3, STEP4, ORTH1, ORTH2, RSTART |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
344 c | will be .true. when .... |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
345 c | STEP3: return from computing OP*v_{j}. |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
346 c | STEP4: return from computing B-norm of OP*v_{j} |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
347 c | ORTH1: return from computing B-norm of r_{j+1} |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
348 c | ORTH2: return from computing B-norm of |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
349 c | correction to the residual vector. |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
350 c | RSTART: return from OP computations needed by |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
351 c | sgetv0. |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
352 c %-------------------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
353 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
354 if (step3) go to 50
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
355 if (step4) go to 60
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
356 if (orth1) go to 70
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
357 if (orth2) go to 90
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
358 if (rstart) go to 30
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
359 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
360 c %-----------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
361 c | Else this is the first step |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
362 c %-----------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
363 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
364 c %--------------------------------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
365 c | |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
366 c | A R N O L D I I T E R A T I O N L O O P |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
367 c | |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
368 c | Note: B*r_{j-1} is already in WORKD(1:N)=WORKD(IPJ:IPJ+N-1) |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
369 c %--------------------------------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
370
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
371 1000 continue
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
372 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
373 if (msglvl .gt. 1) then
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
374 call ivout (logfil, 1, j, ndigit,
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
375 & '_naitr: generating Arnoldi vector number')
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
376 call svout (logfil, 1, rnorm, ndigit,
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
377 & '_naitr: B-norm of the current residual is')
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
378 end if
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
379 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
380 c %---------------------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
381 c | STEP 1: Check if the B norm of j-th residual |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
382 c | vector is zero. Equivalent to determing whether |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
383 c | an exact j-step Arnoldi factorization is present. |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
384 c %---------------------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
385 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
386 betaj = rnorm
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
387 if (rnorm .gt. zero) go to 40
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
388 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
389 c %---------------------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
390 c | Invariant subspace found, generate a new starting |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
391 c | vector which is orthogonal to the current Arnoldi |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
392 c | basis and continue the iteration. |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
393 c %---------------------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
394 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
395 if (msglvl .gt. 0) then
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
396 call ivout (logfil, 1, j, ndigit,
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
397 & '_naitr: ****** RESTART AT STEP ******')
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
398 end if
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
399 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
400 c %---------------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
401 c | ITRY is the loop variable that controls the |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
402 c | maximum amount of times that a restart is |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
403 c | attempted. NRSTRT is used by stat.h |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
404 c %---------------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
405 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
406 betaj = zero
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
407 nrstrt = nrstrt + 1
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
408 itry = 1
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
409 20 continue
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
410 rstart = .true.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
411 ido = 0
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
412 30 continue
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
413 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
414 c %--------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
415 c | If in reverse communication mode and |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
416 c | RSTART = .true. flow returns here. |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
417 c %--------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
418 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
419 call sgetv0 (ido, bmat, itry, .false., n, j, v, ldv,
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
420 & resid, rnorm, ipntr, workd, ierr)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
421 if (ido .ne. 99) go to 9000
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
422 if (ierr .lt. 0) then
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
423 itry = itry + 1
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
424 if (itry .le. 3) go to 20
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
425 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
426 c %------------------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
427 c | Give up after several restart attempts. |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
428 c | Set INFO to the size of the invariant subspace |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
429 c | which spans OP and exit. |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
430 c %------------------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
431 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
432 info = j - 1
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
433 call arscnd (t1)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
434 tnaitr = tnaitr + (t1 - t0)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
435 ido = 99
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
436 go to 9000
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
437 end if
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
438 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
439 40 continue
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
440 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
441 c %---------------------------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
442 c | STEP 2: v_{j} = r_{j-1}/rnorm and p_{j} = p_{j}/rnorm |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
443 c | Note that p_{j} = B*r_{j-1}. In order to avoid overflow |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
444 c | when reciprocating a small RNORM, test against lower |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
445 c | machine bound. |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
446 c %---------------------------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
447 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
448 call scopy (n, resid, 1, v(1,j), 1)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
449 if (rnorm .ge. unfl) then
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
450 temp1 = one / rnorm
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
451 call sscal (n, temp1, v(1,j), 1)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
452 call sscal (n, temp1, workd(ipj), 1)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
453 else
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
454 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
455 c %-----------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
456 c | To scale both v_{j} and p_{j} carefully |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
457 c | use LAPACK routine SLASCL |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
458 c %-----------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
459 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
460 call slascl ('General', i, i, rnorm, one, n, 1,
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
461 & v(1,j), n, infol)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
462 call slascl ('General', i, i, rnorm, one, n, 1,
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
463 & workd(ipj), n, infol)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
464 end if
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
465 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
466 c %------------------------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
467 c | STEP 3: r_{j} = OP*v_{j}; Note that p_{j} = B*v_{j} |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
468 c | Note that this is not quite yet r_{j}. See STEP 4 |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
469 c %------------------------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
470 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
471 step3 = .true.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
472 nopx = nopx + 1
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
473 call arscnd (t2)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
474 call scopy (n, v(1,j), 1, workd(ivj), 1)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
475 ipntr(1) = ivj
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
476 ipntr(2) = irj
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
477 ipntr(3) = ipj
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
478 ido = 1
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
479 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
480 c %-----------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
481 c | Exit in order to compute OP*v_{j} |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
482 c %-----------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
483 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
484 go to 9000
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
485 50 continue
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
486 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
487 c %----------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
488 c | Back from reverse communication; |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
489 c | WORKD(IRJ:IRJ+N-1) := OP*v_{j} |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
490 c | if step3 = .true. |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
491 c %----------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
492 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
493 call arscnd (t3)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
494 tmvopx = tmvopx + (t3 - t2)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
495
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
496 step3 = .false.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
497 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
498 c %------------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
499 c | Put another copy of OP*v_{j} into RESID. |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
500 c %------------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
501 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
502 call scopy (n, workd(irj), 1, resid, 1)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
503 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
504 c %---------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
505 c | STEP 4: Finish extending the Arnoldi |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
506 c | factorization to length j. |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
507 c %---------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
508 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
509 call arscnd (t2)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
510 if (bmat .eq. 'G') then
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
511 nbx = nbx + 1
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
512 step4 = .true.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
513 ipntr(1) = irj
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
514 ipntr(2) = ipj
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
515 ido = 2
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
516 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
517 c %-------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
518 c | Exit in order to compute B*OP*v_{j} |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
519 c %-------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
520 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
521 go to 9000
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
522 else if (bmat .eq. 'I') then
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
523 call scopy (n, resid, 1, workd(ipj), 1)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
524 end if
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
525 60 continue
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
526 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
527 c %----------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
528 c | Back from reverse communication; |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
529 c | WORKD(IPJ:IPJ+N-1) := B*OP*v_{j} |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
530 c | if step4 = .true. |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
531 c %----------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
532 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
533 if (bmat .eq. 'G') then
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
534 call arscnd (t3)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
535 tmvbx = tmvbx + (t3 - t2)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
536 end if
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
537 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
538 step4 = .false.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
539 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
540 c %-------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
541 c | The following is needed for STEP 5. |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
542 c | Compute the B-norm of OP*v_{j}. |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
543 c %-------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
544 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
545 if (bmat .eq. 'G') then
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
546 wnorm = sdot (n, resid, 1, workd(ipj), 1)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
547 wnorm = sqrt(abs(wnorm))
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
548 else if (bmat .eq. 'I') then
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
549 wnorm = snrm2(n, resid, 1)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
550 end if
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
551 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
552 c %-----------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
553 c | Compute the j-th residual corresponding |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
554 c | to the j step factorization. |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
555 c | Use Classical Gram Schmidt and compute: |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
556 c | w_{j} <- V_{j}^T * B * OP * v_{j} |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
557 c | r_{j} <- OP*v_{j} - V_{j} * w_{j} |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
558 c %-----------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
559 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
560 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
561 c %------------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
562 c | Compute the j Fourier coefficients w_{j} |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
563 c | WORKD(IPJ:IPJ+N-1) contains B*OP*v_{j}. |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
564 c %------------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
565 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
566 call sgemv ('T', n, j, one, v, ldv, workd(ipj), 1,
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
567 & zero, h(1,j), 1)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
568 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
569 c %--------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
570 c | Orthogonalize r_{j} against V_{j}. |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
571 c | RESID contains OP*v_{j}. See STEP 3. |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
572 c %--------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
573 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
574 call sgemv ('N', n, j, -one, v, ldv, h(1,j), 1,
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
575 & one, resid, 1)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
576 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
577 if (j .gt. 1) h(j,j-1) = betaj
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
578 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
579 call arscnd (t4)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
580 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
581 orth1 = .true.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
582 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
583 call arscnd (t2)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
584 if (bmat .eq. 'G') then
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
585 nbx = nbx + 1
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
586 call scopy (n, resid, 1, workd(irj), 1)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
587 ipntr(1) = irj
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
588 ipntr(2) = ipj
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
589 ido = 2
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
590 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
591 c %----------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
592 c | Exit in order to compute B*r_{j} |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
593 c %----------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
594 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
595 go to 9000
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
596 else if (bmat .eq. 'I') then
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
597 call scopy (n, resid, 1, workd(ipj), 1)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
598 end if
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
599 70 continue
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
600 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
601 c %---------------------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
602 c | Back from reverse communication if ORTH1 = .true. |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
603 c | WORKD(IPJ:IPJ+N-1) := B*r_{j}. |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
604 c %---------------------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
605 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
606 if (bmat .eq. 'G') then
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
607 call arscnd (t3)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
608 tmvbx = tmvbx + (t3 - t2)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
609 end if
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
610 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
611 orth1 = .false.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
612 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
613 c %------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
614 c | Compute the B-norm of r_{j}. |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
615 c %------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
616 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
617 if (bmat .eq. 'G') then
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
618 rnorm = sdot (n, resid, 1, workd(ipj), 1)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
619 rnorm = sqrt(abs(rnorm))
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
620 else if (bmat .eq. 'I') then
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
621 rnorm = snrm2(n, resid, 1)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
622 end if
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
623 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
624 c %-----------------------------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
625 c | STEP 5: Re-orthogonalization / Iterative refinement phase |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
626 c | Maximum NITER_ITREF tries. |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
627 c | |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
628 c | s = V_{j}^T * B * r_{j} |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
629 c | r_{j} = r_{j} - V_{j}*s |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
630 c | alphaj = alphaj + s_{j} |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
631 c | |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
632 c | The stopping criteria used for iterative refinement is |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
633 c | discussed in Parlett's book SEP, page 107 and in Gragg & |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
634 c | Reichel ACM TOMS paper; Algorithm 686, Dec. 1990. |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
635 c | Determine if we need to correct the residual. The goal is |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
636 c | to enforce ||v(:,1:j)^T * r_{j}|| .le. eps * || r_{j} || |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
637 c | The following test determines whether the sine of the |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
638 c | angle between OP*x and the computed residual is less |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
639 c | than or equal to 0.717. |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
640 c %-----------------------------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
641 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
642 if (rnorm .gt. 0.717*wnorm) go to 100
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
643 iter = 0
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
644 nrorth = nrorth + 1
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
645 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
646 c %---------------------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
647 c | Enter the Iterative refinement phase. If further |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
648 c | refinement is necessary, loop back here. The loop |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
649 c | variable is ITER. Perform a step of Classical |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
650 c | Gram-Schmidt using all the Arnoldi vectors V_{j} |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
651 c %---------------------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
652 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
653 80 continue
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
654 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
655 if (msglvl .gt. 2) then
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
656 xtemp(1) = wnorm
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
657 xtemp(2) = rnorm
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
658 call svout (logfil, 2, xtemp, ndigit,
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
659 & '_naitr: re-orthonalization; wnorm and rnorm are')
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
660 call svout (logfil, j, h(1,j), ndigit,
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
661 & '_naitr: j-th column of H')
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
662 end if
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
663 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
664 c %----------------------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
665 c | Compute V_{j}^T * B * r_{j}. |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
666 c | WORKD(IRJ:IRJ+J-1) = v(:,1:J)'*WORKD(IPJ:IPJ+N-1). |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
667 c %----------------------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
668 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
669 call sgemv ('T', n, j, one, v, ldv, workd(ipj), 1,
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
670 & zero, workd(irj), 1)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
671 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
672 c %---------------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
673 c | Compute the correction to the residual: |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
674 c | r_{j} = r_{j} - V_{j} * WORKD(IRJ:IRJ+J-1). |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
675 c | The correction to H is v(:,1:J)*H(1:J,1:J) |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
676 c | + v(:,1:J)*WORKD(IRJ:IRJ+J-1)*e'_j. |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
677 c %---------------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
678 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
679 call sgemv ('N', n, j, -one, v, ldv, workd(irj), 1,
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
680 & one, resid, 1)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
681 call saxpy (j, one, workd(irj), 1, h(1,j), 1)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
682 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
683 orth2 = .true.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
684 call arscnd (t2)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
685 if (bmat .eq. 'G') then
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
686 nbx = nbx + 1
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
687 call scopy (n, resid, 1, workd(irj), 1)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
688 ipntr(1) = irj
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
689 ipntr(2) = ipj
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
690 ido = 2
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
691 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
692 c %-----------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
693 c | Exit in order to compute B*r_{j}. |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
694 c | r_{j} is the corrected residual. |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
695 c %-----------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
696 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
697 go to 9000
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
698 else if (bmat .eq. 'I') then
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
699 call scopy (n, resid, 1, workd(ipj), 1)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
700 end if
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
701 90 continue
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
702 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
703 c %---------------------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
704 c | Back from reverse communication if ORTH2 = .true. |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
705 c %---------------------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
706 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
707 if (bmat .eq. 'G') then
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
708 call arscnd (t3)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
709 tmvbx = tmvbx + (t3 - t2)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
710 end if
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
711 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
712 c %-----------------------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
713 c | Compute the B-norm of the corrected residual r_{j}. |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
714 c %-----------------------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
715 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
716 if (bmat .eq. 'G') then
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
717 rnorm1 = sdot (n, resid, 1, workd(ipj), 1)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
718 rnorm1 = sqrt(abs(rnorm1))
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
719 else if (bmat .eq. 'I') then
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
720 rnorm1 = snrm2(n, resid, 1)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
721 end if
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
722 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
723 if (msglvl .gt. 0 .and. iter .gt. 0) then
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
724 call ivout (logfil, 1, j, ndigit,
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
725 & '_naitr: Iterative refinement for Arnoldi residual')
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
726 if (msglvl .gt. 2) then
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
727 xtemp(1) = rnorm
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
728 xtemp(2) = rnorm1
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
729 call svout (logfil, 2, xtemp, ndigit,
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
730 & '_naitr: iterative refinement ; rnorm and rnorm1 are')
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
731 end if
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
732 end if
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
733 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
734 c %-----------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
735 c | Determine if we need to perform another |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
736 c | step of re-orthogonalization. |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
737 c %-----------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
738 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
739 if (rnorm1 .gt. 0.717*rnorm) then
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
740 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
741 c %---------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
742 c | No need for further refinement. |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
743 c | The cosine of the angle between the |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
744 c | corrected residual vector and the old |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
745 c | residual vector is greater than 0.717 |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
746 c | In other words the corrected residual |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
747 c | and the old residual vector share an |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
748 c | angle of less than arcCOS(0.717) |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
749 c %---------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
750 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
751 rnorm = rnorm1
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
752 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
753 else
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
754 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
755 c %-------------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
756 c | Another step of iterative refinement step |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
757 c | is required. NITREF is used by stat.h |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
758 c %-------------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
759 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
760 nitref = nitref + 1
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
761 rnorm = rnorm1
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
762 iter = iter + 1
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
763 if (iter .le. 1) go to 80
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
764 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
765 c %-------------------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
766 c | Otherwise RESID is numerically in the span of V |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
767 c %-------------------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
768 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
769 do 95 jj = 1, n
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
770 resid(jj) = zero
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
771 95 continue
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
772 rnorm = zero
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
773 end if
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
774 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
775 c %----------------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
776 c | Branch here directly if iterative refinement |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
777 c | wasn't necessary or after at most NITER_REF |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
778 c | steps of iterative refinement. |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
779 c %----------------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
780 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
781 100 continue
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
782 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
783 rstart = .false.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
784 orth2 = .false.
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
785 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
786 call arscnd (t5)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
787 titref = titref + (t5 - t4)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
788 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
789 c %------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
790 c | STEP 6: Update j = j+1; Continue |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
791 c %------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
792 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
793 j = j + 1
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
794 if (j .gt. k+np) then
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
795 call arscnd (t1)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
796 tnaitr = tnaitr + (t1 - t0)
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
797 ido = 99
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
798 do 110 i = max(1,k), k+np-1
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
799 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
800 c %--------------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
801 c | Check for splitting and deflation. |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
802 c | Use a standard test as in the QR algorithm |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
803 c | REFERENCE: LAPACK subroutine slahqr |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
804 c %--------------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
805 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
806 tst1 = abs( h( i, i ) ) + abs( h( i+1, i+1 ) )
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
807 if( tst1.eq.zero )
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
808 & tst1 = slanhs( '1', k+np, h, ldh, workd(n+1) )
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
809 if( abs( h( i+1,i ) ).le.max( ulp*tst1, smlnum ) )
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
810 & h(i+1,i) = zero
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
811 110 continue
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
812 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
813 if (msglvl .gt. 2) then
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
814 call smout (logfil, k+np, k+np, h, ldh, ndigit,
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
815 & '_naitr: Final upper Hessenberg matrix H of order K+NP')
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
816 end if
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
817 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
818 go to 9000
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
819 end if
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
820 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
821 c %--------------------------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
822 c | Loop back to extend the factorization by another step. |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
823 c %--------------------------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
824 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
825 go to 1000
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
826 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
827 c %---------------------------------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
828 c | |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
829 c | E N D O F M A I N I T E R A T I O N L O O P |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
830 c | |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
831 c %---------------------------------------------------------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
832 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
833 9000 continue
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
834 return
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
835 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
836 c %---------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
837 c | End of snaitr |
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
838 c %---------------%
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
839 c
9f5d2ef078e8 import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
John W. Eaton <jwe@octave.org>
parents:
diff changeset
840 end