Index: trunk/psLib/test/astro/Makefile.am
===================================================================
--- trunk/psLib/test/astro/Makefile.am	(revision 4581)
+++ trunk/psLib/test/astro/Makefile.am	(revision 4601)
@@ -9,6 +9,7 @@
 	tst_psTime_02 \
 	tst_psTime_03 \
-	tst_psTime_04
-#	tst_psCoord
+	tst_psTime_04 \
+	tst_psCoord   \
+	tst_psSphereOps
 
 tst_psTime_01_SOURCES = tst_psTime_01.c
@@ -17,4 +18,5 @@
 tst_psTime_04_SOURCES = tst_psTime_04.c
 tst_psCoord_SOURCES = tst_psCoord.c
+tst_psSphereOps_SOURCES = tst_psSphereOps.c
 tst_psCoord01_SOURCES = tst_psCoord01.c
 
Index: trunk/psLib/test/astro/tst_psCoord.c
===================================================================
--- trunk/psLib/test/astro/tst_psCoord.c	(revision 4581)
+++ trunk/psLib/test/astro/tst_psCoord.c	(revision 4601)
@@ -6,6 +6,6 @@
 *  @author GLG, MHPCC
 *
-*  @version $Revision: 1.2 $ $Name: not supported by cvs2svn $
-*  @date $Date: 2005-07-20 01:21:13 $
+*  @version $Revision: 1.3 $ $Name: not supported by cvs2svn $
+*  @date $Date: 2005-07-23 02:44:09 $
 *
 *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
@@ -14,35 +14,14 @@
 #include "psTest.h"
 #include "pslib_strict.h"
-static psS32 testSphereRotAlloc(void);
 static psS32 testPlaneTransformAlloc(void);
 static psS32 testPlaneDistortAlloc(void);
 static psS32 testPlaneTransformApply(void);
 static psS32 testPlaneDistortApply(void);
-static psS32 testSphereRotApply1(void);
-static psS32 testSphereRotApply2(void);
-static psS32 testSphereRotApply3(void);
-static psS32 testSphereRotApply4(void);
-static psS32 testSphereRotApply5(void);
-static psS32 testSphereRotICRSToEcliptic(void);
-static psS32 testSphereRotEclipticToICRS(void);
-static psS32 testSphereRotICRSToGalactic(void);
-static psS32 testSphereRotGalacticToICRS(void);
-static psS32 testSphereRotPrecess(void);
+
 testDescription tests[] = {
-                              {testSphereRotAlloc, 819, "psSphereRotAlloc()", 0, false},
                               {testPlaneTransformAlloc, 826, "psPlaneTransformAlloc()", 0, false},
                               {testPlaneDistortAlloc, 827, "psPlaneDistortAlloc()", 0, false},
                               {testPlaneTransformApply, 831, "psPlaneTransformApply()", 0, false},
                               {testPlaneDistortApply, 832, "psPlaneDistortApply()", 0, false},
-                              {testSphereRotApply1, 820, "psSphereRotApply()", 0, false},
-                              {testSphereRotApply2, 820, "psSphereRotApply()", 0, false},
-                              {testSphereRotApply3, 820, "psSphereRotApply()", 0, false},
-                              {testSphereRotApply4, 820, "psSphereRotApply()", 0, false},
-                              {testSphereRotApply5, 820, "psSphereRotApply()", 0, false},
-                              {testSphereRotICRSToEcliptic, 821, "psSphereRotICRSToEcliptic()", 0, false},
-                              {testSphereRotEclipticToICRS, 822, "psSphereRotEclipticToICRS()", 0, false},
-                              {testSphereRotICRSToGalactic, 824, "psSphereRotICRSToGalactic()", 0, false},
-                              {testSphereRotGalacticToICRS, 823, "psSphereRotGalacticToICRS()", 0, false},
-                              {testSphereRotPrecess, 825, "psSphereRotPrecess()", 0, false},
                               {NULL}
                           };
@@ -53,58 +32,4 @@
 
     return ( ! runTestSuite( stderr, "psCoord", tests, argc, argv ) );
-}
-
-#define DEG_INC   30.0
-
-#define MJD_1900  15021.0        // Modified Julian Day 1/1/1900 00:00:00
-#define MJD_2000  51544.0        // Modified Julian Day 1/1/2000 00:00:00
-#define MJD_2100  88069.0        // Modified Julian Day 1/1/2100 00:00:00
-
-#define ERROR_TOL   0.0001
-
-#define ALPHA_P 1.0
-#define DELTA_P 2.0
-#define PHI_P 3.0
-
-psS32 testSphereRotAlloc( void )
-{
-    // Allocate data structure
-    psSphereRot* myST = psSphereRotAlloc(ALPHA_P, DELTA_P, PHI_P);
-
-    // Verify null not returned
-    if(myST == NULL) {
-        psError(PS_ERR_UNKNOWN,true,"Returned NULL with valid parameters");
-        return 1;
-    }
-    // Verify sin member is updated
-    double vx = cos(DELTA_P)*cos(ALPHA_P);
-    double vy = cos(DELTA_P)*sin(ALPHA_P);
-    double vz = sin(DELTA_P);
-    double q0 = vx * sin(PHI_P/2.0);
-    double q1 = vy * sin(PHI_P/2.0);
-    double q2 = vz * sin(PHI_P/2.0);
-    double q3 = cos(PHI_P/2.0);
-
-    if (FLT_EPSILON < fabs(q0 - myST->q0)) {
-        psError(PS_ERR_UNKNOWN,true,"myST->q0 is %f, should be %f\n", myST->q0, q0);
-        return 2;
-    }
-    if (FLT_EPSILON < fabs(q1 - myST->q1)) {
-        psError(PS_ERR_UNKNOWN,true,"myST->q1 is %f, should be %f\n", myST->q1, q1);
-        return 3;
-    }
-    if (FLT_EPSILON < fabs(q2 - myST->q2)) {
-        psError(PS_ERR_UNKNOWN,true,"myST->q2 is %f, should be %f\n", myST->q2, q2);
-        return 4;
-    }
-    if (FLT_EPSILON < fabs(q3 - myST->q3)) {
-        psError(PS_ERR_UNKNOWN,true,"myST->q0 is %f, should be %f\n", myST->q3, q3);
-        return 5;
-    }
-
-    // Free data structure
-    psFree(myST);
-
-    return 0;
 }
 
@@ -445,907 +370,2 @@
 }
 
