(* ---------------------------------------------------------------------------- * $Id: GSYMINP.mi,v 1.1 1996/06/08 18:52:49 pesch Exp $ * ---------------------------------------------------------------------------- * Copyright (c) 1996 Universitaet Passau * ---------------------------------------------------------------------------- * This file is part of MAS. * ---------------------------------------------------------------------------- * $Log: GSYMINP.mi,v $ * Revision 1.1 1996/06/08 18:52:49 pesch * Input procedures for G-symmetric polynomials. * * ---------------------------------------------------------------------------- *) IMPLEMENTATION MODULE GSYMINP; (* GSYM Input Implementation Module. *) FROM DIPC IMPORT EVORD, IGRLEX, INVLEX, REVITDG, PLFDIL, REVILEX, VALIS; FROM DIPI IMPORT DIILRD, DIIPDF, DIIPEX, DIIPIP, DIIPNG, DIIPPR, DIIPSM, DIIPSO, DIIPWR; FROM DIPRN IMPORT DIRLRD, DIRLWR, DIRPPR, DIRPWR; FROM MASBIOS IMPORT BKSP, BLINES, CREADB, MASORD, SWRITE; FROM MASSTOR IMPORT COMP, FIRST, INV, LENGTH, LIST, LIST1, SIL; FROM SACPOL IMPORT VLREAD; CONST rcsidi = "$Id: GSYMINP.mi,v 1.1 1996/06/08 18:52:49 pesch Exp $"; CONST copyrighti = "Copyright (c) 1996 Universitaet Passau"; PROCEDURE GSDREAD(): LIST; (* G-symmetric descriptor read. --- to do ---: remove *) VAR P, T, V, E, Q, r, X: LIST; (* read polynomial descriptor *) BEGIN P:=SIL; (* i.e. variable list & term order *) REPEAT V:=VLREAD(); BLINES(1); UNTIL V <> SIL; VALIS:=V; REPEAT E:=CREADB(); BLINES(1); UNTIL (E = MASORD("(")) OR (E = MASORD("S")) OR (E = MASORD("L")) OR (E = MASORD("P")) OR (E = MASORD("G")); (* end of repeat *) IF E = MASORD("S") THEN EVORD:=REVILEX END; IF E = MASORD("L") THEN EVORD:=INVLEX END; IF E = MASORD("P") THEN EVORD:=REVITDG END; IF E = MASORD("G") THEN EVORD:=IGRLEX END; IF E = MASORD("(") THEN BKSP; T:=LIST1(LIST1(MASORD("T"))); X:=EVORD; EVORD:=INVLEX; P:=DIILRD(T); PLFDIL(P, r, Q); EVORD:=X; IF LENGTH(Q) = LENGTH(V) THEN EVORD:=INV(Q); ELSE SWRITE("Wrong number of polynomials."); BLINES(0); END; END; (* of if *) RETURN(COMP(V, LIST1(EVORD))) END GSDREAD; PROCEDURE GSPREAD(): LIST; (* G-symmetric polynomial read. --- to do ---: remove *) VAR P, V, X: LIST; BEGIN P:=SIL; X:=GSDREAD(); V:=FIRST(X); REPEAT SWRITE("Enter polynomial list: "); P:=DIILRD(V); BLINES(0); UNTIL P <> SIL; (* end of repeat *) RETURN(P) END GSPREAD; PROCEDURE GSRDREAD(): LIST; (* G-symmetric rational descriptor read. --- to do ---: remove *) VAR P, T, V, E, Q, r, X: LIST; (* read polynomial descriptor *) BEGIN P:=SIL; (* i.e. variable list & term order *) REPEAT V:=VLREAD(); BLINES(1); UNTIL V <> SIL; VALIS:=V; REPEAT E:=CREADB(); BLINES(1); UNTIL (E = MASORD("(")) OR (E = MASORD("S")) OR (E = MASORD("L")) OR (E = MASORD("P")) OR (E = MASORD("G")); (* end of repeat *) IF E = MASORD("S") THEN EVORD:=REVILEX END; IF E = MASORD("L") THEN EVORD:=INVLEX END; IF E = MASORD("P") THEN EVORD:=REVITDG END; IF E = MASORD("G") THEN EVORD:=IGRLEX END; IF E = MASORD("(") THEN BKSP; T:=LIST1(LIST1(MASORD("T"))); X:=EVORD; EVORD:=INVLEX; P:=DIRLRD(T); PLFDIL(P, r, Q); EVORD:=X; IF LENGTH(Q) = LENGTH(V) THEN EVORD:=INV(Q); ELSE SWRITE("Wrong number of polynomials."); BLINES(0); END; END; (* of if *) RETURN(COMP(V, LIST1(EVORD))) END GSRDREAD; PROCEDURE GSRREAD(): LIST; (* G-symmetric rational polynomial read. --- to do ---: remove *) VAR P, V, X: LIST; BEGIN P:=SIL; X:=GSRDREAD(); V:=FIRST(X); REPEAT SWRITE("Enter polynomial list: "); P:=DIRLRD(V); BLINES(0); UNTIL P <> SIL; (* end of repeat *) RETURN(P) END GSRREAD; END GSYMINP. (* -EOF- *)