diff options
Diffstat (limited to 'numpy/linalg/python_xerbla.c')
-rw-r--r-- | numpy/linalg/python_xerbla.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/numpy/linalg/python_xerbla.c b/numpy/linalg/python_xerbla.c new file mode 100644 index 000000000..ed0cac9b5 --- /dev/null +++ b/numpy/linalg/python_xerbla.c @@ -0,0 +1,36 @@ +#include "Python.h" +#include "f2c.h" + +/* + From the original manpage: + -------------------------- + XERBLA is an error handler for the LAPACK routines. + It is called by an LAPACK routine if an input parameter has an invalid value. + A message is printed and execution stops. + + Instead of printing a message and stopping the execution, a + ValueError is raised with the message. + + Parameters: + ----------- + srname: Subroutine name to use in error message, maximum six characters. + Spaces at the end are skipped. + info: Number of the invalid parameter. +*/ + +int xerbla_(char *srname, integer *info) +{ + const char* format = "On entry to %.*s" \ + " parameter number %d had an illegal value"; + char buf[strlen(format) + 6 + 4]; /* 6 for name, 4 for param. num. */ + + int len = 0; /* length of subroutine name*/ + while( len<6 && srname[len]!='\0' ) + len++; + while( len && srname[len-1]==' ' ) + len--; + + snprintf(buf, sizeof(buf), format, len, srname, *info); + PyErr_SetString(PyExc_ValueError, buf); + return 0; +} |