IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Nov 2, 2004, 5:30:30 PM (22 years ago)
Author:
gusciora
Message:

...

File:
1 edited

Legend:

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

    r2267 r2269  
    99 *  @author GLG, MHPCC
    1010 *
    11  *  @version $Revision: 1.83 $ $Name: not supported by cvs2svn $
    12  *  @date $Date: 2004-11-02 19:08:33 $
     11 *  @version $Revision: 1.84 $ $Name: not supported by cvs2svn $
     12 *  @date $Date: 2004-11-03 03:30:30 $
    1313 *
    1414 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    6161returned as a psVector sums.
    6262 
    63 XXX: change name
    6463XXX: Use a static vector.
    6564 *****************************************************************************/
    66 void p_psBuildSums1D(double x,
    67                      psS32 polyOrder,
    68                      psVector* sums)
     65void psBuildSums1D(double x,
     66                   psS32 polyOrder,
     67                   psVector* sums)
    6968{
    7069    psS32 i = 0;
     
    7473        sums = psVectorAlloc(polyOrder, PS_TYPE_F64);
    7574    }
    76 
    7775    if (polyOrder > sums->n) {
    7876        sums = psVectorRealloc(sums, polyOrder);
     
    109107    psS32 i;
    110108    psS32 k;
    111     psBool mustFreeX = false;
    112109    float sig;
    113110    float p;
     
    150147    }
    151148
    152     if (mustFreeX == true) {
    153         psFree(X);
    154     }
    155149    psFree(u);
    156 
    157150    psTrace(".psLib.dataManip.CalculateSecondDerivs", 4,
    158151            "---- CalculateSecondDerivs() end ----\n");
     
    171164polynomials which are stored in psSpline1D.
    172165 
    173 XXX: check types/sizes
    174166XXX: This is F32 only
    175167 *****************************************************************************/
     168/*
    176169float p_psNRSpline1DEval(psSpline1D *spline,
    177170                         const psVector* restrict x,
     
    187180    PS_VECTOR_CHECK_NULL(y, NAN);
    188181    PS_VECTOR_CHECK_TYPE(y, PS_TYPE_F32, NAN);
    189 
     182 
    190183    psS32 n;
    191184    psS32 klo;
     
    197190    float D;
    198191    float Y;
    199 
     192 
    200193    n = spline->n;
    201     klo = p_psVectorBinDisectF32(spline->domains, (spline->n)+1, X);
     194    klo = p_psVectorBinDisect32(spline->domains, (spline->n)+1, X);
    202195    khi = klo + 1;
    203196    H = (spline->domains)[khi] - (spline->domains)[klo];
     
    206199    C = ((A*A*A)-A) * (H*H/6.0);
    207200    D = ((B*B*B)-B) * (H*H/6.0);
    208 
     201 
    209202    Y = (A * y->data.F32[klo]) +
    210203        (B * y->data.F32[khi]) +
    211204        (C * (spline->p_psDeriv2)[klo]) +
    212205        (D * (spline->p_psDeriv2)[khi]);
    213 
     206 
    214207    return(Y);
    215208}
    216 
     209*/
    217210/*****************************************************************************/
    218211/* FUNCTION IMPLEMENTATION - PUBLIC                                          */
     
    239232 
    240233XXX: usage of yErr is not specified in IfA documentation.
     234 
    241235XXX: Is the x argument redundant?  What do we do if the x argument is
    242236supplied, but does not equal the domains specified in mySpline?
     
    414408/******************************************************************************
    415409XXX: We assume unnormalized gaussians.
    416 XXX: Currently, yErr is ignored.
    417410 *****************************************************************************/
    418411psVector *psMinimizeLMChi2Gauss1D(psImage *deriv,
     
    441434        x = ((psVector *) (coords->data[i]))->data.F32[0];
    442435        out->data.F32[i] = psGaussian(x, mean, stdev, false);
    443         //        psTrace(".psLib.dataManip.psMinimize", 6,
    444         //            "out->data.F32[%d]: (x, m, s) is (%f, %f, %f) is %f\n", i, x, mean, stdev, out->data.F32[i]);
    445436    }
    446437
     
    449440        float tmp = (x - mean) * psGaussian(x, mean, stdev, false);
    450441        deriv->data.F32[i][0] = tmp / (stdev * stdev);
    451 
    452442        tmp = (x - mean) * (x - mean) *
    453443              psGaussian(x, mean, stdev, 0);
     
    482472XXX: This must work for both F32 and F64.  F32 is currently implemented.
    483473     Note: since the LUD routines are only implemented in F64, then we
    484 >     will have to convert all F32 input vectors to F64 regardless.  So,
     474     will have to convert all F32 input vectors to F64 regardless.  So,
    485475     the F64 port might be.
    486476 *****************************************************************************/
     
    730720
    731721/******************************************************************************
    732 p_psVectorFitPolynomial1DCheb():  This routine will fit a Chebyshev
    733 polynomial of degree myPoly to the data points (x, y) and return the
    734 coefficients of that polynomial.
     722VectorFitPolynomial1DCheb():  This routine will fit a Chebyshev polynomial of
     723degree myPoly to the data points (x, y) and return the coefficients of that
     724polynomial.
    735725 
    736726XXX: yErr is currently ignored.
     
    738728XXX: Use private name?
    739729*****************************************************************************/
    740 psPolynomial1D *p_psVectorFitPolynomial1DCheby(psPolynomial1D* myPoly,
     730psPolynomial1D *VectorFitPolynomial1DCheby(psPolynomial1D* myPoly,
    741731        const psVector* restrict x,
    742732        const psVector* restrict y,
     
    785775        psFree(fScalar);
    786776
    787         psTrace(".psLib.dataManip.p_psVectorFitPolynomial1DCheby", 6,
     777        psTrace(".psLib.dataManip.VectorFitPolynomial1DCheby", 6,
    788778                "(x, X, y, f(X)) is (%f, %f, %f, %f)\n",
    789779                x->data.F64[i], X, y->data.F64[i], f->data.F64[i]);
     
    809799
    810800/******************************************************************************
    811 p_psVectorFitPolynomial1DOrd():  This routine will fit an ordinary
    812 polynomial of degree myPoly to the data points (x, y) and return the
    813 coefficients of that polynomial.
     801VectorFitPolynomial1DOrd():  This routine will fit an ordinary polynomial of
     802degree myPoly to the data points (x, y) and return the coefficients of that
     803polynomial.
    814804 
    815805XXX: Use private name?
    816806XXX: Use recycled vectors.
    817807 *****************************************************************************/
    818 psPolynomial1D* p_psVectorFitPolynomial1DOrd(psPolynomial1D* myPoly,
     808psPolynomial1D* VectorFitPolynomial1DOrd(psPolynomial1D* myPoly,
    819809        const psVector* restrict x,
    820810        const psVector* restrict y,
     
    833823    psVector* xSums = NULL;
    834824
    835     psTrace(".psLib.dataManip.psVectorFitPolynomial1D", 4,
    836             "---- psVectorFitPolynomial1D() begin ----\n");
    837     // printf("psVectorFitPolynomial1D()\n");
     825    psTrace(".psLib.dataManip.VectorFitPolynomial1DOrd", 4,
     826            "---- VectorFitPolynomial1DOrd() begin ----\n");
     827    // printf("VectorFitPolynomial1D()\n");
    838828    // for (i=0;i<x->n;i++) {
    839829    // printf("(x, y, yErr) is (%f, %f, %f)\n", x->data.F64[i], y->data.F64[i], yErr->data.F64[i]);
     
    865855    if (yErr == NULL) {
    866856        for (i = 0; i < X->n; i++) {
    867             p_psBuildSums1D(X->data.F64[i], 2 * polyOrder, xSums);
     857            psBuildSums1D(X->data.F64[i], 2 * polyOrder, xSums);
    868858
    869859            for (k = 0; k < polyOrder; k++) {
     
    879869    } else {
    880870        for (i = 0; i < X->n; i++) {
    881             p_psBuildSums1D(X->data.F64[i], 2 * polyOrder, xSums);
     871            psBuildSums1D(X->data.F64[i], 2 * polyOrder, xSums);
    882872
    883873            for (k = 0; k < polyOrder; k++) {
     
    916906    psFree(xSums);
    917907
    918     psTrace(".psLib.dataManip.psVectorFitPolynomial1D", 4,
    919             "---- psVectorFitPolynomial1D() begin ----\n");
     908    psTrace(".psLib.dataManip.VectorFitPolynomial1DOrd", 4,
     909            "---- VectorFitPolynomial1DOrd() begin ----\n");
    920910    return (myPoly);
    921911}
     
    962952        PS_VECTOR_GEN_X_INDEX_STATIC_F64(x64Static, y->n);
    963953        if (myPoly->type == PS_POLYNOMIAL_CHEB) {
    964             p_psNormalizeVector(x64Static);
     954            p_psNormalizeVectorRange(x64Static, -1.0, 1.0);
    965955        }
    966956        x64 = x64Static;
     
    974964    // Call the appropriate vector fitting routine.
    975965    if (myPoly->type == PS_POLYNOMIAL_CHEB) {
    976         p_psVectorFitPolynomial1DCheby(myPoly, x64, y64, yErr64);
     966        VectorFitPolynomial1DCheby(myPoly, x64, y64, yErr64);
    977967    } else if (myPoly->type == PS_POLYNOMIAL_ORD) {
    978         tmpPoly = p_psVectorFitPolynomial1DOrd(myPoly, x64, y64, yErr64);
     968        tmpPoly = VectorFitPolynomial1DOrd(myPoly, x64, y64, yErr64);
    979969    } else {
    980970        psError(__func__, "unknown polynomial type.\n");
Note: See TracChangeset for help on using the changeset viewer.