Changeset 4029 for trunk/psLib/src/math/psMinimize.c
- Timestamp:
- May 25, 2005, 10:26:55 AM (21 years ago)
- File:
-
- 1 edited
-
trunk/psLib/src/math/psMinimize.c (modified) (22 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/src/math/psMinimize.c
r3990 r4029 9 9 * @author GLG, MHPCC 10 10 * 11 * @version $Revision: 1.1 19$ $Name: not supported by cvs2svn $12 * @date $Date: 2005-05- 19 23:57:37$11 * @version $Revision: 1.120 $ $Name: not supported by cvs2svn $ 12 * @date $Date: 2005-05-25 20:26:55 $ 13 13 * 14 14 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 174 174 psF32 X) 175 175 { 176 PS_ PTR_CHECK_NULL(spline, NAN);177 PS_ INT_CHECK_NON_NEGATIVE(spline->n, NAN);178 PS_ VECTOR_CHECK_NULL(spline->domains, NAN);179 PS_ PTR_CHECK_NULL(spline->p_psDeriv2, NAN);180 PS_ VECTOR_CHECK_NULL(x, NAN);181 PS_ VECTOR_CHECK_TYPE(x, PS_TYPE_F32, NAN);182 PS_ VECTOR_CHECK_NULL(y, NAN);183 PS_ VECTOR_CHECK_TYPE(y, PS_TYPE_F32, NAN);184 PS_ VECTOR_CHECK_TYPE(spline->knots, PS_TYPE_F32, NULL);176 PS_ASSERT_PTR_NON_NULL(spline, NAN); 177 PS_ASSERT_INT_NONNEGATIVE(spline->n, NAN); 178 PS_ASSERT_VECTOR_NON_NULL(spline->domains, NAN); 179 PS_ASSERT_PTR_NON_NULL(spline->p_psDeriv2, NAN); 180 PS_ASSERT_VECTOR_NON_NULL(x, NAN); 181 PS_ASSERT_VECTOR_TYPE(x, PS_TYPE_F32, NAN); 182 PS_ASSERT_VECTOR_NON_NULL(y, NAN); 183 PS_ASSERT_VECTOR_TYPE(y, PS_TYPE_F32, NAN); 184 PS_ASSERT_VECTOR_TYPE(spline->knots, PS_TYPE_F32, NULL); 185 185 186 186 psS32 n; … … 258 258 const psVector* yErr) ///< Errors in coordinates, or NULL 259 259 { 260 PS_ VECTOR_CHECK_NULL(y, NULL);261 PS_ VECTOR_CHECK_TYPE_F32_OR_F64(y, NULL);260 PS_ASSERT_VECTOR_NON_NULL(y, NULL); 261 PS_ASSERT_VECTOR_TYPE_F32_OR_F64(y, NULL); 262 262 if (mySpline != NULL) { 263 PS_ VECTOR_CHECK_TYPE(mySpline->knots, PS_TYPE_F32, NULL);263 PS_ASSERT_VECTOR_TYPE(mySpline->knots, PS_TYPE_F32, NULL); 264 264 } 265 265 … … 285 285 yErr32 = yErr32Static; 286 286 } else { 287 PS_ VECTOR_CHECK_TYPE_F32_OR_F64(yErr, NULL);287 PS_ASSERT_VECTOR_TYPE_F32_OR_F64(yErr, NULL); 288 288 PS_VECTOR_CONVERT_F64_TO_F32_STATIC(yErr, yErr32, yErr32Static); 289 289 } … … 294 294 x32 = x32Static; 295 295 } else { 296 PS_ VECTOR_CHECK_TYPE_F32_OR_F64(x, NULL);296 PS_ASSERT_VECTOR_TYPE_F32_OR_F64(x, NULL); 297 297 PS_VECTOR_CONVERT_F64_TO_F32_STATIC(x, x32, x32Static); 298 298 } 299 PS_ VECTOR_CHECK_SIZE_EQUAL(x32, y32, NULL);300 PS_ VECTOR_CHECK_SIZE_EQUAL(yErr32, y32, NULL);299 PS_ASSERT_VECTORS_SIZE_EQUAL(x32, y32, NULL); 300 PS_ASSERT_VECTORS_SIZE_EQUAL(yErr32, y32, NULL); 301 301 302 302 /* … … 310 310 mySpline = psSpline1DAllocGeneric(x32, 3); 311 311 } 312 PS_ PTR_CHECK_NULL(mySpline, NULL);313 PS_ INT_CHECK_NON_NEGATIVE(mySpline->n, NULL);312 PS_ASSERT_PTR_NON_NULL(mySpline, NULL); 313 PS_ASSERT_INT_NONNEGATIVE(mySpline->n, NULL); 314 314 315 315 if (y32->n != (1 + mySpline->n)) { … … 440 440 const psArray *coords) 441 441 { 442 PS_ PTR_CHECK_NULL(coords, NULL);443 PS_ PTR_CHECK_NULL(params, NULL);442 PS_ASSERT_PTR_NON_NULL(coords, NULL); 443 PS_ASSERT_PTR_NON_NULL(params, NULL); 444 444 445 445 psTrace(".psLib.dataManip.psMinimize", 4, … … 457 457 deriv = psImageAlloc(params->n, coords->n, PS_TYPE_F32); 458 458 } else { 459 PS_ IMAGE_CHECK_SIZE(deriv, params->n, coords->n, NULL);460 PS_ IMAGE_CHECK_TYPE(deriv, PS_TYPE_F32, NULL);459 PS_ASSERT_IMAGE_SIZE(deriv, params->n, coords->n, NULL); 460 PS_ASSERT_IMAGE_TYPE(deriv, PS_TYPE_F32, NULL); 461 461 } 462 462 … … 513 513 const psArray *coords) 514 514 { 515 PS_ PTR_CHECK_NULL(coords, NULL);516 PS_ PTR_CHECK_NULL(params, NULL);515 PS_ASSERT_PTR_NON_NULL(coords, NULL); 516 PS_ASSERT_PTR_NON_NULL(params, NULL); 517 517 518 518 psF64 normalization = params->data.F32[0]; … … 527 527 deriv = psImageAlloc(params->n, coords->n, PS_TYPE_F32); 528 528 } else { 529 PS_ IMAGE_CHECK_SIZE(deriv, 6, coords->n, NULL);530 PS_ IMAGE_CHECK_TYPE(deriv, PS_TYPE_F32, NULL);529 PS_ASSERT_IMAGE_SIZE(deriv, 6, coords->n, NULL); 530 PS_ASSERT_IMAGE_TYPE(deriv, PS_TYPE_F32, NULL); 531 531 } 532 532 … … 572 572 psMinimizeLMChi2Func func) 573 573 { 574 PS_ PTR_CHECK_NULL(min, NULL);575 PS_ VECTOR_CHECK_NULL(params, NULL);576 PS_ VECTOR_CHECK_EMPTY(params, NULL);577 PS_ PTR_CHECK_NULL(x, NULL);578 PS_ VECTOR_CHECK_NULL(y, NULL);579 PS_ VECTOR_CHECK_EMPTY(y, NULL);580 PS_ VECTOR_CHECK_SIZE_EQUAL(x, y, NULL);581 PS_ PTR_CHECK_NULL(func, NULL);574 PS_ASSERT_PTR_NON_NULL(min, NULL); 575 PS_ASSERT_VECTOR_NON_NULL(params, NULL); 576 PS_ASSERT_VECTOR_NON_EMPTY(params, NULL); 577 PS_ASSERT_PTR_NON_NULL(x, NULL); 578 PS_ASSERT_VECTOR_NON_NULL(y, NULL); 579 PS_ASSERT_VECTOR_NON_EMPTY(y, NULL); 580 PS_ASSERT_VECTORS_SIZE_EQUAL(x, y, NULL); 581 PS_ASSERT_PTR_NON_NULL(func, NULL); 582 582 583 583 // this function has test and current values for several things … … 923 923 psMinimizeLMChi2Func func) 924 924 { 925 PS_ PTR_CHECK_NULL(min, NULL);926 PS_ VECTOR_CHECK_NULL(params, NULL);927 PS_ VECTOR_CHECK_EMPTY(params, NULL);928 PS_ PTR_CHECK_NULL(x, NULL);929 PS_ VECTOR_CHECK_NULL(y, NULL);930 PS_ VECTOR_CHECK_EMPTY(y, NULL);931 PS_ VECTOR_CHECK_SIZE_EQUAL(x, y, NULL);932 PS_ PTR_CHECK_NULL(func, NULL);925 PS_ASSERT_PTR_NON_NULL(min, NULL); 926 PS_ASSERT_VECTOR_NON_NULL(params, NULL); 927 PS_ASSERT_VECTOR_NON_EMPTY(params, NULL); 928 PS_ASSERT_PTR_NON_NULL(x, NULL); 929 PS_ASSERT_VECTOR_NON_NULL(y, NULL); 930 PS_ASSERT_VECTOR_NON_EMPTY(y, NULL); 931 PS_ASSERT_VECTORS_SIZE_EQUAL(x, y, NULL); 932 PS_ASSERT_PTR_NON_NULL(func, NULL); 933 933 934 934 if (paramMask != NULL) { 935 PS_ VECTOR_CHECK_SIZE_EQUAL(params, paramMask, NULL);935 PS_ASSERT_VECTORS_SIZE_EQUAL(params, paramMask, NULL); 936 936 } 937 937 if (yErr != NULL) { 938 PS_ VECTOR_CHECK_SIZE_EQUAL(y, yErr, NULL);938 PS_ASSERT_VECTORS_SIZE_EQUAL(y, yErr, NULL); 939 939 } 940 940 if (covar != NULL) { 941 PS_ IMAGE_CHECK_SIZE(covar, params->n, params->n, NULL);941 PS_ASSERT_IMAGE_SIZE(covar, params->n, params->n, NULL); 942 942 } 943 943 … … 1363 1363 const psVector* yErr) 1364 1364 { 1365 PS_ POLY_CHECK_NULL(myPoly, NULL);1366 PS_ INT_CHECK_NON_NEGATIVE(myPoly->n, NULL);1367 PS_ VECTOR_CHECK_NULL(y, NULL);1368 PS_ VECTOR_CHECK_EMPTY(y, NULL);1369 PS_ VECTOR_CHECK_TYPE_F32_OR_F64(y, NULL);1365 PS_ASSERT_POLY_NON_NULL(myPoly, NULL); 1366 PS_ASSERT_INT_NONNEGATIVE(myPoly->n, NULL); 1367 PS_ASSERT_VECTOR_NON_NULL(y, NULL); 1368 PS_ASSERT_VECTOR_NON_EMPTY(y, NULL); 1369 PS_ASSERT_VECTOR_TYPE_F32_OR_F64(y, NULL); 1370 1370 1371 1371 psS32 i; … … 1383 1383 yErr64 = yErr64Static; 1384 1384 } else { 1385 PS_ VECTOR_CHECK_TYPE_F32_OR_F64(yErr, NULL);1385 PS_ASSERT_VECTOR_TYPE_F32_OR_F64(yErr, NULL); 1386 1386 PS_VECTOR_CONVERT_F32_TO_F64_STATIC(yErr, yErr64, yErr64Static); 1387 1387 } … … 1395 1395 x64 = x64Static; 1396 1396 } else { 1397 PS_ VECTOR_CHECK_TYPE_F32_OR_F64(x, NULL);1397 PS_ASSERT_VECTOR_TYPE_F32_OR_F64(x, NULL); 1398 1398 PS_VECTOR_CONVERT_F32_TO_F64_STATIC(x, x64, x64Static); 1399 1399 if (myPoly->type == PS_POLYNOMIAL_CHEB) { … … 1401 1401 } 1402 1402 } 1403 PS_ VECTOR_CHECK_SIZE_EQUAL(x64, y64, NULL);1404 PS_ VECTOR_CHECK_SIZE_EQUAL(yErr64, y64, NULL);1403 PS_ASSERT_VECTORS_SIZE_EQUAL(x64, y64, NULL); 1404 PS_ASSERT_VECTORS_SIZE_EQUAL(yErr64, y64, NULL); 1405 1405 1406 1406 // Call the appropriate vector fitting routine. … … 1430 1430 psF32 tol) 1431 1431 { 1432 PS_ INT_CHECK_NON_NEGATIVE(maxIter, NULL);1432 PS_ASSERT_INT_NONNEGATIVE(maxIter, NULL); 1433 1433 1434 1434 psMinimization *min = psAlloc(sizeof(psMinimization)); … … 1765 1765 psMinimizePowellFunc func) 1766 1766 { 1767 PS_ PTR_CHECK_NULL(min, NAN);1768 PS_ VECTOR_CHECK_NULL(params, NAN);1769 PS_ VECTOR_CHECK_EMPTY(params, NAN);1770 PS_ VECTOR_CHECK_TYPE(params, PS_TYPE_F32, NAN);1771 PS_ VECTOR_CHECK_NULL(line, NAN);1772 PS_ VECTOR_CHECK_EMPTY(line, NAN);1773 PS_ VECTOR_CHECK_TYPE(line, PS_TYPE_F32, NAN);1774 PS_ VECTOR_CHECK_NULL(paramMask, NAN);1775 PS_ VECTOR_CHECK_EMPTY(paramMask, NAN);1776 PS_ VECTOR_CHECK_TYPE(paramMask, PS_TYPE_U8, NAN);1777 PS_ PTR_CHECK_NULL(coords, NAN);1778 PS_ PTR_CHECK_NULL(func, NAN);1767 PS_ASSERT_PTR_NON_NULL(min, NAN); 1768 PS_ASSERT_VECTOR_NON_NULL(params, NAN); 1769 PS_ASSERT_VECTOR_NON_EMPTY(params, NAN); 1770 PS_ASSERT_VECTOR_TYPE(params, PS_TYPE_F32, NAN); 1771 PS_ASSERT_VECTOR_NON_NULL(line, NAN); 1772 PS_ASSERT_VECTOR_NON_EMPTY(line, NAN); 1773 PS_ASSERT_VECTOR_TYPE(line, PS_TYPE_F32, NAN); 1774 PS_ASSERT_VECTOR_NON_NULL(paramMask, NAN); 1775 PS_ASSERT_VECTOR_NON_EMPTY(paramMask, NAN); 1776 PS_ASSERT_VECTOR_TYPE(paramMask, PS_TYPE_U8, NAN); 1777 PS_ASSERT_PTR_NON_NULL(coords, NAN); 1778 PS_ASSERT_PTR_NON_NULL(func, NAN); 1779 1779 psVector *bracket; 1780 1780 psF32 a = 0.0; … … 1919 1919 psMinimizePowellFunc func) 1920 1920 { 1921 PS_ PTR_CHECK_NULL(min, NULL);1922 PS_ VECTOR_CHECK_NULL(params, NULL);1923 PS_ VECTOR_CHECK_EMPTY(params, NULL);1924 PS_ VECTOR_CHECK_TYPE(params, PS_TYPE_F32, NULL);1925 PS_ PTR_CHECK_NULL(coords, NULL);1926 PS_ PTR_CHECK_NULL(func, NULL);1921 PS_ASSERT_PTR_NON_NULL(min, NULL); 1922 PS_ASSERT_VECTOR_NON_NULL(params, NULL); 1923 PS_ASSERT_VECTOR_NON_EMPTY(params, NULL); 1924 PS_ASSERT_VECTOR_TYPE(params, PS_TYPE_F32, NULL); 1925 PS_ASSERT_PTR_NON_NULL(coords, NULL); 1926 PS_ASSERT_PTR_NON_NULL(func, NULL); 1927 1927 psS32 numDims = params->n; 1928 1928 PS_VECTOR_GEN_STATIC_RECYCLED(pQP, numDims, PS_TYPE_F32); … … 1957 1957 myParamMask = (psVector *) paramMask; 1958 1958 } 1959 PS_ VECTOR_CHECK_SIZE_EQUAL(params, myParamMask, NULL);1959 PS_ASSERT_VECTORS_SIZE_EQUAL(params, myParamMask, NULL); 1960 1960 1961 1961 // 1: Set v[i] to be the unit vectors for each dimension in params … … 2119 2119 const psArray *coords) 2120 2120 { 2121 PS_ PTR_CHECK_NULL(coords, NULL);2122 PS_ PTR_CHECK_NULL(params, NULL);2121 PS_ASSERT_PTR_NON_NULL(coords, NULL); 2122 PS_ASSERT_PTR_NON_NULL(params, NULL); 2123 2123 2124 2124 psF32 x; … … 2150 2150 psTrace(".psLib.dataManip.myPowellChi2Func", 4, 2151 2151 "---- myPowellChi2Func() begin ----\n"); 2152 PS_ VECTOR_CHECK_NULL(params, NAN);2153 PS_ VECTOR_CHECK_EMPTY(params, NAN);2154 PS_ VECTOR_CHECK_NULL(myValue, NAN);2155 PS_ VECTOR_CHECK_EMPTY(myValue, NAN);2156 PS_ PTR_CHECK_NULL(coords, NAN);2152 PS_ASSERT_VECTOR_NON_NULL(params, NAN); 2153 PS_ASSERT_VECTOR_NON_EMPTY(params, NAN); 2154 PS_ASSERT_VECTOR_NON_NULL(myValue, NAN); 2155 PS_ASSERT_VECTOR_NON_EMPTY(myValue, NAN); 2156 PS_ASSERT_PTR_NON_NULL(coords, NAN); 2157 2157 2158 2158 psF32 chi2 = 0.0;
Note:
See TracChangeset
for help on using the changeset viewer.
