Changeset 8627 for trunk/psLib/src/math/psStats.c
- Timestamp:
- Aug 25, 2006, 6:34:28 PM (20 years ago)
- File:
-
- 1 edited
-
trunk/psLib/src/math/psStats.c (modified) (22 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/src/math/psStats.c
r8245 r8627 16 16 * use ->min and ->max (PS_STAT_USE_RANGE) 17 17 * 18 * @version $Revision: 1.18 4$ $Name: not supported by cvs2svn $19 * @date $Date: 2006-08- 09 02:26:44$18 * @version $Revision: 1.185 $ $Name: not supported by cvs2svn $ 19 * @date $Date: 2006-08-26 04:34:28 $ 20 20 * 21 21 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii … … 665 665 if (count == 0) { 666 666 stats->sampleStdev = NAN; 667 psLogMsg(__func__, PS_LOG_WARN, "WARNING: vectorSampleStdev(): no valid psVector elements (% d). Setting stats->sampleStdev = NAN.\n", count);667 psLogMsg(__func__, PS_LOG_WARN, "WARNING: vectorSampleStdev(): no valid psVector elements (%ld). Setting stats->sampleStdev = NAN.\n", count); 668 668 return false; 669 669 } 670 670 if (count == 1) { 671 671 stats->sampleStdev = 0.0; 672 psLogMsg(__func__, PS_LOG_WARN, "WARNING: vectorSampleStdev(): only one valid psVector elements (% d). Setting stats->sampleStdev = 0.0.\n", count);672 psLogMsg(__func__, PS_LOG_WARN, "WARNING: vectorSampleStdev(): only one valid psVector elements (%ld). Setting stats->sampleStdev = 0.0.\n", count); 673 673 return false; 674 674 } … … 713 713 714 714 // Ensure that stats->clipSigma is within the proper range. 715 PS_ASSERT_ INT_WITHIN_RANGE(stats->clipSigma,716 PS_CLIPPED_SIGMA_LB,717 PS_CLIPPED_SIGMA_UB, -1);715 PS_ASSERT_FLOAT_WITHIN_RANGE(stats->clipSigma, 716 PS_CLIPPED_SIGMA_LB, 717 PS_CLIPPED_SIGMA_UB, -1); 718 718 719 719 // Allocate a psStats structure for calculating the mean, median, and … … 777 777 fabsf(myVector->data.F32[j] - clippedMean) > stats->clipSigma * errors->data.F32[j]) { 778 778 tmpMask->data.U8[j] = 0xff; 779 psTrace("psLib.math", 10, "Clipped % d: %f +/- %f\n", j,779 psTrace("psLib.math", 10, "Clipped %ld: %f +/- %f\n", j, 780 780 myVector->data.F32[j], errors->data.F32[j]); 781 781 numClipped++; … … 788 788 fabsf(myVector->data.F32[j] - clippedMean) > (stats->clipSigma * clippedStdev)) { 789 789 tmpMask->data.U8[j] = 0xff; 790 psTrace("psLib.math", 10, "Clipped % d: %f\n", j, myVector->data.F32[j]);790 psTrace("psLib.math", 10, "Clipped %ld: %f\n", j, myVector->data.F32[j]); 791 791 numClipped++; 792 792 clipped = true; … … 896 896 PS_ASSERT_VECTOR_TYPE(yVec, PS_TYPE_F32, NAN); 897 897 // PS_ASSERT_VECTORS_SIZE_EQUAL(xVec, yVec, NAN); 898 PS_ASSERT_INT_WITHIN_RANGE(binNum, 0, ( xVec->n - 1), NAN);899 PS_ASSERT_INT_WITHIN_RANGE(binNum, 0, ( yVec->n - 1), NAN);898 PS_ASSERT_INT_WITHIN_RANGE(binNum, 0, (int)(xVec->n - 1), NAN); 899 PS_ASSERT_INT_WITHIN_RANGE(binNum, 0, (int)(yVec->n - 1), NAN); 900 900 901 901 psVector *x = psVectorAlloc(3, PS_TYPE_F64); … … 1008 1008 psTrace("psLib.math", 4, "---- %s() begin ----\n", __func__); 1009 1009 PS_ASSERT_VECTOR_NON_NULL(params, NAN); 1010 PS_ASSERT_VECTOR_SIZE(params, 2, NAN);1010 PS_ASSERT_VECTOR_SIZE(params, (long)2, NAN); 1011 1011 PS_ASSERT_VECTOR_TYPE(params, PS_TYPE_F32, NAN); 1012 1012 PS_ASSERT_VECTOR_NON_NULL(coords, NAN); 1013 PS_ASSERT_VECTOR_SIZE(coords, 1, NAN);1013 PS_ASSERT_VECTOR_SIZE(coords, (long)1, NAN); 1014 1014 PS_ASSERT_VECTOR_TYPE(coords, PS_TYPE_F32, NAN); 1015 1015 … … 1020 1020 psF32 gauss = psGaussian(x, mean, stdev, false); 1021 1021 if (deriv) { 1022 PS_ASSERT_VECTOR_SIZE(deriv, 2, NAN);1022 PS_ASSERT_VECTOR_SIZE(deriv, (long)2, NAN); 1023 1023 PS_ASSERT_VECTOR_TYPE(deriv, PS_TYPE_F32, NAN); 1024 1024 psF32 tmp = (x - mean) * gauss; … … 1136 1136 // we get here, we know that binSize != 0.0. 1137 1137 long numBins = (max - min) / binSize; // Number of bins 1138 psTrace("psLib.math", 6, "Numbins is % d\n", numBins);1138 psTrace("psLib.math", 6, "Numbins is %ld\n", numBins); 1139 1139 psTrace("psLib.math", 6, "Creating a robust histogram from data range (%.2f - %.2f)\n", min, max); 1140 1140 // Generate the histogram … … 1159 1159 // ADD step 2: Find the bin which contains the 50% data point. 1160 1160 totalDataPoints = cumulative->nums->data.F32[numBins - 1]; 1161 psTrace("psLib.math", 6, "Total data points is % d\n", totalDataPoints);1161 psTrace("psLib.math", 6, "Total data points is %ld\n", totalDataPoints); 1162 1162 long binMedian; 1163 1163 if (totalDataPoints/2.0 < cumulative->nums->data.F32[0]) { … … 1170 1170 if (binMedian < 0) { 1171 1171 psError(PS_ERR_UNKNOWN, false, 1172 "Failed to calculate the 50 precent data point (% d).\n", binMedian);1172 "Failed to calculate the 50 precent data point (%ld).\n", binMedian); 1173 1173 psFree(statsMinMax); 1174 1174 psFree(histogram); … … 1179 1179 } 1180 1180 } 1181 psTrace("psLib.math", 6, "The median bin is % d (%.2f to %.2f)\n", binMedian,1181 psTrace("psLib.math", 6, "The median bin is %ld (%.2f to %.2f)\n", binMedian, 1182 1182 cumulative->bounds->data.F32[binMedian], cumulative->bounds->data.F32[binMedian+1]); 1183 1183 … … 1217 1217 } 1218 1218 } 1219 psTrace("psLib.math", 6, "The 15.8655%% and 84.1345%% data point bins are (% d, %d).\n",1219 psTrace("psLib.math", 6, "The 15.8655%% and 84.1345%% data point bins are (%ld, %ld).\n", 1220 1220 binLo, binHi); 1221 1221 psTrace("psLib.math", 6, "binLo midpoint is %f\n", PS_BIN_MIDPOINT(cumulative, binLo)); … … 1248 1248 #else 1249 1249 // This code basically interpolates to find the positions exactly. 1250 psTrace("psLib.math", 6, "binLo is % d. Nums at that bin and the next are (%.2f, %.2f)\n",1250 psTrace("psLib.math", 6, "binLo is %ld. Nums at that bin and the next are (%.2f, %.2f)\n", 1251 1251 binLo, cumulative->nums->data.F32[binLo], cumulative->nums->data.F32[binLo+1]); 1252 psTrace("psLib.math", 6, "binHi is % d. Nums at that bin and the next are (%.2f, %.2f)\n",1252 psTrace("psLib.math", 6, "binHi is %ld. Nums at that bin and the next are (%.2f, %.2f)\n", 1253 1253 binHi, cumulative->nums->data.F32[binHi], cumulative->nums->data.F32[binHi+1]); 1254 1254 … … 1304 1304 psTrace("psLib.math", 6, "Masking data more than 25 bins from the median\n"); 1305 1305 psTrace("psLib.math", 6, 1306 "The median is at bin number % d. We mask bins outside the bin range (%d:%d)\n",1306 "The median is at bin number %ld. We mask bins outside the bin range (%ld:%ld)\n", 1307 1307 binMedian, maskLo, maskHi); 1308 1308 psTrace("psLib.math", 6, "Masking data outside (%f %f)\n", medianLo, medianHi); … … 1310 1310 if ((myVector->data.F32[i] < medianLo) || (myVector->data.F32[i] > medianHi)) { 1311 1311 mask->data.U8[i] = 0xff; 1312 psTrace("psLib.math", 6, "Masking element % d is %f\n", i, myVector->data.F32[i]);1312 psTrace("psLib.math", 6, "Masking element %ld is %f\n", i, myVector->data.F32[i]); 1313 1313 } 1314 1314 } … … 1350 1350 return false; 1351 1351 } 1352 psTrace("psLib.math", 6, "The 25-percent and 75-precent data point bins are (% d, %d).\n", binLo25, binHi25);1352 psTrace("psLib.math", 6, "The 25-percent and 75-precent data point bins are (%ld, %ld).\n", binLo25, binHi25); 1353 1353 1354 1354 // ADD step 8: Interpolate to find these two positions exactly: these are the upper and lower quartile … … 1381 1381 } 1382 1382 stats->robustN50 = N50; 1383 psTrace("psLib.math", 6, "The robustN50 is % d.\n", N50);1383 psTrace("psLib.math", 6, "The robustN50 is %ld.\n", N50); 1384 1384 1385 1385 … … 1413 1413 psTrace("psLib.math", 6, "The new min/max values are (%f, %f).\n", min, max); 1414 1414 psTrace("psLib.math", 6, "The new bin size is %f.\n", newBinSize); 1415 psTrace("psLib.math", 6, "The numBins is % d\n", numBins);1415 psTrace("psLib.math", 6, "The numBins is %ld\n", numBins); 1416 1416 1417 1417 psHistogram *histogram = psHistogramAlloc(min, max, numBins); // A new histogram (without outliers) … … 1460 1460 } 1461 1461 } 1462 psTrace("psLib.math", 6, "The peak bin is % d, with %f data.n", binNum, binMaxNums);1462 psTrace("psLib.math", 6, "The peak bin is %ld, with %f data.n", binNum, binMaxNums); 1463 1463 1464 1464 // Fit a Gaussian to the bins in the range 20 sigma of the robust histogram median. … … 1696 1696 PS_ASSERT_VECTOR_NON_NULL(bounds, NULL); 1697 1697 PS_ASSERT_VECTOR_TYPE(bounds, PS_TYPE_F32, NULL); 1698 PS_ASSERT_ INT_LARGER_THAN_OR_EQUAL(bounds->n,2, NULL);1698 PS_ASSERT_LONG_LARGER_THAN_OR_EQUAL(bounds->n, (long)2, NULL); 1699 1699 1700 1700 // Allocate memory for the new histogram structure. … … 1761 1761 PS_ASSERT_PTR_NON_NULL(out->bounds, false); 1762 1762 PS_ASSERT_PTR_NON_NULL(out->nums, false); 1763 PS_ASSERT_ INT_WITHIN_RANGE(binNum, 0,((out->nums->n)-1), false);1763 PS_ASSERT_LONG_WITHIN_RANGE(binNum, (long)0, (long)((out->nums->n)-1), false); 1764 1764 PS_ASSERT_FLOAT_LARGER_THAN_OR_EQUAL(error, 0.0, false); 1765 1765 PS_ASSERT_FLOAT_WITHIN_RANGE(data, out->bounds->data.F32[0],
Note:
See TracChangeset
for help on using the changeset viewer.
