Index: trunk/doc/pslib/psLibSDRS.tex
===================================================================
--- trunk/doc/pslib/psLibSDRS.tex	(revision 284)
+++ trunk/doc/pslib/psLibSDRS.tex	(revision 285)
@@ -3010,409 +3010,14 @@
 
 \subsection{System Utilities}
-\begin{CompactItemize}
-\item 
-int {\bf ps\-Set\-Log\-Destination} (int dest)
-\begin{CompactList}\small\item\em Sets the log destination.\item\end{CompactList}\item 
-int {\bf ps\-Set\-Log\-Level} (int level)
-\begin{CompactList}\small\item\em Sets the log level.\item\end{CompactList}\item 
-void {\bf ps\-Set\-Log\-Format} (const char $\ast$fmt)
-\begin{CompactList}\small\item\em sets the log format\item\end{CompactList}\item 
-void {\bf ps\-Log\-Msg} (const char $\ast$name, int level, const char $\ast$fmt,...)
-\begin{CompactList}\small\item\em Logs a message.\item\end{CompactList}\item 
-void {\bf p\_\-ps\-VLog\-Msg} (const char $\ast$name, int level, const char $\ast$fmt, va\_\-list ap)
-\begin{CompactList}\small\item\em Logs a message from varargs.\item\end{CompactList}\item 
-void $\ast$ {\bf p\_\-ps\-Alloc} (size\_\-t size, const char $\ast$file, int lineno)
-\begin{CompactList}\small\item\em Memory allocation. Underlying private function called by macro ps\-Alloc.\item\end{CompactList}\item 
-void $\ast$ {\bf p\_\-ps\-Realloc} (void $\ast$ptr, size\_\-t size, const char $\ast$file, int lineno)
-\begin{CompactList}\small\item\em Memory re-allocation. Underlying private function called by macro ps\-Realloc.\item\end{CompactList}\item 
-void {\bf p\_\-ps\-Free} (void $\ast$ptr, const char $\ast$file, int lineno)
-\begin{CompactList}\small\item\em Free memory. Underlying private function called by macro ps\-Free.\item\end{CompactList}\item 
-int {\bf ps\-Mem\-Check\-Leaks} (int id0, {\bf ps\-Mem\-Block} $\ast$$\ast$$\ast$arr, FILE $\ast$fd)
-\begin{CompactList}\small\item\em Check for memory leaks.\item\end{CompactList}\item 
-int {\bf ps\-Mem\-Check\-Corruption} (int abort\_\-on\_\-error)
-\begin{CompactList}\small\item\em Check for memory corruption.\item\end{CompactList}\item 
-int {\bf ps\-Mem\-Get\-Ref\-Counter} (void $\ast$vptr)
-\begin{CompactList}\small\item\em Return reference counter.\item\end{CompactList}\item 
-void $\ast$ {\bf ps\-Mem\-Incr\-Ref\-Counter} (void $\ast$vptr)
-\begin{CompactList}\small\item\em Increment reference counter and return the pointer.\item\end{CompactList}\item 
-void $\ast$ {\bf ps\-Mem\-Decr\-Ref\-Counter} (void $\ast$vptr)
-\begin{CompactList}\small\item\em Decrement reference counter and return the pointer.\item\end{CompactList}\item 
-{\bf ps\-Mem\-Problem\-Callback} {\bf ps\-Mem\-Problem\-Set\-CB} ({\bf ps\-Mem\-Problem\-Callback} func)
-\begin{CompactList}\small\item\em Set callback for problems.\item\end{CompactList}\item 
-{\bf ps\-Mem\-Exhausted\-Callback} {\bf ps\-Mem\-Exhausted\-Set\-CB} ({\bf ps\-Mem\-Exhausted\-Callback} func)
-\begin{CompactList}\small\item\em Set callback for out-of-memory.\item\end{CompactList}\item 
-{\bf ps\-Mem\-Callback} {\bf ps\-Mem\-Allocate\-Set\-CB} ({\bf ps\-Mem\-Callback} func)
-\begin{CompactList}\small\item\em Set call back for when a particular memory block is allocated.\item\end{CompactList}\item 
-{\bf ps\-Mem\-Callback} {\bf ps\-Mem\-Free\-Set\-CB} ({\bf ps\-Mem\-Callback} func)
-\begin{CompactList}\small\item\em Set call back for when a particular memory block is freed.\item\end{CompactList}\item 
-int {\bf ps\-Mem\-Get\-Id} (void)
-\begin{CompactList}\small\item\em get next memory ID\item\end{CompactList}\item 
-long {\bf ps\-Mem\-Set\-Allocate\-ID} (long id)
-\begin{CompactList}\small\item\em set p\_\-ps\-Mem\-Allocate\-ID to id\item\end{CompactList}\item 
-long {\bf ps\-Mem\-Set\-Free\-ID} (long id)
-\begin{CompactList}\small\item\em set p\_\-ps\-Mem\-Free\-ID to id\item\end{CompactList}\item 
-void {\bf ps\-Abort} (const char $\ast$name, const char $\ast$fmt,...)
-\begin{CompactList}\small\item\em Prints an error message and aborts.\item\end{CompactList}\item 
-void {\bf ps\-Error} (const char $\ast$name, const char $\ast$fmt,...)
-\begin{CompactList}\small\item\em Prints an error message and doesn't abort.\item\end{CompactList}\item 
-char $\ast$ {\bf ps\-String\-Copy} (const char $\ast$str)
-\begin{CompactList}\small\item\em Allocates and returns a copy of a string.\item\end{CompactList}\item 
-void {\bf p\_\-ps\-Trace} (const char $\ast$facil, int level,...)
-\begin{CompactList}\small\item\em Send a trace message.\item\end{CompactList}\item 
-int {\bf ps\-Set\-Trace\-Level} (const char $\ast$facil, int level)
-\begin{CompactList}\small\item\em Set trace level.\item\end{CompactList}\item 
-int {\bf ps\-Get\-Trace\-Level} (const char $\ast$name)
-\begin{CompactList}\small\item\em Get the trace level.\item\end{CompactList}\item 
-void {\bf ps\-Trace\-Reset} (void)
-\begin{CompactList}\small\item\em turn off all tracing, and free trace's allocated memory\item\end{CompactList}\item 
-void {\bf ps\-Print\-Trace\-Levels} (void)
-\begin{CompactList}\small\item\em print trace levels\item\end{CompactList}\end{CompactItemize}
+\input{psSystemGroup.tex}
 
 \subsection{Data Containers}
