Part 1. Guide Information
Looking for a Subroutine?
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
xvii
About This Book . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . .
xix
How to Use This Book . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .
. xix
How to Find a Subroutine Description . . . . . . . . . . . . . . . .
. . . . . . .
. xx
Where to Find Related Publications . . . . . . . . . . . . . . . . .
. . . . . . .
. xxi
How to Look Up a Bibliography Reference . . . . . . . . . . . . .
. . . . . . .
. xxi
Special Terms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .
. xxi
Short and Long Precision
. . . . . . . . . . . . . . . . . . . . .
. . . . . . .
. xxi
Subroutines and Subprograms
. . . . . . . . . . . . . . . . . .
. . . . . . .
. xxi
How to Interpret the Subroutine Names with a Prefix Underscore
. . . . . .
. xxii
Abbreviated Names
. . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .
. xxii
Fonts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .
. xxii
Special Notations and Conventions . . . . . . . . . . . . . . . . .
. . . . . . .
xxiii
Scalar Data
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .
xxiii
Vectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .
xxiii
Matrices
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .
xxiii
Sequences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .
xxiv
Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .
. xxv
Special Characters, Symbols, Expressions, and Abbreviations
.
. . . . . . .
xxvi
How to Interpret the Subroutine Descriptions . . . . . . . . . . . .
. . . . . . .
xxviii
Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .
xxviii
Syntax
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .
xxviii
On Entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .
xxviii
On Return . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .
xxix
Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .
xxix
Function
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .
xxix
Special Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .
xxix
Error Conditions . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .
xxix
Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .
xxix
What's New for ESSL for AIX . . . . . . .
. . . . . . . . . . . . . . . . . . . .
xxxi
What's New for ESSL Version 3 Release 2
. . . . . . . . . . . . . . . . . . . .
xxxi
Changes for ESSL Version 3 Release 1.2
. . . . . . . . . . . . . . . . . . . .
xxxi
Changes for ESSL Version 3 Release 1.1
. . . . . . . . . . . . . . . . . . . .
xxxii
Changes for ESSL Version 3 . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
xxxii
Future Migration
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
xxxiii
In Brief—What's Provided in ESSL for AIX
. . . . . . . . . . . . . . . . . .
xxxv
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
Chapter 1. Introduction and Requirements
. . . . . . . . . . . . . . . . . . . .
3
Overview of ESSL . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
3
Performance and Functional Capability
.
. . . . . . . . . . . . . . . . . . . . .
3
Usability
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
4
The Variety of Mathematical Functions . .
. . . . . . . . . . . . . . . . . . . . .
4
ESSL—Processing Capabilities . . . . . .
. . . . . . . . . . . . . . . . . . . . .
5
Accuracy of the Computations . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
6
2000
iii
High Performance of ESSL
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . .
6
The Fortran Language Interface to the Subroutines . . . . . . .
. . . . . . . .
7
Software and Hardware Products That Can Be Used with ESSL .
. . . . . . . .
7
For ESSL—Hardware . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . .
7
ESSL—Operating Systems
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . .
7
ESSL—Software Products . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . .
8
Installation and Customization Products . . . . . . . . . . . . . .
. . . . . . . .
8
Software Products for Displaying ESSL Online Information . . .
. . . . . . . .
8
ESSL Internet Resources . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . .
8
Obtaining Documentation
. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . .
9
Accessing ESSL's Product Home Pages . . . . . . . . . . . . . .
. . . . . . . .
9
Getting on the ESSL Mailing List . . . . . . . . . . . . . . . . . . . .
. . . . . . . .
9
List of ESSL Subroutines . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .
10
Linear Algebra Subprograms
. . . . . . . . . . . . . . . . . . . .
. . . . . . .
10
Matrix Operations . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .
13
Linear Algebraic Equations . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .
14
Eigensystem Analysis . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .
18
Fourier Transforms, Convolutions and Correlations, and Related
Computations . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .
18
Sorting and Searching . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .
20
Interpolation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .
21
Numerical Quadrature
. . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .
21
Random Number Generation . . . . . . . . . . . . . . . . . . . .
. . . . . . .
21
Utilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .
22
Chapter 2. Planning Your Program . . . . . . . . . . . . . . . . . . . . . . . .
Selecting an ESSL Subroutine . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Which ESSL Library Do You Want to Use? . . . . . . . . . . . . . . . . . . .
What Type of Data Are You Processing in Your Program? . . . . . . . . . .
How Is Your Data Structured? And What Storage Technique Are You
Using? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
What about Performance and Accuracy?
. . . . . . . . . . . . . . . . . . . .
Avoiding Conflicts with Internal ESSL Routine Names That are Exported . . .
Setting Up Your Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
How Do You Set Up Your Scalar Data? . . . . . . . . . . . . . . . . . . . . .
How Do You Set Up Your Arrays? . . . . . . . . . . . . . . . . . . . . . . . .
How Should Your Array Data Be Aligned? . . . . . . . . . . . . . . . . . . . .
What Storage Mode Should You Use for Your Data? . . . . . . . . . . . . .
How Do You Convert from One Storage Mode to Another? . . . . . . . . . .
Setting Up Your ESSL Calling Sequences . . . . . . . . . . . . . . . . . . . . .
What Is an Input-Output Argument? . . . . . . . . . . . . . . . . . . . . . . .
What Are the General Rules to Follow when Specifying Data for the
Arguments? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
What Happens When a Value of 0 Is Specified for N? . . . . . . . . . . . . .
How Do You Specify the Beginning of the Data Structure in the ESSL Calling
Sequence? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Using Auxiliary Storage in ESSL . . . . . . . . . . . . . . . . . . . . . . . . . . .
Dynamic Allocation of Auxiliary Storage . . . . . . . . . . . . . . . . . . . . .
Setting Up Auxiliary Storage When Dynamic Allocation Is Not Used . . . . .
Who Do You Want to Calculate the Size? You or ESSL?
. . . . . . . . . .
How Do You Calculate the Size Using the Formulas? . . . . . . . . . . . . .
How Do You Get ESSL to Calculate the Size Using ESSL Error Handling?
Providing a Correct Transform Length to ESSL . . . . . . . . . . . . . . . . . .
What ESSL Subroutines Require Transform Lengths? . . . . . . . . . . . . .
23
23
23
25
26
26
26
26
26
27
27
27
28
28
28
28
29
29
30
31
31
31
31
32
36
36
iv
Engineering and Scientific Subroutine Library Version 3 Guide and Reference
Who Do You Want to Calculate the Length? You or ESSL? . . . . . . . . .
37
How Do You Calculate the Length Using the Table or Formula? . . . . . . .
37
How Do You Get ESSL to Calculate the Length Using ESSL Error Handling?
37
Getting the Best Accuracy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
42
What Precisions Do ESSL Subroutines Operate On? . . . . . . . . . . . . .
42
How does the Nature of the ESSL Computation Affect Accuracy? . . . . . .
42
What Data Type Standards Are Used by ESSL, and What Exceptions Should
You Know About? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
43
How is Underflow Handled? . . . . . . . . . . . . . . . . . . . . . . . . . . . .
43
Where Can You Find More Information on Accuracy? . . . . . . . . . . . . .
43
Getting the Best Performance
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
43
What General Coding Techniques Can You Use to Improve Performance?
43
Where Can You Find More Information on Performance? . . . . . . . . . . .
44
Dealing with Errors when Using ESSL
. . . . . . . . . . . . . . . . . . . . . . .
45
What Can You Do about Program Exceptions? . . . . . . . . . . . . . . . . .
45
What Can You Do about ESSL Input-Argument Errors? . . . . . . . . . . . .
45
What Can You Do about ESSL Computational Errors? . . . . . . . . . . . .
46
What Can You Do about ESSL Resource Errors? . . . . . . . . . . . . . . .
48
What Can You Do about ESSL Attention Messages? . . . . . . . . . . . . .
49
How Do You Control Error Handling by Setting Values in the ESSL Error
Option Table? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
49
How does Error Handling Work in a Threaded Environment? . . . . . . . . .
51
Where Can You Find More Information on Errors? . . . . . . . . . . . . . . .
52
Chapter 3. Setting Up Your Data Structures . . . . . . . . . . . . . . .
. . .
53
Concepts
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . .
53
Vectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . .
53
Transpose of a Vector . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . .
54
Conjugate Transpose of a Vector . . . . . . . . . . . . . . . . . . . . . .
. . .
54
In Storage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . .
55
How Stride Is Used for Vectors . . . . . . . . . . . . . . . . . . . . . . .
. . .
56
Sparse Vector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . .
58
Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . .
60
Transpose of a Matrix
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . .
60
Conjugate Transpose of a Matrix . . . . . . . . . . . . . . . . . . . . . .
. . .
60
In Storage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . .
61
How Leading Dimension Is Used for Matrices . . . . . . . . . . . . . . .
. . .
61
Symmetric Matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . .
63
Positive Definite or Negative Definite Symmetric Matrix . . . . . . . . .
. . .
67
|
Symmetric Indefinite Matrix
. . . . . . . . . . . . . . . . . . . . . . . . .
. . .
68
Complex Hermitian Matrix . . . . . . . . . . . . . . . . . . . . . . . . . .
. . .
68
Positive Definite or Negative Definite Complex Hermitian Matrix . . . .
. . .
69
Positive Definite or Negative Definite Symmetric Toeplitz Matrix . . . .
. . .
69
Positive Definite or Negative Definite Complex Hermitian Toeplitz Matrix
. .
70
Triangular Matrix
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . .
72
General Band Matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . .
75
Symmetric Band Matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . .
80
Positive Definite Symmetric Band Matrix . . . . . . . . . . . . . . . . . .
. . .
83
Complex Hermitian Band Matrix . . . . . . . . . . . . . . . . . . . . . . .
. . .
83
Triangular Band Matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . .
84
General Tridiagonal Matrix . . . . . . . . . . . . . . . . . . . . . . . . . .
. . .
88
Symmetric Tridiagonal Matrix . . . . . . . . . . . . . . . . . . . . . . . .
. . .
89
Positive Definite Symmetric Tridiagonal Matrix . . . . . . . . . . . . . .
. . .
90
Sparse Matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . .
90
Contents
v
Sequences
. . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . .
Real and Complex Elements in Storage . . . . . . . .
. . . . . . . . . . . .
One-Dimensional Sequences . . . . . . . . . . . . . .
. . . . . . . . . . . .
Two-Dimensional Sequences . . . . . . . . . . . . . .
. . . . . . . . . . . .
Three-Dimensional Sequences . . . . . . . . . . . . .
. . . . . . . . . . . .
How Stride Is Used for Three-Dimensional Sequences
. . . . . . . . . . .
103
103
103
103
104
106
Chapter 4. Coding Your Program . . . . . . . . . . . . . . . . . . . . . . . .
Fortran Programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Calling ESSL Subroutines and Functions in Fortran . . . . . . . . . . . . .
Setting Up a User-Supplied Subroutine for ESSL in Fortran
. . . . . . . .
Setting Up Scalar Data in Fortran . . . . . . . . . . . . . . . . . . . . . . . .
Setting Up Arrays in Fortran . . . . . . . . . . . . . . . . . . . . . . . . . . .
Creating Multiple Threads and Calling ESSL from Your Fortran Program .
Handling Errors in Your Fortran Program . . . . . . . . . . . . . . . . . . .
Example of Handling Errors in a Multithreaded Application Program . . . .
C Programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Calling ESSL Subroutines and Functions in C
. . . . . . . . . . . . . . . .
Passing Arguments in C . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Setting Up a User-Supplied Subroutine for ESSL in C . . . . . . . . . . . .
Setting Up Scalar Data in C . . . . . . . . . . . . . . . . . . . . . . . . . . .
Setting Up Complex and Logical Data Types in C . . . . . . . . . . . . . .
Setting Up Arrays in C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Creating Multiple Threads and Calling ESSL from Your C Program . . . .
Handling Errors in Your C Program . . . . . . . . . . . . . . . . . . . . . . .
C++ Programs
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Calling ESSL Subroutines and Functions in C++ . . . . . . . . . . . . . . .
Passing Arguments in C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Setting Up a User-Supplied Subroutine for ESSL in C++ . . . . . . . . . .
Setting Up Scalar Data in C++
. . . . . . . . . . . . . . . . . . . . . . . . .
Setting Up Short-Precision Complex Data Types and Logical Data Types in
C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Setting Up Arrays in C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Creating Multiple Threads and Calling ESSL from Your C++ Program
. .
Handling Errors in Your C++ Program . . . . . . . . . . . . . . . . . . . . .
PL/I Programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
109
109
109
109
110
110
115
116
125
127
127
128
129
129
130
131
132
134
143
143
144
145
145
146
147
148
150
159
Chapter 5. Processing Your Program . . . . . . . . . . . . . . . .
. . . . .
Compiling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . .
General Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . .
Using Your Own Complex Data Definitions in C Programs . . . .
. . . . .
Using Your Own Short Complex Data Definitions in C++ Programs
. . . .
Compiling and Linking . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . .
64-bit environment
. . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . .
Fortran Programs . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . .
C Programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . .
C++ Programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . .
161
161
161
161
162
162
162
162
163
164
|
Chapter 6. Migrating Your Programs . . . . . . . . . . . . .
. . . . . . . . .
Migrating ESSL Version 3 Programs to Version 3 Release 2
. . . . . . . . .
ESSL Subroutines . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . .
Migrating ESSL Version 3 Programs to Version 3 Release 1.2
. . . . . . . .
ESSL Subroutines . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . .
Migrating ESSL Version 3 Programs to Version 3 Release 1.1
. . . . . . . .
165
165
165
165
166
166
vi
Engineering and Scientific Subroutine Library Version 3 Guide and Reference
ESSL Subroutines . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
Migrating ESSL Version 2 Programs to Version 3
. . . . . . . . . . . . . . . .
ESSL Subroutines . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
ESSL Messages . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
Planning for Future Migration . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
Migrating between RS/6000 Processors . . . . . .
. . . . . . . . . . . . . . . .
Auxiliary Storage
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
Bitwise-Identical Results . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
Migrating from Other Libraries to ESSL . . . . . .
. . . . . . . . . . . . . . . .
Migrating from ESSL/370 . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
Migrating from Another IBM Subroutine Library
. . . . . . . . . . . . . . . .
Migrating from LAPACK . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
Migrating from a Non-IBM Subroutine Library .
. . . . . . . . . . . . . . . .
166
166
166
167
167
167
168
168
168
168
168
168
169
Chapter 7. Handling Problems
. . . . . . . . . . . . . .
. . . . . . . . . . .
Where to Find More Information About Errors . . . . . . .
. . . . . . . . . . .
Getting Help from IBM Support . . . . . . . . . . . . . . . .
. . . . . . . . . . .
National Language Support . . . . . . . . . . . . . . . . . .
. . . . . . . . . . .
Dealing with Errors . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . .
Program Exceptions
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . .
ESSL Input-Argument Error Messages . . . . . . . . . .
. . . . . . . . . . .
ESSL Computational Error Messages . . . . . . . . . .
. . . . . . . . . . .
ESSL Resource Error Messages . . . . . . . . . . . . .
. . . . . . . . . . .
ESSL Informational and Attention Messages . . . . . .
. . . . . . . . . . .
Miscellaneous Error Messages . . . . . . . . . . . . . .
. . . . . . . . . . .
Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . .
Message Conventions . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . .
Input-Argument Error Messages(2001-2099) . . . . . .
. . . . . . . . . . .
Computational Error Messages(2100-2199) . . . . . . .
. . . . . . . . . . .
Input-Argument Error Messages(2200-2299) . . . . . .
. . . . . . . . . . .
Resource Error Messages(2400-2499) . . . . . . . . . .
. . . . . . . . . . .
Informational and Attention Error Messages(2600-2699)
. . . . . . . . . .
Miscellaneous Error Messages(2700-2799) . . . . . . .
. . . . . . . . . . .
171
171
171
172
172
173
173
174
174
175
176
176
176
177
185
188
188
188
189
Part 2. Reference Information
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
191
Chapter 8. Linear Algebra Subprograms . . . . . . . . . . . . . . . . . . .
Overview of the Linear Algebra Subprograms . . . . . . . . . . . . . . . . . .
Vector-Scalar Linear Algebra Subprograms . . . . . . . . . . . . . . . . . .
Sparse Vector-Scalar Linear Algebra Subprograms . . . . . . . . . . . . .
Matrix-Vector Linear Algebra Subprograms . . . . . . . . . . . . . . . . . .
Sparse Matrix-Vector Linear Algebra Subprograms
. . . . . . . . . . . . .
Use Considerations
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Performance and Accuracy Considerations . . . . . . . . . . . . . . . . . . . .
Vector-Scalar Subprograms . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ISAMAX, IDAMAX, ICAMAX, and IZAMAX—Position of the First or Last
Occurrence of the Vector Element Having the Largest Magnitude . . .
ISAMIN and IDAMIN—Position of the First or Last Occurrence of the
Vector Element Having Minimum Absolute Value . . . . . . . . . . . . .
ISMAX and IDMAX—Position of the First or Last Occurrence of the
Vector Element Having the Maximum Value . . . . . . . . . . . . . . . . .
ISMIN and IDMIN—Position of the First or Last Occurrence of the Vector
Element Having Minimum Value . . . . . . . . . . . . . . . . . . . . . . . .
193
193
193
194
195
196
196
197
198
199
202
205
208
Contents
vii
SASUM, DASUM, SCASUM, and DZASUM—Sum of the Magnitudes of
the Elements in a Vector . . . . . . . . . . . . . . . . . . . . . . . . . . . .
211
SAXPY, DAXPY, CAXPY, and ZAXPY—Multiply a Vector X by a Scalar,
Add to a Vector Y, and Store in the Vector Y . . . . . . . . . . . . . . . .
214
SCOPY, DCOPY, CCOPY, and ZCOPY—Copy a Vector . . . . . . . . . .
217
SDOT, DDOT, CDOTU, ZDOTU, CDOTC, and ZDOTC—Dot Product of
Two Vectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
220
SNAXPY and DNAXPY—Compute SAXPY or DAXPY N Times . . . . . .
224
SNDOT and DNDOT—Compute Special Dot Products N Times . . . . . .
229
SNRM2, DNRM2, SCNRM2, and DZNRM2—Euclidean Length of a Vector
with Scaling of Input to Avoid Destructive Underflow and Overflow . . .
234
SNORM2, DNORM2, CNORM2, and ZNORM2—Euclidean Length of a
Vector with No Scaling of Input . . . . . . . . . . . . . . . . . . . . . . . .
237
SROTG, DROTG, CROTG, and ZROTG—Construct a Givens Plane
Rotation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
240
SROT, DROT, CROT, ZROT, CSROT, and ZDROT—Apply a Plane
Rotation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
247
SSCAL, DSCAL, CSCAL, ZSCAL, CSSCAL, and ZDSCAL—Multiply a
Vector X by a Scalar and Store in the Vector X . . . . . . . . . . . . . .
251
SSWAP, DSWAP, CSWAP, and ZSWAP—Interchange the Elements of
Two Vectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
254
SVEA, DVEA, CVEA, and ZVEA—Add a Vector X to a Vector Y and
Store in a Vector Z
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
257
SVES, DVES, CVES, and ZVES—Subtract a Vector Y from a Vector X
and Store in a Vector Z . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
261
SVEM, DVEM, CVEM, and ZVEM—Multiply a Vector X by a Vector Y and
Store in a Vector Z
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
265
SYAX, DYAX, CYAX, ZYAX, CSYAX, and ZDYAX—Multiply a Vector X
by a Scalar and Store in a Vector Y
. . . . . . . . . . . . . . . . . . . . .
269
SZAXPY, DZAXPY, CZAXPY, and ZZAXPY—Multiply a Vector X by a
Scalar, Add to a Vector Y, and Store in a Vector Z . . . . . . . . . . . . .
272
Sparse Vector-Scalar Subprograms . . . . . . . . . . . . . . . . . . . . . . . .
276
SSCTR, DSCTR, CSCTR, ZSCTR—Scatter the Elements of a Sparse
Vector X in Compressed-Vector Storage Mode into Specified Elements
of a Sparse Vector Y in Full-Vector Storage Mode . . . . . . . . . . . .
277
SGTHR, DGTHR, CGTHR, and ZGTHR—Gather Specified Elements of a
Sparse Vector Y in Full-Vector Storage Mode into a Sparse Vector X in
Compressed-Vector Storage Mode . . . . . . . . . . . . . . . . . . . . . .
280
SGTHRZ, DGTHRZ, CGTHRZ, and ZGTHRZ—Gather Specified Elements
of a Sparse Vector Y in Full-Vector Mode into a Sparse Vector X in
Compressed-Vector Mode, and Zero the Same Specified Elements of Y
283
SAXPYI, DAXPYI, CAXPYI, and ZAXPYI—Multiply a Sparse Vector X in
Compressed-Vector Storage Mode by a Scalar, Add to a Sparse Vector
Y in Full-Vector Storage Mode, and Store in the Vector Y . . . . . . . .
286
SDOTI, DDOTI, CDOTUI, ZDOTUI, CDOTCI, and ZDOTCI—Dot Product
of a Sparse Vector X in Compressed-Vector Storage Mode and a
Sparse Vector Y in Full-Vector Storage Mode . . . . . . . . . . . . . . . .
289
Matrix-Vector Subprograms . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
293
SGEMV, DGEMV, CGEMV, ZGEMV, SGEMX, DGEMX, SGEMTX, and
DGEMTX—Matrix-Vector Product for a General Matrix, Its Transpose, or
Its Conjugate Transpose . . . . . . . . . . . . . . . . . . . . . . . . . . . .
294
SGER, DGER, CGERU, ZGERU, CGERC, and ZGERC—Rank-One
Update of a General Matrix
. . . . . . . . . . . . . . . . . . . . . . . . . .
305
viii
Engineering and Scientific Subroutine Library Version 3 Guide and Reference
SSPMV, DSPMV, CHPMV, ZHPMV, SSYMV, DSYMV, CHEMV, ZHEMV,
SSLMX, and DSLMX—Matrix-Vector Product for a Real Symmetric or
Complex Hermitian Matrix . . . . . . . . . . . . . . . . . . . . . . . . . . .
SSPR, DSPR, CHPR, ZHPR, SSYR, DSYR, CHER, ZHER, SSLR1, and
DSLR1 —Rank-One Update of a Real Symmetric or Complex Hermitian
Matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SSPR2, DSPR2, CHPR2, ZHPR2, SSYR2, DSYR2, CHER2, ZHER2,
SSLR2, and DSLR2—Rank-Two Update of a Real Symmetric or
Complex Hermitian Matrix . . . . . . . . . . . . . . . . . . . . . . . . . . .
SGBMV, DGBMV, CGBMV, and ZGBMV—Matrix-Vector Product for a
General Band Matrix, Its Transpose, or Its Conjugate Transpose
. . .
SSBMV, DSBMV, CHBMV, and ZHBMV—Matrix-Vector Product for a
Real Symmetric or Complex Hermitian Band Matrix . . . . . . . . . . . .
STRMV, DTRMV, CTRMV, ZTRMV, STPMV, DTPMV, CTPMV, and
ZTPMV—Matrix-Vector Product for a Triangular Matrix, Its Transpose, or
Its Conjugate Transpose . . . . . . . . . . . . . . . . . . . . . . . . . . . .
STBMV, DTBMV, CTBMV, and ZTBMV—Matrix-Vector Product for a
Triangular Band Matrix, Its Transpose, or Its Conjugate Transpose . .
Sparse Matrix-Vector Subprograms . . . . . . . . . . . . . . . . . . . . . . . .
DSMMX—Matrix-Vector Product for a Sparse Matrix in
Compressed-Matrix Storage Mode . . . . . . . . . . . . . . . . . . . . . .
DSMTM—Transpose a Sparse Matrix in Compressed-Matrix Storage
Mode
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
DSDMX—Matrix-Vector Product for a Sparse Matrix or Its Transpose in
Compressed-Diagonal Storage Mode . . . . . . . . . . . . . . . . . . . . .
313
321
329
338
345
350
356
362
363
366
370
Chapter 9. Matrix Operations . . . . . . . . . . . . . . . . . . . . . . . . . .
Overview of the Matrix Operation Subroutines
. . . . . . . . . . . . . . . . .
Use Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Specifying Normal, Transposed, or Conjugate Transposed Input Matrices
Transposing or Conjugate Transposing: . . . . . . . . . . . . . . . . . . . .
Performance and Accuracy Considerations . . . . . . . . . . . . . . . . . . . .
In General . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
For Large Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
For Combined Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Matrix Operation Subroutines . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SGEADD, DGEADD, CGEADD, and ZGEADD—Matrix Addition for
General Matrices or Their Transposes . . . . . . . . . . . . . . . . . . . .
SGESUB, DGESUB, CGESUB, and ZGESUB—Matrix Subtraction for
General Matrices or Their Transposes . . . . . . . . . . . . . . . . . . . .
SGEMUL, DGEMUL, CGEMUL, and ZGEMUL—Matrix Multiplication for
General Matrices, Their Transposes, or Conjugate Transposes . . . . .
SGEMMS, DGEMMS, CGEMMS, and ZGEMMS—Matrix Multiplication for
General Matrices, Their Transposes, or Conjugate Transposes Using
Winograd's Variation of Strassen's Algorithm . . . . . . . . . . . . . . .
SGEMM, DGEMM, CGEMM, and ZGEMM—Combined Matrix
Multiplication and Addition for General Matrices, Their Transposes, or
Conjugate Transposes . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SSYMM, DSYMM, CSYMM, ZSYMM, CHEMM, and
ZHEMM—Matrix-Matrix Product Where One Matrix is Real or Complex
Symmetric or Complex Hermitian . . . . . . . . . . . . . . . . . . . . . . .
STRMM, DTRMM, CTRMM, and ZTRMM—Triangular Matrix-Matrix
Product . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
375
375
376
376
376
377
377
377
377
378
379
386
393
403
409
418
426
Contents
ix
|
|
|
x
EngineeringSSYRK, DSYRK, CSYRK, ZSYRK, CHERK, and ZHERK—Rank-K
Update of a Real or Complex Symmetric or a Complex Hermitian Matrix
SSYR2K, DSYR2K, CSYR2K, ZSYR2K, CHER2K, and
ZHER2K—Rank-2K Update of a Real or Complex Symmetric or a
Complex Hermitian Matrix . . . . . . . . . . . . . . . . . . . . . . . . . . .
SGETMI, DGETMI, CGETMI, and ZGETMI—General Matrix Transpose
(In-Place) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SGETMO, DGETMO, CGETMO, and ZGETMO—General Matrix
Transpose (Out-of-Place) . . . . . . . . . . . . . . . . . . . . . . . . . . . .
433
440
448
451
Chapter 10. Linear Algebraic Equations . . . . . . . . . . . . . . . . . . . .
Overview of the Linear Algebraic Equation Subroutines
. . . . . . . . . . . .
Dense Linear Algebraic Equation Subroutines
. . . . . . . . . . . . . . . .
Banded Linear Algebraic Equation Subroutines . . . . . . . . . . . . . . . .
Sparse Linear Algebraic Equation Subroutines . . . . . . . . . . . . . . . .
Linear Least Squares Subroutines . . . . . . . . . . . . . . . . . . . . . . .
Dense and Banded Linear Algebraic Equation Considerations . . . . . . . . .
Use Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Performance and Accuracy Considerations . . . . . . . . . . . . . . . . . .
Sparse Matrix Direct Solver Considerations
. . . . . . . . . . . . . . . . . . .
Use Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Performance and Accuracy Considerations . . . . . . . . . . . . . . . . . .
Sparse Matrix Skyline Solver Considerations . . . . . . . . . . . . . . . . . . .
Use Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Performance and Accuracy Considerations . . . . . . . . . . . . . . . . . .
Sparse Matrix Iterative Solver Considerations . . . . . . . . . . . . . . . . . .
Use Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Performance and Accuracy Considerations . . . . . . . . . . . . . . . . . .
Linear Least Squares Considerations . . . . . . . . . . . . . . . . . . . . . . .
Use Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Performance and Accuracy Considerations . . . . . . . . . . . . . . . . . .
Dense Linear Algebraic Equation Subroutines . . . . . . . . . . . . . . . . . .
SGEF, DGEF, CGEF, and ZGEF—General Matrix Factorization . . . . .
SGES, DGES, CGES, and ZGES—General Matrix, Its Transpose, or Its
Conjugate Transpose Solve . . . . . . . . . . . . . . . . . . . . . . . . . .
SGESM, DGESM, CGESM, and ZGESM—General Matrix, Its Transpose,
or Its Conjugate Transpose Multiple Right-Hand Side Solve
. . . . . .
SGETRF, DGETRF, CGETRF and ZGETRF—General Matrix
Factorization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SGETRS, DGETRS, CGETRS, and ZGETRS—General Matrix Multiple
Right-Hand Side Solve . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SGEFCD and DGEFCD—General Matrix Factorization, Condition Number
Reciprocal, and Determinant . . . . . . . . . . . . . . . . . . . . . . . . . .
SPPF, DPPF, SPOF, DPOF, CPOF, and ZPOF—Positive Definite Real
Symmetric or Complex Hermitian Matrix Factorization . . . . . . . . . .
SPPS and DPPS—Positive Definite Real Symmetric Matrix Solve . . . .
SPOSM, DPOSM, CPOSM, and ZPOSM—Positive Definite Real
Symmetric or Complex Hermitian Matrix Multiple Right-Hand Side Solve
SPPFCD, DPPFCD, SPOFCD, and DPOFCD—Positive Definite Real
Symmetric Matrix Factorization, Condition Number Reciprocal, and
Determinant
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
DBSSV—Symmetric Indefinite Matrix Factorization and Multiple
Right-Hand Side Solve . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
DBSTRF—Symmetric Indefinite Matrix Factorization . . . . . . . . . . . . .
455
455
455
456
457
458
458
458
459
459
459
459
460
460
461
461
461
461
462
462
462
464
465
468
472
478
482
487
491
499
502
507
514
520
and Scientific Subroutine Library Version 3 Guide and Reference
|
DBSTRS—Symmetric Indefinite Matrix Multiple Right-Hand Side Solve .
SGEICD and DGEICD—General Matrix Inverse, Condition Number
Reciprocal, and Determinant . . . . . . . . . . . . . . . . . . . . . . . . . .
SPPICD, DPPICD, SPOICD, and DPOICD—Positive Definite Real
Symmetric Matrix Inverse, Condition Number Reciprocal, and
Determinant
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
STRSV, DTRSV, CTRSV, ZTRSV, STPSV, DTPSV, CTPSV, and
ZTPSV—Solution of a Triangular System of Equations with a Single
Right-Hand Side . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
STRSM, DTRSM, CTRSM, and ZTRSM—Solution of Triangular Systems
of Equations with Multiple Right-Hand Sides . . . . . . . . . . . . . . . .
STRI, DTRI, STPI, and DTPI—Triangular Matrix Inverse . . . . . . . . . .
Banded Linear Algebraic Equation Subroutines . . . . . . . . . . . . . . . . .
SGBF and DGBF—General Band Matrix Factorization
. . . . . . . . . . .
SGBS and DGBS—General Band Matrix Solve . . . . . . . . . . . . . . . .
SPBF, DPBF, SPBCHF, and DPBCHF—Positive Definite Symmetric Band
Matrix Factorization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SPBS, DPBS, SPBCHS, and DPBCHS—Positive Definite Symmetric
Band Matrix Solve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SGTF and DGTF—General Tridiagonal Matrix Factorization . . . . . . .
SGTS and DGTS—General Tridiagonal Matrix Solve . . . . . . . . . . . .
SGTNP, DGTNP, CGTNP, and ZGTNP—General Tridiagonal Matrix
Combined Factorization and Solve with No Pivoting . . . . . . . . . . . .
SGTNPF, DGTNPF, CGTNPF, and ZGTNPF—General Tridiagonal Matrix
Factorization with No Pivoting . . . . . . . . . . . . . . . . . . . . . . . . .
SGTNPS, DGTNPS, CGTNPS, and ZGTNPS—General Tridiagonal Matrix
Solve with No Pivoting . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SPTF and DPTF—Positive Definite Symmetric Tridiagonal Matrix
Factorization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SPTS and DPTS—Positive Definite Symmetric Tridiagonal Matrix Solve
STBSV, DTBSV, CTBSV, and ZTBSV—Triangular Band Equation Solve
Sparse Linear Algebraic Equation Subroutines . . . . . . . . . . . . . . . . . .
DGSF—General Sparse Matrix Factorization Using Storage by Indices,
Rows, or Columns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
DGSS—General Sparse Matrix or Its Transpose Solve Using Storage by
Indices, Rows, or Columns . . . . . . . . . . . . . . . . . . . . . . . . . . .
DGKFS—General Sparse Matrix or Its Transpose Factorization,
Determinant, and Solve Using Skyline Storage Mode . . . . . . . . . .
DSKFS—Symmetric Sparse Matrix Factorization, Determinant, and Solve
Using Skyline Storage Mode . . . . . . . . . . . . . . . . . . . . . . . . . .
DSRIS—Iterative Linear System Solver for a General or Symmetric
Sparse Matrix Stored by Rows . . . . . . . . . . . . . . . . . . . . . . . . .
DSMCG—Sparse Positive Definite or Negative Definite Symmetric Matrix
Iterative Solve Using Compressed-Matrix Storage Mode . . . . . . . . .
DSDCG—Sparse Positive Definite or Negative Definite Symmetric Matrix
Iterative Solve Using Compressed-Diagonal Storage Mode . . . . . . .
DSMGCG—General Sparse Matrix Iterative Solve Using
Compressed-Matrix Storage Mode . . . . . . . . . . . . . . . . . . . . . .
DSDGCG—General Sparse Matrix Iterative Solve Using
Compressed-Diagonal Storage Mode . . . . . . . . . . . . . . . . . . . . .
Linear Least Squares Subroutines . . . . . . . . . . . . . . . . . . . . . . . . .
SGESVF and DGESVF—Singular Value Decomposition for a General
Matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
525
529
534
541
547
555
560
561
565
568
572
575
578
580
583
586
589
591
593
599
600
606
610
629
648
659
667
675
682
689
690
Contents
xi
|
SGESVS and DGESVS—Linear Least Squares Solution for a General
Matrix Using the Singular Value Decomposition . . . . . . . . . . . . .
. .
DGEQRF—General Matrix QR Factorization . . . . . . . . . . . . . . .
. .
SGELLS and DGELLS—Linear Least Squares Solution for a General
Matrix Using a QR Decomposition with Column Pivoting
. . . . . .
. .
698
703
708
Chapter 11. Eigensystem Analysis . . . . . . . . . . . . . . . . . . . . . . .
715
Overview of the Eigensystem Analysis Subroutines . . . . . . . . . . . . . . .
715
Performance and Accuracy Considerations . . . . . . . . . . . . . . . . . . . .
715
Eigensystem Analysis Subroutines . . . . . . . . . . . . . . . . . . . . . . . . .
717
SGEEV, DGEEV, CGEEV, and ZGEEV—Eigenvalues and, Optionally, All
or Selected Eigenvectors of a General Matrix . . . . . . . . . . . . . . .
718
SSPEV, DSPEV, CHPEV, and ZHPEV—Eigenvalues and, Optionally, the
Eigenvectors of a Real Symmetric Matrix or a Complex Hermitian Matrix
729
SSPSV, DSPSV, CHPSV, and ZHPSV—Extreme Eigenvalues and,
Optionally, the Eigenvectors of a Real Symmetric Matrix or a Complex
Hermitian Matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
738
SGEGV and DGEGV—Eigenvalues and, Optionally, the Eigenvectors of a
Generalized Real Eigensystem, Az=wBz, where A and B Are Real
General Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
746
SSYGV and DSYGV—Eigenvalues and, Optionally, the Eigenvectors of a
Generalized Real Symmetric Eigensystem, Az=wBz, where A Is Real
Symmetric and B Is Real Symmetric Positive Definite . . . . . . . . . .
752
Chapter 12. Fourier Transforms, Convolutions and Correlations, and
Related Computations . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
Overview of the Signal Processing Subroutines . . . . . . . . . . . . . . . .
.
Fourier Transforms Subroutines . . . . . . . . . . . . . . . . . . . . . . . .
.
Convolution and Correlation Subroutines
. . . . . . . . . . . . . . . . . .
.
Related-Computation Subroutines
. . . . . . . . . . . . . . . . . . . . . .
.
Fourier Transforms, Convolutions, and Correlations Considerations
. . . .
.
Use Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
Initializing Auxiliary Working Storage . . . . . . . . . . . . . . . . . . . . .
.
Determining the Amount of Auxiliary Working Storage That You Need .
.
Performance and Accuracy Considerations . . . . . . . . . . . . . . . . . . .
.
When Running on the Workstation Processors . . . . . . . . . . . . . . .
.
Defining Arrays
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
Fourier Transform Considerations . . . . . . . . . . . . . . . . . . . . . . .
.
How the Fourier Transform Subroutines Achieve High Performance . .
.
Convolution and Correlation Considerations . . . . . . . . . . . . . . . . .
.
Related Computation Considerations . . . . . . . . . . . . . . . . . . . . . .
.
Accuracy Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
Fourier Transform Subroutines . . . . . . . . . . . . . . . . . . . . . . . . . .
.
SCFT and DCFT—Complex Fourier Transform . . . . . . . . . . . . . . .
.
SRCFT and DRCFT—Real-to-Complex Fourier Transform . . . . . . . .
.
SCRFT and DCRFT—Complex-to-Real Fourier Transform . . . . . . . .
.
SCOSF and DCOSF—Cosine Transform . . . . . . . . . . . . . . . . . .
.
SSINF and DSINF—Sine Transform . . . . . . . . . . . . . . . . . . . . .
.
SCFT2 and DCFT2—Complex Fourier Transform in Two Dimensions
.
SRCFT2 and DRCFT2—Real-to-Complex Fourier Transform in Two
Dimensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
SCRFT2 and DCRFT2—Complex-to-Real Fourier Transform in Two
Dimensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
SCFT3 and DCFT3—Complex Fourier Transform in Three Dimensions
.
759
759
759
760
760
761
761
763
763
764
764
764
764
765
765
767
767
768
769
777
785
793
800
807
814
821
829
xii
Engineering and Scientific Subroutine Library Version 3 Guide and Reference
SRCFT3 and DRCFT3—Real-to-Complex Fourier Transform in Three
Dimensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SCRFT3 and DCRFT3—Complex-to-Real Fourier Transform in Three
Dimensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Convolution and Correlation Subroutines . . . . . . . . . . . . . . . . . . . . .
SCON and SCOR—Convolution or Correlation of One Sequence with
One or More Sequences . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SCOND and SCORD—Convolution or Correlation of One Sequence with
Another Sequence Using a Direct Method . . . . . . . . . . . . . . . . . .
SCONF and SCORF—Convolution or Correlation of One Sequence with
One or More Sequences Using the Mixed-Radix Fourier Method . . . .
SDCON, DDCON, SDCOR, and DDCOR—Convolution or Correlation with
Decimated Output Using a Direct Method . . . . . . . . . . . . . . . . . .
SACOR—Autocorrelation of One or More Sequences . . . . . . . . . . . .
SACORF—Autocorrelation of One or More Sequences Using the
Mixed-Radix Fourier Method . . . . . . . . . . . . . . . . . . . . . . . . . .
Related-Computation Subroutines . . . . . . . . . . . . . . . . . . . . . . . . .
SPOLY and DPOLY—Polynomial Evaluation . . . . . . . . . . . . . . . . .
SIZC and DIZC—I-th Zero Crossing . . . . . . . . . . . . . . . . . . . . . .
STREC and DTREC—Time-Varying Recursive Filter
. . . . . . . . . . . .
SQINT and DQINT—Quadratic Interpolation
. . . . . . . . . . . . . . . . .
SWLEV, DWLEV, CWLEV, and ZWLEV—Wiener-Levinson Filter
Coefficients . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
835
841
847
848
854
860
869
873
877
882
883
886
889
892
896
Chapter 13. Sorting and Searching . . . . . . . . . . . . . . . . . . . . . . .
Overview of the Sorting and Searching Subroutines . . . . . . . . . . . . . .
Use Considerations
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Performance and Accuracy Considerations . . . . . . . . . . . . . . . . . . .
Sorting and Searching Subroutines . . . . . . . . . . . . . . . . . . . . . . . .
ISORT, SSORT, and DSORT—Sort the Elements of a Sequence . . . .
ISORTX, SSORTX, and DSORTX—Sort the Elements of a Sequence and
Note the Original Element Positions
. . . . . . . . . . . . . . . . . . . . .
ISORTS, SSORTS, and DSORTS—Sort the Elements of a Sequence
Using a Stable Sort and Note the Original Element Positions . . . . . .
IBSRCH, SBSRCH, and DBSRCH—Binary Search for Elements of a
Sequence X in a Sorted Sequence Y . . . . . . . . . . . . . . . . . . . . .
ISSRCH, SSSRCH, and DSSRCH—Sequential Search for Elements of a
Sequence X in the Sequence Y . . . . . . . . . . . . . . . . . . . . . . . .
901
901
901
901
903
904
906
909
912
916
Chapter 14. Interpolation . . . . . . . . . . . . . . . . . . . . . . . . . .
. . .
Overview of the Interpolation Subroutines . . . . . . . . . . . . . . . . .
. . .
Use Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . .
Performance and Accuracy Considerations . . . . . . . . . . . . . . . .
. . .
Interpolation Subroutines . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . .
SPINT and DPINT—Polynomial Interpolation . . . . . . . . . . . . . .
. . .
STPINT and DTPINT—Local Polynomial Interpolation . . . . . . . . .
. . .
SCSINT and DCSINT—Cubic Spline Interpolation . . . . . . . . . . .
. . .
SCSIN2 and DCSIN2—Two-Dimensional Cubic Spline Interpolation
. . .
921
921
921
921
922
923
928
931
937
Chapter 15. Numerical Quadrature . . . . . . . .
. . . . . . . . . . . . . . .
Overview of the Numerical Quadrature Subroutines
. . . . . . . . . . . . . .
Use Considerations . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
Choosing the Method . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
Performance and Accuracy Considerations . . . .
. . . . . . . . . . . . . . .
941
941
941
941
941
Contents
xiii
Programming Considerations for the SUBF Subroutine . . . . . . . . . . . . .
Designing SUBF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Coding and Setting Up SUBF in Your Program . . . . . . . . . . . . . . . .
Numerical Quadrature Subroutines
. . . . . . . . . . . . . . . . . . . . . . . .
SPTNQ and DPTNQ—Numerical Quadrature Performed on a Set of
Points . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SGLNQ and DGLNQ—Numerical Quadrature Performed on a Function
Using Gauss-Legendre Quadrature . . . . . . . . . . . . . . . . . . . . . .
SGLNQ2 and DGLNQ2—Numerical Quadrature Performed on a Function
Over a Rectangle Using Two-Dimensional Gauss-Legendre Quadrature
SGLGQ and DGLGQ—Numerical Quadrature Performed on a Function
Using Gauss-Laguerre Quadrature . . . . . . . . . . . . . . . . . . . . . .
SGRAQ and DGRAQ—Numerical Quadrature Performed on a Function
Using Gauss-Rational Quadrature . . . . . . . . . . . . . . . . . . . . . . .
SGHMQ and DGHMQ—Numerical Quadrature Performed on a Function
Using Gauss-Hermite Quadrature . . . . . . . . . . . . . . . . . . . . . . .
942
942
943
944
945
948
951
957
960
964
Chapter 16. Random Number Generation . . . . . . . . . . . . . . . . . .
.
Overview of the Random Number Generation Subroutines . . . . . . . . . .
.
Use Considerations
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
Random Number Generation Subroutines
. . . . . . . . . . . . . . . . . . .
.
SURAND and DURAND—Generate a Vector of Uniformly Distributed
Random Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
SNRAND and DNRAND—Generate a Vector of Normally Distributed
Random Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
SURXOR and DURXOR—Generate a Vector of Long Period Uniformly
Distributed Random Numbers . . . . . . . . . . . . . . . . . . . . . . . .
.
967
967
967
967
968
971
975
Chapter 17. Utilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 979
Overview of the Utility Subroutines . . . . . . . . . . . . . . . . . . . . . . . . 979
Use Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 979
Determining the Level of ESSL Installed . . . . . . . . . . . . . . . . . . . . 979
Finding the Optimal Stride(s) for Your Fourier Transforms
. . . . . . . . .
979
Converting Sparse Matrix Storage . . . . . . . . . . . . . . . . . . . . . . . 980
Utility Subroutines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 981
EINFO—ESSL Error Information-Handler Subroutine
. . . . . . . . . . . .
982
ERRSAV—ESSL ERRSAV Subroutine for ESSL . . . . . . . . . . . . . . . 985
ERRSET—ESSL ERRSET Subroutine for ESSL . . . . . . . . . . . . . . . 986
ERRSTR—ESSL ERRSTR Subroutine for ESSL . . . . . . . . . . . . . . . 988
IESSL—Determine the Level of ESSL Installed . . . . . . . . . . . . . . . . 989
STRIDE—Determine the Stride Value for Optimal Performance in
Specified Fourier Transform Subroutines . . . . . . . . . . . . . . . . . . . 991
DSRSM—Convert a Sparse Matrix from Storage-by-Rows to
Compressed-Matrix Storage Mode . . . . . . . . . . . . . . . . . . . . . . 1001
DGKTRN—For a General Sparse Matrix, Convert Between Diagonal-Out
and Profile-In Skyline Storage Mode . . . . . . . . . . . . . . . . . . . . . 1005
DSKTRN—For a Symmetric Sparse Matrix, Convert Between
Diagonal-Out and Profile-In Skyline Storage Mode . . . . . . . . . . . . . 1011
Part 3. Appendixes
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1017
Appendix A. Basic Linear Algebra Subprograms (BLAS)
. . . . . . . .
APA-1
Level 1 BLAS . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . .
APA-1
xiv
Engineering and Scientific Subroutine Library Version 3 Guide and Reference
Level 2 BLAS
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
APA-1
Level 3 BLAS
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
APA-2
Appendix B. LAPACK
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
APB-1
LAPACK . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
APB-1
Notices . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
NOT-1
Trademarks . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
NOT-2
Software Update Protocol
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
NOT-2
Programming Interfaces
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
NOT-2
Glossary
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
GLOS-1
Bibliography . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
BIB-1
References . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
BIB-1
ESSL Publications . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
BIB-5
Evaluation and Planning . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
BIB-5
Installation . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
BIB-5
Application Programming . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
BIB-5
Related Publications . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
BIB-5
AIX for the RS/6000
. . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
BIB-5
AIX Version 4 Release 3 for the RS/6000
. . . . . . . . . . . . . . . . . .
BIB-5
XL Fortran . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
BIB-5
PL/I . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
BIB-5
Workstation Processors
. . . . . . . . .
. . . . . . . . . . . . . . . . . . .
BIB-5
IBM 3838 Array Processor . . . . . . . .
. . . . . . . . . . . . . . . . . . .
BIB-6
Index
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
INDEX-1