-// We do a simple identity transformation on a few RA, DEC pairs.
-psS32 testSphereRotApply1( void )
-{
-    psSphere *in = psSphereAlloc();
-    psSphere *out = psSphereAlloc();
-    psSphere *temp = NULL;
-    psSphere *rc = NULL;
-    psSphereRot *myST = psSphereRotAlloc(0.0, 0.0, 0.0);
-
-    for (float r=0.0;r<180.0;r+=DEG_INC) {
-        for (float d=0.0;d<90.0;d+=DEG_INC) {
-            in->r = DEG_TO_RAD(r);
-            in->d = DEG_TO_RAD(d);
-            in->rErr = 0.0;
-            in->dErr = 0.0;
-
-            if(psSphereRotApply(out, myST, in) != out) {
-                psError(PS_ERR_UNKNOWN,true,"Did not return output pointer.");
-                return 1;
-            }
-            if (ERROR_TOL < fabs(out->r - in->r)) {
-                psError(PS_ERR_UNKNOWN,true,"out->r is %f, should be %f\n", out->r, in->r);
-                return 2;
-            }
-            if (ERROR_TOL < fabs(out->d - in->d)) {
-                psError(PS_ERR_UNKNOWN,true,"out->d is %f, should be %f\n", out->d, in->d);
-                return 3;
-            }
-        }
-    }
-
-    // Verify new sphere object is created if out parameter NULL
-    temp = psSphereRotApply(NULL, myST, in);
-    if ( temp == NULL) {
-        psError(PS_ERR_UNKNOWN,true,"Returned NULL when out parameter was null");
-        return 4;
-    }
-    psFree(temp);
-
-    // Verify NULL returned if transform structure null
-    psLogMsg(__func__,PS_LOG_INFO,"Following should generate an error");
-    rc = psSphereRotApply(NULL, NULL, in);
-    if (rc != NULL) {
-        psError(PS_ERR_UNKNOWN,true,"psSphereRotApply() did not return NULL.");
-        return 5;
-    }
-
-    // Verify NULL returned when input sphere is NULL
-    psLogMsg(__func__,PS_LOG_INFO,"Following should generate an error");
-    rc = psSphereRotApply(NULL, myST, NULL);
-    if (rc != NULL) {
-        psError(PS_ERR_UNKNOWN,true,"psSphereRotApply() did not return NULL");
-        return 6;
-    }
-
-    psFree(myST);
-    psFree(out);
-    psFree(in);
-
-    return 0;
-}
-
-/******************************************************************************
-testSphereRotApply2(): This test verifies that psSphereRotApply()
-works properly.  We create two psSphereRots: a forward transform and a
-reverse transform (which is the mathematical inverse of the forward transform).
-We apply both transforms to several spherical coordinates and ensure that the
-original input coordinate is obtained after applying both transforms.
- 
-XXX: We currently test the alpha and delta offsets independently.  Attempts to
-test them both concurrently failed.  Determine why this is.  Are the following
-spherical transforms not mathematical inverses?
-    psSphereRotAlloc(X, Y, 0.0)
-    psSphereRotAlloc(-X, -Y, 0.0)
- *****************************************************************************/
-#define ERROR_PERCENT 0.01
-psS32 testSphereRotApply2( void )
-{
-    psS32 testStatus = 0;
-    psSphere in;
-    psSphere out;
-    psSphere out2;
-    psSphereRot *mySphereRotForward = NULL;
-    psSphereRot *mySphereRotReverse = NULL;
-
-
-    mySphereRotForward = psSphereRotAlloc(DEG_TO_RAD(22.0),
-                                          0.0,
-                                          0.0);
-    mySphereRotReverse = psSphereRotAlloc(DEG_TO_RAD(-22.0),
-                                          0.0,
-                                          0.0);
-
-    for (float r=0.1;r<180.0;r+=(DEG_INC/5.0)) {
-        for (float d=0.1;d<90.0;d+=(DEG_INC/5.0)) {
-            in.r = DEG_TO_RAD(r);
-            in.d = DEG_TO_RAD(d);
-            in.rErr = 0.0;
-            in.dErr = 0.0;
-
-            psSphereRotApply(&out, mySphereRotForward, &in);
-            psSphereRotApply(&out2, mySphereRotReverse, &out);
-
-            if ((fabs((in.r - out2.r) / in.r) > ERROR_PERCENT) ||
-                    (fabs((in.d - out2.d) / in.d) > ERROR_PERCENT)) {
-                printf("ERROR: \n");
-                printf("Input  coords (R, D) are (%f, %f)\n", in.r, in.d);
-                printf("Output coords (R, D) are (%f, %f)\n", out2.r, out2.d);
-                testStatus = 4;
-            }
-        }
-    }
-    psFree(mySphereRotForward);
-    psFree(mySphereRotReverse);
-
-    mySphereRotForward = psSphereRotAlloc(0.0,
-                                          DEG_TO_RAD(33.0),
-                                          0.0);
-    mySphereRotReverse = psSphereRotAlloc(0.0,
-                                          DEG_TO_RAD(-33.0),
-                                          0.0);
-    for (float r=0.1;r<180.0;r+=(DEG_INC/5.0)) {
-        for (float d=0.1;d<90.0;d+=(DEG_INC/5.0)) {
-            in.r = DEG_TO_RAD(r);
-            in.d = DEG_TO_RAD(d);
-            in.rErr = 0.0;
-            in.dErr = 0.0;
-
-            psSphereRotApply(&out, mySphereRotForward, &in);
-            psSphereRotApply(&out2, mySphereRotReverse, &out);
-
-            if ((fabs((in.r - out2.r) / in.r) > ERROR_PERCENT) ||
-                    (fabs((in.d - out2.d) / in.d) > ERROR_PERCENT)) {
-                printf("ERROR: \n");
-                printf("Input  coords (R, D) are (%f, %f)\n", in.r, in.d);
-                printf("Output coords (R, D) are (%f, %f)\n", out2.r, out2.d);
-                testStatus = 4;
-            }
-        }
-    }
-    psFree(mySphereRotForward);
-    psFree(mySphereRotReverse);
-
-    return(testStatus);
-}
-
-// Test point 1  ADD  ICRS(0,0) to Galactic (96.337272,-60.188553)
-//                              to Ecliptic (0,0) with T=1
-#define SPHERE_COORD_TP1_GAL_R           1.681409       //  96.337272 degrees
-#define SPHERE_COORD_TP1_GAL_D          -1.050488       // -60.188553 degrees
-#define SPHERE_COORD_TP1_ECL_R           0.0
-#define SPHERE_COORD_TP1_ECL_D           0.0
-#define SPHERE_COORD_TP1_INVERSE_R       0.0
-#define SPHERE_COORD_TP1_INVERSE_D       0.0
-
-// Test point 2 ADD  ICRS(0,90) to Galactic (122.93192, 27.12825)
-//                              to Ecliptic (90,66.560719) with T=1
-#define SPHERE_COORD_TP2_GAL_R           2.145567       // 122.93192 degrees
-#define SPHERE_COORD_TP2_GAL_D           0.473477       // 27.12825  degrees
-#define SPHERE_COORD_TP2_ECL_R           1.570796       // 90        degrees
-#define SPHERE_COORD_TP2_ECL_D           1.161704       // 66.560719 degrees
-#define SPHERE_COORD_TP2_INVERSE_R       0.0            // 0         degrees
-#define SPHERE_COORD_TP2_INVERSE_D       1.570796       // 90        degrees
-
-// Test point 3 ADD  ICRS(180,30) to Galactic (195.639488, 78.353806)
-//                                to Ecliptic (167.072470, 27.308813) with T=2
-#define SPHERE_COORD_TP3_GAL_R           3.414553       // 195.639488 degrees
-#define SPHERE_COORD_TP3_GAL_D           1.367532       // 78.353806  degrees
-#define SPHERE_COORD_TP3_ECL_R           2.915965       // 167.07247  degrees
-#define SPHERE_COORD_TP3_ECL_D           0.476629       // 27.308813  degrees
-#define SPHERE_COORD_TP3_INVERSE_R       3.141593       // 180.0      degrees
-#define SPHERE_COORD_TP3_INVERSE_D       0.523599       // 30.0       degrees
-
-psS32 testSphereRotApply3( void)
-{
-
-    psSphereRot*  testTransform;
-    psSphere*           inputCoord = psSphereAlloc();
-    psSphere*           outputCoord = NULL;
-    psSphere*           inverseOutputCoord = NULL;
-
-    inputCoord->r = SPHERE_COORD_TP1_INVERSE_R;
-    inputCoord->d = SPHERE_COORD_TP1_INVERSE_D;
-    inputCoord->rErr = 0.0;
-    inputCoord->dErr = 0.0;
-
-    // Set test date time to 1/1/2000 00:00:00
-    psTime* testDateTime = psTimeFromMJD(MJD_2000);
-
-    // Create transform ICRS to Galactic
-    testTransform = psSphereRotICRSToGalactic();
-
-    // Perform transform from ICRS to Galactic
-    outputCoord = psSphereRotApply(outputCoord,testTransform,inputCoord);
-    // Verify output not NULL and member values set correctly
-    if(outputCoord == NULL) {
-        psError(PS_ERR_UNKNOWN,true,"psSphereRotApply returned NULL");
-        return 1;
-    }
-    if(fabs(outputCoord->r - SPHERE_COORD_TP1_GAL_R) > ERROR_TOL) {
-        psError(PS_ERR_UNKNOWN,true,"psSphereRotApply return coord r %lg not as expected %lg",
-                outputCoord->r, SPHERE_COORD_TP1_GAL_R);
-        return 2;
-    }
-    if(fabs(outputCoord->d - SPHERE_COORD_TP1_GAL_D) > ERROR_TOL) {
-        psError(PS_ERR_UNKNOWN,true,"psSphereRotApply return coord d %ld not as expected %lg",
-                outputCoord->d, SPHERE_COORD_TP1_GAL_D);
-        return 3;
-    }
-    psFree(testTransform);
-
-    // Create inverse transform Galactic to ICRS
-    testTransform = psSphereRotGalacticToICRS();
-
-    // Perform transform from Galactic to ICRS
-    inverseOutputCoord = psSphereRotApply(inverseOutputCoord,testTransform,outputCoord);
-    // Verify output not NULL and member values set correctly
-    if(inverseOutputCoord == NULL) {
-        psError(PS_ERR_UNKNOWN,true,"psSphereRotApply returned NULL");
-        return 4;
-    }
-
-    if(fabs(inverseOutputCoord->r - SPHERE_COORD_TP1_INVERSE_R) > ERROR_TOL) {
-        psError(PS_ERR_UNKNOWN,true,"psSphereRotApply return coord r %lg not as expected %lg",
-                inverseOutputCoord->r, SPHERE_COORD_TP1_INVERSE_R);
-        return 5;
-    }
-    if(fabs(inverseOutputCoord->d - SPHERE_COORD_TP1_INVERSE_D) > ERROR_TOL) {
-        psError(PS_ERR_UNKNOWN,true,"psSphereRotApply return coord d %ld not as expected %lg",
-                inverseOutputCoord->d, SPHERE_COORD_TP1_INVERSE_D);
-        return 6;
-    }
-    psFree(testTransform);
-
-    // Create transform ICRS to Ecliptic
-    testTransform = psSphereRotICRSToEcliptic(testDateTime);
-
-    // Perform transform from ICRS to Ecliptic
-    outputCoord = psSphereRotApply(outputCoord,testTransform,inputCoord);
-    // Verify output not NULL and member values set correctly
-    if(outputCoord == NULL) {
-        psError(PS_ERR_UNKNOWN,true,"psSphereRotApply returned NULL");
-        return 7;
-    }
-    if(fabs(outputCoord->r - SPHERE_COORD_TP1_ECL_R) > ERROR_TOL) {
-        psError(PS_ERR_UNKNOWN,true,"psSphereRotApply return coord r %lg not as expected %lg",
-                outputCoord->r, SPHERE_COORD_TP1_ECL_R);
-        return 8;
-    }
-    if(fabs(outputCoord->d - SPHERE_COORD_TP1_ECL_D) > ERROR_TOL) {
-        psError(PS_ERR_UNKNOWN,true,"psSphereRotApply return coord d %ld not as expected %lg",
-                outputCoord->d, SPHERE_COORD_TP1_ECL_D);
-        return 9;
-    }
-    psFree(testTransform);
-
-    // Create inverse transform Ecliptic to ICRS
-    testTransform = psSphereRotEclipticToICRS(testDateTime);
-
-    // Perform transform from Ecliptic to ICRS
-    inverseOutputCoord = psSphereRotApply(inverseOutputCoord,testTransform,outputCoord);
-    // Verify output not NULL and member values set correctly
-    if(inverseOutputCoord == NULL) {
-        psError(PS_ERR_UNKNOWN,true,"psSphereRotApply returned NULL");
-        return 10;
-    }
-    if(fabs(inverseOutputCoord->r - SPHERE_COORD_TP1_INVERSE_R) > ERROR_TOL) {
-        psError(PS_ERR_UNKNOWN,true,"psSphereRotApply return coord r %lg not as expected %lg",
-                inverseOutputCoord->r, SPHERE_COORD_TP1_INVERSE_R);
-        return 11;
-    }
-    if(fabs(inverseOutputCoord->d - SPHERE_COORD_TP1_INVERSE_D) > ERROR_TOL) {
-        psError(PS_ERR_UNKNOWN,true,"psSphereRotApply return coord d %ld not as expected %lg",
-                inverseOutputCoord->d, SPHERE_COORD_TP1_INVERSE_D);
-        return 12;
-    }
-    psFree(testTransform);
-
-    psFree(testDateTime);
-    psFree(outputCoord);
-    psFree(inputCoord);
-    psFree(inverseOutputCoord);
-
-    return 0;
-}
-
-psS32 testSphereRotApply4( void)
-{
-
-    psSphereRot*  testTransform;
-    psSphere*           inputCoord = psSphereAlloc();
-    psSphere*           outputCoord = NULL;
-    psSphere*           inverseOutputCoord = NULL;
-
-    inputCoord->r = SPHERE_COORD_TP2_INVERSE_R;
-    inputCoord->d = SPHERE_COORD_TP2_INVERSE_D;
-    inputCoord->rErr = 0.0;
-    inputCoord->dErr = 0.0;
-
-    // Set test date time to 1/1/2000 00:00:00
-    psTime* testDateTime = psTimeFromMJD(MJD_2000);
-
-    // Create transform ICRS to Galactic
-    testTransform = psSphereRotICRSToGalactic();
-
-    // Perform transform from ICRS to Galactic
-    outputCoord = psSphereRotApply(outputCoord,testTransform,inputCoord);
-    // Verify output not NULL and member values set correctly
-    if(outputCoord == NULL) {
-        psError(PS_ERR_UNKNOWN,true,"psSphereRotApply returned NULL");
-        return 1;
-    }
-    if(fabs(outputCoord->r - SPHERE_COORD_TP2_GAL_R) > ERROR_TOL) {
-        psError(PS_ERR_UNKNOWN,true,"psSphereRotApply return coord r %lg not as expected %lg",
-                outputCoord->r, SPHERE_COORD_TP2_GAL_R);
-        return 2;
-    }
-    if(fabs(outputCoord->d - SPHERE_COORD_TP2_GAL_D) > ERROR_TOL) {
-        psError(PS_ERR_UNKNOWN,true,"psSphereRotApply return coord d %ld not as expected %lg",
-                outputCoord->d, SPHERE_COORD_TP2_GAL_D);
-        return 3;
-    }
-    psFree(testTransform);
-
-    // Create inverse transform Galactic to ICRS
-    testTransform = psSphereRotGalacticToICRS();
-
-    // Perform transform from Galactic to ICRS
-    inverseOutputCoord = psSphereRotApply(inverseOutputCoord,testTransform,outputCoord);
-    // Verify output not NULL and member values set correctly
-    if(inverseOutputCoord == NULL) {
-        psError(PS_ERR_UNKNOWN,true,"psSphereRotApply returned NULL");
-        return 4;
-    }
-    // atan2 function introduces some error with y close to zero, increased error tolerance
-    if(fabs(inverseOutputCoord->r - SPHERE_COORD_TP2_INVERSE_R) > ERROR_TOL+0.1) {
-        psError(PS_ERR_UNKNOWN,true,"psSphereRotApply return coord r %lg not as expected %lg",
-                inverseOutputCoord->r, SPHERE_COORD_TP2_INVERSE_R);
-        return 5;
-    }
-    if(fabs(inverseOutputCoord->d - SPHERE_COORD_TP2_INVERSE_D) > ERROR_TOL) {
-        psError(PS_ERR_UNKNOWN,true,"psSphereRotApply return coord d %ld not as expected %lg",
-                inverseOutputCoord->d, SPHERE_COORD_TP2_INVERSE_D);
-        return 6;
-    }
-    psFree(testTransform);
-
-    // Create transform ICRS to Ecliptic
-    testTransform = psSphereRotICRSToEcliptic(testDateTime);
-
-    // Perform transform from ICRS to Ecliptic
-    outputCoord = psSphereRotApply(outputCoord,testTransform,inputCoord);
-    // Verify output not NULL and member values set correctly
-    if(outputCoord == NULL) {
-        psError(PS_ERR_UNKNOWN,true,"psSphereRotApply returned NULL");
-        return 7;
-    }
-    if(fabs(outputCoord->r - SPHERE_COORD_TP2_ECL_R) > ERROR_TOL) {
-        psError(PS_ERR_UNKNOWN,true,"psSphereRotApply return coord r %lg not as expected %lg",
-                outputCoord->r, SPHERE_COORD_TP2_ECL_R);
-        return 8;
-    }
-    if(fabs(outputCoord->d - SPHERE_COORD_TP2_ECL_D) > ERROR_TOL) {
-        psError(PS_ERR_UNKNOWN,true,"psSphereRotApply return coord d %ld not as expected %lg",
-                outputCoord->d, SPHERE_COORD_TP2_ECL_D);
-        return 9;
-    }
-    psFree(testTransform);
-
-    // Create inverse transform Ecliptic to ICRS
-    testTransform = psSphereRotEclipticToICRS(testDateTime);
-
-    // Perform transform from Ecliptic to ICRS
-    inverseOutputCoord = psSphereRotApply(inverseOutputCoord,testTransform,outputCoord);
-    // Verify output not NULL and member values set correctly
-    if(inverseOutputCoord == NULL) {
-        psError(PS_ERR_UNKNOWN,true,"psSphereRotApply returned NULL");
-        return 10;
-    }
-    if(fabs(inverseOutputCoord->r - SPHERE_COORD_TP2_INVERSE_R) > ERROR_TOL) {
-        psError(PS_ERR_UNKNOWN,true,"psSphereRotApply return coord r %lg not as expected %lg",
-                inverseOutputCoord->r, SPHERE_COORD_TP2_INVERSE_R);
-        return 11;
-    }
-    if(fabs(inverseOutputCoord->d - SPHERE_COORD_TP2_INVERSE_D) > ERROR_TOL) {
-        psError(PS_ERR_UNKNOWN,true,"psSphereRotApply return coord d %ld not as expected %lg",
-                inverseOutputCoord->d, SPHERE_COORD_TP2_INVERSE_D);
-        return 12;
-    }
-    psFree(testTransform);
-
-    psFree(testDateTime);
-    psFree(outputCoord);
-    psFree(inputCoord);
-    psFree(inverseOutputCoord);
-
-    return 0;
-}
-
-psS32 testSphereRotApply5( void)
-{
-    psSphereRot*  testTransform;
-    psSphere*           inputCoord = psSphereAlloc();
-    psSphere*           outputCoord = NULL;
-    psSphere*           inverseOutputCoord = NULL;
-
-    inputCoord->r = SPHERE_COORD_TP3_INVERSE_R;
-    inputCoord->d = SPHERE_COORD_TP3_INVERSE_D;
-    inputCoord->rErr = 0.0;
-    inputCoord->dErr = 0.0;
-
-    // Set test date time to 1/1/2100 00:00:00
-    psTime* testDateTime = psTimeFromMJD(MJD_2100);
-
-    // Create transform ICRS to Galactic
-    testTransform = psSphereRotICRSToGalactic();
-
-    // Perform transform from ICRS to Galactic
-    outputCoord = psSphereRotApply(outputCoord,testTransform,inputCoord);
-    // Verify output not NULL and member values set correctly
-    if(outputCoord == NULL) {
-        psError(PS_ERR_UNKNOWN,true,"psSphereRotApply returned NULL");
-        return 1;
-    }
-    if(fabs(outputCoord->r - SPHERE_COORD_TP3_GAL_R) > ERROR_TOL) {
-        psError(PS_ERR_UNKNOWN,true,"psSphereRotApply return coord r %lg not as expected %lg",
-                outputCoord->r, SPHERE_COORD_TP3_GAL_R);
-        return 2;
-    }
-    if(fabs(outputCoord->d - SPHERE_COORD_TP3_GAL_D) > ERROR_TOL) {
-        psError(PS_ERR_UNKNOWN,true,"psSphereRotApply return coord d %ld not as expected %lg",
-                outputCoord->d, SPHERE_COORD_TP3_GAL_D);
-        return 3;
-    }
-    psFree(testTransform);
-
-    // Create inverse transform Galactic to ICRS
-    testTransform = psSphereRotGalacticToICRS();
-
-    // Perform transform from Galactic to ICRS
-    inverseOutputCoord = psSphereRotApply(inverseOutputCoord,testTransform,outputCoord);
-    // Verify output not NULL and member values set correctly
-    if(inverseOutputCoord == NULL) {
-        psError(PS_ERR_UNKNOWN,true,"psSphereRotApply returned NULL");
-        return 4;
-    }
-    if(fabs(inverseOutputCoord->r - SPHERE_COORD_TP3_INVERSE_R) > ERROR_TOL+0.1) {
-        psError(PS_ERR_UNKNOWN,true,"psSphereRotApply return coord r %lg not as expected %lg",
-                inverseOutputCoord->r, SPHERE_COORD_TP3_INVERSE_R);
-        return 5;
-    }
-    if(fabs(inverseOutputCoord->d - SPHERE_COORD_TP3_INVERSE_D) > ERROR_TOL) {
-        psError(PS_ERR_UNKNOWN,true,"psSphereRotApply return coord d %ld not as expected %lg",
-                inverseOutputCoord->d, SPHERE_COORD_TP3_INVERSE_D);
-        return 6;
-    }
-    psFree(testTransform);
-
-    // Create transform ICRS to Ecliptic
-    testTransform = psSphereRotICRSToEcliptic(testDateTime);
-
-    // Perform transform from ICRS to Ecliptic
-    outputCoord = psSphereRotApply(outputCoord,testTransform,inputCoord);
-    // Verify output not NULL and member values set correctly
-    if(outputCoord == NULL) {
-        psError(PS_ERR_UNKNOWN,true,"psSphereRotApply returned NULL");
-        return 7;
-    }
-    if(fabs(outputCoord->r - SPHERE_COORD_TP3_ECL_R) > ERROR_TOL) {
-        psError(PS_ERR_UNKNOWN,true,"psSphereRotApply return coord r %lg not as expected %lg",
-                outputCoord->r, SPHERE_COORD_TP3_ECL_R);
-        return 8;
-    }
-    if(fabs(outputCoord->d - SPHERE_COORD_TP3_ECL_D) > ERROR_TOL) {
-        psError(PS_ERR_UNKNOWN,true,"psSphereRotApply return coord d %ld not as expected %lg",
-                outputCoord->d, SPHERE_COORD_TP3_ECL_D);
-        return 9;
-    }
-    psFree(testTransform);
-
-    // Create inverse transform Ecliptic to ICRS
-    testTransform = psSphereRotEclipticToICRS(testDateTime);
-
-    // Perform transform from Ecliptic to ICRS
-    inverseOutputCoord = psSphereRotApply(inverseOutputCoord,testTransform,outputCoord);
-    // Verify output not NULL and member values set correctly
-    if(inverseOutputCoord == NULL) {
-        psError(PS_ERR_UNKNOWN,true,"psSphereRotApply returned NULL");
-        return 10;
-    }
-    if(fabs(inverseOutputCoord->r - SPHERE_COORD_TP3_INVERSE_R) > ERROR_TOL) {
-        psError(PS_ERR_UNKNOWN,true,"psSphereRotApply return coord r %lg not as expected %lg",
-                inverseOutputCoord->r, SPHERE_COORD_TP3_INVERSE_R);
-        return 11;
-    }
-    if(fabs(inverseOutputCoord->d - SPHERE_COORD_TP3_INVERSE_D) > ERROR_TOL) {
-        psError(PS_ERR_UNKNOWN,true,"psSphereRotApply return coord d %ld not as expected %lg",
-                inverseOutputCoord->d, SPHERE_COORD_TP3_INVERSE_D);
-        return 12;
-    }
-    psFree(testTransform);
-
-    psFree(testDateTime);
-    psFree(outputCoord);
-    psFree(inputCoord);
-    psFree(inverseOutputCoord);
-
-    return 0;
-}
-
-#define SPHERE_PRECESS_TP1_R            0.0               //    0.0       degrees
-#define SPHERE_PRECESS_TP1_D            0.0               //    0.0       degrees
-#define SPHERE_PRECESS_TP1_EXPECT_R     6.238453          //  357.437     degrees
-#define SPHERE_PRECESS_TP1_EXPECT_D    -0.019426          //   -1.113     degrees
-#define SPHERE_PRECESS_TP2_R            0.0               //    0.0       degrees
-#define SPHERE_PRECESS_TP2_D            1.570796          //   90.0       degrees
-#define SPHERE_PRECESS_TP2_EXPECT_R     6.260828          //  358.719     degrees
-#define SPHERE_PRECESS_TP2_EXPECT_D     1.551353          //   88.886     degrees
-#define SPHERE_PRECESS_TP3_R            3.141593          //  180.0       degrees
-#define SPHERE_PRECESS_TP3_D            0.523599          //   30.0       degrees
-#define SPHERE_PRECESS_TP3_EXPECT_R     3.096616          //  177.423     degrees
-#define SPHERE_PRECESS_TP3_EXPECT_D     0.543024          //   31.113     degrees
-
-psS32 testSphereRotPrecess( void )
-{
-    psSphere*     inputCoord  = psSphereAlloc();
-    psSphere*     outputCoord = NULL;
-    psTime*       fromTime    = psTimeFromMJD(MJD_2100);
-    psTime*       toTime      = psTimeFromMJD(MJD_1900);
-
-    // Set input coordinate
-    inputCoord->r = SPHERE_PRECESS_TP1_R;
-    inputCoord->d = SPHERE_PRECESS_TP1_D;
-    inputCoord->rErr = 0.0;
-    inputCoord->dErr = 0.0;
-
-    // Calculate precess
-    outputCoord = psSpherePrecess(inputCoord, fromTime, toTime);
-    // Verify return is not NULL
-    if(outputCoord == NULL) {
-        psError(PS_ERR_UNKNOWN,true,"Returned NULL not expected");
-        return 1;
-    }
-    // Verify return with expected values
-    if( fabs(outputCoord->r - SPHERE_PRECESS_TP1_EXPECT_R) > ERROR_TOL) {
-        psError(PS_ERR_UNKNOWN,true,"Precess r = %lg not equal to expected = %lg",
-                outputCoord->r,SPHERE_PRECESS_TP1_EXPECT_R);
-        return 2;
-    }
-    if( fabs(outputCoord->d - SPHERE_PRECESS_TP1_EXPECT_D) > ERROR_TOL) {
-        psError(PS_ERR_UNKNOWN,true,"Precess d = %lg not equal to expected = %lg",
-                outputCoord->d,SPHERE_PRECESS_TP1_EXPECT_D);
-        return 3;
-    }
-    psFree(outputCoord);
-
-    // Set input coordinate
-    inputCoord->r = SPHERE_PRECESS_TP2_R;
-    inputCoord->d = SPHERE_PRECESS_TP2_D;
-    inputCoord->rErr = 0.0;
-    inputCoord->dErr = 0.0;
-
-    // Calculate precess
-    outputCoord = psSpherePrecess(inputCoord, fromTime, toTime);
-    // Verify return is not NULL
-    if(outputCoord == NULL) {
-        psError(PS_ERR_UNKNOWN,true,"Returned NULL not expected");
-        return 4;
-    }
-    // Verify return with expected values
-    if( fabs(outputCoord->r - SPHERE_PRECESS_TP2_EXPECT_R) > ERROR_TOL) {
-        psError(PS_ERR_UNKNOWN,true,"Precess r = %lg not equal to expected = %lg",
-                outputCoord->r,SPHERE_PRECESS_TP2_EXPECT_R);
-        return 5;
-    }
-    if( fabs(outputCoord->d - SPHERE_PRECESS_TP2_EXPECT_D) > ERROR_TOL) {
-        psError(PS_ERR_UNKNOWN,true,"Precess d = %lg not equal to expected = %lg",
-                outputCoord->d,SPHERE_PRECESS_TP2_EXPECT_D);
-        return 6;
-    }
-    psFree(outputCoord);
-
-    // Set input coordinate
-    inputCoord->r = SPHERE_PRECESS_TP3_R;
-    inputCoord->d = SPHERE_PRECESS_TP3_D;
-    inputCoord->rErr = 0.0;
-    inputCoord->dErr = 0.0;
-
-    // Calculate precess
-    outputCoord = psSpherePrecess(inputCoord, fromTime, toTime);
-    // Verify return is not NULL
-    if(outputCoord == NULL) {
-        psError(PS_ERR_UNKNOWN,true,"Returned NULL not expected");
-        return 7;
-    }
-    // Verify return with expected values
-    if( fabs(outputCoord->r - SPHERE_PRECESS_TP3_EXPECT_R) > ERROR_TOL) {
-        psError(PS_ERR_UNKNOWN,true,"Precess r = %lg not equal to expected = %lg",
-                outputCoord->r,SPHERE_PRECESS_TP3_EXPECT_R);
-        return 8;
-    }
-    if( fabs(outputCoord->d - SPHERE_PRECESS_TP3_EXPECT_D) > ERROR_TOL) {
-        psError(PS_ERR_UNKNOWN,true,"Precess d = %lg not equal to expected = %lg",
-                outputCoord->d,SPHERE_PRECESS_TP3_EXPECT_D);
-        return 9;
-    }
-    psFree(outputCoord);
-
-    // Invoke precess with invalid parameter
-    psLogMsg(__func__,PS_LOG_INFO,"Following should generate an error message");
-    outputCoord = psSpherePrecess(inputCoord, fromTime, NULL);
-    if(outputCoord != NULL) {
-        psError(PS_ERR_UNKNOWN,true,"Did not return NULL with invalid input");
-        return 10;
-    }
-
-    // Invoke precess with invalid parameter
-    psLogMsg(__func__,PS_LOG_INFO,"Following should generate an error message");
-    outputCoord = psSpherePrecess(inputCoord, NULL, toTime);
-    if(outputCoord != NULL) {
-        psError(PS_ERR_UNKNOWN,true,"Did not return NULL with invalid input");
-        return 11;
-    }
-
-    // Invoke precess with invalid parameter
-    psLogMsg(__func__,PS_LOG_INFO,"Following should generate an error message");
-    outputCoord = psSpherePrecess(NULL, fromTime, toTime);
-    if(outputCoord != NULL) {
-        psError(PS_ERR_UNKNOWN,true,"Did not return NULL with invalid input");
-        return 12;
-    }
-
-    // Free objects
-    psFree(fromTime);
-    psFree(toTime);
-    psFree(inputCoord);
-
-    return 0;
-}
-
-psS32 testSphereRotICRSToEcliptic( void )
-{
-    psF64  expectedQ0 = 0.0;
-    psF64  expectedQ1 = 0.0;
-    psF64  expectedQ2 = 0.0;
-    psF64  expectedQ3 = 0.0;
-
-    // Set test date time to 1/1/2000 00:00:00
-    psTime* testDateTime = psTimeFromMJD(MJD_2000);
-
-    // Invoke function to set psSphereRota objec
-    psSphereRot *myST = psSphereRotICRSToEcliptic(testDateTime);
-
-    // Verify expected values for the specified time
-    if (ERROR_TOL < fabs(expectedQ0 - myST->q0)) {
-        psError(PS_ERR_UNKNOWN,true,"myST->q0 is %f, should be %f",
-                myST->q0, expectedQ0);
-        return 1;
-    }
-    if (ERROR_TOL < fabs(expectedQ1 - myST->q1)) {
-        psError(PS_ERR_UNKNOWN,true,"myST->q1 is %f, should be %f",
-                myST->q1, expectedQ1);
-        return 2;
-    }
-    if (ERROR_TOL < fabs(expectedQ2 - myST->q2)) {
-        psError(PS_ERR_UNKNOWN,true,"myST->q2 is %f, should be %f",
-                myST->q2, expectedQ2);
-        return 3;
-    }
-    if (ERROR_TOL < fabs(expectedQ3 - myST->q3)) {
-        psError(PS_ERR_UNKNOWN,true,"myST->q3 is %f, should be %f",
-                myST->q3, expectedQ3);
-        return 4;
-    }
-    psFree(myST);
-    psFree(testDateTime);
-
-    // Set test date time to 1/1/2100 00:00:00
-    testDateTime = psTimeFromMJD(MJD_2100);
-
-    // Invoke function to set psSphereRota objec
-    myST = psSphereRotICRSToEcliptic(testDateTime);
-
-    // Verify expected values for the specified time
-    // Verify expected values for the specified time
-    if (ERROR_TOL < fabs(expectedQ0 - myST->q0)) {
-        psError(PS_ERR_UNKNOWN,true,"myST->q0 is %f, should be %f",
-                myST->q0, expectedQ0);
-        return 5;
-    }
-    if (ERROR_TOL < fabs(expectedQ1 - myST->q1)) {
-        psError(PS_ERR_UNKNOWN,true,"myST->q1 is %f, should be %f",
-                myST->q1, expectedQ1);
-        return 6;
-    }
-    if (ERROR_TOL < fabs(expectedQ2 - myST->q2)) {
-        psError(PS_ERR_UNKNOWN,true,"myST->q2 is %f, should be %f",
-                myST->q2, expectedQ2);
-        return 7;
-    }
-    if (ERROR_TOL < fabs(expectedQ3 - myST->q3)) {
-        psError(PS_ERR_UNKNOWN,true,"myST->q3 is %f, should be %f",
-                myST->q3, expectedQ3);
-        return 8;
-    }
-    psFree(myST);
-    psFree(testDateTime);
-
-    // Verify if argument psTime is NULL, function returns NULL and error message generated
-    psLogMsg(__func__,PS_LOG_INFO,"Following should generate an error message");
-    myST = psSphereRotICRSToEcliptic(NULL);
-    if (myST != NULL) {
-        psError(PS_ERR_UNKNOWN,true,"psSphereRotICRSToEcliptic() did not return NULL.");
-        return 9;
-    }
-
-    // Verify if argument psTime is less than 1900, function return NULL and error msg generated
-    psLogMsg(__func__,PS_LOG_INFO,"Following should generate an error message");
-    testDateTime = psTimeFromMJD(MJD_1900 - 1.0);
-    myST = psSphereRotICRSToEcliptic(testDateTime);
-    if (myST != NULL) {
-        psError(PS_ERR_UNKNOWN,true,"psSphereRotICRSToEcliptic() did not return NULL.");
-        return 10;
-    }
-    psFree(testDateTime);
-
-    return 0;
-}
-
-
-psS32 testSphereRotEclipticToICRS( void )
-{
-    psF64  expectedPhiP = 0.0;
-    psF64  expectedAlphaP = 0.0;
-    psF64  expectedCosDeltaP = 0.0;
-    psF64  expectedSinDeltaP = 0.0;
-
-    // Set test date time to 1/1/2000 00:00:00
-    psTime* testDateTime = psTimeFromMJD(MJD_2000);
-
-    // Invoke function to set psSphereRota object
-    psSphereRot *myST = psSphereRotEclipticToICRS(testDateTime);
-
-    // Verify expected values for the specified time
-    if (ERROR_TOL < fabs(expectedSinDeltaP - myST->sinDeltaP)) {
-        psError(PS_ERR_UNKNOWN,true,"myST->sinDeltaP is %f, should be %f",
-                myST->sinDeltaP, expectedSinDeltaP);
-        return 1;
-    }
-    if (ERROR_TOL < fabs(expectedCosDeltaP - myST->cosDeltaP)) {
-        psError(PS_ERR_UNKNOWN,true,"myST->cosDeltaP is %f, should be %f",
-                myST->cosDeltaP, expectedCosDeltaP);
-        return 2;
-    }
-    if (ERROR_TOL < fabs(expectedAlphaP - myST->alphaP)) {
-        psError(PS_ERR_UNKNOWN,true,"myST->alphaP is %f, should be %f",
-                myST->alphaP, expectedAlphaP);
-        return 3;
-    }
-    if (ERROR_TOL < fabs(expectedPhiP - myST->phiP)) {
-        psError(PS_ERR_UNKNOWN,true,"myST->phiP is %f, should be %f",
-                myST->phiP, expectedPhiP);
-        return 4;
-    }
-    psFree(myST);
-    psFree(testDateTime);
-
-    expectedCosDeltaP = EXPECT_COS_DELTAP_2100;
-    expectedSinDeltaP = -EXPECT_SIN_DELTAP_2100;
-
-    // Set test date time to 1/1/2100 00:00:00
-    testDateTime = psTimeFromMJD(MJD_2100);
-
-    // Invoke function to set psSphereRota objec
-    myST = psSphereRotEclipticToICRS(testDateTime);
-
-    // Verify expected values for the specified time
-    if (ERROR_TOL < fabs(expectedSinDeltaP - myST->sinDeltaP)) {
-        psError(PS_ERR_UNKNOWN,true,"myST->sinDeltaP is %f, should be %f",
-                myST->sinDeltaP, expectedSinDeltaP);
-        return 5;
-    }
-    if (ERROR_TOL < fabs(expectedCosDeltaP - myST->cosDeltaP)) {
-        psError(PS_ERR_UNKNOWN,true,"myST->cosDeltaP is %f, should be %f",
-                myST->cosDeltaP, expectedCosDeltaP);
-        return 6;
-    }
-    if (ERROR_TOL < fabs(expectedAlphaP - myST->alphaP)) {
-        psError(PS_ERR_UNKNOWN,true,"myST->alphaP is %f, should be %f",
-                myST->alphaP, expectedAlphaP);
-        return 7;
-    }
-    if (ERROR_TOL < fabs(expectedPhiP - myST->phiP)) {
-        psError(PS_ERR_UNKNOWN,true,"myST->phiP is %f, should be %f",
-                myST->phiP, expectedPhiP);
-        return 8;
-    }
-    psFree(myST);
-    psFree(testDateTime);
-
-    // Verify if argument psTime is NULL, function returns NULL and error message generated
-    psLogMsg(__func__,PS_LOG_INFO,"Following should generate an error message");
-    myST = psSphereRotEclipticToICRS(NULL);
-    if (myST != NULL) {
-        psError(PS_ERR_UNKNOWN,true,"psSphereRotEclipticICRS() did not return NULL.");
-        return 9;
-    }
-
-    // Verify if argument psTime is less than 1900, function return NULL and error msg generated
-    psLogMsg(__func__,PS_LOG_INFO,"Following should generate an error message");
-    testDateTime = psTimeFromMJD(MJD_1900 - 1.0);
-    myST = psSphereRotEclipticToICRS(testDateTime);
-    if (myST != NULL) {
-        psError(PS_ERR_UNKNOWN,true,"psSphereRotEclipticToICRS() did not return NULL.");
-        return 10;
-    }
-    psFree(testDateTime);
-
-    return 0;
-}
-
-#define ITG_EXPECT_ALPHAP      4.93683
-#define ITG_EXPECT_SINDELTAP   0.88999
-#define ITG_EXPECT_COSDELTAP   0.45598
-#define ITG_EXPECT_PHIP        0.57477
-
-psS32 testSphereRotICRSToGalactic( void )
-{
-    // Invoke function
-    psSphereRot *myST = psSphereRotICRSToGalactic();
-
-    // Verify did not return NULL
-    if(myST == NULL) {
-        psError(PS_ERR_UNKNOWN,true,"psSphereRotICRSToGalactic returned NULL");
-        return 1;
-    }
-    // Verify returned structure has members set properly
-    if (ERROR_TOL < fabs(ITG_EXPECT_SINDELTAP - myST->sinDeltaP)) {
-        psError(PS_ERR_UNKNOWN,true,"myST->sinDeltaP is %f, should be %f",
-                myST->sinDeltaP, ITG_EXPECT_SINDELTAP);
-        return 2;
-    }
-    if (ERROR_TOL < fabs(ITG_EXPECT_COSDELTAP - myST->cosDeltaP)) {
-        psError(PS_ERR_UNKNOWN,true,"myST->cosDeltaP is %f, should be %f",
-                myST->cosDeltaP, ITG_EXPECT_COSDELTAP);
-        return 3;
-    }
-    if (ERROR_TOL < fabs(ITG_EXPECT_ALPHAP - myST->alphaP)) {
-        psError(PS_ERR_UNKNOWN,true,"myST->alphaP is %f, should be %f",
-                myST->alphaP, ITG_EXPECT_ALPHAP);
-        return 4;
-    }
-    if (ERROR_TOL < fabs(ITG_EXPECT_PHIP - myST->phiP)) {
-        psError(PS_ERR_UNKNOWN,true,"myST->phiP is %f, should be %f",
-                myST->phiP, ITG_EXPECT_PHIP);
-        return 5;
-    }
-    // Free data structure created
-    psFree(myST);
-
-    return 0;
-}
-
-#define GTI_EXPECT_PHIP        4.93683
-#define GTI_EXPECT_SINDELTAP  -0.88999
-#define GTI_EXPECT_COSDELTAP   0.45598
-#define GTI_EXPECT_ALPHAP      0.57477
-
-psS32 testSphereRotGalacticToICRS( void )
-{
-    // Invoke function
-    psSphereRot *myST = psSphereRotGalacticToICRS();
-
-    // Verify did not return NULL
-    if(myST == NULL) {
-        psError(PS_ERR_UNKNOWN,true,"psSphereRotGalacticToICRS returned NULL");
-        return 1;
-    }
-    // Verify returned structure has members set properly
-    if (ERROR_TOL < fabs(GTI_EXPECT_SINDELTAP - myST->sinDeltaP)) {
-        psError(PS_ERR_UNKNOWN,true,"myST->sinDeltaP is %f, should be %f",
-                myST->sinDeltaP, GTI_EXPECT_SINDELTAP);
-        return 2;
-    }
-    if (ERROR_TOL < fabs(GTI_EXPECT_COSDELTAP - myST->cosDeltaP)) {
-        psError(PS_ERR_UNKNOWN,true,"myST->cosDeltaP is %f, should be %f",
-                myST->cosDeltaP, GTI_EXPECT_COSDELTAP);
-        return 3;
-    }
-    if (ERROR_TOL < fabs(GTI_EXPECT_ALPHAP - myST->alphaP)) {
-        psError(PS_ERR_UNKNOWN,true,"myST->alphaP is %f, should be %f",
-                myST->alphaP, GTI_EXPECT_ALPHAP);
-        return 4;
-    }
-    if (ERROR_TOL < fabs(GTI_EXPECT_PHIP - myST->phiP)) {
-        psError(PS_ERR_UNKNOWN,true,"myST->phiP is %f, should be %f",
-                myST->phiP, GTI_EXPECT_PHIP);
-        return 5;
-    }
-    // Free data structure created
-    psFree(myST);
-
-    return 0;
-}
-
Index: trunk/psLib/test/astro/tst_psSphereOps.c
===================================================================
--- trunk/psLib/test/astro/tst_psSphereOps.c	(revision 4601)
+++ trunk/psLib/test/astro/tst_psSphereOps.c	(revision 4601)
@@ -0,0 +1,461 @@
+/** @file  tst_psCoord.c
+*
+*  @brief The code will ...
+*
+*
+*  @author GLG, MHPCC
+*
+*  @version $Revision: 1.1 $ $Name: not supported by cvs2svn $
+*  @date $Date: 2005-07-23 02:44:09 $
+*
+*  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
+*/
+
+#include "psTest.h"
+#include "pslib_strict.h"
+static psS32 testSphereRotAlloc(void);
+static psS32 testSphereRotApply1(void);
+static psS32 testSphereRotApply2(void);
+static psS32 testSphereRotApplyCelestial(void);
+static psS32 testSphereRotPrecess(void);
+
+testDescription tests[] = {
+                              {testSphereRotAlloc, 819, "psSphereRotAlloc()", 0, false},
+                              {testSphereRotApply1, 820, "psSphereRotApply()", 0, false},
+                              {testSphereRotApply2, 820, "psSphereRotApply()", 0, false},
+                              {testSphereRotApplyCelestial, 820, "psSphereRotApply()", 0, false},
+                              {testSphereRotApplyCelestial, 821, "psSphereRotICRSToEcliptic()", true},
+                              {testSphereRotApplyCelestial, 822, "psSphereRotEclipticToICRS()", 0, true},
+                              {testSphereRotApplyCelestial, 824, "psSphereRotICRSToGalactic()", 0, true},
+                              {testSphereRotApplyCelestial, 823, "psSphereRotGalacticToICRS()", 0, true},
+                              {testSphereRotPrecess, 825, "psSphereRotPrecess()", 0, false},
+                              {NULL}
+                          };
+
+psS32 main( psS32 argc, char* argv[] )
+{
+    psLogSetLevel( PS_LOG_INFO );
+
+    return ( ! runTestSuite( stderr, "psCoord", tests, argc, argv ) );
+}
+
+#define DEG_INC   30.0
+
+#define MJD_1900  15021.0        // Modified Julian Day 1/1/1900 00:00:00
+#define MJD_2000  51544.0        // Modified Julian Day 1/1/2000 00:00:00
+#define MJD_2100  88069.0        // Modified Julian Day 1/1/2100 00:00:00
+
+#define ERROR_TOL   0.0001
+
+#define ALPHA_P 1.0
+#define DELTA_P 2.0
+#define PHI_P 3.0
+
+psS32 testSphereRotAlloc( void )
+{
+    // Allocate data structure
+    psSphereRot* myST = psSphereRotAlloc(ALPHA_P, DELTA_P, PHI_P);
+
+    // Verify null not returned
+    if(myST == NULL) {
+        psError(PS_ERR_UNKNOWN,true,"Returned NULL with valid parameters");
+        return 1;
+    }
+    // Verify sin member is updated
+    double vx = cos(DELTA_P)*cos(ALPHA_P);
+    double vy = cos(DELTA_P)*sin(ALPHA_P);
+    double vz = sin(DELTA_P);
+    double q0 = vx * sin(PHI_P/2.0);
+    double q1 = vy * sin(PHI_P/2.0);
+    double q2 = vz * sin(PHI_P/2.0);
+    double q3 = cos(PHI_P/2.0);
+
+    if (FLT_EPSILON < fabs(q0 - myST->q0)) {
+        psError(PS_ERR_UNKNOWN,true,"myST->q0 is %f, should be %f\n", myST->q0, q0);
+        return 2;
+    }
+    if (FLT_EPSILON < fabs(q1 - myST->q1)) {
+        psError(PS_ERR_UNKNOWN,true,"myST->q1 is %f, should be %f\n", myST->q1, q1);
+        return 3;
+    }
+    if (FLT_EPSILON < fabs(q2 - myST->q2)) {
+        psError(PS_ERR_UNKNOWN,true,"myST->q2 is %f, should be %f\n", myST->q2, q2);
+        return 4;
+    }
+    if (FLT_EPSILON < fabs(q3 - myST->q3)) {
+        psError(PS_ERR_UNKNOWN,true,"myST->q0 is %f, should be %f\n", myST->q3, q3);
+        return 5;
+    }
+
+    // Free data structure
+    psFree(myST);
+
+    return 0;
+}
+
+// We do a simple identity transformation on a few RA, DEC pairs.
+psS32 testSphereRotApply1( void )
+{
+    psSphere *in = psSphereAlloc();
+    psSphere *out = psSphereAlloc();
+    psSphere *temp = NULL;
+    psSphere *rc = NULL;
+    psSphereRot *myST = psSphereRotAlloc(0.0, 0.0, 0.0);
+
+    for (float r=0.0;r<180.0;r+=DEG_INC) {
+        for (float d=0.0;d<90.0;d+=DEG_INC) {
+            in->r = DEG_TO_RAD(r);
+            in->d = DEG_TO_RAD(d);
+            in->rErr = 0.0;
+            in->dErr = 0.0;
+
+            if(psSphereRotApply(out, myST, in) != out) {
+                psError(PS_ERR_UNKNOWN,true,"Did not return output pointer.");
+                return 1;
+            }
+            if (ERROR_TOL < fabs(out->r - in->r)) {
+                psError(PS_ERR_UNKNOWN,true,"out->r is %f, should be %f\n", out->r, in->r);
+                return 2;
+            }
+            if (ERROR_TOL < fabs(out->d - in->d)) {
+                psError(PS_ERR_UNKNOWN,true,"out->d is %f, should be %f\n", out->d, in->d);
+                return 3;
+            }
+        }
+    }
+
+    // Verify new sphere object is created if out parameter NULL
+    temp = psSphereRotApply(NULL, myST, in);
+    if ( temp == NULL) {
+        psError(PS_ERR_UNKNOWN,true,"Returned NULL when out parameter was null");
+        return 4;
+    }
+    psFree(temp);
+
+    // Verify NULL returned if transform structure null
+    psLogMsg(__func__,PS_LOG_INFO,"Following should generate an error");
+    rc = psSphereRotApply(NULL, NULL, in);
+    if (rc != NULL) {
+        psError(PS_ERR_UNKNOWN,true,"psSphereRotApply() did not return NULL.");
+        return 5;
+    }
+
+    // Verify NULL returned when input sphere is NULL
+    psLogMsg(__func__,PS_LOG_INFO,"Following should generate an error");
+    rc = psSphereRotApply(NULL, myST, NULL);
+    if (rc != NULL) {
+        psError(PS_ERR_UNKNOWN,true,"psSphereRotApply() did not return NULL");
+        return 6;
+    }
+
+    psFree(myST);
+    psFree(out);
+    psFree(in);
+
+    return 0;
+}
+
+/******************************************************************************
+testSphereRotApply2(): This test verifies that psSphereRotApply()
+works properly.  We create two psSphereRots: a forward transform and a
+reverse transform (which is the mathematical inverse of the forward transform).
+We apply both transforms to several spherical coordinates and ensure that the
+original input coordinate is obtained after applying both transforms.
+ 
+XXX: We currently test the alpha and delta offsets independently.  Attempts to
+test them both concurrently failed.  Determine why this is.  Are the following
+spherical transforms not mathematical inverses?
+    psSphereRotAlloc(X, Y, 0.0)
+    psSphereRotAlloc(-X, -Y, 0.0)
+ *****************************************************************************/
+#define ERROR_PERCENT 0.01
+psS32 testSphereRotApply2( void )
+{
+    psS32 testStatus = 0;
+    psSphere in;
+    psSphere out;
+    psSphere out2;
+    psSphereRot *mySphereRotForward = NULL;
+    psSphereRot *mySphereRotReverse = NULL;
+
+
+    mySphereRotForward = psSphereRotAlloc(DEG_TO_RAD(22.0),
+                                          0.0,
+                                          0.0);
+    mySphereRotReverse = psSphereRotAlloc(DEG_TO_RAD(-22.0),
+                                          0.0,
+                                          0.0);
+
+    for (float r=0.1;r<180.0;r+=(DEG_INC/5.0)) {
+        for (float d=0.1;d<90.0;d+=(DEG_INC/5.0)) {
+            in.r = DEG_TO_RAD(r);
+            in.d = DEG_TO_RAD(d);
+            in.rErr = 0.0;
+            in.dErr = 0.0;
+
+            psSphereRotApply(&out, mySphereRotForward, &in);
+            psSphereRotApply(&out2, mySphereRotReverse, &out);
+
+            if ((fabs((in.r - out2.r) / in.r) > ERROR_PERCENT) ||
+                    (fabs((in.d - out2.d) / in.d) > ERROR_PERCENT)) {
+                printf("ERROR: \n");
+                printf("Input  coords (R, D) are (%f, %f)\n", in.r, in.d);
+                printf("Output coords (R, D) are (%f, %f)\n", out2.r, out2.d);
+                testStatus = 4;
+            }
+        }
+    }
+    psFree(mySphereRotForward);
+    psFree(mySphereRotReverse);
+
+    mySphereRotForward = psSphereRotAlloc(0.0,
+                                          DEG_TO_RAD(33.0),
+                                          0.0);
+    mySphereRotReverse = psSphereRotAlloc(0.0,
+                                          DEG_TO_RAD(-33.0),
+                                          0.0);
+    for (float r=0.1;r<180.0;r+=(DEG_INC/5.0)) {
+        for (float d=0.1;d<90.0;d+=(DEG_INC/5.0)) {
+            in.r = DEG_TO_RAD(r);
+            in.d = DEG_TO_RAD(d);
+            in.rErr = 0.0;
+            in.dErr = 0.0;
+
+            psSphereRotApply(&out, mySphereRotForward, &in);
+            psSphereRotApply(&out2, mySphereRotReverse, &out);
+
+            if ((fabs((in.r - out2.r) / in.r) > ERROR_PERCENT) ||
+                    (fabs((in.d - out2.d) / in.d) > ERROR_PERCENT)) {
+                printf("ERROR: \n");
+                printf("Input  coords (R, D) are (%f, %f)\n", in.r, in.d);
+                printf("Output coords (R, D) are (%f, %f)\n", out2.r, out2.d);
+                testStatus = 4;
+            }
+        }
+    }
+    psFree(mySphereRotForward);
+    psFree(mySphereRotReverse);
+
+    return(testStatus);
+}
+
+psS32 testSphereRotApplyCelestial( void)
+{
+    int numTestPoints = 3;
+    // ICRS coordinates
+    double alpha[] = {  0.0,        0.0,     180.0     };
+    double delta[] = {  0.0,       90.0,      30.0     };
+    //Ecliptic coordinates
+    double lambda[] ={  0.0,       90.0,     167.072470};
+    double beta[] =  {  0.0,       66.560719, 27.308813};
+    // Galactic coordinates
+    double l[] =     { 96.337272, 122.93192, 195.639488};
+    double b[] =     {-60.188553,  27.12825,  78.353806};
+
+    double t[] =     {  MJD_2000,  MJD_2000,   MJD_2100};
+
+    double TOLERANCE = 0.001;
+
+
+
+    for (int x = 0; x < numTestPoints; x++) {
+
+        psTime* time = psTimeFromMJD(t[x]);
+        psSphereRot* toEcliptic = psSphereRotICRSToEcliptic(time);
+        psSphereRot* fromEcliptic = psSphereRotEclipticToICRS(time);
+        psSphereRot* toGalactic = psSphereRotICRSToGalactic();
+        psSphereRot* fromGalactic = psSphereRotGalacticToICRS();
+        psFree(time);
+
+        // set the ICRS coordinate
+        psSphere* icrs = psSphereAlloc();
+        icrs->r = DEG_TO_RAD(alpha[x]);
+        icrs->d = DEG_TO_RAD(delta[x]);
+
+        // apply/unapply Ecliptic
+        psSphere* ecliptic = psSphereRotApply(NULL, toEcliptic, icrs);
+        psSphere* icrsFromEcliptic = psSphereRotApply(NULL, fromEcliptic, ecliptic);
+
+        // check ecliptic transforms for correctness
+        if (abs(RAD_TO_DEG(ecliptic->r) - lambda[x]) > TOLERANCE ||
+                abs(RAD_TO_DEG(ecliptic->d) - beta[x]) > TOLERANCE) {
+            psError(PS_ERR_UNKNOWN, false,
+                    "Ecliptic tranformation incorrect.  Result is (%g,%g), expected (%g,%g)",
+                    RAD_TO_DEG(ecliptic->r),RAD_TO_DEG(ecliptic->d),
+                    lambda[x], beta[x]);
+            return 1;
+        }
+        if (abs(RAD_TO_DEG(icrsFromEcliptic->r) - alpha[x]) > TOLERANCE ||
+                abs(RAD_TO_DEG(icrsFromEcliptic->d) - delta[x]) > TOLERANCE) {
+            psError(PS_ERR_UNKNOWN, false,
+                    "ICRS for Ecliptic tranformation incorrect.  Result is (%g,%g), expected (%g,%g)",
+                    RAD_TO_DEG(icrsFromEcliptic->r),RAD_TO_DEG(icrsFromEcliptic->d),
+                    alpha[x], delta[x]);
+            return 2;
+        }
+        psFree(ecliptic);
+        psFree(icrsFromEcliptic);
+
+        // apply/unapply Galactic
+        psSphere* galactic = psSphereRotApply(NULL, toGalactic, icrs);
+        psSphere* icrsFromGalactic = psSphereRotApply(NULL, fromGalactic, galactic);
+
+        // check ecliptic transforms for correctness
+        if (abs(RAD_TO_DEG(galactic->r) - l[x]) > TOLERANCE ||
+                abs(RAD_TO_DEG(galactic->d) - b[x]) > TOLERANCE) {
+            psError(PS_ERR_UNKNOWN, false,
+                    "Galactic tranformation incorrect.  Result is (%g,%g), expected (%g,%g)",
+                    RAD_TO_DEG(galactic->r),RAD_TO_DEG(galactic->d),
+                    l[x], b[x]);
+            return 3;
+        }
+        if (abs(RAD_TO_DEG(icrsFromGalactic->r) - alpha[x]) > TOLERANCE ||
+                abs(RAD_TO_DEG(icrsFromGalactic->d) - delta[x]) > TOLERANCE) {
+            psError(PS_ERR_UNKNOWN, false,
+                    "ICRS for Galactic tranformation incorrect.  Result is (%g,%g), expected (%g,%g)",
+                    RAD_TO_DEG(icrsFromGalactic->r),RAD_TO_DEG(icrsFromGalactic->d),
+                    alpha[x], delta[x]);
+            return 4;
+        }
+        psFree(galactic);
+        psFree(icrsFromGalactic);
+
+        psFree(toEcliptic);
+        psFree(fromEcliptic);
+        psFree(toGalactic);
+        psFree(fromGalactic);
+
+    }
+
+    return 0;
+}
+
+#define SPHERE_PRECESS_TP1_R            0.0               //    0.0       degrees
+#define SPHERE_PRECESS_TP1_D            0.0               //    0.0       degrees
+#define SPHERE_PRECESS_TP1_EXPECT_R     6.238453          //  357.437     degrees
+#define SPHERE_PRECESS_TP1_EXPECT_D    -0.019426          //   -1.113     degrees
+#define SPHERE_PRECESS_TP2_R            0.0               //    0.0       degrees
+#define SPHERE_PRECESS_TP2_D            1.570796          //   90.0       degrees
+#define SPHERE_PRECESS_TP2_EXPECT_R     6.260828          //  358.719     degrees
+#define SPHERE_PRECESS_TP2_EXPECT_D     1.551353          //   88.886     degrees
+#define SPHERE_PRECESS_TP3_R            3.141593          //  180.0       degrees
+#define SPHERE_PRECESS_TP3_D            0.523599          //   30.0       degrees
+#define SPHERE_PRECESS_TP3_EXPECT_R     3.096616          //  177.423     degrees
+#define SPHERE_PRECESS_TP3_EXPECT_D     0.543024          //   31.113     degrees
+
+psS32 testSphereRotPrecess( void )
+{
+    psSphere*     inputCoord  = psSphereAlloc();
+    psSphere*     outputCoord = NULL;
+    psTime*       fromTime    = psTimeFromMJD(MJD_2100);
+    psTime*       toTime      = psTimeFromMJD(MJD_1900);
+
+    // Set input coordinate
+    inputCoord->r = SPHERE_PRECESS_TP1_R;
+    inputCoord->d = SPHERE_PRECESS_TP1_D;
+    inputCoord->rErr = 0.0;
+    inputCoord->dErr = 0.0;
+
+    // Calculate precess
+    outputCoord = psSpherePrecess(inputCoord, fromTime, toTime);
+    // Verify return is not NULL
+    if(outputCoord == NULL) {
+        psError(PS_ERR_UNKNOWN,true,"Returned NULL not expected");
+        return 1;
+    }
+    // Verify return with expected values
+    if( fabs(outputCoord->r - SPHERE_PRECESS_TP1_EXPECT_R) > ERROR_TOL) {
+        psError(PS_ERR_UNKNOWN,true,"Precess r = %lg not equal to expected = %lg",
+                outputCoord->r,SPHERE_PRECESS_TP1_EXPECT_R);
+        return 2;
+    }
+    if( fabs(outputCoord->d - SPHERE_PRECESS_TP1_EXPECT_D) > ERROR_TOL) {
+        psError(PS_ERR_UNKNOWN,true,"Precess d = %lg not equal to expected = %lg",
+                outputCoord->d,SPHERE_PRECESS_TP1_EXPECT_D);
+        return 3;
+    }
+    psFree(outputCoord);
+
+    // Set input coordinate
+    inputCoord->r = SPHERE_PRECESS_TP2_R;
+    inputCoord->d = SPHERE_PRECESS_TP2_D;
+    inputCoord->rErr = 0.0;
+    inputCoord->dErr = 0.0;
+
+    // Calculate precess
+    outputCoord = psSpherePrecess(inputCoord, fromTime, toTime);
+    // Verify return is not NULL
+    if(outputCoord == NULL) {
+        psError(PS_ERR_UNKNOWN,true,"Returned NULL not expected");
+        return 4;
+    }
+    // Verify return with expected values
+    if( fabs(outputCoord->r - SPHERE_PRECESS_TP2_EXPECT_R) > ERROR_TOL) {
+        psError(PS_ERR_UNKNOWN,true,"Precess r = %lg not equal to expected = %lg",
+                outputCoord->r,SPHERE_PRECESS_TP2_EXPECT_R);
+        return 5;
+    }
+    if( fabs(outputCoord->d - SPHERE_PRECESS_TP2_EXPECT_D) > ERROR_TOL) {
+        psError(PS_ERR_UNKNOWN,true,"Precess d = %lg not equal to expected = %lg",
+                outputCoord->d,SPHERE_PRECESS_TP2_EXPECT_D);
+        return 6;
+    }
+    psFree(outputCoord);
+
+    // Set input coordinate
+    inputCoord->r = SPHERE_PRECESS_TP3_R;
+    inputCoord->d = SPHERE_PRECESS_TP3_D;
+    inputCoord->rErr = 0.0;
+    inputCoord->dErr = 0.0;
+
+    // Calculate precess
+    outputCoord = psSpherePrecess(inputCoord, fromTime, toTime);
+    // Verify return is not NULL
+    if(outputCoord == NULL) {
+        psError(PS_ERR_UNKNOWN,true,"Returned NULL not expected");
+        return 7;
+    }
+    // Verify return with expected values
+    if( fabs(outputCoord->r - SPHERE_PRECESS_TP3_EXPECT_R) > ERROR_TOL) {
+        psError(PS_ERR_UNKNOWN,true,"Precess r = %lg not equal to expected = %lg",
+                outputCoord->r,SPHERE_PRECESS_TP3_EXPECT_R);
+        return 8;
+    }
+    if( fabs(outputCoord->d - SPHERE_PRECESS_TP3_EXPECT_D) > ERROR_TOL) {
+        psError(PS_ERR_UNKNOWN,true,"Precess d = %lg not equal to expected = %lg",
+                outputCoord->d,SPHERE_PRECESS_TP3_EXPECT_D);
+        return 9;
+    }
+    psFree(outputCoord);
+
+    // Invoke precess with invalid parameter
+    psLogMsg(__func__,PS_LOG_INFO,"Following should generate an error message");
+    outputCoord = psSpherePrecess(inputCoord, fromTime, NULL);
+    if(outputCoord != NULL) {
+        psError(PS_ERR_UNKNOWN,true,"Did not return NULL with invalid input");
+        return 10;
+    }
+
+    // Invoke precess with invalid parameter
+    psLogMsg(__func__,PS_LOG_INFO,"Following should generate an error message");
+    outputCoord = psSpherePrecess(inputCoord, NULL, toTime);
+    if(outputCoord != NULL) {
+        psError(PS_ERR_UNKNOWN,true,"Did not return NULL with invalid input");
+        return 11;
+    }
+
+    // Invoke precess with invalid parameter
+    psLogMsg(__func__,PS_LOG_INFO,"Following should generate an error message");
+    outputCoord = psSpherePrecess(NULL, fromTime, toTime);
+    if(outputCoord != NULL) {
+        psError(PS_ERR_UNKNOWN,true,"Did not return NULL with invalid input");
+        return 12;
+    }
+
+    // Free objects
+    psFree(fromTime);
+    psFree(toTime);
+    psFree(inputCoord);
+
+    return 0;
+}
Index: trunk/psLib/test/astro/verified/tst_psCoord.stderr
===================================================================
--- trunk/psLib/test/astro/verified/tst_psCoord.stderr	(revision 4581)
+++ trunk/psLib/test/astro/verified/tst_psCoord.stderr	(revision 4601)
@@ -1,11 +1,2 @@
-/***************************** TESTPOINT ******************************************\
-*             TestFile: tst_psCoord.c                                              *
-*            TestPoint: psCoord{psSphereTransformAlloc()}                          *
-*             TestType: Positive                                                   *
-\**********************************************************************************/
-
-
----> TESTPOINT PASSED (psCoord{psSphereTransformAlloc()} | tst_psCoord.c)
-
 /***************************** TESTPOINT ******************************************\
 *             TestFile: tst_psCoord.c                                              *
@@ -100,128 +91,2 @@
 ---> TESTPOINT PASSED (psCoord{psPlaneDistortApply()} | tst_psCoord.c)
 
-/***************************** TESTPOINT ******************************************\
-*             TestFile: tst_psCoord.c                                              *
-*            TestPoint: psCoord{psSphereTransformApply()}                          *
-*             TestType: Positive                                                   *
-\**********************************************************************************/
-
-<DATE><TIME>|<HOST>|I|testSphereTransformApply1
-    Following should generate an error
-<DATE><TIME>|<HOST>|E|psSphereTransformApply (FILE:LINENO)
-    Unallowable operation: transform is NULL.
-<DATE><TIME>|<HOST>|I|testSphereTransformApply1
-    Following should generate an error
-<DATE><TIME>|<HOST>|E|psSphereTransformApply (FILE:LINENO)
-    Unallowable operation: coord is NULL.
-
----> TESTPOINT PASSED (psCoord{psSphereTransformApply()} | tst_psCoord.c)
-
-/***************************** TESTPOINT ******************************************\
-*             TestFile: tst_psCoord.c                                              *
-*            TestPoint: psCoord{psSphereTransformApply()}                          *
-*             TestType: Positive                                                   *
-\**********************************************************************************/
-
-
----> TESTPOINT PASSED (psCoord{psSphereTransformApply()} | tst_psCoord.c)
-
-/***************************** TESTPOINT ******************************************\
-*             TestFile: tst_psCoord.c                                              *
-*            TestPoint: psCoord{psSphereTransformApply()}                          *
-*             TestType: Positive                                                   *
-\**********************************************************************************/
-
-
----> TESTPOINT PASSED (psCoord{psSphereTransformApply()} | tst_psCoord.c)
-
-/***************************** TESTPOINT ******************************************\
-*             TestFile: tst_psCoord.c                                              *
-*            TestPoint: psCoord{psSphereTransformApply()}                          *
-*             TestType: Positive                                                   *
-\**********************************************************************************/
-
-
----> TESTPOINT PASSED (psCoord{psSphereTransformApply()} | tst_psCoord.c)
-
-/***************************** TESTPOINT ******************************************\
-*             TestFile: tst_psCoord.c                                              *
-*            TestPoint: psCoord{psSphereTransformApply()}                          *
-*             TestType: Positive                                                   *
-\**********************************************************************************/
-
-
----> TESTPOINT PASSED (psCoord{psSphereTransformApply()} | tst_psCoord.c)
-
-/***************************** TESTPOINT ******************************************\
-*             TestFile: tst_psCoord.c                                              *
-*            TestPoint: psCoord{psSphereTransformICRSToEcliptic()}                 *
-*             TestType: Positive                                                   *
-\**********************************************************************************/
-
-<DATE><TIME>|<HOST>|I|testSphereTransformICRSToEcliptic
-    Following should generate an error message
-<DATE><TIME>|<HOST>|E|psSphereTransformICRSToEcliptic (FILE:LINENO)
-    Unallowable operation: time is NULL.
-<DATE><TIME>|<HOST>|I|testSphereTransformICRSToEcliptic
-    Following should generate an error message
-<DATE><TIME>|<HOST>|E|psSphereTransformICRSToEcliptic (FILE:LINENO)
-    Specified time is less than 1900.
-
----> TESTPOINT PASSED (psCoord{psSphereTransformICRSToEcliptic()} | tst_psCoord.c)
-
-/***************************** TESTPOINT ******************************************\
-*             TestFile: tst_psCoord.c                                              *
-*            TestPoint: psCoord{psSphereTransformEclipticToICRS()}                 *
-*             TestType: Positive                                                   *
-\**********************************************************************************/
-
-<DATE><TIME>|<HOST>|I|testSphereTransformEclipticToICRS
-    Following should generate an error message
-<DATE><TIME>|<HOST>|E|psSphereTransformEclipticToICRS (FILE:LINENO)
-    Unallowable operation: time is NULL.
-<DATE><TIME>|<HOST>|I|testSphereTransformEclipticToICRS
-    Following should generate an error message
-<DATE><TIME>|<HOST>|E|psSphereTransformEclipticToICRS (FILE:LINENO)
-    Specified time is less than 1900.
-
----> TESTPOINT PASSED (psCoord{psSphereTransformEclipticToICRS()} | tst_psCoord.c)
-
-/***************************** TESTPOINT ******************************************\
-*             TestFile: tst_psCoord.c                                              *
-*            TestPoint: psCoord{psSphereTransformICRSToGalactic()}                 *
-*             TestType: Positive                                                   *
-\**********************************************************************************/
-
-
----> TESTPOINT PASSED (psCoord{psSphereTransformICRSToGalactic()} | tst_psCoord.c)
-
-/***************************** TESTPOINT ******************************************\
-*             TestFile: tst_psCoord.c                                              *
-*            TestPoint: psCoord{psSphereTransformGalacticToICRS()}                 *
-*             TestType: Positive                                                   *
-\**********************************************************************************/
-
-
----> TESTPOINT PASSED (psCoord{psSphereTransformGalacticToICRS()} | tst_psCoord.c)
-
-/***************************** TESTPOINT ******************************************\
-*             TestFile: tst_psCoord.c                                              *
-*            TestPoint: psCoord{psSphereTransformPrecess()}                        *
-*             TestType: Positive                                                   *
-\**********************************************************************************/
-
-<DATE><TIME>|<HOST>|I|testSphereTransformPrecess
-    Following should generate an error message
-<DATE><TIME>|<HOST>|E|psSpherePrecess (FILE:LINENO)
-    Unallowable operation: toTime is NULL.
-<DATE><TIME>|<HOST>|I|testSphereTransformPrecess
-    Following should generate an error message
-<DATE><TIME>|<HOST>|E|psSpherePrecess (FILE:LINENO)
-    Unallowable operation: fromTime is NULL.
-<DATE><TIME>|<HOST>|I|testSphereTransformPrecess
-    Following should generate an error message
-<DATE><TIME>|<HOST>|E|psSpherePrecess (FILE:LINENO)
-    Unallowable operation: coords is NULL.
-
----> TESTPOINT PASSED (psCoord{psSphereTransformPrecess()} | tst_psCoord.c)
-
