## Conventions

The types of all variables and functions are determined as shown below:

 ``` IMPLICIT COMPLEX (C) ``` ``` IMPLICIT DOUBLE PRECISION (D) ``` ``` IMPLICIT INTEGER (I-N) ``` ``` IMPLICIT COMPLEX*32 Q ``` ``` IMPLICIT REAL (S) ``` ``` IMPLICIT DOUBLE COMPLEX (Z) ```

The first one or two letters of a subroutine name identifies the types of the arguments. In most cases, only the first letter is used to identify type. The remaining letters that are not used to identify the type will identify the operation that the subroutine performs. For example, CSCAL will multiply the elements of a complex vector by a complex constant. The second character in CSSCAL indicates that this subroutine will multiply the elements of a complex vector by a real constant.

The first letter of a function name identifies the type of the function, and in some cases the next two letters specify the types of the arguments. In most cases, the types of the arguments match the types of the return type of the function. For example, DDOT will return the double precision dot product of two double precision vectors. The second character in DSDOT indicates that this function will return the double precision dot product of two single precision vectors.

To specify the group of subroutines that perform the same operation but are of different types, this manual uses a lowercase x. For example, xAXPY refers to the subroutines DAXPY, SAXPY, ZAXPY, and CAXPY. This same convention is used for arguments: xY refers to the arguments DY, SY, ZY, and CY.

Vector arguments always are identified by X or Y. The type of the vector is indicated by its first letter, so DX is a double precision vector and CX is a complex vector. The size of the X array is max(1,N*|INCX|) and the size of the Y array is max(1,N*|INCY|).