Guide to the Digital Extended Math Library for VMS

*HyperReader

  CONTENTS

  Title Page

  Copyright Page

  Preface

  1      Introduction to the Digital Extended Math Library for VMS

  1.1     Overview of the Digital Extended Math Library for VMS
    1.1.1      DXML's Hardware and Operating System Environment
    1.1.2      DXML's Versions for Certain Data Types
    1.1.3      DXML's Scalar and Vector Versions

  1.2     DXML's Programming Language Environment

  1.3     How DXML Gets High Performance

  1.4     Accuracy of Computations and Effects of Roundoff

  1.5     Vector Processing and Scalar Processing
    1.5.1      Vectorizing Compilers
    1.5.2      Vectorizable Applications
    1.5.3      For More Information on Vector Processing

  2      Preparing and Storing Program Data

  2.1     Scalar Data
    2.1.1      DXML's FORTRAN Data Types
    2.1.2      VAX Double-Precision Implementations

  2.2     FORTRAN Data Representation
    2.2.1      CHARACTER * 1 and CHARACTER * ( * ) Representation
    2.2.2      LOGICAL Representation
    2.2.3      INTEGER * 4 Representation
    2.2.4      Real Floating-Point Representations
      2.2.4.1      REAL * 4 (F_floating)
      2.2.4.2      REAL * 8 (D_floating)
      2.2.4.3      REAL * 8 (G_floating)
    2.2.5      Complex Floating-Point Representations
      2.2.5.1      COMPLEX * 8 (F_floating complex)
      2.2.5.2      COMPLEX * 16 (D_floating complex)
      2.2.5.3      COMPLEX * 16 (G_floating complex)

  2.3     Array Data

  2.4     Programming Language Array Storage Techniques
    2.4.1      FORTRAN Arrays
      2.4.1.1      One-Dimensional FORTRAN Array Storage
      2.4.1.2      Two-Dimensional FORTRAN Array Storage
      2.4.1.3      Array Elements
    2.4.2      Arrays in Other Programming Languages

  2.5     DXML's Data Structures
    2.5.1      Vectors
    2.5.2      Transpose and Conjugate Transpose of a Vector
    2.5.3      Defining a Vector in an Array
      2.5.3.1      The Length of a Vector
      2.5.3.2      The Location of a Vector
      2.5.3.3      Positive, Negative, and Zero Increments
      2.5.3.4      Using the Increment to Select Vector Elements from an Array
    2.5.4      Storing a Vector in an Array
    2.5.5      Matrices
    2.5.6      Transpose and Conjugate Transpose of a Matrix
    2.5.7      Defining a Matrix in an Array
      2.5.7.1      The Location of a Matrix
      2.5.7.2      The First Dimension of the Array
      2.5.7.3      The Number of Rows and Columns of the Matrix
      2.5.7.4      Using the First Dimension to Select Matrix Elements from an Array
    2.5.8      Symmetric and Hermitian Matrices
    2.5.9      Storage of Symmetric and Hermitian Matrices
      2.5.9.1      Two-Dimensional Upper- or Lower-Triangular Storage
      2.5.9.2      One-Dimensional Packed Storage
    2.5.10     Triangular Matrices
    2.5.11     Storage of Triangular Matrices
    2.5.12     General Band Matrices
    2.5.13     Storage of General Band Matrices
    2.5.14     Real Symmetric Band Matrices and Complex Hermitian Band Matrices
    2.5.15     Storage of Real Symmetric Band Matrices or Complex Hermitian Band Matrices
    2.5.16     Upper- and Lower-Triangular Band Matrices
    2.5.17     Storage of Upper- and Lower-Triangular Band Matrices

  3      Coding an Application Program

  3.1     Choosing the Appropriate Subprogram Version
    3.1.1      Vector or Scalar Version
    3.1.2      Version Associated with the Data Type
    3.1.3      Subprogram Data Structure and Storage Method
    3.1.4      Considerations for Improving Performance

  3.2     DXML Subprogram Calling Sequences

  3.3     Understanding the DXML Subprogram Reference Descriptions

  3.4     Arguments
    3.4.1      Required and Optional Arguments
    3.4.2      Omitting Optional Arguments
    3.4.3      Input and Output Arguments
    3.4.4      Passing of Arguments
    3.4.5      Coding Arguments Implicitly or Explicitly

  3.5     Subprogram Names in an Application Program

  3.6     Calling Subroutines and Functions in FORTRAN

  3.7     Using DXML from Non-FORTRAN Programming Languages

  3.8     Coding Programs with Calls to BLAS Level 1 Subprograms

  3.9     DXML Error Handling
    3.9.1      BLAS Error Handling
      3.9.1.1      BLAS Level 2 and Level 3 Invalid Arguments
      3.9.1.2      Errors from Internal Exceptions
      3.9.1.3      Errors While Using Triangular Equation Solution Subroutines
    3.9.2      Signal Processing Error Handling
    3.9.3      Including Signal Processing Error Code and Data Structure Definitions
    3.9.4      Status Value Descriptions
    3.9.5      Error Handling Example

  4      Linking an Application Program

  4.1     DXML's Libraries

  4.2     Using DXML's Shareable Images

  4.3     Linking with a Shareable Image

  4.4     Using DXML's Object Library
    4.4.1      Transfer Vector Files for DXML's Object Library
    4.4.2      Linking with the Object Library
    4.4.3      Linking When Subprogram Names Are DXML Subprogram Names

  4.5     Linking with the BLAS Level 1 Subprograms

  4.6     Linking Errors

  4.7     For More Information About Linking

  5      Using the Level 1 BLAS Subprograms and Their Extensions

  5.1     Types of Level 1 Operations

  5.2     Calling Level 1 BLAS and the Extensions Subprograms

  5.3     Level 1 Vector Storage

  5.4     Vector and Scalar Accuracy

  5.5     Level 1 BLAS and the Extensions Subprogram Naming Conventions

  5.6     Level 1 BLAS Subprogram Summary

  5.7     Level 1 BLAS Extensions Subprogram Summary

  5.8     Level 1 BLAS Argument Conventions
    5.8.1      Argument Defining the Length of the Input Vectors
    5.8.2      Argument Defining the Input Scalar
    5.8.3      Arguments Describing the Input-Output Vectors

  5.9     Definition of Absolute Value Used in the Subprograms

  5.10    A Look at a Level 1 Extensions Subprogram

  5.11    For More Information About Level 1 BLAS Subprograms

  Real Level 1 BLAS Subprograms

  ISAMAX and IDAMAX

  SASUM and DASUM

  SAXPY and DAXPY

  SCOPY and DCOPY

  SDOT and DDOT

  SNRM2 and DNRM2

  SROT and DROT

  SROTG and DROTG

  SSCAL and DSCAL

  SSWAP and DSWAP

  Complex Level 1 BLAS Subprograms

  CAXPY and ZAXPY

  CCOPY and ZCOPY

  CDOTC and ZDOTC

  CDOTU and ZDOTU

  CROTG and ZROTG

  CSCAL and ZSCAL

  CSROT and ZDROT

  CSSCAL and ZDSCAL

  CSWAP and ZSWAP

  ICAMAX and IZAMAX

  SCASUM and DZASUM

  SCNRM2 and DZNRM2

  Real Level 1 BLAS Extensions Subprograms

  ISAMIN and IDAMIN

  ISMAX and IDMAX

  ISMIN and IDMIN

  SAMAX and DAMAX

  SAMIN and DAMIN

  SMAX and DMAX

  SMIN and DMIN

  SNORM2 and DNORM2

  SNRSQ and DNRSQ

  SSET and DSET

  SSUM and DSUM

  SVCAL and DVCAL

  SZAXPY and DZAXPY

  Complex Level 1 BLAS Extensions Subprograms

  CSET and ZSET

  CSUM and ZSUM

  CSVCAL and ZDVCAL

  CVCAL and ZVCAL

  CZAXPY and ZZAXPY

  ICAMIN and IZAMIN

  SCAMAX and DZAMAX

  SCAMIN and DZAMIN

  SCNORM2 and DZNORM2

  SCNRSQ and DZNRSQ

  6      Using the Level 2 BLAS Subprograms

  6.1     Types of Level 2 BLAS Operations

  6.2     Calling the Level 2 BLAS Subprograms

  6.3     Level 2 BLAS Vector and Matrix Storage

  6.4     Level 2 BLAS Subroutine Naming Conventions

  6.5     Level 2 BLAS Subroutine Summary

  6.6     Level 2 BLAS Argument Conventions
    6.6.1      Arguments Specifying Matrix Options
    6.6.2      Arguments Defining the Size of the Input-Output Matrix
    6.6.3      Arguments Describing the Input-Output Matrix
    6.6.4      Arguments Describing the Input Scalars
    6.6.5      Arguments Describing the Input-Output Vectors

  6.7     Invalid Arguments

  6.8     A Look at a BLAS Level 2 Subroutine

  6.9     Performing Rank-One and Rank-Two Updates to Band Matrices

  6.10    For More Information About Level 2 BLAS Subroutines

  Real Level 2 BLAS Subroutines

  SGBMV and DGBMV

  SGEMV and DGEMV

  SGER and DGER

  SSBMV and DSBMV

  SSPMV and DSPMV

  SSPR and DSPR

  SSPR2 and DSPR2

  SSYMV and DSYMV

  SSYR and DSYR

  SSYR2 and DSYR2

  STBMV and DTBMV

  STBSV and DTBSV

  STPMV and DTPMV

  STPSV and DTPSV

  STRMV and DTRMV

  STRSV and DTRSV

  Complex Level 2 BLAS Subroutines

  CGBMV and ZGBMV

  CGEMV and ZGEMV

  CGERC and ZGERC

  CGERU and ZGERU

  CHBMV and ZHBMV

  CHEMV and ZHEMV

  CHER and ZHER

  CHER2 and ZHER2

  CHPMV and ZHPMV

  CHPR and ZHPR

  CHPR2 and ZHPR2

  CTBMV and ZTBMV

  CTBSV and ZTBSV

  CTPMV and ZTPMV

  CTPSV and ZTPSV

  CTRMV and ZTRMV

  CTRSV and ZTRSV

  7      Using the Level 3 BLAS Subprograms

  7.1     Types of Level 3 BLAS Operations

  7.2     Calling the Level 3 BLAS Subprograms

  7.3     Level 3 BLAS Matrix Storage

  7.4     Level 3 BLAS Subroutine Naming Conventions

  7.5     Level 3 BLAS Subroutine Summary

  7.6     Level 3 BLAS Argument Conventions
    7.6.1      Arguments Specifying Matrix Options
    7.6.2      Arguments Defining the Size of the Matrices
    7.6.3      Arguments Specifying the Input Scalar
    7.6.4      Arguments Describing the Input Matrices
    7.6.5      Arguments Specifying the Input Scalar Associated with the Input-Output Matrix
    7.6.6      Arguments Describing the Input-Output Matrix

  7.7     Invalid Arguments

  7.8     A Look at a BLAS Level 3 Subroutine

  7.9     For More Information About the Level 3 BLAS Subroutines

  Real Level 3 BLAS Subroutines

  SGEMM and DGEMM

  SSYMM and DSYMM

  SSYRK and DSYRK

  SSYR2K and DSYR2K

  STRMM and DTRMM

  STRSM and DTRSM

  Complex Level 3 BLAS Subroutines

  CGEMM and ZGEMM

  CHEMM and ZHEMM

  CHERK and ZHERK

  CHER2K and ZHER2K

  CSYMM and ZSYMM

  CSYRK and ZSYRK

  CSYR2K and ZSYR2K

  CTRMM and ZTRMM

  CTRSM and ZTRSM

  8      Using the Signal Processing Subprograms

  8.1     Definition of the Fourier Transform
    8.1.1      Mathematical Definition of the One-Dimensional Continuous Fourier Transform
    8.1.2      Mathematical Definition of the One-Dimensional Discrete Fourier Transform
    8.1.3      Mathematical Definition of the Two-Dimensional Discrete Fourier Transform

  8.2     The Fast Fourier Transform

  8.3     Data Storage for One-Dimensional Real Transforms

  8.4     Data Storage for Two-Dimensional Real Transforms

  8.5     Data Storage for One- and Two-Dimensional Complex Transforms

  8.6     Choosing Data Lengths for Real and Complex Transforms

  8.7     Choosing Data Lengths for High Performance

  8.8     Input and Output Data for Real and Complex Transforms

  8.9     Internal Data Structures in the Three-Step FFTs

  8.10    Fourier Transform Subroutine Overview
    8.10.1     Types of FFT Subroutines
    8.10.2     Fourier Transform Subroutine Naming Conventions
    8.10.3     Fourier Transform Subroutine Summary

  8.11    Definition of Convolution and Correlation
    8.11.1     Mathematical Definition of the Discrete Nonperiodic Convolution
    8.11.2     Mathematical Definition of the Discrete Nonperiodic Correlation
    8.11.3     Periodic Convolution and Correlation

  8.12    Convolution and Correlation Using Fast Fourier Transform Methods

  8.13    Convolution and Correlation Subroutine Overview
    8.13.1     Convolution and Correlation Subroutine Naming Conventions
    8.13.2     Convolution and Correlation Subroutine Summary

  8.14    Definition of Digital Filtering
    8.14.1     Mathematical Definition of the Nonrecursive Filter
    8.14.2     Controlling Filter Type
    8.14.3     Controlling Filter Sharpness and Smoothness

  8.15    Digital Filter Subroutine Overview
    8.15.1     Digital Filter Subroutine Naming Conventions
    8.15.2     Digital Filter Subroutine Summary

  8.16    Including Signal Processing Error Code and Data Structure Definitions

  8.17    Signal Processing Error Handling

  8.18    For More Information About Signal Processing

  Fast Fourier Transforms

  SFFT and DFFT

  CFFT and ZFFT

  SFFT_2D and DFFT_2D

  CFFT_2D and ZFFT_2D

  SFFT_INIT and DFFT_INIT

  SFFT_APPLY and DFFT_APPLY

  SFFT_EXIT and DFFT_EXIT

  CFFT_INIT and ZFFT_INIT

  CFFT_APPLY and ZFFT_APPLY

  CFFT_EXIT and ZFFT_EXIT

  SFFT_INIT_2D and DFFT_INIT_2D

  SFFT_APPLY_2D and DFFT_APPLY_2D

  SFFT_EXIT_2D and DFFT_EXIT_2D

  CFFT_INIT_2D and ZFFT_INIT_2D

  CFFT_APPLY_2D and ZFFT_APPLY_2D

  CFFT_EXIT_2D and ZFFT_EXIT_2D

  Convolutions and Correlations

  SCONV_NONPERIODIC and DCONV_NONPERIODIC

  CCONV_NONPERIODIC and ZCONV_NONPERIODIC

  SCONV_PERIODIC and DCONV_PERIODIC

  CCONV_PERIODIC and ZCONV_PERIODIC

  SCORR_NONPERIODIC and DCORR_NONPERIODIC

  CCORR_NONPERIODIC and ZCORR_NONPERIODIC

  SCORR_PERIODIC and DCORR_PERIODIC

  CCORR_PERIODIC and ZCORR_PERIODIC

  Filters

  SFILTER_NONREC

  SFILTER_INIT_NONREC

  SFILTER_APPLY_NONREC

  FIGURES

  8-1        Digital Filter Transfer Function Forms

  8-2        Lowpass Nonrecursive Filter for Varying Nterms

  8-3        Lowpass Nonrecursive Filter for Varying Wiggles

  TABLES

  1 DXML Font Usage

  2 DXML Symbols and Expressions

  3 DXML Conventions

  2-1        FORTRAN Data Types

  2-2        One-Dimensional FORTRAN Array Storage

  2-3        Two-Dimensional FORTRAN Array Storage

  3-1        DXML Error Symbols

  5-1        Level 1 BLAS Subprogram Naming Conventions

  5-2        Level 1 BLAS Subprogram Summary

  5-3        Level 1 Extensions BLAS Subprogram Summary

  6-1        Level 2 BLAS Subroutine Naming Conventions

  6-2        Level 2 BLAS Subroutine Summary

  6-3        Values for the Argument TRANS

  6-4        Values for the Argument UPLO

  6-5        Values for the Argument DIAG

  7-1        Level 3 BLAS Subroutine Naming Conventions

  7-2        Level 3 BLAS Subroutine Summary

  7-3        Values for the Argument SIDE

  7-4        Values for the Arguments TRANSA and TRANSB

  7-5        Values for the Argument UPLO

  7-6        Values for the Argument DIAG

  8-1        Fourier Transform of a Real Dataset

  8-2        Input and Output Format Argument Values

  8-3        Status Values for Unsupported Input and Output Combinations

  8-4        Fourier Transform Subroutine Naming Conventions

  8-5        One-Step Fourier Transform Subroutine Summary

  8-6        Three-Step Fourier Transform Subroutine Summary

  8-7        Convolution and Correlation Subroutine Naming Conventions

  8-8        Convolution Subroutine Summary

  8-9        Correlation Subroutine Summary

  8-10       Controlling Filtering Type

  8-11       Digital Filter Subroutine Naming Conventions

  8-12       Digital Filter Subroutine Summary