Index: /trunk/psLib/test/dataManip/Makefile
===================================================================
--- /trunk/psLib/test/dataManip/Makefile	(revision 758)
+++ /trunk/psLib/test/dataManip/Makefile	(revision 759)
@@ -3,6 +3,6 @@
 ##  Makefile:   test/sysUtils
 ##
-##  $Revision: 1.4 $  $Name: not supported by cvs2svn $
-##  $Date: 2004-05-19 01:52:07 $
+##  $Revision: 1.5 $  $Name: not supported by cvs2svn $
+##  $Date: 2004-05-24 21:04:06 $
 ##
 ##  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -16,5 +16,6 @@
 PSLIB_LIB_DIR = ../../lib
 
-TARGET = tst_psStats00 \
+TARGET = tst_psMatrix01 \
+         tst_psStats00 \
          tst_psStats01 \
          tst_psStats02 \
@@ -24,4 +25,5 @@
 all: $(TARGET)
 
+tst_psMatrix01:         tst_psMatrix01.o
 tst_psStats00:		tst_psStats00.o
 tst_psStats01:		tst_psStats01.o
@@ -38,5 +40,5 @@
 
 %   : %.o
-	$(CC) $(LDFLAGS) -L.. -L$(PSLIB_LIB_DIR) -lpslib -lpstest -o $@ $<
+	$(CC) $(LDFLAGS) -L.. -L$(PSLIB_LIB_DIR) -lpslib -lpstest -lgsl -lgslcblas -o $@ $<
 
 %.lint: %.c
