class SET_POLYI_PRIM
****
__
Expand
_
DPolyM
_
in
_
Zp[x]
_
to
_
PolyM
_
in
_
Z[x]
_
with
_
PolyM|PolyN
__
with
_
simple
_
try&error.
1. Make value sa if substitute integer [-PolyN.degree/4..PolyN.degree/4]
___
_
to
_
expected
_
factor.
2. And construct the factor.
Flattened version is
here
Public
Readonly Shareds
shared DpolyMs:POLYS_INTI;
shared PolyF:POLYS_INTI;
****
factor
shared PolyN:POLYS_INTI;
****
shared TblS:ARRAY{INTI};
****
work table
shared V0,V1,V1nS:ARRAY{INTI};
shared V0,V1,V1nS:ARRAY{INTI};
shared V0,V1,V1nS:ARRAY{INTI};
Writable Shareds
shared DpolyMs:POLYS_INTI;
shared PolyF:POLYS_INTI;
****
factor
shared PolyN:POLYS_INTI;
****
shared TblS:ARRAY{INTI};
****
work table
shared V0,V1,V1nS:ARRAY{INTI};
shared V0,V1,V1nS:ARRAY{INTI};
shared V0,V1,V1nS:ARRAY{INTI};
Features
setPolyR(degD:CARD,prime:INTI, out polyF:POLYS_INTI):BOOL
****
TRUE if Set set polynomial PolyF[] from TblS[]
__
From
_
dPolyM
_
in
_
Zp[x],
_
recover
_
polyF
_
in
_
Z[x].
local var: dv,dt,at, deg,diff,i, tbl0, tbl2
setPolyRPrimitive(prime:INTI, inout PolyNx, DpolyM:POLYS_INTI, out factor:POLYS_INTI):BOOL
setV0Tbl(degD:CARD)
****
make table PolyN.
Elements are non-zero,
because PolyN has no factor (x-a) in this range
setV1Tbl(degD:CARD)
****
make table DpolyMs
setVal(ite,degD:CARD, prime:INTI):BOOL
****
"true" if ffind a factor.
__
Note
_
that
_
change
_
PolyN
_
and
_
PolyM.
The Sather Home Page