int main(int argc,char **argv) { char cline[1024]; char tempfmt[1024]; char also[1024]; int iarg; also[0] = '\0'; fprintf(stderr,"[indcolcmp 1.1]\n"); many_trantos = pipe_input = frc_suffix = 0; for (iarg=2;iarg<argc;++iarg){ if (stricmp(&argv[iarg][1],"fs")==0) frc_suffix = 1; else if (stricmp(&argv[iarg][1],"pipe")==0) pipe_input = 1; else if (stricmp(&argv[iarg][1],"big")==0) many_trantos = 1; else if (stricmp(&argv[iarg][1],"many")==0) many_trantos = 1; else{ if (strlen(also)>0) strcat(also," "); strcat(also,argv[iarg]);}} if (argc>1){ /* * First do individually modelled. */ if (many_trantos){ if (pipe_input){ DO3("many_ind2coll %s.mod -cp -X%s_frc %%s >qqq_%s.mod");} else if (frc_suffix){ DO4("many_ind2coll %s.mod -cp -X%s_frc %%s <%s_frc.mod >qqq_%s.mod");} else{ DO4("many_ind2coll %s.mod -cp -Xind_%s %%s <ind_%s.mod >qqq_%s.mod");}} else{ if (pipe_input){ DO3("ind2coll %s.mod -cp -X%s_frc %%s >qqq_%s.mod");} else if (frc_suffix){ DO4("ind2coll %s.mod -cp -X%s_frc %%s <%s_frc.mod >qqq_%s.mod");} else{ DO4("ind2coll %s.mod -cp -Xind_%s %%s <ind_%s.mod >qqq_%s.mod");}} DO2("coll2sort %%s <qqq_%s.mod >zzz_%s.mod"); DO2("coll2sort -cp %%s <zzz_%s.mod >ccc_%s.mod"); DO2("coll2sort %%s <ccc_%s.mod >ind_%s.mod"); /* * Then do collectively modelled. */ DO4("ind2coll %s.mod -cp %%s -X%s <%s.mod >hhh_%s.mod"); DO2("coll2sort %%s <hhh_%s.mod >jjj_%s.mod"); #ifdef OBSOLETE DO2("coll2sort -cp %%s <%s.mod >jjj_%s.mod"); #endif DO2("coll2sort -cp %%s <jjj_%s.mod >sss_%s.mod"); DO2("coll2sort %%s <sss_%s.mod >col_%s.mod"); /* * Then take differences */ DO3("diff ind_%s.mod col_%s.mod >%s.moddf");} return(0); }
static int optimize(int n, int *A) { int i, j, k, changed, cst, cstmax; do { changed = 0; for (i = 0; i < n; ++i) { k = i + i; DO(i, i, k, sqcost); } for (i = 0; i < n; ++i) { for (j = 0; j <= i; ++j) { k = i + j; DO(i, j, k, mulcost); k = i - j; DO(i, j, k, mulcost); k = i + j; DO3(i, j, i - j, k, reflcost); } } } while (changed); cst = cstmax = 0; for (i = 0; i < n; ++i) { cst += A[i]; if (A[i] > cstmax) cstmax = A[i]; } /* return cstmax; */ return cst; }