add cholmod_error.c
parent
f59d694d4e
commit
acb37a0277
|
@ -3,7 +3,7 @@ includedir = ${prefix}/include/spqr_mini
|
||||||
libdir = ${exec_prefix}/lib
|
libdir = ${exec_prefix}/lib
|
||||||
|
|
||||||
if USE_LAPACK_MACOS
|
if USE_LAPACK_MACOS
|
||||||
sources = cholmod_common.c cholmod_memory.c spqr_front.cpp spqr_larftb.cpp
|
sources = cholmod_error.c cholmod_common.c cholmod_memory.c spqr_front.cpp spqr_larftb.cpp
|
||||||
headers = UFconfig.h cholmod_common.h cholmod_internal.h cholmod_blas.h cholmod_core.h
|
headers = UFconfig.h cholmod_common.h cholmod_internal.h cholmod_blas.h cholmod_core.h
|
||||||
headers += SuiteSparseQR_definitions.h SuiteSparseQR_subset.hpp spqr_subset.hpp spqr_larftb.h spqr_front.h
|
headers += SuiteSparseQR_definitions.h SuiteSparseQR_subset.hpp spqr_subset.hpp spqr_larftb.h spqr_front.h
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,80 @@
|
||||||
|
/* ========================================================================== */
|
||||||
|
/* === Core/cholmod_error =================================================== */
|
||||||
|
/* ========================================================================== */
|
||||||
|
|
||||||
|
/* -----------------------------------------------------------------------------
|
||||||
|
* CHOLMOD/Core Module. Copyright (C) 2005-2006,
|
||||||
|
* Univ. of Florida. Author: Timothy A. Davis
|
||||||
|
* The CHOLMOD/Core Module is licensed under Version 2.1 of the GNU
|
||||||
|
* Lesser General Public License. See lesser.txt for a text of the license.
|
||||||
|
* CHOLMOD is also available under other licenses; contact authors for details.
|
||||||
|
* http://www.cise.ufl.edu/research/sparse
|
||||||
|
* -------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
/* CHOLMOD error-handling routine. */
|
||||||
|
|
||||||
|
#include "cholmod_internal.h"
|
||||||
|
#include "cholmod_core.h"
|
||||||
|
|
||||||
|
/* ========================================================================== */
|
||||||
|
/* ==== cholmod_error ======================================================= */
|
||||||
|
/* ========================================================================== */
|
||||||
|
|
||||||
|
/* An error has occurred. Set the status, optionally print an error message,
|
||||||
|
* and call the user error-handling routine (if it exists). If
|
||||||
|
* Common->try_catch is TRUE, then CHOLMOD is inside a try/catch block.
|
||||||
|
* The status is set, but no message is printed and the user error handler
|
||||||
|
* is not called. This is not (yet) an error, since CHOLMOD may recover.
|
||||||
|
*
|
||||||
|
* In the current version, this try/catch mechanism is used internally only in
|
||||||
|
* cholmod_analyze, which tries multiple ordering methods and picks the best
|
||||||
|
* one. If one or more ordering method fails, it keeps going. Only one
|
||||||
|
* ordering needs to succeed for cholmod_analyze to succeed.
|
||||||
|
*/
|
||||||
|
|
||||||
|
int CHOLMOD(error)
|
||||||
|
(
|
||||||
|
/* ---- input ---- */
|
||||||
|
int status, /* error status */
|
||||||
|
const char *file, /* name of source code file where error occured */
|
||||||
|
int line, /* line number in source code file where error occured*/
|
||||||
|
const char *message, /* error message */
|
||||||
|
/* --------------- */
|
||||||
|
cholmod_common *Common
|
||||||
|
)
|
||||||
|
{
|
||||||
|
RETURN_IF_NULL_COMMON (FALSE) ;
|
||||||
|
|
||||||
|
Common->status = status ;
|
||||||
|
|
||||||
|
if (!(Common->try_catch))
|
||||||
|
{
|
||||||
|
|
||||||
|
#ifndef NPRINT
|
||||||
|
/* print a warning or error message */
|
||||||
|
if (Common->print_function != NULL)
|
||||||
|
{
|
||||||
|
if (status > 0 && Common->print > 1)
|
||||||
|
{
|
||||||
|
(Common->print_function) ("CHOLMOD warning: %s\n", message) ;
|
||||||
|
fflush (stdout) ;
|
||||||
|
fflush (stderr) ;
|
||||||
|
}
|
||||||
|
else if (Common->print > 0)
|
||||||
|
{
|
||||||
|
(Common->print_function) ("CHOLMOD error: %s\n", message) ;
|
||||||
|
fflush (stdout) ;
|
||||||
|
fflush (stderr) ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* call the user error handler, if it exists */
|
||||||
|
if (Common->error_handler != NULL)
|
||||||
|
{
|
||||||
|
Common->error_handler (status, file, line, message) ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return (TRUE) ;
|
||||||
|
}
|
Loading…
Reference in New Issue