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+1Indeed 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*6^{2}−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)