1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- module ezgcd; % Header module for ezgcd package.
- % Authors: A. C. Norman and P. M. A. Moore.
- create!-package('(ezgcd alphas coeffts ezgcdf facmisc facstr interfac
- linmodp mhensfns modpoly multihen unihens),
- '(factor));
- fluid '(!*trallfac !*trfac factor!-level factor!-trace!-list);
- factor!-level:=0; % start with a numeric value.
- symbolic procedure !*d2n a; if null a then 0 else a;
- symbolic procedure adjoin!-term (p,c,r);
- if null c then r else (p .* c) .+ r;
- symbolic smacro procedure ttab n; spaces(n-posn());
- symbolic smacro procedure polyzerop u; null u;
- symbolic smacro procedure didntgo q; null q;
- symbolic smacro procedure depends!-on!-var(a,v);
- (lambda !#!#a; (not domainp !#!#a) and (mvar !#!#a=v)) a;
- symbolic procedure errorf u;
- rerror(ezgcd,1,list("Factorizer error:",u));
- smacro procedure printstr l; << prin2!* l; terpri!*(nil) >>;
- smacro procedure printvar v; printstr v;
- smacro procedure prinvar v; prin2!* v;
- symbolic smacro procedure factor!-trace action;
- begin scalar stream;
- if !*trallfac or (!*trfac and factor!-level = 1)
- then stream := nil . nil
- else stream := assoc(factor!-level,factor!-trace!-list);
- if stream then <<stream := wrs cdr stream; action; wrs stream>>
- end;
-
- symbolic smacro procedure getm2(a,i,j);
- % Store by rows, to ease pivoting process.
- getv(getv(a,i),j);
- symbolic smacro procedure putm2(a,i,j,v);
- putv(getv(a,i),j,v);
- symbolic smacro procedure !*f2mod u; u;
- symbolic smacro procedure !*mod2f u; u;
- % A load of access smacros for image sets follow:
- symbolic smacro procedure get!-image!-set s; car s;
- symbolic smacro procedure get!-chosen!-prime s; cadr s;
- symbolic smacro procedure get!-image!-lc s; caddr s;
- symbolic smacro procedure get!-image!-mod!-p s; cadr cddr s;
- symbolic smacro procedure get!-image!-content s; cadr cdr cddr s;
- symbolic smacro procedure get!-image!-poly s; cadr cddr cddr s;
- symbolic smacro procedure get!-f!-numvec s; cadr cddr cdddr s;
- symbolic smacro procedure put!-image!-poly!-and!-content
- (s,imcont,impol);
- list(get!-image!-set s,
- get!-chosen!-prime s,
- get!-image!-lc s,
- get!-image!-mod!-p s,
- imcont,
- impol,
- get!-f!-numvec s);
- symbolic procedure printvec(str1,n,str2,v);
- << for i:=1:n do <<
- prin2!* str1;
- prin2!* i;
- prin2!* str2;
- printsf getv(v,i) >>;
- terpri!*(nil) >>;
- endmodule;
- end;
|