IBM Books

Engineering and Scientific Subroutine Library for AIX Version 3 Release 3: Guide and Reference


Dealing with Errors

At run time, you can encounter a number of different types of errors that are specifically related to the use of the ESSL subroutines:

Program Exceptions

The program exceptions you can encounter in ESSL are described in ANSI/IEEE Standard for Binary Floating-Point Arithmetic, ANSI/IEEE Standard 754-1985.

ESSL Input-Argument Error Messages

If you receive an error message in the form 2538-20nn or 2538-22nn, you have an input-argument error in the calling sequence for an ESSL subroutine. Your program terminated at this point unless you did one of the following:

Note:
For many of the ESSL subroutines requiring auxiliary storage, you can avoid program termination due to error 2015 by allowing ESSL to dynamically allocate auxiliary storage for you. You do this by setting naux = 0 and making error 2015 unrecoverable. For details on which aux arguments allow dynamic allocation and how to specify them, see the subroutine descriptions in Part 2 of this book.

The name of the ESSL subroutine detecting the error is listed as part of the message. The argument number(s) involved in the error appears in the message text. See Input-Argument Error Messages(2001-2099) for a complete description of the information contained in each message and for an indication of which messages correspond to optionally-recoverable errors. Regardless of whether the name in the message is a user-callable ESSL subroutine or an internal ESSL routine, the message-text and its unique parts apply to the user-callable ESSL subroutine. Return code values are described under "Error Conditions" for each ESSL subroutine in Part 2 of this book.

You may get more than one error message, because most of the arguments are checked by ESSL for possible errors during each call to the subroutine. The ESSL subroutine returns as many messages as there are errors detected. As a result, fewer runs are necessary to diagnose your program.

Fix the error(s), recompile, relink, and rerun your program.

ESSL Computational Error Messages

If you receive an error message in the form 2538-21nn, you have a computational error in the ESSL subroutine. A computational error is any error occurring in the ESSL subroutine while using the computational data (that is, scalar and array data). The name of the ESSL subroutine detecting the error is listed as part of the message. Regardless of whether the name in the message is a user-callable ESSL subroutine or an internal ESSL routine, the message-text and its unique parts apply to the user-callable ESSL subroutine. A nonzero return code is returned when the ESSL subroutine encounters a computational error. See Computational Error Messages(2100-2199) for a complete description of the information in each message. Return code values are described under "Error Conditions" for each ESSL subroutine in Part 2 of this book.

Your program terminates for some computational errors unless you have called ERRSET to reset the number of allowable errors for that particular error, and the number has not been exceeded. A message is issued for each computational error. You should use the message to determine where the error occurred in your program.

If you called ERRSET and you have not reached the limit of errors you had set, you can check the return code. If it is not 0, you should call the EINFO subroutine to obtain information about the data involved in the error. EINFO provides the same information provided in the messages; however, it is provided to your program so your program can check the information during run time. Depending on what you want to do, you may choose to continue processing or terminate your program after the error occurs. For information on how to make these changes in your program to reset the number of allowable errors, how to diagnose the error, and how to decide whether to continue or terminate your program, see Chapter 4, Coding Your Program.

If you are unable to solve the problem, report it and provide the following information, if available and appropriate:

ESSL Resource Error Messages

If you receive a message in the form 2538-24nn, it means that ESSL issued a resource error message.

A resource error occurs when a buffer storage allocation request fails in a ESSL subroutine. In general, the ESSL subroutines allocate internal auxiliary storage dynamically as needed. Without sufficient storage, the subroutine cannot complete the computation.

When a buffer storage allocation request fails, a resource error message is issued, and the application program is terminated. You need to reduce the memory constraint on the system or increase the amount of memory available before rerunning the application program.

The following ways may reduce memory constraints:

ESSL Informational and Attention Messages

If you receive a message in the form 2538-26nn, it means that ESSL issued an informational or attention message.

Informational Messages

When you receive an informational message, check your application to determine why the condition was detected.

ESSL Attention Messages

An attention message is issued to describe a condition that occurred. ESSL is able to continue processing, but performance may be degraded.

One condition that may produce an attention message is when enough work area was available to continue processing, but was not the amount initially requested. ESSL does not terminate your application program, but performance may be degraded. If you want to reduce the memory constraint on the system or increase the amount of memory available to eliminate the attention message, see the suggestions in ESSL Resource Error Messages. For a list of subroutines that may generate this type of attention message, see Table 31.

Table 31. ESSL Subroutines

Subroutine Names
Matrix-Vector Linear Algebra Subprograms:
_GEMV, _GER, _SPMV, _SYMV, _SPR, _SYR, _SPR2, _SYR2
_GERC, _GERU, _HPMV, _HEMV, _HPR, _HER, _HPR2, _HER2
_SBMV, _TBMV, _GBMV
_TPMV
_TRMV
Matrix Operations:
_GEMM, _GEMUL
_SYMM, _SYR2K, _TRMM
_HEMM, _HER2K
Dense Linear Algebraic Equations:
_POF, _POICD, _PPF, _PPFCD, _PPICD, _POTRF, _POTRI
_GEICD, _GETRI, _TPI, _TRI, _TRTRI, _TPTRI
_TRSM, _TPSV, _TRSV
Banded Linear Algebraic Equations:
STBSV, DTBSV
Linear Least Squares:
_GESVS
Fourier Transforms:
_CFT, _CFT3
_RCFT, _RCFT3
_CRFT, _CRFT3

Miscellaneous Error Messages

If you receive a message in the form 2538-27nn, it means that ESSL issued a miscellaneous error message.

A miscellaneous error is an error that does not fall under any other categories.

When ESSL detects a miscellaneous error, you receive an error message with information on how to proceed and your application program is terminated.


[ Top of Page | Previous Page | Next Page | Table of Contents | Index ]