xref: /plan9/sys/src/cmd/eqn/funny.c (revision 3e12c5d1bb89fc02707907988834ef147769ddaf)
1 #include "e.h"
2 #include "y.tab.h"
3 
4 extern int Funnyps;
5 extern double Funnyht, Funnybase;
6 
funny(int n)7 void funny(int n)
8 {
9 	char *f = 0;
10 
11 	yyval = salloc();
12 	switch (n) {
13 	case SUM:
14 		f = lookup(deftbl, "sum_def")->cval; break;
15 	case UNION:
16 		f = lookup(deftbl, "union_def")->cval; break;
17 	case INTER:	/* intersection */
18 		f = lookup(deftbl, "inter_def")->cval; break;
19 	case PROD:
20 		f = lookup(deftbl, "prod_def")->cval; break;
21 	default:
22 		ERROR "funny type %d in funny", n FATAL;
23 	}
24 	printf(".ds %d %s\n", yyval, f);
25 	eht[yyval] = EM(1.0, ps+Funnyps) - EM(Funnyht, ps);
26 	ebase[yyval] = EM(Funnybase, ps);
27 	dprintf(".\tS%d <- %s; h=%g b=%g\n",
28 		yyval, f, eht[yyval], ebase[yyval]);
29 	lfont[yyval] = rfont[yyval] = ROM;
30 }
31