Mail Archives: djgpp/2007/12/26/20:21:49
At 05:01 PM 12/26/2007, you wrote:
>Ethan Rosenberg schrieb:
> > Dear List -
> >
> > When I start to run splint, I get the error message: Temporary file
> > for preprocessor output already exists. Trying to open
> > c:\temp\c182000.c **cannot continue.
> >
> > Advice please.
> >
> > Thanks.
> >
> > Ethan
>
>
>Hello,
>
>is this failure still an issue or have you been able to solve it?
>That failure is really strange. It is not clear to me why splint
>should not be able to open a temporary file? With such a
>failure not a single test case of the testsuite would have
>passed on my machine. If it is still an issue, please send
>my a minimal file that produces the failure and a complete
>list of your environment variables.
>
>Regards,
>Juan M. Guerrero
++++++
Juan -
Thank you.
The following two statements are in my autoexec.bat
SET LARCH_PATH=C:\D\SPLINT\SHARE\SPLINT\LIB
SET LCLIMPORTDIR=C:\D\SPLINT\SHARE\SPLINT\IMPORTS
Do I have to explicitly declare a temp file?
The text of the program is:
/*================================ file = lr.c ===============================
//= Function to calculate linear regression equation for <x, y> data =
//==========================================================================
//----- Include files ----------------------------------------------------*/
#include <stdio.h> /* Needed for printf() and feof() */
#include <stdlib.h> /* Needed for atof() */
#include <math.h> /* Needed for sqrt() and pow() */
#include <string.h>
FILE *fptr1, *fptr2;
extern FILE *fptr16;
extern char string2[81];
/*========================================================================*/
//= Main program =
//========================================================================*/
void lr2(char infile[18], char outfile[18], char title[25])
{
static double x; /* Value of x read in from the file */
static double y; /* Value of y read in from the file */
static double instring[2]; /* Temporary input
string */
static long int count; /* Counter for number of <x,
y> pairs */
static double accum_x; /* Accumulator for the sum of
the x's */
static double accum_y; /* Accumulator for the sum of
the y's */
static double accum_xy; /* Accumulator for the sum of
(x*y) */
static double accum_x_squared; /* Accumulator for the sum of
the x's squared */
static double accum_y_squared; /* Accumulator for the sum of
the y's squared * double numerator; /* Work variable for
numerator */
static double denominator; /* Work variable for
denominator */
static double linear_corr; /* Linear correlation
coefficient */
static double slope; /* Slope of the linear
regression */
static double intercept; /* Intercept of the linear
regression */
static double numerator; /* Work variable for
numerator */
static short int valid; /* number of items read in
fread */
static long num_read;
static double last_minute; /* The last minute in the
data file */
static double last_value; /* Value of y = mx + b, where
x is the last minute */
/* Output a banner
printf("----------------------------------------------------
lr.c ----- \n");
/* Main loop to read <x, y> values and compute accumulated values */
count = 0;
valid = 0;
x = 0.0;
y = 0.0;
accum_x = 0.0;
accum_y = 0.0;
accum_xy = 0.0;
accum_x_squared = 0.0;
accum_y_squared = 0.0;
numerator = 0.0;
denominator = 0.0;
linear_corr = 0.0;
slope = 0.0;
intercept = 0.0;
instring[0] = 0.0;
instring[1] = 0.0;
num_read = 0;
last_minute = 0.0;
last_value = 0.0;
fptr1 = fopen(infile, "rb");
fptr2 = fopen(outfile, "a");
while (1)
{
/* Read the input values from stdin checking for invalid entry
condition */
num_read = fread(&instring[0], 2,(long)sizeof(double), fptr1);
if(num_read < 2)
break;
x = instring[0];
y = instring[1];
last_minute = instring[0];
count++;
/* Accumulate the applicable values from the input file */
accum_x = accum_x + x; /* Sum of
x */
accum_y = accum_y + y; /* Sum of
y */
accum_xy = accum_xy + (x*y); /* Sum of
x*y */
accum_x_squared = accum_x_squared + (x*x); /* Sum of x
squared */
accum_y_squared = accum_y_squared + (y*y); /* Sum of y
squared */
}
/* Calculate the slope and intercept of the linear regression line */
numerator = (count * accum_xy) - (accum_x * accum_y);
denominator = (count * accum_x_squared) - (accum_x * accum_x);
slope = numerator / denominator;
intercept = (accum_y / count) - (slope * (accum_x / count));
/* Calculate the linear correlation coefficient */
numerator = (count * accum_xy) - (accum_x * accum_y);
denominator = sqrt((count * accum_x_squared) - (accum_x * accum_x)) *
sqrt((count * accum_y_squared) - (accum_y * accum_y));
linear_corr = numerator / denominator;
last_value = slope * last_minute + intercept;
/* Output results (R^2 is the coefficient of determiniation) */
printf("\n%s\n", title);
printf(" Number of <x, y> pairs = %ld \n", count);
printf(" Y = %f*x + %f (R^2 = %f) \n",
slope, intercept, pow(linear_corr, 2.0));
printf("Last Point = %f\n", last_value);
fprintf(fptr2, "\n\n\"%s\" \"No.pairs = \" %ld\n", title, count);
fprintf(fptr2, "\"Intercept = \" %f \"Slope = \"%f \"CorrCoef =
\" %f\n", intercept, \
slope, pow(linear_corr, 2.0));
fprintf(fptr2, "\"Last Point = \"%f\"", last_value);
fprintf(fptr16,"\"%s\" %ld %f %f %f %f", title, count,
intercept, slope,\
pow(linear_corr, 2.0),last_value);
/*
printf("--------------------------------------------------------------- \n");*/
fclose(fptr1);
fclose(fptr2);
}
Ethan
- Raw text -