Index: trunk/psLib/src/dataManip/psMatrix.h
===================================================================
--- trunk/psLib/src/dataManip/psMatrix.h	(revision 597)
+++ trunk/psLib/src/dataManip/psMatrix.h	(revision 597)
@@ -0,0 +1,74 @@
+#if !defined(PS_MATRIX_H)
+#define PS_MATRIX_H
+
+/** \file psMatrix.h
+ *  \brief matrix math operators
+ *  \ingroup MathGroup
+ */
+
+/** Functions **************************************************************/
+/** \addtogroup MathGroup Math Utilities
+ *  \{
+ */
+
+
+/* Linear Algebra */
+
+/** Invert matrix.  Not using restrict, to allow inversion to be done in-place */
+psImage *
+psMatrixInvert(psImage *out,  ///< Matrix to return, or NULL
+               const psImage *myMatrix, ///< Matrix to be inverted
+               float *restrict determinant ///< Determinant to return, or NULL
+              );
+
+/** Matrix determinant */
+float
+psMatrixDeterminant(const psImage *restrict myMatrix ///< Matrix to get determinant for
+                   );
+
+/** Matrix operation: addition, subtraction, multiplication */
+psImage *
+psMatrixOp(psImage *out,  ///< Matrix to return, or NULL
+           const psImage *matrix1, ///< Matrix 1
+           const char *op,              ///< Operation to perform: "+", "-", "*"
+           const psImage *matrix2 ///< Matrix 2
+          );
+
+/** Transpose Matrix */
+psImage *
+psMatrixTranspose(psImage *out,  ///< Matrix to return, or NULL
+                  const psImage *myMatrix ///< Matrix to transpose
+                 );
+
+/** LU Decomposition of a matrix */
+psImage *
+psMatrixLUD(psImage *out,  ///< Matrix to return, or NULL
+            psImage *myMatrix  ///< Matrix to decompose
+           );
+
+/** LU Solution.  Solves for and returns x in the equation Ax = b */
+psVector *
+psMatrixLUSolve(psVector *out,  ///< Vector to return, or NULL
+                const psImage *luMatrix, ///< LU-decomposed matrix
+                const psVector *rhsVector ///< right-hand-side of the equation
+               );
+
+/***********************************************************************************************************/
+
+/* Conversions */
+
+/** Convert matrix to vector.  Intended for a 1-d matrix. */
+psVector *
+psMatrixToVector(psVector *out,  ///< Vector to return, or NULL
+                 psImage *myMatrix ///< Matrix to convert
+                );
+
+/** Convert vector to matrix. */
+psImage *
+psVectorToMatrix(psImage *out,  ///< Matrix to return, or NULL
+                 psVector *myVector ///< Vector to convert
+                );
+
+/* \} */ // End of MathGroup Functions
+
+#endif
