VectorModularReconstructor¶
vecrec.spad line 8 [edit on github]
This domain supports modular methods based on evaluation and rational reconstruction. All computation are done on polynomials modulo machine sized prime p -- p must be chosen small enough to avoid overflow in intermediate calculations. Each evaluation is supposed to produce vector of values. Once enough evaluations are known rational reconstruction produces vector of rational functions or multivariate polynomials.
- add_slots: (List Integer, %) -> Void
add_slots(li)extend reconstructor adding zeros at positions inli.
- chinese_update: (U32Vector, Integer, %) -> Void
chinese_update(v, pt, r)informsrthat evaluation atptgave vector of valuesv
- rational_reconstruction: % -> Union(Record(numers: PrimitiveArray U32Vector, denoms: PrimitiveArray U32Vector), failed)
rational_reconstruction(r)reconstructs vector of rational functions based on information stored in reconstructor.
- rational_reconstruction: (U32Vector, U32Vector, Integer, Integer) -> Union(Record(numer: U32Vector, denom: U32Vector), failed)
rational_reconstruction(x, y, i, j)finds rational functionr/ssuch thatr/s = ymodulox,degre(r) <= i,degree(s) \leq j. Returns “failed” when suchr/sdoes not exist.
- reconstruct: (%, Integer, Vector Integer, Vector Integer, SortedExponentVector) -> Union(Record(nvars: Integer, offsetdata: Vector Integer, expdata: SortedExponentVector, coeffdata: U32Vector), failed)
reconstruct(r, n, bo, po, ev)reconstructs polynomials inn + 1variables using information stored inr.
- reconstruct: (Integer, Vector Integer, Vector Integer, SortedExponentVector, PrimitiveArray U32Vector, PrimitiveArray U32Vector, Integer) -> Record(nvars: Integer, offsetdata: Vector Integer, expdata: SortedExponentVector, coeffdata: U32Vector)
reconstruct(n, bo, po, ev, nums, dens, p)reconstructs polynomials inn+ 1 variables from result of rational reconstruction.
- remove_denoms: (Vector Integer, PrimitiveArray U32Vector, PrimitiveArray U32Vector, Integer) -> PrimitiveArray U32Vector
remove_denoms(offsets, nums, denoms, p)removes common denominator from vectors of rational functions. Several vectors of rational functions are packed intonums(storing numerators) and dens (storing denominators) Vectoristarts at positionoffsets(i). Computations are done modulop.
- repack_polys: (Integer, Vector Integer, SortedExponentVector, PrimitiveArray U32Vector) -> Record(nvars: Integer, offsetdata: Vector Integer, expdata: SortedExponentVector, coeffdata: U32Vector)
repack_polys(k, offsets, exponents, coefficients)converts polynomials represented as parallel vector ofexponentsinkvariables and vector of univariate polynomials to parallel vector ofexponentsink+1variables and coefficients.