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 |
Fortran | CALL EINFO (icode[, inf1[, inf2]]) |
C and C++ | einfo (icode, inf1, inf2); |
PL/I | CALL EINFO (icode[, inf1[, inf2]]); |
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.
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.
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.