This is the mail archive of the
gsl-discuss@sourceware.cygnus.com
mailing list for the GSL project.
Some problems in gsl-0.6
- To: gsl-discuss at sourceware dot cygnus dot com
- Subject: Some problems in gsl-0.6
- From: Pablo Bianucci <pbian at pccp dot com dot ar>
- Date: Fri, 9 Jun 2000 21:38:20 -0300
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;