USGS

Isis 3.0 Object Programmers' Reference

Home

Isis::GSL::GSLUtility Class Reference
[Utility]

#include <GSLUtility.h>

Collaboration diagram for Isis::GSL::GSLUtility:

Collaboration graph
[legend]
List of all members.

Detailed Description

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.

Author:
2008-05-06 Kris Becker

For internal use only.

History:
2009-08-20 Kris Becker Completed documentation

Definition at line 84 of file 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.
std::string status (int gsl_errno) const
 Returns GSL specific error text.
void check (int gsl_status, char *src=__FILE__, int line=__LINE__) const throw (iException &)
 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 GSLUtilitygetInstance ()
 Return a reference to the GSL (singleton) object.

Private Member Functions

 GSLUtility ()
 Contructs a GSLUtility object with an error handler.
 ~GSLUtility ()

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
 ! Initialization of object reference


Constructor & Destructor Documentation

Isis::GSL::GSLUtility::GSLUtility (  )  [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.

References handler().

Referenced by getInstance().


Member Function Documentation

void Isis::GSL::GSLUtility::check ( int  gsl_status,
char *  src = __FILE__,
int  line = __LINE__ 
) const throw (iException &)

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.

Parameters:
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 320 of file GSLUtility.cpp.

References line, and Isis::iException::Message().

Referenced by Isis::Gruen::solve().

size_t Isis::GSL::GSLUtility::Columns ( const GSLMatrix m  )  const

Returns the number of columns in TNT-based matrix.

Definition at line 290 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 285 of file GSLUtility.cpp.

Referenced by GSLTogsl(), gslToGSL(), size(), and Isis::Gruen::solve().

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.

Parameters:
m GSL matrix to free

Definition at line 174 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.

Parameters:
v GSL vector to free

Definition at line 158 of file GSLUtility.cpp.

Referenced by Isis::Gruen::solve().

GSLUtility::GSLUtility * Isis::GSL::GSLUtility::getInstance (  )  [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.

Returns:
GSLUtility::GSLUtility* Pointer reference to GSLUtility singleton

Definition at line 66 of file GSLUtility.cpp.

References _instance, and GSLUtility().

Referenced by Isis::Gruen::solve().

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.

Parameters:
m TNT-based matrix to convert
gm Optional GSL matrix of same size to copy data to
Returns:
gsl_matrix* Pointer to GSL matrix copy

Definition at line 257 of file GSLUtility.cpp.

References _FILEINFO_, Columns(), Isis::iException::Message(), and Rows().

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.

Parameters:
v TNT-based vector to convert
gv Optional GSL vector of same size to copy data to
Returns:
gsl_vector* Pointer to GSL vector copy

Definition at line 229 of file GSLUtility.cpp.

References _FILEINFO_, Isis::iException::Message(), and size().

Referenced by Isis::Gruen::solve().

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

Parameters:
m GSL matrix to convert
Returns:
GSLUtility::GSLMatrix TNT-based matrix

Definition at line 206 of file GSLUtility.cpp.

References Columns(), and Rows().

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

Parameters:
v GSL vector to convert
Returns:
GSLUtility::GSLVector TNT-based vector

Definition at line 188 of file GSLUtility.cpp.

References size().

void Isis::GSL::GSLUtility::handler ( const char *  reason,
const char *  file,
int  line,
int  gsl_errno 
) [static, private]

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.

Parameters:
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 345 of file GSLUtility.cpp.

References Isis::iException::Message().

Referenced by GSLUtility().

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.

Parameters:
n1 Number rows to allocate
n2 Number columns to allocate
Returns:
gsl_matrix* Returns pointer to identity matrix

Definition at line 131 of file GSLUtility.cpp.

Referenced by Isis::Gruen::solve().

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.

Parameters:
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.
Returns:
gsl_matrix* Returns an allocated GSL matrix

Definition at line 110 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 295 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 280 of file GSLUtility.cpp.

Referenced by GSLTogsl(), gslToGSL(), size(), and Isis::Gruen::solve().

void Isis::GSL::GSLUtility::setIdentity ( gsl_matrix *  m  )  const

Initializes an existing GSL matrix to the identity matrix.

Parameters:
m Pointer to matrix to set to identity

Definition at line 142 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 305 of file GSLUtility.cpp.

References Columns(), and Rows().

size_t Isis::GSL::GSLUtility::size ( const gsl_vector *  v  )  const

Returns the size of a GSL vector.

Definition at line 300 of file GSLUtility.cpp.

Referenced by GSLTogsl(), and gslToGSL().

std::string Isis::GSL::GSLUtility::status ( int  gsl_errno  )  const [inline]

Returns GSL specific error text.

Parameters:
gsl_errno GSL error number
Returns:
std::string Textual context of GSL error

Definition at line 102 of file GSLUtility.h.

bool Isis::GSL::GSLUtility::success ( int  status  )  const [inline]

Tests if status is success.

Definition at line 92 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.

Parameters:
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.
Returns:
gsl_vector* Returns an allocated GSL vector

Definition at line 87 of file GSLUtility.cpp.


Member Data Documentation

GSLUtility * Isis::GSL::GSLUtility::_instance = 0 [static, private]

! Initialization of object reference

Definition at line 138 of file GSLUtility.h.

Referenced by getInstance().


The documentation for this class was generated from the following files: