Changeset 5294 for trunk/psLib/src/math/psPolynomial.c
- Timestamp:
- Oct 12, 2005, 11:02:20 AM (21 years ago)
- File:
-
- 1 edited
-
trunk/psLib/src/math/psPolynomial.c (modified) (18 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/src/math/psPolynomial.c
r5180 r5294 7 7 * polynomials. It also contains a Gaussian functions. 8 8 * 9 * @version $Revision: 1.1 29$ $Name: not supported by cvs2svn $10 * @date $Date: 2005- 09-29 20:06:58$9 * @version $Revision: 1.130 $ $Name: not supported by cvs2svn $ 10 * @date $Date: 2005-10-12 21:02:20 $ 11 11 * 12 12 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 95 95 unsigned int x = 0; 96 96 97 for (x = 0; x < (1 + poly-> COOL_2D_nX); x++) {97 for (x = 0; x < (1 + poly->nX); x++) { 98 98 psFree(poly->coeff[x]); 99 99 psFree(poly->coeffErr[x]); … … 110 110 unsigned int y = 0; 111 111 112 for (x = 0; x < (1 + poly-> COOL_3D_nX); x++) {113 for (y = 0; y < (1 + poly-> COOL_3D_nY); y++) {112 for (x = 0; x < (1 + poly->nX); x++) { 113 for (y = 0; y < (1 + poly->nY); y++) { 114 114 psFree(poly->coeff[x][y]); 115 115 psFree(poly->coeffErr[x][y]); … … 132 132 unsigned int z = 0; 133 133 134 for (x = 0; x < (1 + poly-> COOL_4D_nX); x++) {135 for (y = 0; y < (1 + poly-> COOL_4D_nY); y++) {136 for (z = 0; z < (1 + poly-> COOL_4D_nZ); z++) {134 for (x = 0; x < (1 + poly->nX); x++) { 135 for (y = 0; y < (1 + poly->nY); y++) { 136 for (z = 0; z < (1 + poly->nZ); z++) { 137 137 psFree(poly->coeff[x][y][z]); 138 138 psFree(poly->coeffErr[x][y][z]); … … 185 185 186 186 for (psS32 i = 2; i < maxChebyPoly; i++) { 187 for (psS32 j = 0; j < chebPolys[i - 1]-> COOL_1D_n; j++) {187 for (psS32 j = 0; j < chebPolys[i - 1]->nX; j++) { 188 188 chebPolys[i]->coeff[j + 1] = 2 * chebPolys[i - 1]->coeff[j]; 189 189 } 190 for (psS32 j = 0; j < chebPolys[i - 2]-> COOL_1D_n; j++) {190 for (psS32 j = 0; j < chebPolys[i - 2]->nX; j++) { 191 191 chebPolys[i]->coeff[j] -= chebPolys[i - 2]->coeff[j]; 192 192 } … … 213 213 "---- Calling ordPolynomial1DEval(%lf)\n", x); 214 214 psTrace(".psLib.dataManip.psPolynomial.ordPolynomial1DEval", 4, 215 "Polynomial order is %u\n", poly-> COOL_1D_n);216 for (loop_x = 0; loop_x < poly-> COOL_1D_n+1; loop_x++) {215 "Polynomial order is %u\n", poly->nX); 216 for (loop_x = 0; loop_x < poly->nX+1; loop_x++) { 217 217 psTrace(".psLib.dataManip.psPolynomial.ordPolynomial1DEval", 4, 218 218 "Polynomial coeff[%u] is %lf\n", loop_x, poly->coeff[loop_x]); 219 219 } 220 220 221 for (loop_x = 0; loop_x < poly-> COOL_1D_n+1; loop_x++) {221 for (loop_x = 0; loop_x < poly->nX+1; loop_x++) { 222 222 if (poly->mask[loop_x] == 0) { 223 223 // XXX: If you set the tracelevel to 10 here, and later set the tracelevel to … … 241 241 PS_ASSERT_DOUBLE_WITHIN_RANGE(x, -1.0, 1.0, 0.0); 242 242 // XXX: Create a macro for this in psConstants.h 243 if (poly-> COOL_1D_n< 1) {244 psError(PS_ERR_BAD_PARAMETER_VALUE, true, "Error: Chebyshev polynomial is order %u.", poly-> COOL_1D_n);243 if (poly->nX < 1) { 244 psError(PS_ERR_BAD_PARAMETER_VALUE, true, "Error: Chebyshev polynomial is order %u.", poly->nX); 245 245 return(NAN); 246 246 } 247 247 psVector *d; 248 248 // XXX: n should be nTerms here (for clarity). Or get rid of the variable. 249 unsigned int n = 1 + poly-> COOL_1D_n;249 unsigned int n = 1 + poly->nX; 250 250 unsigned int i; 251 251 psF64 tmp = 0.0; … … 305 305 psPolynomial1D **chebPolys = NULL; 306 306 307 chebPolys = createChebyshevPolys(1 + poly-> COOL_1D_n);307 chebPolys = createChebyshevPolys(1 + poly->nX); 308 308 309 309 tmp = 0.0; 310 for (i=0;i<(1 + poly-> COOL_1D_n);i++) {310 for (i=0;i<(1 + poly->nX);i++) { 311 311 tmp+= (poly->coeff[i] * psPolynomial1DEval(x, chebPolys[i])); 312 312 } … … 330 330 psF64 ySum = 1.0; 331 331 332 for (loop_x = 0; loop_x < (1 + poly-> COOL_2D_nX); loop_x++) {332 for (loop_x = 0; loop_x < (1 + poly->nX); loop_x++) { 333 333 ySum = xSum; 334 for (loop_y = 0; loop_y < (1 + poly-> COOL_2D_nY); loop_y++) {334 for (loop_y = 0; loop_y < (1 + poly->nY); loop_y++) { 335 335 if (poly->mask[loop_x][loop_y] == 0) { 336 336 polySum += ySum * poly->coeff[loop_x][loop_y]; … … 361 361 // Determine how many Chebyshev polynomials 362 362 // are needed, then create them. 363 maxChebyPoly = poly-> COOL_2D_nX;364 if (poly-> COOL_2D_nY > maxChebyPoly) {365 maxChebyPoly = poly-> COOL_2D_nY;363 maxChebyPoly = poly->nX; 364 if (poly->nY > maxChebyPoly) { 365 maxChebyPoly = poly->nY; 366 366 } 367 367 chebPolys = createChebyshevPolys(maxChebyPoly + 1); 368 368 369 for (loop_x = 0; loop_x < (1 + poly-> COOL_2D_nX); loop_x++) {370 for (loop_y = 0; loop_y < (1 + poly-> COOL_2D_nY); loop_y++) {369 for (loop_x = 0; loop_x < (1 + poly->nX); loop_x++) { 370 for (loop_y = 0; loop_y < (1 + poly->nY); loop_y++) { 371 371 if (poly->mask[loop_x][loop_y] == 0) { 372 372 polySum += poly->coeff[loop_x][loop_y] * … … 396 396 psF64 zSum = 1.0; 397 397 398 for (loop_x = 0; loop_x < (1 + poly-> COOL_3D_nX); loop_x++) {398 for (loop_x = 0; loop_x < (1 + poly->nX); loop_x++) { 399 399 ySum = xSum; 400 for (loop_y = 0; loop_y < (1 + poly-> COOL_3D_nY); loop_y++) {400 for (loop_y = 0; loop_y < (1 + poly->nY); loop_y++) { 401 401 zSum = ySum; 402 for (loop_z = 0; loop_z < (1 + poly-> COOL_3D_nZ); loop_z++) {402 for (loop_z = 0; loop_z < (1 + poly->nZ); loop_z++) { 403 403 if (poly->mask[loop_x][loop_y][loop_z] == 0) { 404 404 polySum += zSum * poly->coeff[loop_x][loop_y][loop_z]; … … 432 432 // Determine how many Chebyshev polynomials 433 433 // are needed, then create them. 434 maxChebyPoly = poly-> COOL_3D_nX;435 if (poly-> COOL_3D_nY > maxChebyPoly) {436 maxChebyPoly = poly-> COOL_3D_nY;437 } 438 if (poly-> COOL_3D_nZ > maxChebyPoly) {439 maxChebyPoly = poly-> COOL_3D_nZ;434 maxChebyPoly = poly->nX; 435 if (poly->nY > maxChebyPoly) { 436 maxChebyPoly = poly->nY; 437 } 438 if (poly->nZ > maxChebyPoly) { 439 maxChebyPoly = poly->nZ; 440 440 } 441 441 chebPolys = createChebyshevPolys(maxChebyPoly + 1); 442 442 443 for (loop_x = 0; loop_x < (1 + poly-> COOL_3D_nX); loop_x++) {444 for (loop_y = 0; loop_y < (1 + poly-> COOL_3D_nY); loop_y++) {445 for (loop_z = 0; loop_z < (1 + poly-> COOL_3D_nZ); loop_z++) {443 for (loop_x = 0; loop_x < (1 + poly->nX); loop_x++) { 444 for (loop_y = 0; loop_y < (1 + poly->nY); loop_y++) { 445 for (loop_z = 0; loop_z < (1 + poly->nZ); loop_z++) { 446 446 if (poly->mask[loop_x][loop_y][loop_z] == 0) { 447 447 polySum += poly->coeff[loop_x][loop_y][loop_z] * … … 477 477 psF64 tSum = 1.0; 478 478 479 for (loop_x = 0; loop_x < (1 + poly-> COOL_4D_nX); loop_x++) {479 for (loop_x = 0; loop_x < (1 + poly->nX); loop_x++) { 480 480 ySum = xSum; 481 for (loop_y = 0; loop_y < (1 + poly-> COOL_4D_nY); loop_y++) {481 for (loop_y = 0; loop_y < (1 + poly->nY); loop_y++) { 482 482 zSum = ySum; 483 for (loop_z = 0; loop_z < (1 + poly-> COOL_4D_nZ); loop_z++) {483 for (loop_z = 0; loop_z < (1 + poly->nZ); loop_z++) { 484 484 tSum = zSum; 485 for (loop_t = 0; loop_t < (1 + poly-> COOL_4D_nT); loop_t++) {485 for (loop_t = 0; loop_t < (1 + poly->nT); loop_t++) { 486 486 if (poly->mask[loop_x][loop_y][loop_z][loop_t] == 0) { 487 487 polySum += tSum * poly->coeff[loop_x][loop_y][loop_z][loop_t]; … … 520 520 // Determine how many Chebyshev polynomials 521 521 // are needed, then create them. 522 maxChebyPoly = poly-> COOL_4D_nX;523 if (poly-> COOL_4D_nY > maxChebyPoly) {524 maxChebyPoly = poly-> COOL_4D_nY;525 } 526 if (poly-> COOL_4D_nZ > maxChebyPoly) {527 maxChebyPoly = poly-> COOL_4D_nZ;528 } 529 if (poly-> COOL_4D_nT > maxChebyPoly) {530 maxChebyPoly = poly-> COOL_4D_nT;522 maxChebyPoly = poly->nX; 523 if (poly->nY > maxChebyPoly) { 524 maxChebyPoly = poly->nY; 525 } 526 if (poly->nZ > maxChebyPoly) { 527 maxChebyPoly = poly->nZ; 528 } 529 if (poly->nT > maxChebyPoly) { 530 maxChebyPoly = poly->nT; 531 531 } 532 532 // XXX: Add 1 since createChebyshevPolys() takes nTerms, not nOrder. 533 533 chebPolys = createChebyshevPolys(maxChebyPoly + 1); 534 534 535 for (loop_x = 0; loop_x < (1 + poly-> COOL_4D_nX); loop_x++) {536 for (loop_y = 0; loop_y < (1 + poly-> COOL_4D_nY); loop_y++) {537 for (loop_z = 0; loop_z < (1 + poly-> COOL_4D_nZ); loop_z++) {538 for (loop_t = 0; loop_t < (1 + poly-> COOL_4D_nT); loop_t++) {535 for (loop_x = 0; loop_x < (1 + poly->nX); loop_x++) { 536 for (loop_y = 0; loop_y < (1 + poly->nY); loop_y++) { 537 for (loop_z = 0; loop_z < (1 + poly->nZ); loop_z++) { 538 for (loop_t = 0; loop_t < (1 + poly->nT); loop_t++) { 539 539 if (poly->mask[loop_x][loop_y][loop_z][loop_t] == 0) { 540 540 polySum += poly->coeff[loop_x][loop_y][loop_z][loop_t] * … … 627 627 628 628 newPoly->type = type; 629 newPoly-> COOL_1D_n= n;629 newPoly->nX = n; 630 630 newPoly->coeff = psAlloc((n + 1) * sizeof(psF64)); 631 631 newPoly->coeffErr = psAlloc((n + 1) * sizeof(psF64)); … … 655 655 656 656 newPoly->type = type; 657 newPoly-> COOL_2D_nX = nX;658 newPoly-> COOL_2D_nY = nY;657 newPoly->nX = nX; 658 newPoly->nY = nY; 659 659 660 660 newPoly->coeff = psAlloc((1 + nX) * sizeof(psF64 *)); … … 695 695 696 696 newPoly->type = type; 697 newPoly-> COOL_3D_nX = nX;698 newPoly-> COOL_3D_nY = nY;699 newPoly-> COOL_3D_nZ = nZ;697 newPoly->nX = nX; 698 newPoly->nY = nY; 699 newPoly->nZ = nZ; 700 700 701 701 newPoly->coeff = psAlloc((nX + 1) * sizeof(psF64 **)); … … 746 746 747 747 newPoly->type = type; 748 newPoly-> COOL_4D_nX = nX;749 newPoly-> COOL_4D_nY = nY;750 newPoly-> COOL_4D_nZ = nZ;751 newPoly-> COOL_4D_nT = nT;748 newPoly->nX = nX; 749 newPoly->nY = nY; 750 newPoly->nZ = nZ; 751 newPoly->nT = nT; 752 752 753 753 newPoly->coeff = psAlloc((nX + 1) * sizeof(psF64 ***));
Note:
See TracChangeset
for help on using the changeset viewer.
