IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Oct 4, 2004, 3:43:58 PM (22 years ago)
Author:
gusciora
Message:

Added F32 types for the VectorFit routine.

File:
1 edited

Legend:

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

    r1947 r1953  
    77 *  polynomials.  It also contains a Gaussian functions.
    88 *
    9  *  @version $Revision: 1.45 $ $Name: not supported by cvs2svn $
    10  *  @date $Date: 2004-10-04 00:40:23 $
     9 *  @version $Revision: 1.46 $ $Name: not supported by cvs2svn $
     10 *  @date $Date: 2004-10-05 01:43:58 $
    1111 *
    1212 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    19881988 
    19891989XXX: nobody asked for us to generate this routine.
     1990 
     1991XXX: add another psScalar argument for the result.
     1992 
     1993XXX: The VectorCopy routines seg fault when I declare range32 as static.
    19901994 *****************************************************************************/
    19911995psScalar *p_psVectorInterpolate(psVector *domain,
     
    19941998                                psScalar *x)
    19951999{
     2000    psVector *range32 = NULL;
     2001    psVector *domain32 = NULL;
    19962002    psTrace(".psLib.dataManip.psFunctions.p_psVectorInterpolate", 4,
    19972003            "---- p_psVectorInterpolate() begin ----\n");
     
    20002006            (domain->type.type != x->type.type)) {
    20012007        // XXX psError
    2002         printf("domain->type.type != range->type.type != x->type.type\n");
     2008        printf("p_psVectorInterpolate(): domain->type.type != range->type.type != x->type.type\n");
    20032009        printf("%d %d %d\n", domain->type.type, range->type.type, x->type.type);
     2010        exit(1);
    20042011    }
    20052012    if (domain->n != range->n) {
    20062013        // XXX psError
    20072014        printf("domain->n != range->n\n");
     2015        exit(1);
    20082016    }
    20092017    if (order > (domain->n - 1)) {
    20102018        // XXX psError: not enough data points for order-order interpolation.
    20112019        printf("not enough data points for order-order interpolation.\n");
     2020        exit(1);
    20122021    }
    20132022
     
    20202029                             order,
    20212030                             x->data.F32), PS_TYPE_F32));
     2031    } else if (x->type.type == PS_TYPE_F64) {
     2032        // XXX: use recycled vectors here.
     2033        range32 = psVectorCopy(range32, range, PS_TYPE_F32);
     2034        domain32 = psVectorCopy(domain32, domain, PS_TYPE_F32);
     2035
     2036        psScalar *tmpScalar = psScalarAlloc((double)
     2037                                            p_ps1DInterpolateF32(domain32->data.F32,
     2038                                                                 range32->data.F32,
     2039                                                                 domain32->n,
     2040                                                                 order,
     2041                                                                 (float) x->data.F64), PS_TYPE_F64);
     2042        psFree(range32);
     2043        psFree(domain32);
     2044
     2045        psTrace(".psLib.dataManip.psFunctions.p_psVectorInterpolate", 4,
     2046                "---- p_psVectorInterpolate() end ----\n");
     2047        // XXX: Convert data type to F64?
     2048        return(tmpScalar);
     2049
    20222050    } else {
    20232051        // XXX psError: type not supported
Note: See TracChangeset for help on using the changeset viewer.