#include <stdlib.h>
#include <math.h>
#include "M3.h"
#define STRING_LENGTH 256
int main( int argc, char **argv )
{
M3_RunConfigStruct *runConfig;
M3_PixelClassLL *pixelClass;
int notDone;
int32_t numPixel;
int64_t i, j, k, l, n;
M3_Interval interval;
M3_MapEl *map = NULL;
double maxVal = -HUGE_VAL, minVal = HUGE_VAL;
char className[STRING_LENGTH];
M3_RunConfigStruct_Read(&runConfig, argv[1], M3_MADSPEC_RUN_TYPE );
notDone = M3_RunConfigStruct_GetPixelClassRoot( runConfig, &pixelClass );
while( notDone )
{
M3_PixelClassLL_GetNumPixelInClass( pixelClass, &numPixel );
if( map )
map = (M3_MapEl *)realloc( map, sizeof(M3_MapEl)*numPixel );
else
map = (M3_MapEl *)malloc( sizeof(M3_MapEl)*numPixel );
for( i = 0; i < numPixel; i++ )
map[i].pixel = i;
M3_PixelClassLL_GetIndexedMap(pixelClass, numPixel, map );
for( i = 0; i < numPixel; i++ )
{
if( !isnan(map[i].value) && map[i].value > maxVal )
maxVal = map[i].value;
if( !isnan(map[i].value) && map[i].value < minVal )
minVal = map[i].value;
}
M3_PixelClassLL_GetClassName( pixelClass, className, STRING_LENGTH);
fprintf( stdout, "Pixel class %s maximum map value: %.8e\n", className, maxVal );
fprintf( stdout, "Pixel class %s minimum map value: %.8e\n", className, minVal );
notDone = M3_PixelClassLL_GetNextNodeInList( &pixelClass );
}
free(map);
return 0;
}