This is the mail archive of the gsl-discuss@sourceware.cygnus.com mailing list for the GSL project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Some problems in gsl-0.6


Hi!

I am writing a program that does some manipulations on complex matrices and
found some buglets:

1) gsl_matrix_complex_{column,vector} and gsl_vector_complex_subvector 
return wrong vectors (they miscompute the start address for the vector data)
I think that the submatrices functions may be affected by the same problem.

2) The complex math functions were not being linked into the library.

3) gsl_matrix_complex_memcpy failed to copy some parts of a matrix.

I have patches for 1 and 2 (I don't know if they are right, though), and I 
could not find why 3 happens.

BTW, are there any routines for diagonalization of complex matrices?

Bye & Good Luck!

Pablo B.

P.S.: As the patches are short, I am attaching them to the message. I apologize
if that is not right.

diff -r -u gsl-0.6.orig/Makefile.am gsl-0.6/Makefile.am
--- gsl-0.6.orig/Makefile.am	Fri Jun  2 23:23:20 2000
+++ gsl-0.6/Makefile.am	Wed Jun  7 00:23:23 2000
@@ -4,7 +4,7 @@
 
 SUBDIRS = gsl utils sys test err complex block vector matrix permutation sort ieee-utils blas linalg eigen specfunc dht qrng rng randist fft poly statistics siman sum integration interpolation histogram monte ode-initval roots multiroots min multimin doc
 
-SUBLIBS = blas/libgslblas.la block/libgslblock.la dht/libgsldht.la eigen/libgsleigen.la err/libgslerr.la test/libgsltest.la fft/libgslfft.la histogram/libgslhistogram.la ieee-utils/libgslieeeutils.la integration/libgslintegration.la interpolation/libgslinterpolation.la linalg/libgsllinalg.la matrix/libgslmatrix.la min/libgslmin.la monte/libgslmonte.la multimin/libgslmultimin.la multiroots/libgslmultiroots.la ode-initval/libgslodeiv.la permutation/libgslpermutation.la poly/libgslpoly.la qrng/libgslqrng.la randist/libgslrandist.la rng/libgslrng.la roots/libgslroots.la siman/libgslsiman.la sort/libgslsort.la specfunc/libgslspecfunc.la statistics/libgslstatistics.la sum/libgslsum.la sys/libgslsys.la utils/libutils.la vector/libgslvector.la
+SUBLIBS = blas/libgslblas.la block/libgslblock.la dht/libgsldht.la eigen/libgsleigen.la err/libgslerr.la test/libgsltest.la fft/libgslfft.la histogram/libgslhistogram.la ieee-utils/libgslieeeutils.la integration/libgslintegration.la interpolation/libgslinterpolation.la linalg/libgsllinalg.la matrix/libgslmatrix.la min/libgslmin.la monte/libgslmonte.la multimin/libgslmultimin.la multiroots/libgslmultiroots.la ode-initval/libgslodeiv.la permutation/libgslpermutation.la poly/libgslpoly.la qrng/libgslqrng.la randist/libgslrandist.la rng/libgslrng.la roots/libgslroots.la siman/libgslsiman.la sort/libgslsort.la specfunc/libgslspecfunc.la statistics/libgslstatistics.la sum/libgslsum.la sys/libgslsys.la utils/libutils.la vector/libgslvector.la complex/libgslcomplex.la
 
 bin_SCRIPTS = gsl-config
 
diff -r -u gsl-0.6.orig/matrix/rowcol_source.c gsl-0.6/matrix/rowcol_source.c
--- gsl-0.6.orig/matrix/rowcol_source.c	Fri May 19 22:05:56 2000
+++ gsl-0.6/matrix/rowcol_source.c	Wed Jun  7 00:56:36 2000
@@ -67,7 +67,7 @@
       GSL_ERROR_RETURN ("row index is out of range", GSL_EINVAL, v);
     }
 
-  v.data = m->data + i * m->tda;
+  v.data = m->data + i * MULTIPLICITY * m->tda;
   v.size = m->size2;
   v.stride = 1;
 
@@ -84,7 +84,7 @@
       GSL_ERROR_RETURN ("column index is out of range", GSL_EINVAL, v);
     }
 
-  v.data = m->data + j;
+  v.data = m->data + j * MULTIPLICITY;
   v.size = m->size1;
   v.stride = m->tda;
 
diff -r -u gsl-0.6.orig/vector/init_source.c gsl-0.6/vector/init_source.c
--- gsl-0.6.orig/vector/init_source.c	Fri May 19 22:06:40 2000
+++ gsl-0.6/vector/init_source.c	Wed Jun  7 01:20:40 2000
@@ -214,7 +214,7 @@
       GSL_ERROR_RETURN ("vector would extend past end of vector", GSL_EDOM, s);
     }
 
-  s.data = v->data +  v->stride * offset ;
+  s.data = v->data +  v->stride * MULTIPLICITY * offset ;
   s.size = n;
   s.stride = v->stride;
 
@@ -241,7 +241,7 @@
       GSL_ERROR_RETURN ("vector would extend past end of vector", GSL_EDOM, s);
     }
 
-  s.data = v->data + v->stride * offset ;
+  s.data = v->data + v->stride * MULTIPLICITY * offset ;
   s.size = n;
   s.stride = v->stride * stride;
 

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]