Monday, June 20, 2022

[sgcjpfvv] field extension of a field extension of a field extension of the field of rationals

a field is a thing which acts like the rational numbers: addition, subtraction, multiplication, and division work, along with their normal properties: associativity, commutativity, distributive law, undefinedness of division by zero.  the rational numbers and the real numbers are two common fields.

UPDATE: most of the following is incorrect.  constructing a field extension requires an irreducible polynomial, not just any polynomial.  often, determining whether a polynomial factors over a base field is nontrivial.

starting with a base field, one can create a new field, a "field extension", by choosing a polynomial, any polynomial, as a reduction polynomial.  the coefficients of the polynomial come from the base field.  the elements of the field extension are all the polynomials modulo the reduction polynomial.  then, this new field can serve as a base field to construct another field extension, repeatable as many times as you wish.  we demonstrate this below.

popular base fields from which to start are real numbers, rationals, or finite fields of size p where p is a prime number.  incidentally, the field of complex numbers is the real numbers extended with the polynomial z^2+1.  the p-adic numbers are another possibility for the base field, but I don't understand them.

something special happens if the reduction polynomial factors over the field of its coefficients, but I don't understand what.  if the base field is the complex numbers, then by the fundamental theorem of algebra, all polynomials completely factor into linear terms.

UPDATE: the special thing that happens when the reduction polynomial factors is that the resulting "field extension" is not actually a field: there will exist nonzero elements that don't have reciprocals.  here is an explicit example.  a polynomial which does not factor over the base field is called irreducible.  without the constraint that the reduction polynomial be irreducible, what we are constructing are commutative rings.  (previously on ring theory: I'm pretty sure we are not constructing integral domains.)  also, because of the fundamental theorem of algebra, our construction can never produce a field extension of the complex numbers.  in fact, no "finite-dimensional" field extension of the complex numbers is possible.  if we start with the base field of rational numbers, I think this gloriously hierarchical construction of fields upon fields upon fields remains possible, but it requires finding an irreducible polynomial for each lower field, which I don't know how to do.  the Pari/GP function polisirreducible looks promising, but in the construction below, polisirreducible(m3) yields the error message "polisirreducible: sorry, factor for general polynomials is not yet implemented.".

with lots of flexibility in constructing fields (upon fields), there are definitely a vast infinitude of them.  everyone can have their one of their own.  previously: everyone can have their own entire function, their own subset of the integers (future post ipwyvyeh), their own slice of the sky.  having your own number field seems bigger than all of these.

what overlaps are there, fields which look different but are actually the same (in some way that needs to be defined)?  all finite fields of size p^n (field extensions of the base field integers mod p) are isomorphic: the reduction polynomial in a sense doesn't matter.  (but I don't understand why this is true.)

it's a little surprising that fields are so easy to construct.  (UPDATE: they are not so easy to construct, because one needs an irreducible polynomial.)  compared to, say, groups, fields have to satisfy more axioms, so you would think fields would be hard to construct.  maybe there are lots of overlaps, as there are mentioned above with finite field extensions, so maybe it's hard to construct a unique field different from everybody else's.

fields act like the real numbers, but it is possible to define an analogue of the integers in the field (keep adding one to itself), and then one can do some subset of number theory with those integers.  what subset depends on the field in a way I don't understand: ring theory.

under what conditions can one do some analogue of calculus in a field?

some fields are more interesting than others.  in what ways?  what are some techniques to construct interesting fields?

we demonstrate the recursive construction of fields in Pari/GP.  we start with the field of rational numbers and extend 3 times.

we need to tell Pari/GP which polynomial variables are outside of which:

