IBM Books

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

EINFO--ESSL Error Information-Handler Subroutine

This subroutine returns information to your program about the data involved in a computational error that occurred in an ESSL subroutine. This is the same information that is provided in the ESSL messages; however, it allows you to check the information in your program at run time and continue processing. You pass the computational error code of interest to this subroutine in icode, and it passes back one or more pieces of information in the output arguments inf1 and, optionally, inf2, as defined in Table 172. You should use this subroutine only for those computational errors listed in the table. It does not apply to computational errors that do not return information.

For multithreaded application programs, if you want the error handling capabilities that this subroutine provides to be implemented on each thread created by your program, this subroutine must be called from each thread. If your application creates multiple threads, the action performed by a call to this subroutine applies to the thread that this subroutine was invoked from. For an example, see Example of Handling Errors in a Multithreaded Application Program.

Table 172. Computational Error Information Returned by EINFO

Error Code Receiver Type of Information
2100 inf1

inf2

Lower range of a vector

Upper range of a vector

2101 inf1

inf2

Index of the eigenvalue that failed to converge

Number of iterations after which it failed to converge

2102 inf1

inf2

Index of the last eigenvector that failed to converge

Number of iterations after which it failed to converge

2103 inf1 Index of the pivot with zero value
2104 inf1 Index of the last pivot with nonpositive value
2105 inf1 Index of the pivot element near zero causing factorization to fail
2107 inf1

inf2

Index of the singular value that failed to converge

Number of iterations after which it failed to converge

2109 inf1 Iteration count when it was determined that the matrix was not definite
2114 inf1

inf2

Index of the last eigenvalue that failed to converge

Number of iterations after which it failed to converge

2115 inf1 Order of the leading minor that was discovered to have a nonpositive determinant
2117 inf1 Column number for which pivot value was near zero
2118 inf1 Row number for which pivot value was near zero
2120 inf1 Row number of empty row where factorization failed
2121 inf1 Column number of empty column where factorization failed
2126 inf1 Row number for which pivot value was unacceptable
2145 inf1 First diagonal element with zero value
2150 inf1 First diagonal element with zero value

Syntax

Fortran CALL EINFO (icode[, inf1[, inf2]])
C and C++ einfo (icode, inf1, inf2);
PL/I CALL EINFO (icode[, inf1[, inf2]]);

On Entry

icode
has the following meaning, where:

If icode = 0, this indicates that the ESSL error option table is to be initialized. (You specify this value once in the beginning of your program before calls to ERRSET.)

If icode has any of the allowable error code values listed in Table 172, this is the computational error code of interest. (You specify one of these values whenever you want information returned about a computational error.)

Specified as: a fullword integer; icode = 0 or an error code value indicated in Table 172.

inf1
See On Return.

inf2
See On Return.

On Return

inf1
has the following meaning, where:

If icode = 0, this argument is not used in the computation. In this case, inf1 is an optional argument, except in C and C++ programs.

If icode <> 0, then inf1 is the first information receiver, containing numerical information related to the computational error.

Returned as: a fullword integer.

inf2
has the following meaning, where:

If icode = 0, this argument is not used in the computation.

If icode <> 0, then inf2 is the second information receiver, containing numerical information related to the computational error. It should be specified when the error code provides a second piece of information, and you want the information.

In both of these cases, inf2 is an optional argument, except in C and C++ programs. For more details, see Notes.

Returned as: a fullword integer.

Notes
  1. If icode is not 0 and is not one of the error codes specified in Table 172, this subroutine returns to the caller, and no information is provided in inf1 and inf2.
  2. If there are two pieces of information for the error and you specify one output argument, the second piece of information is not returned to the caller.
  3. If there is one piece of information for the error and you specify two output arguments, the second output argument is not set by this subroutine.
  4. In C and C++ programs you must code the inf1 and inf2 arguments, because they are not optional arguments.
  5. In Fortran programs, inf1 and inf2 are optional arguments. This is an exception to the rule, because other ESSL subroutines do not allow optional arguments.
  6. Examples of how to use EINFO are provided in Chapter 4, Coding Your Program.


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