IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 3026


Ignore:
Timestamp:
Jan 17, 2005, 12:17:29 PM (22 years ago)
Author:
desonia
Message:

changed psMatrixLUD to create the perm parameter according to the machine
size of 'size_t', which is used by GSL.

Location:
trunk/psLib
Files:
14 edited

Legend:

Unmodified
Added
Removed
  • trunk/psLib/src/dataManip/psFunctions.c

    r3002 r3026  
    77 *  polynomials.  It also contains a Gaussian functions.
    88 *
    9  *  @version $Revision: 1.81 $ $Name: not supported by cvs2svn $
    10  *  @date $Date: 2005-01-14 23:40:24 $
     9 *  @version $Revision: 1.82 $ $Name: not supported by cvs2svn $
     10 *  @date $Date: 2005-01-17 22:17:29 $
    1111 *
    1212 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    19061906        (tmp->spline)[i] = psPolynomial1DAlloc(order+1, PS_POLYNOMIAL_ORD);
    19071907    }
     1908
     1909    // This should be set by the psVectorFitSpline1D()
     1910    tmp->p_psDeriv2 = NULL;
    19081911
    19091912    tmp->domains = (psF32 *) psAlloc((bounds->n) * sizeof(psF32));
  • trunk/psLib/src/dataManip/psMatrix.c

    r2697 r3026  
    2020 *  @author Ross Harman, MHPCC
    2121 *
    22  *  @version $Revision: 1.21 $ $Name: not supported by cvs2svn $
    23  *  @date $Date: 2004-12-11 00:16:38 $
     22 *  @version $Revision: 1.22 $ $Name: not supported by cvs2svn $
     23 *  @date $Date: 2005-01-17 22:17:29 $
    2424 *
    2525 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    175175/*****************************************************************************/
    176176
    177 psImage* psMatrixLUD(psImage* outImage, psVector* outPerm, psImage* inImage)
     177psImage* psMatrixLUD(psImage* outImage, psVector** outPerm, psImage* inImage)
    178178{
    179179    psS32 signum = 0;
     
    190190    PS_CHECK_POINTERS(inImage, outImage, outImage);
    191191    PS_CHECK_DIMEN_AND_TYPE(inImage, PS_DIMEN_IMAGE, outImage);
    192     PS_VECTOR_CHECK_NULL_GENERAL(outPerm, psMatrixLUD_EXIT);
    193     PS_CHECK_DIMEN_AND_TYPE(outPerm, PS_DIMEN_VECTOR, outImage);
     192    PS_PTR_CHECK_NULL_GENERAL(outPerm, psMatrixLUD_EXIT);
    194193    psImageRecycle(outImage, inImage->numCols, inImage->numRows, inImage->type.type);
    195     psVectorRecycle(outPerm, inImage->numRows, inImage->type.type);
    196194    PS_CHECK_SQUARE(inImage, outImage);
    197195    PS_CHECK_SQUARE(outImage, outImage);
     
    203201    // Initialize GSL data
    204202    perm.size = numCols;
    205     outPerm->n = numCols;
    206     perm.data = outPerm->data.V;
     203    if (sizeof(size_t) == 4) {
     204        *outPerm = psVectorRecycle(*outPerm, numCols, PS_TYPE_S32);
     205    } else if (sizeof(size_t) == 8) {
     206        *outPerm = psVectorRecycle(*outPerm, numCols, PS_TYPE_S64);
     207    } else {
     208        psError(PS_ERR_UNKNOWN, true,
     209                "Failed to allocate the permutation vector; "
     210                "could not determine the cooresponding data type.");
     211        psMatrixLUD_EXIT;
     212    }
     213
     214    (*outPerm)->n = numCols;
     215    perm.data = (*outPerm)->data.V;
    207216    lu = gsl_matrix_alloc(numRows, numCols);
    208217
     
    244253    PS_CHECK_DIMEN_AND_TYPE(inVector, PS_DIMEN_VECTOR, outVector);
    245254    PS_VECTOR_CHECK_NULL(inPerm, outVector);
    246     PS_CHECK_DIMEN_AND_TYPE(inPerm, PS_DIMEN_VECTOR, outVector);
    247255    psVectorRecycle(outVector, inImage->numRows, inImage->type.type);
    248256
  • trunk/psLib/src/dataManip/psMatrix.h

    r2671 r3026  
    2222 *  @author Ross Harman, MHPCC
    2323 *
    24  *  @version $Revision: 1.13 $ $Name: not supported by cvs2svn $
    25  *  @date $Date: 2004-12-09 20:51:22 $
     24 *  @version $Revision: 1.14 $ $Name: not supported by cvs2svn $
     25 *  @date $Date: 2005-01-17 22:17:29 $
    2626 *
    2727 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    4545psImage* psMatrixLUD(
    4646    psImage* outImage,                 ///< Image to return, or NULL.
    47     psVector* outPerm,                 ///< Output permutation vector used by psMatrixLUSolve.
     47    psVector** outPerm,                ///< Output permutation vector used by psMatrixLUSolve.
    4848    psImage* inImage                   ///< Image to decompose.
    4949);
  • trunk/psLib/src/dataManip/psMinimize.c

    r3000 r3026  
    99 *  @author GLG, MHPCC
    1010 *
    11  *  @version $Revision: 1.99 $ $Name: not supported by cvs2svn $
    12  *  @date $Date: 2005-01-14 23:27:56 $
     11 *  @version $Revision: 1.100 $ $Name: not supported by cvs2svn $
     12 *  @date $Date: 2005-01-17 22:17:29 $
    1313 *
    1414 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    294294        This can not be implemented until SDR states what order spline should be
    295295        created.
    296      
     296
    297297        Should we error if mySPline is not NULL?
    298298    */
     
    616616    psS32 p;
    617617    psVector *beta = psVectorAlloc(numParams, PS_TYPE_F64);
    618     psVector *perm = psVectorAlloc(numParams, PS_TYPE_F64);
     618    psVector *perm = NULL;
    619619
    620620    psVector *paramDeltasF64 = psVectorAlloc(numParams, PS_TYPE_F64);
     
    738738        // XXX: How do we know if these functions were successful?
    739739        //
    740         aOut = psMatrixLUD(aOut, perm, A);
     740        aOut = psMatrixLUD(aOut, &perm, A);
    741741        paramDeltasF64 = psMatrixLUSolve(paramDeltasF64, aOut, beta, perm);
    742742
     
    936936    coeffs = psVectorAlloc(polyOrder, PS_TYPE_F64);
    937937    X = psVectorAlloc(x->n, PS_TYPE_F64);
    938     outPerm = psVectorAlloc(polyOrder, PS_TYPE_F64);
    939938    xSums = psVectorAlloc(1 + 2 * polyOrder, PS_TYPE_F64);
    940939
     
    943942        B->data.F64[i] = 0.0;
    944943        coeffs->data.F64[i] = 0.0;
    945         outPerm->data.F64[i] = 0.0;
    946944        for (j = 0; j < polyOrder; j++) {
    947945            A->data.F64[i][j] = 0.0;
     
    987985
    988986    // XXX: How do we know if these routines were successful?
    989     ALUD = psMatrixLUD(ALUD, outPerm, A);
     987    ALUD = psMatrixLUD(ALUD, &outPerm, A);
    990988    coeffs = psMatrixLUSolve(coeffs, ALUD, B, outPerm);
    991989
     
    11391137Algorithm:
    11401138 
    1141 XXX completely ad hoc: 
     1139XXX completely ad hoc:
    11421140start with the user-supplied starting parameter and
    11431141call that b.  Calculate a/c as a fractional amount smaller/larger than b.
    11441142Repeat this process until a local minimum is found.
    11451143 
    1146 XXX: 
    1147 new algorithm: 
     1144XXX:
     1145new algorithm:
    11481146start at x=0, expand in one direction until the function
    11491147decreases.  Then you have two points in the bracket.  Keep going until it
     
    11511149direction.
    11521150 
    1153 XXX: 
     1151XXX:
    11541152This is F32 only.
    11551153 
    1156 XXX: 
     1154XXX:
    11571155output bracket vector should be an input as well.
    11581156*****************************************************************************/
  • trunk/psLib/src/math/psMatrix.c

    r2697 r3026  
    2020 *  @author Ross Harman, MHPCC
    2121 *
    22  *  @version $Revision: 1.21 $ $Name: not supported by cvs2svn $
    23  *  @date $Date: 2004-12-11 00:16:38 $
     22 *  @version $Revision: 1.22 $ $Name: not supported by cvs2svn $
     23 *  @date $Date: 2005-01-17 22:17:29 $
    2424 *
    2525 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    175175/*****************************************************************************/
    176176
    177 psImage* psMatrixLUD(psImage* outImage, psVector* outPerm, psImage* inImage)
     177psImage* psMatrixLUD(psImage* outImage, psVector** outPerm, psImage* inImage)
    178178{
    179179    psS32 signum = 0;
     
    190190    PS_CHECK_POINTERS(inImage, outImage, outImage);
    191191    PS_CHECK_DIMEN_AND_TYPE(inImage, PS_DIMEN_IMAGE, outImage);
    192     PS_VECTOR_CHECK_NULL_GENERAL(outPerm, psMatrixLUD_EXIT);
    193     PS_CHECK_DIMEN_AND_TYPE(outPerm, PS_DIMEN_VECTOR, outImage);
     192    PS_PTR_CHECK_NULL_GENERAL(outPerm, psMatrixLUD_EXIT);
    194193    psImageRecycle(outImage, inImage->numCols, inImage->numRows, inImage->type.type);
    195     psVectorRecycle(outPerm, inImage->numRows, inImage->type.type);
    196194    PS_CHECK_SQUARE(inImage, outImage);
    197195    PS_CHECK_SQUARE(outImage, outImage);
     
    203201    // Initialize GSL data
    204202    perm.size = numCols;
    205     outPerm->n = numCols;
    206     perm.data = outPerm->data.V;
     203    if (sizeof(size_t) == 4) {
     204        *outPerm = psVectorRecycle(*outPerm, numCols, PS_TYPE_S32);
     205    } else if (sizeof(size_t) == 8) {
     206        *outPerm = psVectorRecycle(*outPerm, numCols, PS_TYPE_S64);
     207    } else {
     208        psError(PS_ERR_UNKNOWN, true,
     209                "Failed to allocate the permutation vector; "
     210                "could not determine the cooresponding data type.");
     211        psMatrixLUD_EXIT;
     212    }
     213
     214    (*outPerm)->n = numCols;
     215    perm.data = (*outPerm)->data.V;
    207216    lu = gsl_matrix_alloc(numRows, numCols);
    208217
     
    244253    PS_CHECK_DIMEN_AND_TYPE(inVector, PS_DIMEN_VECTOR, outVector);
    245254    PS_VECTOR_CHECK_NULL(inPerm, outVector);
    246     PS_CHECK_DIMEN_AND_TYPE(inPerm, PS_DIMEN_VECTOR, outVector);
    247255    psVectorRecycle(outVector, inImage->numRows, inImage->type.type);
    248256
  • trunk/psLib/src/math/psMatrix.h

    r2671 r3026  
    2222 *  @author Ross Harman, MHPCC
    2323 *
    24  *  @version $Revision: 1.13 $ $Name: not supported by cvs2svn $
    25  *  @date $Date: 2004-12-09 20:51:22 $
     24 *  @version $Revision: 1.14 $ $Name: not supported by cvs2svn $
     25 *  @date $Date: 2005-01-17 22:17:29 $
    2626 *
    2727 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    4545psImage* psMatrixLUD(
    4646    psImage* outImage,                 ///< Image to return, or NULL.
    47     psVector* outPerm,                 ///< Output permutation vector used by psMatrixLUSolve.
     47    psVector** outPerm,                ///< Output permutation vector used by psMatrixLUSolve.
    4848    psImage* inImage                   ///< Image to decompose.
    4949);
  • trunk/psLib/src/math/psMinimize.c

    r3000 r3026  
    99 *  @author GLG, MHPCC
    1010 *
    11  *  @version $Revision: 1.99 $ $Name: not supported by cvs2svn $
    12  *  @date $Date: 2005-01-14 23:27:56 $
     11 *  @version $Revision: 1.100 $ $Name: not supported by cvs2svn $
     12 *  @date $Date: 2005-01-17 22:17:29 $
    1313 *
    1414 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    294294        This can not be implemented until SDR states what order spline should be
    295295        created.
    296      
     296
    297297        Should we error if mySPline is not NULL?
    298298    */
     
    616616    psS32 p;
    617617    psVector *beta = psVectorAlloc(numParams, PS_TYPE_F64);
    618     psVector *perm = psVectorAlloc(numParams, PS_TYPE_F64);
     618    psVector *perm = NULL;
    619619
    620620    psVector *paramDeltasF64 = psVectorAlloc(numParams, PS_TYPE_F64);
     
    738738        // XXX: How do we know if these functions were successful?
    739739        //
    740         aOut = psMatrixLUD(aOut, perm, A);
     740        aOut = psMatrixLUD(aOut, &perm, A);
    741741        paramDeltasF64 = psMatrixLUSolve(paramDeltasF64, aOut, beta, perm);
    742742
     
    936936    coeffs = psVectorAlloc(polyOrder, PS_TYPE_F64);
    937937    X = psVectorAlloc(x->n, PS_TYPE_F64);
    938     outPerm = psVectorAlloc(polyOrder, PS_TYPE_F64);
    939938    xSums = psVectorAlloc(1 + 2 * polyOrder, PS_TYPE_F64);
    940939
     
    943942        B->data.F64[i] = 0.0;
    944943        coeffs->data.F64[i] = 0.0;
    945         outPerm->data.F64[i] = 0.0;
    946944        for (j = 0; j < polyOrder; j++) {
    947945            A->data.F64[i][j] = 0.0;
     
    987985
    988986    // XXX: How do we know if these routines were successful?
    989     ALUD = psMatrixLUD(ALUD, outPerm, A);
     987    ALUD = psMatrixLUD(ALUD, &outPerm, A);
    990988    coeffs = psMatrixLUSolve(coeffs, ALUD, B, outPerm);
    991989
     
    11391137Algorithm:
    11401138 
    1141 XXX completely ad hoc: 
     1139XXX completely ad hoc:
    11421140start with the user-supplied starting parameter and
    11431141call that b.  Calculate a/c as a fractional amount smaller/larger than b.
    11441142Repeat this process until a local minimum is found.
    11451143 
    1146 XXX: 
    1147 new algorithm: 
     1144XXX:
     1145new algorithm:
    11481146start at x=0, expand in one direction until the function
    11491147decreases.  Then you have two points in the bracket.  Keep going until it
     
    11511149direction.
    11521150 
    1153 XXX: 
     1151XXX:
    11541152This is F32 only.
    11551153 
    1156 XXX: 
     1154XXX:
    11571155output bracket vector should be an input as well.
    11581156*****************************************************************************/
  • trunk/psLib/src/math/psPolynomial.c

    r3002 r3026  
    77 *  polynomials.  It also contains a Gaussian functions.
    88 *
    9  *  @version $Revision: 1.81 $ $Name: not supported by cvs2svn $
    10  *  @date $Date: 2005-01-14 23:40:24 $
     9 *  @version $Revision: 1.82 $ $Name: not supported by cvs2svn $
     10 *  @date $Date: 2005-01-17 22:17:29 $
    1111 *
    1212 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    19061906        (tmp->spline)[i] = psPolynomial1DAlloc(order+1, PS_POLYNOMIAL_ORD);
    19071907    }
     1908
     1909    // This should be set by the psVectorFitSpline1D()
     1910    tmp->p_psDeriv2 = NULL;
    19081911
    19091912    tmp->domains = (psF32 *) psAlloc((bounds->n) * sizeof(psF32));
  • trunk/psLib/src/math/psSpline.c

    r3002 r3026  
    77 *  polynomials.  It also contains a Gaussian functions.
    88 *
    9  *  @version $Revision: 1.81 $ $Name: not supported by cvs2svn $
    10  *  @date $Date: 2005-01-14 23:40:24 $
     9 *  @version $Revision: 1.82 $ $Name: not supported by cvs2svn $
     10 *  @date $Date: 2005-01-17 22:17:29 $
    1111 *
    1212 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    19061906        (tmp->spline)[i] = psPolynomial1DAlloc(order+1, PS_POLYNOMIAL_ORD);
    19071907    }
     1908
     1909    // This should be set by the psVectorFitSpline1D()
     1910    tmp->p_psDeriv2 = NULL;
    19081911
    19091912    tmp->domains = (psF32 *) psAlloc((bounds->n) * sizeof(psF32));
  • trunk/psLib/test/dataIO

    • Property svn:ignore
      •  

        old new  
        33tst_psFits
        44multi.fits
         5table.fits
  • trunk/psLib/test/dataIO/.cvsignore

    r2991 r3026  
    33tst_psFits
    44multi.fits
     5table.fits
  • trunk/psLib/test/dataManip/tst_psMatrix03.c

    r2686 r3026  
    1414 *  @author  Ross Harman, MHPCC
    1515 *
    16  *  @version $Revision: 1.12 $  $Name: not supported by cvs2svn $
    17  *  @date  $Date: 2004-12-10 20:00:06 $
     16 *  @version $Revision: 1.13 $  $Name: not supported by cvs2svn $
     17 *  @date  $Date: 2005-01-17 22:17:29 $
    1818 *
    1919 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    108108    inVector->n = 3;
    109109    luImage32 = (psImage*)psImageAlloc(3, 3, PS_TYPE_F32);
    110     perm32 = (psVector*)psVectorAlloc(3, PS_TYPE_F32);
    111110    outVector32 = (psVector*)psVectorAlloc(3, PS_TYPE_F32);
    112111    inVector32 = (psVector*)psVectorAlloc(3, PS_TYPE_F32);
     
    131130    printPositiveTestHeader(stdout, "psMatrix", "Calculate LU matrix");
    132131    tempImage = luImage;
    133     luImage = psMatrixLUD(luImage, perm, inImage);
     132    luImage = psMatrixLUD(luImage, &perm, inImage);
    134133    CHECK_MATRIX(luImage);
    135134    if(luImage->type.dimen != PS_DIMEN_IMAGE) {
     
    140139
    141140    tempImage32 = luImage32;
    142     luImage32 = psMatrixLUD(luImage32, perm32, inImage32);
     141    luImage32 = psMatrixLUD(luImage32, &perm32, inImage32);
    143142    CHECK_MATRIX(luImage32);
    144143    if(luImage32->type.dimen != PS_DIMEN_IMAGE) {
  • trunk/psLib/test/fileUtils

    • Property svn:ignore
      •  

        old new  
        33tst_psFits
        44multi.fits
         5table.fits
  • trunk/psLib/test/fileUtils/.cvsignore

    r2991 r3026  
    33tst_psFits
    44multi.fits
     5table.fits
Note: See TracChangeset for help on using the changeset viewer.