Changeset 5294 for trunk/psLib/src/math
- Timestamp:
- Oct 12, 2005, 11:02:20 AM (21 years ago)
- Location:
- trunk/psLib/src/math
- Files:
-
- 4 edited
-
psConstants.h (modified) (2 diffs)
-
psMinimize.c (modified) (10 diffs)
-
psPolynomial.c (modified) (18 diffs)
-
psPolynomial.h (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/src/math/psConstants.h
r5155 r5294 6 6 * @author GLG, MHPCC 7 7 * 8 * @version $Revision: 1.7 7$ $Name: not supported by cvs2svn $9 * @date $Date: 2005- 09-27 23:16:59$8 * @version $Revision: 1.78 $ $Name: not supported by cvs2svn $ 9 * @date $Date: 2005-10-12 21:02:20 $ 10 10 * 11 11 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 579 579 580 580 #define PS_POLY_PRINT_1D(NAME) \ 581 for (psS32 i = 0 ; i < NAME-> COOL_1D_n; i++) {\581 for (psS32 i = 0 ; i < NAME->nX ; i++) {\ 582 582 printf("%s->coeff[%d] is %f\n", #NAME, i, NAME->coeff[i]); \ 583 583 }\ -
trunk/psLib/src/math/psMinimize.c
r5175 r5294 10 10 * @author EAM, IfA 11 11 * 12 * @version $Revision: 1.14 1$ $Name: not supported by cvs2svn $13 * @date $Date: 2005- 09-29 02:13:54$12 * @version $Revision: 1.142 $ $Name: not supported by cvs2svn $ 13 * @date $Date: 2005-10-12 21:02:20 $ 14 14 * 15 15 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 1507 1507 // XXX: these ASSERTS are redundant. 1508 1508 PS_ASSERT_POLY_NON_NULL(myPoly, NULL); 1509 PS_ASSERT_INT_NONNEGATIVE(myPoly-> COOL_1D_n, NULL);1509 PS_ASSERT_INT_NONNEGATIVE(myPoly->nX, NULL); 1510 1510 PS_ASSERT_VECTOR_NON_NULL(y, NULL); 1511 1511 PS_ASSERT_VECTOR_TYPE(y, PS_TYPE_F64, NULL); … … 1571 1571 fac = 2.0/((psF32) n); 1572 1572 // XXX: is this loop bound correct? 1573 for (j=0;j<myPoly-> COOL_1D_n+1;j++) {1573 for (j=0;j<myPoly->nX+1;j++) { 1574 1574 sum = 0.0; 1575 1575 for (k=0;k<n;k++) { … … 1600 1600 // XXX: these ASSERTS are redundant. 1601 1601 PS_ASSERT_POLY_NON_NULL(myPoly, NULL); 1602 PS_ASSERT_INT_NONNEGATIVE(myPoly-> COOL_1D_n, NULL);1602 PS_ASSERT_INT_NONNEGATIVE(myPoly->nX, NULL); 1603 1603 PS_ASSERT_VECTOR_NON_NULL(f, NULL); 1604 1604 PS_ASSERT_VECTOR_TYPE(f, PS_TYPE_F64, NULL); … … 1643 1643 } 1644 1644 1645 nTerm = 1 + myPoly-> COOL_1D_n;1645 nTerm = 1 + myPoly->nX; 1646 1646 nOrder = nTerm - 1; 1647 1647 … … 1743 1743 1744 1744 PS_ASSERT_POLY_NON_NULL(poly, NULL); 1745 PS_ASSERT_INT_NONNEGATIVE(poly-> COOL_1D_n, NULL);1745 PS_ASSERT_INT_NONNEGATIVE(poly->nX, NULL); 1746 1746 PS_ASSERT_VECTOR_NON_NULL(f, NULL); 1747 1747 PS_ASSERT_VECTOR_NON_EMPTY(f, NULL); … … 1883 1883 // These ASSERTS are redundant. 1884 1884 PS_ASSERT_POLY_NON_NULL(myPoly, NULL); 1885 PS_ASSERT_INT_NONNEGATIVE(myPoly-> COOL_2D_nX, NULL);1886 PS_ASSERT_INT_NONNEGATIVE(myPoly-> COOL_2D_nY, NULL);1885 PS_ASSERT_INT_NONNEGATIVE(myPoly->nX, NULL); 1886 PS_ASSERT_INT_NONNEGATIVE(myPoly->nY, NULL); 1887 1887 1888 1888 PS_ASSERT_VECTOR_NON_NULL(f, NULL); … … 1911 1911 1912 1912 // XXX:Watch for changes to the psPolys: nTerm != nOrder. 1913 psS32 nXterm = 1 + myPoly-> COOL_2D_nX;1914 psS32 nYterm = 1 + myPoly-> COOL_2D_nY;1913 psS32 nXterm = 1 + myPoly->nX; 1914 psS32 nYterm = 1 + myPoly->nY; 1915 1915 nTerm = nXterm * nYterm; 1916 1916 … … 2310 2310 // These ASSERTS are redundant. 2311 2311 PS_ASSERT_POLY_NON_NULL(myPoly, NULL); 2312 PS_ASSERT_INT_NONNEGATIVE(myPoly-> COOL_3D_nX, NULL);2313 PS_ASSERT_INT_NONNEGATIVE(myPoly-> COOL_3D_nY, NULL);2314 PS_ASSERT_INT_NONNEGATIVE(myPoly-> COOL_3D_nZ, NULL);2312 PS_ASSERT_INT_NONNEGATIVE(myPoly->nX, NULL); 2313 PS_ASSERT_INT_NONNEGATIVE(myPoly->nY, NULL); 2314 PS_ASSERT_INT_NONNEGATIVE(myPoly->nZ, NULL); 2315 2315 2316 2316 PS_ASSERT_VECTOR_NON_NULL(f, NULL); … … 2573 2573 // These ASSERTS are redundant. 2574 2574 PS_ASSERT_POLY_NON_NULL(myPoly, NULL); 2575 PS_ASSERT_INT_NONNEGATIVE(myPoly-> COOL_4D_nX, NULL);2576 PS_ASSERT_INT_NONNEGATIVE(myPoly-> COOL_4D_nY, NULL);2577 PS_ASSERT_INT_NONNEGATIVE(myPoly-> COOL_4D_nZ, NULL);2578 PS_ASSERT_INT_NONNEGATIVE(myPoly-> COOL_4D_nT, NULL);2575 PS_ASSERT_INT_NONNEGATIVE(myPoly->nX, NULL); 2576 PS_ASSERT_INT_NONNEGATIVE(myPoly->nY, NULL); 2577 PS_ASSERT_INT_NONNEGATIVE(myPoly->nZ, NULL); 2578 PS_ASSERT_INT_NONNEGATIVE(myPoly->nT, NULL); 2579 2579 PS_ASSERT_VECTOR_NON_NULL(f, NULL); 2580 2580 PS_ASSERT_VECTOR_TYPE(f, PS_TYPE_F64, NULL); -
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 ***)); -
trunk/psLib/src/math/psPolynomial.h
r5090 r5294 11 11 * @author GLG, MHPCC 12 12 * 13 * @version $Revision: 1.5 7$ $Name: not supported by cvs2svn $14 * @date $Date: 2005- 09-22 02:47:16$13 * @version $Revision: 1.58 $ $Name: not supported by cvs2svn $ 14 * @date $Date: 2005-10-12 21:02:20 $ 15 15 * 16 16 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 76 76 { 77 77 psPolynomialType type; ///< Polynomial type 78 unsigned int COOL_1D_n; ///< Polynomial order78 unsigned int nX; ///< Polynomial order 79 79 psF64 *coeff; ///< Coefficients 80 80 psF64 *coeffErr; ///< Error in coefficients … … 90 90 { 91 91 psPolynomialType type; ///< Polynomial type 92 unsigned int COOL_2D_nX; ///< Polynomial order in x93 unsigned int COOL_2D_nY; ///< Polynomial order in y92 unsigned int nX; ///< Polynomial order in x 93 unsigned int nY; ///< Polynomial order in y 94 94 psF64 **coeff; ///< Coefficients 95 95 psF64 **coeffErr; ///< Error in coefficients … … 105 105 { 106 106 psPolynomialType type; ///< Polynomial type 107 unsigned int COOL_3D_nX; ///< Polynomial order in x108 unsigned int COOL_3D_nY; ///< Polynomial order in y109 unsigned int COOL_3D_nZ; ///< Polynomial order in z107 unsigned int nX; ///< Polynomial order in x 108 unsigned int nY; ///< Polynomial order in y 109 unsigned int nZ; ///< Polynomial order in z 110 110 psF64 ***coeff; ///< Coefficients 111 111 psF64 ***coeffErr; ///< Error in coefficients … … 121 121 { 122 122 psPolynomialType type; ///< Polynomial type 123 unsigned int COOL_4D_nX; ///< Polynomial order in x124 unsigned int COOL_4D_nY; ///< Polynomial order in y125 unsigned int COOL_4D_nZ; ///< Polynomial order in z126 unsigned int COOL_4D_nT; ///< Polynomial order in t123 unsigned int nX; ///< Polynomial order in x 124 unsigned int nY; ///< Polynomial order in y 125 unsigned int nZ; ///< Polynomial order in z 126 unsigned int nT; ///< Polynomial order in t 127 127 psF64 ****coeff; ///< Coefficients 128 128 psF64 ****coeffErr; ///< Error in coefficients
Note:
See TracChangeset
for help on using the changeset viewer.
