PSFRD(;A,V,n)
[PolynomialSequenceFile read. If data exists on a file,
that file will be opened and associated with unit
PSFIU. Value of IUNIT at entry will be restored at
exit.]
const PSFIU=13.
(1) [Check header.] C=CREADB(); if C~='(' then go to 5;
SAVIU=IUNIT; H=GTTKN();
while EQUAL(H,"FILENAME") do {
F=GTTKN(); OPENF(PSFIU, F);
IUNIT=PSFIU; H=GTTKN() };
if NOT EQUAL(H,"POLYNOMIALSEQUENCEFILEFEB387") then go to 5;
(2) [Coefficient domain.] D=GTTKN();
if EQUAL(D,"ALGEBRAICNUMBERFIELD") then ANRD(;M,J,W);
(3) [Initialize for nonconstant polynomial.] r=LENGTH(V);
V'=V; for i=1,...,r do ADV(V';W[i],V');
A'=A; b=1; U=RNINT(1).
(4) [Write next term.]
if A'==() then go to 5;
ADV2(A';c,d,A');
if n==1 then { s=RNSIGN(c); c=RNABS(c) }
else { s=ISIGNF(c); c=IABSF(c) };
if s<0 then CWRITE('-') else if b==0
then CWRITE('+'); CWRITE(' '); b=0;
if n==1&RNCOMP(c,U)~=0 then
{ RNWRIT(c); CWRITE(' ') }
else if n==0&c~=1 then { IWRITE(c); CWRITE(' ') };
z=1; d=CINV(d);
while d~=() do { z=0; ADV2(d;e,j,d); CLOUT(W[j]);
if e>1 then { CLOUT("**"); AWRITE(e) }; CWRITE(' ') };
if z==1&((n==1&RNCOMP(c,U)==0)
|(n==0&c==1)) then
{ AWRITE(1); CWRITE(' ') }; go to 4.
(5) [Error exit.] IUNIT=SAVIU; return..