modifying matrix allocation functions for use with R
Brian Gough
bjg@network-theory.co.uk
Wed Dec 19 13:20:00 GMT 2001
Faheem Mitha writes:
> One option I was considering was rewriting gsl_matrix_alloc (leaving out
> the error checking) in terms of R_alloc. However, I can't find the code
> for FUNCTION(gsl_block, alloc) (I assume this means gsl_block_alloc)
> used in the code for gsl_matrix_alloc. gsl_matrix_alloc itself seems to be
> in matrix/init_source.c. Can someone point me to the code for
> gsl_block_alloc, or suggest any other options?
Based on my reading of the R documentation, I would suggest using the
standard gsl_matrix_alloc in this case, and handling any errors that
occur with the R libray function error().
e.g.,
m = gsl_matrix_alloc(...)
if (m == 0) { error ("could not allocate matrix"); } ;
....
gsl_matrix_free(m);
This would only add a few lines to your code, and will work with the
standard GSL library so your extension will be more portable.
If you want to return an R object containing a gsl_matrix which can be
garbage collected then you could use a C++ wrapper, as the C++
interface in R allows the use of separate constructors and
destructors.
regards
Brian Gough
More information about the Gsl-discuss
mailing list