Index: /trunk/psLib/test/dataManip/tst_psMatrix01.c
===================================================================
--- /trunk/psLib/test/dataManip/tst_psMatrix01.c	(revision 759)
+++ /trunk/psLib/test/dataManip/tst_psMatrix01.c	(revision 759)
@@ -0,0 +1,160 @@
+#include "pslib.h"
+//#include <gsl/gsl_matrix.h>
+
+int main(void)
+{
+
+    psImage *d = (psImage*)psImageAlloc(3, 3, PS_TYPE_DOUBLE);
+    psImage *dout = (psImage*)psImageAlloc(3, 3, PS_TYPE_DOUBLE);
+    d->data.F64[0][0] = 1;
+    d->data.F64[0][1] = 2;
+    d->data.F64[0][2] = 3;
+    d->data.F64[1][0] = 4;
+    d->data.F64[1][1] = 5;
+    d->data.F64[1][2] = 6;
+    d->data.F64[2][0] = 7;
+    d->data.F64[2][1] = 8;
+    d->data.F64[2][2] = 9;
+
+    psMatrixTranspose(dout, d);
+    printf("%f\n", dout->data.F64[2][1]);
+
+    psImage *e = (psImage*)psImageAlloc(3, 3, PS_TYPE_DOUBLE);
+    e->data.F64[0][0] = 1;
+    e->data.F64[0][1] = 2;
+    e->data.F64[0][2] = 3;
+    e->data.F64[1][0] = 4;
+    e->data.F64[1][1] = 5;
+    e->data.F64[1][2] = 6;
+    e->data.F64[2][0] = 7;
+    e->data.F64[2][1] = 8;
+    e->data.F64[2][2] = 9;
+
+    //    psImage *f = (psImage*)psImageAlloc(3, 3, PS_TYPE_DOUBLE);
+
+    //    char x = '+';
+
+    //    psMatrixOp(f, d, &x, e);
+
+    psImage *g = (psImage*)psImageAlloc(3, 3, PS_TYPE_DOUBLE);
+    g->data.F64[0][0] =  2;
+    g->data.F64[0][1] =  4;
+    g->data.F64[0][2] =  3;
+    g->data.F64[1][0] =  0;
+    g->data.F64[1][1] =  1;
+    g->data.F64[1][2] = -1;
+    g->data.F64[2][0] =  3;
+    g->data.F64[2][1] =  5;
+    g->data.F64[2][2] =  7;
+
+    psImage *h = (psImage*)psImageAlloc(3, 3, PS_TYPE_DOUBLE);
+    float det;
+
+    h = psMatrixInvert(h, g, &det);
+
+    int i;
+    int j;
+
+    for(i=0; i<3; i++)
+        for(j=0; j<3; j++) {
+            printf("inv %f\n", h->data.F64[i][j]);
+        }
+
+    printf("det %f\n", psMatrixDeterminant(g));
+
+    for(i=0; i<3; i++)
+        for(j=0; j<3; j++) {
+            printf("g %f\n", g->data.F64[i][j]);
+        }
+
+
+    psImage *luImage = (psImage*)psImageAlloc(3, 3, PS_TYPE_DOUBLE);
+    psVector *perm = (psVector*)psVectorAlloc(3, PS_TYPE_DOUBLE);
+    psVector *outVector = (psVector*)psVectorAlloc(3, PS_TYPE_DOUBLE);
+    psVector *inVector = (psVector*)psVectorAlloc(3, PS_TYPE_DOUBLE);
+
+    inVector->vec.d[0] =  6.0;
+    inVector->vec.d[1] = -4.0;
+    inVector->vec.d[2] =  7.0;
+    inVector->n = 3;
+
+    psMatrixLUD(luImage, perm, g);
+
+    for(i=0; i<3; i++)
+        for(j=0; j<3; j++) {
+            printf("luImage %f\n", luImage->data.F64[i][j]);
+        }
+
+    psMatrixLUSolve(outVector, luImage, inVector, perm);
+
+    for(j=0; j<3; j++)
+        printf("%f\n", outVector->vec.d[j]);
+
+    psImage *m = (psImage*)psImageAlloc(3, 3, PS_TYPE_DOUBLE);
+    m->data.F64[0][0] =  1.1;
+    m->data.F64[0][1] =  1.1;
+    m->data.F64[0][2] =  1.1;
+    m->data.F64[1][0] =  1.1;
+    m->data.F64[1][1] =  1.1;
+    m->data.F64[1][2] =  1.1;
+    m->data.F64[2][0] =  1.1;
+    m->data.F64[2][1] =  1.1;
+    m->data.F64[2][2] =  1.1;
+
+    psImage *n = (psImage*)psImageAlloc(3, 3, PS_TYPE_DOUBLE);
+    n->data.F64[0][0] =  1.1;
+    n->data.F64[0][1] =  1.1;
+    n->data.F64[0][2] =  1.1;
+    n->data.F64[1][0] =  1.1;
+    n->data.F64[1][1] =  1.1;
+    n->data.F64[1][2] =  1.1;
+    n->data.F64[2][0] =  1.1;
+    n->data.F64[2][1] =  1.1;
+    n->data.F64[2][2] =  1.1;
+
+    psImage *p = (psImage*)psImageAlloc(3, 3, PS_TYPE_DOUBLE);
+    psMatrixOp(p, m, '*', n);
+
+    for(i=0; i<3; i++)
+        for(j=0; j<3; j++) {
+            printf("luImage %f\n", p->data.F64[i][j]);
+        }
+
+
+
+    psVector *v = (psVector*)psVectorAlloc(PS_TYPE_DOUBLE, 3);
+    psImage *m2 = (psImage*)psImageAlloc(1, 3, PS_TYPE_DOUBLE);
+    m2->data.F64[0][0] = 0.0;
+    m2->data.F64[1][0] = 1.0;
+    m2->data.F64[2][0] = 2.0;
+
+    v = psMatrixToVector(v, m2);
+
+    for(j=0; j<3; j++)
+        printf("v %f\n", v->vec.d[j]);
+
+    psImage *m3 = (psImage*)psImageAlloc(1, 3, PS_TYPE_DOUBLE);
+    psVector *v3 = (psVector*)psVectorAlloc(PS_TYPE_DOUBLE, 3);
+    v3->vec.d[0] = 0.0;
+    v3->vec.d[1] = 1.0;
+    v3->vec.d[2] = 2.0;
+    m3 = psVectorToMatrix(m3, v3);
+    for(j=0; j<3; j++)
+        printf("m3 %f\n", m3->data.F64[j][0]);
+
+
+    psImage *inData = (psImage*)psImageAlloc(2, 2, PS_TYPE_DOUBLE);
+
+    inData ->data.F64[0][0] =  0.0;
+    inData ->data.F64[0][1] =  4.0;
+    inData ->data.F64[1][0] =  4.0;
+    inData ->data.F64[1][1] =  4.1;
+
+    psImage *outData = (psImage*)psImageAlloc(2, 2, PS_TYPE_DOUBLE);
+
+
+    psMatrixEigenvectors(outData, inData);
+    for(j=0; j<2; j++)
+        printf("outData %f\n", m3->data.F64[j][0]);
+
+}
