public inbox for gsl-discuss@sourceware.org
 help / color / mirror / Atom feed
* Documentation
@ 2008-08-21 17:47 Reinhold Bader
  2008-08-21 19:40 ` Documentation (2) Reinhold Bader
  0 siblings, 1 reply; 5+ messages in thread
From: Reinhold Bader @ 2008-08-21 17:47 UTC (permalink / raw)
  To: gsl-discuss; +Cc: Brian Gough

  Hello,

    the routine fgsl_linalg_QR_update appears to be incorrectly documented.
    Comments in the source as well as my own testing says that the update
    formula is

     Q'R' = Q ( R + w v^T )

    and not Q'R' = Q R + w v^T, as the 1.10 manual presently says.

Regards


-- 
  Dr. Reinhold Bader

  Leibniz-Rechenzentrum, Abt. Hochleistungssysteme | Tel. +49 89 35831 8825
  Boltzmannstr. 1, 85748 Garching                  | Fax  +49 89 35831 9700

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Documentation (2)
@ 2008-08-21 19:40 ` Reinhold Bader
  2008-08-26 14:54   ` Documentation Brian Gough
  0 siblings, 1 reply; 5+ messages in thread
From: Reinhold Bader @ 2008-08-21 19:40 UTC (permalink / raw)
  To: gsl-discuss; +Cc: Brian Gough

  Hello,

    the routine gsl_linalg_QRPT_update appears to be also incorrectly documented;
    in this case I think the comments in the source are also partially incorrect.
    My own testing implies that the update formula is

     Q'R' = Q ( R + w v^T ) P

    and not Q'R' = Q R + w v^T, as the 1.10 manual presently says, or
            Q'R' = Q ( R + w v^T P), as mentioned in the qrpt source file.

Regards


-- 
  Dr. Reinhold Bader

  Leibniz-Rechenzentrum, Abt. Hochleistungssysteme | Tel. +49 89 35831 8825
  Boltzmannstr. 1, 85748 Garching                  | Fax  +49 89 35831 9700

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Documentation
  2008-08-21 19:40 ` Documentation (2) Reinhold Bader
@ 2008-08-26 14:54   ` Brian Gough
  0 siblings, 0 replies; 5+ messages in thread
From: Brian Gough @ 2008-08-26 14:54 UTC (permalink / raw)
  To: Bader; +Cc: gsl-discuss

[-- Attachment #1: Type: text/plain, Size: 1199 bytes --]

At Thu, 21 Aug 2008 19:35:12 +0200,
Reinhold Bader wrote:
>     the routine fgsl_linalg_QR_update appears to be incorrectly
>     documented.  Comments in the source as well as my own testing
>     says that the update formula is
> 
>      Q'R' = Q ( R + w v^T )
> 
>     and not Q'R' = Q R + w v^T, as the 1.10 manual presently says.

Thanks, you're right, I've corrected the manual to match the comment
in the source.

>     the routine gsl_linalg_QRPT_update appears to be also
>     incorrectly documented; in this case I think the comments in the
>     source are also partially incorrect.  My own testing implies
>     that the update formula is
> 
>      Q'R' = Q ( R + w v^T ) P
> 
>     and not Q'R' = Q R + w v^T, as the 1.10 manual presently says,
>     or
>             Q'R' = Q ( R + w v^T P), as mentioned in the qrpt source
> file.

Yes, the manual is wrong. I think the comment in the source is right
though -- the test program below reproduces Q(R + w v^T P) (let me
know if I'm missing something here!).

I've added some tests for gsl_linalg_QRPT_update, since they were
missing, and also extended it to handle rectangular matrices.

Thanks for the bug report.

-- 
Brian Gough




[-- Attachment #2: qrpt.c --]
[-- Type: text/x-csrc, Size: 2533 bytes --]

#include <stdio.h>
#include <gsl/gsl_linalg.h>
#include <gsl/gsl_blas.h>

int main ()
{
  /* a =

   0.918312   0.891045   0.575062   0.548165
   0.046109   0.638387   0.365323   0.680073
   0.816039   0.903395   0.227423   0.499313
   0.184944   0.199351   0.674672   0.625001

   [q,r,p] = qr(a)

   w =

   0.164588
   0.502226
   0.655178
   0.055821

   v =

   0.97662
   0.27795
   0.39237
   0.19906
     
  */

  double q_data[] = {  -0.621218,   0.166224,  -0.417979,  -0.641678,
                       -0.445071,   0.045123,   0.884341,  -0.133478,
                       -0.629828,  -0.394970,  -0.200523,   0.638048,
                       -0.138983,   0.902404,  -0.054994,   0.404138 };

  double r_data[] = {   -1.43435,  -0.75684,  -1.13066,  -1.04456,
                        0.00000,   0.63107,  -0.00069,   0.48859,
                        0.00000,   0.00000,  -0.51686,   0.23780,
                        0.00000,   0.00000,   0.00000,   0.12865 };

  double p_data[] = {   0,   0,   1,   0,      /* p = 1,2,0,3 */
                        1,   0,   0,   0,
                        0,   1,   0,   0,
                        0,   0,   0,   1 } ;

  double w_data[] = {   0.164588,
                        0.502226,
                        0.655178,
                        0.055821 } ;

  double v_data[] = {   0.97662,   
                        0.27795,   
                        0.39237,   
                        0.19906 } ;

  gsl_matrix_view q = gsl_matrix_view_array (q_data, 4, 4);
  gsl_matrix_view r = gsl_matrix_view_array (r_data, 4, 4);
  gsl_vector_view w = gsl_vector_view_array (w_data, 4);
  gsl_vector_view v = gsl_vector_view_array (v_data, 4);

  gsl_permutation * p = gsl_permutation_alloc(4);
  p->data[0] = 1; p->data[1] = 2; p->data[2] = 0; p->data[3] = 3;

  gsl_matrix * z = gsl_matrix_alloc(4,4);

  gsl_linalg_QRPT_update (&q.matrix, &r.matrix, p, &w.vector, &v.vector);

  printf("q2="); gsl_matrix_fprintf(stdout, &q.matrix, "%g");
  printf("r2="); gsl_matrix_fprintf(stdout, &r.matrix, "%g");

  /* q*(r+w*v'*p)

     ans =

     0.799757   0.446193   0.597557   0.482787
     0.783298   0.569891   0.555280   0.783854
     0.792831   0.071342   0.427551   0.420130
     0.315217   0.838238   0.592062   0.707928

  */

  gsl_blas_dgemm(CblasNoTrans, CblasNoTrans,
                 1.0, &q.matrix, &r.matrix,
                 0.0, z);

  printf("z="); gsl_matrix_fprintf(stdout, z, "%g");

}

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Documentation
@ 2001-12-19 13:20 Alberto Manuel Brandao Simoes
  2001-12-19 13:20 ` Documentation Brian Gough
  0 siblings, 1 reply; 5+ messages in thread
