1234567891011121314151617181920212223242526272829303132 |
- module dipprint; %/* printing routines for distributive polynomials*/
- % Authors: R. Gebauer, A. C. Hearn, H. Kredel
- symbolic procedure diplprint u;
- % Prints a list of distributive polynomials using dipprint
- for each v in u do dipprint v;
- symbolic procedure dipprint u;
- % Prints a distributive polynomial in infix form
- <<terpri(); dipprint1(u,nil); terpri(); terpri()>>;
- symbolic procedure dipprint1(u,v);
- % Prints a distributive polynomial in infix form.
- % U is a distributive form. V is a flag which is true if a term
- % has preceded current form
- if dipzero!? u then if null v then dipprin2 0 else nil
- else begin scalar bool,w;
- w := diplbc u;
- if bcminus!? w then <<bool := t; w := bcneg w>>;
- if bool then dipprin2 " - " else if v then dipprin2 " + ";
- (if not bcone!? w or evzero!? x then <<bcprin w; dipevlpri(x,t)>>
- else dipevlpri(x,nil))
- where x = dipevlmon u;
- dipprint1(dipmred u,t) end;
- symbolic procedure dipprin2 u;
- % Prints u, preceding by two EOL's if we have reached column 70
- <<if posn()>69 then <<terpri(); terpri()>>; prin2 u>>;
- endmodule;;end;
|