-\begin{CompactItemize}
-\item 
-{\bf ps\-Dlist} $\ast$ {\bf ps\-Dlist\-Alloc} (void $\ast$data)
-\begin{CompactList}\small\item\em Constructor.\item\end{CompactList}\item 
-void {\bf ps\-Dlist\-Free} ({\bf ps\-Dlist} $\ast$list, void($\ast$elem\-Free)(void $\ast$))
-\begin{CompactList}\small\item\em Destructor.\item\end{CompactList}\item 
-{\bf ps\-Dlist} $\ast$ {\bf ps\-Dlist\-Add} ({\bf ps\-Dlist} $\ast$list, void $\ast$data, int where)
-\begin{CompactList}\small\item\em Add to list.\item\end{CompactList}\item 
-{\bf ps\-Dlist} $\ast$ {\bf ps\-Dlist\-Append} ({\bf ps\-Dlist} $\ast$list, void $\ast$data)
-\begin{CompactList}\small\item\em Append to a list.\item\end{CompactList}\item 
-void $\ast$ {\bf ps\-Dlist\-Remove} ({\bf ps\-Dlist} $\ast$list, void $\ast$data, int which)
-\begin{CompactList}\small\item\em PS\_\-DLIST\_\-PREV.\item\end{CompactList}\item 
-void $\ast$ {\bf ps\-Dlist\-Get} (const {\bf ps\-Dlist} $\ast$list, int which)
-\begin{CompactList}\small\item\em Retrieve from a list.\item\end{CompactList}\item 
-void {\bf ps\-Dlist\-Set\-Iterator} ({\bf ps\-Dlist} $\ast$list, int where, int which)
-\begin{CompactList}\small\item\em PS\_\-DLIST\_\-PREV.\item\end{CompactList}\item 
-void $\ast$ {\bf ps\-Dlist\-Get\-Next} ({\bf ps\-Dlist} $\ast$list, int which)
-\begin{CompactList}\small\item\em PS\_\-DLIST\_\-PREV.\item\end{CompactList}\item 
-void $\ast$ {\bf ps\-Dlist\-Get\-Prev} ({\bf ps\-Dlist} $\ast$list, int which)
-\begin{CompactList}\small\item\em PS\_\-DLIST\_\-PREV.\item\end{CompactList}\item 
-{\bf ps\-Void\-Ptr\-Array} $\ast$ {\bf ps\-Dlist\-To\-Array} ({\bf ps\-Dlist} $\ast$dlist)
-\begin{CompactList}\small\item\em Convert doubly-linked list to an array.\item\end{CompactList}\item 
-{\bf ps\-Dlist} $\ast$ {\bf ps\-Array\-To\-Dlist} ({\bf ps\-Void\-Ptr\-Array} $\ast$arr)
-\begin{CompactList}\small\item\em Convert array to a doubly-linked list.\item\end{CompactList}\item 
-{\bf ps\-Hash} $\ast$ {\bf ps\-Hash\-Alloc} (int nbucket)
-\begin{CompactList}\small\item\em Allocate hash buckets in table.\item\end{CompactList}\item 
-void {\bf ps\-Hash\-Free} ({\bf ps\-Hash} $\ast$table, void($\ast$item\-Free)(void $\ast$item))
-\begin{CompactList}\small\item\em Free hash buckets from table.\item\end{CompactList}\item 
-void $\ast$ {\bf ps\-Hash\-Insert} ({\bf ps\-Hash} $\ast$table, const char $\ast$key, void $\ast$data, void($\ast$item\-Free)(void $\ast$item))
-\begin{CompactList}\small\item\em Insert entry into table.\item\end{CompactList}\item 
-void $\ast$ {\bf ps\-Hash\-Lookup} ({\bf ps\-Hash} $\ast$table, const char $\ast$key)
-\begin{CompactList}\small\item\em Lookup key in table.\item\end{CompactList}\item 
-void $\ast$ {\bf ps\-Hash\-Remove} ({\bf ps\-Hash} $\ast$table, const char $\ast$key)
-\begin{CompactList}\small\item\em Remove key from table.\item\end{CompactList}\item 
-{\bf ps\-Float\-Array} $\ast$ {\bf ps\-Float\-Array\-Alloc} (int s, int n)
-\begin{CompactList}\small\item\em Constructor.\item\end{CompactList}\item 
-{\bf ps\-Float\-Array} $\ast$ {\bf ps\-Float\-Array\-Realloc} ({\bf ps\-Float\-Array} $\ast$my\-Array, int s)
-\begin{CompactList}\small\item\em Reallocator.\item\end{CompactList}\item 
-void {\bf ps\-Float\-Array\-Free} ({\bf ps\-Float\-Array} $\ast$restrict my\-Array)
-\begin{CompactList}\small\item\em Destructor.\item\end{CompactList}\item 
-{\bf ps\-Complex\-Array} $\ast$ {\bf ps\-Complex\-Array\-Alloc} (int s, int n)
-\begin{CompactList}\small\item\em Constructor.\item\end{CompactList}\item 
-{\bf ps\-Complex\-Array} $\ast$ {\bf ps\-Complex\-Array\-Realloc} ({\bf ps\-Complex\-Array} $\ast$my\-Array, int s)
-\begin{CompactList}\small\item\em Reallocator.\item\end{CompactList}\item 
-void {\bf ps\-Complex\-Array\-Free} ({\bf ps\-Complex\-Array} $\ast$restrict my\-Array)
-\begin{CompactList}\small\item\em Destructor.\item\end{CompactList}\item 
-{\bf ps\-Int\-Array} $\ast$ {\bf ps\-Int\-Array\-Alloc} (int s, int n)
-\begin{CompactList}\small\item\em Constructor.\item\end{CompactList}\item 
-{\bf ps\-Int\-Array} $\ast$ {\bf ps\-Int\-Array\-Realloc} ({\bf ps\-Int\-Array} $\ast$my\-Array, int s)
-\begin{CompactList}\small\item\em Reallocator.\item\end{CompactList}\item 
-void {\bf ps\-Int\-Array\-Free} ({\bf ps\-Int\-Array} $\ast$restrict my\-Array)
-\begin{CompactList}\small\item\em Destructor.\item\end{CompactList}\item 
-{\bf ps\-Double\-Array} $\ast$ {\bf ps\-Double\-Array\-Alloc} (int s, int n)
-\begin{CompactList}\small\item\em Constructor.\item\end{CompactList}\item 
-{\bf ps\-Double\-Array} $\ast$ {\bf ps\-Double\-Array\-Realloc} ({\bf ps\-Double\-Array} $\ast$my\-Array, int s)
-\begin{CompactList}\small\item\em Reallocator.\item\end{CompactList}\item 
-void {\bf ps\-Double\-Array\-Free} ({\bf ps\-Double\-Array} $\ast$restrict my\-Array)
-\begin{CompactList}\small\item\em Destructor.\item\end{CompactList}\item 
-{\bf ps\-Vector\-Array} $\ast$ {\bf ps\-Vector\-Array\-Alloc} (int s, int n)
-\begin{CompactList}\small\item\em Constructor.\item\end{CompactList}\item 
-{\bf ps\-Vector\-Array} $\ast$ {\bf ps\-Vector\-Array\-Realloc} ({\bf ps\-Vector\-Array} $\ast$my\-Array, int s)
-\begin{CompactList}\small\item\em Reallocator.\item\end{CompactList}\item 
-void {\bf ps\-Vector\-Array\-Free} ({\bf ps\-Vector\-Array} $\ast$restrict my\-Array)
-\begin{CompactList}\small\item\em Destructor.\item\end{CompactList}\item 
-{\bf ps\-Void\-Ptr\-Array} $\ast$ {\bf ps\-Void\-Ptr\-Array\-Alloc} (int n, int s)
-\begin{CompactList}\small\item\em Constructor.\item\end{CompactList}\item 
-{\bf ps\-Void\-Ptr\-Array} $\ast$ {\bf ps\-Void\-Ptr\-Array\-Realloc} ({\bf ps\-Void\-Ptr\-Array} $\ast$arr, int n)
-\begin{CompactList}\small\item\em Reallocate.\item\end{CompactList}\item 
-void {\bf ps\-Void\-Ptr\-Array\-Free} ({\bf ps\-Void\-Ptr\-Array} $\ast$arr, void($\ast$elem\-Free)(void $\ast$))
-\begin{CompactList}\small\item\em Destructor.\item\end{CompactList}\end{CompactItemize}
+\input{psDataGroup.tex}
 
 \subsection{Math Utilities}
