47 static int ilog(
unsigned int v){
56 int main(
int argc,
char *argv[]){
62 int entries=-1,dim=-1,quantvals=-1,addmul=-1,sequencep=0;
71 fprintf(stderr,
"Need a lattice description file on the command line.\n");
79 strcpy(filename,argv[1]);
80 in=fopen(filename,
"r");
82 fprintf(stderr,
"Could not open input file %s\n",filename);
86 ptr=strrchr(filename,
'.');
98 if(sscanf(line,
"%d %d %d %d",&quantvals,&dim,&addmul,&sequencep)!=4){
99 if(sscanf(line,
"%d %d %d",&quantvals,&dim,&addmul)!=3){
100 fprintf(stderr,
"Syntax error reading description file (line 1)\n");
104 entries=pow(quantvals,dim);
114 for(j=0;j<
entries;j++)hits[j]=1;
119 for(j=0;j<quantvals;j++){
121 if(!line || sscanf(line,
"%lf",quantlist+j)!=1){
122 fprintf(stderr,
"Ran out of data on line 2 of description file\n");
125 temp=strchr(line,
',');
126 if(!temp)temp=strchr(line,
' ');
133 double min=quantlist[0];
136 for(j=1;j<quantvals;j++)
if(quantlist[j]<min)min=quantlist[
j];
137 for(j=0;j<quantvals;j++)
138 for(i=j+1;i<quantvals;i++)
139 if(mindel==-1 ||
fabs(quantlist[j]-quantlist[i])<mindel)
140 mindel=
fabs(quantlist[j]-quantlist[i]);
144 for(j=0;j<quantvals;j++){
145 double test=fac*(quantlist[
j]-
min)/mindel;
146 if(
fabs(rint(test)-test)>.00001f)
break;
149 if(j<quantvals)fac++;
153 fprintf(stderr,
"min=%g mindel=%g\n",min,mindel);
161 for(j=0;j<quantvals;j++){
162 c.
quantlist[
j]=rint((quantlist[j]-min)/mindel);
169 for(i=0;i<
entries;i++)hits[i]=1;
void reset_next_value(void)
int main(int argc, char **argv)
char * strdup(const char *inStr)
void write_codebook(FILE *out, char *name, const static_codebook *c)
EGLImageKHR EGLint * name
float _float32_unpack(long val)
char * setup_line(FILE *in)
long _float32_pack(float val)
void build_tree_from_lengths(int vals, long *hist, long *lengths)
GLdouble GLdouble GLdouble b
static int ilog(unsigned int v)
char * get_line(FILE *in)