Soumyadip Ghosh writes:
 >   cblas_dsyrk (CblasRowMajor, Uplo, Trans, INT (N), INT (K2), alpha, A->data,
 >                INT (A->tda), beta, C->data, INT (C->tda));

Thanks for the bug report, you're correct that there is an error in
the code there.  It is fixed in CVS and will be included the next
release.  You can find the patch we made below.

The GSL cvs repository is available at
http://sources.redhat.com/gsl/devel.html

-- 
best regards,

Brian Gough

Index: blas.c
===================================================================
RCS file: /home/gsl-cvs/gsl/blas/blas.c,v
retrieving revision 1.29
retrieving revision 1.31
diff -u -r1.29 -r1.31
--- blas.c      12 Dec 2004 15:07:33 -0000      1.29
+++ blas.c      24 Jun 2005 11:32:23 -0000      1.31
@@ -15,7 +15,7 @@
  * 
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 
USA.
  */
 
 /* GSL implementation of BLAS operations for vectors and dense
@@ -1627,13 +1627,14 @@
 {
   const size_t M = C->size1;
   const size_t N = C->size2;
+  const size_t J = (Trans == CblasNoTrans) ? A->size1 : A->size2;
   const size_t K = (Trans == CblasNoTrans) ? A->size2 : A->size1;
 
   if (M != N)
     {
       GSL_ERROR ("matrix C must be square", GSL_ENOTSQR);
     }
-  else if (N != K)
+  else if (N != J)
     {
       GSL_ERROR ("invalid length", GSL_EBADLEN);
     }
@@ -1650,13 +1651,14 @@
 {
   const size_t M = C->size1;
   const size_t N = C->size2;
+  const size_t J = (Trans == CblasNoTrans) ? A->size1 : A->size2;
   const size_t K = (Trans == CblasNoTrans) ? A->size2 : A->size1;
 
   if (M != N)
     {
       GSL_ERROR ("matrix C must be square", GSL_ENOTSQR);
     }
-  else if (N != K)
+  else if (N != J)
     {
       GSL_ERROR ("invalid length", GSL_EBADLEN);
     }
@@ -1676,13 +1678,14 @@
 {
   const size_t M = C->size1;
   const size_t N = C->size2;
+  const size_t J = (Trans == CblasNoTrans) ? A->size1 : A->size2;
   const size_t K = (Trans == CblasNoTrans) ? A->size2 : A->size1;
 
   if (M != N)
     {
       GSL_ERROR ("matrix C must be square", GSL_ENOTSQR);
     }
-  else if (N != K)
+  else if (N != J)
     {
       GSL_ERROR ("invalid length", GSL_EBADLEN);
     }
@@ -1701,13 +1704,14 @@
 {
   const size_t M = C->size1;
   const size_t N = C->size2;
+  const size_t J = (Trans == CblasNoTrans) ? A->size1 : A->size2;
   const size_t K = (Trans == CblasNoTrans) ? A->size2 : A->size1;
 
   if (M != N)
     {
       GSL_ERROR ("matrix C must be square", GSL_ENOTSQR);
     }
-  else if (N != K)
+  else if (N != J)
     {
       GSL_ERROR ("invalid length", GSL_EBADLEN);
     }
@@ -1727,13 +1731,14 @@
 {
   const size_t M = C->size1;
   const size_t N = C->size2;
+  const size_t J = (Trans == CblasNoTrans) ? A->size1 : A->size2;
   const size_t K = (Trans == CblasNoTrans) ? A->size2 : A->size1;
 
   if (M != N)
     {
       GSL_ERROR ("matrix C must be square", GSL_ENOTSQR);
     }
-  else if (N != K)
+  else if (N != J)
     {
       GSL_ERROR ("invalid length", GSL_EBADLEN);
     }
@@ -1751,13 +1756,14 @@
 {
   const size_t M = C->size1;
   const size_t N = C->size2;
+  const size_t J = (Trans == CblasNoTrans) ? A->size1 : A->size2;
   const size_t K = (Trans == CblasNoTrans) ? A->size2 : A->size1;
 
   if (M != N)
     {
       GSL_ERROR ("matrix C must be square", GSL_ENOTSQR);
     }
-  else if (N != K)
+  else if (N != J)
     {
       GSL_ERROR ("invalid length", GSL_EBADLEN);
     }


_______________________________________________
Bug-gsl mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/bug-gsl

Reply via email to