1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <string.h>
4 #include "cgnames.h"
5 
print_identifier(char * name,int nexps,float * exps,void * user)6 static int print_identifier (char *name, int nexps, float *exps, void *user)
7 {
8     int n, i;
9     char term[16], num[33], den[33];
10     static char label[] = "MLT@a";
11 
12     if (nexps <= 0) {
13         puts (name);
14         return 0;
15     }
16     printf ("%-32s", name);
17     num[0] = den[0] = 0;
18     for (n = 0; n < nexps; n++) {
19         i = (int)exps[n];
20         if (i) {
21             if (abs(i) > 1)
22                 sprintf (term, "%c^%d", label[n], abs(i));
23             else
24                 sprintf (term, "%c", label[n]);
25             if (i < 0)
26                 strcat (den, term);
27             else
28                 strcat (num, term);
29         }
30     }
31     if (!num[0]) strcpy (num, "1");
32     printf ("%s", num);
33     if (den[0]) printf (" / %s", den);
34     putchar ('\n');
35     return 0;
36 }
37 
main()38 int main ()
39 {
40     cg_enum_identifier (print_identifier, NULL);
41     return 0;
42 }
43