39 float SE(
float sum,
float sumsq,
int no);
48 int main(
int argc,
char *argv[])
52 int Cases, Folds, Repeats, f, r, i, N,
53 Size=0, Errs=0, Form, OK;
54 float ***
Raw, **Average=0, FX, Tests, Cost=0;
56 sscanf(argv[1],
"%d", &Cases);
57 sscanf(argv[2],
"%d", &Folds);
58 sscanf(argv[3],
"%d", &Repeats);
59 sscanf(argv[4],
"%d", &
Rules);
63 Raw = (
float ***) calloc(Repeats,
sizeof(
float **));
66 Average = (
float **) calloc(Repeats,
sizeof(
float *));
71 fgets(Line, 100, stdin);
76 for ( p = Line ; *p ; )
81 while ( isdigit(*p) || *p ==
'.' ) p++;
89 if ( ! memcmp(Line,
"boost", 5) )
95 if ( ! memcmp(Line,
"composite", 9) )
107 for ( r = 0 ; r < Repeats ; r++ )
109 Raw[r] = (
float **) calloc(Folds,
sizeof(
float *));
112 Average[r] = (
float *) calloc(3,
sizeof(
float));
115 for ( f = 0 ; f < Folds ; f++ )
117 Raw[r][f] = (
float *) calloc(3,
sizeof(
float));
119 if ( r + f != 0 && ! fgets(Line, 100, stdin) )
121 printf(
"\nExpecting %d lines\n", Folds * Repeats);
125 Tests = Cases / Folds + ( f >= Folds - Cases % Folds);
127 if ( ! memcmp(Line,
"boost", 5) )
134 N = sscanf(Line,
"boost %d (%f%%)", &Errs, &FX);
139 N = sscanf(Line,
"boost %d (%f%%) %f", &Errs, &FX, &Cost);
148 N = sscanf(Line,
"%d %d (%f%%)", &Size, &Errs, &FX);
153 N = sscanf(Line,
"%d %d (%f%%) %f",
154 &Size, &Errs, &FX, &Cost);
159 N = sscanf(Line+18,
"%d %d (%f%%) %f",
160 &Size, &Errs, &FX, &Cost);
168 printf(
"\nCannot parse line\n\t%s", Line);
172 Raw[r][f][
SIZE] = Size;
173 Raw[r][f][
ERRP] = (100.0 * Errs) / Tests;
174 Raw[r][f][
COST] = Cost;
178 for ( i = 0 ; i < 3 ; i++ )
180 Average[r][i] += Raw[r][f][i];
187 for ( i = 0 ; i < 3 ; i++ )
189 Average[r][i] /= Folds;
196 if ( fgets(Line, 100, stdin) )
198 printf(
"\nExpecting %d lines\n", Folds * Repeats * 2);
217 " ---------------- ",
221 " ----------------------- ",
222 " Size Errors Cost " },
229 " -----------------------",
236 float Sum[3], SumSq[3];
238 for ( i = 0 ; i < 3 ; i++ )
240 Sum[i] = SumSq[i] = 0;
243 for ( i = 0 ; i <= 2 ; i++ )
248 printf(
"\n\t%s ", Title);
267 for ( j = 0 ; j < No ; j++ )
269 for ( i = 0 ; i < 3 ; i++ )
272 SumSq[i] += Val[j][i] * Val[j][i];
275 printf(
"\t%3d ", j+1);
283 printf(
"%8.1f", Val[j][
SIZE]);
286 printf(
" %4.1f%% ", Val[j][
ERRP]);
290 printf(
"%5.2f ", Val[j][
COST]);
304 printf(
"%8.1f", Sum[
SIZE] / No);
307 printf(
" %4.1f%% ", Sum[
ERRP] / No);
311 printf(
"%5.2f ", Sum[
COST] / No);
322 printf(
"%8.1f",
SE(Sum[
SIZE], SumSq[SIZE], No));
325 printf(
" %4.1f%% ",
SE(Sum[
ERRP], SumSq[ERRP], No));
329 printf(
"%5.2f ",
SE(Sum[
COST], SumSq[COST], No));
337 float SE(
float sum,
float sumsq,
int no)
344 return sqrt( ((sumsq - no * mean * mean) / (no - 1)) / no );