Changeset 887 for trunk/psLib/test/dataManip/tst_psStats00.c
- Timestamp:
- Jun 6, 2004, 2:31:55 PM (22 years ago)
- File:
-
- 1 edited
-
trunk/psLib/test/dataManip/tst_psStats00.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/test/dataManip/tst_psStats00.c
r717 r887 11 11 { 12 12 psStats *myStats = NULL; 13 psStats *myStats2 = NULL;14 13 int testStatus = true; 14 int globalTestStatus = true; 15 15 int i = 0; 16 16 psVector *myVector = NULL; 17 17 psVector *maskVector= NULL; 18 18 float mean = 0.0; 19 float realMean 1= 0.0;20 float realMean 2= 0.0;19 float realMeanNoMask = 0.0; 20 float realMeanWithMask = 0.0; 21 21 int count = 0; 22 int currentId = psMemGetId(); 23 int memLeaks = 0; 22 24 23 printPositiveTestHeader(stdout, 24 "psStats functions", 25 "PS_STAT_SAMPLE_MEAN"); 26 25 /*************************************************************************/ 26 /* Allocate and initialize data structures */ 27 /*************************************************************************/ 27 28 myStats = psStatsAlloc(PS_STAT_SAMPLE_MEAN); 28 myVector = psVectorAlloc( PS_TYPE_FLOAT, N);29 myVector = psVectorAlloc(N, PS_TYPE_F32); 29 30 myVector->n = N; 30 maskVector = psVectorAlloc( PS_TYPE_UINT8, N);31 maskVector = psVectorAlloc(N, PS_TYPE_U8); 31 32 maskVector->n = N; 32 33 33 34 mean = 0.0; 34 realMean2 = 0.0; 35 realMeanWithMask = 0.0; 36 // Set the appropriate values for the vector data. 35 37 for (i=0;i<N;i++) { 36 myVector->vec.f[i] = (float) i; 38 myVector->data.F32[i] = (float) i; 39 } 40 41 // Set the mask vector and calculate the expected maximum. 42 for (i=0;i<N;i++) { 43 realMeanNoMask+= myVector->data.F32[i]; 44 37 45 if (i < (N/2)) { 38 maskVector-> vec.ui8[i] = 0;39 realMean 2+= myVector->vec.f[i];46 maskVector->data.U8[i] = 0; 47 realMeanWithMask+= myVector->data.F32[i]; 40 48 count++; 41 49 } else { 42 printf("Masking element %d\n", i); 43 maskVector->vec.ui8[i] = 1; 50 maskVector->data.U8[i] = 1; 44 51 } 45 realMean1+= myVector->vec.f[i];46 52 } 47 realMean 1/= (float) N;48 realMean 2/= (float) count;53 realMeanNoMask /= (float) N; 54 realMeanWithMask /= (float) count; 49 55 50 myStats2 = psArrayStats(myVector, NULL, 0, myStats); 51 mean = myStats2->sampleMean; 56 /*************************************************************************/ 57 /* Call psVectorStats() with no vector mask. */ 58 /*************************************************************************/ 59 printPositiveTestHeader(stdout, 60 "psStats functions", 61 "PS_STAT_SAMPLE_MEAN: no vector mask"); 52 62 53 printf("Called psArrayStats() on a vector with no elements masked.\n"); 54 printf("The expected mean was %f; the calculated mean was %f\n", realMean1, mean); 55 if (mean == realMean1) { 63 myStats = psVectorStats(myStats, myVector, NULL, 0); 64 mean = myStats->sampleMean; 65 66 printf("Called psVectorStats() on a vector with no elements masked.\n"); 67 printf("The expected mean was %f; the calculated mean was %f\n", realMeanNoMask, mean); 68 if (mean == realMeanNoMask) { 56 69 testStatus = true; 57 70 } else { 58 71 testStatus = false; 72 globalTestStatus = false; 59 73 } 74 printFooter(stdout, 75 "psVector functions", 76 "PS_STAT_SAMPLE_MEAN: no vector mask", 77 testStatus); 60 78 61 myStats2 = psArrayStats(myVector, maskVector, 1, myStats); 62 mean = myStats2->sampleMean; 63 printf("Called psArrayStats() on a vector with last N/2 elements masked.\n"); 64 printf("The expected mean was %f; the calculated mean was %f\n", realMean2, mean); 65 if (mean == realMean2) { 79 /*************************************************************************/ 80 /* Call psVectorStats() with vector mask. */ 81 /*************************************************************************/ 82 printPositiveTestHeader(stdout, 83 "psStats functions", 84 "PS_STAT_SAMPLE_MEAN: with vector mask"); 85 86 myStats = psVectorStats(myStats, myVector, maskVector, 1); 87 mean = myStats->sampleMean; 88 printf("Called psVectorStats() on a vector with last N/2 elements masked.\n"); 89 printf("The expected mean was %f; the calculated mean was %f\n", realMeanWithMask, mean); 90 if (mean == realMeanWithMask) { 66 91 testStatus = true; 67 92 } else { 68 93 testStatus = false; 94 globalTestStatus = false; 69 95 } 70 96 71 97 printFooter(stdout, 72 "ps Hashfunctions",73 " psHashAlloc()",98 "psVector functions", 99 "PS_STAT_SAMPLE_MEAN: with vector mask", 74 100 testStatus); 75 101 76 return (!testStatus); 102 /*************************************************************************/ 103 /* Deallocate data structures */ 104 /*************************************************************************/ 105 printPositiveTestHeader(stdout, 106 "psStats functions", 107 "psStats(): deallocating memory"); 108 109 psStatsFree(myStats); 110 psVectorFree(myVector); 111 psVectorFree(maskVector); 112 113 psMemCheckCorruption(1); 114 memLeaks = psMemCheckLeaks(currentId,NULL,NULL); 115 if (0 != memLeaks) { 116 psAbort(__func__,"Memory Leaks! (%d leaks)", memLeaks); 117 } 118 119 printFooter(stdout, 120 "psVector functions", 121 "psStats(): deallocating memory", 122 testStatus); 123 124 return (!globalTestStatus); 77 125 }
Note:
See TracChangeset
for help on using the changeset viewer.
