//===================================================== file = spread.c ===== //= Program to spread-out a series X of size N = //= - Value greater than a specific MAX_VALUE are clipped and then the = //= sum of excess value is evenly added to all values in the series = //=========================================================================== //= Notes: = //= 1) Input from input file "in.dat" to stdin (see example below) = //= * Comments are bounded by "&" characters at the beginning and = //= end of the comment block = //= 2) Output is to stdout = //=-------------------------------------------------------------------------= //= Example "in.dat" file: = //= = //= & Sample series of data which can be integers or reals. = //= There are 3 values in this file. & = //= 51 = //= 38 = //= 45 = //=-------------------------------------------------------------------------= //= Example output (for above "in.dat" and MAX_VALUE = 42.0) = //= = //= ------------------------------------------------ spread.c ----- = //= Smoothing for MAX_VALUE = 42.000000 (clip value) = //= 46.000000 = //= 42.000000 = //= 46.000000 = //= --------------------------------------------------------------- = //=-------------------------------------------------------------------------= //= Build: gcc spread.c, bcc32 spread.c, cl spread.c = //=-------------------------------------------------------------------------= //= Execute: spread < in.dat = //=-------------------------------------------------------------------------= //= Author: Kenneth J. Christensen = //= University of South Florida = //= WWW: http://www.csee.usf.edu/~christen = //= Email: christen@csee.usf.edu = //=-------------------------------------------------------------------------= //= History: KJC (05/11/00) - Genesis = //=========================================================================== //----- Include files ------------------------------------------------------- #include // Needed for printf() and feof() #include // Needed for exit() and atof() #include // Needed for strcmp() //----- Defines ------------------------------------------------------------- #define MAX_SIZE 1000000L // Maximum size of time series data array #define MAX_VALUE 42.0 // Maximum value for clipping //----- Globals ------------------------------------------------------------- double X[MAX_SIZE]; // Time series read from "in.dat" long int N; // Number of values in "in.dat" //----- Function prototypes ------------------------------------------------- void load_X_array(void); // Load X array //=========================================================================== //= Main program = //=========================================================================== void main(void) { double excess_sum; // Computed excess sum value double excess_fraction; // Computed excess fraction value long int i; // Loop counter // Load the series X printf("------------------------------------------------ spread.c -----\n"); load_X_array(); // Output MAX_VALUE printf(" Spreading for MAX_VALUE = %f (clip value) \n", MAX_VALUE); // Compute the excess sum excess_sum = 0; for (i=0; i MAX_VALUE) excess_sum = excess_sum + (X[i] - MAX_VALUE); // Add the excess fraction to each value and output excess_fraction = excess_sum / N; for (i=0; i= MAX_SIZE) { printf("*** ERROR - greater than %ld data values \n", MAX_SIZE); exit(1); } } // End-of-file escape end: return; }