\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesPackage{tablor}[12/06/2008 v3.00 la machine a creer des tableaux de signes et variations]
\RequirePackage{filecontents}
\RequirePackage{ifthen}
\RequirePackage{fancyvrb}
\RequirePackage{ifpdf}
\fvset{gobble=0}
\newboolean{xcas}\setboolean{xcas}{false}
\DeclareOption{xcas}{\setboolean{xcas}{true}}
\ProcessOptions\relax
\newboolean{windows}\setboolean{windows}{false}
\IfFileExists{tablor.cfg}{\input{tablor.cfg}}
\ifthenelse{\boolean{windows}} {\newcommand{\rem}{DEL } \newcommand{\cat}{TYPE }
\newcommand{\cp}{COPY }} {\newcommand{\rem}{rm }\newcommand{\cat}{cat }
\newcommand{\cp}{cp }}
\ifpdf
\DeclareGraphicsRule{*}{mps}{*}{}
\fi
\AtEndDocument{\immediate\write18{\rem *.user XCas* Xcas* *.mpx}
}
\begin{VerbatimOut}{queue.mp}
end
\end{VerbatimOut}
\newcommand{\nettoyer}[1][\jobname]{\immediate\write18{\rem #1.Tab.log queue.mp enteteMP.cfg session.tex config.cxx}
}
\newcommand{\Tableaux}{\jobname}
\newcounter{TVn}
\newcommand{\tv}{\theTVn}
\newcounter{TVnbis}
\newcommand{\tvbis}{\theTVnbis}
\newcommand{\initablor}[1][\jobname]{\renewcommand{\Tableaux}{#1}\setcounter{TVn}{0}\ifthenelse{\boolean{xcas}}{\IfFileExists{\Tableaux.Tab.mp} {\immediate\write18{\rem \Tableaux.Tab.mp}} {} \immediate\write18{\cp enteteMP.cfg \Tableaux.Tab.mp}}
{\IfFileExists{\Tableaux.Tab.mp} {\immediate\write18{mpost -interaction=batchmode \Tableaux.Tab}}{\PackageWarning{tablor}{Pas de source metapost pour creer les tableaux.}} }}
\makeatletter
\newcommand{\executGiacmp}[1]{\ifthenelse{\boolean{windows}}{\immediate\write18{giac #1 }}{\immediate\write18{giac <#1 }}}
\makeatother
\begin{VerbatimOut}{XcasTV.cxx}
TV(L,F,nom,nomv,f,ftt,nmr):={
nl:=size(L);
f:=unapply(f,x);
fp:=fonction_derivee(f);
Z:=concat(L,F);
S:=resoudre(fp(x),x);
si size(S)>0 alors pour j de 0 jusque size(S)-1 faire
kk:=(evalf(S[j])>=evalf(L[0])) and (evalf(S[j])<=evalf(L[nl-1]));
if(kk==1){Z:=append(Z,simplifier(S[j]))};
fpour
fsi;
Z:=sort(Z);
nz:=size(Z);
si Z[0]==Z[1] alors Z:=augment(Z[0],Z[2..nz-1]);nz:=nz-1;
fsi;
pour u de 1 jusque nz-2 faire
si Z[u]==Z[u+1] alors Z:=augment(Z[0..u-1],Z[u+1..nz-1]);nz:=nz-1;
fsi;
fpour;
nz:=size(Z);
l0:=" newLigneVariables(btex $"+nomv+"$ etex);";lp:=" "; lf:=" ";lsp:=" ";
pour m de 0 jusque nz-1 faire l0:=l0+"val(btex $"+latex(Z[m])+"$ etex);
";fpour;
k0:= evalf(limite(f(x),x=Z[0],1))> evalf(limite(f(x),x=Z[1],-1));
kz:=evalf(limite(f(x),x=Z[nz-1],-1))> evalf(limite(f(x),x=Z[nz-2],1));
lsi:=lsic+nom+"'("+nomv+")}$ etex);"+
if(Z[0]==-infinity){if(sign(evalf(fp(if(Z[1]==+infinity){0}else{Z[1]-10^(-5)})))==1){"plus;"}else{"moins;"}}else{if(member(Z[0],F)==0){
if(fp(Z[0])==0){"valBarre(btex 0 etex);"}else{" "}+
if(sign(fp(Z[0]+10^(-5)))==1){"plus;"}else{"moins;"}}else{"nonDefBarre;"+
if(sign(fp((Z[0]+10^(-5))))==1){"plus;"}else{"moins;"} }}
if(nz>2){ for(r:=1; r<=nz-2;r++){ ksp:=evalf(fp(Z[r]+0.01))>0;
lsp:=lsp+if(member(Z[r],F)==0){"valBarre(btex 0 etex);"}else{"nonDefBarre;"}+
if(ksp==1){"plus;"}else{"moins;"}
}; }
lsf:=if(member(Z[nz-1],F)==0){""}else{"nomDefBarre;
"}
lm0:=limite(f(x),x=Z[0],1)==-infinity;
li:=lvic+nom+"}$ etex);"+
if(member(Z[0],F)==0){"valPos(btex $"+if(lm0==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[0],1)))}+"$ etex,"}
else{"nonDefBarre;limDroite(btex $"+if(lm0==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[0],1)))}+"$ etex,"}+
if(k0==1){"1"}else{"0"}+
");";
if(nz>2){ for(r:=1; r<=nz-2;r++){ krm:=evalf(limite(f(x),x=Z[r-1],1))< evalf(limite(f(x),x=Z[r],-1));
krp:=evalf(limite(f(x),x=Z[r],1))> evalf(limite(f(x),x=Z[r+1],-1)) ;
lmrm:=limite(f(x),x=Z[r],-1)==-infinity;lmrp:=limite(f(x),x=Z[r],1)==-infinity;
lp:=lp+if(member(Z[r],F)){
"limGauche(btex
$"+if(lmrm==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[r],-1)))}+"$
etex,"+if(krm==1){"1);"}else{"0);"}+"nonDefBarre;limDroite(btex $"+if(lmrp==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[r],1)))}+"$ etex,"+if(krp==1){"1);"}else{"0);"}}
else{"valPos(btex $"+latex(simplifier(f(Z[r])))+"$
etex,"+if(sign(evalf(fp(Z[r]-0.01)))==sign(fp(Z[r]+0.01))){"0.5);"}else{if(krp==1){"1);"}else{"0);
"}}}
}; }
lnz:=limite(f(x),x=Z[nz-1],-1)==-infinity;
lf:=if(member(Z[nz-1],F)==0){"valPos(btex $"+if(lnz==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[nz-1],-1)))}+"$ etex,"}else{"nonDefBarre;limGauche(btex $"+if(lnz==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[nz-1],-1)))}+"$ etex,"}+
if(kz==1){"1);"}else{"0);
"};
MetaLfc:=if(ftt==2){if(nz>2){"
beginTableau("+nmr+")"+
l0+lsi+lsp+lsf+"
endTableau;
";}else{
intro+"beginTableau("+nmr+")"+
l0+
lsi+lsf+"
endTableau;
";
}
}else{ if(ftt==0){if(nz>2){"beginTableau("+nmr+")"+
l0+
li+
lp+
lf
+"
endTableau;
";}else{"beginTableau("+nmr+")"+
l0+
li+
lf
+"
endTableau;
";}}else{
if(nz>2){"beginTableau("+nmr+")"+
l0+
lsi+lsp+lsf+
li+
lp+
lf
+"
endTableau;
";}else{"beginTableau("+nmr+")"+
l0+
lsi+lsf+
li+
lf
+"
endTableau;
";}
}}
sortie:=fopen("XCasmpfc.mp");
fprint(sortie,Unquoted,MetaLfc);
fclose(sortie);
}:;
\end{VerbatimOut}
\begin{VerbatimOut}{XcasTVZ.cxx}
TVZ(L,F,FF,nom,nomv,f,ftt,nmr):={
nl:=size(L);
nf:=size(FF);
Ff:=NULL;IMIN:=NULL;IMAX:=NULL;
for(k:=0;k<nf;k++){
if(FF[k][0]>L[0]){Imin[k]:=FF[k][0];LL:=L}else{Imin[k]:=L[0];LL:=[L[1]]};
if(FF[k][1]<L[1]){Imax[k]:=FF[k][1];LL:=L}else{Imax[k]:=L[1];LL:=[L[0]]};
Ff:=Ff,[Imin[k],Imax[k]];
IMIN:=IMIN,Imin[k];
IMAX:=IMAX,Imax[k];
}
FF:=[Ff];
IMIN:=[IMIN];
IMAX:=[IMAX];
f:=unapply(f,x);
fp:=fonction_derivee(f);
Z:=concat(LL,F);
for(k:=0;k<nf;k++){
Z:=concat(Z,FF[k]);
}
S:=resoudre(fp(x),x);
si size(S)>0 alors pour j de 0 jusque size(S)-1 faire
for(k:=0;k<nf;k++){
kk:=(evalf(S[j])>=evalf(L[0])) and (evalf(S[j])<=evalf(L[nl-1]));
kK:=(evalf(S[j])<evalf(Imin[k])) or (evalf(S[j])>evalf(Imax[k]));
Kk:=(kk) and kK;
if(Kk==1){Z:=append(Z,simplifier(S[j]))};
}
fpour
fsi;
Z:=sort(Z);
nz:=size(Z);
si Z[0]==Z[1] alors Z:=augment(Z[0],Z[2..nz-1]);nz:=nz-1;
fsi;
pour u de 1 jusque nz-2 faire
si Z[u]==Z[u+1] alors Z:=augment(Z[0..u-1],Z[u+1..nz-1]);nz:=nz-1;
fsi;
fpour;
nz:=size(Z);
for(j:=0;j<nf;j++){
for(k:=1;k<nz;k++){
if ((Z[k]>Imin[j])and(Z[k]<Imax[j])){Z:=augment(Z[0..k-1],Z[k+1..nz-1]);nz:=nz-1;
}
}
}
nz:=size(Z);
l0:=" newLigneVariables(btex $"+nomv+"$ etex);";lp:=" "; lf:=" ";lsp:=" ";
pour m de 0 jusque nz-1 faire l0:=l0+"val(btex $"+latex(Z[m])+"$ etex);
";fpour;
k0:= evalf(limite(f(x),x=Z[0],1))> evalf(limite(f(x),x=Z[1],-1));
kz:=evalf(limite(f(x),x=Z[nz-1],-1))> evalf(limite(f(x),x=Z[nz-2],1));
lsi:=lsic+nom+"'("+nomv+")}$ etex);"+
if(member(Z[0],IMIN)!=0){"debutNonDef;"}else{if(Z[0]==-infinity){if(sign(evalf(fp(if(Z[1]==+infinity){0}else{Z[1]-10^(-5)})))==1){"plus;"}else{"moins;"}}else{if(member(Z[0],F)==0){
if(fp(Z[0])==0){"valBarre(btex 0 etex);"}else{" "}+
if(sign(fp(Z[0]+10^(-5)))==1){"plus;"}else{"moins;"}}else{"nonDefBarre;"+
if(sign(fp((Z[0]+10^(-5))))==1){"plus;"}else{"moins;"} }}}
if(nz>2){ for(r:=1; r<=nz-2;r++){ ksp:=evalf(fp(Z[r]+0.01))>0;
lsp:=lsp+if(member(Z[r],IMIN)!=0){"debutNonDef;"}else{
if(member(Z[r],IMAX)!=0){"finNonDef;"+
if(ksp==1){"plus;"}else{"moins;"}}else{
if(member(Z[r],F)==0){"valBarre(btex 0 etex);"}else{"nonDefBarre;"}+
if(ksp==1){"plus;"}else{"moins;"}
}}}};
lsf:=if(member(Z[0],IMAX)!=0){"finNonDef;"}else{if(member(Z[nz-1],F)==0){""}else{"nomDefBarre;
"}}
lm0:=limite(f(x),x=Z[0],1)==-infinity;
li:=lvic +nom+"}$ etex);"+
if(member(Z[0],F)==0){"valPos(btex $"+if(lm0==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[0],1)))}+"$ etex,"}
else{"nonDefBarre;limDroite(btex $"+if(lm0==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[0],1)))}+"$ etex,"}+
if(k0==1){"1"}else{"0"}+
");";
if(nz>2){
for(r:=1; r<=nz-2;r++){
krm:=evalf(limite(f(x),x=Z[r-1],1))< evalf(limite(f(x),x=Z[r],-1));
krp:=evalf(limite(f(x),x=Z[r],1))> evalf(limite(f(x),x=Z[r+1],-1)) ;
lmrm:=limite(f(x),x=Z[r],-1)==-infinity;lmrp:=limite(f(x),x=Z[r],1)==-infinity;
lp:=lp+if(member(Z[r],IMIN)!=0){"limGauche(btex $"+if(lmrm==1){
"-\\infty"}else{
latex(simplifier(limite(f(x),x=Z[r],-1)))}
+"$ etex,"+if(krm==1){
"1);"}else{"0);"}
+"debutNonDef;"
}//fsi Zr=Imin
else{
if (member(Z[r],IMAX)!=0) {"finNonDef;limDroite(btex $"+if(lmrp==1){
"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[r],1)))}
+"$ etex,"+if(krp==1){
"1);"}else{"0);"}
}
else {
if(member(Z[r],F)){
"limGauche(btex $"+if(lmrm==1){
"-\\infty"}else{
latex(simplifier(limite(f(x),x=Z[r],-1)))}
+"$ etex,"+if(krm==1){
"1);"}else{"0);"}
+"nonDefBarre;limDroite(btex $"+if(lmrp==1){
"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[r],1)))}
+"$ etex,"+if(krp==1){
"1);"}else{"0);"}
}//fsi (member Zr F)
else{"valPos(btex$"+latex(simplifier(f(Z[r])))+"$etex,"+
if(sign(evalf(fp(Z[r]-0.01)))==sign(fp(Z[r]+0.01))){
"0.5);"}else{
if(krp==1){
"1);"}else{"0);"}//felse(krp)
}//felse(valpos)
}//felse(member Zr F)
} //felse(Zr=Imax)
}//felse(Zr=Imin)
};//ffor
}//fsi nz
lnz:=limite(f(x),x=Z[nz-1],-1)==-infinity;
lf:=if(member(Z[nz-1],F)==0){"valPos(btex $"+if(lnz==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[nz-1],-1)))}+"$ etex,"}else{"nonDefBarre;limGauche(btex $"+if(lnz==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[nz-1],-1)))}+"$ etex,"}+
if(kz==1){"1);"}else{"0);
"};
MetaLfc:=if(ftt==2){if(nz>2){"
beginTableau("+nmr+")"+
l0+lsi+lsp+lsf+"
endTableau;
";}else{
intro+"beginTableau("+nmr+")"+
l0+
lsi+lsf+"
endTableau;
";
}
}else{ if(ftt==0){if(nz>2){"beginTableau("+nmr+")"+
l0+
li+
lp+
lf
+"
endTableau;
";}else{"beginTableau("+nmr+")"+
l0+
li+
lf
+"
endTableau;
";}}else{
if(nz>2){"beginTableau("+nmr+")"+
l0+
lsi+lsp+lsf+
li+
lp+
lf
+"
endTableau;
";}else{"beginTableau("+nmr+")"+
l0+
lsi+lsf+
li+
lf
+"
endTableau;
";}
}}
sortie:=fopen("XCasmpfc.mp");
fprint(sortie,Unquoted,MetaLfc);
fclose(sortie);
}
:;
\end{VerbatimOut}
\begin{VerbatimOut}{XcasTVapp.cxx}
TVapp(L,F,nom,nomv,f,ftt,nmr):={
nl:=size(L);
f:=unapply(f,x);
fp:=fonction_derivee(f);
z0:=concat(L,F);z:=sort(z0);
nz:=size(z);
if(L==[-infinity,+infinity]){S:=seq(fsolve(fp(x),x,k/10,newton_solver),k=-100..100);}
else{if(L[0]==-infinity){S:=seq(fsolve(fp(x),x,k/10,newton_solver),k=-100..L[1]);}
else{if(L[1]==+infinity){S:=seq(fsolve(fp(x),x,k/10,newton_solver),k=L[0]..100);}
else{S:=seq(fsolve(fp(x),x,k/10,newton_solver),k=z[0]..z[nz-1])}}};
si size(S)>0 alors pour j de 0 jusque size(S)-1 faire
kk:=(re(S[j])==S[j]);kok:=(evalf(S[j])>=L[0]) and (evalf(S[j])<=L[1]);
if(kk==1){if(kok==1){z:=append(z,simplifier(S[j]))}};
fpour;
fsi;
S:=NULL;
S:=S,z[0];
for(j:=1;j<size(z);j++){
if(z[j]!=undef and (abs(z[j])>1e-15 or z[j]==0)){
S:=S,z[j]};
}
z:=[S];
Z:=sort(z);
nz:=size(Z);
S:=NULL;
S:=S,Z[0];
for(j:=1;j<nz;j++){
if(Z[j]!=S[size(S)-1]){
S:=S,Z[j]};
}
Z:=[S];
nz:=size(Z);
l0:=" newLigneVariables(btex $"+nomv+"$ etex);";lp:=" "; lf:=" ";lsp:=" ";
pour m de 0 jusque nz-1 faire l0:=l0+"val(btex $"+latex(Z[m])+"$ etex);
";fpour;
k0:= evalf(limite(f(x),x=Z[0],1))> evalf(limite(f(x),x=Z[1],-1));
kz:=evalf(limite(f(x),x=Z[nz-1],-1))> evalf(limite(f(x),x=Z[nz-2],1));
lsi:=lsic+nom+"'("+nomv+")}$ etex);"+
if(Z[0]==-infinity){if(sign(evalf(fp(if(Z[1]==+infinity){0}else{Z[1]-10^(-5)})))==1){"plus;"}else{"moins;"}}else{if(member(Z[0],F)==0){
if(fp(Z[0])==0){"valBarre(btex 0 etex);"}else{" "}+
if(sign(fp(Z[0]+10^(-5)))==1){"plus;"}else{"moins;"}}else{"nonDefBarre;"+
if(sign(fp((Z[0]+10^(-5))))==1){"plus;"}else{"moins;"} }}
if(nz>2){ for(r:=1; r<=nz-2;r++){ ksp:=evalf(fp(Z[r]+0.01))>0;
lsp:=lsp+if(member(Z[r],F)==0){"valBarre(btex 0 etex);"}else{"nonDefBarre;"}+
if(ksp==1){"plus;"}else{"moins;"}
}; }
lsf:=if(member(Z[nz-1],F)==0){""}else{"nomDefBarre;
"}
lm0:=limite(f(x),x=Z[0],1)==-infinity;
li:=lvic+nom+"}$ etex);"+
if(member(Z[0],F)==0){"valPos(btex $"+if(lm0==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[0],1)))}+"$ etex,"}
else{"nonDefBarre;limDroite(btex $"+if(lm0==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[0],1)))}+"$ etex,"}+
if(k0==1){"1"}else{"0"}+
");";
if(nz>2){ for(r:=1; r<=nz-2;r++){ krm:=evalf(limite(f(x),x=Z[r-1],1))< evalf(limite(f(x),x=Z[r],-1));
krp:=evalf(limite(f(x),x=Z[r],1))> evalf(limite(f(x),x=Z[r+1],-1)) ;
lmrm:=limite(f(x),x=Z[r],-1)==-infinity;lmrp:=limite(f(x),x=Z[r],1)==-infinity;
lp:=lp+if(member(Z[r],F)){
"limGauche(btex $"+if(lmrm==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[r],-1)))}+"$ etex,"+if(krm==1){"1);"}else{"0);"}+"nonDefBarre;limDroite(btex $"+if(lmrp==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[r],1)))}+"$ etex,"+if(krp==1){"1);"}else{"0);"}}
else{"valPos(btex $"+latex(simplifier(f(Z[r])))+"$
etex,"+if(sign(evalf(fp(Z[r]-0.01)))==sign(fp(Z[r]+0.01))){"0.5);"}else{if(krp==1){"1);"}else{"0);
"}}}
}; }
lnz:=limite(f(x),x=Z[nz-1],-1)==-infinity;
lf:=if(member(Z[nz-1],F)==0){"valPos(btex $"+if(lnz==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[nz-1],-1)))}+"$ etex,"}else{"nonDefBarre;limGauche(btex $"+if(lnz==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[nz-1],-1)))}+"$ etex,"}+
if(kz==1){"1);"}else{"0);
"};
MetaLfc:=if(ftt==2){if(nz>2){"
beginTableau("+nmr+")"+
l0+lsi+lsp+lsf+"
endTableau;
";}else{
intro+"beginTableau("+nmr+")"+
l0+
lsi+lsf+"
endTableau;
";
}
}else{ if(ftt==0){if(nz>2){"beginTableau("+nmr+")"+
l0+
li+
lp+
lf
+"
endTableau;
";}else{"beginTableau("+nmr+")"+
l0+
li+
lf
+"
endTableau;
";}}else{
if(nz>2){"beginTableau("+nmr+")"+
l0+
lsi+lsp+lsf+
li+
lp+
lf
+"
endTableau;
";}else{"beginTableau("+nmr+")"+
l0+
lsi+lsf+
li+
lf
+"
endTableau;
";}
}}
sortie:=fopen("XCasmpfc.mp");
fprint(sortie,Unquoted,MetaLfc);
fclose(sortie);
}:;
\end{VerbatimOut}
\begin{VerbatimOut}{XcasTVI.cxx}
TVI(L,F,nom,nomv,f,ftt,ao,nmr):={
nl:=size(L);
f:=unapply(f,x);
fp:=fonction_derivee(f);
Z:=concat(L,F);
S:=resoudre(fp(x),x);
si size(S)>0 alors pour j de 0 jusque size(S)-1 faire
kk:=(evalf(S[j])>=evalf(L[0])) and (evalf(S[j])<=evalf(L[nl-1]));
if(kk==1){Z:=append(Z,simplifier(S[j]))};
fpour
fsi;
Z:=sort(Z);
nz:=size(Z);
si Z[0]==Z[1] alors Z:=augment(Z[0],Z[2..nz-1]);nz:=nz-1;
fsi;
pour u de 1 jusque nz-2 faire
si Z[u]==Z[u+1] alors Z:=augment(Z[0..u-1],Z[u+1..nz-1]);nz:=nz-1;
fsi;
fpour;
nz:=size(Z);
l0:=" newLigneVariables(btex $"+nomv+"$ etex);";lp:=" "; lf:=" ";lsp:=" ";
LI:=limite(f(x),x,Z[0],1);
LF:=limite(f(x),x,Z[nz-1],-1);
LP:=NULL;
if(nz>2){ for(r:=1; r<=nz-2;r++){LP:=LP,if(member(Z[r],F)){limite(f(x),x,Z[r],-1),limite(f(x),x,Z[r],1)}else{f(Z[r])}}};
if(nz>2){ LL:=[LI,LP,LF]}else{LL:=[LI,LF]};
NL:=size(LL);
A:=NULL;aa:=1;kk:=0;
if(NL==nz){for(k:=0;k<nz-1;k++){TestS:=(sign(evalf(LL[k]-ao))==sign(evalf(LL[k+1]-ao))) or (sign(evalf(LL[k]-ao))==0.0)or (sign(evalf(LL[k+1]-ao))==0.0);
if(TestS==0){A:=A,aa;l0:=l0+"val(btex $"+latex(Z[k])+"$ etex);"+"val(btex $\\alpha_"+aa+"$ etex);";aa:=aa+1;}else{l0:=l0+"val(btex $"+latex(Z[k])+"$ etex);"}}
l0:=l0+"val(btex $"+latex(Z[nz-1])+"$ etex);"};
if(NL>nz){for(k:=0;k<NL-1;k++){TestS:=(sign(evalf(LL[k]-ao))==sign(evalf(LL[k+1]-ao))) or (sign(evalf(LL[k]-ao))==0.0)or (sign(evalf(LL[k+1]-ao))==0.0);
TestL:=(abs(LL[k])==abs(LL[k+1]));
if(TestS==0){ if( TestL==1 ){l0:=l0}else{
A:=A,aa;l0:=l0+"val(btex $"+latex(Z[kk])+"$ etex);"+"val(btex $\\alpha_"+aa+"$ etex);";aa:=aa+1;kk:=kk+1}}else{l0:=l0+"val(btex $"+latex(Z[kk])+"$ etex);";kk:=kk+1}}
l0:=l0+"val(btex $"+latex(Z[nz-1])+"$ etex);
"};
TestS:=(sign(evalf(LL[0]-ao))==sign(evalf(LL[1]-ao))) or (sign(evalf(LL[0]-ao))==0.0) or (sign(evalf(LL[1]-ao))==0.0);
k0:= evalf(limite(f(x),x=Z[0],1))> evalf(limite(f(x),x=Z[1],-1));
kz:=evalf(limite(f(x),x=Z[nz-1],-1))> evalf(limite(f(x),x=Z[nz-2],1));
lsi:=lsic+nom+"'("+nomv+")}$ etex);"+
if(Z[0]==-infinity){if(sign(evalf(fp(if(Z[1]==+infinity){0}else{Z[1]-10^(-5)})))==1){"plus;"}else{"moins;"}}else{if(member(Z[0],F)==0){
if(fp(Z[0])==0){"valBarre(btex 0 etex);"}else{" "}+
if(sign(fp((Z[0]+10^(-10))))==1){"plus;"}else{"moins;"}}else{"nonDefBarre;"+
if(sign(fp(10^(-10)+Z[0]))==1){"plus;"}else{"moins;"} }}+if(TestS==0){"valBarre(btex$ $ etex);"+ if(sign(fp(10^(-10)+Z[0]))==1){"plus;"}else{"moins;"}}else{" "};
if(nz>2){rr:=1; if(nz==NL){for(r:=1; r<=NL-2;r++){ TestS:=(sign(evalf(LL[r]-ao))==sign(evalf(LL[r+1]-ao))) or (sign(evalf(LL[r]-ao))==0.0)or (sign(evalf(LL[r+1]-ao))==0.0);
ksp:=evalf(fp(Z[r]+0.01))>0;
TestL:=(abs(LL[r])==abs(LL[r+1]));
lsp:=lsp+if(member(Z[r],F)==0){"valBarre(btex 0 etex);"}else{"nonDefBarre;"}+
if(ksp==1){"plus;"}else{"moins;"}+if(TestS==0){"valBarre(btex $ $ etex);"}else{" "}+if(TestS==0){if(ksp==1){"plus;"}else{"moins;"}}else{" "};
}}
else{for(r:=1; r<=NL-2;r++){kspp:=evalf(fp(Z[rr]+0.01))>0;TestS:=(sign(evalf(LL[r]-ao))==sign(evalf(LL[r+1]-ao))) or (sign(evalf(LL[r]-ao))==0.0)or (sign(evalf(LL[r+1]-ao))==0.0);
TestL:=(abs(LL[r])==abs(LL[r+1]));
if(TestS==0){if( TestL==1 ){lsp:=lsp}else{lsp:=lsp+if(member(Z[rr],F)==0){"valBarre(btex 0 etex);"}else{"nonDefBarre;"}+
if(kspp==1){"plus;"}else{"moins;"}+"valBarre(btex $ $ etex);"+if(kspp==1){"plus;"}else{"moins;"};rr:=rr+1;}
} else{lsp:=lsp+if(member(Z[rr],F)==0){"valBarre(btex 0 etex);"}else{"nonDefBarre;"}+
if(kspp==1){"plus;"}else{"moins;"};rr:=rr+1;}
}}
};
lsf:=if(member(Z[nz-1],F)==0){""}else{"nomDefBarre;"}
lm0:=limite(f(x),x=Z[0],1)==-infinity;
TestS:=(sign(evalf(LL[0]-ao))==sign(evalf(LL[1]-ao))) or (sign(evalf(LL[0]-ao))==0.0) or (sign(evalf(LL[1]-ao))==0.0);
li:=lvic+nom+"}$ etex);
"+ if(member(Z[0],F)==0){"valPos(btex $"+if(lm0==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[0],1)))}+"$ etex,"}
else{"nonDefBarre;limDroite(btex $"+if(lm0==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[0],1)))}+"$ etex,"}+
if(k0==1){"1);"}else{"0);"}+if(TestS==0){"valPos(btex $ "+ao+" $ etex,0.5);"}else{" "};
if(nz>2){if(nz==NL){for(r:=1; r<=nz-2;r++){TestS:=(sign(evalf(LL[r]-ao))==sign(evalf(LL[r+1]-ao))) or (sign(evalf(LL[r]-ao))==0.0)or (sign(evalf(LL[r+1]-ao))==0.0);
krm:=evalf(limite(f(x),x=Z[r-1],1))< evalf(limite(f(x),x=Z[r],-1));
krp:=evalf(limite(f(x),x=Z[r],1))> evalf(limite(f(x),x=Z[r+1],-1)) ;
lmrm:=limite(f(x),x=Z[r],-1)==-infinity;lmrp:=limite(f(x),x=Z[r],1)==-infinity;
lp:=lp+if(member(Z[r],F)) {
"limGauche(btex $"+if(lmrm==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[r],-1)))}+"$ etex,"+if(krm==1){"1);"}else{"0);"}+"nonDefBarre;limDroite(btex $"+if(lmrp==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[r],1)))}+"$ etex,"+if(krp==1){"1);"}else{"0);"}}
else{"valPos(btex $"+latex(simplifier(f(Z[r])))+"$
etex,"+if(sign(evalf(fp(Z[r]-0.01)))==sign(fp(Z[r]+0.01))){"0.5);"}else{if(krp==1){"1);"}else{"0);"}}}+if(TestS==0){"valPos(btex
$ "+ao+" $ etex,0.5);"
}else{" "};
};//for
}else{rr:=1;for(r:=1; r<=NL-2;r++){TestS:=(sign(evalf(LL[r]-ao))==sign(evalf(LL[r+1]-ao))) or (sign(evalf(LL[r]-ao))==0.0)or (sign(evalf(LL[r+1]-ao))==0.0);
krm:=evalf(limite(f(x),x=Z[rr-1],1))< evalf(limite(f(x),x=Z[rr],-1));
krp:=evalf(limite(f(x),x=Z[rr],1))> evalf(limite(f(x),x=Z[rr+1],-1)) ;
lmrm:=limite(f(x),x=Z[rr],-1)==-infinity;lmrp:=limite(f(x),x=Z[rr],1)==-infinity; TestL:=(abs(LL[r])==abs(LL[r+1]));
if(TestS==0){if( TestL==1 ){lp:=lp}else{ lp:=lp+if(member(Z[rr],F)) {
"limGauche(btex $"+if(lmrm==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[rr],-1)))}+"$ etex,"+if(krm==1){"1);"}else{"0);"}+"nonDefBarre;limDroite(btex $"+if(lmrp==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[rr],1)))}+"$ etex,"+if(krp==1){"1);"}else{"0);"}}
else{"valPos(btex $"+latex(simplifier(f(Z[rr])))+"$
etex,"+if(sign(evalf(fp(Z[rr]-0.01)))==sign(fp(Z[rr]+0.01))){"0.5);"}else{if(krp==1){"1);"}else{"0);"}}}+"valPos(btex
$ "+ao+" $ etex,0.5);
";rr:=rr+1;
}// else testL==1
}//testS==0
else{lp:=lp+if(member(Z[rr],F)){
"limGauche(btex $"+if(lmrm==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[rr],-1)))}+"$ etex,"+if(krm==1){"1);"}else{"0);"}+"nonDefBarre;limDroite(btex $"+if(lmrp==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[rr],1)))}+"$ etex,"+if(krp==1){"1);"}else{"0);"}}
else{"valPos(btex $"+latex(simplifier(f(Z[rr])))+"$
etex,"+if(sign(evalf(fp(Z[rr]-0.01)))==sign(fp(Z[rr]+0.01))){"0.5);"}else{if(krp==1){"1);"}else{"0);
"}}};rr:=rr+1;
}//else testS==0
}//for nz<NL
}// else nz<NL
//if nz=NL
};//if nz>2
lnz:=limite(f(x),x=Z[nz-1],-1)==-infinity;
lf:=if(member(Z[nz-1],F)==0){"valPos(btex $"+if(lnz==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[nz-1],-1)))}+"$ etex,"}else{"nonDefBarre;limGauche(btex $"+if(lnz==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[nz-1],-1)))}+"$ etex,"}+
if(kz==1){"1);"}else{"0);"};
MetaLfc:= if(ftt==2){if(nz>2){"beginTableau("+nmr+")"+
l0+lsi+lsp+lsf+"
endTableau;
";}else{
"beginTableau("+nmr+")"+
l0+
lsi+lsf+"
endTableau;
";
}
}else{
if(ftt==0){if(nz>2){"beginTableau("+nmr+")"+
l0+
li+
lp+
lf
+"
endTableau;
";}else{"beginTableau("+nmr+")"+
l0+
li+
lf
+"
endTableau;
";}}else{
if(nz>2){"beginTableau("+nmr+")"+
l0+
lsi+lsp+lsf+
li+
lp+
lf
+"
endTableau;
";}else{"beginTableau("+nmr+")"+
l0+
lsi+lsf+
li+
lf
+"
endTableau;
";}
}};
sortie:=fopen("XCasmpfc.mp");
fprint(sortie,Unquoted,MetaLfc);
fclose(sortie);
}:;
\end{VerbatimOut}
\begin{VerbatimOut}{XcasTVIapp.cxx}
TVIapp(L,F,nom,nomv,f,ftt,ao,nmr):={
nl:=size(L);
f:=unapply(f,x);
fp:=fonction_derivee(f);
z0:=concat(L,F);z:=sort(z0);
nz:=size(z);
if(L==[-infinity,+infinity]){S:=seq(fsolve(fp(x),x,k/10,newton_solver),k=-100..100);}
else{if(L[0]==-infinity){S:=seq(fsolve(fp(x),x,k/10,newton_solver),k=-100..L[1]);}
else{if(L[1]==+infinity){S:=seq(fsolve(fp(x),x,k/10,newton_solver),k=L[0]..100);}
else{S:=seq(fsolve(fp(x),x,k/10,newton_solver),k=z[0]..z[nz-1])}}};
si size(S)>0 alors pour j de 0 jusque size(S)-1 faire
kk:=(re(S[j])==S[j]);kok:=(evalf(S[j])>=L[0]) and (evalf(S[j])<=L[1]);
if(kk==1){if(kok==1){z:=append(z,simplifier(S[j]))}};
fpour;
fsi;
S:=NULL;
S:=S,z[0];
for(j:=1;j<size(z);j++){
if(z[j]!=undef and (abs(z[j])>1e-15 or z[j]==0)){
S:=S,z[j]};
}
z:=[S];
Z:=sort(z);
nz:=size(Z);
S:=NULL;
S:=S,Z[0];
for(j:=1;j<nz;j++){
if(Z[j]!=S[size(S)-1]){
S:=S,Z[j]};
}
Z:=[S];
nz:=size(Z);
l0:=" newLigneVariables(btex $"+nomv+"$ etex);";lp:=" "; lf:=" ";lsp:=" ";
LI:=limite(f(x),x,Z[0],1);
LF:=limite(f(x),x,Z[nz-1],-1);
LP:=NULL;
if(nz>2){ for(r:=1; r<=nz-2;r++){LP:=LP,if(member(Z[r],F)){limite(f(x),x,Z[r],-1),limite(f(x),x,Z[r],1)}else{f(Z[r])}}};
if(nz>2){ LL:=[LI,LP,LF]}else{LL:=[LI,LF]};
NL:=size(LL);
A:=NULL;aa:=1;kk:=0;
if(NL==nz){for(k:=0;k<nz-1;k++){TestS:=(sign(evalf(LL[k]-ao))==sign(evalf(LL[k+1]-ao))) or (sign(evalf(LL[k]-ao))==0.0)or (sign(evalf(LL[k+1]-ao))==0.0);
if(TestS==0){A:=A,aa;l0:=l0+"val(btex $"+latex(Z[k])+"$ etex);"+"val(btex $\\alpha_"+aa+"$ etex);";aa:=aa+1;}else{l0:=l0+"val(btex $"+latex(Z[k])+"$ etex);"}}
l0:=l0+"val(btex $"+latex(Z[nz-1])+"$ etex);"};
if(NL>nz){for(k:=0;k<NL-1;k++){TestS:=(sign(evalf(LL[k]-ao))==sign(evalf(LL[k+1]-ao))) or (sign(evalf(LL[k]-ao))==0.0)or (sign(evalf(LL[k+1]-ao))==0.0);
TestL:=(abs(LL[k])==abs(LL[k+1]));
if(TestS==0){ if( TestL==1 ){l0:=l0}else{
A:=A,aa;l0:=l0+"val(btex $"+latex(Z[kk])+"$ etex);"+"val(btex $\\alpha_"+aa+"$ etex);";aa:=aa+1;kk:=kk+1}}else{l0:=l0+"val(btex $"+latex(Z[kk])+"$ etex);";kk:=kk+1}}
l0:=l0+"val(btex $"+latex(Z[nz-1])+"$ etex);
"};
TestS:=(sign(evalf(LL[0]-ao))==sign(evalf(LL[1]-ao))) or (sign(evalf(LL[0]-ao))==0.0) or (sign(evalf(LL[1]-ao))==0.0);
k0:= evalf(limite(f(x),x=Z[0],1))> evalf(limite(f(x),x=Z[1],-1));
kz:=evalf(limite(f(x),x=Z[nz-1],-1))> evalf(limite(f(x),x=Z[nz-2],1));
lsi:=lsic+nom+"'("+nomv+")}$ etex);"+
if(Z[0]==-infinity){if(sign(evalf(fp(if(Z[1]==+infinity){0}else{Z[1]-10^(-5)})))==1){"plus;"}else{"moins;"}}else{if(member(Z[0],F)==0){
if(fp(Z[0])==0){"valBarre(btex 0 etex);"}else{" "}+
if(sign(fp((Z[0]+10^(-10))))==1){"plus;"}else{"moins;"}}else{"nonDefBarre;"+
if(sign(fp(10^(-10)+Z[0]))==1){"plus;"}else{"moins;"} }}+if(TestS==0){"valBarre(btex$ $ etex);"+ if(sign(fp(10^(-10)+Z[0]))==1){"plus;"}else{"moins;"}}else{" "};
if(nz>2){rr:=1; if(nz==NL){for(r:=1; r<=NL-2;r++){ TestS:=(sign(evalf(LL[r]-ao))==sign(evalf(LL[r+1]-ao))) or (sign(evalf(LL[r]-ao))==0.0)or (sign(evalf(LL[r+1]-ao))==0.0);
ksp:=evalf(fp(Z[r]+0.01))>0;
TestL:=(abs(LL[r])==abs(LL[r+1]));
lsp:=lsp+if(member(Z[r],F)==0){"valBarre(btex 0 etex);"}else{"nonDefBarre;"}+
if(ksp==1){"plus;"}else{"moins;"}+if(TestS==0){"valBarre(btex $ $ etex);"}else{" "}+if(TestS==0){if(ksp==1){"plus;"}else{"moins;"}}else{" "};
}}
else{for(r:=1; r<=NL-2;r++){kspp:=evalf(fp(Z[rr]+0.01))>0;TestS:=(sign(evalf(LL[r]-ao))==sign(evalf(LL[r+1]-ao))) or (sign(evalf(LL[r]-ao))==0.0)or (sign(evalf(LL[r+1]-ao))==0.0);
TestL:=(abs(LL[r])==abs(LL[r+1]));
if(TestS==0){if( TestL==1 ){lsp:=lsp}else{lsp:=lsp+if(member(Z[rr],F)==0){"valBarre(btex 0 etex);"}else{"nonDefBarre;"}+
if(kspp==1){"plus;"}else{"moins;"}+"valBarre(btex $ $ etex);"+if(kspp==1){"plus;"}else{"moins;"};rr:=rr+1;}
} else{lsp:=lsp+if(member(Z[rr],F)==0){"valBarre(btex 0 etex);"}else{"nonDefBarre;"}+
if(kspp==1){"plus;"}else{"moins;"};rr:=rr+1;}
}}
};
lsf:=if(member(Z[nz-1],F)==0){""}else{"nomDefBarre;"}
lm0:=limite(f(x),x=Z[0],1)==-infinity;
TestS:=(sign(evalf(LL[0]-ao))==sign(evalf(LL[1]-ao))) or (sign(evalf(LL[0]-ao))==0.0) or (sign(evalf(LL[1]-ao))==0.0);
li:=lvic+nom+"}$ etex);
"+ if(member(Z[0],F)==0){"valPos(btex $"+if(lm0==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[0],1)))}+"$ etex,"}
else{"nonDefBarre;limDroite(btex $"+if(lm0==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[0],1)))}+"$ etex,"}+
if(k0==1){"1);"}else{"0);"}+if(TestS==0){"valPos(btex $ "+ao+" $ etex,0.5);"}else{" "};
if(nz>2){if(nz==NL){for(r:=1; r<=nz-2;r++){TestS:=(sign(evalf(LL[r]-ao))==sign(evalf(LL[r+1]-ao))) or (sign(evalf(LL[r]-ao))==0.0)or (sign(evalf(LL[r+1]-ao))==0.0);
krm:=evalf(limite(f(x),x=Z[r-1],1))< evalf(limite(f(x),x=Z[r],-1));
krp:=evalf(limite(f(x),x=Z[r],1))> evalf(limite(f(x),x=Z[r+1],-1)) ;
lmrm:=limite(f(x),x=Z[r],-1)==-infinity;lmrp:=limite(f(x),x=Z[r],1)==-infinity;
lp:=lp+if(member(Z[r],F)) {
"limGauche(btex $"+if(lmrm==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[r],-1)))}+"$ etex,"+if(krm==1){"1);"}else{"0);"}+"nonDefBarre;limDroite(btex $"+if(lmrp==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[r],1)))}+"$ etex,"+if(krp==1){"1);"}else{"0);"}}
else{"valPos(btex $"+latex(simplifier(f(Z[r])))+"$
etex,"+if(sign(evalf(fp(Z[r]-0.01)))==sign(fp(Z[r]+0.01))){"0.5);"}else{if(krp==1){"1);"}else{"0);"}}}+if(TestS==0){"valPos(btex
$ "+ao+" $ etex,0.5);"
}else{" "};
};//for
}else{rr:=1;for(r:=1; r<=NL-2;r++){TestS:=(sign(evalf(LL[r]-ao))==sign(evalf(LL[r+1]-ao))) or (sign(evalf(LL[r]-ao))==0.0)or (sign(evalf(LL[r+1]-ao))==0.0);
krm:=evalf(limite(f(x),x=Z[rr-1],1))< evalf(limite(f(x),x=Z[rr],-1));
krp:=evalf(limite(f(x),x=Z[rr],1))> evalf(limite(f(x),x=Z[rr+1],-1)) ;
lmrm:=limite(f(x),x=Z[rr],-1)==-infinity;lmrp:=limite(f(x),x=Z[rr],1)==-infinity; TestL:=(abs(LL[r])==abs(LL[r+1]));
if(TestS==0){if( TestL==1 ){lp:=lp}else{ lp:=lp+if(member(Z[rr],F)) {
"limGauche(btex $"+if(lmrm==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[rr],-1)))}+"$ etex,"+if(krm==1){"1);"}else{"0);"}+"nonDefBarre;limDroite(btex $"+if(lmrp==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[rr],1)))}+"$ etex,"+if(krp==1){"1);"}else{"0);"}}
else{"valPos(btex $"+latex(simplifier(f(Z[rr])))+"$
etex,"+if(sign(evalf(fp(Z[rr]-0.01)))==sign(fp(Z[rr]+0.01))){"0.5);"}else{if(krp==1){"1);"}else{"0);"}}}+"valPos(btex
$ "+ao+" $ etex,0.5);
";rr:=rr+1;
}// else testL==1
}//testS==0
else{lp:=lp+if(member(Z[rr],F)){
"limGauche(btex $"+if(lmrm==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[rr],-1)))}+"$ etex,"+if(krm==1){"1);"}else{"0);"}+"nonDefBarre;limDroite(btex $"+if(lmrp==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[rr],1)))}+"$ etex,"+if(krp==1){"1);"}else{"0);"}}
else{"valPos(btex $"+latex(simplifier(f(Z[rr])))+"$
etex,"+if(sign(evalf(fp(Z[rr]-0.01)))==sign(fp(Z[rr]+0.01))){"0.5);"}else{if(krp==1){"1);"}else{"0);
"}}};rr:=rr+1;
}//else testS==0
}//for nz<NL
}// else nz<NL
//if nz=NL
};//if nz>2
lnz:=limite(f(x),x=Z[nz-1],-1)==-infinity;
lf:=if(member(Z[nz-1],F)==0){"valPos(btex $"+if(lnz==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[nz-1],-1)))}+"$ etex,"}else{"nonDefBarre;limGauche(btex $"+if(lnz==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[nz-1],-1)))}+"$ etex,"}+
if(kz==1){"1);"}else{"0);"};
MetaLfc:= if(ftt==2){if(nz>2){"beginTableau("+nmr+")"+
l0+lsi+lsp+lsf+"
endTableau;
";}else{
"beginTableau("+nmr+")"+
l0+
lsi+lsf+"
endTableau;
";
}
}else{
if(ftt==0){if(nz>2){"beginTableau("+nmr+")"+
l0+
li+
lp+
lf
+"
endTableau;
";}else{"beginTableau("+nmr+")"+
l0+
li+
lf
+"
endTableau;
";}}else{
if(nz>2){"beginTableau("+nmr+")"+
l0+
lsi+lsp+lsf+
li+
lp+
lf
+"
endTableau;
";}else{"beginTableau("+nmr+")"+
l0+
lsi+lsf+
li+
lf
+"
endTableau;
";}
}};
sortie:=fopen("XCasmpfc.mp");
fprint(sortie,Unquoted,MetaLfc);
fclose(sortie);
}:;
\end{VerbatimOut}
\begin{VerbatimOut}{XcasTVP.cxx}
TVP(L,F,nom,nomv,ff,ftt,trigo,nmr):={
//local Z,LLL,FFF,nl,fp,f,S,d,t,ns,k,m,x,j,kk,nz,u,l0;
nl:=size(L);
fp:=[];
S:=[];
f:=ff;
Z:=[];
LLL:=[];
for(d:=0;d<=1;d++){
f:=subst(f,f[d]=unapply(f[d],t));
fp:=append(fp,fonction_derivee(f[d]));
LLL:=concat(L,F[d]);
Z:=LLL union Z;
ns:=size(resoudre(factor(simplifier(fp[d](t))),t));
reset_solve_counter(0);
for(k:=0;k<ns;k++){
if(trigo==1){
all_trig_solutions:=1;
reset_solve_counter(-1,-1);m:=0;
while(simplifier(subst(resoudre(factor(simplifier(fp[d](t))),t)[k],n_1=m))<=evalf(L[nl-1])){
reset_solve_counter(-1,-1);
S:=concat(S,simplifier(subst(resoudre(factor(simplifier(fp[d](t))),t)[k],n_1=m)));m:=m+1;
reset_solve_counter(-1,-1);
};m:=-1;
while(evalf(subst(resoudre(factor(simplifier(fp[d](t))),t)[k],n_1=m))>=L[0]){
reset_solve_counter(-1,-1);
S:=concat(S,simplifier(subst(resoudre(factor(simplifier(fp[d](t))),t)[k],n_1=m)));m:=m-1;
reset_solve_counter(-1,-1);
}
}else{
S:=concat(S,resoudre(factor(simplifier(fp[d](x))),x));
}
}
si size(S)>0 alors pour j de 0 jusque size(S)-1 faire
qq:=member(simplifier(S[j]),Z)==0;
kk:=(evalf(S[j])>=evalf(L[0])) and (evalf(S[j])<=evalf(L[nl-1]));
if(kk==1){if(qq==1){Z:=append(Z,simplifier(S[j]))}};
fpour
fsi;
Z:=sort(Z);
nz:=size(Z);
tantque simplifier(Z[0])==simplifier(Z[1]) faire Z:=Z[1..nz-1];nz:=size(Z);
ftantque;
nz:=size(Z);
u:=1;
tantque (u<nz-2) and (nz>2) faire
tantque Z[u]==Z[u+1] faire
Z:=augment(Z[0..u-1],Z[u+1..nz-1]);nz:=size(Z);
ftantque;
u:=u+1;
ftantque;
};
Z:=sort(Z);
nz:=size(Z);
l0:=" newLigneVariables(btex $"+nomv+"$ etex);";lp:="",""; lf:="","";lsp:="","";
pour m de 0 jusque nz-1 faire l0:=l0+"val(btex $"+latex(Z[m])+"$ etex);
";fpour;
lsi:="","";
FFF:=[[],[]];
for(d:=0;d<=1;d++){
FFF[d]:=concat(F[d],[-infinity,+infinity]);
k0:= evalf(limite(f[d](x),x=Z[0],1))> evalf(limite(f[d](x),x=Z[1],-1));
kz:=evalf(limite(f[d](x),x=Z[nz-1],-1))> evalf(limite(f[d](x),x=Z[nz-2],1));
lsi[d]:=lsic+nom[d]+"'("+nomv+")}$ etex);"+if(member(Z[0],FFF[d])==0){"valBarre(btex $"+latex(simplifier(fp[d](Z[0])))+"$ etex);"}else{if(Z[0]==-infinity){" "}else{"nonDefBarre;
"}}+
if(Z[0]==-infinity){if(sign(evalf(fp[d](if(Z[1]==+infinity){0}else{Z[1]-10^(-5)})))==1){"plus;"}else{"moins;"}}else{if(member(Z[0],F[d])==0){
if(sign(fp[d](Z[0]+10^(-5)))==1){"plus;"}else{"moins;"}}else{
if(sign(fp[d]((Z[0]+10^(-5))))==1){"plus;"}else{"moins;"} }}
if(nz>2){ for(r:=1; r<=nz-2;r++){ ksp:=evalf(fp[d](Z[r]+0.01))>0;
lsp[d]:=lsp[d]+if(member(Z[r],F[d])==0){"valBarre(btex $"+latex(simplifier(fp[d](Z[r])))+"$ etex);"}else{"nonDefBarre;"}+
if(ksp==1){"plus;"}else{"moins;"}
}; }
lsf[d]:=if(member(Z[nz-1],FFF[d])==0){"valBarre(btex $"+latex(simplifier(fp[d](Z[nz-1])))+"$ etex);"}else{if(Z[nz-1]==+infinity){" "}else{"nonDefBarre;"}}
}
lm0:=1,2; li:=1,2; krm:=1,2; krp:=1,2; lmrm:=1,2; lmrp:=1,2; lp:="",""; lnz:=1,2; lf:=1,2; Kz:=1,2;K0:=1,2;
for(d:=0;d<=1;d++){
K0[d]:= evalf(limite(f[d](x),x=Z[0],1))> evalf(limite(f[d](x),x=Z[1],-1));
Kz[d]:=evalf(limite(f[d](x),x,Z[nz-1],-1))> evalf(limite(f[d](x),x,Z[nz-2],1));
lm0[d]:=limite(f[d](x),x,Z[0],1)==-infinity;
li[d]:=lvic+nom[d]+"}$ etex);"+
if(member(Z[0],F[d])==0){"valPos(btex $"+if(lm0[d]==1){"-\\infty"}else{latex(simplifier(limite(f[d](x),x,Z[0],1)))}+"$ etex,"}
else{"nonDefBarre;limDroite(btex $"+if(lm0[d]==1){"-\\infty"}else{latex(simplifier(limite(f[d](x),x,Z[0],1)))}+"$ etex,"}+
if(K0[d]==1){"1"}else{"0"}+
");";
if(nz>2){ for(r:=1; r<=nz-2;r++){ krm[d]:=evalf(limite(f[d](x),x=Z[r-1],1))< evalf(limite(f[d](x),x=Z[r],-1));
krp[d]:=evalf(limite(f[d](x),x=Z[r],1))> evalf(limite(f[d](x),x,Z[r+1],-1)) ;
lmrm[d]:=limite(f[d](x),x,Z[r],-1)==-infinity;lmrp[d]:=limite(f[d](x),x,Z[r],1)==-infinity;
lp[d]:=lp[d]+if(member(Z[r],F[d])){
"limGauche(btex
$"+if(lmrm[d]==1){"-\\infty"}else{latex(simplifier(limite(f[d](x),x,Z[r],-1)))}+"$
etex,"+if(krm[d]==1){"1);"}else{"0);"}+"nonDefBarre;limDroite(btex $"+if(lmrp[d]==1){"-\\infty"}else{latex(simplifier(limite(f[d](x),x,Z[r],1)))}+"$ etex,"+if(krp[d]==1){"1);"}else{"0);"}}
else{"valPos(btex $"+latex(simplifier(f[d](Z[r])))+"$
etex,"+if(sign(evalf(fp[d](Z[r]-0.001)))==sign(evalf((fp[d](Z[r]+0.001))) )){"0.5);"}else{if(krp[d]==1){"1);"}else{"0);
"}}}
}; }
lnz[d]:=limite(f[d](x),x=Z[nz-1],-1)==-infinity;
lf[d]:=if(member(Z[nz-1],F[d])==0){"valPos(btex $"+if(lnz[d]==1){"-\\infty"}else{latex(simplifier(limite(f[d](x),x,Z[nz-1],-1)))}+"$ etex,"}else{"nonDefBarre;limGauche(btex $"+if(lnz[d]==1){"-\\infty"}else{latex(simplifier(limite(f[d](x),x,Z[nz-1],-1)))}+"$ etex,"}+
if(Kz[d]==1){"1);"}else{"0);
"};
}
MetaLfc:=if(ftt==2){if(nz>2){"
beginTableau("+nmr+")"+
l0+lsi[0]+lsp[0]+lsf[0]+lsi[1]+lsp[1]+lsf[1]+"
endTableau;
";}else{
intro+"beginTableau("+nmr+")"+
l0+
lsi[0]+lsf[0]+lsi[1]+lsf[1]+"
endTableau;
";
}
}else{ if(ftt==0){if(nz>2){"beginTableau("+nmr+")"+
l0+
li[0]+
lp[0]+
lf[0]+
li[1]+
lp[1]+
lf[1]
+"
endTableau;
";}else{"beginTableau("+nmr+")"+
l0+
li[0]+
lf[0]+
li[1]+
lf[1]
+"
endTableau;
";}}else{
if(nz>2){"beginTableau("+nmr+")"+
l0+
lsi[0]+lsp[0]+lsf[0]+
li[0]+
lp[0]+
lf[0]+
lsi[1]+lsp[1]+lsf[1]+
li[1]+
lp[1]+
lf[1]
+"
endTableau;
";}else{"beginTableau("+nmr+")"+
l0+
lsi[0]+lsf[0]+
li[0]+
lf[0]+
lsi[1]+lsf[1]+
li[1]+
lf[1]
+"
endTableau;
";}
}
}
sortie:=fopen("XCasmpfc.mp");
fprint(sortie,Unquoted,MetaLfc);
fclose(sortie);
}:;
\end{VerbatimOut}
\begin{VerbatimOut}{XcasTabSignL.cxx}
TS(nomf,L,D,nmr):={
L:=apply(f->unapply(f,x),L)
n:=size(L);
Z:=NULL;
mini:=D[0]; maxi:=D[1];
pour k de 0 jusque n-1 faire
S:=resoudre(L[k](x),x);
si size(S)>0 alors pour j de 0 jusque size(S)-1 faire
if(S[j]>mini and S[j]<maxi){Z:=Z,simplifier(S[j]);}
fpour;
fsi;
fpour;
Z:=sort(Z);
nz:=size(Z);
if(nz>2){pour u de 1 jusque nz-2 faire
si Z[u]==Z[u+1] alors Z:=Z[0..u-1],Z[u+1..nz-1];nz:=nz-1;
fsi;
fpour;};
nz:=size(Z);
if(nz==0){li:="";l0:="val(btex $"+latex(D[0])+"$ etex);val(btex $"+latex(D[1])+"$ etex);";
for(p:=0;p<=n-1;p++){li:=li+lsic+latex(L[p](x))+"}$ etex);"+
if(mini!=-infinity and L[p](mini)==0){"
valBarre(btex 0 etex);"}else{"
"}+
if(L[p]((mini+maxi)*0.5>0)){"plus;"}else{"moins;"}+if(maxi!=+infinity and L[p](maxi)==0){"
valBarre(btex 0 etex);"}else{"
"}
}
lf:=if(product(L[s]((mini+maxi)*.5),s,0,n-1)>0){"plus;"}else{"moins;"};
MetaLfc:=" beginTableau("+nmr+")
newLigneVariables(btex $ {x}$ etex);
"+l0+li+ lsic+nomf+"(x)}$ etex);"+
if(mini!=-infinity and product(L[s](mini),s,0,n-1)==0){"
valBarre(btex 0 etex);"}else{"
"}+ lf+
if(maxi!=+infinity and product(L[s](maxi),s,0,n-1)==0){"
valBarre(btex 0 etex);"}else{"
"}+"
endTableau;
"
;
}else{
l0:="val(btex $"+latex(D[0])+"$ etex);";li:=" ";lr:=" ";
pour m de 0 jusque nz-1 faire l0:=l0+"val(btex $"+latex(Z[m])+"$ etex);
";fpour;
l0:=l0+"val(btex $"+latex(D[1])+"$ etex);";
for(p:=0;p<=n-1;p++){lp:="";
li:=li+lsic+latex(L[p](x))+"}$ etex);"+
if(mini!=-infinity and L[p](mini)==0){"
valBarre(btex 0 etex);"}else{"
"}+
if(L[p](Z[0]-0.01)>0){"plus;"}else{"moins;"};
for(r:=0; r<=nz-2;r++){
lp:=lp+if(simplifier(L[p](Z[r]))==0){"
valBarre(btex 0 etex);"}else{"barre;
"}+
if(L[p]((Z[r]+Z[r+1])*.5)>0){"plus;"}else{"moins;"}};
li:=li+lp+ if(simplifier(L[p](Z[nz-1]))==0){"valBarre(btex 0 etex);"}else{"barre;"}+
if(L[p](Z[nz-1]+1.0)>0){"plus;"}else{"moins;
"}+if(maxi!=+infinity and L[p](maxi)==0){"
valBarre(btex 0 etex);"}else{"
"}
};
pour t de 0 jusque nz-2 faire
lr:=lr+if(product(L[s]((Z[t]+Z[t+1])*.5),s,0,n-1)>0){"plus;"}else{"moins;"}+"valBarre(btex 0 etex);"
fpour
MetaLfc:=" beginTableau("+nmr+")
newLigneVariables(btex $ {x}$ etex);
"+l0+
li
+ lsic+nomf+"(x)}$ etex);"+
if(mini!=-infinity and product(L[s](mini),s,0,n-1)==0){"
valBarre(btex 0 etex);"}else{"
"}+
if(product(L[s](Z[0]-0.01),s,0,n-1)>0){"plus;"}else{"moins;"}+"valBarre(btex 0 etex);"+
lr+
if(product(L[s](Z[nz-1]+0.01),s,0,n-1)>0){"plus;"}else{"moins;"}+
if(maxi!=+infinity and product(L[s](maxi),s,0,n-1)==0){"
valBarre(btex 0 etex);"}else{"
"}+"
endTableau;
";
}
sortie:=fopen("XCasmpfc.mp");
fprint(sortie,Unquoted,MetaLfc);
fclose(sortie);
}:;
\end{VerbatimOut}
\begin{VerbatimOut}{XcasTabSignQ.cxx}
TSq(nomf,L,Fo,D,nmr):={
L:=apply(f->unapply(f,x),L);
Fo:=apply(f->unapply(f,x),Fo);
L:=concat(L,Fo);
n:=size(L);
Z:=NULL;
m:=size(Fo);
F:=NULL;FF:=NULL;
mini:=D[0]; maxi:=D[1];
pour k de 0 jusque n-1 faire
S:=resoudre(L[k](x),x);
si size(S)>0 alors pour j de 0 jusque size(S)-1 faire
if(S[j]>mini and S[j]<maxi){Z:=Z,simplifier(S[j]);}
fpour;
fsi;
fpour;
pour k de 0 jusque m-1 faire
SF:=resoudre(Fo[k](x),x);
si size(SF)>0 alors pour j de 0 jusque size(SF)-1 faire
FF:=FF,simplifier(SF[j]);
if(SF[j]>mini and SF[j]<maxi){F:=F,simplifier(SF[j]);}
fpour;
fsi;
fpour;
Z:=sort(Z); // on classe les zeros dans l'ordre croissant
nz:=size(Z);
if(nz>2){pour u de 1 jusque nz-2 faire
si Z[u]==Z[u+1] alors Z:=Z[0..u-1],Z[u+1..nz-1];nz:=nz-1; // pour les zeros en double
fsi;
fpour;}
Z:=sort(Z);
nz:=size(Z);
if(nz>2){pour u de 1 jusque nz-2 faire
si Z[u]==Z[u+1] alors Z:=Z[0..u-1],Z[u+1..nz-1];nz:=nz-1;
fsi;
fpour;};
nz:=size(Z);
if(nz==0){li:="";l0:="val(btex $"+latex(D[0])+"$ etex);val(btex $"+latex(D[1])+"$ etex);";
for(p:=0;p<=n-1;p++){li:=li+lsic+latex(L[p](x))+"}$ etex);"+
if(mini!=-infinity and L[p](mini)==0){"
valBarre(btex 0 etex);"}else{"
"}+
if(L[p]((mini+maxi)*0.5>0)){"plus;"}else{"moins;"}+if(maxi!=+infinity and L[p](maxi)==0){"
valBarre(btex 0 etex);"}else{"
"}
}
lf:=if(product(L[s]((mini+maxi)*.5),s,0,n-1)>0){"plus;"}else{"moins;"};
MetaLfc:="
beginTableau("+nmr+")
newLigneVariables(btex $ {x}$ etex);
"+l0+li+
lsic+nomf+"(x)}$ etex);"+
if(member(mini,FF)==0){if(mini!=-infinity and product(L[s](mini),s,0,n-1)==0){"
valBarre(btex 0 etex);"}else{"
"}}else{"nonDefBarre;"}+ lf+
if(member(maxi,FF)==0){if(maxi!=+infinity and product(L[s](maxi),s,0,n-1)==0){"
valBarre(btex 0 etex);"}else{"
"}}else{"nonDefBarre;"}+"
endTableau;
"
;
}else{
l0:="val(btex $"+latex(D[0])+"$ etex);";li:=" ";lr:=" ";
pour m de 0 jusque nz-1 faire l0:=l0+"val(btex $"+latex(Z[m])+"$ etex);
";fpour;
l0:=l0+"val(btex $"+latex(D[1])+"$ etex);";
for(p:=0;p<=n-1;p++){lp:="";
li:=li+lsic+latex(L[p](x))+"}$ etex);"+
if(mini!=-infinity and L[p](mini)==0){"
valBarre(btex 0 etex);"}else{"
"}+
if(L[p](Z[0]-0.01)>0){"plus;"}else{"moins;"};
for(r:=0; r<=nz-2;r++){
lp:=lp+if(simplifier(L[p](Z[r]))==0){"
valBarre(btex 0 etex);"}else{"barre;
"}+
if(L[p]((Z[r]+Z[r+1])*.5)>0){"plus;"}else{"moins;"}};
li:=li+lp+ if(simplifier(L[p](Z[nz-1]))==0){"valBarre(btex 0 etex);"}else{"barre;"}+
if(L[p](Z[nz-1]+1.0)>0){"plus;"}else{"moins;
"}+if(maxi!=+infinity and L[p](maxi)==0){"
valBarre(btex 0 etex);"}else{" "}
};
pour t de 0 jusque nz-2 faire
lr:=lr+if(product(L[s]((Z[t]+Z[t+1])*.5),s,0,n-1)>0){"plus;"}else{"moins;"}+
if(member(Z[t+1],FF)==0){"valBarre(btex 0 etex);"}else{ "nonDefBarre;"}
fpour
MetaLfc:="
beginTableau("+nmr+")
newLigneVariables(btex $ {x}$ etex);
"+l0+
li
+
lsic+nomf+"(x)}$ etex);"+
if(member(mini,FF)==0){if(mini!=-infinity and product(L[s](mini),s,0,n-1)==0){"
valBarre(btex 0 etex);"}else{"
"}}else{"nonDefBarre;"}+
if(product(L[s](Z[0]-0.01),s,0,n-1)>0){"plus;"}else{"moins;"}+
if(member(Z[0],FF)==0){"valBarre(btex 0 etex);"}else{ "nonDefBarre;"}+
lr+
if(product(L[s](Z[nz-1]+0.01),s,0,n-1)>0){"plus;"}else{"moins;"}+
if(member(maxi,FF)==0){if(maxi!=+infinity and product(L[s](maxi),s,0,n-1)==0){"
valBarre(btex 0 etex);"}else{" "}}else{"nonDefBarre;"}+"
endTableau;
"
}
sortie:=fopen("XCasmpfc.mp");
fprint(sortie,Unquoted,MetaLfc);
fclose(sortie);
}:;
\end{VerbatimOut}
\begin{VerbatimOut}{XcasTabSigna.cxx}
TSa(a,b,c,d,nmr):={
zA:=resoudre(a*x+b=0,x)[0];
zB:=resoudre(c*x+d=0,x)[0];
zmin:=min(zA,zB);
zmax:=max(zA,zB);
Meta:= "
beginTableau("+nmr+")
newLigneVariables(btex $ {x}$ etex);
val(btex $-\\infty$ etex);val(btex $"+latex(zmin)+"$ etex);
val(btex $"+latex(zmax)+"$etex);
val(btex $+\\infty$ etex);
"+lsic+if(a==1){"x+"}else{if(a==-1){"-x+"}else{a+"x+"}}+b+"}$ etex);"
+ if(a>0){"moins;"}else{"plus;"}+
if(zmin==zA){"valBarre(btex 0 etex);"}else{"barre;"}+
if(zmin==zA){si a>0 alors "plus;"; sinon "moins;";fsi}
else{si a>0 alors "moins;"; sinon "plus;"; fsi}+
if(zmin==zA){"barre;"}else{"valBarre(btex 0 etex);"}+
if(a>0){"plus;"}else{"moins;"}
+lsic+if(c==1){"x+"}else{if(c==-1){"-x+"}else{c+"x+"}}+d+"}$ etex);"
+ if(c>0){"moins"}else{"plus"}+";"+
if(zmin==zB){"valBarre(btex 0 etex);"}else{"barre;"}+
if(zmin==zB){si c>0 alors "plus;"; sinon "moins;";fsi}
else{si c>0 alors "moins;"; sinon "plus;"; fsi}+
if(zmin==zB){"barre;"}else{"valBarre(btex 0 etex);"}+
if(c>0){"plus;"}else{"moins;"}
+lsic+"{("+if(a==1){"x+"}else{if(a==-1){"-x+"}else{a+"x+"}}+b+")("+if(c==1){"x+"}else{if(c==-1){"-x+"}else{c+"x+"}}+d+")}}$ etex);"
+ si a*c>0 alors plus; sinon moins;fsi+";"+
"valBarre(btex 0 etex);"+
si a*c>0 alors moins; sinon plus;fsi+";"+
"valBarre(btex 0 etex);"+
si a*c>0 alors plus; sinon moins;fsi+";"+"
endTableau;
"
;
sortie:=fopen("XCasmpfc.mp");
fprint(sortie,Unquoted,Meta);
fclose(sortie);
}:;
\end{VerbatimOut}
%%
%% Code giac/Xcas pour les Tableaux de Signes d'expression ne contenant
%% qu'un seul terme
\begin{VerbatimOut}{XcasTSc.cxx}
TSc(g,D,nmr):={
f:=unapply(g,x);
Z:=NULL;
mini:=D[0]; maxi:=D[1];lm:=" ";
S:=resoudre(f(x),x);
if(size(S)==0){
l0:="val(btex $"+latex(D[0])+"$ etex);val(btex $"+latex(D[1])+"$ etex);";
li:=if(mini!=-infinity and f(mini)==0){"
valBarre(btex 0 etex);"}else{"
"}+
if(mini!=-infinity or maxi!=+infinity){if(f((mini+maxi)*0.5>0)){"plus;"}else{"moins;"}}else{if(f(0)>0){"plus;"}else{"moins;"}};
lf:=if(maxi!=+infinity and f(maxi)==0){"
valBarre(btex 0 etex);"}else{"
"};
}
else{pour j de 0 jusque size(S)-1 faire
if(S[j]>mini and S[j]<maxi){Z:=Z,simplifier(S[j])};
fpour;
Z:=sort(Z);
nz:=size(Z);
if(nz>2){pour u de 1 jusque nz-2 faire
si Z[u]==Z[u+1] alors Z:=Z[0..u-1],Z[u+1..nz-1];nz:=nz-1;
fsi;
fpour;}
nz:=size(Z);
l0:=" ";li:=" ";lr:=" ";
if(nz==0){l0:="val(btex $"+latex(D[0])+"$ etex);val(btex $"+latex(D[1])+"$ etex);";
li:=if(mini!=-infinity and f(mini)==0){"
valBarre(btex 0 etex);"}else{"
"}+
if(f((mini+maxi)*0.5>0)){"plus;"}else{"moins;"};
lf:=if(maxi!=+infinity and f(maxi)==0){"
valBarre(btex 0 etex);"}else{"
"};
}else{
l0:="val(btex $"+latex(D[0])+"$ etex);";li:=" ";
pour m de 0 jusque nz-1 faire l0:=l0+"val(btex $"+latex(Z[m])+"$ etex);
";
fpour;
l0:=l0+"val(btex $"+latex(D[1])+"$ etex);";
li:= if(mini!=-infinity and f(mini)==0){"
valBarre(btex 0 etex);"}else{"
"}+
if(f(Z[0]-0.01)>0){"plus;"}else{"moins;"}+"valBarre(btex 0 etex);";
lm:=if(nz>=2){for(r:=0; r<=nz-2;r++){lm:=lm+if(f((Z[r]+Z[r+1])*.5)>0){"plus;"}else{"moins;"}+
"valBarre(btex 0 etex);"
}}else{" "};
lf:=if(f(Z[nz-1]+1.0)>0){"plus;"}else{"moins;"}+if(maxi!=+infinity and f(maxi)==0){"valBarre(btex 0 etex);"}else{"
"};
}};
MetaLfc:="
beginTableau("+nmr+")
newLigneVariables(btex $\\displaystyle {x}$ etex);
"+l0+lsic+latex(f(x))+"}$ etex);"+
li+lm+lf
+"
endTableau;
"
;
sortie:=fopen("XCasmpfc.mp");
fprint(sortie,Unquoted,MetaLfc);
fclose(sortie);
}:;
\end{VerbatimOut}
\newcommand{\dresse}[1]{\ifthenelse{\boolean{xcas}}{ \executGiacmp{XCas#1.giac} \immediate\write18{\cat XCasmpfc.mp >> \Tableaux.Tab.mp}
\immediate\write18{\cat enteteMP.cfg >> \Tableaux.Tab#1.mp}
\immediate\write18{\cat XCasmpfc.mp >> \Tableaux.Tab#1.mp}
\immediate\write18{\cat queue.mp >> \Tableaux.Tab#1.mp}
\immediate\write18{mpost -jobname=\Tableaux.Tab \Tableaux.Tab#1.mp}
\immediate\write18{\rem \Tableaux.Tab#1.mp}
} { \IfFileExists{\Tableaux.Tab.\theTVn}{}{ \PackageError{tablor}{Tableau absent non
reconstituable.}{Pour compiler il faut, soit les fichiers de
tableaux, soit le fichier \Tableaux.Tab.mp, soit disposer de
XCas.}}}
\begin{center}
\includegraphics{\Tableaux.Tab.\theTVn}
\end{center}
\stepcounter{TVn}}
\newcommand{\dressetoile}[1]{\IfFileExists{\Tableaux.Tab.\theTVn}{\immediate\write18{\cat TSav-\theTVn.mp >> \Tableaux.Tab.mp}}
{\executGiacmp{XCas#1.giac}\immediate\write18{\editeur XCasmpfc.mp }
\immediate\write18{\cat XCasmpfc.mp >> \Tableaux.Tab.mp}
\immediate\write18{\cp XCasmpfc.mp TSav-\theTVn.mp} \immediate\write18{\cat enteteMP.cfg >> \Tableaux.Tab#1.mp}
\immediate\write18{\cat XCasmpfc.mp >> \Tableaux.Tab#1.mp}} \immediate\write18{\cat queue.mp >> \Tableaux.Tab#1.mp}
\immediate\write18{mpost -jobname=\Tableaux.Tab \Tableaux.Tab#1.mp} \immediate\write18{\rem \Tableaux.Tab#1.mp}
\begin{center}
\includegraphics{\Tableaux.Tab.\theTVn}
\end{center}
\setcounter{TVn}{\theTVnbis} }
\begin{VerbatimOut}{XCasa.giac}
maple_mode(0);
read("config.cxx");
read("XcasTabSigna.cxx");
read("XCasa.user");
\end{VerbatimOut}
\newenvironment{TSa}
{\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\??]{XCasa.user}}
{\end{VerbatimOut}
\dresse{a}
}
\begin{VerbatimOut}{XCasQ.giac}
maple_mode(0);
read("config.cxx");
read("XcasTabSignQ.cxx");
read("XCasQ.user");
\end{VerbatimOut}
\newenvironment{TSq}{\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\??]{XCasQ.user}}
{\end{VerbatimOut}\dresse{Q}}
\newenvironment{TSq*}[1]{\setcounter{TVnbis}{\theTVn}
\setcounter{TVn}{#1}
\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\??]{XCasQ.user}}
{\end{VerbatimOut}\dressetoile{Q}}
\begin{VerbatimOut}{XCasL.giac}
maple_mode(0);
read("config.cxx");
read("XcasTabSignL.cxx");
read("XCasL.user");
\end{VerbatimOut}
\newenvironment{TS}{\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\??]{XCasL.user}}
{\end{VerbatimOut}\dresse{L}}
\newenvironment{TS*}[1]
{\setcounter{TVnbis}{\theTVn}
\setcounter{TVn}{#1}
\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\??]{XCasL.user}}
{\end{VerbatimOut}\dressetoile{L}}
\begin{VerbatimOut}{XCasTSc.giac}
maple_mode(0);
read("config.cxx");
read("XcasTSc.cxx");
read("XCasTSc.user");
\end{VerbatimOut}
\newenvironment{TSc*}[1]{\setcounter{TVnbis}{\theTVn}
\setcounter{TVn}{#1}
\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\??]{XCasTSc.user}}
{\end{VerbatimOut}\dressetoile{TSc}}
\newenvironment{TSc}{\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\??]{XCasTSc.user}}
{\end{VerbatimOut}\dresse{TSc}}
\begin{VerbatimOut}{XCasTV.giac}
maple_mode(0);
read("config.cxx");
read("XcasTV.cxx");
read("XCasTV.user");
\end{VerbatimOut}
\newenvironment{TV}{\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\??]{XCasTV.user}}{\end{VerbatimOut}
\dresse{TV}}
\newenvironment{TV*}[1]{\setcounter{TVnbis}{\theTVn}
\setcounter{TVn}{#1}
\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\??]{XCasTV.user}}{\end{VerbatimOut}\dressetoile{TV}}
\begin{VerbatimOut}{XCasTVP.giac}
maple_mode(0);
read("config.cxx");
read("XcasTVP.cxx");
read("XCasTVP.user");
\end{VerbatimOut}
\newenvironment{TVP}{\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\??]{XCasTVP.user}}{\end{VerbatimOut}
\dresse{TVP}}
\newenvironment{TVP*}[1]{\setcounter{TVnbis}{\theTVn}
\setcounter{TVn}{#1}
\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\??]{XCasTVP.user}}{\end{VerbatimOut}\dressetoile{TVP}}
\begin{VerbatimOut}{XCasTVZ.giac}
maple_mode(0);
read("config.cxx");
read("XcasTVZ.cxx");
read("XCasTVZ.user");
\end{VerbatimOut}
\newenvironment{TVZ}{\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\??]{XCasTVZ.user}}{\end{VerbatimOut}
\dresse{TVZ}}
\newenvironment{TVZ*}[1]{\setcounter{TVnbis}{\theTVn}
\setcounter{TVn}{#1}
\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\??]{XCasTVZ.user}}{\end{VerbatimOut}\dressetoile{TVZ}}
\begin{VerbatimOut}{XCasTVapp.giac}
maple_mode(0);
read("config.cxx");
read("XcasTVapp.cxx");
read("XCasTVapp.user");
\end{VerbatimOut}
\newenvironment{TVapp}{\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\??]{XCasTVapp.user}}{\end{VerbatimOut}
\dresse{TVapp}}
\newenvironment{TVapp*}[1]{\setcounter{TVnbis}{\theTVn}
\setcounter{TVn}{#1}
\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\??]{XCasTVapp.user}}{\end{VerbatimOut}\dressetoile{TVapp}}
\begin{VerbatimOut}{XCasTVI.giac}
maple_mode(0);
read("config.cxx");
read("XcasTVI.cxx");
read("XCasTVI.user");
\end{VerbatimOut}
\newenvironment{TVI}{\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\??]{XCasTVI.user}}{\end{VerbatimOut}\dresse{TVI}}
\newenvironment{TVI*}[1]{\setcounter{TVnbis}{\theTVn}
\setcounter{TVn}{#1}
\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\??]{XCasTVI.user}}{\end{VerbatimOut}\dressetoile{TVI}}
\begin{VerbatimOut}{XCasTVIapp.giac}
maple_mode(0);
read("config.cxx");
read("XcasTVIapp.cxx");
read("XCasTVIapp.user");
\end{VerbatimOut}
\newenvironment{TVIapp}{\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\??]{XCasTVIapp.user}}{\end{VerbatimOut}\dresse{TVIapp}}
\newenvironment{TVIapp*}[1]{\setcounter{TVnbis}{\theTVn}
\setcounter{TVn}{#1}
\VerbatimEnvironment\begin{VerbatimOut}[commandchars=\\??]{XCasTVIapp.user}}{\end{VerbatimOut}\dressetoile{TVIapp}}
\AtEndDocument{\immediate\write18{\cat queue.mp >> \Tableaux.Tab.mp}
}