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