bug-gsl
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Bug-gsl] possible bug in gsl cblas function


From: Brian Gough
Subject: Re: [Bug-gsl] possible bug in gsl cblas function
Date: Mon, 5 Sep 2005 13:54:25 +0100

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);
     }




reply via email to

[Prev in Thread] Current Thread [Next in Thread]