Changeset 21183 for trunk/psLib/src/math/psMinimizePolyFit.c
- Timestamp:
- Jan 26, 2009, 8:40:07 PM (17 years ago)
- File:
-
- 1 edited
-
trunk/psLib/src/math/psMinimizePolyFit.c (modified) (48 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/src/math/psMinimizePolyFit.c
r19304 r21183 10 10 * @author EAM, IfA 11 11 * 12 * @version $Revision: 1.3 3$ $Name: not supported by cvs2svn $13 * @date $Date: 200 8-09-02 19:03:38 $12 * @version $Revision: 1.34 $ $Name: not supported by cvs2svn $ 13 * @date $Date: 2009-01-27 06:39:38 $ 14 14 * 15 15 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 307 307 psPolynomial1D* myPoly, 308 308 const psVector *mask, 309 ps MaskType maskValue,309 psVectorMaskType maskValue, 310 310 const psVector* y, 311 311 const psVector* yErr, … … 326 326 if (mask != NULL) { 327 327 PS_ASSERT_VECTORS_SIZE_EQUAL(y, mask, NULL); 328 PS_ASSERT_VECTOR_TYPE(mask, PS_TYPE_ U8, NULL);328 PS_ASSERT_VECTOR_TYPE(mask, PS_TYPE_VECTOR_MASK, NULL); 329 329 } 330 330 … … 354 354 psF64 **matrix = A->data.F64; // Least-squares matrix 355 355 psF64 *vector = B->data.F64; // Least-squares vector 356 ps U8*dataMask = NULL; // Mask for data356 psVectorMaskType *dataMask = NULL; // Mask for data 357 357 if (mask) { 358 dataMask = mask->data. U8;359 } 360 ps U8*coeffMask = myPoly->coeffMask; // Mask for polynomial terms358 dataMask = mask->data.PS_TYPE_VECTOR_MASK_DATA; 359 } 360 psMaskType *coeffMask = myPoly->coeffMask; // Mask for polynomial terms 361 361 psF64 *yData = y->data.F64; // Coordinate data 362 362 psF64 *yErrData = NULL; // Errors in the coordinate … … 473 473 psPolynomial1D* myPoly, 474 474 const psVector *mask, 475 ps MaskType maskValue,475 psVectorMaskType maskValue, 476 476 const psVector *f, 477 477 const psVector *fErr, … … 484 484 if (mask) { 485 485 PS_ASSERT_VECTORS_SIZE_EQUAL(f, mask, false); 486 PS_ASSERT_VECTOR_TYPE(mask, PS_TYPE_ U8, false);486 PS_ASSERT_VECTOR_TYPE(mask, PS_TYPE_VECTOR_MASK, false); 487 487 } 488 488 if (x) { … … 529 529 530 530 // Dereference some pointers for speed in the loop 531 ps U8*dataMask = NULL; // Dereferenced version of mask for data points531 psVectorMaskType *dataMask = NULL; // Dereferenced version of mask for data points 532 532 if (mask) { 533 dataMask = mask->data. U8;534 } 535 ps U8*coeffMask = myPoly->coeffMask; // Dereferenced version of mask for polynomial terms533 dataMask = mask->data.PS_TYPE_VECTOR_MASK_DATA; 534 } 535 psMaskType *coeffMask = myPoly->coeffMask; // Dereferenced version of mask for polynomial terms 536 536 psF64 *ordinates = NULL; // Dereferenced version of ordinate data 537 537 if (x) { … … 698 698 psPolynomial1D *poly, 699 699 const psVector *mask, 700 ps MaskType maskValue,700 psVectorMaskType maskValue, 701 701 const psVector *f, 702 702 const psVector *fErr, … … 711 711 if (mask != NULL) { 712 712 PS_ASSERT_VECTORS_SIZE_EQUAL(f, mask, false); 713 PS_ASSERT_VECTOR_TYPE(mask, PS_TYPE_ U8, false);713 PS_ASSERT_VECTOR_TYPE(mask, PS_TYPE_VECTOR_MASK, false); 714 714 } 715 715 if (fErr != NULL) { … … 782 782 psStats *stats, 783 783 const psVector *mask, 784 ps MaskType maskValue,784 psVectorMaskType maskValue, 785 785 const psVector *f, 786 786 const psVector *fErr, … … 794 794 PS_ASSERT_VECTOR_NON_NULL(mask, false); 795 795 PS_ASSERT_VECTORS_SIZE_EQUAL(mask, f, false); 796 PS_ASSERT_VECTOR_TYPE(mask, PS_TYPE_ U8, false);796 PS_ASSERT_VECTOR_TYPE(mask, PS_TYPE_VECTOR_MASK, false); 797 797 798 798 if (fErr != NULL) { … … 862 862 if (mask != NULL) { 863 863 for (psS32 i = 0 ; i < mask->n ; i++) { 864 psTrace("psLib.math", 6, "mask[%d] is %d\n", i, mask->data. U8[i]);864 psTrace("psLib.math", 6, "mask[%d] is %d\n", i, mask->data.PS_TYPE_VECTOR_MASK_DATA[i]); 865 865 } 866 866 } … … 895 895 if (mask != NULL) { 896 896 for (psS32 i = 0 ; i < mask->n ; i++) { 897 if (!((mask != NULL) && (mask->data. U8[i] & maskValue))) {897 if (!((mask != NULL) && (mask->data.PS_TYPE_VECTOR_MASK_DATA[i] & maskValue))) { 898 898 psTrace("psLib.math", 6, "(f, fit)[%d] is (%f, %f). resid is (%f)\n", 899 899 i, f->data.F32[i], fit->data.F32[i], resid->data.F64[i]); … … 922 922 // recovery is not allowed with this scheme 923 923 for (psS32 i = 0; i < resid->n; i++) { 924 if ((mask != NULL) && (mask->data. U8[i] & maskValue)) {924 if ((mask != NULL) && (mask->data.PS_TYPE_VECTOR_MASK_DATA[i] & maskValue)) { 925 925 continue; 926 926 } … … 936 936 937 937 if (mask != NULL) { 938 mask->data. U8[i] |= 0x01;938 mask->data.PS_TYPE_VECTOR_MASK_DATA[i] |= 0x01; 939 939 } 940 940 continue; … … 979 979 psPolynomial2D* myPoly, 980 980 const psVector* mask, 981 ps MaskType maskValue,981 psVectorMaskType maskValue, 982 982 const psVector *f, 983 983 const psVector *fErr, … … 1003 1003 if (mask != NULL) { 1004 1004 PS_ASSERT_VECTORS_SIZE_EQUAL(y, mask, false); 1005 PS_ASSERT_VECTOR_TYPE(mask, PS_TYPE_ U8, false);1005 PS_ASSERT_VECTOR_TYPE(mask, PS_TYPE_VECTOR_MASK, false); 1006 1006 } 1007 1007 … … 1026 1026 psF64 **matrix = A->data.F64; // Dereference the least-squares matrix 1027 1027 psF64 *vector = B->data.F64; // Dereference the least-squares vector 1028 ps U8**coeffMask = myPoly->coeffMask; // Dereference mask for polynomial terms1029 ps U8*dataMask = NULL; // Dereference mask for data1028 psMaskType **coeffMask = myPoly->coeffMask; // Dereference mask for polynomial terms 1029 psVectorMaskType *dataMask = NULL; // Dereference mask for data 1030 1030 if (mask) { 1031 dataMask = mask->data. U8;1031 dataMask = mask->data.PS_TYPE_VECTOR_MASK_DATA; 1032 1032 } 1033 1033 psF64 *xData = x->data.F64; // Dereference x … … 1162 1162 psPolynomial2D *poly, 1163 1163 const psVector *mask, 1164 ps MaskType maskValue,1164 psVectorMaskType maskValue, 1165 1165 const psVector *f, 1166 1166 const psVector *fErr, … … 1179 1179 if (mask != NULL) { 1180 1180 PS_ASSERT_VECTORS_SIZE_EQUAL(f, mask, false); 1181 PS_ASSERT_VECTOR_TYPE(mask, PS_TYPE_ U8, false);1181 PS_ASSERT_VECTOR_TYPE(mask, PS_TYPE_VECTOR_MASK, false); 1182 1182 } 1183 1183 if (fErr != NULL) { … … 1231 1231 psStats *stats, 1232 1232 const psVector *mask, 1233 ps MaskType maskValue,1233 psVectorMaskType maskValue, 1234 1234 const psVector *f, 1235 1235 const psVector *fErr, … … 1254 1254 1255 1255 PS_ASSERT_VECTORS_SIZE_EQUAL(f, mask, false); 1256 PS_ASSERT_VECTOR_TYPE(mask, PS_TYPE_ U8, false);1256 PS_ASSERT_VECTOR_TYPE(mask, PS_TYPE_VECTOR_MASK, false); 1257 1257 1258 1258 if (fErr != NULL) { … … 1300 1300 if (mask != NULL) { 1301 1301 for (psS32 i = 0 ; i < mask->n ; i++) { 1302 psTrace("psLib.math", 7, "mask[%d] is %d\n", i, mask->data. U8[i]);1302 psTrace("psLib.math", 7, "mask[%d] is %d\n", i, mask->data.PS_TYPE_VECTOR_MASK_DATA[i]); 1303 1303 } 1304 1304 } … … 1329 1329 if (mask != NULL) { 1330 1330 for (psS32 i = 0 ; i < mask->n ; i++) { 1331 if (!((mask != NULL) && (mask->data. U8[i] & maskValue))) {1331 if (!((mask != NULL) && (mask->data.PS_TYPE_VECTOR_MASK_DATA[i] & maskValue))) { 1332 1332 psTrace("psLib.math", 7, "point %d at %f %f : value, fit : %f %f resid: %f\n", 1333 1333 i, x->data.F32[i], y->data.F32[i], f->data.F32[i], fit->data.F32[i], resid->data.F64[i]); … … 1356 1356 // recovery is not allowed with this scheme 1357 1357 for (psS32 i = 0; i < resid->n; i++) { 1358 if ((mask != NULL) && (mask->data. U8[i] & maskValue)) {1358 if ((mask != NULL) && (mask->data.PS_TYPE_VECTOR_MASK_DATA[i] & maskValue)) { 1359 1359 continue; 1360 1360 } … … 1370 1370 1371 1371 if (mask != NULL) { 1372 mask->data. U8[i] |= 0x01;1372 mask->data.PS_TYPE_VECTOR_MASK_DATA[i] |= 0x01; 1373 1373 } 1374 1374 continue; … … 1403 1403 psPolynomial3D* myPoly, 1404 1404 const psVector* mask, 1405 ps MaskType maskValue,1405 psVectorMaskType maskValue, 1406 1406 const psVector *f, 1407 1407 const psVector *fErr, … … 1433 1433 if (mask != NULL) { 1434 1434 PS_ASSERT_VECTORS_SIZE_EQUAL(f, mask, false); 1435 PS_ASSERT_VECTOR_TYPE(mask, PS_TYPE_ U8, false);1435 PS_ASSERT_VECTOR_TYPE(mask, PS_TYPE_VECTOR_MASK, false); 1436 1436 } 1437 1437 … … 1464 1464 fErrData = fErr->data.F64; 1465 1465 } 1466 ps U8*dataMask = NULL; // Mask for data1466 psVectorMaskType *dataMask = NULL; // Mask for data 1467 1467 if (mask) { 1468 dataMask = mask->data. U8;1469 } 1470 ps U8***coeffMask = myPoly->coeffMask; // Mask for polynomial terms1468 dataMask = mask->data.PS_TYPE_VECTOR_MASK_DATA; 1469 } 1470 psMaskType ***coeffMask = myPoly->coeffMask; // Mask for polynomial terms 1471 1471 int nYZterm = nYterm * nZterm; // Multiplication of the numbers, to calculate the index 1472 1472 … … 1603 1603 psPolynomial3D *poly, 1604 1604 const psVector *mask, 1605 ps MaskType maskValue,1605 psVectorMaskType maskValue, 1606 1606 const psVector *f, 1607 1607 const psVector *fErr, … … 1623 1623 if (mask != NULL) { 1624 1624 PS_ASSERT_VECTORS_SIZE_EQUAL(f, mask, false); 1625 PS_ASSERT_VECTOR_TYPE(mask, PS_TYPE_ U8, false);1625 PS_ASSERT_VECTOR_TYPE(mask, PS_TYPE_VECTOR_MASK, false); 1626 1626 } 1627 1627 if (fErr != NULL) { … … 1677 1677 psStats *stats, 1678 1678 const psVector *mask, 1679 ps MaskType maskValue,1679 psVectorMaskType maskValue, 1680 1680 const psVector *f, 1681 1681 const psVector *fErr, … … 1705 1705 1706 1706 PS_ASSERT_VECTORS_SIZE_EQUAL(f, mask, false); 1707 PS_ASSERT_VECTOR_TYPE(mask, PS_TYPE_ U8, false);1707 PS_ASSERT_VECTOR_TYPE(mask, PS_TYPE_VECTOR_MASK, false); 1708 1708 1709 1709 if (fErr != NULL) { … … 1751 1751 if (mask != NULL) { 1752 1752 for (psS32 i = 0 ; i < mask->n ; i++) { 1753 psTrace("psLib.math", 6, "mask[%d] is %d\n", i, mask->data. U8[i]);1753 psTrace("psLib.math", 6, "mask[%d] is %d\n", i, mask->data.PS_TYPE_VECTOR_MASK_DATA[i]); 1754 1754 } 1755 1755 } … … 1778 1778 if (mask != NULL) { 1779 1779 for (psS32 i = 0 ; i < mask->n ; i++) { 1780 if (!((mask != NULL) && (mask->data. U8[i] & maskValue))) {1780 if (!((mask != NULL) && (mask->data.PS_TYPE_VECTOR_MASK_DATA[i] & maskValue))) { 1781 1781 psTrace("psLib.math", 6, "(f, fit)[%d] is (%f, %f). resid is (%f)\n", 1782 1782 i, f->data.F32[i], fit->data.F32[i], resid->data.F64[i]); … … 1805 1805 // recovery is not allowed with this scheme 1806 1806 for (psS32 i = 0; i < resid->n; i++) { 1807 if ((mask != NULL) && (mask->data. U8[i] & maskValue)) {1807 if ((mask != NULL) && (mask->data.PS_TYPE_VECTOR_MASK_DATA[i] & maskValue)) { 1808 1808 continue; 1809 1809 } … … 1819 1819 1820 1820 if (mask != NULL) { 1821 mask->data. U8[i] |= 0x01;1821 mask->data.PS_TYPE_VECTOR_MASK_DATA[i] |= 0x01; 1822 1822 } 1823 1823 continue; … … 1850 1850 psPolynomial4D* myPoly, 1851 1851 const psVector* mask, 1852 ps MaskType maskValue,1852 psVectorMaskType maskValue, 1853 1853 const psVector *f, 1854 1854 const psVector *fErr, … … 1884 1884 if (mask) { 1885 1885 PS_ASSERT_VECTORS_SIZE_EQUAL(y, mask, false); 1886 PS_ASSERT_VECTOR_TYPE(mask, PS_TYPE_ U8, false);1886 PS_ASSERT_VECTOR_TYPE(mask, PS_TYPE_VECTOR_MASK, false); 1887 1887 } 1888 1888 … … 1918 1918 fErrData = fErr->data.F64; 1919 1919 } 1920 ps U8*dataMask = NULL; // Mask for data1920 psVectorMaskType *dataMask = NULL; // Mask for data 1921 1921 if (mask) { 1922 dataMask = mask->data. U8;1923 } 1924 ps U8****coeffMask = myPoly->coeffMask; // Mask for polynomial terms1922 dataMask = mask->data.PS_TYPE_VECTOR_MASK_DATA; 1923 } 1924 psMaskType ****coeffMask = myPoly->coeffMask; // Mask for polynomial terms 1925 1925 int nYZTterm = nYterm * nZterm * nTterm; // Multiplication of the numbers, for calculating the index 1926 1926 int nZTterm = nZterm * nTterm; // Multiplication of the numbers, for calculating the index … … 2068 2068 psPolynomial4D *poly, 2069 2069 const psVector *mask, 2070 ps MaskType maskValue,2070 psVectorMaskType maskValue, 2071 2071 const psVector *f, 2072 2072 const psVector *fErr, … … 2091 2091 if (mask) { 2092 2092 PS_ASSERT_VECTORS_SIZE_EQUAL(f, mask, false); 2093 PS_ASSERT_VECTOR_TYPE(mask, PS_TYPE_ U8, false);2093 PS_ASSERT_VECTOR_TYPE(mask, PS_TYPE_VECTOR_MASK, false); 2094 2094 } 2095 2095 if (fErr != NULL) { … … 2148 2148 psStats *stats, 2149 2149 const psVector *mask, 2150 ps MaskType maskValue,2150 psVectorMaskType maskValue, 2151 2151 const psVector *f, 2152 2152 const psVector *fErr, … … 2181 2181 2182 2182 PS_ASSERT_VECTORS_SIZE_EQUAL(f, mask, false); 2183 PS_ASSERT_VECTOR_TYPE(mask, PS_TYPE_ U8, false);2183 PS_ASSERT_VECTOR_TYPE(mask, PS_TYPE_VECTOR_MASK, false); 2184 2184 2185 2185 if (fErr != NULL) { … … 2227 2227 if (mask != NULL) { 2228 2228 for (psS32 i = 0 ; i < mask->n ; i++) { 2229 psTrace("psLib.math", 6, "mask[%d] is %d\n", i, mask->data. U8[i]);2229 psTrace("psLib.math", 6, "mask[%d] is %d\n", i, mask->data.PS_TYPE_VECTOR_MASK_DATA[i]); 2230 2230 } 2231 2231 } … … 2255 2255 if (mask != NULL) { 2256 2256 for (psS32 i = 0 ; i < mask->n ; i++) { 2257 if (!((mask != NULL) && (mask->data. U8[i] & maskValue))) {2257 if (!((mask != NULL) && (mask->data.PS_TYPE_VECTOR_MASK_DATA[i] & maskValue))) { 2258 2258 psTrace("psLib.math", 6, "(f, fit)[%d] is (%f, %f). resid is (%f)\n", 2259 2259 i, f->data.F32[i], fit->data.F32[i], resid->data.F64[i]); … … 2282 2282 // recovery is not allowed with this scheme 2283 2283 for (psS32 i = 0; i < resid->n; i++) { 2284 if ((mask != NULL) && (mask->data. U8[i] & maskValue)) {2284 if ((mask != NULL) && (mask->data.PS_TYPE_VECTOR_MASK_DATA[i] & maskValue)) { 2285 2285 continue; 2286 2286 } … … 2296 2296 2297 2297 if (mask != NULL) { 2298 mask->data. U8[i] |= 0x01;2298 mask->data.PS_TYPE_VECTOR_MASK_DATA[i] |= 0x01; 2299 2299 } 2300 2300 continue;
Note:
See TracChangeset
for help on using the changeset viewer.