-\begin{CompactItemize}
-\item 
-{\bf ps\-Bit\-Mask} $\ast$ {\bf ps\-Bit\-Mask\-Alloc} (int n)
-\begin{CompactList}\small\item\em Constructor.\item\end{CompactList}\item 
-void {\bf ps\-Bit\-Mask\-Free} ({\bf ps\-Bit\-Mask} $\ast$restrict my\-Mask)
-\begin{CompactList}\small\item\em Destructor.\item\end{CompactList}\item 
-{\bf ps\-Bit\-Mask} $\ast$ {\bf ps\-Bit\-Mask\-Set} ({\bf ps\-Bit\-Mask} $\ast$out\-Mask, const {\bf ps\-Bit\-Mask} $\ast$my\-Mask, int bit)
-\begin{CompactList}\small\item\em Set a bit mask.\item\end{CompactList}\item 
-int {\bf ps\-Bit\-Mask\-Test} (const {\bf ps\-Bit\-Mask} $\ast$check\-Mask, int bit)
-\begin{CompactList}\small\item\em Check a bit mask.\item\end{CompactList}\item 
-{\bf ps\-Bit\-Mask} $\ast$ {\bf ps\-Bit\-Mask\-Op} ({\bf ps\-Bit\-Mask} $\ast$out\-Mask, const {\bf ps\-Bit\-Mask} $\ast$restrict in\-Mask1, char $\ast$operator, const {\bf ps\-Bit\-Mask} $\ast$restrict in\-Mask2)
-\begin{CompactList}\small\item\em apply the given operator to two bit masks\item\end{CompactList}\item 
-{\bf ps\-Complex\-Array} $\ast$ {\bf ps\-Real\-FFT} ({\bf ps\-Complex\-Array} $\ast$restrict out, const {\bf ps\-Float\-Array} $\ast$restrict my\-Array)
-\begin{CompactList}\small\item\em Return Fourier Transform of an array.\item\end{CompactList}\item 
-{\bf ps\-Complex\-Array} $\ast$ {\bf ps\-Complex\-FFT} ({\bf ps\-Complex\-Array} $\ast$restrict out, const {\bf ps\-Complex\-Array} $\ast$restrict my\-Array, int sign)
-\begin{CompactList}\small\item\em Return [inverse?] Fourier Transform of a complex array.\item\end{CompactList}\item 
-{\bf ps\-Float\-Array} $\ast$ {\bf ps\-Power\-Spec} ({\bf ps\-Float\-Array} $\ast$restrict out, const {\bf ps\-Float\-Array} $\ast$restrict my\-Array)
-\begin{CompactList}\small\item\em Return Power spectrum of a array.\item\end{CompactList}\item 
-{\bf ps\-Polynomial1D} $\ast$ {\bf ps\-Polynomial1DAlloc} (int n)
-\begin{CompactList}\small\item\em Constructors.\item\end{CompactList}\item 
-{\bf ps\-Polynomial2D} $\ast$ {\bf ps\-Polynomial2DAlloc} (int n\-X, int n\-Y)
-\item 
-{\bf ps\-Polynomial3D} $\ast$ {\bf ps\-Polynomial3DAlloc} (int n\-X, int n\-Y, int n\-Z)
-\item 
-{\bf ps\-Polynomial4D} $\ast$ {\bf ps\-Polynomial4DAlloc} (int n\-W, int n\-X, int n\-Y, int n\-Z)
-\item 
-void {\bf ps\-Polynomial1DFree} ({\bf ps\-Polynomial1D} $\ast$restrict my\-Poly)
-\begin{CompactList}\small\item\em Destructors.\item\end{CompactList}\item 
-void {\bf ps\-Polynomial2DFree} ({\bf ps\-Polynomial2D} $\ast$restrict my\-Poly)
-\item 
-void {\bf ps\-Polynomial3DFree} ({\bf ps\-Polynomial3D} $\ast$restrict my\-Poly)
-\item 
-void {\bf ps\-Polynomial4DFree} ({\bf ps\-Polynomial4D} $\ast$restrict my\-Poly)
-\item 
-float {\bf ps\-Eval\-Polynomial1D} (float x, const {\bf ps\-Polynomial1D} $\ast$restrict my\-Poly)
-\begin{CompactList}\small\item\em Evaluate 1D polynomial.\item\end{CompactList}\item 
-float {\bf ps\-Eval\-Polynomial2D} (float x, float y, const {\bf ps\-Polynomial2D} $\ast$restrict my\-Poly)
-\begin{CompactList}\small\item\em Evaluate 2D polynomial.\item\end{CompactList}\item 
-float {\bf ps\-Eval\-Polynomial3D} (float x, float y, float z, const {\bf ps\-Polynomial3D} $\ast$restrict my\-Poly)
-\begin{CompactList}\small\item\em Evaluate 3D polynomial.\item\end{CompactList}\item 
-float {\bf ps\-Eval\-Polynomial4D} (float w, float x, float y, float z, const {\bf ps\-Polynomial4D} $\ast$restrict my\-Poly)
-\begin{CompactList}\small\item\em Evaluate 4D polynomial.\item\end{CompactList}\item 
-{\bf ps\-DPolynomial1D} $\ast$ {\bf ps\-DPolynomial1DAlloc} (int n)
-\begin{CompactList}\small\item\em Constructors.\item\end{CompactList}\item 
-{\bf ps\-DPolynomial2D} $\ast$ {\bf ps\-DPolynomial2DAlloc} (int n\-X, int n\-Y)
-\item 
-{\bf ps\-DPolynomial3D} $\ast$ {\bf ps\-DPolynomial3DAlloc} (int n\-X, int n\-Y, int n\-Z)
-\item 
-{\bf ps\-DPolynomial4D} $\ast$ {\bf ps\-DPolynomial4DAlloc} (int n\-W, int n\-X, int n\-Y, int n\-Z)
-\item 
-void {\bf ps\-DPolynomial1DFree} ({\bf ps\-DPolynomial1D} $\ast$restrict my\-Poly)
-\begin{CompactList}\small\item\em Destructors.\item\end{CompactList}\item 
-void {\bf ps\-DPolynomial2DFree} ({\bf ps\-DPolynomial2D} $\ast$restrict my\-Poly)
-\item 
-void {\bf ps\-DPolynomial3DFree} ({\bf ps\-DPolynomial3D} $\ast$restrict my\-Poly)
-\item 
-void {\bf ps\-DPolynomial4DFree} ({\bf ps\-DPolynomial4D} $\ast$restrict my\-Poly)
-\item 
-double {\bf ps\-Eval\-DPolynomial1D} (double x, const {\bf ps\-DPolynomial1D} $\ast$restrict my\-Poly)
-\begin{CompactList}\small\item\em Evaluate 1D polynomial (double precision).\item\end{CompactList}\item 
-double {\bf ps\-Eval\-DPolynomial2D} (double x, double y, const {\bf ps\-DPolynomial2D} $\ast$restrict my\-Poly)
-\begin{CompactList}\small\item\em Evaluate 2D polynomial (double precision).\item\end{CompactList}\item 
-double {\bf ps\-Eval\-DPolynomial3D} (double x, double y, double z, const {\bf ps\-DPolynomial3D} $\ast$restrict my\-Poly)
-\begin{CompactList}\small\item\em Evaluate 3D polynomial (double precision).\item\end{CompactList}\item 
-double {\bf ps\-Eval\-DPolynomial4D} (double w, double x, double y, double z, const {\bf ps\-DPolynomial4D} $\ast$restrict my\-Poly)
-\begin{CompactList}\small\item\em Evaluate 4D polynomial (double precision).\item\end{CompactList}\item 
-{\bf ps\-Type} $\ast$ {\bf ps\-Binary\-Op} (void $\ast$out, void $\ast$in1, char $\ast$operator, void $\ast$in2)
-\begin{CompactList}\small\item\em Perform a binary operation on two data items ({\bf ps\-Image} {\rm (p.\,\pageref{structpsImage})}, ps\-Vector, ps\-Scalar).\item\end{CompactList}\item 
-{\bf ps\-Type} $\ast$ {\bf ps\-Unary\-Op} (void $\ast$out, void $\ast$in, char $\ast$operator)
-\begin{CompactList}\small\item\em Perform a binary operation on two data items ({\bf ps\-Image} {\rm (p.\,\pageref{structpsImage})}, ps\-Vector, ps\-Scalar).\item\end{CompactList}\item 
-{\bf p\_\-ps\-Scalar} $\ast$ {\bf ps\-Scalar} (double value)
-\begin{CompactList}\small\item\em create a {\bf ps\-Type} {\rm (p.\,\pageref{structpsType})}-ed structure from a constant double value.\item\end{CompactList}\item 
-{\bf p\_\-ps\-Scalar} $\ast$ {\bf ps\-Scalar\-Type} (char $\ast$mode,...)
-\begin{CompactList}\small\item\em create a {\bf ps\-Type} {\rm (p.\,\pageref{structpsType})}-ed structure from a specified type\item\end{CompactList}\item 
-{\bf ps\-Matrix} $\ast$ {\bf ps\-Matrix\-Alloc} (int Xdimen, int Ydimen)
-\begin{CompactList}\small\item\em Constructor.\item\end{CompactList}\item 
-void {\bf ps\-Matrix\-Free} ({\bf ps\-Matrix} $\ast$restrict my\-Matrix)
-\begin{CompactList}\small\item\em Destructor.\item\end{CompactList}\item 
-{\bf ps\-Matrix} $\ast$ {\bf ps\-Matrix\-Invert} ({\bf ps\-Matrix} $\ast$out, const {\bf ps\-Matrix} $\ast$my\-Matrix, float $\ast$restrict determinant)
-\begin{CompactList}\small\item\em Invert matrix.\item\end{CompactList}\item 
-float {\bf ps\-Matrix\-Determinant} (const {\bf ps\-Matrix} $\ast$restrict my\-Matrix)
-\begin{CompactList}\small\item\em Matrix determinant.\item\end{CompactList}\item 
-{\bf ps\-Matrix} $\ast$ {\bf ps\-Matrix\-Op} ({\bf ps\-Matrix} $\ast$out, const {\bf ps\-Matrix} $\ast$matrix1, const char $\ast$op, const {\bf ps\-Matrix} $\ast$matrix2)
-\begin{CompactList}\small\item\em Matrix operations.\item\end{CompactList}\item 
-{\bf ps\-Matrix} $\ast$ {\bf ps\-Matrix\-Transpose} ({\bf ps\-Matrix} $\ast$out, const {\bf ps\-Matrix} $\ast$my\-Matrix)
-\begin{CompactList}\small\item\em Transpose Matrix.\item\end{CompactList}\item 
-{\bf ps\-Vector} $\ast$ {\bf ps\-Matrix\-To\-Vector} ({\bf ps\-Matrix} $\ast$my\-Matrix)
-\begin{CompactList}\small\item\em Convert matrix to vector.\item\end{CompactList}\item 
-{\bf ps\-Float\-Array} $\ast$ {\bf ps\-Minimize} (float($\ast$my\-Function)(const {\bf ps\-Float\-Array} $\ast$restrict), {\bf ps\-Float\-Array} $\ast$restrict initial\-Guess)
-\begin{CompactList}\small\item\em Minimize a particular function.\item\end{CompactList}\item 
-{\bf ps\-Float\-Array} $\ast$ {\bf ps\-Minimize\-Chi2} (float($\ast$eval\-Model)(const {\bf ps\-Float\-Array} $\ast$restrict, const {\bf ps\-Float\-Array} $\ast$restrict), const {\bf ps\-Float\-Array} $\ast$restrict domain, const {\bf ps\-Float\-Array} $\ast$restrict data, const {\bf ps\-Float\-Array} $\ast$restrict errors, {\bf ps\-Float\-Array} $\ast$restrict initial\-Guess, const {\bf ps\-Int\-Array} $\ast$restrict guess\-Mask)
-\begin{CompactList}\small\item\em Minimize chi$^\wedge$2 for input data.\item\end{CompactList}\item 
-{\bf ps\-Float\-Array} $\ast$ {\bf ps\-Get\-Array\-Polynomial} (const {\bf ps\-Float\-Array} $\ast$restrict ord, const {\bf ps\-Float\-Array} $\ast$restrict coord)
-\begin{CompactList}\small\item\em Derive a polynomial that goes through the points --- can be done analytically.\item\end{CompactList}\item 
-{\bf ps\-Float\-Array} $\ast$ {\bf ps\-Sort} ({\bf ps\-Float\-Array} $\ast$out, const {\bf ps\-Float\-Array} $\ast$my\-Array)
-\begin{CompactList}\small\item\em Sort an array.\item\end{CompactList}\item 
-{\bf ps\-Int\-Array} $\ast$ {\bf ps\-Sort\-Index} ({\bf ps\-Int\-Array} $\ast$restrict out, const {\bf ps\-Float\-Array} $\ast$restrict my\-Array)
-\begin{CompactList}\small\item\em Sort an array, along with some other stuff.\item\end{CompactList}\item 
-{\bf ps\-Stats} $\ast$ {\bf ps\-Array\-Stats} (const {\bf ps\-Float\-Array} $\ast$restrict my\-Array, const {\bf ps\-Int\-Array} $\ast$restrict mask\-Array, unsigned int mask\-Val, {\bf ps\-Stats} $\ast$stats)
-\begin{CompactList}\small\item\em Do Statistics on an array.\item\end{CompactList}\item 
-{\bf ps\-Histogram} $\ast$ {\bf ps\-Histogram\-Alloc} (float lower, float upper, float size)
-\begin{CompactList}\small\item\em Constructor.\item\end{CompactList}\item 
-{\bf ps\-Histogram} $\ast$ {\bf ps\-Histogram\-Alloc\-Generic} (const {\bf ps\-Float\-Array} $\ast$restrict lower, const {\bf ps\-Float\-Array} $\ast$restrict upper, float min\-Val, float max\-Val)
-\begin{CompactList}\small\item\em Generic constructor.\item\end{CompactList}\item 
-void {\bf ps\-Histogram\-Free} ({\bf ps\-Histogram} $\ast$restrict my\-Hist)
-\begin{CompactList}\small\item\em Destructor.\item\end{CompactList}\item 
-{\bf ps\-Histogram} $\ast$ {\bf ps\-Get\-Array\-Histogram} ({\bf ps\-Histogram} $\ast$restrict my\-Hist, const {\bf ps\-Float\-Array} $\ast$restrict my\-Array)
-\begin{CompactList}\small\item\em Calculate a histogram.\item\end{CompactList}\end{CompactItemize}
+\input{psMathGroup.tex}
 
 \subsection{Astronomy Functions}
