Changeset 3380 for trunk/psLib/src/math/psSpline.c
- Timestamp:
- Mar 7, 2005, 10:56:13 AM (21 years ago)
- File:
-
- 1 edited
-
trunk/psLib/src/math/psSpline.c (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/src/math/psSpline.c
r3374 r3380 7 7 * polynomials. It also contains a Gaussian functions. 8 8 * 9 * @version $Revision: 1.9 0$ $Name: not supported by cvs2svn $10 * @date $Date: 2005-03-0 4 20:51:20$9 * @version $Revision: 1.91 $ $Name: not supported by cvs2svn $ 10 * @date $Date: 2005-03-07 20:56:13 $ 11 11 * 12 12 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 320 320 n = myPoly->n; 321 321 d = psVectorAlloc(n, PS_TYPE_F32); 322 d->data.F32[n-1] = myPoly->coeff[n-1]; 323 d->data.F32[n-2] = (2.0 * x * d->data.F32[n-1]) + myPoly->coeff[n-2]; 322 if(myPoly->mask[n-1] == 0) { 323 d->data.F32[n-1] = myPoly->coeff[n-1]; 324 } else { 325 d->data.F32[n-1] = 0.0; 326 } 327 d->data.F32[n-2] = (2.0 * x * d->data.F32[n-1]); 328 if(myPoly->mask[n-2] == 0) { 329 d->data.F32[n-2] += myPoly->coeff[n-2]; 330 } 324 331 for (i=n-3;i>=1;i--) { 325 332 d->data.F32[i] = (2.0 * x * d->data.F32[i+1]) - 326 (d->data.F32[i+2]) + 327 (myPoly->coeff[i]); 333 (d->data.F32[i+2]); 334 if(myPoly->mask[i] == 0) { 335 d->data.F32[i] += myPoly->coeff[i]; 336 } 328 337 } 329 338 330 339 tmp = (x * d->data.F32[1]) - 331 (d->data.F32[2]) + 332 (0.5 * myPoly->coeff[0]); 333 340 (d->data.F32[2]); 341 if(myPoly->mask[0] == 0) { 342 tmp += (0.5 * myPoly->coeff[0]); 343 } 334 344 psFree(d); 335 345 return(tmp); … … 608 618 n = myPoly->n; 609 619 d = psVectorAlloc(n, PS_TYPE_F64); 610 d->data.F64[n-1] = myPoly->coeff[n-1]; 611 d->data.F64[n-2] = (2.0 * x * d->data.F64[n-1]) + myPoly->coeff[n-2]; 620 if(myPoly->mask[n-1] == 0) { 621 d->data.F64[n-1] = myPoly->coeff[n-1]; 622 } else { 623 d->data.F64[n-1] = 0.0; 624 } 625 d->data.F64[n-2] = (2.0 * x * d->data.F64[n-1]); 626 if(myPoly->mask[n-2] == 0) { 627 d->data.F64[n-2] += myPoly->coeff[n-2]; 628 } 612 629 for (i=n-3;i>=1;i--) { 613 630 d->data.F64[i] = (2.0 * x * d->data.F64[i+1]) - 614 (d->data.F64[i+2]) + 615 (myPoly->coeff[i]); 631 (d->data.F64[i+2]); 632 if(myPoly->mask[i] == 0) { 633 d->data.F64[i] += myPoly->coeff[i]; 634 } 616 635 } 617 636 618 637 tmp = (x * d->data.F64[1]) - 619 (d->data.F64[2]) + 620 (0.5 * myPoly->coeff[0]); 638 (d->data.F64[2]); 639 if(myPoly->mask[0] == 0) { 640 tmp += (0.5 * myPoly->coeff[0]); 641 } 621 642 622 643 psFree(d); … … 1207 1228 1208 1229 psVector *tmp; 1209 psVector *myX;1210 psS32 i;1211 1230 1212 1231 tmp = psVectorAlloc(x->n, PS_TYPE_F32); 1213 for ( i=0;i<x->n;i++) {1232 for (psS32 i=0;i<x->n;i++) { 1214 1233 tmp->data.F32[i] = psPolynomial1DEval(myPoly, x->data.F32[i]); 1215 1234 } 1216 1235 1217 if (x->type.type != PS_TYPE_F32) {1218 psFree(myX);1219 }1220 1236 return(tmp); 1221 1237 } … … 1608 1624 1609 1625 psVector *tmp; 1610 psVector *myX;1611 psS32 i;1612 1626 1613 1627 tmp = psVectorAlloc(x->n, PS_TYPE_F64); 1614 for ( i=0;i<x->n;i++) {1628 for (psS32 i=0;i<x->n;i++) { 1615 1629 tmp->data.F64[i] = psDPolynomial1DEval(myPoly, 1616 1630 x->data.F64[i]); 1617 1631 } 1618 1632 1619 if (x->type.type != PS_TYPE_F64) {1620 psFree(myX);1621 }1622 1633 return(tmp); 1623 1634 }
Note:
See TracChangeset
for help on using the changeset viewer.
