IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Sep 7, 2004, 9:11:22 PM (22 years ago)
Author:
gusciora
Message:

...

File:
1 edited

Legend:

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

    r1724 r1725  
    77 *  polynomials.  It also contains a Gaussian functions.
    88 *
    9  *  @version $Revision: 1.27 $ $Name: not supported by cvs2svn $
    10  *  @date $Date: 2004-09-08 06:24:17 $
     9 *  @version $Revision: 1.28 $ $Name: not supported by cvs2svn $
     10 *  @date $Date: 2004-09-08 07:11:22 $
    1111 *
    1212 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
    13  *
    14  *  XXX: currently coefficient masks are not used in polynomial evaluation.
    15  *
    1613 */
    1714/*****************************************************************************/
     
    198195        newPoly->coeff[i] = 0.0;
    199196        newPoly->coeffErr[i] = 0.0;
    200         newPoly->mask[i] = 0.0;
     197        newPoly->mask[i] = 0;
    201198    }
    202199
     
    428425
    429426    for (loop_x = 0; loop_x < myPoly->n; loop_x++) {
    430         polySum += xSum * myPoly->coeff[loop_x];
    431         xSum *= x;
     427        if (myPoly->mask[loop_x] != 0) {
     428            polySum += xSum * myPoly->coeff[loop_x];
     429            xSum *= x;
     430        }
    432431    }
    433432
     
    436435
    437436// XXX: You can do this without having to psAlloc() vector d.
     437// XXX: How does the mask vector effect Crenshaw's formula?
    438438float p_psChebPolynomial1DEval(float x, const psPolynomial1D* myPoly)
    439439{
     
    505505        ySum = xSum;
    506506        for (loop_y = 0; loop_y < myPoly->nY; loop_y++) {
    507             polySum += ySum * myPoly->coeff[loop_x][loop_y];
    508             ySum *= y;
     507            if (myPoly->mask[loop_x][loop_y] != 0) {
     508                polySum += ySum * myPoly->coeff[loop_x][loop_y];
     509                ySum *= y;
     510            }
    509511        }
    510512        xSum *= x;
     
    584586            zSum = ySum;
    585587            for (loop_z = 0; loop_z < myPoly->nZ; loop_z++) {
    586                 polySum += zSum * myPoly->coeff[loop_x][loop_y][loop_z];
    587                 zSum *= z;
     588                if (myPoly->mask[loop_x][loop_y][loop_z] != 0) {
     589                    polySum += zSum * myPoly->coeff[loop_x][loop_y][loop_z];
     590                    zSum *= z;
     591                }
    588592            }
    589593            ySum *= y;
     
    681685                zSum = ySum;
    682686                for (loop_z = 0; loop_z < myPoly->nZ; loop_z++) {
    683                     polySum += zSum * myPoly->coeff[loop_w][loop_x][loop_y][loop_z];
    684                     zSum *= z;
     687                    if (myPoly->mask[loop_w][loop_x][loop_y][loop_z] != 0) {
     688                        polySum += zSum * myPoly->coeff[loop_w][loop_x][loop_y][loop_z];
     689                        zSum *= z;
     690                    }
    685691                }
    686692                ySum *= y;
     
    787793        newPoly->coeff[i] = 0.0;
    788794        newPoly->coeffErr[i] = 0.0;
    789         newPoly->mask[i] = 0.0;
     795        newPoly->mask[i] = 0;
    790796    }
    791797
     
    10031009
    10041010    for (loop_x = 0; loop_x < myPoly->n; loop_x++) {
    1005         polySum += xSum * myPoly->coeff[loop_x];
    1006         xSum *= x;
     1011        if (myPoly->mask[loop_x] != 0) {
     1012            polySum += xSum * myPoly->coeff[loop_x];
     1013            xSum *= x;
     1014        }
    10071015    }
    10081016
     
    10111019
    10121020// XXX: You can do this without having to psAlloc() vector d.
     1021// XXX: How does the mask vector effect Crenshaw's formula?
    10131022double p_psDChebPolynomial1DEval(double x, const psDPolynomial1D* myPoly)
    10141023{
     
    10811090        ySum = xSum;
    10821091        for (loop_y = 0; loop_y < myPoly->nY; loop_y++) {
    1083             polySum += ySum * myPoly->coeff[loop_x][loop_y];
    1084             ySum *= y;
     1092            if (myPoly->mask[loop_x][loop_y] != 0) {
     1093                polySum += ySum * myPoly->coeff[loop_x][loop_y];
     1094                ySum *= y;
     1095            }
    10851096        }
    10861097        xSum *= x;
     
    11591170            zSum = ySum;
    11601171            for (loop_z = 0; loop_z < myPoly->nZ; loop_z++) {
    1161                 polySum += zSum * myPoly->coeff[loop_x][loop_y][loop_z];
    1162                 zSum *= z;
     1172                if (myPoly->mask[loop_x][loop_y][loop_z] != 0) {
     1173                    polySum += zSum * myPoly->coeff[loop_x][loop_y][loop_z];
     1174                    zSum *= z;
     1175                }
    11631176            }
    11641177            ySum *= y;
     
    12581271                zSum = ySum;
    12591272                for (loop_z = 0; loop_z < myPoly->nZ; loop_z++) {
    1260                     polySum += zSum * myPoly->coeff[loop_w][loop_x][loop_y][loop_z];
    1261                     zSum *= z;
     1273                    if (myPoly->mask[loop_w][loop_x][loop_y][loop_z] != 0) {
     1274                        polySum += zSum * myPoly->coeff[loop_w][loop_x][loop_y][loop_z];
     1275                        zSum *= z;
     1276                    }
    12621277                }
    12631278                ySum *= y;
Note: See TracChangeset for help on using the changeset viewer.