sqrt.c (1186B)
1 #include "e.h" 2 3 void sqrt(int p2) 4 { 5 static int af = 0; 6 int nps; /* point size for radical */ 7 double radscale = 0.95; 8 9 if (ttype == DEVPOST) 10 radscale = 1.05; 11 nps = ps * radscale * eht[p2] / EM(1.0,ps) + 0.99; /* kludgy */ 12 nps = max(EFFPS(nps), ps); 13 yyval = p2; 14 if (ttype == DEVCAT || ttype == DEVAPS) 15 eht[yyval] = EM(1.2, nps); 16 else if (ttype == DEVPOST) 17 eht[yyval] = EM(1.15, nps); 18 else /* DEV202, DEVPOST */ 19 eht[yyval] = EM(1.15, nps); 20 dprintf(".\tS%d <- sqrt S%d;b=%g, h=%g, nps=%d\n", 21 (int)yyval, p2, ebase[yyval], eht[yyval], nps); 22 printf(".as %d \\|\n", (int)yyval); 23 nrwid(p2, ps, p2); 24 if (af++ == 0) 25 printf(".af 10 01\n"); /* make it two digits when it prints */ 26 printf(".nr 10 %.3fu*\\n(.su/10\n", 9.2*eht[p2]); /* this nonsense */ 27 /* guesses point size corresponding to height of stuff */ 28 printf(".ds %d \\v'%gm'\\s(\\n(10", (int)yyval, REL(ebase[p2],ps)); 29 if (ttype == DEVCAT || ttype == DEVAPS) 30 printf("\\v'-.2m'\\(sr\\l'\\n(%du\\(rn'\\v'.2m'", p2); 31 else /* DEV202, DEVPOST so far */ 32 printf("\\(sr\\l'\\n(%du\\(rn'", p2); 33 printf("\\s0\\v'%gm'\\h'-\\n(%du'\\^\\*(%d\n", REL(-ebase[p2],ps), p2, p2); 34 lfont[yyval] = rfont[yyval] = ROM; 35 }