Changeset 6204 for trunk/psLib/src/math
- Timestamp:
- Jan 26, 2006, 11:10:22 AM (21 years ago)
- Location:
- trunk/psLib/src/math
- Files:
-
- 7 edited
-
psConstants.h (modified) (3 diffs)
-
psMinimizeLMM.c (modified) (7 diffs)
-
psMinimizePolyFit.c (modified) (3 diffs)
-
psPolynomial.c (modified) (7 diffs)
-
psPolynomial.h (modified) (3 diffs)
-
psSpline.c (modified) (2 diffs)
-
psStats.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/src/math/psConstants.h
r6193 r6204 6 6 * @author GLG, MHPCC 7 7 * 8 * @version $Revision: 1.8 3$ $Name: not supported by cvs2svn $9 * @date $Date: 2006-01-26 00:31:19$8 * @version $Revision: 1.84 $ $Name: not supported by cvs2svn $ 9 * @date $Date: 2006-01-26 21:10:22 $ 10 10 * 11 11 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 512 512 static psPolynomial1D *(NAME) = NULL; \ 513 513 if ((NAME) == NULL) { \ 514 (NAME) = psPolynomial1DAlloc( ORDER, TYPE); \514 (NAME) = psPolynomial1DAlloc(TYPE, ORDER); \ 515 515 p_psMemSetPersistent((NAME), true); \ 516 516 p_psMemSetPersistent((NAME)->coeff, true); \ … … 519 519 } \ 520 520 521 #define PS_POLY_2D_DECLARE_ALLOC_STATIC(NAME, ORDER, TYPE) \ 522 static psPolynomial2D *(NAME) = NULL; \ 523 if ((NAME) == NULL) { \ 524 (NAME) = psPolynomial2DAlloc(ORDER, TYPE); \ 525 p_psMemSetPersistent((NAME), true); \ 526 } \ 527 528 #define PS_POLY_3D_DECLARE_ALLOC_STATIC(NAME, ORDER, TYPE) \ 529 static psPolynomial3D *(NAME) = NULL; \ 530 if ((NAME) == NULL) { \ 531 (NAME) = psPolynomial3DAlloc(ORDER, TYPE); \ 532 p_psMemSetPersistent((NAME), true); \ 533 } \ 534 535 #define PS_POLY_4D_DECLARE_ALLOC_STATIC(NAME, ORDER, TYPE) \ 536 static psPolynomial4D *(NAME) = NULL; \ 537 if ((NAME) == NULL) { \ 538 (NAME) = psPolynomial4DAlloc(ORDER, TYPE); \ 539 p_psMemSetPersistent((NAME), true); \ 540 } \ 521 /* XXX: This is not correct 522 #define PS_POLY_2D_DECLARE_ALLOC_STATIC(NAME, ORDER, TYPE) \ 523 static psPolynomial2D *(NAME) = NULL; \ 524 if ((NAME) == NULL) { \ 525 (NAME) = psPolynomial2DAlloc(ORDER, TYPE); \ 526 p_psMemSetPersistent((NAME), true); \ 527 } \ 528 529 #define PS_POLY_3D_DECLARE_ALLOC_STATIC(NAME, ORDER, TYPE) \ 530 static psPolynomial3D *(NAME) = NULL; \ 531 if ((NAME) == NULL) { \ 532 (NAME) = psPolynomial3DAlloc(ORDER, TYPE); \ 533 p_psMemSetPersistent((NAME), true); \ 534 } \ 535 536 #define PS_POLY_4D_DECLARE_ALLOC_STATIC(NAME, ORDER, TYPE) \ 537 static psPolynomial4D *(NAME) = NULL; \ 538 if ((NAME) == NULL) { \ 539 (NAME) = psPolynomial4DAlloc(ORDER, TYPE); \ 540 p_psMemSetPersistent((NAME), true); \ 541 } \ 542 */ 541 543 542 544 #define PS_POLY_1D_D_DECLARE_ALLOC_STATIC(NAME, ORDER, TYPE) \ 543 545 static psPolynomial1D *(NAME) = NULL; \ 544 546 if ((NAME) == NULL) { \ 545 (NAME) = psPolynomial1DAlloc( ORDER, TYPE); \547 (NAME) = psPolynomial1DAlloc(TYPE, ORDER); \ 546 548 p_psMemSetPersistent((NAME), true); \ 547 549 } \ 548 550 549 #define PS_POLY_2D_D_DECLARE_ALLOC_STATIC(NAME, ORDER, TYPE) \ 550 static psPolynomial2D *(NAME) = NULL; \ 551 if ((NAME) == NULL) { \ 552 (NAME) = psPolynomial2DAlloc(ORDER, TYPE); \ 553 p_psMemSetPersistent((NAME), true); \ 554 } \ 555 556 #define PS_POLY_3D_D_DECLARE_ALLOC_STATIC(NAME, ORDER, TYPE) \ 557 static psPolynomial3D *(NAME) = NULL; \ 558 if ((NAME) == NULL) { \ 559 (NAME) = psPolynomial3DAlloc(ORDER, TYPE); \ 560 p_psMemSetPersistent((NAME), true); \ 561 } \ 562 563 #define PS_POLY_4D_D_DECLARE_ALLOC_STATIC(NAME, ORDER, TYPE) \ 564 static psPolynomial4D *(NAME) = NULL; \ 565 if ((NAME) == NULL) { \ 566 (NAME) = psPolynomial4DAlloc(ORDER, TYPE); \ 567 p_psMemSetPersistent((NAME), true); \ 568 } \ 551 /* XXX: This is not correct 552 #define PS_POLY_2D_D_DECLARE_ALLOC_STATIC(NAME, ORDER, TYPE) \ 553 static psPolynomial2D *(NAME) = NULL; \ 554 if ((NAME) == NULL) { \ 555 (NAME) = psPolynomial2DAlloc(ORDER, TYPE); \ 556 p_psMemSetPersistent((NAME), true); \ 557 } \ 558 559 #define PS_POLY_3D_D_DECLARE_ALLOC_STATIC(NAME, ORDER, TYPE) \ 560 static psPolynomial3D *(NAME) = NULL; \ 561 if ((NAME) == NULL) { \ 562 (NAME) = psPolynomial3DAlloc(ORDER, TYPE); \ 563 p_psMemSetPersistent((NAME), true); \ 564 } \ 565 566 #define PS_POLY_4D_D_DECLARE_ALLOC_STATIC(NAME, ORDER, TYPE) \ 567 static psPolynomial4D *(NAME) = NULL; \ 568 if ((NAME) == NULL) { \ 569 (NAME) = psPolynomial4DAlloc(ORDER, TYPE); \ 570 p_psMemSetPersistent((NAME), true); \ 571 } \ 572 */ 569 573 570 574 #define PS_POLY_PRINT_1D(NAME) \ -
trunk/psLib/src/math/psMinimizeLMM.c
r6101 r6204 10 10 * @author EAM, IfA 11 11 * 12 * @version $Revision: 1. 1$ $Name: not supported by cvs2svn $13 * @date $Date: 2006-01-2 1 02:43:31$12 * @version $Revision: 1.2 $ $Name: not supported by cvs2svn $ 13 * @date $Date: 2006-01-26 21:10:22 $ 14 14 * 15 15 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 204 204 psMinimizeLMChi2Func func) 205 205 { 206 // XXX: Check vector sizes. 206 207 PS_ASSERT_IMAGE_NON_NULL(alpha, NAN); 207 208 PS_ASSERT_VECTOR_NON_NULL(beta, NAN); … … 218 219 219 220 // zero alpha and beta for summing below 220 for ( intj = 0; j < params->n; j++) {221 for ( intk = 0; k < params->n; k++) {221 for (psS32 j = 0; j < params->n; j++) { 222 for (psS32 k = 0; k < params->n; k++) { 222 223 alpha->data.F64[j][k] = 0; 223 224 } … … 227 228 228 229 // calculate chisq, alpha, beta 229 for ( inti = 0; i < y->n; i++) {230 for (psS32 i = 0; i < y->n; i++) { 230 231 ymodel = func(deriv, params, (psVector *) x->data[i]); 231 232 … … 233 234 chisq += PS_SQR(delta) * dy->data.F32[i]; 234 235 235 for ( intj = 0; j < params->n; j++) {236 for (psS32 j = 0; j < params->n; j++) { 236 237 if ((paramMask != NULL) && (paramMask->data.U8[j])) 237 238 continue; 238 239 weight = deriv->data.F32[j] * dy->data.F32[i]; 239 for ( intk = 0; k <= j; k++) {240 for (psS32 k = 0; k <= j; k++) { 240 241 if ((paramMask != NULL) && (paramMask->data.U8[k])) 241 242 continue; … … 247 248 248 249 // calculate lower-left half of alpha 249 for ( intj = 1; j < params->n; j++) {250 for ( intk = 0; k < j; k++) {250 for (psS32 j = 1; j < params->n; j++) { 251 for (psS32 k = 0; k < j; k++) { 251 252 alpha->data.F64[k][j] = alpha->data.F64[j][k]; 252 253 } … … 255 256 // fill in pivots if we apply a mask 256 257 if (paramMask != NULL) { 257 for ( intj = 0; j < params->n; j++) {258 for (psS32 j = 0; j < params->n; j++) { 258 259 if (paramMask->data.U8[j]) { 259 260 alpha->data.F64[j][j] = 1; -
trunk/psLib/src/math/psMinimizePolyFit.c
r6193 r6204 10 10 * @author EAM, IfA 11 11 * 12 * @version $Revision: 1. 4$ $Name: not supported by cvs2svn $13 * @date $Date: 2006-01-26 00:31:19$12 * @version $Revision: 1.5 $ $Name: not supported by cvs2svn $ 13 * @date $Date: 2006-01-26 21:10:22 $ 14 14 * 15 15 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 350 350 // We first fit an ordinary polynomial to the data. 351 351 // 352 psPolynomial1D *ordPoly = psPolynomial1DAlloc( polyOrder, PS_POLYNOMIAL_ORD);352 psPolynomial1D *ordPoly = psPolynomial1DAlloc(PS_POLYNOMIAL_ORD, polyOrder); 353 353 psPolynomial1D *rc = VectorFitPolynomial1DOrd(ordPoly, mask, maskValue, y, yErr, x); 354 354 if (rc == NULL) { … … 965 965 } 966 966 } else { 967 psError(PS_ERR_UNKNOWN, true, "Incorrect polynomial type . Returning NULL.\n");967 psError(PS_ERR_UNKNOWN, true, "Incorrect polynomial type (%d). Returning NULL.\n", poly->type); 968 968 poly = NULL; 969 969 } -
trunk/psLib/src/math/psPolynomial.c
r6199 r6204 7 7 * polynomials. It also contains a Gaussian functions. 8 8 * 9 * @version $Revision: 1.1 39$ $Name: not supported by cvs2svn $10 * @date $Date: 2006-01-26 02:44:56$9 * @version $Revision: 1.140 $ $Name: not supported by cvs2svn $ 10 * @date $Date: 2006-01-26 21:10:22 $ 11 11 * 12 12 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 168 168 psPolynomial1D **chebPolys = (psPolynomial1D **) psAlloc(numPolys * sizeof(psPolynomial1D *)); 169 169 for (psS32 i = 0; i < numPolys; i++) { 170 chebPolys[i] = psPolynomial1DAlloc( i, PS_POLYNOMIAL_ORD);170 chebPolys[i] = psPolynomial1DAlloc(PS_POLYNOMIAL_ORD, i); 171 171 chebPolys[i]->coeff[i] = 1; 172 172 } … … 175 175 psPolynomial1D **chebPolys = (psPolynomial1D **) psAlloc(numPolys * sizeof(psPolynomial1D *)); 176 176 for (psS32 i = 0; i < numPolys; i++) { 177 chebPolys[i] = psPolynomial1DAlloc( i, PS_POLYNOMIAL_ORD);177 chebPolys[i] = psPolynomial1DAlloc(PS_POLYNOMIAL_ORD, i); 178 178 } 179 179 … … 615 615 *****************************************************************************/ 616 616 psPolynomial1D* psPolynomial1DAlloc( 617 unsigned int n,618 psPolynomialType type)617 psPolynomialType type, 618 unsigned int nX) 619 619 { 620 620 //PS_ASSERT_INT_NONNEGATIVE(n, NULL); 621 psU32 nOrder = n ;621 psU32 nOrder = nX; 622 622 psPolynomial1D *newPoly = (psPolynomial1D* ) psAlloc(sizeof(psPolynomial1D)); 623 623 psMemSetDeallocator(newPoly, (psFreeFunc) polynomial1DFree); … … 639 639 } 640 640 641 psPolynomial2D* psPolynomial2DAlloc( unsigned int nX, 642 unsigned int nY, 643 psPolynomialType type) 641 psPolynomial2D* psPolynomial2DAlloc( 642 psPolynomialType type, 643 unsigned int nX, 644 unsigned int nY) 644 645 { 645 646 //PS_ASSERT_INT_NONNEGATIVE(nX, NULL); … … 676 677 } 677 678 678 psPolynomial3D* psPolynomial3DAlloc( unsigned int nX, 679 unsigned int nY, 680 unsigned int nZ, 681 psPolynomialType type) 679 psPolynomial3D* psPolynomial3DAlloc( 680 psPolynomialType type, 681 unsigned int nX, 682 unsigned int nY, 683 unsigned int nZ) 682 684 { 683 685 //PS_ASSERT_INT_NONNEGATIVE(nX, NULL); … … 724 726 } 725 727 726 psPolynomial4D* psPolynomial4DAlloc( unsigned int nX, 727 unsigned int nY, 728 unsigned int nZ, 729 unsigned int nT, 730 psPolynomialType type) 728 psPolynomial4D* psPolynomial4DAlloc( 729 psPolynomialType type, 730 unsigned int nX, 731 unsigned int nY, 732 unsigned int nZ, 733 unsigned int nT) 731 734 { 732 735 //PS_ASSERT_INT_NONNEGATIVE(nX, NULL); -
trunk/psLib/src/math/psPolynomial.h
r6186 r6204 11 11 * @author GLG, MHPCC 12 12 * 13 * @version $Revision: 1.6 0$ $Name: not supported by cvs2svn $14 * @date $Date: 2006-01-2 3 22:25:31$13 * @version $Revision: 1.61 $ $Name: not supported by cvs2svn $ 14 * @date $Date: 2006-01-26 21:10:22 $ 15 15 * 16 16 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 127 127 */ 128 128 psPolynomial1D* psPolynomial1DAlloc( 129 unsigned int n, ///< Number of terms130 psPolynomialType type ///< Polynomial Type129 psPolynomialType type, ///< Polynomial Type 130 unsigned int nX ///< Number of terms 131 131 ); 132 132 … … 136 136 */ 137 137 psPolynomial2D* psPolynomial2DAlloc( 138 psPolynomialType type, ///< Polynomial Type 139 unsigned int nX, ///< Number of terms in x 140 unsigned int nY ///< Number of terms in y 141 ); 142 143 /** Allocates a 3-D polynomial structure 144 * 145 * @return psPolynomial3D* new 3-D polynomial struct 146 */ 147 psPolynomial3D* psPolynomial3DAlloc( 148 psPolynomialType type, ///< Polynomial Type 138 149 unsigned int nX, ///< Number of terms in x 139 150 unsigned int nY, ///< Number of terms in y 140 psPolynomialType type ///< Polynomial Type 141 ); 142 143 /** Allocates a 3-D polynomial structure 144 * 145 * @return psPolynomial3D* new 3-D polynomial struct 146 */ 147 psPolynomial3D* psPolynomial3DAlloc( 151 unsigned int nZ ///< Number of terms in z 152 ); 153 154 /** Allocates a 4-D polynomial structure 155 * 156 * @return psPolynomial4D* new 4-D polynomial struct 157 */ 158 psPolynomial4D* psPolynomial4DAlloc( 159 psPolynomialType type, ///< Polynomial Type 148 160 unsigned int nX, ///< Number of terms in x 149 161 unsigned int nY, ///< Number of terms in y 150 162 unsigned int nZ, ///< Number of terms in z 151 psPolynomialType type ///< Polynomial Type 152 ); 153 154 /** Allocates a 4-D polynomial structure 155 * 156 * @return psPolynomial4D* new 4-D polynomial struct 157 */ 158 psPolynomial4D* psPolynomial4DAlloc( 159 unsigned int nX, ///< Number of terms in x 160 unsigned int nY, ///< Number of terms in y 161 unsigned int nZ, ///< Number of terms in z 162 unsigned int nT, ///< Number of terms in t 163 psPolynomialType type ///< Polynomial Type 163 unsigned int nT ///< Number of terms in t 164 164 ); 165 165 -
trunk/psLib/src/math/psSpline.c
r6186 r6204 7 7 * splines. 8 8 * 9 * @version $Revision: 1.13 3$ $Name: not supported by cvs2svn $10 * @date $Date: 2006-01-2 3 22:25:31$9 * @version $Revision: 1.134 $ $Name: not supported by cvs2svn $ 10 * @date $Date: 2006-01-26 21:10:22 $ 11 11 * 12 12 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 507 507 spline->spline = (psPolynomial1D **) psAlloc(numSplines * sizeof(psPolynomial1D *)); 508 508 for (psS32 i=0;i<numSplines;i++) { 509 spline->spline[i] = psPolynomial1DAlloc( 3, PS_POLYNOMIAL_ORD);509 spline->spline[i] = psPolynomial1DAlloc(PS_POLYNOMIAL_ORD, 3); 510 510 } 511 511 -
trunk/psLib/src/math/psStats.c
r6193 r6204 14 14 * stats->binsize 15 15 * 16 * @version $Revision: 1.16 1$ $Name: not supported by cvs2svn $17 * @date $Date: 2006-01-26 00:31:19$16 * @version $Revision: 1.162 $ $Name: not supported by cvs2svn $ 17 * @date $Date: 2006-01-26 21:10:22 $ 18 18 * 19 19 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii … … 1457 1457 psVector *y = psVectorAlloc(3, PS_TYPE_F64); 1458 1458 psVector *yErr = psVectorAlloc(3, PS_TYPE_F64); 1459 psPolynomial1D *myPoly = psPolynomial1DAlloc( 2, PS_POLYNOMIAL_ORD);1459 psPolynomial1D *myPoly = psPolynomial1DAlloc(PS_POLYNOMIAL_ORD, 2); 1460 1460 1461 1461 psF32 tmpFloat = 0.0f;
Note:
See TracChangeset
for help on using the changeset viewer.
