Isis 3.0 Object Programmers' Reference |
Home |
GSLUtility Provides top level interface to the GNU GSL. More...
#include <GSLUtility.h>
Public Types | |
typedef TNT::Array1D< double > | GSLVector |
typedef TNT::Array2D< double > | GSLMatrix |
Public Member Functions | |
bool | success (int status) const |
Tests if status is success. | |
QString | status (int gsl_errno) const |
Returns GSL specific error text. | |
void | check (int gsl_status, const char *src=__FILE__, int line=__LINE__) const |
Performs a check on GSL library function return status. | |
size_t | Rows (const gsl_matrix *m) const |
Returns number of rows in a GSL matrix. | |
size_t | Columns (const gsl_matrix *m) const |
Returns the number of coulumns in a GSL matrix. | |
size_t | Rows (const GSLMatrix &m) const |
Returns the number of rows in TNT-based matrix. | |
size_t | Columns (const GSLMatrix &m) const |
Returns the number of columns in TNT-based matrix. | |
size_t | size (const gsl_vector *v) const |
Returns the size of a GSL vector. | |
size_t | size (const gsl_matrix *m) const |
Returns the total number of elements in a GSL matrix. | |
gsl_vector * | vector (size_t n, bool zero=false) const |
Creates a GSL vector. | |
gsl_matrix * | matrix (size_t n1, size_t n2, bool zero=false) const |
Creates a GSL matrix. | |
gsl_matrix * | identity (size_t n1, size_t n2) const |
Returns a GSL identity matrix of the specified size. | |
void | setIdentity (gsl_matrix *m) const |
Initializes an existing GSL matrix to the identity matrix. | |
void | free (gsl_vector *v) const |
Frees a GSL vector. | |
void | free (gsl_matrix *m) const |
Frees a GSL matrix. | |
GSLVector | gslToGSL (const gsl_vector *v) const |
Converts a GSL vector to a TNT-based vector. | |
GSLMatrix | gslToGSL (const gsl_matrix *m) const |
Converts a GSL matrix to a TNT-based matrix. | |
gsl_vector * | GSLTogsl (const GSLVector &v, gsl_vector *gv=0) const |
Converts TNT-based vector to GSL vector. | |
gsl_matrix * | GSLTogsl (const GSLMatrix &m, gsl_matrix *gm=0) const |
Converts TNT-based matrix to GSL matrix. | |
Static Public Member Functions | |
static GSLUtility * | getInstance () |
Return a reference to the GSL (singleton) object. | |
Private Member Functions | |
GSLUtility () | |
Contructs a GSLUtility object with an error handler. | |
Static Private Member Functions | |
static void | handler (const char *reason, const char *file, int line, int gsl_errno) |
Special GSL errror handler. | |
Static Private Attributes | |
static GSLUtility * | _instance = 0 |
Singleton self-reference pointer. | |
GSLUtility Provides top level interface to the GNU GSL.
Provides GSL setup and interface utilities. This object is provided for convenience of GSL vector and matrix manipulation as well as better management of GSL error handling.
Without setting up GSL error handling, the GSL will abort when certain errors occur. This singleton object, an object where there is never more than one instance, an error handler is established that captures GSL errors and formats them into ISIS exceptions.
There are many convenience methods provided for manipulation of GSL vectors and matrixs. Motivation for this is to address element access and efficient parameter and copy mechanisms (provided by the TNT library).
There are some compile options on by default that help optimize the GSL. When the compile time DEBUG macro is set, range checking is turned on. Inline functions are also turned on by default unless the DEBUG macro is set. In addition, an additional compile time macro called SAFE_GSL is provided to emulate the DEBUG behavior, but does not invoke additional DEBUG behavior/side effects.
See http://www.gnu.org/software/gsl/ for additional details on the GNU Scientific Library.
Definition at line 86 of file GSLUtility.h.
|
private |
Contructs a GSLUtility object with an error handler.
Sets an error handler for the GSL library so fatal GSL errors are intercepted and handled throught the ISIS exception utility.
See http://www.gnu.org/software/gsl/manual/html_node/Error-Handling.html for additional information.
Definition at line 52 of file GSLUtility.cpp.
void Isis::GSL::GSLUtility::check | ( | int | gsl_status, |
const char * | src = __FILE__ , |
||
int | line = __LINE__ |
||
) | const |
Performs a check on GSL library function return status.
This covenience method performs a validity check on the return status of a GSL function. It will throw an ISIS exception should the status be anything other than GSL_SUCCESS.
gsl_status | Return value of GSL function |
src | Name of the source file where the function was called. |
line | Line number in the source where the call/error occurs |
Definition at line 324 of file GSLUtility.cpp.
size_t Isis::GSL::GSLUtility::Columns | ( | const gsl_matrix * | m | ) | const |
Returns the number of coulumns in a GSL matrix.
Definition at line 289 of file GSLUtility.cpp.
size_t Isis::GSL::GSLUtility::Columns | ( | const GSLMatrix & | m | ) | const |
Returns the number of columns in TNT-based matrix.
Definition at line 294 of file GSLUtility.cpp.
void Isis::GSL::GSLUtility::free | ( | gsl_vector * | v | ) | const |
Frees a GSL vector.
Frees the memory allocated to a GSL vector. As with any free operation, the vector cannot be used thereafter.
It is up to the user to manage all GSL allocated elements. It is not done automatically.
v | GSL vector to free |
Definition at line 158 of file GSLUtility.cpp.
void Isis::GSL::GSLUtility::free | ( | gsl_matrix * | m | ) | const |
Frees a GSL matrix.
Frees the memory allocated to a GSL matrix. As with any free operation, the matrix cannot be used thereafter.
It is up to the user to manage all GSL allocated elements. It is not done automatically.
m | GSL matrix to free |
Definition at line 174 of file GSLUtility.cpp.
|
static |
Return a reference to the GSL (singleton) object.
This method returns a pointer reference to the GSL utility object. If it is not yet created, one is constructed and lives until the application terminates.
Definition at line 66 of file GSLUtility.cpp.
Referenced by Isis::SmtkMatcher::randomNumberSetup().
GSLUtility::GSLVector Isis::GSL::GSLUtility::gslToGSL | ( | const gsl_vector * | v | ) | const |
Converts a GSL vector to a TNT-based vector.
Convenience method to convert to GSLVector type
v | GSL vector to convert |
Definition at line 188 of file GSLUtility.cpp.
GSLUtility::GSLMatrix Isis::GSL::GSLUtility::gslToGSL | ( | const gsl_matrix * | m | ) | const |
Converts a GSL matrix to a TNT-based matrix.
Convenience method to convert to GSLMatrix type
m | GSL matrix to convert |
Definition at line 206 of file GSLUtility.cpp.
gsl_vector * Isis::GSL::GSLUtility::GSLTogsl | ( | const GSLVector & | v, |
gsl_vector * | gv = 0 |
||
) | const |
Converts TNT-based vector to GSL vector.
Convenience method to convert TNT-based vector to a GSL vector.
v | TNT-based vector to convert |
gv | Optional GSL vector of same size to copy data to |
Definition at line 229 of file GSLUtility.cpp.
References _FILEINFO_.
gsl_matrix * Isis::GSL::GSLUtility::GSLTogsl | ( | const GSLMatrix & | m, |
gsl_matrix * | gm = 0 |
||
) | const |
Converts TNT-based matrix to GSL matrix.
Convenience method to convert TNT-based matrix to a GSL matrix.
m | TNT-based matrix to convert |
gm | Optional GSL matrix of same size to copy data to |
Definition at line 259 of file GSLUtility.cpp.
References _FILEINFO_.
|
staticprivate |
Special GSL errror handler.
This method is the designated ISIS error handler for errors that occur within the GSL library. It will be called by the GSL library when errors occur to handle failures. It is designed to override GSL default behavior which is to issue an error and abort the application.
This method traps the error and throws an ISIS exception indicating the error.
reason | GSL description of the error |
file | Source file where the error originates |
line | Line if source file where error occurred |
gsl_errno | Actual GSL error encountered |
Definition at line 348 of file GSLUtility.cpp.
gsl_matrix * Isis::GSL::GSLUtility::identity | ( | size_t | n1, |
size_t | n2 | ||
) | const |
Returns a GSL identity matrix of the specified size.
This method allocates a square or rectanglar matrix and initilizes it to the identity matrix. The diagonal elements are all set to 1.0, all other elements are set to 0.
n1 | Number rows to allocate |
n2 | Number columns to allocate |
Definition at line 131 of file GSLUtility.cpp.
gsl_matrix * Isis::GSL::GSLUtility::matrix | ( | size_t | n1, |
size_t | n2, | ||
bool | zero = false |
||
) | const |
Creates a GSL matrix.
This convenience method creates a GSL matrix for use within applications. The memory is dynamically allocated and must be managed (i.e., freed) by the caller. See the free() method for this provision.
n1 | Size of rows in the GSL matrix to create |
n2 | Size of columns in the GSL matrix to create |
zero | Set to true if you want GSL to assign 0 to the allocated matrix otherwise, false will not initilize the memory. |
Definition at line 110 of file GSLUtility.cpp.
size_t Isis::GSL::GSLUtility::Rows | ( | const gsl_matrix * | m | ) | const |
Returns number of rows in a GSL matrix.
Definition at line 284 of file GSLUtility.cpp.
size_t Isis::GSL::GSLUtility::Rows | ( | const GSLMatrix & | m | ) | const |
Returns the number of rows in TNT-based matrix.
Definition at line 299 of file GSLUtility.cpp.
void Isis::GSL::GSLUtility::setIdentity | ( | gsl_matrix * | m | ) | const |
Initializes an existing GSL matrix to the identity matrix.
m | Pointer to matrix to set to identity |
Definition at line 142 of file GSLUtility.cpp.
size_t Isis::GSL::GSLUtility::size | ( | const gsl_vector * | v | ) | const |
Returns the size of a GSL vector.
Definition at line 304 of file GSLUtility.cpp.
size_t Isis::GSL::GSLUtility::size | ( | const gsl_matrix * | m | ) | const |
Returns the total number of elements in a GSL matrix.
Definition at line 309 of file GSLUtility.cpp.
|
inline |
Returns GSL specific error text.
gsl_errno | GSL error number |
Definition at line 104 of file GSLUtility.h.
|
inline |
Tests if status is success.
Definition at line 94 of file GSLUtility.h.
gsl_vector * Isis::GSL::GSLUtility::vector | ( | size_t | n, |
bool | zero = false |
||
) | const |
Creates a GSL vector.
This convenience method creates a GSL vector for use within applications. The memory is dynamically allocated and must be managed (i.e., freed) by the caller. See the free() method for this provision.
n | Size of GSL vector to create |
zero | Set to true if you want GSL to assign 0 to the allocated vector otherwise, false will not initilize the memory. |
Definition at line 87 of file GSLUtility.cpp.
|
staticprivate |
Singleton self-reference pointer.
! Initialization of object reference
Definition at line 140 of file GSLUtility.h.