Index: /trunk/psLib/src/dataManip/psMatrix.c
===================================================================
--- /trunk/psLib/src/dataManip/psMatrix.c	(revision 4159)
+++ /trunk/psLib/src/dataManip/psMatrix.c	(revision 4160)
@@ -21,6 +21,6 @@
  *  @author Robert DeSonia, MHPCC
  *
- *  @version $Revision: 1.30 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2005-06-08 02:38:02 $
+ *  @version $Revision: 1.31 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2005-06-08 22:28:07 $
  *
  *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
@@ -33,4 +33,5 @@
 #include <gsl/gsl_matrix.h>
 #include <gsl/gsl_linalg.h>
+#include <gsl/gsl_blas.h>
 #include <gsl/gsl_permutation.h>
 #include <gsl/gsl_eigen.h>
@@ -138,9 +139,13 @@
     numRows = inImage->numRows;
     numCols = inImage->numCols;
-    for(i=0; i<numRows; i++) {
-        for(j=0; j<numCols; j++) {
-            if(inImage->type.type == PS_TYPE_F32) {
-                outGslMatrix->data[i*numCols+j] = (psF64)inImage->data.F32[i][j];
-            } else {
+    if(inImage->type.type == PS_TYPE_F32) {
+        for(i=0; i<numRows; i++) {
+            for(j=0; j<numCols; j++) {
+                outGslMatrix->data[i*numCols+j] = inImage->data.F32[i][j];
+            }
+        }
+    } else {
+        for(i=0; i<numRows; i++) {
+            for(j=0; j<numCols; j++) {
                 outGslMatrix->data[i*numCols+j] = inImage->data.F64[i][j];
             }
@@ -160,9 +165,13 @@
     numRows = outImage->numRows;
     numCols = outImage->numCols;
-    for(i=0; i<numRows; i++) {
-        for(j=0; j<numCols; j++) {
-            if(outImage->type.type == PS_TYPE_F32) {
-                outImage->data.F32[i][j] = (psF32)inGslMatrix->data[i*numCols+j];
-            } else {
+    if(outImage->type.type == PS_TYPE_F32) {
+        for(i=0; i<numRows; i++) {
+            for(j=0; j<numCols; j++) {
+                outImage->data.F32[i][j] = inGslMatrix->data[i*numCols+j];
+            }
+        }
+    } else {
+        for(i=0; i<numRows; i++) {
+            for(j=0; j<numCols; j++) {
                 outImage->data.F64[i][j] = inGslMatrix->data[i*numCols+j];
             }
@@ -401,5 +410,5 @@
     }
 
-    outImage = psImageRecycle(outImage, inImage1->numCols, inImage2->numRows, inImage2->type.type);
+    outImage = psImageRecycle(outImage, inImage2->numCols, inImage1->numRows, inImage2->type.type);
 
     // Initialize GSL data
@@ -411,7 +420,6 @@
 
     // Perform multiplication
+    // gsl_blas_dgemm(CblasNoTrans, CblasNoTrans, 1.0, m1, m2, 0.0, m3);
     gsl_linalg_matmult(m1, m2, m3);
-    // N.B., gsl_blas_sgemm/dgemm could have been used instead, e.g.,
-    // gsl_blas_dgemm(CblasNoTrans, CblasNoTrans, 1.0, m1, m2, m3)
 
     // Copy GSL matrix data to psImage data
Index: /trunk/psLib/src/math/psMatrix.c
===================================================================
--- /trunk/psLib/src/math/psMatrix.c	(revision 4159)
+++ /trunk/psLib/src/math/psMatrix.c	(revision 4160)
@@ -21,6 +21,6 @@
  *  @author Robert DeSonia, MHPCC
  *
- *  @version $Revision: 1.30 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2005-06-08 02:38:02 $
+ *  @version $Revision: 1.31 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2005-06-08 22:28:07 $
  *
  *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
@@ -33,4 +33,5 @@
 #include <gsl/gsl_matrix.h>
 #include <gsl/gsl_linalg.h>
+#include <gsl/gsl_blas.h>
 #include <gsl/gsl_permutation.h>
 #include <gsl/gsl_eigen.h>
@@ -138,9 +139,13 @@
     numRows = inImage->numRows;
     numCols = inImage->numCols;
-    for(i=0; i<numRows; i++) {
-        for(j=0; j<numCols; j++) {
-            if(inImage->type.type == PS_TYPE_F32) {
-                outGslMatrix->data[i*numCols+j] = (psF64)inImage->data.F32[i][j];
-            } else {
+    if(inImage->type.type == PS_TYPE_F32) {
+        for(i=0; i<numRows; i++) {
+            for(j=0; j<numCols; j++) {
+                outGslMatrix->data[i*numCols+j] = inImage->data.F32[i][j];
+            }
+        }
+    } else {
+        for(i=0; i<numRows; i++) {
+            for(j=0; j<numCols; j++) {
                 outGslMatrix->data[i*numCols+j] = inImage->data.F64[i][j];
             }
@@ -160,9 +165,13 @@
     numRows = outImage->numRows;
     numCols = outImage->numCols;
-    for(i=0; i<numRows; i++) {
-        for(j=0; j<numCols; j++) {
-            if(outImage->type.type == PS_TYPE_F32) {
-                outImage->data.F32[i][j] = (psF32)inGslMatrix->data[i*numCols+j];
-            } else {
+    if(outImage->type.type == PS_TYPE_F32) {
+        for(i=0; i<numRows; i++) {
+            for(j=0; j<numCols; j++) {
+                outImage->data.F32[i][j] = inGslMatrix->data[i*numCols+j];
+            }
+        }
+    } else {
+        for(i=0; i<numRows; i++) {
+            for(j=0; j<numCols; j++) {
                 outImage->data.F64[i][j] = inGslMatrix->data[i*numCols+j];
             }
@@ -401,5 +410,5 @@
     }
 
-    outImage = psImageRecycle(outImage, inImage1->numCols, inImage2->numRows, inImage2->type.type);
+    outImage = psImageRecycle(outImage, inImage2->numCols, inImage1->numRows, inImage2->type.type);
 
     // Initialize GSL data
@@ -411,7 +420,6 @@
 
     // Perform multiplication
+    // gsl_blas_dgemm(CblasNoTrans, CblasNoTrans, 1.0, m1, m2, 0.0, m3);
     gsl_linalg_matmult(m1, m2, m3);
-    // N.B., gsl_blas_sgemm/dgemm could have been used instead, e.g.,
-    // gsl_blas_dgemm(CblasNoTrans, CblasNoTrans, 1.0, m1, m2, m3)
 
     // Copy GSL matrix data to psImage data
Index: /trunk/psLib/test/dataManip/tst_psMatrix05.c
===================================================================
--- /trunk/psLib/test/dataManip/tst_psMatrix05.c	(revision 4159)
+++ /trunk/psLib/test/dataManip/tst_psMatrix05.c	(revision 4160)
@@ -10,6 +10,6 @@
 *  @author  Ross Harman, MHPCC
 *
-*  @version $Revision: 1.9 $  $Name: not supported by cvs2svn $
-*  @date  $Date: 2005-04-07 20:27:42 $
+*  @version $Revision: 1.10 $  $Name: not supported by cvs2svn $
+*  @date  $Date: 2005-06-08 22:28:08 $
 *
 *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
@@ -50,34 +50,39 @@
     psImage *inImage232 = NULL;
 
-    double truthMatrix[3][3] = {{ 8.000000, 20.000000},
-                                {-4.000000, 11.000000}};
-
-
-
+    double truthMatrix[3][3] = {{  0.0, 52.0},
+                                {-14.0, 51.0}};
 
     // Test A - Create input and output images
     printPositiveTestHeader(stdout, "psMatrix", "Create input and output images");
     outImage = (psImage*) psImageAlloc(2, 2, PS_TYPE_F64);
-    inImage1 = (psImage*) psImageAlloc(2, 2, PS_TYPE_F64);
-    inImage2 = (psImage*) psImageAlloc(2, 2, PS_TYPE_F64);
+    inImage1 = (psImage*) psImageAlloc(3, 2, PS_TYPE_F64);
+    inImage2 = (psImage*) psImageAlloc(2, 3, PS_TYPE_F64);
     inImage1->data.F64[0][0] = 2;
     inImage1->data.F64[0][1] = 3;
+    inImage1->data.F64[0][2] = 4;
     inImage1->data.F64[1][0] = -1;
     inImage1->data.F64[1][1] = 2;
+    inImage1->data.F64[1][2] = 5;
     inImage2->data.F64[0][0] = 4;
     inImage2->data.F64[0][1] = 1;
     inImage2->data.F64[1][0] = 0;
     inImage2->data.F64[1][1] = 6;
+    inImage2->data.F64[2][0] = -2;
+    inImage2->data.F64[2][1] = 8;
     outImage32 = (psImage*)psImageAlloc(2, 2, PS_TYPE_F32);
-    inImage132 = (psImage*)psImageAlloc(2, 2, PS_TYPE_F32);
-    inImage232 = (psImage*)psImageAlloc(2, 2, PS_TYPE_F32);
+    inImage132 = (psImage*)psImageAlloc(3, 2, PS_TYPE_F32);
+    inImage232 = (psImage*)psImageAlloc(2, 3, PS_TYPE_F32);
     inImage132->data.F32[0][0] = 2;
     inImage132->data.F32[0][1] = 3;
+    inImage132->data.F32[0][2] = 4;
     inImage132->data.F32[1][0] = -1;
     inImage132->data.F32[1][1] = 2;
+    inImage132->data.F32[1][2] = 5;
     inImage232->data.F32[0][0] = 4;
     inImage232->data.F32[0][1] = 1;
     inImage232->data.F32[1][0] = 0;
     inImage232->data.F32[1][1] = 6;
+    inImage232->data.F32[2][0] = -2;
+    inImage232->data.F32[2][1] = 8;
     printFooter( stdout, "psMatrix", "Create input and output images", true );
 
