Bill Allombert on Fri, 30 Jan 2004 19:38:38 +0100

 Re: Preparing PARI 2.3

On Wed, Jan 28, 2004 at 02:06:35AM +0100, Bill Allombert wrote:
> --- Add substpol() and reinstate old subst behaviour.

Here a patch that do just that.

Cheers,
Bill.

Index: doc/usersch3.tex
===================================================================
RCS file: /home/cvs/pari/doc/usersch3.tex,v
retrieving revision 1.295
diff -u -r1.295 usersch3.tex
--- doc/usersch3.tex	28 Jan 2004 17:11:00 -0000	1.295
+++ doc/usersch3.tex	30 Jan 2004 18:05:34 -0000
@@ -5822,8 +5822,15 @@
\noindent If $x$ is a power series, $z$ must be either a polynomial, a power
series, or a rational function.

-The variable'' $y$ is in fact allowed to be any polynomial, in which case,
-the substitution is done as per the following script:
+\syn{gsubst}{x,y,z}, where $y$ is the variable number.
+
+\subsecidx{substpol}$(x,y,z)$:
+replace the variable'' $y$ by the argument $z$ in the polynomial''
+expression $x$. Every type is allowed for $x$, but the same behavior
+as \kbd{subst} above apply.
+
+The difference with \kbd{subst} is that $y$ is allowed to be any polynomial
+here. The substitution is done as per the following script:
\bprog
subst_poly(pol, from, to) =
{ local(t = 'subst_poly_t, M = from - t);
@@ -5833,17 +5840,15 @@
@eprog
\noindent For instance
\bprog
-? subst(x^4 + x^2 + 1, x^2, y)
+? substpol(x^4 + x^2 + 1, x^2, y)
%1 = y^2 + y + 1
-? subst(x^4 + x^2 + 1, x^3, y)
+? substpol(x^4 + x^2 + 1, x^3, y)
%2 = x^2 + y*x + 1
-? subst(x^4 + x^2 + 1, (x+1)^2, y)
+? substpol(x^4 + x^2 + 1, (x+1)^2, y)
%3 = (-4*y - 6)*x + (y^2 + 3*y - 3)
@eprog

-\syn{gsubst}{x,v,z}, where $v$ is the number of the variable $y$ for regular
-usage. Also available is \tet{gsubst0}$(x,y,z)$ where $y$ is a \kbd{GEN}
-polynomial.
+\syn{gsubstpol}$(x,y,z)$.

\subsecidx{taylor}$(x,y)$: Taylor expansion around $0$ of $x$ with respect
to\label{se:taylor}
Index: src/basemath/gen3.c
===================================================================
RCS file: /home/cvs/pari/src/basemath/gen3.c,v
retrieving revision 1.116
diff -u -r1.116 gen3.c
--- src/basemath/gen3.c	28 Jan 2004 12:16:07 -0000	1.116
+++ src/basemath/gen3.c	30 Jan 2004 18:05:39 -0000
@@ -1358,7 +1358,7 @@
}

GEN
-gsubst0(GEN x, GEN T, GEN y)
+gsubstpol(GEN x, GEN T, GEN y)
{
pari_sp av;
long d, v;
Index: src/functions/polynomials/subst
===================================================================
RCS file: /home/cvs/pari/src/functions/polynomials/subst,v
retrieving revision 1.1
diff -u -r1.1 subst
--- src/functions/polynomials/subst	26 Jun 2003 18:50:22 -0000	1.1
+++ src/functions/polynomials/subst	30 Jan 2004 18:05:41 -0000
@@ -1,7 +1,7 @@
Function: subst
Section: polynomials
-C-Name: gsubst0
-Prototype: GGG
+C-Name: gsubst
+Prototype: GnG
Help: subst(x,y,z): in expression x, replace the variable y by the
expression z

===================================================================
retrieving revision 1.306
diff -u -r1.306 paridecl.h
--- src/headers/paridecl.h	29 Jan 2004 16:36:05 -0000	1.306
+++ src/headers/paridecl.h	30 Jan 2004 18:05:45 -0000
@@ -1000,7 +1000,7 @@
GEN     gshift(GEN x, long n);
GEN     gshift3(GEN x, long n, long flag);
GEN     gsubst(GEN x, long v, GEN y);
-GEN     gsubst0(GEN x, GEN v, GEN y);
+GEN     gsubstpol(GEN x, GEN v, GEN y);
GEN	gsubst_expr(GEN pol, GEN from, GEN to);
GEN     gtopoly(GEN x, long v);
GEN     gtopolyrev(GEN x, long v);
--- /dev/null	Sat Mar  1 19:52:54 2003
+++ src/functions/polynomials/substpol	Fri Jan 30 18:54:34 2004
@@ -0,0 +1,7 @@
+Function: substpol
+Section: polynomials
+C-Name: gsubstpol
+Prototype: GGG
+Help: substpol(x,y,z): in expression x, replace the polynomial y by the
+ expression z, using remainder decomposition of x.
+