IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Sep 6, 2005, 5:33:01 PM (21 years ago)
Author:
eugene
Message:

psphot reorganization: merged in pmObjects code from psModule, modified to work with psLib 0.7.0

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/psphot/src/psPolynomials.c

    r4901 r4954  
    11# include "psphot.h"
     2
     3// XXX EAM : this file defines alternate versions of the polynomial fitting
     4//           functions.  these differ from psLib v.0.5.0 in the definition
     5//           of nOrder (here we use nOrder in the mathematical sense, not
     6//           like IRAF.  ie, a linear function is of nOrder 1)
     7//           psLib v 0.7.0 should be in sync with out defintion of nOrder
     8//           If so, we can drop these functions and use the psLib versions.
    29
    310// write out the terms of the given 1D polynomial
     
    916}   
    1017
    11 psF32 Polynomial1DEval_EAM(psF32 x, const psPolynomial1D* myPoly)
     18psF64 Polynomial1DEval_EAM(psF64 x, const psPolynomial1D* myPoly)
    1219{
    1320    psS32 loop_x = 0;
    14     psF32 polySum = 0.0;
    15     psF32 xSum = 1.0;
     21    psF64 polySum = 0.0;
     22    psF64 xSum = 1.0;
    1623
    1724    for (loop_x = 0; loop_x < myPoly->n + 1; loop_x++) {
     
    2835                                       const psVector *x)
    2936{
    30     PS_POLY_CHECK_NULL(myPoly, NULL);
    31     PS_VECTOR_CHECK_NULL(x, NULL);
    32     PS_VECTOR_CHECK_TYPE(x, PS_TYPE_F64, NULL);
     37    // PS_POLY_CHECK_NULL(myPoly, NULL);
     38    // PS_VECTOR_CHECK_NULL(x, NULL);
     39    // PS_VECTOR_CHECK_TYPE(x, PS_TYPE_F64, NULL);
    3340
    3441    psVector *tmp;
     
    5663                                  psPolynomialType type)
    5764{
    58     PS_INT_CHECK_NON_NEGATIVE(nOrder, NULL);
     65    // PS_INT_CHECK_NON_NEGATIVE(nOrder, NULL);
    5966
    6067    psS32 i = 0;
     
    6572    newPoly->type = type;
    6673    newPoly->n = nOrder;
    67     newPoly->coeff = (psF32 *)psAlloc(nTerm * sizeof(psF32));
    68     newPoly->coeffErr = (psF32 *)psAlloc(nTerm * sizeof(psF32));
     74    newPoly->coeff = (psF64 *)psAlloc(nTerm * sizeof(psF64));
     75    newPoly->coeffErr = (psF64 *)psAlloc(nTerm * sizeof(psF64));
    6976    newPoly->mask = (psU8 *)psAlloc(nTerm * sizeof(psU8));
    7077    for (i = 0; i < nTerm; i++) {
     
    7380        newPoly->mask[i] = 0;
    7481    }
    75     p_psMemSetDeallocator(newPoly, (psFreeFcn) psPolynomial1DFree);
     82    psMemSetDeallocator(newPoly, (psFreeFunc) psPolynomial1DFree);
    7683    return(newPoly);
    7784}
     
    120127    // dump minutiae
    121128# ifndef PS_NO_TRACE
     129# if (0)
     130    // XXX EAM : change from FILE to fd breaks this code:
    122131    if (psTraceGetLevel (".psLib.dataManip.VectorFitPolynomial1DOrd") >= 5) {
    123132      FILE *f = psTraceGetDestination ();
     
    127136      }
    128137    }
     138# endif
    129139# endif
    130140     
     
    214224
    215225{
    216     PS_POLY_CHECK_NULL(myPoly, NULL);
    217     PS_VECTOR_CHECK_NULL(x, NULL);
    218     PS_VECTOR_CHECK_TYPE(x, PS_TYPE_F32, NULL);
    219     PS_VECTOR_CHECK_NULL(y, NULL);
    220     PS_VECTOR_CHECK_TYPE(y, PS_TYPE_F32, NULL);
     226    // PS_POLY_CHECK_NULL(myPoly, NULL);
     227    // PS_VECTOR_CHECK_NULL(x, NULL);
     228    // PS_VECTOR_CHECK_TYPE(x, PS_TYPE_F32, NULL);
     229    // PS_VECTOR_CHECK_NULL(y, NULL);
     230    // PS_VECTOR_CHECK_TYPE(y, PS_TYPE_F32, NULL);
    221231
    222232    psVector *tmp;
     
    246256
    247257{
    248     PS_POLY_CHECK_NULL(myPoly, NULL);
    249     PS_VECTOR_CHECK_NULL(x, NULL);
    250     PS_VECTOR_CHECK_TYPE(x, PS_TYPE_F64, NULL);
    251     PS_VECTOR_CHECK_NULL(y, NULL);
    252     PS_VECTOR_CHECK_TYPE(y, PS_TYPE_F64, NULL);
     258    // PS_POLY_CHECK_NULL(myPoly, NULL);
     259    // PS_VECTOR_CHECK_NULL(x, NULL);
     260    // PS_VECTOR_CHECK_TYPE(x, PS_TYPE_F64, NULL);
     261    // PS_VECTOR_CHECK_NULL(y, NULL);
     262    // PS_VECTOR_CHECK_TYPE(y, PS_TYPE_F64, NULL);
    253263
    254264    psVector *tmp;
     
    291301                                    psPolynomialType type)
    292302{
    293     PS_INT_CHECK_NON_NEGATIVE(nXorder, NULL);
    294     PS_INT_CHECK_NON_NEGATIVE(nYorder, NULL);
     303    // PS_INT_CHECK_NON_NEGATIVE(nXorder, NULL);
     304    // PS_INT_CHECK_NON_NEGATIVE(nYorder, NULL);
    295305
    296306    psS32 x = 0;
     
    305315    newPoly->nY = nYorder;
    306316
    307     newPoly->coeff = (psF32 **)psAlloc(nXterm * sizeof(psF32 *));
    308     newPoly->coeffErr = (psF32 **)psAlloc(nXterm * sizeof(psF32 *));
    309     newPoly->mask = (psU8 **)psAlloc(nXterm * sizeof(psU8 *));
     317    newPoly->coeff = (psF64 **)psAlloc(nXterm * sizeof(psF64 *));
     318    newPoly->coeffErr = (psF64 **)psAlloc(nXterm * sizeof(psF64 *));
     319    newPoly->mask = (char **)psAlloc(nXterm * sizeof(char *));
     320    // XXX EAM : this is an error in the definition of the polynomial mask
     321    //           (should be psU8 not char)
    310322    for (x = 0; x < nXterm; x++) {
    311         newPoly->coeff[x] = (psF32 *)psAlloc(nYterm * sizeof(psF32));
    312         newPoly->coeffErr[x] = (psF32 *)psAlloc(nYterm * sizeof(psF32));
    313         newPoly->mask[x] = (psU8 *)psAlloc(nYterm * sizeof(psU8));
     323        newPoly->coeff[x] = (psF64 *)psAlloc(nYterm * sizeof(psF64));
     324        newPoly->coeffErr[x] = (psF64 *)psAlloc(nYterm * sizeof(psF64));
     325        newPoly->mask[x] = (char *)psAlloc(nYterm * sizeof(char));
    314326    }
    315327    for (x = 0; x < nXterm; x++) {
     
    320332        }
    321333    }
    322     p_psMemSetDeallocator(newPoly, (psFreeFcn) psPolynomial2DFree);
     334    psMemSetDeallocator(newPoly, (psFreeFunc) psPolynomial2DFree);
    323335    return(newPoly);
    324336}
     
    510522                            const psVector* dz)
    511523{
    512     PS_VECTOR_CHECK_NULL(mask, NULL);
    513     PS_VECTOR_CHECK_NULL(x, NULL);
    514     PS_VECTOR_CHECK_NULL(y, NULL);
    515     PS_VECTOR_CHECK_NULL(z, NULL);
    516     PS_VECTOR_CHECK_NULL(dz, NULL);
     524    // PS_VECTOR_CHECK_NULL(mask, NULL);
     525    // PS_VECTOR_CHECK_NULL(x, NULL);
     526    // PS_VECTOR_CHECK_NULL(y, NULL);
     527    // PS_VECTOR_CHECK_NULL(z, NULL);
     528    // PS_VECTOR_CHECK_NULL(dz, NULL);
    517529
    518530    psVector *zFit   = NULL;
     
    548560// XXX EAM : VectorFitPolynomial2DOrd and Polynomial2DEvalVector require different types (F32 vs F64)
    549561
    550 # if (0) // moved to psLib
    551 // XXX EAM : this version uses myPoly->nX as Norder, not Nterms
    552 psF32 Polynomial2DEval(const psPolynomial2D* myPoly,
    553                        psF32 x,
    554                        psF32 y)
    555 {
    556     PS_POLY_CHECK_NULL(myPoly, NAN);
     562psF64 Polynomial2DEval(const psPolynomial2D* myPoly,
     563                       psF64 x,
     564                       psF64 y)
     565{
     566    // PS_POLY_CHECK_NULL(myPoly, NAN);
    557567
    558568    psS32 loop_x = 0;
    559569    psS32 loop_y = 0;
    560     psF32 polySum = 0.0;
    561     psF32 xSum = 1.0;
    562     psF32 ySum = 1.0;
     570    psF64 polySum = 0.0;
     571    psF64 xSum = 1.0;
     572    psF64 ySum = 1.0;
    563573
    564574    // XXX EAM : nX is order, not nTerms
     
    577587    return(polySum);
    578588}
    579 # endif
    580 
Note: See TracChangeset for help on using the changeset viewer.