13#include <gsl/gsl_errno.h>
15#include "GSLUtility.h"
16#include "IException.h"
72 return (gsl_vector_calloc(n));
75 return (gsl_vector_alloc(n));
95 return (gsl_matrix_calloc(n1, n2));
98 return (gsl_matrix_alloc(n1, n2));
115 gsl_matrix *i = gsl_matrix_alloc(n1, n2);
116 gsl_matrix_set_identity(i);
126 gsl_matrix_set_identity(m);
174 for(
size_t i = 0 ; i < n ; i++) {
175 Nv[i] = gsl_vector_get(v, i);
190 size_t nrows =
Rows(m);
192 GSLMatrix Nm(nrows, ncols);
193 for(
size_t i = 0 ; i < nrows ; i++) {
194 for(
size_t j = 0 ; j < ncols ; j++) {
195 Nm[i][j] = gsl_matrix_get(m, i, j);
213 gsl_vector *gv)
const {
215 gv = gsl_vector_alloc(v.dim());
217 else if(
size(gv) != (
size_t) v.dim()) {
219 mess <<
"Size of NL vector (" << v.dim() <<
") not same as GSL vector ("
226 for(
int i = 0 ; i < v.dim() ; i++) {
227 gsl_vector_set(gv, i, v[i]);
243 gsl_matrix *gm)
const {
245 gm = gsl_matrix_alloc(m.dim1(), m.dim2());
247 else if((
Rows(gm) != (
size_t) m.dim1()) &&
248 (
Columns(gm) != (
size_t) m.dim2())) {
250 mess <<
"Size of NL matrix (" << m.dim1() <<
"," << m.dim2()
251 <<
") not same as GSL matrix (" <<
Rows(gm) <<
"," <<
Columns(gm)
258 for(
int i = 0 ; i < m.dim1() ; i++) {
259 for(
int j = 0 ; j < m.dim2() ; j++) {
260 gsl_matrix_set(gm, i, j, m[i][j]);
308 if(gsl_status != GSL_SUCCESS) {
309 string msg =
"GSL error occured: " + string(gsl_strerror(gsl_status));
334 mess <<
"GSLError (" << gsl_errno <<
") -> " << reason;
GSLUtility Provides top level interface to the GNU GSL.
size_t Rows(const gsl_matrix *m) const
Returns number of rows in a GSL matrix.
void free(gsl_vector *v) const
Frees a GSL vector.
size_t size(const gsl_vector *v) const
Returns the size of a GSL vector.
GSLVector gslToGSL(const gsl_vector *v) const
Converts a GSL vector to a TNT-based vector.
void setIdentity(gsl_matrix *m) const
Initializes an existing GSL matrix to the identity matrix.
gsl_vector * GSLTogsl(const GSLVector &v, gsl_vector *gv=0) const
Converts TNT-based vector to GSL vector.
static GSLUtility * _instance
Singleton self-reference pointer.
static void handler(const char *reason, const char *file, int line, int gsl_errno)
Special GSL errror handler.
GSLUtility()
Contructs a GSLUtility object with an error handler.
void check(int gsl_status, const char *src=__FILE__, int line=__LINE__) const
Performs a check on GSL library function return status.
gsl_matrix * matrix(size_t n1, size_t n2, bool zero=false) const
Creates a GSL matrix.
static GSLUtility * getInstance()
Return a reference to the GSL (singleton) object.
size_t Columns(const gsl_matrix *m) const
Returns the number of coulumns in a GSL matrix.
gsl_vector * vector(size_t n, bool zero=false) const
Creates a GSL vector.
gsl_matrix * identity(size_t n1, size_t n2) const
Returns a GSL identity matrix of the specified size.
@ Programmer
This error is for when a programmer made an API call that was illegal.
This is free and unencumbered software released into the public domain.
Namespace for the standard library.