public inbox for gsl-discuss@sourceware.org
 help / color / mirror / Atom feed
From: Faheem Mitha <faheem@email.unc.edu>
To: Brian Gough <bjg@network-theory.co.uk>
Cc: <gsl-discuss@sources.redhat.com>
Subject: Re: modifying matrix allocation functions for use with R
Date: Wed, 19 Dec 2001 13:20:00 -0000	[thread overview]
Message-ID: <Pine.LNX.4.33.0110091729260.24042-100000@Chrestomanci> (raw)
In-Reply-To: <15294.61213.582594.103963@debian>

On Sat, 6 Oct 2001, Brian Gough wrote:

> 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.

Thanks, this is a good sugestion. After considering all the alternatives,
I decided to go with something like this.

I think I spotted a typo. In the section LU Decomposition, it is written

 - Function: int gsl_linalg_LU_decomp (gsl_matrix * A, gsl_permutation
          * P, int *SIGNUM)
     This function factorizes the square matrix A into the LU
     decomposition PA = LU.  On output the diagonal and upper
     triangular part of the input matrix A contain the matrix R. The
     lower triangular part of the input matrix (excluding the diagonal)
     contains L.  The diagonal elements of L are unity, and are not
     stored.

Surely, this should be "...the input matrix A contain the matrix U"?

Incidentally, it is a little awkward to compute the inverse of a matrix,
since this involves calling both int gsl_linalg_LU_decomp and int
gsl_linalg_LU_invert. Would it not be useful to have a "wrapper" function
which uses both together?

I have one (slighly idle) question. I have noticed that macros are used
quite liberally in the gsl source code, for example you have a macro
called TYPE which seems to do nothing at all, there is another macro
called PUNCTION(foo, bar) which concatenates foo and bar etc. I'm just
wondering what purpose some of these serve, like the TYPE macro for
example. Do they just make the code easier to write?

                                    Sincerely, Faheem Mitha.

  reply	other threads:[~2001-12-19 13:20 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-12-19 13:20 Faheem Mitha
2001-12-19 13:20 ` Brian Gough
2001-12-19 13:20   ` Faheem Mitha [this message]
2001-12-19 13:20     ` Brian Gough
2001-12-19 13:20       ` calculating matrix inverses (was Re: modifying matrix allocationfunctions for use with R) Faheem Mitha
2001-12-19 13:20         ` James Theiler
2001-12-19 13:20           ` Faheem Mitha
2001-12-19 13:20 ` modifying matrix allocation functions for use with R Timothy H. Keitt

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Pine.LNX.4.33.0110091729260.24042-100000@Chrestomanci \
    --to=faheem@email.unc.edu \
    --cc=bjg@network-theory.co.uk \
    --cc=gsl-discuss@sources.redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).