forked from johannesgerer/jburkardt-f
-
Notifications
You must be signed in to change notification settings - Fork 1
/
eispack.html
506 lines (473 loc) · 16.2 KB
/
eispack.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
<html>
<head>
<title>
EISPACK - Eigenvalue Calculations
</title>
</head>
<body bgcolor="#EEEEEE" link="#CC0000" alink="#FF3300" vlink="#000055">
<h1 align = "center">
EISPACK <br> Eigenvalue Calculations
</h1>
<hr>
<p>
<b>EISPACK</b>
is a FORTRAN90 library which
calculates the eigenvalues and eigenvectors of a matrix.
</p>
<p>
A variety of options are available for special matrix formats.
</p>
<p>
Note that EISPACK "simulates" complex arithmetic. That is,
complex data is stored as pairs of real numbers, and complex
arithmetic is done by carefully manipulating the real numbers.
</p>
<p>
EISPACK is old, and its functionality has been replaced by
the more modern and efficient LAPACK. There are some advantages,
not all sentimental, to keeping a copy of EISPACK around. For
one thing, the implementation of the LAPACK routines makes it
a trying task to try to comprehend the algorithm by reading the
source code. A single user level routine may refer indirectly to
thirty or forty others.
</p>
<p>
EISPACK includes a function to compute the singular value decomposition (SVD)
of a rectangular matrix.
</p>
<p>
The pristine correct original source code for <b>EISPACK</b> is available
through
<a href = "http://www.netlib.org/">the NETLIB web site</a>.
</p>
<h3 align = "center">
Languages:
</h3>
<p>
<b>EISPACK</b> is available in
<a href = "../../c_src/eispack/eispack.html">a C version</a> and
<a href = "../../cpp_src/eispack/eispack.html">a C++ version</a> and
<a href = "../../f77_src/eispack/eispack.html">a FORTRAN77 version</a> and
<a href = "../../f_src/eispack/eispack.html">a FORTRAN90 version</a>.
</p>
<h3 align = "center">
Related Data and Programs:
</h3>
<p>
<a href = "../../f_src/arpack/arpack.html">
ARPACK</a>,
a FORTRAN90 library which
uses Arnoldi iteration to compute
some of the eigenvalues and eigenvectors of a large sparse matrix.
</p>
<p>
<a href = "../../f_src/lapack_examples/lapack_examples.html">
LAPACK_EXAMPLES</a>,
a FORTRAN90 program which
demonstrates the use of the LAPACK linear algebra library.
</p>
<p>
<a href = "../../f_src/slatec/slatec.html">
SLATEC</a>,
a FORTRAN90 library which
includes <b>EISPACK</b>.
</p>
<p>
<a href = "../../f_src/test_eigen/test_eigen.html">
TEST_EIGEN</a>,
a FORTRAN90 library which
defines various eigenvalue test cases.
</p>
<p>
<a href = "../../f_src/test_mat/test_mat.html">
TEST_MAT</a>,
a FORTRAN90 library which
defines test matrices, some of
which have known eigenvalues and eigenvectors.
</p>
<h3 align = "center">
Reference:
</h3>
<p>
<ol>
<li>
Hilary Bowdler, Roger Martin, Christian Reinsch, James Wilkinson,<br>
The QR and QL algorithms for Symmetric Matrices: TQL1 and TQL2,<br>
Numerische Mathematik,<br>
Volume 11, Number 4, May 1968, pages 293-306.
</li>
<li>
Gene Golub, Christian Reinsch,<br>
Singular Value Decomposition and Least Squares Solutions,<br>
Numerische Mathematik,<br>
Volume 14, Number 5, April 1970, pages 403-420.
</li>
<li>
Roger Martin, G Peters, James Wilkinson,<br>
HQR, The QR Algorithm for Real Hessenberg Matrices,<br>
Numerische Mathematik,<br>
Volume 14, Number 3, February 1970, pages 219-231.
</li>
<li>
Roger Martin, Christian Reinsch, James Wilkinson,<br>
Householder's Tridiagonalization of a Symmetric Matrix:
TRED1, TRED2 and TRED3,<br>
Numerische Mathematik,<br>
Volume 11, Number 3, March 1968, pages 181-195.
</li>
<li>
Roger Martin, James Wilkinson,<br>
Similarity Reduction of a General Matrix to Hessenberg Form:
ELMHES,<br>
Numerische Mathematik,<br>
Volume 12, Number 5, December 1968, pages 349-368.
</li>
<li>
Beresford Parlett, Christian Reinsch,<br>
Balancing a Matrix for Calculation of Eigenvalues and
Eigenvectors,<br>
Numerische Mathematik,<br>
Volume 13, Number 4, August 1969, pages 293-304.
</li>
<li>
Christian Reinsch,<br>
Algorithm 464:
Eigenvalues of a real symmetric tridiagonal matrix,<br>
Communications of the ACM,<br>
Volume 16, Number 11, November 1973, page 689.
</li>
<li>
Brian Smith, James Boyle, Jack Dongarra, Burton Garbow,
Yasuhiko Ikebe, Virginia Klema, Cleve Moler,<br>
Matrix Eigensystem Routines, EISPACK Guide,<br>
Lecture Notes in Computer Science, Volume 6,<br>
Springer, 1976,<br>
ISBN13: 978-3540075462,<br>
LC: QA193.M37.
</li>
<li>
James Wilkinson, Christian Reinsch,<br>
Handbook for Automatic Computation,<br>
Volume II, Linear Algebra, Part 2,<br>
Springer, 1971,<br>
ISBN: 0387054146,<br>
LC: QA251.W67.
</li>
</ol>
</p>
<h3 align = "center">
Source Code:
</h3>
<p>
<ul>
<li>
<a href = "eispack.f90">eispack.f90</a>, the source code;
</li>
<li>
<a href = "eispack.sh">eispack.sh</a>,
commands to compile the souce code;
</li>
</ul>
</p>
<h3 align = "center">
Examples and Tests:
</h3>
<p>
<b>EISPACK_PRB1</b> is a test program that demonstrates the use of
a number of EISPACK routines.
<ul>
<li>
<a href = "eispack_prb1.f90">eispack_prb1.f90</a>, the calling program;
</li>
<li>
<a href = "eispack_prb1.sh">eispack_prb1.sh</a>,
commands to compile, link and run the calling program;
</li>
<li>
<a href = "eispack_prb1_output.txt">eispack_prb1_output.txt</a>,
the output file.
</li>
</ul>
</p>
<p>
<b>EISPACK_PRB2</b> is a test program that demonstrates the use of
the EISPACK driver RS on a real symmetric matrix. Random problems
of size 4, 16, 64, 256 and 1024 are generated and solved, and
the setup and solution times are reported. The
<a href = "../../f_src/test_eigen/test_eigen.html">test_eigen</a> package
is called to generate the random test matrices.
<ul>
<li>
<a href = "eispack_prb2.f90">eispack_prb2.f90</a>, the calling program;
</li>
<li>
<a href = "eispack_prb2.sh">eispack_prb2.sh</a>,
commands to compile, link and run the calling program;
</li>
<li>
<a href = "eispack_prb2_output.txt">eispack_prb2_output.txt</a>,
the output file.
</li>
</ul>
</p>
<h3 align = "center">
List of Routines:
</h3>
<p>
<ul>
<li>
<b>BAKVEC</b> determines eigenvectors by reversing the FIGI transformation.
</li>
<li>
<b>BALANC</b> balances a real matrix before eigenvalue calculations.
</li>
<li>
<b>BALBAK</b> determines eigenvectors by undoing the BALANC transformation.
</li>
<li>
<b>BANDR</b> reduces a symmetric band matrix to symmetric tridiagonal form.
</li>
<li>
<b>BANDV</b> finds eigenvectors from eigenvalues, for a real symmetric band matrix.
</li>
<li>
<b>BISECT</b> computes some eigenvalues of a real symmetric tridiagonal matrix.
</li>
<li>
<b>BQR</b> finds the smallest eigenvalue of a real symmetric band matrix.
</li>
<li>
<b>CBABK2</b> finds eigenvectors by undoing the CBAL transformation.
</li>
<li>
<b>CBAL</b> balances a complex matrix before eigenvalue calculations.
</li>
<li>
<b>CDIV</b> emulates complex division, using real arithmetic.
</li>
<li>
<b>CG</b> gets eigenvalues and eigenvectors of a complex general matrix.
</li>
<li>
<b>CH</b> gets eigenvalues and eigenvectors of a complex Hermitian matrix.
</li>
<li>
<b>CINVIT</b> gets eigenvectors from eigenvalues, for a complex Hessenberg matrix.
</li>
<li>
<b>COMBAK</b> determines eigenvectors by undoing the COMHES transformation.
</li>
<li>
<b>COMHES</b> transforms a complex general matrix to upper Hessenberg form.
</li>
<li>
<b>COMLR</b> gets all eigenvalues of a complex upper Hessenberg matrix.
</li>
<li>
<b>COMLR2</b> gets eigenvalues/vectors of a complex upper Hessenberg matrix.
</li>
<li>
<b>COMQR</b> gets eigenvalues of a complex upper Hessenberg matrix.
</li>
<li>
<b>COMQR2</b> gets eigenvalues/vectors of a complex upper Hessenberg matrix.
</li>
<li>
<b>CORTB</b> determines eigenvectors by undoing the CORTH transformation.
</li>
<li>
<b>CORTH</b> transforms a complex general matrix to upper Hessenberg form.
</li>
<li>
<b>CSROOT</b> computes the complex square root of a complex quantity.
</li>
<li>
<b>ELMBAK</b> determines eigenvectors by undoing the ELMHES transformation.
</li>
<li>
<b>ELMHES</b> transforms a real general matrix to upper Hessenberg form.
</li>
<li>
<b>ELTRAN</b> accumulates similarity transformations used by ELMHES.
</li>
<li>
<b>FIGI</b> transforms a real nonsymmetric tridiagonal matrix to symmetric form.
</li>
<li>
<b>FIGI2</b> transforms a real nonsymmetric tridiagonal matrix to symmetric form.
</li>
<li>
<b>HQR</b> computes all eigenvalues of a real upper Hessenberg matrix.
</li>
<li>
<b>HQR2</b> computes eigenvalues and eigenvectors of a real upper Hessenberg matrix.
</li>
<li>
<b>HTRIB3</b> determines eigenvectors by undoing the HTRID3 transformation.
</li>
<li>
<b>HTRIBK</b> determines eigenvectors by undoing the HTRIDI transformation.
</li>
<li>
<b>HTRID3</b> tridiagonalizes a complex hermitian packed matrix.
</li>
<li>
<b>HTRIDI</b> tridiagonalizes a complex hermitian matrix.
</li>
<li>
<b>IMTQL1</b> computes all eigenvalues of a symmetric tridiagonal matrix.
</li>
<li>
<b>IMTQL2</b> computes all eigenvalues/vectors of a symmetric tridiagonal matrix.
</li>
<li>
<b>IMTQLV</b> computes all eigenvalues of a real symmetric tridiagonal matrix.
</li>
<li>
<b>INVIT</b> computes eigenvectors given eigenvalues, for a real upper Hessenberg matrix.
</li>
<li>
<b>MINFIT</b> solves the least squares problem, for a real overdetermined linear system.
</li>
<li>
<b>ORTBAK</b> determines eigenvectors by undoing the ORTHES transformation.
</li>
<li>
<b>ORTHES</b> transforms a real general matrix to upper Hessenberg form.
</li>
<li>
<b>ORTRAN</b> accumulates similarity transformations generated by ORTHES.
</li>
<li>
<b>PYTHAG</b> computes SQRT ( A * A + B * B ) carefully.
</li>
<li>
<b>QZHES</b> carries out transformations for a generalized eigenvalue problem.
</li>
<li>
<b>QZIT</b> carries out iterations to solve a generalized eigenvalue problem.
</li>
<li>
<b>QZVAL</b> computes eigenvalues for a generalized eigenvalue problem.
</li>
<li>
<b>QZVEC</b> computes eigenvectors for a generalized eigenvalue problem.
</li>
<li>
<b>R8_SWAP</b> swaps two R8's.
</li>
<li>
<b>R8MAT_PRINT</b> prints an R8MAT.
</li>
<li>
<b>R8MAT_PRINT_SOME</b> prints some of an R8MAT.
</li>
<li>
<b>R8VEC_PRINT</b> prints an R8VEC.
</li>
<li>
<b>R8VEC2_PRINT</b> prints an R8VEC2.
</li>
<li>
<b>RATQR</b> computes selected eigenvalues of a real symmetric tridiagonal matrix.
</li>
<li>
<b>REBAK</b> determines eigenvectors by undoing the REDUC transformation.
</li>
<li>
<b>REBAKB</b> determines eigenvectors by undoing the REDUC2 transformation.
</li>
<li>
<b>REDUC</b> reduces the eigenvalue problem A*x=lambda*B*x to A*x=lambda*x.
</li>
<li>
<b>REDUC2</b> reduces the eigenvalue problem A*B*x=lamdba*x to A*x=lambda*x.
</li>
<li>
<b>RG</b> computes eigenvalues and eigenvectors of a real general matrix.
</li>
<li>
<b>RGG</b> computes eigenvalues/vectors for the generalized problem A*x = lambda*B*x.
</li>
<li>
<b>RS</b> computes eigenvalues and eigenvectors of real symmetric matrix.
</li>
<li>
<b>RSB</b> computes eigenvalues and eigenvectors of a real symmetric band matrix.
</li>
<li>
<b>RSG</b> computes eigenvalues/vectors, A*x=lambda*B*x, A symmetric, B pos-def.
</li>
<li>
<b>RSGAB</b> computes eigenvalues/vectors, A*B*x=lambda*x, A symmetric, B pos-def.
</li>
<li>
<b>RSGBA</b> computes eigenvalues/vectors, B*A*x=lambda*x, A symmetric, B pos-def.
</li>
<li>
<b>RSM</b> computes eigenvalues, some eigenvectors, real symmetric matrix.
</li>
<li>
<b>RSP</b> computes eigenvalues and eigenvectors of real symmetric packed matrix.
</li>
<li>
<b>RSPP</b> computes some eigenvalues/vectors, real symmetric packed matrix.
</li>
<li>
<b>RST</b> computes eigenvalues/vectors, real symmetric tridiagonal matrix.
</li>
<li>
<b>RT</b> computes eigenvalues/vectors, real sign-symmetric tridiagonal matrix.
</li>
<li>
<b>SVD</b> computes the singular value decomposition for a real matrix.
</li>
<li>
<b>TIMESTAMP</b> prints the current YMDHMS date as a time stamp.
</li>
<li>
<b>TINVIT</b> computes eigenvectors from eigenvalues, real tridiagonal symmetric.
</li>
<li>
<b>TQL1</b> computes all eigenvalues of a real symmetric tridiagonal matrix.
</li>
<li>
<b>TQL2</b> computes all eigenvalues/vectors, real symmetric tridiagonal matrix.
</li>
<li>
<b>TQLRAT</b> computes all eigenvalues of a real symmetric tridiagonal matrix.
</li>
<li>
<b>TRBAK1</b> determines eigenvectors by undoing the TRED1 transformation.
</li>
<li>
<b>TRBAK3</b> determines eigenvectors by undoing the TRED3 transformation.
</li>
<li>
<b>TRED1</b> transforms a real symmetric matrix to symmetric tridiagonal form.
</li>
<li>
<b>TRED2</b> transforms a real symmetric matrix to symmetric tridiagonal form.
</li>
<li>
<b>TRED3</b> transforms a real symmetric packed matrix to symmetric tridiagonal form.
</li>
<li>
<b>TRIDIB</b> computes some eigenvalues of a real symmetric tridiagonal matrix.
</li>
<li>
<b>TSTURM</b> computes some eigenvalues/vectors, real symmetric tridiagonal matrix.
</li>
</ul>
</p>
<p>
You can go up one level to <a href = "../f_src.html">
the FORTRAN90 source codes</a>.
</p>
<hr>
<i>
Last revised on 01 January 2011.
</i>
<!-- John Burkardt -->
</body>
</html>