42 #define PROTO_INCREMENT 32
43 #define CONFIG_INCREMENT 16
121 for (Bit = Class->
NumProtos; Bit < NewNumProtos; Bit++)
127 tprintf(
"Ouch! number of protos = %d, vs max of %d!",
146 for (Pid = 0; Pid < Class->
NumProtos; Pid++) {
149 TotalLength += (
ProtoIn (Class, Pid))->Length;
152 return (TotalLength);
167 for (Pid = 0; Pid < Class->
NumProtos; Pid++) {
168 TotalLength += (
ProtoIn (Class, Pid))->Length;
170 return (TotalLength);
199 FLOAT32 Slope, Intercept, Normalizer;
201 Slope = tan (Proto->
Angle * 2.0 *
PI);
202 Intercept = Proto->
Y - Slope * Proto->
X;
203 Normalizer = 1.0 / sqrt (Slope * Slope + 1.0);
204 Proto->
A = Slope * Normalizer;
205 Proto->
B = -Normalizer;
206 Proto->
C = Intercept * Normalizer;
276 for (Pid = 0; Pid < Class->
NumProtos; Pid++) {
298 cprintf (
"Reading training data from '%s' ...",
305 sscanf(TextLine,
"%s", unichar);
324 Class = &TrainingData[unichar_id];
344 fscanf (File,
"%d %d\n", &NumConfigs, &NumWords);
351 for (Cid = 0; Cid < NumConfigs; Cid++) {
354 for (Wid = 0; Wid < NumWords; Wid++)
355 fscanf (File,
"%x", &ThisConfig[Wid]);
369 register PROTO Proto;
372 fscanf (File,
"%d\n", &NumProtos);
377 for (Pid = 0; Pid < NumProtos; Pid++) {
379 fscanf (File,
"%f %f %f %f %f %f %f\n",
385 &Proto->
B, &Proto->
C);
431 for (Cid = 0; Cid < Class->
NumConfigs; Cid++) {
432 fprintf (File,
"1 ");
436 for (Pid = 0; Pid < Class->
NumProtos; Pid++) {
442 fprintf (File,
"\n");
462 fprintf (File,
"6\n");
463 fprintf (File,
"linear essential -0.500000 0.500000\n");
464 fprintf (File,
"linear essential -0.250000 0.750000\n");
465 fprintf (File,
"linear essential 0.000000 1.000000\n");
466 fprintf (File,
"circular essential 0.000000 1.000000\n");
467 fprintf (File,
"linear non-essential -0.500000 0.500000\n");
468 fprintf (File,
"linear non-essential -0.500000 0.500000\n");
470 for (Pid = 0; Pid < Class->
NumProtos; Pid++) {
473 fprintf (File,
"significant elliptical 1\n");
474 fprintf (File,
" %9.6f %9.6f %9.6f %9.6f %9.6f %9.6f\n",
477 fprintf (File,
" %9.6f %9.6f %9.6f %9.6f %9.6f %9.6f\n",
478 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001);
#define reset_bit(array, bit)
char * classify_training_file
int SplitProto(CLASS_TYPE Class, int OldPid)
void ReadProtos(register FILE *File, CLASS_TYPE Class)
const UNICHAR_ID unichar_to_id(const char *const unichar_repr) const
void CopyProto(PROTO Src, PROTO Dest)
void * Erealloc(void *ptr, size_t size)
void memfree(void *element)
FILE * open_file(const char *filename, const char *mode)
void ReadConfigs(register FILE *File, CLASS_TYPE Class)
#define zero_all_bits(array, length)
#define STRING_VAR(name, val, comment)
#define WordsInVectorOfSize(NumBits)
#define PrintProtoLine(Proto)
#define test_bit(array, bit)
void WriteOldConfigFile(FILE *File, CLASS_TYPE Class)
#define ProtoIn(Class, Pid)
void FreeClass(CLASS_TYPE Class)
void FreeBitVector(BIT_VECTOR BitVector)
#define NUMBER_OF_CLASSES
void PrintProtos(CLASS_TYPE Class)
void WriteOldProtoFile(FILE *File, CLASS_TYPE Class)
int AddProtoToClass(CLASS_TYPE Class)
int AddConfigToClass(CLASS_TYPE Class)
#define PrintProto(Proto)
DLLSYM void tprintf(const char *format,...)
void * Emalloc(size_t Size)
BIT_VECTOR NewBitVector(int NumBits)
void FreeClassFields(CLASS_TYPE Class)
CLASS_TYPE NewClass(int NumProtos, int NumConfigs)
#define SET_BIT(array, bit)
FLOAT32 ClassConfigLength(CLASS_TYPE Class, BIT_VECTOR Config)
void FillABC(PROTO Proto)
CLASS_STRUCT TrainingData[NUMBER_OF_CLASSES]
void cprintf(const char *format,...)
void ReadClassFromFile(FILE *File, UNICHAR_ID unichar_id)
BIT_VECTOR ExpandBitVector(BIT_VECTOR Vector, int NewNumBits)
FLOAT32 ClassProtoLength(CLASS_TYPE Class)