From: Alberto Manuel Brandao Simoes @ 2001-12-19 13:20 UTC (permalink / raw)
  To: GSL LIST

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 617 bytes --]

	Hello!

	As many people knows, numexp is using GSL as a source for scientific
methods. NumExp, is being a front-end to GSL, and it is normal that people
will seek documentation on NumExp for GSL methods. That's true, too, that
GSL functions wrappers change some of the arguments, and so, GSL documentation
is not very accurate for some functions.

	All this, to ask for permition to retype some of GSL documentation on
numexp GSL module documentation (of course, with the source maintained.

	Alberto
-- 
 | Alberto Manuel Brandão Simões |
 | albie@alfarrabio.di.uminho.pt |
 | http://numexp.sourceforge.net |

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Documentation
  2001-12-19 13:20 Documentation Alberto Manuel Brandao Simoes
@ 2001-12-19 13:20 ` Brian Gough
  0 siblings, 0 replies; 5+ messages in thread
From: Brian Gough @ 2001-12-19 13:20 UTC (permalink / raw)
  To: albie; +Cc: GSL LIST

Alberto Manuel Brandao Simoes writes:
 > 	As many people knows, numexp is using GSL as a source for
 > scientific methods. NumExp, is being a front-end to GSL, and it is
 > normal that people will seek documentation on NumExp for GSL
 > methods. That's true, too, that GSL functions wrappers change some
 > of the arguments, and so, GSL documentation is not very accurate
 > for some functions.
 > 	All this, to ask for permition to retype some of GSL
 > documentation on numexp GSL module documentation (of course, with
 > the source maintained.

Yes, it's under the GNU Free Documentation License (FDL) so you can do
that provided you also use the GNU FDL for your documentation and
follow the conditions in the GNU FDL.

The conditions are normal things like including the original authors
in your authors list and adding a 'History' section to your manual
saying where the different parts came from.

You'll find the full list at http://www.gnu.org/copyleft/fdl.html in
section 4.

Brian

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2008-08-26 14:54 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-08-21 17:47 Documentation Reinhold Bader
2008-08-21 19:40 ` Documentation (2) Reinhold Bader
2008-08-26 14:54   ` Documentation Brian Gough
  -- strict thread matches above, loose matches on Subject: below --
2001-12-19 13:20 Documentation Alberto Manuel Brandao Simoes
2001-12-19 13:20 ` Documentation Brian Gough

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