(* ----------------------------------------------------------------------------
* $Id: MASLOADC.mi,v 1.3 1992/10/15 16:30:34 kredel Exp $
* ----------------------------------------------------------------------------
* This file is part of MAS.
* ----------------------------------------------------------------------------
* Copyright (c) 1989 - 1992 Universitaet Passau
* ----------------------------------------------------------------------------
* $Log: MASLOADC.mi,v $
* Revision 1.3 1992/10/15 16:30:34 kredel
* Changed rcsid variable
*
* Revision 1.2 1992/02/12 17:32:51 pesch
* Moved CONST definition to the right place
*
* Revision 1.1 1992/01/22 15:12:11 kredel
* Initial revision
*
* ----------------------------------------------------------------------------
*)
IMPLEMENTATION MODULE MASLOADC;
(* MAS Load Implementation Module C. *)
(* Import lists and declarations. *)
FROM MASSTOR IMPORT ADV, COMP, FIRST, RED, LIST, SIL, LIST1, INV, LENGTH;
FROM MASLISPU IMPORT Declare,
Compiledp0, Compiledp1, Compiledp2,
Compiledf0, Compiledf1, Compiledf2, Compiledf3,
Compiledp1v2,
Compiledp2v2;
FROM MASBIOS IMPORT BKSP, SWRITE, BLINES, MASORD, CREADB;
FROM SACLIST IMPORT CCONC, THIRD;
FROM SACPOL IMPORT VLREAD, VLWRIT;
FROM DIPC IMPORT VALIS, EVORD, INVLEX, IGRLEX,
PLFDIL, DILFPL;
FROM DIPI IMPORT DIILFR, DIILWR;
FROM DIPRN IMPORT DIRLRD, DIRLWR, DIRPPR, DIRPSM, DIRPNG;
FROM MASNC IMPORT DINPPR, DINLRD;
FROM MASNCGB IMPORT DINLNF, DINLIS, DINLSP,
DINLGB, DINCGB;
FROM MASNCC IMPORT EVLGTD, EVLGIL, DILFEL,
DINCCO, DINCCPpre, DINCCP,
DINLMPG, DINLMPL;
CONST rcsidi = "$Id: MASLOADC.mi,v 1.3 1992/10/15 16:30:34 kredel Exp $";
CONST copyrighti = "Copyright (c) 1989 - 1992 Universitaet Passau";
PROCEDURE InitExternalsC;
(*Initialize external compiled non-commutative polynomial procedures. *)
BEGIN
(*6*) (*from noncom polynomial system. *)
Compiledf1(npread,"NPREAD");
Compiledf0(ndread,"NDREAD");
Compiledf1(npreadd,"NPREADD");
Compiledf2(DINLRD,"DINLRD");
Compiledf3(DINPPR,"NPPROD");
Compiledf3(DINLSP,"LSPOL");
Compiledf3(DINLNF,"LNFORM");
Compiledf2(DINLIS,"LIRRSET");
Compiledf3(DINLGB,"LGBASE");
Compiledf3(DINCGB,"TSGBASE");
(*7*) (*from noncom commutator system. *)
Compiledf3(EVLGTD,"EVLGTD");
Compiledf1(EVLGIL,"EVLGIL");
Compiledf3(DINCCO,"DINCCO");
Compiledf2(DINCCP,"DINCCP");
Compiledf2(DILFEL,"DILFEL");
Compiledf2(DINCCPpre,"CenterPol");
Compiledf3(DINLMPG,"DINLMPG");
Compiledf2(DINLMPL,"DINLMPL");
(*9*) END InitExternalsC;
PROCEDURE ndread(): LIST;
(*read noncom polynom descriptor. *)
VAR P, V, X: LIST;
BEGIN P:=SIL;
(*1*) X:=pdread(); V:=FIRST(X);
(*3*) REPEAT P:=DIRLRD(V); BLINES(0);
UNTIL P <> SIL;
(*4*) P:=LIST1(P); P:=CCONC(X,P);
RETURN(P)
(*9*) END ndread;
PROCEDURE npread(T: LIST): LIST;
(*read noncom polynomial list, not including variable list and term order. *)
VAR P, V, E: LIST;
BEGIN P:=SIL; V:=VALIS;
(*1*) REPEAT SWRITE("Enter noncom polynomial list: "); BLINES(0);
P:=DINLRD(V,T); BLINES(1);
UNTIL P <> SIL;
RETURN(P)
(*3*) END npread;
PROCEDURE npreadd(X: LIST): LIST;
(*read noncom polynomial list, not including variable list and term order. *)
VAR T, P, V, E: LIST;
BEGIN P:=SIL; V:=FIRST(X); T:=THIRD(X);
(*1*) REPEAT BLINES(0);
P:=DINLRD(V,T); BLINES(1);
UNTIL P <> SIL;
RETURN(P)
(*3*) END npreadd;
PROCEDURE pdread(): LIST;
(*read polynomial descriptor, i.e. variable list and term order. *)
VAR P, T, V, E, Q, r, X: LIST;
BEGIN P:=SIL;
(*1*) REPEAT V:=VLREAD(); BLINES(1);
UNTIL V <> SIL;
VALIS:=V;
(*2*) REPEAT E:=CREADB(); BLINES(1);
UNTIL (E = MASORD("("))
OR (E = MASORD("L"))
OR (E = MASORD("G"));
IF E = MASORD("L") THEN EVORD:=INVLEX 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);
P:=DIILFR(P); (* falsch muss erst auf hauptnenner *)
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;
RETURN(COMP(V,LIST1(EVORD)))
(*3*) END pdread;
END MASLOADC.
(* -EOF- *)