-\begin{CompactItemize}
-\item 
-{\bf ps\-Chip} $\ast$ {\bf ps\-Chip\-In\-FPA} ({\bf ps\-FPA} $\ast$fpa, {\bf ps\-Coord} $\ast$coord)
-\begin{CompactList}\small\item\em returns Chip in FPA which contains the given FPA coordinate\item\end{CompactList}\item 
-{\bf ps\-Cell} $\ast$ {\bf ps\-Cell\-In\-Chip} ({\bf ps\-Chip} $\ast$chip, {\bf ps\-Coord} $\ast$coord)
-\begin{CompactList}\small\item\em returns Cell in Chip which contains the given chip coordinate\item\end{CompactList}\item 
-{\bf ps\-Coord} $\ast$ {\bf ps\-Coord\-Sky\-To\-TP} ({\bf ps\-Exposure} $\ast$exp, {\bf ps\-Coord} $\ast$coord)
-\begin{CompactList}\small\item\em Convert (RA,Dec) to tangent plane coords.\item\end{CompactList}\item 
-{\bf ps\-Coord} $\ast$ {\bf ps\-Coord\-TPto\-FPA} ({\bf ps\-FPA} $\ast$fpa, {\bf ps\-Coord} $\ast$coord)
-\begin{CompactList}\small\item\em Convert tangent plane coords to focal plane coordinates.\item\end{CompactList}\item 
-{\bf ps\-Coord} $\ast$ {\bf ps\-Coord\-FPAto\-Chip} ({\bf ps\-FPA} $\ast$fpa, {\bf ps\-Chip} $\ast$chip, {\bf ps\-Coord} $\ast$coord)
-\begin{CompactList}\small\item\em converts the specified FPA coord to the coord on the given Chip\item\end{CompactList}\item 
-{\bf ps\-Coord} $\ast$ {\bf ps\-Coord\-Chipto\-Cell} ({\bf ps\-Chip} $\ast$chip, {\bf ps\-Cell} $\ast$cell, {\bf ps\-Coord} $\ast$coord)
-\begin{CompactList}\small\item\em converts the specified Chip coord to the coord on the given Cell\item\end{CompactList}\item 
-{\bf ps\-Coord} $\ast$ {\bf ps\-Coord\-Cellto\-Chip} ({\bf ps\-Cell} $\ast$cell, {\bf ps\-Coord} $\ast$coord)
-\begin{CompactList}\small\item\em converts the specified Cell coord to the coord on the parent Chip\item\end{CompactList}\item 
-{\bf ps\-Coord} $\ast$ {\bf ps\-Coord\-Chipto\-FPA} ({\bf ps\-Chip} $\ast$chip, {\bf ps\-Coord} $\ast$coord)
-\begin{CompactList}\small\item\em converts the specified Chip coord to the coord on the parent FPA\item\end{CompactList}\item 
-{\bf ps\-Coord} $\ast$ {\bf ps\-Coord\-FPATo\-TP} ({\bf ps\-FPA} $\ast$fpa, {\bf ps\-Coord} $\ast$coord)
-\begin{CompactList}\small\item\em Convert focal plane coords to tangent plane coordinates.\item\end{CompactList}\item 
-{\bf ps\-Coord} $\ast$ {\bf ps\-Coord\-TPto\-Sky} ({\bf ps\-Exposure} $\ast$exp, {\bf ps\-Coord} $\ast$coord)
-\begin{CompactList}\small\item\em Convert tangent plane coords to (RA,Dec).\item\end{CompactList}\item 
-float {\bf ps\-Get\-Airmass} ({\bf ps\-Coord} $\ast$coord, double sidereal\-Time)
-\begin{CompactList}\small\item\em Get the airmass for a given position and sidereal time.\item\end{CompactList}\item 
-float {\bf ps\-Get\-Parallactic} ({\bf ps\-Coord} $\ast$coord, double sidereal\-Time)
-\begin{CompactList}\small\item\em Get the parallactic angle for a given position and sidereal time.\item\end{CompactList}\item 
-float {\bf ps\-Get\-Refraction} (float colour, {\bf ps\-Phot\-System} color\-Plus, {\bf ps\-Phot\-System} color\-Minus, {\bf ps\-Exposure} $\ast$exp)
-\begin{CompactList}\small\item\em Estimate atmospheric refraction, along the parallactic.\item\end{CompactList}\item 
-{\bf ps\-Exposure} $\ast$ {\bf ps\-Exposure\-Alloc} (double ra, double dec, double ha, double zd, double az, double lst, float mjd, float rot\-Angle, float temp, float pressure, float humidity, float exptime)
-\begin{CompactList}\small\item\em Constructor.\item\end{CompactList}\item 
-void {\bf ps\-Exposure\-Free} ({\bf ps\-Exposure} $\ast$restrict my\-Exp)
-\begin{CompactList}\small\item\em Destructor.\item\end{CompactList}\item 
-double {\bf ps\-Get\-MJD} (void)
-\begin{CompactList}\small\item\em Get current MJD, for a timestamp.\item\end{CompactList}\item 
-double {\bf ps\-Get\-Sidereal} (float mjd, float longitude)
-\begin{CompactList}\small\item\em Get current sidereal time at longitude.\item\end{CompactList}\item 
-char $\ast$ {\bf ps\-Time\-To\-ISOTime} (ps\-Time time)
-\begin{CompactList}\small\item\em Convert ps\-Time to ISOTime (Human-readable date/time string YYYY/MM/DD,HH:MM:SS.SSS).\item\end{CompactList}\item 
-double {\bf ps\-Time\-To\-UTC} (ps\-Time time)
-\begin{CompactList}\small\item\em Convert ps\-Time to UTC.\item\end{CompactList}\item 
-double {\bf ps\-Time\-To\-MJD} (ps\-Time time)
-\begin{CompactList}\small\item\em Convert ps\-Time to MJD.\item\end{CompactList}\item 
-double {\bf ps\-Time\-To\-JD} (ps\-Time time)
-\begin{CompactList}\small\item\em Convert ps\-Time to JD.\item\end{CompactList}\item 
-timeval $\ast$ {\bf ps\-Time\-To\-Timeval} (ps\-Time time)
-\begin{CompactList}\small\item\em Convert ps\-Time to timeval (struct timeval).\item\end{CompactList}\item 
-tm $\ast$ {\bf ps\-Time\-To\-Tm} (ps\-Time time)
-\begin{CompactList}\small\item\em Convert ps\-Time to broken-down time (struct tm).\item\end{CompactList}\item 
-ps\-Time $\ast$ {\bf ps\-ISOTime\-To\-Time} (char $\ast$input)
-\begin{CompactList}\small\item\em Convert ISOTime (Human-readable date/time string YYYY/MM/DD,HH:MM:SS.SSS) to ps\-Time.\item\end{CompactList}\item 
-ps\-Time $\ast$ {\bf ps\-UTCTo\-Time} (double input)
-\begin{CompactList}\small\item\em Convert UTC to ps\-Time.\item\end{CompactList}\item 
-ps\-Time $\ast$ {\bf ps\-MJDTo\-Time} (double input)
-\begin{CompactList}\small\item\em Convert MJD to ps\-Time.\item\end{CompactList}\item 
-ps\-Time $\ast$ {\bf ps\-JDTo\-Time} (double input)
-\begin{CompactList}\small\item\em Convert JD to ps\-Time.\item\end{CompactList}\item 
-ps\-Time $\ast$ {\bf ps\-Timeval\-To\-Time} (struct timeval $\ast$input)
-\begin{CompactList}\small\item\em Convert timeval to ps\-Time (struct timeval).\item\end{CompactList}\item 
-ps\-Time $\ast$ {\bf ps\-TMto\-Time} (struct tm $\ast$input)
-\begin{CompactList}\small\item\em Convert broken-to ps\-Time down time (struct tm).\item\end{CompactList}\item 
-{\bf ps\-Image} $\ast$ {\bf ps\-Image\-Alloc} (int nx, int ny, {\bf ps\-Type} type)
-\begin{CompactList}\small\item\em Create an image of the specified size and type.\item\end{CompactList}\item 
-{\bf ps\-Image} $\ast$ {\bf ps\-Image\-Subset} ({\bf ps\-Image} $\ast$image, int nx, int ny, int x0, int y0)
-\begin{CompactList}\small\item\em Create a subimage of the specified area.\item\end{CompactList}\item 
-void {\bf ps\-Image\-Free} ({\bf ps\-Image} $\ast$image)
-\begin{CompactList}\small\item\em Destroy the specified image (destroy children if they exist).\item\end{CompactList}\item 
-int {\bf ps\-Image\-Free\-Children} ({\bf ps\-Image} $\ast$image)
-\begin{CompactList}\small\item\em Destroy the children of the specified image.\item\end{CompactList}\item 
-{\bf ps\-Image} $\ast$ {\bf ps\-Image\-Copy} ({\bf ps\-Image} $\ast$output, {\bf ps\-Image} $\ast$input)
-\begin{CompactList}\small\item\em Create a copy of the specified image.\item\end{CompactList}\item 
-{\bf ps\-Float\-Array} $\ast$ {\bf ps\-Image\-Slice} ({\bf ps\-Image} $\ast$input, int x, int y, int nx, int ny, int direction, {\bf ps\-Stats} $\ast$stats)
-\begin{CompactList}\small\item\em Extract pixels from rectlinear region to a vector.\item\end{CompactList}\item 
-{\bf ps\-Float\-Array} $\ast$ {\bf ps\-Image\-Cut} ({\bf ps\-Image} $\ast$input, float xs, float ys, float xe, float ye, float dw, {\bf ps\-Stats} $\ast$stats)
-\begin{CompactList}\small\item\em Extract pixels along a line to a vector.\item\end{CompactList}\item 
-{\bf ps\-Float\-Array} $\ast$ {\bf ps\-Image\-Radial\-Cut} ({\bf ps\-Image} $\ast$input, float x, float y, float radius, float dr, {\bf ps\-Stats} $\ast$stats)
-\begin{CompactList}\small\item\em Extract radial annulii data to a vector.\item\end{CompactList}\item 
-{\bf ps\-Float\-Array} $\ast$ {\bf ps\-Image\-Contour} ({\bf ps\-Image} $\ast$input, float threshold, int binning)
-\begin{CompactList}\small\item\em Extract a 2-d contour from an image at the given threshold.\item\end{CompactList}\item 
-{\bf ps\-Image} $\ast$ {\bf ps\-Image\-Rebin} ({\bf ps\-Image} $\ast$input, float scale, {\bf ps\-Stats} $\ast$stats)
-\begin{CompactList}\small\item\em Rebin image to new scale.\item\end{CompactList}\item 
-{\bf ps\-Image} $\ast$ {\bf ps\-Image\-Rotate} ({\bf ps\-Image} $\ast$input, float angle)
-\begin{CompactList}\small\item\em Rotate image by given angle.\item\end{CompactList}\item 
-{\bf ps\-Image} $\ast$ {\bf ps\-Image\-Shift} ({\bf ps\-Image} $\ast$input, float dx, float dy, float exposed)
-\begin{CompactList}\small\item\em Shift image by an arbitrary number of pixels in either direction.\item\end{CompactList}\item 
-{\bf ps\-Image} $\ast$ {\bf ps\-Image\-Roll} ({\bf ps\-Image} $\ast$input, int dx, int dy)
-\begin{CompactList}\small\item\em Roll image by an integer number of pixels in either direction.\item\end{CompactList}\item 
-{\bf ps\-Stats} $\ast$ {\bf ps\-Image\-Get\-Stats} ({\bf ps\-Image} $\ast$input, {\bf ps\-Stats} $\ast$stats)
-\begin{CompactList}\small\item\em defines statistics to be calculated\item\end{CompactList}\item 
-{\bf ps\-Histogram} $\ast$ {\bf ps\-Image\-Histogram} ({\bf ps\-Histogram} $\ast$hist, {\bf ps\-Image} $\ast$input)
-\begin{CompactList}\small\item\em Construct a histogram from an image (or subimage).\item\end{CompactList}\item 
-{\bf ps\-Polynomial2D} $\ast$ {\bf ps\-Image\-Fit\-Polynomial} ({\bf ps\-Image} $\ast$input, {\bf ps\-Polynomial2D} $\ast$coeffs)
-\begin{CompactList}\small\item\em Fit a 2-D polynomial surface to an image.\item\end{CompactList}\item 
-int {\bf ps\-Image\-Eval\-Polynomial} ({\bf ps\-Image} $\ast$input, {\bf ps\-Polynomial2D} $\ast$coeffs)
-\begin{CompactList}\small\item\em Evaluate a 2-D polynomial surface to image pixels.\item\end{CompactList}\item 
-{\bf ps\-Image} $\ast$ {\bf ps\-Image\-Read\-Section} ({\bf ps\-Image} $\ast$output, int x, int y, int dx, int dy, int z, char $\ast$extname, char $\ast$filename)
-\begin{CompactList}\small\item\em Read an image or subimage from a named file.\item\end{CompactList}\item 
-{\bf ps\-Image} $\ast$ {\bf ps\-Image\-FRead\-Section} ({\bf ps\-Image} $\ast$output, int x, int y, int dx, int dy, int z, char $\ast$extname, FILE $\ast$f)
-\begin{CompactList}\small\item\em Read an image or subimage from file descriptor.\item\end{CompactList}\item 
-{\bf ps\-Image} $\ast$ {\bf ps\-Image\-Write\-Section} ({\bf ps\-Image} $\ast$input, int x, int y, int z, char $\ast$extname, char $\ast$filename)
-\begin{CompactList}\small\item\em Write an image section to named file (which may exist).\item\end{CompactList}\item 
-{\bf ps\-Image} $\ast$ {\bf ps\-Image\-FWrite\-Section} ({\bf ps\-Image} $\ast$input, int x, int y, int z, char $\ast$extname, FILE $\ast$f)
-\begin{CompactList}\small\item\em Write an image section to named file (which may exist).\item\end{CompactList}\item 
-ps\-Metadata $\ast$ {\bf ps\-Image\-Read\-Header} (struct ps\-Metadata $\ast$output, char $\ast$extname, char $\ast$filename)
-\begin{CompactList}\small\item\em Read only header from image file.\item\end{CompactList}\item 
-ps\-Metadata $\ast$ {\bf ps\-Image\-FRead\-Header} (struct ps\-Metadata $\ast$output, char $\ast$extname, FILE $\ast$f)
-\begin{CompactList}\small\item\em Read only header from image file descriptor.\item\end{CompactList}\item 
-{\bf ps\-Image} $\ast$ {\bf ps\-Image\-FFT} ({\bf ps\-Image} $\ast$input, int direction)
-\begin{CompactList}\small\item\em Perform an FFT on the image.\item\end{CompactList}\item 
-int {\bf ps\-Image\-Clip} ({\bf ps\-Image} $\ast$input, float min, float vmin, float max, float vmax)
-\begin{CompactList}\small\item\em Clip image values outside of range to given values.\item\end{CompactList}\item 
-int {\bf ps\-Image\-Clip\-Na\-N} ({\bf ps\-Image} $\ast$input, float value)
-\begin{CompactList}\small\item\em Clip Na\-N image pixels to given value.\item\end{CompactList}\item 
-{\bf ps\-Image} $\ast$ {\bf ps\-Image\-Binary\-Op} ({\bf ps\-Image} $\ast$out, {\bf ps\-Image} $\ast$in1, char $\ast$operator, {\bf ps\-Image} $\ast$in2)
-\begin{CompactList}\small\item\em Perform a binary operation on two images.\item\end{CompactList}\item 
-{\bf ps\-Image} $\ast$ {\bf ps\-Image\-Unary\-Op} ({\bf ps\-Image} $\ast$out, {\bf ps\-Image} $\ast$in1, char $\ast$operator)
-\begin{CompactList}\small\item\em Perform a unary operation on an image.\item\end{CompactList}\item 
-int {\bf ps\-Image\-Overlay\-Section} ({\bf ps\-Image} $\ast$image, {\bf ps\-Image} $\ast$overlay, int x0, int y0, char $\ast$operator)
-\begin{CompactList}\small\item\em Overlay subregion of image with another image.\item\end{CompactList}\item 
-{\bf ps\-Meta\-Data\-Item} $\ast$ {\bf ps\-Meta\-Data\-Item\-Alloc} (int type\-Flags, const void $\ast$val, const char $\ast$comment, const char $\ast$name,...)
-\begin{CompactList}\small\item\em Constructor.\item\end{CompactList}\item 
-void {\bf ps\-Meta\-Data\-Item\-Free} ({\bf ps\-Meta\-Data\-Item} $\ast$ms)
-\begin{CompactList}\small\item\em Destructor.\item\end{CompactList}\item 
-{\bf ps\-Meta\-Data\-Set} $\ast$ {\bf ps\-Meta\-Data\-Set\-Alloc} (void)
-\begin{CompactList}\small\item\em Constructor.\item\end{CompactList}\item 
-void {\bf ps\-Meta\-Data\-Set\-Free} ({\bf ps\-Meta\-Data\-Set} $\ast$ms)
-\begin{CompactList}\small\item\em Destructor.\item\end{CompactList}\item 
-{\bf ps\-Meta\-Data\-Item} $\ast$ {\bf ps\-Meta\-Data\-Append} ({\bf ps\-Meta\-Data\-Set} $\ast$restrict ms, {\bf ps\-Meta\-Data\-Item} $\ast$restrict item)
-\item 
-{\bf ps\-Meta\-Data\-Item} $\ast$ {\bf ps\-Meta\-Data\-Remove} ({\bf ps\-Meta\-Data\-Set} $\ast$restrict ms, const char $\ast$restrict key)
-\item 
-void {\bf ps\-Meta\-Data\-Set\-Iterator} ({\bf ps\-Meta\-Data\-Set} $\ast$ms)
-\item 
-{\bf ps\-Meta\-Data\-Item} $\ast$ {\bf ps\-Meta\-Data\-Get\-Next} ({\bf ps\-Meta\-Data\-Set} $\ast$restrict ms, const char $\ast$restrict match)
-\item 
-{\bf ps\-Meta\-Data\-Item} $\ast$ {\bf ps\-Meta\-Data\-Lookup} (const {\bf ps\-Meta\-Data\-Set} $\ast$restrict ms, const char $\ast$restrict key)
-\item 
-void {\bf ps\-Meta\-Data\-Item\-Print} (FILE $\ast$fd, const {\bf ps\-Meta\-Data\-Item} $\ast$restrict ms, const char $\ast$prefix)
-\item 
-{\bf ps\-Coord} $\ast$ {\bf ps\-Coord\-Xform\-Apply} ({\bf ps\-Coord\-Xform} $\ast$frame, {\bf ps\-Coord} $\ast$coords)
-\begin{CompactList}\small\item\em apply the coordinate transformation to the given coordinate\item\end{CompactList}\item 
-{\bf ps\-Coord} $\ast$ {\bf ps\-Distortion\-Apply} ({\bf ps\-Distortion} $\ast$pattern, {\bf ps\-Coord} $\ast$coords, float mag, float color)
-\begin{CompactList}\small\item\em apply the optical distortion to the given coordinate, magnitude, color\item\end{CompactList}\item 
-{\bf ps\-Coord} $\ast$ {\bf ps\-Get\-Offset} (const {\bf ps\-Coord} $\ast$restrict position1, const {\bf ps\-Coord} $\ast$restrict position2, char $\ast$system)
-\begin{CompactList}\small\item\em Get offset (RA,Dec) on the sky between two positions position1 and position2 may not be identical.\item\end{CompactList}\item 
-{\bf ps\-Coord} $\ast$ {\bf ps\-Apply\-Offset} (const {\bf ps\-Coord} $\ast$restrict position, const {\bf ps\-Coord} $\ast$restrict offset, char $\ast$system)
-\begin{CompactList}\small\item\em Apply an offset to a position.\item\end{CompactList}\item 
-{\bf ps\-Coord} $\ast$ {\bf ps\-Get\-Sun\-Pos} (float mjd)
-\begin{CompactList}\small\item\em Get Sun Position.\item\end{CompactList}\item 
-{\bf ps\-Coord} $\ast$ {\bf ps\-Get\-Moon\-Pos} (float mjd, double latitude, double longitude)
-\begin{CompactList}\small\item\em Get Moon position.\item\end{CompactList}\item 
-float {\bf ps\-Get\-Moon\-Phase} (float mjd)
-\begin{CompactList}\small\item\em Get Moon phase.\item\end{CompactList}\item 
-{\bf ps\-Coord} $\ast$ {\bf ps\-Get\-Solar\-System\-Pos} (char $\ast$solar\-System\-Object, float mjd)
-\begin{CompactList}\small\item\em Get Planet positions.\item\end{CompactList}\item 
-{\bf ps\-Coord} $\ast$ {\bf ps\-Coordinates\-Ito\-E} (const {\bf ps\-Coord} $\ast$restrict coordinates)
-\begin{CompactList}\small\item\em Convert ICRS to Ecliptic.\item\end{CompactList}\item 
-{\bf ps\-Coord} $\ast$ {\bf ps\-Coordinates\-Eto\-I} (const {\bf ps\-Coord} $\ast$restrict coordinates)
-\begin{CompactList}\small\item\em Convert Ecliptic to ICRS.\item\end{CompactList}\item 
-{\bf ps\-Coord} $\ast$ {\bf ps\-Coordinates\-Ito\-G} (const {\bf ps\-Coord} $\ast$restrict coordinates)
-\begin{CompactList}\small\item\em Convert ICRS to Galactic.\item\end{CompactList}\item 
-{\bf ps\-Coord} $\ast$ {\bf ps\-Coordinates\-Gto\-I} (const {\bf ps\-Coord} $\ast$restrict coordinates)
-\begin{CompactList}\small\item\em Convert Galactic to ICRS.\item\end{CompactList}\end{CompactItemize}
-
+\input{psAstroGroup.tex}
 
 \bibliographystyle{plain} \bibliography{panstarrs}
