### 5.28.3 Build a polynomial from its evaluation : genpoly

genpoly takes three arguments : a polynomial P with n−1 variables, an integer b and the name of a variable var.
genpoly returns the polynomial Q with n variables (the P variables and the variable var given as second argument), such that :

- subst(Q,var=b)==P
- the coefficients of Q belongs to the interval (−b/2 , b/2]

In other words, P is written in base b but using the convention that the euclidean remainder belongs to ]−b/2 ; b/2] (this convention is also known as s-mod representation). Input :

genpoly(61,6,x)

Output :

2*x`^`2-2*x+1

Indeed 61 divided by 6 is 10 with remainder 1, then 10 divided by 6 is 2 with remainder -2 (instead of the usual quotient 1 and remainder 4 out of bounds),

61=2*62−2*6+1

Input :

genpoly(5,6,x)

Output :

x-1

Indeed : 5=6−1
Input :

genpoly(7,6,x)

Output :

x+1

Indeed : 7=6+1
Input :

genpoly(7*y+5,6,x)

Output :

x*y+x+y-1

Indeed : x*y+x+y−1=y(x+1)+(x−1)
Input :

genpoly(7*y+5*z`^2`,6,x)

Output :

x*y+x*z+y-z

Indeed : x*y+x*z+y−z=y*(x+1)+z*(x−1)