? y=varhigher("y",'x);
? z=varhigher("z",'y);

this function creates a random polynomial in the variable "x" of degree n-1 with coefficients selected between -9 and 9.  even though coefficients can be any rational, we start with integer coefficients to initially keep things simple.  fractions will naturally show up in coefficients when we try division.

? xpoly(n)=my(s=List()); for(i=0,n-1, listput(s,random(19)-9)); Pol(Vec(s),x);

this function creates a random monic polynomial of degree n (coefficient of x^n term is 1).  the reduction polynomial does not have to be monic, but if it is, then fractions won't show up when doing multiplication.

? getmod1(n)=x^n + xpoly(n);

the magic begins.  this function creates a random polynomial of degree n-1 in the variable "y", with coefficients which are themselves the random polynomials in "x" constructed above.  the second argument "m" is the reduction polynomial in "x".

? ypoly(n,m)=my(s=List()); my(mmax=poldegree(m)); for(i=0,n-1, listput(s,Mod(xpoly(mmax),m))); Pol(Vec(s),y);

this function creates a monic random polynomial in "y".

? getmod2(n,m)=Mod(1,m)*y^n + ypoly(n,m);

and repeat a third time, creating a random and monic random polynomial in the variable "z", with coefficients which are random polynomials in "y" constructed above.  m1 is the reduction polynomial in "x"; m2 is the reduction polynomial in "y".

? zpoly(n,m1,m2)=my(s=List()); my(mmax=poldegree(m2)); for(i=0,n-1, listput(s,Mod(ypoly(mmax,m1),m2))); Pol(Vec(s),z);
? getmod3(n,m1,m2)=Mod(1,m2)*z^n + zpoly(n,m1,m2);

we construct a random monic cubic polynomial in "x" to be the reduction polynomial for the field of polynomials in "x".

? onesize=3;
? m1=getmod1(onesize)
x^3 + 4*x^2 + 2*x + 9

we construct a random monic quartic polynomial in "y" to be the reduction polynomial for the field of polynomials in "y".

? twosize=4;
? m2=getmod2(twosize,m1)
Mod(1, x^3 + 4*x^2 + 2*x + 9)*y^4 + Mod(8*x^2 + 8*x + 9, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(2*x^2 - 6*x - 8, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-2*x^2 + 5*x, x^3 + 4*x^2 + 2*x + 9)*y + Mod(-2*x^2 - 9*x - 5, x^3 + 4*x^2 + 2*x + 9)

we construct a random monic quintic polynomial in "z" to be the reduction polynomial for the field of polynomials in "z".

? threesize=5;
? m3=getmod3(threesize,m1,m2)
Mod(1, Mod(1, x^3 + 4*x^2 + 2*x + 9)*y^4 + Mod(8*x^2 + 8*x + 9, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(2*x^2 - 6*x - 8, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-2*x^2 + 5*x, x^3 + 4*x^2 + 2*x + 9)*y + Mod(-2*x^2 - 9*x - 5, x^3 + 4*x^2 + 2*x + 9))*z^5 + Mod(Mod(3*x^2 + 5*x + 8, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(x^2 - 8*x + 9, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(5*x^2 + 8*x + 7, x^3 + 4*x^2 + 2*x + 9)*y + Mod(7*x^2 - 9*x - 8, x^3 + 4*x^2 + 2*x + 9), Mod(1, x^3 + 4*x^2 + 2*x + 9)*y^4 + Mod(8*x^2 + 8*x + 9, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(2*x^2 - 6*x - 8, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-2*x^2 + 5*x, x^3 + 4*x^2 + 2*x + 9)*y + Mod(-2*x^2 - 9*x - 5, x^3 + 4*x^2 + 2*x + 9))*z^4 + Mod(Mod(2*x^2 - 9*x + 9, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(-5*x^2 + 9*x - 6, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-x^2 - 9*x + 9, x^3 + 4*x^2 + 2*x + 9)*y + Mod(x^2 + 8*x + 2, x^3 + 4*x^2 + 2*x + 9), Mod(1, x^3 + 4*x^2 + 2*x + 9)*y^4 + Mod(8*x^2 + 8*x + 9, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(2*x^2 - 6*x - 8, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-2*x^2 + 5*x, x^3 + 4*x^2 + 2*x + 9)*y + Mod(-2*x^2 - 9*x - 5, x^3 + 4*x^2 + 2*x + 9))*z^3 + Mod(Mod(-9*x^2 - x + 8, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(-4*x^2 + 2*x - 6, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-9*x^2 - 2*x - 3, x^3 + 4*x^2 + 2*x + 9)*y + Mod(-x^2 + 8*x + 1, x^3 + 4*x^2 + 2*x + 9), Mod(1, x^3 + 4*x^2 + 2*x + 9)*y^4 + Mod(8*x^2 + 8*x + 9, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(2*x^2 - 6*x - 8, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-2*x^2 + 5*x, x^3 + 4*x^2 + 2*x + 9)*y + Mod(-2*x^2 - 9*x - 5, x^3 + 4*x^2 + 2*x + 9))*z^2 + Mod(Mod(-9*x^2 - 2*x + 6, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(6*x^2 - 5*x - 1, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(8*x^2 + 9, x^3 + 4*x^2 + 2*x + 9)*y + Mod(2*x^2 + 5*x - 1, x^3 + 4*x^2 + 2*x + 9), Mod(1, x^3 + 4*x^2 + 2*x + 9)*y^4 + Mod(8*x^2 + 8*x + 9, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(2*x^2 - 6*x - 8, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-2*x^2 + 5*x, x^3 + 4*x^2 + 2*x + 9)*y + Mod(-2*x^2 - 9*x - 5, x^3 + 4*x^2 + 2*x + 9))*z + Mod(Mod(6*x^2 + 7*x - 8, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(4*x^2 - x - 1, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(6*x^2 + x + 4, x^3 + 4*x^2 + 2*x + 9)*y + Mod(3*x^2 + 8, x^3 + 4*x^2 + 2*x + 9), Mod(1, x^3 + 4*x^2 + 2*x + 9)*y^4 + Mod(8*x^2 + 8*x + 9, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(2*x^2 - 6*x - 8, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-2*x^2 + 5*x, x^3 + 4*x^2 + 2*x + 9)*y + Mod(-2*x^2 - 9*x - 5, x^3 + 4*x^2 + 2*x + 9))

next we pick two random polynomials in "z" to do arithmetic.

? r1=Mod(zpoly(twosize,m1,m2),m3)
Mod(Mod(Mod(-5*x^2 - 6*x - 5, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(-5*x^2 - 2*x - 2, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-x^2 - 6*x - 5, x^3 + 4*x^2 + 2*x + 9)*y + Mod(-5*x^2 + 6*x, x^3 + 4*x^2 + 2*x + 9), Mod(1, x^3 + 4*x^2 + 2*x + 9)*y^4 + Mod(8*x^2 + 8*x + 9, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(2*x^2 - 6*x - 8, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-2*x^2 + 5*x, x^3 + 4*x^2 + 2*x + 9)*y + Mod(-2*x^2 - 9*x - 5, x^3 + 4*x^2 + 2*x + 9))*z^3 + Mod(Mod(8*x^2 + 8*x + 1, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(-x^2 + 9*x - 9, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(9*x^2 - 4*x - 5, x^3 + 4*x^2 + 2*x + 9)*y + Mod(8*x^2 + 5*x + 8, x^3 + 4*x^2 + 2*x + 9), Mod(1, x^3 + 4*x^2 + 2*x + 9)*y^4 + Mod(8*x^2 + 8*x + 9, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(2*x^2 - 6*x - 8, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-2*x^2 + 5*x, x^3 + 4*x^2 + 2*x + 9)*y + Mod(-2*x^2 - 9*x - 5, x^3 + 4*x^2 + 2*x + 9))*z^2 + Mod(Mod(5*x^2 - 8*x + 5, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(8*x^2 + 5*x + 2, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-4*x^2 - 3*x - 2, x^3 + 4*x^2 + 2*x + 9)*y + Mod(x + 6, x^3 + 4*x^2 + 2*x + 9), Mod(1, x^3 + 4*x^2 + 2*x + 9)*y^4 + Mod(8*x^2 + 8*x + 9, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(2*x^2 - 6*x - 8, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-2*x^2 + 5*x, x^3 + 4*x^2 + 2*x + 9)*y + Mod(-2*x^2 - 9*x - 5, x^3 + 4*x^2 + 2*x + 9))*z + Mod(Mod(3*x^2 + 4*x + 4, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(2*x^2 - 7*x + 7, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(4*x^2 - 8*x - 4, x^3 + 4*x^2 + 2*x + 9)*y + Mod(-x^2 + 2*x - 4, x^3 + 4*x^2 + 2*x + 9), Mod(1, x^3 + 4*x^2 + 2*x + 9)*y^4 + Mod(8*x^2 + 8*x + 9, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(2*x^2 - 6*x - 8, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-2*x^2 + 5*x, x^3 + 4*x^2 + 2*x + 9)*y + Mod(-2*x^2 - 9*x - 5, x^3 + 4*x^2 + 2*x + 9)), Mod(1, Mod(1, x^3 + 4*x^2 + 2*x + 9)*y^4 + Mod(8*x^2 + 8*x + 9, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(2*x^2 - 6*x - 8, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-2*x^2 + 5*x, x^3 + 4*x^2 + 2*x + 9)*y + Mod(-2*x^2 - 9*x - 5, x^3 + 4*x^2 + 2*x + 9))*z^5 + Mod(Mod(3*x^2 + 5*x + 8, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(x^2 - 8*x + 9, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(5*x^2 + 8*x + 7, x^3 + 4*x^2 + 2*x + 9)*y + Mod(7*x^2 - 9*x - 8, x^3 + 4*x^2 + 2*x + 9), Mod(1, x^3 + 4*x^2 + 2*x + 9)*y^4 + Mod(8*x^2 + 8*x + 9, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(2*x^2 - 6*x - 8, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-2*x^2 + 5*x, x^3 + 4*x^2 + 2*x + 9)*y + Mod(-2*x^2 - 9*x - 5, x^3 + 4*x^2 + 2*x + 9))*z^4 + Mod(Mod(2*x^2 - 9*x + 9, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(-5*x^2 + 9*x - 6, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-x^2 - 9*x + 9, x^3 + 4*x^2 + 2*x + 9)*y + Mod(x^2 + 8*x + 2, x^3 + 4*x^2 + 2*x + 9), Mod(1, x^3 + 4*x^2 + 2*x + 9)*y^4 + Mod(8*x^2 + 8*x + 9, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(2*x^2 - 6*x - 8, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-2*x^2 + 5*x, x^3 + 4*x^2 + 2*x + 9)*y + Mod(-2*x^2 - 9*x - 5, x^3 + 4*x^2 + 2*x + 9))*z^3 + Mod(Mod(-9*x^2 - x + 8, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(-4*x^2 + 2*x - 6, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-9*x^2 - 2*x - 3, x^3 + 4*x^2 + 2*x + 9)*y + Mod(-x^2 + 8*x + 1, x^3 + 4*x^2 + 2*x + 9), Mod(1, x^3 + 4*x^2 + 2*x + 9)*y^4 + Mod(8*x^2 + 8*x + 9, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(2*x^2 - 6*x - 8, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-2*x^2 + 5*x, x^3 + 4*x^2 + 2*x + 9)*y + Mod(-2*x^2 - 9*x - 5, x^3 + 4*x^2 + 2*x + 9))*z^2 + Mod(Mod(-9*x^2 - 2*x + 6, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(6*x^2 - 5*x - 1, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(8*x^2 + 9, x^3 + 4*x^2 + 2*x + 9)*y + Mod(2*x^2 + 5*x - 1, x^3 + 4*x^2 + 2*x + 9), Mod(1, x^3 + 4*x^2 + 2*x + 9)*y^4 + Mod(8*x^2 + 8*x + 9, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(2*x^2 - 6*x - 8, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-2*x^2 + 5*x, x^3 + 4*x^2 + 2*x + 9)*y + Mod(-2*x^2 - 9*x - 5, x^3 + 4*x^2 + 2*x + 9))*z + Mod(Mod(6*x^2 + 7*x - 8, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(4*x^2 - x - 1, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(6*x^2 + x + 4, x^3 + 4*x^2 + 2*x + 9)*y + Mod(3*x^2 + 8, x^3 + 4*x^2 + 2*x + 9), Mod(1, x^3 + 4*x^2 + 2*x + 9)*y^4 + Mod(8*x^2 + 8*x + 9, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(2*x^2 - 6*x - 8, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-2*x^2 + 5*x, x^3 + 4*x^2 + 2*x + 9)*y + Mod(-2*x^2 - 9*x - 5, x^3 + 4*x^2 + 2*x + 9)))

? r2=Mod(zpoly(twosize,m1,m2),m3)
Mod(Mod(Mod(2*x + 4, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(4*x^2 - 9*x - 9, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(9*x^2 - x - 3, x^3 + 4*x^2 + 2*x + 9)*y + Mod(-4*x^2 + 2*x + 8, x^3 + 4*x^2 + 2*x + 9), Mod(1, x^3 + 4*x^2 + 2*x + 9)*y^4 + Mod(8*x^2 + 8*x + 9, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(2*x^2 - 6*x - 8, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-2*x^2 + 5*x, x^3 + 4*x^2 + 2*x + 9)*y + Mod(-2*x^2 - 9*x - 5, x^3 + 4*x^2 + 2*x + 9))*z^3 + Mod(Mod(6*x^2 - 6*x + 5, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(2*x^2 - 7*x - 8, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(9*x^2 + 7*x, x^3 + 4*x^2 + 2*x + 9)*y + Mod(-2*x^2 - x - 6, x^3 + 4*x^2 + 2*x + 9), Mod(1, x^3 + 4*x^2 + 2*x + 9)*y^4 + Mod(8*x^2 + 8*x + 9, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(2*x^2 - 6*x - 8, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-2*x^2 + 5*x, x^3 + 4*x^2 + 2*x + 9)*y + Mod(-2*x^2 - 9*x - 5, x^3 + 4*x^2 + 2*x + 9))*z^2 + Mod(Mod(6*x^2 + 8*x + 1, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(-2*x^2 + 7*x - 3, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(2*x^2 - 4*x + 6, x^3 + 4*x^2 + 2*x + 9)*y + Mod(-2*x^2 - 7*x - 1, x^3 + 4*x^2 + 2*x + 9), Mod(1, x^3 + 4*x^2 + 2*x + 9)*y^4 + Mod(8*x^2 + 8*x + 9, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(2*x^2 - 6*x - 8, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-2*x^2 + 5*x, x^3 + 4*x^2 + 2*x + 9)*y + Mod(-2*x^2 - 9*x - 5, x^3 + 4*x^2 + 2*x + 9))*z + Mod(Mod(-5*x^2 - 4*x + 3, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(5*x^2 + 5*x - 2, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-3*x^2 + 9*x + 1, x^3 + 4*x^2 + 2*x + 9)*y + Mod(-3*x^2 + 7*x, x^3 + 4*x^2 + 2*x + 9), Mod(1, x^3 + 4*x^2 + 2*x + 9)*y^4 + Mod(8*x^2 + 8*x + 9, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(2*x^2 - 6*x - 8, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-2*x^2 + 5*x, x^3 + 4*x^2 + 2*x + 9)*y + Mod(-2*x^2 - 9*x - 5, x^3 + 4*x^2 + 2*x + 9)), Mod(1, Mod(1, x^3 + 4*x^2 + 2*x + 9)*y^4 + Mod(8*x^2 + 8*x + 9, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(2*x^2 - 6*x - 8, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-2*x^2 + 5*x, x^3 + 4*x^2 + 2*x + 9)*y + Mod(-2*x^2 - 9*x - 5, x^3 + 4*x^2 + 2*x + 9))*z^5 + Mod(Mod(3*x^2 + 5*x + 8, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(x^2 - 8*x + 9, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(5*x^2 + 8*x + 7, x^3 + 4*x^2 + 2*x + 9)*y + Mod(7*x^2 - 9*x - 8, x^3 + 4*x^2 + 2*x + 9), Mod(1, x^3 + 4*x^2 + 2*x + 9)*y^4 + Mod(8*x^2 + 8*x + 9, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(2*x^2 - 6*x - 8, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-2*x^2 + 5*x, x^3 + 4*x^2 + 2*x + 9)*y + Mod(-2*x^2 - 9*x - 5, x^3 + 4*x^2 + 2*x + 9))*z^4 + Mod(Mod(2*x^2 - 9*x + 9, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(-5*x^2 + 9*x - 6, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-x^2 - 9*x + 9, x^3 + 4*x^2 + 2*x + 9)*y + Mod(x^2 + 8*x + 2, x^3 + 4*x^2 + 2*x + 9), Mod(1, x^3 + 4*x^2 + 2*x + 9)*y^4 + Mod(8*x^2 + 8*x + 9, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(2*x^2 - 6*x - 8, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-2*x^2 + 5*x, x^3 + 4*x^2 + 2*x + 9)*y + Mod(-2*x^2 - 9*x - 5, x^3 + 4*x^2 + 2*x + 9))*z^3 + Mod(Mod(-9*x^2 - x + 8, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(-4*x^2 + 2*x - 6, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-9*x^2 - 2*x - 3, x^3 + 4*x^2 + 2*x + 9)*y + Mod(-x^2 + 8*x + 1, x^3 + 4*x^2 + 2*x + 9), Mod(1, x^3 + 4*x^2 + 2*x + 9)*y^4 + Mod(8*x^2 + 8*x + 9, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(2*x^2 - 6*x - 8, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-2*x^2 + 5*x, x^3 + 4*x^2 + 2*x + 9)*y + Mod(-2*x^2 - 9*x - 5, x^3 + 4*x^2 + 2*x + 9))*z^2 + Mod(Mod(-9*x^2 - 2*x + 6, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(6*x^2 - 5*x - 1, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(8*x^2 + 9, x^3 + 4*x^2 + 2*x + 9)*y + Mod(2*x^2 + 5*x - 1, x^3 + 4*x^2 + 2*x + 9), Mod(1, x^3 + 4*x^2 + 2*x + 9)*y^4 + Mod(8*x^2 + 8*x + 9, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(2*x^2 - 6*x - 8, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-2*x^2 + 5*x, x^3 + 4*x^2 + 2*x + 9)*y + Mod(-2*x^2 - 9*x - 5, x^3 + 4*x^2 + 2*x + 9))*z + Mod(Mod(6*x^2 + 7*x - 8, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(4*x^2 - x - 1, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(6*x^2 + x + 4, x^3 + 4*x^2 + 2*x + 9)*y + Mod(3*x^2 + 8, x^3 + 4*x^2 + 2*x + 9), Mod(1, x^3 + 4*x^2 + 2*x + 9)*y^4 + Mod(8*x^2 + 8*x + 9, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(2*x^2 - 6*x - 8, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-2*x^2 + 5*x, x^3 + 4*x^2 + 2*x + 9)*y + Mod(-2*x^2 - 9*x - 5, x^3 + 4*x^2 + 2*x + 9)))

here is the product.  Pari/GP automatically computes polynomial division and remainder to reduce products of polynomials by the reduction polynomials.

? product=r1*r2
Mod(Mod(Mod(-42275535498922442099655*x^2 + 2292990558153737295406*x - 93847403138001063597491, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(-19524288108000283627290*x^2 + 1058981520398668091781*x - 43341940344347874204407, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(20875500836647903604149*x^2 - 1132270174098385401674*x + 46341495651696929935245, x^3 + 4*x^2 + 2*x + 9)*y + Mod(544383857977375274674*x^2 - 29526895183765484952*x + 1208476931528623956049, x^3 + 4*x^2 + 2*x + 9), Mod(1, x^3 + 4*x^2 + 2*x + 9)*y^4 + Mod(8*x^2 + 8*x + 9, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(2*x^2 - 6*x - 8, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-2*x^2 + 5*x, x^3 + 4*x^2 + 2*x + 9)*y + Mod(-2*x^2 - 9*x - 5, x^3 + 4*x^2 + 2*x + 9))*z^4 + Mod(Mod(-92090346391619002365609*x^2 + 4994905256266838228959*x - 204431233655047219653444, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(-42530471485938223585937*x^2 + 2306818000441874063193*x - 94413335219476375889120, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(45473867614031714359758*x^2 - 2466465453507091139345*x + 100947376240832771636948, x^3 + 4*x^2 + 2*x + 9)*y + Mod(1185851247245738197825*x^2 - 64319631056487773887*x + 2632469676472831095732, x^3 + 4*x^2 + 2*x + 9), Mod(1, x^3 + 4*x^2 + 2*x + 9)*y^4 + Mod(8*x^2 + 8*x + 9, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(2*x^2 - 6*x - 8, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-2*x^2 + 5*x, x^3 + 4*x^2 + 2*x + 9)*y + Mod(-2*x^2 - 9*x - 5, x^3 + 4*x^2 + 2*x + 9))*z^3 + Mod(Mod(156505417609288760886301*x^2 - 8488726416794692960126*x + 347426161707879034315955, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(72279554356831335861229*x^2 - 3920384096807496492177*x + 160453283794980346566608, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-77281788157528951483733*x^2 + 4191701136493885686014*x - 171557735601681513556952, x^3 + 4*x^2 + 2*x + 9)*y + Mod(-2015326816658715981604*x^2 + 109309824709039732418*x - 4473821064237411479121, x^3 + 4*x^2 + 2*x + 9), Mod(1, x^3 + 4*x^2 + 2*x + 9)*y^4 + Mod(8*x^2 + 8*x + 9, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(2*x^2 - 6*x - 8, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-2*x^2 + 5*x, x^3 + 4*x^2 + 2*x + 9)*y + Mod(-2*x^2 - 9*x - 5, x^3 + 4*x^2 + 2*x + 9))*z^2 + Mod(Mod(156226513634432685276510*x^2 - 8473598879138314986830*x + 346807023124112695698305, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(72150746957050881838741*x^2 - 3913397710443806626772*x + 160167344402058329344331, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-77144066415870078545696*x^2 + 4184231236088318213448*x - 171252007290227294175498, x^3 + 4*x^2 + 2*x + 9)*y + Mod(-2011735363979356549968*x^2 + 109115004174675286227*x - 4465848391530289261617, x^3 + 4*x^2 + 2*x + 9), Mod(1, x^3 + 4*x^2 + 2*x + 9)*y^4 + Mod(8*x^2 + 8*x + 9, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(2*x^2 - 6*x - 8, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-2*x^2 + 5*x, x^3 + 4*x^2 + 2*x + 9)*y + Mod(-2*x^2 - 9*x - 5, x^3 + 4*x^2 + 2*x + 9))*z + Mod(Mod(-71347009230404103561784*x^2 + 3869803752090711013555*x - 158383127761049605872977, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(-32950488923764941753119*x^2 + 1787207721954809824620*x - 73146745363975008448930, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(35230885528222825528183*x^2 - 1910894511185582410674*x + 78208994563851198262561, x^3 + 4*x^2 + 2*x + 9)*y + Mod(918738430111787991486*x^2 - 49831698523981637296*x + 2039505978384278828555, x^3 + 4*x^2 + 2*x + 9), Mod(1, x^3 + 4*x^2 + 2*x + 9)*y^4 + Mod(8*x^2 + 8*x + 9, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(2*x^2 - 6*x - 8, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-2*x^2 + 5*x, x^3 + 4*x^2 + 2*x + 9)*y + Mod(-2*x^2 - 9*x - 5, x^3 + 4*x^2 + 2*x + 9)), Mod(1, Mod(1, x^3 + 4*x^2 + 2*x + 9)*y^4 + Mod(8*x^2 + 8*x + 9, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(2*x^2 - 6*x - 8, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-2*x^2 + 5*x, x^3 + 4*x^2 + 2*x + 9)*y + Mod(-2*x^2 - 9*x - 5, x^3 + 4*x^2 + 2*x + 9))*z^5 + Mod(Mod(3*x^2 + 5*x + 8, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(x^2 - 8*x + 9, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(5*x^2 + 8*x + 7, x^3 + 4*x^2 + 2*x + 9)*y + Mod(7*x^2 - 9*x - 8, x^3 + 4*x^2 + 2*x + 9), Mod(1, x^3 + 4*x^2 + 2*x + 9)*y^4 + Mod(8*x^2 + 8*x + 9, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(2*x^2 - 6*x - 8, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-2*x^2 + 5*x, x^3 + 4*x^2 + 2*x + 9)*y + Mod(-2*x^2 - 9*x - 5, x^3 + 4*x^2 + 2*x + 9))*z^4 + Mod(Mod(2*x^2 - 9*x + 9, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(-5*x^2 + 9*x - 6, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-x^2 - 9*x + 9, x^3 + 4*x^2 + 2*x + 9)*y + Mod(x^2 + 8*x + 2, x^3 + 4*x^2 + 2*x + 9), Mod(1, x^3 + 4*x^2 + 2*x + 9)*y^4 + Mod(8*x^2 + 8*x + 9, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(2*x^2 - 6*x - 8, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-2*x^2 + 5*x, x^3 + 4*x^2 + 2*x + 9)*y + Mod(-2*x^2 - 9*x - 5, x^3 + 4*x^2 + 2*x + 9))*z^3 + Mod(Mod(-9*x^2 - x + 8, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(-4*x^2 + 2*x - 6, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-9*x^2 - 2*x - 3, x^3 + 4*x^2 + 2*x + 9)*y + Mod(-x^2 + 8*x + 1, x^3 + 4*x^2 + 2*x + 9), Mod(1, x^3 + 4*x^2 + 2*x + 9)*y^4 + Mod(8*x^2 + 8*x + 9, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(2*x^2 - 6*x - 8, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-2*x^2 + 5*x, x^3 + 4*x^2 + 2*x + 9)*y + Mod(-2*x^2 - 9*x - 5, x^3 + 4*x^2 + 2*x + 9))*z^2 + Mod(Mod(-9*x^2 - 2*x + 6, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(6*x^2 - 5*x - 1, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(8*x^2 + 9, x^3 + 4*x^2 + 2*x + 9)*y + Mod(2*x^2 + 5*x - 1, x^3 + 4*x^2 + 2*x + 9), Mod(1, x^3 + 4*x^2 + 2*x + 9)*y^4 + Mod(8*x^2 + 8*x + 9, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(2*x^2 - 6*x - 8, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-2*x^2 + 5*x, x^3 + 4*x^2 + 2*x + 9)*y + Mod(-2*x^2 - 9*x - 5, x^3 + 4*x^2 + 2*x + 9))*z + Mod(Mod(6*x^2 + 7*x - 8, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(4*x^2 - x - 1, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(6*x^2 + x + 4, x^3 + 4*x^2 + 2*x + 9)*y + Mod(3*x^2 + 8, x^3 + 4*x^2 + 2*x + 9), Mod(1, x^3 + 4*x^2 + 2*x + 9)*y^4 + Mod(8*x^2 + 8*x + 9, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(2*x^2 - 6*x - 8, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-2*x^2 + 5*x, x^3 + 4*x^2 + 2*x + 9)*y + Mod(-2*x^2 - 9*x - 5, x^3 + 4*x^2 + 2*x + 9)))

internally, Pari/GP stores these objects as type POLMOD.

? type(product)
"t_POLMOD"

the magic, the hard part, happens in division.  we first check that division works.

? (product/r1)==r2
1

here is the reciprocal of r1.

? r1recip=1/r1
Mod(Mod(Mod(134202707714379365581103908842462812542851953283132991425500350923591895820697334075070141649585952234352909534546823524217543625363949332839885098160689021090593088840173841222761187232216538377407146192323566898250501281904030956611523440136788211195099112547/4142140753785339668022016445297818595244732062598646726500646177014966913794783466279595279785080518003804262641463522329202029236703194745340489668249979344404324459184730125445270690164549526871129608532591184314686659962005289462914167069556715346320303302616290*x^2 + 250062760221943228767271882901289297434073782885440034440178764216134064800434645815890354210608877646242882399093794556253209593792684882396646443398685704477114687837664361841207148841037799254012538011442068256514810156852584981047676280657642320495268711628/2071070376892669834011008222648909297622366031299323363250323088507483456897391733139797639892540259001902131320731761164601014618351597372670244834124989672202162229592365062722635345082274763435564804266295592157343329981002644731457083534778357673160151651308145*x - 162043850219557108138451542485649707294263039833540637488713985345383761176809031046445613612643208240726018882378743172339885452274149312702911537957271122982361152632876038181461790394526623842224114652493065880920820040511031889232374009094135292522166280697/4142140753785339668022016445297818595244732062598646726500646177014966913794783466279595279785080518003804262641463522329202029236703194745340489668249979344404324459184730125445270690164549526871129608532591184314686659962005289462914167069556715346320303302616290, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(-134422849011532993913963367253267098913751994796612897824827378224915584760725720652920074578352398349314039818140930822630213532369711236097314227502924886414137495581992576987102600841143606959200257352156061327221239904795215015279928596718571369391841928759/414214075378533966802201644529781859524473206259864672650064617701496691379478346627959527978508051800380426264146352232920202923670319474534048966824997934440432445918473012544527069016454952687112960853259118431468665996200528946291416706955671534632030330261629*x^2 - 1614331579887702731260445913085585476075795733216089262845799941515587858601758174762470456491734293196169846093738535613343096858418056681283035589110759395259229206175320737236739428372463931122939413347977287226187747646027798133385854530880112760617990762545/828428150757067933604403289059563719048946412519729345300129235402993382758956693255919055957016103600760852528292704465840405847340638949068097933649995868880864891836946025089054138032909905374225921706518236862937331992401057892582833413911343069264060660523258*x - 1775553012634455569186411654477944439510169091372767458107701677001223993472908515781195007116078232903225971562402973847423145040545513393439975569868895998573734896298039859562127572429081921935539609506362045514161890744124659703604745842364183332510331749547/828428150757067933604403289059563719048946412519729345300129235402993382758956693255919055957016103600760852528292704465840405847340638949068097933649995868880864891836946025089054138032909905374225921706518236862937331992401057892582833413911343069264060660523258, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-469681651770696444234681989472692407624753330368467926757469468955590919279721848826438157747715672569579759902413811139574340465129498389317524726385790626328590414585706322111013618466583228748302011983594322707645746913847234242662668372367939515958632869833/828428150757067933604403289059563719048946412519729345300129235402993382758956693255919055957016103600760852528292704465840405847340638949068097933649995868880864891836946025089054138032909905374225921706518236862937331992401057892582833413911343069264060660523258*x^2 - 677237277327916719418934851527683390116908149290698817150870971053806661179241003886606195918820294698640960013721619114872071655850342537248067854054295744100750343364776830951075461311562217293013974555949677813583100506190386720874404491199386857318408917935/414214075378533966802201644529781859524473206259864672650064617701496691379478346627959527978508051800380426264146352232920202923670319474534048966824997934440432445918473012544527069016454952687112960853259118431468665996200528946291416706955671534632030330261629*x + 2417848931981469446651899449116128012868887037376745126044072716151334551024820139878492871755063574397456337213022282463969817196523562442214202340862248058517597944430882240074953767508237715076517444837995087089197384976894522657693333595525908285023732945999/828428150757067933604403289059563719048946412519729345300129235402993382758956693255919055957016103600760852528292704465840405847340638949068097933649995868880864891836946025089054138032909905374225921706518236862937331992401057892582833413911343069264060660523258, x^3 + 4*x^2 + 2*x + 9)*y + Mod(476818196185182063655477536912014545807001743460616285503276705118671428179181564412394441609684554592335229009371453805900784564698211315307656763128343625800897943949786624750845722842745147882864717923061286567690712989272999711673161304380750663252298578677/1380713584595113222674005481765939531748244020866215575500215392338322304598261155426531759928360172667934754213821174109734009745567731581780163222749993114801441486394910041815090230054849842290376536177530394771562219987335096487638055689852238448773434434205430*x^2 + 939093988247281689877907623017874239223673835842275388828636717979636282212798857569252969123222703244926633236412349671704606110069385650373565365636767375930124647914459808033085023404614948379130631831858094734797952845730524631624002058374331512279643545393/690356792297556611337002740882969765874122010433107787750107696169161152299130577713265879964180086333967377106910587054867004872783865790890081611374996557400720743197455020907545115027424921145188268088765197385781109993667548243819027844926119224386717217102715*x - 536470383871403892749673704467144824640451506199807660570833439597627460489332864695166287362634681641312337250082604772662519945113087699807895678104612836149435796374975781425680533932164035178094710182895985145837930167612135206670097746636171274144343777457/1380713584595113222674005481765939531748244020866215575500215392338322304598261155426531759928360172667934754213821174109734009745567731581780163222749993114801441486394910041815090230054849842290376536177530394771562219987335096487638055689852238448773434434205430, x^3 + 4*x^2 + 2*x + 9), Mod(1, x^3 + 4*x^2 + 2*x + 9)*y^4 + Mod(8*x^2 + 8*x + 9, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(2*x^2 - 6*x - 8, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-2*x^2 + 5*x, x^3 + 4*x^2 + 2*x + 9)*y + Mod(-2*x^2 - 9*x - 5, x^3 + 4*x^2 + 2*x + 9))*z^4 + Mod(Mod(-1245554377643364840110518915445238267363011341069981575321845193766116180097420586679157167109207465798787648558755927053551426658676750431548710090176742442062815344287266899741503154704054852771670575558973090025802007665996439648186520237996131811718503779711/1380713584595113222674005481765939531748244020866215575500215392338322304598261155426531759928360172667934754213821174109734009745567731581780163222749993114801441486394910041815090230054849842290376536177530394771562219987335096487638055689852238448773434434205430*x^2 - 4073265741585527306692879087055499103115026368639852590228499374025886303522456202442594822302900511533893084194793862216645741133336778903527214568077792525261928880021791085908242269080559967034422513987383780434983888658913897679097211293362409558059925348573/1380713584595113222674005481765939531748244020866215575500215392338322304598261155426531759928360172667934754213821174109734009745567731581780163222749993114801441486394910041815090230054849842290376536177530394771562219987335096487638055689852238448773434434205430*x + 2379042142162866959240947914983502509686871719798977405738216466510764701172161387673183675311722196607241728300841038139116655172011704271548684932141525752656405508003894967116752218868831507892485679380284047945321414502947866791920954552049913865752558713173/690356792297556611337002740882969765874122010433107787750107696169161152299130577713265879964180086333967377106910587054867004872783865790890081611374996557400720743197455020907545115027424921145188268088765197385781109993667548243819027844926119224386717217102715, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(15131211115555374434719999466842688974866653425297287312757277124093673462200218214998537403852409174555969271593076945235895311949883490038061181023042772135163971215004336806013840145309472176805071490698384080031657136904200816423238377337867004343639231661537/828428150757067933604403289059563719048946412519729345300129235402993382758956693255919055957016103600760852528292704465840405847340638949068097933649995868880864891836946025089054138032909905374225921706518236862937331992401057892582833413911343069264060660523258*x^2 + 29592503256367783245600100829460700960377042087147984542877005876342889980701695809680399111298693899087305067836867552827621570008222556897555093343759125447749370768456037804035917579587493706348901477609991980198832527643579025966177198915930173925683608669335/414214075378533966802201644529781859524473206259864672650064617701496691379478346627959527978508051800380426264146352232920202923670319474534048966824997934440432445918473012544527069016454952687112960853259118431468665996200528946291416706955671534632030330261629*x + 43081883686584264702421773704213097638559722136088885726891951017594316815442303444913639922722267161361489646165711286049139667417966175693986402018883847803155741108003269092184373482619637677734231122617058537723969099134113892815899396452724428762893211138997/828428150757067933604403289059563719048946412519729345300129235402993382758956693255919055957016103600760852528292704465840405847340638949068097933649995868880864891836946025089054138032909905374225921706518236862937331992401057892582833413911343069264060660523258, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(12020889561240865655631076457796602805092158825121135888509827641880335082355633736405293758295398090877933126890900218543924775366270766341907463339126018651225270016376306387571601778069450941648077164559572010932305375332378831350210788455252521606734903569693/828428150757067933604403289059563719048946412519729345300129235402993382758956693255919055957016103600760852528292704465840405847340638949068097933649995868880864891836946025089054138032909905374225921706518236862937331992401057892582833413911343069264060660523258*x^2 + 14818832946231373264836239979922049637925253340301960139537739382486547927440504831394216821954338136819743739250517855642829190775529464335438038974375332291035423236022919812872893059675407874804327957004537150579380985400235197619108064659895260627269433918973/828428150757067933604403289059563719048946412519729345300129235402993382758956693255919055957016103600760852528292704465840405847340638949068097933649995868880864891836946025089054138032909905374225921706518236862937331992401057892582833413911343069264060660523258*x - 55265999395294946662657736922121402258255758748067770126988882998934479848661201310074574776174095136306517927060384409439778688287542410940603433684277121803686553562218503547523543499498843526003267269660232498274730563393913301929446844049287931130217456840164/414214075378533966802201644529781859524473206259864672650064617701496691379478346627959527978508051800380426264146352232920202923670319474534048966824997934440432445918473012544527069016454952687112960853259118431468665996200528946291416706955671534632030330261629, x^3 + 4*x^2 + 2*x + 9)*y + Mod(-63058278070159454573120860727035573042220859302175735542527146750216208205276639789662688129278721437209837064055564910376764925386111754782382158856523113490065280632895495351870812405177375805835773943129649920259114186280478878497571856735198717005252058707089/4142140753785339668022016445297818595244732062598646726500646177014966913794783466279595279785080518003804262641463522329202029236703194745340489668249979344404324459184730125445270690164549526871129608532591184314686659962005289462914167069556715346320303302616290*x^2 - 195955114681597055775568971992268372747854045832156675384825179686579762229737311491310752647483278961466186330132384995972189896272161575242683380943539271517713673858185770095032232750952090808506787488898620635443883250916550191189523421527187994249014477766927/4142140753785339668022016445297818595244732062598646726500646177014966913794783466279595279785080518003804262641463522329202029236703194745340489668249979344404324459184730125445270690164549526871129608532591184314686659962005289462914167069556715346320303302616290*x + 53626566318553431060768977246110855724238925590834900023054117891200319991865807554776486956198321309696398472927329033887391033397646954763935102151082916322976090454366109320190827721350630233828574467353141520188163546388437056294028087114695456518852144862107/2071070376892669834011008222648909297622366031299323363250323088507483456897391733139797639892540259001902131320731761164601014618351597372670244834124989672202162229592365062722635345082274763435564804266295592157343329981002644731457083534778357673160151651308145, x^3 + 4*x^2 + 2*x + 9), Mod(1, x^3 + 4*x^2 + 2*x + 9)*y^4 + Mod(8*x^2 + 8*x + 9, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(2*x^2 - 6*x - 8, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-2*x^2 + 5*x, x^3 + 4*x^2 + 2*x + 9)*y + Mod(-2*x^2 - 9*x - 5, x^3 + 4*x^2 + 2*x + 9))*z^3 + Mod(Mod(947991457733658069923992550973430424557548338050714861343240573914118115694783823087756661922787254313510084227997910008053283287407656539686225038505608131969307056092948649774647323646277489457985688078019800691042590938120622631664419157290099406545729708293/1380713584595113222674005481765939531748244020866215575500215392338322304598261155426531759928360172667934754213821174109734009745567731581780163222749993114801441486394910041815090230054849842290376536177530394771562219987335096487638055689852238448773434434205430*x^2 + 1471272310773031477131403796421411203903869596107460430418250988674866913809626398926281532176664315074496405768807226048817577436340693166448264393993680271551343893117327933827692817349954438407421497837490213530262486564397079722744174246635089980792474539987/690356792297556611337002740882969765874122010433107787750107696169161152299130577713265879964180086333967377106910587054867004872783865790890081611374996557400720743197455020907545115027424921145188268088765197385781109993667548243819027844926119224386717217102715*x - 2832426555665875872796117030757752196957229204840727165014358321339785525907186641019821157962484283654380830740581514515977873186831655370663706927632145325600924704426216525087044149072644368389210561682757663206891314879141561243408950104865374454417293045203/1380713584595113222674005481765939531748244020866215575500215392338322304598261155426531759928360172667934754213821174109734009745567731581780163222749993114801441486394910041815090230054849842290376536177530394771562219987335096487638055689852238448773434434205430, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(-2742077969874418629957692825249383200022228240319129435553102861165686609749152210040159402010319349775420074581686493925339726688264449316723091523164882540231424554930915831486201670935572117170914990380708891600562103904912200273502501051568156568471305168512/414214075378533966802201644529781859524473206259864672650064617701496691379478346627959527978508051800380426264146352232920202923670319474534048966824997934440432445918473012544527069016454952687112960853259118431468665996200528946291416706955671534632030330261629*x^2 - 40280001885126808910253767488864288092724521980722255126106050695418505494114862543407854110146331708347585340646208659730130273296269392558294364889893562885956124346571114352808651594536009179377218924894712341755389034963074803302705030237909563076197351002357/828428150757067933604403289059563719048946412519729345300129235402993382758956693255919055957016103600760852528292704465840405847340638949068097933649995868880864891836946025089054138032909905374225921706518236862937331992401057892582833413911343069264060660523258*x - 20102395391961799889123643781966691412128109528162712795196294644337521003886632886224090567049001312309220310929189691819256069865108602418638669092019317523360963428118854721693663720319904342615473750431614234422545614141285757818594587520410487216769889394681/828428150757067933604403289059563719048946412519729345300129235402993382758956693255919055957016103600760852528292704465840405847340638949068097933649995868880864891836946025089054138032909905374225921706518236862937331992401057892582833413911343069264060660523258, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-3685610675183460314223496998088903992387573022988851676522115725771897345287791178922311327963394218944149250403439753949017485403112034515999718574180815439775164222713584281061101063781345526768839278978866721560881102117326608495530255378834810609137401792469/828428150757067933604403289059563719048946412519729345300129235402993382758956693255919055957016103600760852528292704465840405847340638949068097933649995868880864891836946025089054138032909905374225921706518236862937331992401057892582833413911343069264060660523258*x^2 - 663704758791441705982551840011794735657430365072034822768510666804371316530456204302619870681597666210289405907675664458669097553354123269031967630687619520929878760714945915858347208455063417004453568089523338022512635390221887339528787742390281899650714205867/414214075378533966802201644529781859524473206259864672650064617701496691379478346627959527978508051800380426264146352232920202923670319474534048966824997934440432445918473012544527069016454952687112960853259118431468665996200528946291416706955671534632030330261629*x + 69457370132846054577757608120391419926252387676761422748708887474245254138603907647159187893173635352974787359600173718138146494929477332873433000603457360550342877598033302633322933169633094894597584445872133787790852006627926173266755546362416286984858308766395/828428150757067933604403289059563719048946412519729345300129235402993382758956693255919055957016103600760852528292704465840405847340638949068097933649995868880864891836946025089054138032909905374225921706518236862937331992401057892582833413911343069264060660523258, x^3 + 4*x^2 + 2*x + 9)*y + Mod(34672375766413458114639736597920438586280099505593302257769238844103433365651022826116628823123158780250291203265702959012163914237669433950200731183106975050162728181706860461045620058846269782623587225986400434081870319042808969887186092112394687611675907202807/4142140753785339668022016445297818595244732062598646726500646177014966913794783466279595279785080518003804262641463522329202029236703194745340489668249979344404324459184730125445270690164549526871129608532591184314686659962005289462914167069556715346320303302616290*x^2 + 55502805574996056330444217056256370082420906862720006592795006428963710258014567202697908962878662434955396195525266106575343977489132389406626608409019055448831745242112247209086836846815115402811820662740985853303874591850727542640963601785880971202201944975513/2071070376892669834011008222648909297622366031299323363250323088507483456897391733139797639892540259001902131320731761164601014618351597372670244834124989672202162229592365062722635345082274763435564804266295592157343329981002644731457083534778357673160151651308145*x - 248780357670477538858779820170491050308408272362752154384644150665935407985432621564661792453564715071843129962913622056188971535011957946526508232550111055914591951853702955942447969556638449869451238050209280261932518354829867817702337735499498940941399193603607/4142140753785339668022016445297818595244732062598646726500646177014966913794783466279595279785080518003804262641463522329202029236703194745340489668249979344404324459184730125445270690164549526871129608532591184314686659962005289462914167069556715346320303302616290, x^3 + 4*x^2 + 2*x + 9), Mod(1, x^3 + 4*x^2 + 2*x + 9)*y^4 + Mod(8*x^2 + 8*x + 9, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(2*x^2 - 6*x - 8, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-2*x^2 + 5*x, x^3 + 4*x^2 + 2*x + 9)*y + Mod(-2*x^2 - 9*x - 5, x^3 + 4*x^2 + 2*x + 9))*z^2 + Mod(Mod(137733710989341576440514635063468727850576821091829535729441837609076395350417759912374583176852029711731020402830986512428692919303139158660271987646076809349602895582028834716921515089288805138999761000137907470479764829940127031296470653326943013119911800803/828428150757067933604403289059563719048946412519729345300129235402993382758956693255919055957016103600760852528292704465840405847340638949068097933649995868880864891836946025089054138032909905374225921706518236862937331992401057892582833413911343069264060660523258*x^2 + 90812164555028274666806566252731214724131481897051048974471627010072694028692282937434450232441359132903076252154965396989812893334025832329332794258465892983995832439201099153191622760239396438522478502772771816176623482457740615352296524207151735961106191347/828428150757067933604403289059563719048946412519729345300129235402993382758956693255919055957016103600760852528292704465840405847340638949068097933649995868880864891836946025089054138032909905374225921706518236862937331992401057892582833413911343069264060660523258*x - 1017918918070819069456751812548624984072629966246159096967522062605261936060243215179671788603965724070835803964569562329443833328905120245946237138350974360953865060573795769305352915987815358126262956456918614497546125869480909607291962795698659555561941663838/414214075378533966802201644529781859524473206259864672650064617701496691379478346627959527978508051800380426264146352232920202923670319474534048966824997934440432445918473012544527069016454952687112960853259118431468665996200528946291416706955671534632030330261629, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(-6271425976441498330630720435935759094266933566205873393011724366828023466721896539709600017165609562712884779165383597923199238335846684094247220030235007735024084110798483451081840171168478712354962840822390358714230119504669717878413275811811473890171185152117/828428150757067933604403289059563719048946412519729345300129235402993382758956693255919055957016103600760852528292704465840405847340638949068097933649995868880864891836946025089054138032909905374225921706518236862937331992401057892582833413911343069264060660523258*x^2 - 10252417449725478535895644978224891693982381162035138714188950261420981902239728457420913924829552640450812263457658905059236530193388193149372854447271390972040657144167223399592437974412970601445262582710145326336214175323897244942470314808472163988726291591792/414214075378533966802201644529781859524473206259864672650064617701496691379478346627959527978508051800380426264146352232920202923670319474534048966824997934440432445918473012544527069016454952687112960853259118431468665996200528946291416706955671534632030330261629*x + 4823943854979316638536062981108204853439840698169393048275170752066037630551387612589106376853074001047667525282879202995888917332069538422797300466314773356376170182526599469177476165159992391428139688091937156251347426001130872855507144277430481878938925864245/828428150757067933604403289059563719048946412519729345300129235402993382758956693255919055957016103600760852528292704465840405847340638949068097933649995868880864891836946025089054138032909905374225921706518236862937331992401057892582833413911343069264060660523258, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(1345232116525120824363087771647729110910971901822844828928853763019199248407163692941281312206724757777467294666223140403574122618409193674381969168193468976358514104115878789821851384858399605907382514325228989356342964427107887768135809841507271300484037204431/828428150757067933604403289059563719048946412519729345300129235402993382758956693255919055957016103600760852528292704465840405847340638949068097933649995868880864891836946025089054138032909905374225921706518236862937331992401057892582833413911343069264060660523258*x^2 + 16318513204000757001904545637112845388200309457155038296044152843126303552991756553420223620430177833021912198626044130197145839102387324475517944592502998784052569926788248848950280546268685089250481766537249502831104054227450085819920416227353175218422447208521/828428150757067933604403289059563719048946412519729345300129235402993382758956693255919055957016103600760852528292704465840405847340638949068097933649995868880864891836946025089054138032909905374225921706518236862937331992401057892582833413911343069264060660523258*x + 19254527303434807108719402759675761227266920604682804740587082546450353736310449801195756829477645757552616656397790217050425365311371138206355505506252879803496690229701354859686154387318866232801039386554325111639566699088151941980179643234087967644439497132173/414214075378533966802201644529781859524473206259864672650064617701496691379478346627959527978508051800380426264146352232920202923670319474534048966824997934440432445918473012544527069016454952687112960853259118431468665996200528946291416706955671534632030330261629, x^3 + 4*x^2 + 2*x + 9)*y + Mod(184494387656080929120707119754047645588556945950176051553078280272941663127706860316352801803208296780203726460842853340065263589257987041420538992692387796144259183701711664631474567126689839382254451345793542799627843869707438811625608053512559216561170029585/828428150757067933604403289059563719048946412519729345300129235402993382758956693255919055957016103600760852528292704465840405847340638949068097933649995868880864891836946025089054138032909905374225921706518236862937331992401057892582833413911343069264060660523258*x^2 - 10177425641435014508121842471446229655889273429132047003367275829462079278464317909349778290372499680687223491640707922220821901105541810497837955588505572947341050911310123377717370747920233070923174009907112150527062969224143659097401630851126565137675068103215/828428150757067933604403289059563719048946412519729345300129235402993382758956693255919055957016103600760852528292704465840405847340638949068097933649995868880864891836946025089054138032909905374225921706518236862937331992401057892582833413911343069264060660523258*x - 18426363257142322406300582316983757473327174073484353811170249277729758247877176201970729082765406016081472507233108231546378710399922626050749268599155516659034408306298921009508138592530857664272597939041575914027200302621365622156582728613079575889963630118630/414214075378533966802201644529781859524473206259864672650064617701496691379478346627959527978508051800380426264146352232920202923670319474534048966824997934440432445918473012544527069016454952687112960853259118431468665996200528946291416706955671534632030330261629, x^3 + 4*x^2 + 2*x + 9), Mod(1, x^3 + 4*x^2 + 2*x + 9)*y^4 + Mod(8*x^2 + 8*x + 9, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(2*x^2 - 6*x - 8, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-2*x^2 + 5*x, x^3 + 4*x^2 + 2*x + 9)*y + Mod(-2*x^2 - 9*x - 5, x^3 + 4*x^2 + 2*x + 9))*z + Mod(Mod(-698268000384102019395763551199019477074424525520107801689638439676083986113422830600950410533724771560067485507871947073607162680030326330924805151730108928803099482655533554384435800381803723399600776070543149494950627333646334160656501676563415861984286946541/4142140753785339668022016445297818595244732062598646726500646177014966913794783466279595279785080518003804262641463522329202029236703194745340489668249979344404324459184730125445270690164549526871129608532591184314686659962005289462914167069556715346320303302616290*x^2 - 461468343332129856294069373901433473205227127334554286338148147458894579325087881089247340818206112557230353528929072805670811652614412722139167328826722179424139338498822347271054458214819629777689948897433992686794045475955039481352110393439420418305456471289/2071070376892669834011008222648909297622366031299323363250323088507483456897391733139797639892540259001902131320731761164601014618351597372670244834124989672202162229592365062722635345082274763435564804266295592157343329981002644731457083534778357673160151651308145*x + 6761486018050361577056451538704121100431835000666430609119660958878519760703074527708978586807101376871857418426647582596564522995714597909241989857183108629703590384381506952016603323045769155726898753412605763556392185629214959150323970287272981486184516114481/4142140753785339668022016445297818595244732062598646726500646177014966913794783466279595279785080518003804262641463522329202029236703194745340489668249979344404324459184730125445270690164549526871129608532591184314686659962005289462914167069556715346320303302616290, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(152879896542353290266025453899898721864999116056359821328387356056511456185807639417997019232790653012151259913185097193146719376422312427519120699016604434393768519549437434667748453458709077892194543743539604551168714184557646560422890905800937330834377139189/46023786153170440755800182725531317724941467362207185850007179744610743486608705180884391997612005755597825140460705803657800324852257719392672107424999770493381382879830334727169674335161661409679217872584346492385407332911169882921268522995074614959114481140181*x^2 + 1655119301489062360318094910221345373574649661559527963926278399470166040612552607286253733533847171428127233238280786762045811509226638210132206018018237110714071668842270938861112562779788153966544939341825495269092036849326298259656147534930480809833711181541/92047572306340881511600365451062635449882934724414371700014359489221486973217410361768783995224011511195650280921411607315600649704515438785344214849999540986762765759660669454339348670323322819358435745168692984770814665822339765842537045990149229918228962280362*x - 643417500912183050086160145801683635187844866796463047790548749893748143529260954660391684264186786739060729342901468938391692424827559249846000057461380689860542147861798886671391208695407388710685031788063553538977182335653849918769232697839489128868562129771/92047572306340881511600365451062635449882934724414371700014359489221486973217410361768783995224011511195650280921411607315600649704515438785344214849999540986762765759660669454339348670323322819358435745168692984770814665822339765842537045990149229918228962280362, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-680542780573546604746861704412312695632623665127349326970023703339241534584166145358476759574441428293221415336966426652494043840084085937581177832558066867495885187790210787100871670232223202666244691411738007158128357531167318940413502673756404237711648802221/276142716919022644534801096353187906349648804173243115100043078467664460919652231085306351985672034533586950842764234821946801949113546316356032644549998622960288297278982008363018046010969968458075307235506078954312443997467019297527611137970447689754686886841086*x^2 - 1834118398923834757739138314092110671181234795292238098496848280948180092232814975954867333704009309205012437377407904937015741749061323302554471667390402385624516686308115155529955713650636023876540806241297477895923723719153922724551913946088704853296386450856/138071358459511322267400548176593953174824402086621557550021539233832230459826115542653175992836017266793475421382117410973400974556773158178016322274999311480144148639491004181509023005484984229037653617753039477156221998733509648763805568985223844877343443420543*x - 3305486330795782629553159702459054544146030683831468984045535871171318527941694090086200497196421763523116139814815117776296140766060239712295129522210910036651785205151301191470963166376016561252659127090179387014807847864336179717357371004549214780170791669873/276142716919022644534801096353187906349648804173243115100043078467664460919652231085306351985672034533586950842764234821946801949113546316356032644549998622960288297278982008363018046010969968458075307235506078954312443997467019297527611137970447689754686886841086, x^3 + 4*x^2 + 2*x + 9)*y + Mod(10449404429263305978270192717829481799378622697960803501816759366298822178613460161302736946613000890401698075589075468733954141284215119218560350854147887323068199070714092895644924496544537510677875912081217042838797858322125395624823709728736229898441727531837/4142140753785339668022016445297818595244732062598646726500646177014966913794783466279595279785080518003804262641463522329202029236703194745340489668249979344404324459184730125445270690164549526871129608532591184314686659962005289462914167069556715346320303302616290*x^2 + 39099085294410887579072647520316543180327784226965961733600258672588758000371546274288127617699174953422263032360375678308093100379352971587407932727001246384992440482875736244204687796205798792621109839561801602149053630579113628167227358435231426122687822445518/2071070376892669834011008222648909297622366031299323363250323088507483456897391733139797639892540259001902131320731761164601014618351597372670244834124989672202162229592365062722635345082274763435564804266295592157343329981002644731457083534778357673160151651308145*x + 198696167830789816946324344663142568928542828605677525689565374599471011422151479353711924874716110696215768125175098423047296296399002835721934453598090805025759971148746604971817570887050110584456715754765820620130358535225673879262073049888683453227807659149153/4142140753785339668022016445297818595244732062598646726500646177014966913794783466279595279785080518003804262641463522329202029236703194745340489668249979344404324459184730125445270690164549526871129608532591184314686659962005289462914167069556715346320303302616290, x^3 + 4*x^2 + 2*x + 9), Mod(1, x^3 + 4*x^2 + 2*x + 9)*y^4 + Mod(8*x^2 + 8*x + 9, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(2*x^2 - 6*x - 8, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-2*x^2 + 5*x, x^3 + 4*x^2 + 2*x + 9)*y + Mod(-2*x^2 - 9*x - 5, x^3 + 4*x^2 + 2*x + 9)), Mod(1, Mod(1, x^3 + 4*x^2 + 2*x + 9)*y^4 + Mod(8*x^2 + 8*x + 9, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(2*x^2 - 6*x - 8, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-2*x^2 + 5*x, x^3 + 4*x^2 + 2*x + 9)*y + Mod(-2*x^2 - 9*x - 5, x^3 + 4*x^2 + 2*x + 9))*z^5 + Mod(Mod(3*x^2 + 5*x + 8, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(x^2 - 8*x + 9, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(5*x^2 + 8*x + 7, x^3 + 4*x^2 + 2*x + 9)*y + Mod(7*x^2 - 9*x - 8, x^3 + 4*x^2 + 2*x + 9), Mod(1, x^3 + 4*x^2 + 2*x + 9)*y^4 + Mod(8*x^2 + 8*x + 9, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(2*x^2 - 6*x - 8, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-2*x^2 + 5*x, x^3 + 4*x^2 + 2*x + 9)*y + Mod(-2*x^2 - 9*x - 5, x^3 + 4*x^2 + 2*x + 9))*z^4 + Mod(Mod(2*x^2 - 9*x + 9, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(-5*x^2 + 9*x - 6, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-x^2 - 9*x + 9, x^3 + 4*x^2 + 2*x + 9)*y + Mod(x^2 + 8*x + 2, x^3 + 4*x^2 + 2*x + 9), Mod(1, x^3 + 4*x^2 + 2*x + 9)*y^4 + Mod(8*x^2 + 8*x + 9, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(2*x^2 - 6*x - 8, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-2*x^2 + 5*x, x^3 + 4*x^2 + 2*x + 9)*y + Mod(-2*x^2 - 9*x - 5, x^3 + 4*x^2 + 2*x + 9))*z^3 + Mod(Mod(-9*x^2 - x + 8, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(-4*x^2 + 2*x - 6, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-9*x^2 - 2*x - 3, x^3 + 4*x^2 + 2*x + 9)*y + Mod(-x^2 + 8*x + 1, x^3 + 4*x^2 + 2*x + 9), Mod(1, x^3 + 4*x^2 + 2*x + 9)*y^4 + Mod(8*x^2 + 8*x + 9, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(2*x^2 - 6*x - 8, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-2*x^2 + 5*x, x^3 + 4*x^2 + 2*x + 9)*y + Mod(-2*x^2 - 9*x - 5, x^3 + 4*x^2 + 2*x + 9))*z^2 + Mod(Mod(-9*x^2 - 2*x + 6, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(6*x^2 - 5*x - 1, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(8*x^2 + 9, x^3 + 4*x^2 + 2*x + 9)*y + Mod(2*x^2 + 5*x - 1, x^3 + 4*x^2 + 2*x + 9), Mod(1, x^3 + 4*x^2 + 2*x + 9)*y^4 + Mod(8*x^2 + 8*x + 9, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(2*x^2 - 6*x - 8, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-2*x^2 + 5*x, x^3 + 4*x^2 + 2*x + 9)*y + Mod(-2*x^2 - 9*x - 5, x^3 + 4*x^2 + 2*x + 9))*z + Mod(Mod(6*x^2 + 7*x - 8, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(4*x^2 - x - 1, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(6*x^2 + x + 4, x^3 + 4*x^2 + 2*x + 9)*y + Mod(3*x^2 + 8, x^3 + 4*x^2 + 2*x + 9), Mod(1, x^3 + 4*x^2 + 2*x + 9)*y^4 + Mod(8*x^2 + 8*x + 9, x^3 + 4*x^2 + 2*x + 9)*y^3 + Mod(2*x^2 - 6*x - 8, x^3 + 4*x^2 + 2*x + 9)*y^2 + Mod(-2*x^2 + 5*x, x^3 + 4*x^2 + 2*x + 9)*y + Mod(-2*x^2 - 9*x - 5, x^3 + 4*x^2 + 2*x + 9)))

check that multiplying by the reciprocal does the same thing as division.

? (r1recip*product)==r2
1
? (product*r1recip)==r2
1

here some checks of the basic arithmetic laws, field axioms, for this pair of polynomials.

subtraction works, and zero, the additive inverse, exists:

? Mod(0,m3) == (r1-r1)
1

commutativity of addition:

? (r1+r2)==(r2+r1)
1

commutativity of multiplication:

? (r2*r1)==product
1

we need one additional random element for further checks.

? c=Mod(zpoly(twosize,m1,m2),m3);

multiplication distributes over addition:

? (c*(r1+r2))==(c*r1+c*r2)
1

associativity of addition:

? ((c+r1)+r2) == (c+(r1+r2))
1

associativity of multiplication:

? ((c*r1)*r2) == (c*(r1*r2))
1

to do: multiplication by zero, multiplication by one, adding zero.

note: these are just demonstrations of the field axioms holding for our randomly chosen elements.  the demonstrations aren't proofs.

previously computing division using linear algebra.

No comments :