summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Master/texmf-dist/doc/latex/tablor/README26
-rw-r--r--Master/texmf-dist/doc/latex/tablor/README-fr.txt28
-rw-r--r--Master/texmf-dist/doc/latex/tablor/Tablor.pdfbin0 -> 134715 bytes
-rw-r--r--Master/texmf-dist/doc/latex/tablor/Tablor.tex564
-rw-r--r--Master/texmf-dist/doc/latex/tablor/tablor.html813
-rw-r--r--Master/texmf-dist/tex/latex/tablor/tablor.sty726
-rw-r--r--Master/tlpkg/tlpsrc/collection-mathextra.tlpsrc1
-rw-r--r--Master/tlpkg/tlpsrc/tablor.tlpsrc2
8 files changed, 2160 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/tablor/README b/Master/texmf-dist/doc/latex/tablor/README
new file mode 100644
index 00000000000..a51504d7256
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/tablor/README
@@ -0,0 +1,26 @@
+The package allows the user to use the computer algebra system XCAS
+to generate tables of signs and of variations (the actual plotting of
+the tables uses the MetaPost macro package "tableauVariation.mp" :
+
+http://frederic.mazoit.free.fr/LaTeX_metapost/tableauVariations/ .
+
+The tablor package requires that shell escape be enabled.
+
+
+For instance :
+
+\begin{TV} TV([-10,+infinity],[-1,1],"g","t",x^2/(x^2-1),1,3) \end{TV}
+
+draws table of variations of x->x^2/(x^2-1).
+
+
+You can download XCAS here:
+
+
+http://www-fourier.ujf-grenoble.fr/%7Eparisse/giac.html
+
+
+The non-french users need to comment out every
+
+" \usepackage[upright]{fourier} "
+
diff --git a/Master/texmf-dist/doc/latex/tablor/README-fr.txt b/Master/texmf-dist/doc/latex/tablor/README-fr.txt
new file mode 100644
index 00000000000..9e1de707415
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/tablor/README-fr.txt
@@ -0,0 +1,28 @@
+L'extension tablor.sty permet de créer des tableaux de signes et de
+variations depuis latex en utilisant XCAS pour les calculs et MetaPOST
+pour les tableaux.
+
+On rentre par exemple:
+
+\begin{TV} TV([-10,+infinity],[-1,1],"g","t",x^2/(x^2-1),1,3) \end{TV}
+
+et on obtient le tableau de variation de x->x^2/(x^2-1).
+
+Les tableaux sont construits à partir du fichier tableauVariation.mp de
+Frédéric Mazoit disponible à l'adresse
+
+http://frederic.mazoit.free.fr/LaTeX_metapost/tableauVariations/
+
+XCAS est téléchargeable à l'adresse :
+
+http://www-fourier.ujf-grenoble.fr/%7Eparisse/giac_fr.html
+
+
+Les appels à giac ont été améliorés grâce à Yves Delhaye :
+
+http://www.yvesdelhaye.be/?Generateur-d-interrogations-le
+
+
+Il faut activer le shell-escape.
+
+
diff --git a/Master/texmf-dist/doc/latex/tablor/Tablor.pdf b/Master/texmf-dist/doc/latex/tablor/Tablor.pdf
new file mode 100644
index 00000000000..ba408074c10
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/tablor/Tablor.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/tablor/Tablor.tex b/Master/texmf-dist/doc/latex/tablor/Tablor.tex
new file mode 100644
index 00000000000..6e198239a9f
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/tablor/Tablor.tex
@@ -0,0 +1,564 @@
+\documentclass[12pt]{article}
+\usepackage[height=250mm,width=183mm]{geometry}
+\usepackage[upright]{fourier}
+\usepackage{tablor}
+\usepackage{listings,amsmath,verbatim,graphicx,xcolor}
+\usepackage[dvips,colorlinks=true]{hyperref}
+
+
+\definecolor{0.8white}{rgb}{0.8,0.8,0.8}
+\definecolor{0.2white}{rgb}{0.2,0.2,0.2}
+
+
+\newcommand{\lat}{
+\lstset{numbers=none,language=[LaTeX]{TeX},xleftmargin=10pt,%
+keywordstyle =\color{0.2white}\usefont{OT1}{cmtt}{b}{n},basicstyle=\ttfamily,commentstyle=\normalfont\scriptsize\slshape,
+ backgroundcolor=\color{0.8white},breaklines=true}
+}
+
+
+
+
+\title{\texttt{tablor.sty} \\La machine à créer des tableaux de signes et de variations }
+
+\author{Guillaume \textsc{Connan} \\ \href{http://gconnan.free.fr}{http://gconnan.free.fr}}
+
+\date{17 janvier 2008 - Version 1.2}
+
+\begin{document}
+
+\maketitle
+
+
+
+\section{Ça sert à quoi~?}
+
+Il s'agit d'obtenir rapidement un tableau de signes ou un tableau de variations en entrant un
+minimum de commandes.
+
+\section{Comment ça marche~?}
+
+On entre une instruction qu'on envoie via \LaTeX{} à \texttt{XCAS} qui effectue un certain nombre de
+calculs (résolution d'équations, calcul de limites). \texttt{XCAS} renvoie un résultat sous la forme
+d'un script \texttt{MetaPOST} qui est compilé. Un tableau est créé et ensuite inséré dans le document
+\texttt{tex}.
+
+
+\section{De quoi a-t-on besoin~?}
+
+\begin{itemize}
+
+\item Il faut avoir installé \texttt{XCAS}, logiciel multi-plateforme de calcul et de programmation~:
+
+\href{http://www-fourier.ujf-grenoble.fr/\%7Eparisse/giac\_fr.html}{http://www-fourier.ujf-grenoble.fr/\%7Eparisse/giac\_fr.html};
+
+\item il faut avoir le fichier de macros \texttt{MetaPOST}
+\texttt{tableauVariation.mp} de Frédéric Mazoit~:
+
+\href{http://frederic.mazoit.free.fr/LaTeX\_metapost/tableauVariations/}{http://frederic.mazoit.free.fr/LaTeX\_metapost/tableauVariations/};
+
+Pour ceux qui sont guère habitués à \texttt{MetaPOST}, cela ne pose aucun problème car les
+scripts et compilations \texttt{MetaPOST} se font automatiquement. Il suffit de créer dans son
+\texttt{texmf} personnel une arborescence du style~: \texttt{./texmfperso/metapost/tablor/} et d'y
+placer \texttt{tableauVariation.mp} puis un \texttt{rehash}. C'est exactement la même démarche que
+pour installer une nouvelle extension \LaTeX{}.
+
+
+
+\item il faut être en mode \texttt{shell-escape} pour autoriser
+ les sorties de la compilation \texttt{tex}. Pour \texttt{emacs}, on rajoute en
+ fin de fichier \verb+%%% mode: latex --shell-escape+; pour les autres éditeurs, il faut modifier
+ la commande de compilation. Sinon, on peut modifier le fichier \texttt{texmf.cnf}
+ pour que le mode soit automatisé en modifiant la ligne suivante~:~\texttt{shell-escape t};
+
+\item il faut avoir à disposition l'extension \texttt{fancyvrb};
+
+\item pour ceux qui compilent avec \texttt{pdf\LaTeX{}}, il faut avoir effectué les petits réglages
+ nécessaires à l'utilisation de figures produites par \texttt{MetaPOST};
+
+\item il faut enfin installer le fichier \texttt{tablor.sty} dans son \texttt{texmf} personnel.
+
+\end{itemize}
+
+\bigskip
+
+
+ Pour les utilisateurs de Microsoft Windows, remplacer
+ \verb+\immediate\write18{giac<#1 }+ par
+ \verb+\immediate\write18{giac #1 }+ dans le fichier \texttt{tablor.sty}
+ pour permettre le \texttt{shell-escape}\\
+\smallskip
+Pour les utilisateurs de TeXnicCenter, observez cette
+\href{http://img221.imageshack.us/img221/27/capture20080114215233hu7.png}{explication} du
+paramétrage du \texttt{shell-escape}. On peut par exemple mettre~:\\
+\texttt{-enable-write18 --shell-escape --src -interaction=nonstopmode "\%Wm"}.\\
+Sur TeXmaker, c'est \texttt{latex -enable-write18 --shell-escape -interaction=nonstopmode \%.tex}.\\
+\smallskip
+Pour faire comprendre à XP où trouver \texttt{giac}, vous pouvez modifier le \texttt{path} en suivant
+ces instructions~: \\
+Demarrer->Panneau de configuration->Système onglet Avancé->Variable d'environnement.\\
+Le séparateur est le point virgule.
+(Merci à Gaëtan et à Daniel).
+
+
+\bigskip
+
+
+\section{Comment l'utiliser~?}
+
+\subsection{Préambule}
+
+Les ECM donnés en exemple correspondent à une compilation \texttt{\LaTeX{}+dvi+dvips}.
+
+Le préambule sera toujours~:
+
+\lat
+
+\begin{lstlisting}
+\documentclass{article}
+\usepackage{graphicx,tablor}
+\usepackage[upright]{fourier}
+\end{lstlisting}
+
+
+\subsection{Tableaux des variations}
+
+L'environnement s'appelle \texttt{TV}. On utilise une commande au format \texttt{XCAS}~:
+
+%\xcas
+
+\begin{lstlisting}
+TV([borne inf,borne sup],[valeurs interdites],"nom fonction","nom variable",expression en fonction de x,t,numero du tableau)
+\end{lstlisting}
+
+\begin{itemize}
+
+\item \texttt{[borne inf,borne sup]} désigne les bornes de l'ensemble de définition. On note
+ $+\infty$~:~\texttt{+infinity} et $-\infty$~:~\texttt{-infinity}. N'oubliez pas
+ les crochets~!
+\item \texttt{[valeurs interdites]} désigne la liste des valeurs interdites;
+\item \texttt{"nom fonction"} désigne la lettre représentant la fonction telle que vous voulez
+ qu'elle apparaisse : $f$, $g$, $h$, etc.
+\item \texttt{"nom variable"}~:~même chose pour la variable, selon que vous voulez la désigner par
+ $x$, $t$, etc. N'oubliez pas les guillemets~!
+\item \texttt{expression en fonction de x} désigne l'expression de la fonction. Attention~! Utilisez
+ ici toujours $x$ pour désigner la variable;
+\item le paramètre \texttt{t} est à remplacer par 1 si vous voulez voir apparaître une ligne
+ avec le signe de la dérivée et par 0 si vous ne voulez pas de cette ligne.
+\item le \texttt{numero du tableau}, comme son nom l'indique, nécessite de numéroter dans l'ordre
+ les tableaux créés par \texttt{tablor} dans votre document en commençant à un. La navigation entre
+ \texttt{\LaTeX{}}, \texttt{MetaPOST}, \texttt{XCAS}, le \texttt{shell} complique un peu la gestion des compteurs...
+\end{itemize}
+
+\lat
+
+Voyons à présent quelques exemples.
+
+\begin{enumerate}
+\item Le tableau de variation sans signe de la dérivée de la fonction $f~:~x\mapsto x^2$ sur $[-5 ; 7]$. On entre~:
+
+ \begin{lstlisting}
+\begin{TV}
+TV([-5,7],[],"f","x",x^2,0,1)
+\end{TV}
+ \end{lstlisting}
+
+et on obtient~:
+
+\begin{TV}
+TV([-5,7],[],"f","x",x^2,0,1)
+\end{TV}
+
+
+
+
+\item Si on veut la même fonction sur $]-\infty;+\infty[$ avec le signe de la dérivée~:
+
+ \begin{lstlisting}
+\begin{TV}
+TV([-infinity,+infinity],[],"f","x",x^2,1,2)
+\end{TV}
+ \end{lstlisting}
+
+\begin{TV}
+TV([-infinity,+infinity],[],"f","x",x^2,1,2)
+\end{TV}
+
+\item Voici ce que cela donne pour $g~:~t\mapsto \frac{t^2}{t^2-1}$ sur $[-10; +\infty[$~:
+
+ \begin{lstlisting}
+\begin{TV}
+TV([-10,+infinity],[-1,1],"g","t",x^2/(x^2-1),1,3)
+\end{TV}
+ \end{lstlisting}
+
+ \begin{center}
+
+
+\begin{TV}
+TV([-10,+infinity],[-1,1],"g","t",x^2/(x^2-1),1,3)
+\end{TV}
+
+\end{center}
+
+
+\item Il y aura des problèmes pour des équations $f'(x)=0$ que \texttt{XCAS} ne saurait pas résoudre
+ de manière formelle. Il faudrait alors utiliser une résolution numérique et remplacer
+ \texttt{resoudre} par \texttt{fsolve}. Mais dans les études demandées au Bac, l'étude des signes
+ de la dérivée est possible formellement. Dans les cas plus exotiques, on peut faire le tableau «~à
+ la main~».
+\end{enumerate}
+
+
+\subsection{Tableau des variations avec théorème des valeurs intermédiaires}
+
+Si l'on veut mettre en évidence les solutions de l'équation $f(x)=a$, on utilise l'environnement
+\texttt{TVI}.
+
+La syntaxe est~:
+
+\begin{lstlisting}
+TVI([borne inf,borne sup],[valeurs interdites],"nom fonction","nom variable",expression en fonction de x,t,a,numero du tableau)
+\end{lstlisting}
+
+Par exemple, pour $f~:~x\mapsto \frac{x^2}{x^2-1}$ et l'équation $f(x)=10$ on entre~:
+
+\begin{lstlisting}
+\begin{TVI}
+TVI([-10,+infinity],[-1,1],"f","x",x^2/(x^2-1),1,10,4)
+\end{TVI}
+\end{lstlisting}
+
+
+et on obtient~:
+
+\begin{TVI}
+TVI([-10,+infinity],[-1,1],"f","x",x^2/(x^2-1),1,10,4)
+\end{TVI}
+
+Les solutions sont notées $\alpha_1$, $\alpha_2$, etc.
+
+Si l'équation est plutôt $f(x)=-1$~:
+
+
+\begin{lstlisting}
+\begin{TVI}
+TVI([-10,+infinity],[-1,1],"f","x",x^2/(x^2-1),1,-1,5)
+\end{TVI}
+\end{lstlisting}
+
+
+et on obtient~:
+
+\begin{TVI}
+TVI([-10,+infinity],[-1,1],"f","x",x^2/(x^2-1),1,-1,5)
+\end{TVI}
+
+
+\subsection{Tableaux de signes}
+
+
+\subsubsection*{Cas du produit de deux facteurs affines}
+
+Pour étudier le signe de $(-2x+3)(-x+5)$, on entre~:
+
+\begin{lstlisting}
+\begin{TSa}
+ TSa(-2,3,-1,5,6);
+\end{TSa}
+\end{lstlisting}
+
+
+Le 6 correspond au numéro du tableau dans le document. On obtient~:
+
+\begin{TSa}
+TSa(-2,3,-1,5,6);
+\end{TSa}
+
+\subsubsection*{Cas du produit d'un nombre quelconque de facteurs quelconques}
+
+
+
+Certains cas pathologiques ne vont pas fonctionner, mais sinon, pour étudier le signe de
+\[(-2x+3)(x^2-1)(x^2+1)(x-1)(x^2-2)\] On entre cette fois les expressions sous cette forme~:
+
+\begin{lstlisting}
+\begin{TS}
+ TS([-2*x+3,x^2-1,x^2+1,x-1,x^2-2],7);
+\end{TS}
+\end{lstlisting}
+
+Le 7 correspond au numéro du tableau dans le document. On obtient~:
+
+
+\begin{TS}
+ TS([-2*x+3,x^2-1,x^2+1,x-1,x^2-2],7);
+\end{TS}
+
+
+\subsubsection*{Signe d'un quotient}
+
+On entre~:
+
+
+\begin{lstlisting}
+\begin{TSq}
+TSq("nom du quotient",[liste des facteurs du numérateur],[liste des facteurs du
+dénominateur],numéro du tableau dans le document)
+\end{TSq}
+\end{lstlisting}
+
+Par exemple, pour étudier le signe de $\dfrac{(-2x+3)(-4x+5)}{(x^2-16)(x-2)}$~:
+
+\begin{lstlisting}
+\begin{TSq}
+TSq("Q",[-2*x+3,-4*x+5],[x^2-16,x-2],8)
+\end{TSq}
+\end{lstlisting}
+
+
+
+
+\begin{TSq}
+TSq("Q",[-2*x+3,-4*x+5],[x^2-16,x-2],8)
+\end{TSq}
+
+\section{Nettoyage}
+
+L'extension \texttt{tablor} contient également une commande \verb+\nettoyer+, qui, comme son nom
+l'indique, fait le ménage~:~on efface tous les fichiers auxiliaires créés et on garde uniquement les
+fichiers eps créés par \texttt{MetaPOST} ayant une extension sous forme de numéro.
+
+Il suffit de taper \verb+\nettoyer+ juste avant le \verb+\end{document}+
+
+\smallskip
+
+\fbox{ Pour les utilisateurs de Microsoft Windows, il faudra remplacer \texttt{rm} par \texttt{DEL}}
+
+\smallskip
+
+On peut également stocker les tableaux dans un autre dossier avec la commande
+\verb+\bouger{destination}+, qui, comme son nom l'indique, copie les fichiers eps vers
+\texttt{destination}. Il faudra le taper après \verb+\nettoyer+
+
+\begin{lstlisting}
+\nettoyer
+\bouger{/home/moi/Desktop/}
+
+\end{document}
+
+\end{lstlisting}
+
+
+
+\fbox{ Pour les utilisateurs de Microsoft Windows, il faudra remplacer \texttt{cp} par \texttt{XCOPY}}
+
+
+
+\section{Merci...}
+
+\begin{itemize}
+
+\item à \href{http://frederic.mazoit.free.fr/LaTeX\_metapost/tableauVariations/}{Frédéric \textsc{Mazoit}} pour son fichier \texttt{tableauVariation.mp};
+
+\item à \href{http://www.yvesdelhaye.be/?Generateur-d-interrogations-le}{Yves \textsc{Delhaye}} pour ses idées sur le \texttt{shell-escape}
+
+\item à \href{http://www-fourier.ujf-grenoble.fr/\%7Eparisse/giac\_fr.html}{Bernard
+ \textsc{Parisse}} pour \texttt{XCAS}.
+
+\end{itemize}
+
+\pagebreak
+
+\section{Galerie}
+
+Voici quelques exemples de tableaux~:
+
+\begin{lstlisting}
+\begin{TVI}
+TVI([-1,+infinity],[-1],"f","x",x^2/sqrt(x+1)-1,1,2,9)
+\end{TVI}
+\end{lstlisting}
+
+\begin{TVI}
+TVI([-1,+infinity],[-1],"f","x",x^2/sqrt(x+1)-1,1,2,9)
+\end{TVI}
+
+
+\begin{lstlisting}
+\begin{TVI}
+TVI([-1/2,+infinity],[],"f","x",x^2,1,2,10)
+\end{TVI}
+\end{lstlisting}
+
+
+\begin{TVI}
+TVI([-1/2,+infinity],[],"f","x",x^2,1,2,10)
+\end{TVI}
+
+
+\begin{lstlisting}
+\begin{TVI}
+TVI([0,+infinity],[0],"f","x",ln(x),1,2,11)
+\end{TVI}
+\end{lstlisting}
+
+\begin{TVI}
+TVI([0,+infinity],[0],"f","x",ln(x),1,2,11)
+\end{TVI}
+
+\begin{lstlisting}
+\begin{TV}
+TV([1,+infinity],[],"f","x",-ln(x),1,12)
+\end{TV}
+\end{lstlisting}
+
+\begin{TV}
+TV([1,+infinity],[],"f","x",-ln(x),1,12)
+\end{TV}
+
+
+
+\begin{lstlisting}
+\begin{TVI}
+TVI([-pi,pi],[],"f","x",cos(x),1,1/2,13)
+\end{TVI}
+\end{lstlisting}
+
+\begin{TVI}
+TVI([-pi,pi],[],"f","x",cos(x),1,1/2,13)
+\end{TVI}
+
+\begin{lstlisting}
+\begin{TV}
+TV([0,2*pi],[],"f","x",cos(x),1,14)
+\end{TV}
+\end{lstlisting}
+
+\begin{TV}
+TV([0,2*Pi],[],"f","x",cos(x),1,14)
+\end{TV}
+
+\fbox{ Il y aura des problèmes si vous demandez un tableau des variations d'une fonction
+ périodique sur un intervalle
+ d'amplitude supérieure à la période, mais est-ce vraiment utile ?...}
+
+
+
+\begin{lstlisting}
+\begin{TVI}
+TVI([0,pi],[pi/2],"h","t",tan(x),1,7,15)
+\end{TVI}
+\end{lstlisting}
+
+\begin{TVI}
+TVI([0,pi],[pi/2],"h","t",tan(x),1,7,15)
+\end{TVI}
+
+
+
+\begin{lstlisting}
+\begin{TVI}
+TVI([-1,1],[],"f","x",(1-x)*sqrt(1-x^2),1,1,16)
+\end{TVI}
+\end{lstlisting}
+
+\begin{TVI}
+TVI([-1,1],[],"f","x",(1-x)*sqrt(1-x^2),1,1,16)
+\end{TVI}
+
+\begin{lstlisting}
+\begin{TV}
+TV([-1,+infinity],[-1],"f","x",ln(1+x)-(x-x^2/2+x^3/3),1,17)
+\end{TV}
+\end{lstlisting}
+
+\begin{TV}
+TV([-1,+infinity],[-1],"f","x",ln(1+x)-(x-x^2/2+x^3/3),1,17)
+\end{TV}
+
+
+\begin{lstlisting}
+\begin{TS}
+TS([-2*x+3,x-1,x+1,x^2+3*x+1],18);
+\end{TS}
+\end{lstlisting}
+
+\begin{TS}
+TS([-2*x+3,x-1,x+1,x^2+3*x+1],18);
+\end{TS}
+
+\begin{lstlisting}
+\begin{TVI}
+TVI([-infinity,+infinity],[],"f","x",(x+2)*exp(x-1)-1,1,0,19)
+\end{TVI}
+\end{lstlisting}
+
+\begin{TVI}
+TVI([-infinity,+infinity],[],"f","x",(x+2)*exp(x-1)-1,1,0,19)
+\end{TVI}
+
+
+
+
+\begin{lstlisting}
+\begin{TVI}
+TVI([-infinity,+infinity],[],"f","x",1+(-2*x+1)*exp(2*x),1,0,20)
+\end{TVI}
+\end{lstlisting}
+
+\begin{TVI}
+TVI([-infinity,+infinity],[],"f","x",1+(-2*x+1)*exp(2*x),1,0,20)
+\end{TVI}
+
+
+
+
+\begin{lstlisting}
+\begin{TV}
+TV([0,+infinity],[],"f","x",ln(exp(x)+x)-x,1,21)
+\end{TV}
+\end{lstlisting}
+
+\begin{TV}
+TV([0,+infinity],[],"f","x",ln(exp(x)+x)-x,1,21)
+\end{TV}
+
+
+
+
+
+\begin{lstlisting}
+\begin{TVI}
+TVI([0,pi],[],"f","x",cos(x)-x,1,0,22)
+\end{TVI}
+\end{lstlisting}
+
+\begin{TVI}
+TVI([0,pi],[],"f","x",cos(x)-x,1,0,22)
+\end{TVI}
+
+\begin{lstlisting}
+\begin{TVI}
+TVI([0,+infinity],[0],"f","x",ln(x)-(ln(x))^2,1,-1,23)
+\end{TVI}
+\end{lstlisting}
+
+\begin{TVI}
+TVI([0,+infinity],[0],"f","x",ln(x)-(ln(x))^2,1,-1,23)
+\end{TVI}
+
+
+
+
+\nettoyer
+
+
+%\bouger{/home/moi/Desktop/}
+
+\end{document}
+
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: t
+%%% End:
diff --git a/Master/texmf-dist/doc/latex/tablor/tablor.html b/Master/texmf-dist/doc/latex/tablor/tablor.html
new file mode 100644
index 00000000000..1ff1f5ed59f
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/tablor/tablor.html
@@ -0,0 +1,813 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
+<!-- Created by htmlize-1.34 in css mode. -->
+<html>
+ <head>
+ <title>tablor.sty</title>
+ <style type="text/css">
+ <!--
+ body {
+ color: #f5deb3;
+ background-color: #000000;
+ font-weight: bold;
+ }
+ .comment {
+ /* font-lock-comment-face */
+ color: #ffd700;
+ background-color: #525252;
+ }
+ .comment-delimiter {
+ /* font-lock-comment-delimiter-face */
+ color: #ffd700;
+ background-color: #525252;
+ }
+ .flyspell-duplicate {
+ /* flyspell-duplicate-face */
+ color: #cdad00;
+ font-weight: bold;
+ text-decoration: underline;
+ }
+ .flyspell-incorrect {
+ /* flyspell-incorrect-face */
+ color: #ff4500;
+ font-weight: bold;
+ text-decoration: underline;
+ }
+ .font-latex-bold {
+ /* font-latex-bold-face */
+ color: #6b8e23;
+ font-weight: bold;
+ }
+ .font-latex-math {
+ /* font-latex-math-face */
+ color: #ffa500;
+ }
+ .font-latex-sedate {
+ /* font-latex-sedate-face */
+ color: #d3d3d3;
+ }
+ .font-latex-subscript {
+ /* font-latex-subscript-face */
+ font-size: 80%;
+ }
+ .font-latex-warning {
+ /* font-latex-warning-face */
+ color: #ff0000;
+ font-weight: bold;
+ }
+ .function-name {
+ /* font-lock-function-name-face */
+ color: #87ceeb;
+ }
+ .keyword {
+ /* font-lock-keyword-face */
+ color: #6495ed;
+ font-weight: bold;
+ }
+ .variable-name {
+ /* font-lock-variable-name-face */
+ color: #98fb98;
+ }
+
+ a {
+ color: inherit;
+ background-color: inherit;
+ font: inherit;
+ text-decoration: inherit;
+ }
+ a:hover {
+ text-decoration: underline;
+ }
+ -->
+ </style>
+ </head>
+ <body>
+ <pre>
+
+<span class="font-latex-sedate">\NeedsTeXFormat</span>{LaTeX2e}[1995/12/01]
+<span class="font-latex-sedate">\ProvidesPackage</span>{<span class="flyspell-incorrect">tablor</span>}
+ [17/01/2008 v1.2
+ la machine &#224; cr&#233;er des tableaux de signes et variations]
+
+
+
+<span class="comment-delimiter">%% </span><span class="comment">Cr&#233;e 5 environnements :
+</span><span class="comment-delimiter">%% </span><span class="comment">tableau de signes de 2 facteurs affines
+</span><span class="comment-delimiter">% </span><span class="font-latex-sedate"><span class="comment">\begin</span></span><span class="comment">{TSa}
+</span><span class="comment-delimiter">% </span><span class="comment"><span class="flyspell-duplicate">TSa</span></span><span class="comment">(-2,3,-1,5,1);
+</span><span class="comment-delimiter">% </span><span class="font-latex-sedate"><span class="comment">\end</span></span><span class="comment">{TSa}
+</span><span class="comment-delimiter">% </span><span class="comment">%%%%%% Pour des tableaux de plus de 2 facteurs
+</span><span class="comment-delimiter">%</span><span class="comment">
+</span><span class="comment-delimiter">% </span><span class="font-latex-sedate"><span class="comment">\begin</span></span><span class="comment">{TS}
+</span><span class="comment-delimiter">% </span><span class="comment">TS([-2*x+3,x^2-1,x^2+1,x-1,x^2-2],2);
+</span><span class="comment-delimiter">% </span><span class="font-latex-sedate"><span class="comment">\end</span></span><span class="comment">{TS}
+</span><span class="comment-delimiter">%</span><span class="comment">
+</span><span class="comment-delimiter">% </span><span class="comment">pour les tableaux de signes avec quotient
+</span><span class="comment-delimiter">%</span><span class="font-latex-sedate"><span class="comment">\begin</span></span><span class="comment">{TSq}
+</span><span class="comment-delimiter">%</span><span class="comment">TSq("Q",[-2*x+3,-4*x+5],[x^2-16,x-2],3)
+</span><span class="comment-delimiter">%%</span><span class="font-latex-sedate"><span class="comment">\end</span></span><span class="comment">{TSq}
+</span><span class="comment-delimiter">% </span><span class="comment">un tableau de variation :
+</span><span class="comment-delimiter">%</span><span class="comment">
+</span><span class="comment-delimiter">% </span><span class="font-latex-sedate"><span class="comment">\begin</span></span><span class="comment">{TV}
+</span><span class="comment-delimiter">% </span><span class="comment">TV([0,+infinity],[0],"h","x",ln(x)-(ln(x))^2,1,4)
+</span><span class="comment-delimiter">% </span><span class="font-latex-sedate"><span class="comment">\end</span></span><span class="comment">{TV}
+</span><span class="comment-delimiter">%</span><span class="comment">
+</span><span class="comment-delimiter">% </span><span class="comment">tableau avec valeurs </span><span class="comment"><span class="flyspell-incorrect">interm&#233;diares</span></span><span class="comment">
+</span><span class="comment-delimiter">%</span><span class="font-latex-sedate"><span class="comment">\begin</span></span><span class="comment">{TVI}
+</span><span class="comment-delimiter">%</span><span class="comment"><span class="flyspell-duplicate">TVI</span></span><span class="comment">([-1,+infinity],[-1],"f","x",x2/sqrt(x+1)-1,1,2,1)
+</span><span class="comment-delimiter">%</span><span class="font-latex-sedate"><span class="comment">\end</span></span><span class="comment">{TVI}
+</span><span class="comment-delimiter">%%%</span><span class="comment">
+</span>
+
+
+<span class="font-latex-sedate"><span class="keyword">\newcommand</span></span><span class="function-name">{</span><span class="font-latex-sedate"><span class="function-name">\nettoyer</span></span><span class="function-name">}</span>{
+<span class="font-latex-sedate">\immediate</span><span class="font-latex-sedate">\write</span>18{rm XCasmp.mp* XCasmp.log XCasmp?.mp* XCasmp?.log XCasmpTV.mp* XCasmpTV.<span class="flyspell-duplicate">log</span> *.out <span class="flyspell-duplicate">XCasmpTVI</span>.<span class="flyspell-duplicate">mp</span>* <span class="flyspell-duplicate">XCasmpTVI</span>.<span class="flyspell-duplicate">log</span>
+ *.in *.meta *<span class="flyspell-incorrect">mpx</span>*}}
+
+<span class="font-latex-sedate"><span class="keyword">\newcommand</span></span><span class="function-name">{</span><span class="font-latex-sedate"><span class="function-name">\bouger</span></span><span class="function-name">}</span>[1]{
+<span class="font-latex-sedate">\immediate</span><span class="font-latex-sedate">\write</span>18{cp <span class="flyspell-duplicate">XCas</span>* #1}}
+
+
+<span class="font-latex-sedate"><span class="keyword">\newcommand</span></span><span class="function-name">{</span><span class="font-latex-sedate"><span class="function-name">\recup</span></span><span class="function-name">}</span>[2]{
+<span class="font-latex-sedate">\immediate</span><span class="font-latex-sedate">\write</span>18{<span class="flyspell-duplicate">cp</span> #1 #2}}
+
+
+
+<span class="font-latex-sedate"><span class="keyword">\newcounter</span></span><span class="function-name">{</span><span class="function-name"><span class="flyspell-duplicate">TVn</span></span><span class="function-name">}</span>
+
+
+<span class="font-latex-sedate"><span class="keyword">\usepackage</span></span><span class="function-name">{fancyvrb}</span>
+<span class="comment-delimiter">%</span><span class="font-latex-sedate"><span class="comment">\usepackage</span></span><span class="comment">[upright]{fourier}
+</span>
+<span class="font-latex-sedate">\makeatletter</span>
+<span class="font-latex-sedate"><span class="keyword">\newcommand</span></span><span class="function-name">{</span><span class="font-latex-sedate"><span class="function-name">\executGiacmp</span></span><span class="function-name">}</span>[1]{
+<span class="font-latex-sedate">\immediate</span><span class="font-latex-sedate">\write</span>18{<span class="flyspell-incorrect">giac</span> &lt;#1 } }
+<span class="font-latex-sedate">\makeatother</span>
+
+
+<span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>{XcasTV.meta}
+TV(L,F,nom,<span class="flyspell-duplicate">nomv</span>,f,ftt,<span class="flyspell-duplicate">nmr</span>):={
+<span class="flyspell-duplicate">nl</span>:=<span class="flyspell-duplicate">size</span>(L);
+f:=unapply(f,x);
+<span class="flyspell-duplicate">fp</span>:=fonction_derivee(f);
+Z:=concat(L,F);
+S:=resoudre(fp(x),x);
+ si size(S)&gt;0 alors pour j de 0 jusque size(S)-1 faire
+ kk:=(evalf(S[j])&gt;=evalf(L[0])) and (evalf(S[j])&lt;=evalf(L[<span class="flyspell-duplicate">nl</span>-1]));
+ if(kk==1){Z:=append(Z,simplifier(S[j]))};
+ <span class="flyspell-duplicate">fpour</span>
+ <span class="flyspell-duplicate">fsi</span>;
+
+Z:=sort(Z);
+nz:=size(Z);
+ si Z[0]==Z[1] alors Z:=augment(Z[0],Z[2..nz-1]);nz:=<span class="flyspell-duplicate">nz</span>-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:=<span class="flyspell-duplicate">nz</span>-1;
+ fsi;
+<span class="flyspell-duplicate">fpour</span>;
+<span class="flyspell-duplicate">nz</span>:=size(Z);
+l0:=" newLigneVariables(btex <span class="font-latex-math">$"+nomv+"$</span> etex);";lp:=" "; lf:=" ";<span class="flyspell-duplicate">lsp</span>:=" ";
+pour m de 0 jusque nz-1 faire l0:=l0+"val(btex <span class="font-latex-math">$"+latex(Z[m])+"$</span> etex);";<span class="flyspell-duplicate">fpour</span>;
+
+ k0:= evalf(limite(f(x),x=Z[0],1))&gt; evalf(limite(f(x),x=Z[1],-1));
+ kz:=evalf(limite(f(x),x=Z[nz-1],-1))&gt; evalf(limite(f(x),x=Z[<span class="flyspell-duplicate">nz</span>-2],1));
+
+<span class="flyspell-duplicate">lsi</span>:="newLigneSignes(btex <span class="font-latex-math">$\\hbox{ Signe de }\\atop{\\displaystyle "+nom+"'("+nomv+")}$</span> <span class="flyspell-duplicate">etex</span>);"+
+ if(Z[0]==-infinity){if(sign(evalf(<span class="flyspell-duplicate">fp</span>(if(Z[1]==+infinity){0}else{Z[1]-10^(-5)})))==1){"plus;"}<span class="flyspell-duplicate">else</span>{"moins;"}}<span class="flyspell-duplicate">else</span>{if(<span class="flyspell-duplicate">member</span>(Z[0],F)==0){
+ if(<span class="flyspell-duplicate">sign</span>(<span class="flyspell-duplicate">fp</span>(Z[0]+10^(-5)))==1){"plus;"}<span class="flyspell-duplicate">else</span>{"moins;"}}<span class="flyspell-duplicate">else</span>{"<span class="flyspell-duplicate">nonDefBarre</span>;"+
+ if(<span class="flyspell-duplicate">sign</span>(<span class="flyspell-duplicate">fp</span>((Z[0]+10^(-5))))==1){"plus;"}else{"moins;"} }}
+
+if(nz&gt;2){ for(r:=1; r&lt;=nz-2;r++){ ksp:=evalf(fp(Z[r]+0.01))&gt;0;
+ lsp:=lsp+if(member(Z[r],F)==0){"valBarre(btex 0 etex);"}else{"<span class="flyspell-duplicate">nonDefBarre</span>;"}+
+ if(ksp==1){"plus;"}else{"moins;"}
+ }; }
+
+<span class="flyspell-duplicate">lsf</span>:=if(member(Z[nz-1],F)==0){""}else{"<span class="flyspell-duplicate">nomDefBarre</span>;"}
+<span class="flyspell-duplicate">lm</span>0:=limite(f(x),x=Z[0],1)==-<span class="flyspell-duplicate">infinity</span>;
+ li:="newLigneVariations(btex <span class="font-latex-math">$\\hbox{\</span><span class="font-latex-bold"><span class="font-latex-math">\bf</span></span><span class="font-latex-math"> Variations de }\\atop{\\displaystyle \\Mathbold{"+nom+"}}$</span> <span class="flyspell-duplicate">etex</span>);"+
+ if(member(Z[0],F)==0){"valPos(btex <span class="font-latex-math">$"+if(lm0==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[0],1)))}+"$</span> <span class="flyspell-duplicate">etex</span>,"}
+ else{"nonDefBarre;limDroite(btex <span class="font-latex-math">$"+if(lm0==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[0],1)))}+"$</span> <span class="flyspell-duplicate">etex</span>,"}+
+ if(k0==1){"1"}<span class="flyspell-duplicate">else</span>{"0"}+
+ ");";
+
+ if(nz&gt;2){ for(r:=1; r&lt;=nz-2;r++){ krm:=evalf(limite(f(x),x=Z[r-1],1))&lt; evalf(limite(f(x),x=Z[r],-1));
+ krp:=evalf(limite(f(x),x=Z[r],1))&gt; 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)==-<span class="flyspell-duplicate">infinity</span>;
+ lp:=lp+if(member(Z[r],F)){
+ "limGauche(btex <span class="font-latex-math">$"+if(lmrm==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[r],-1)))}+"$</span> etex,"+if(krm==1){"1);"}<span class="flyspell-duplicate">else</span>{"0);"}+"nonDefBarre;limDroite(btex <span class="font-latex-math">$"+if(lmrp==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[r],1)))}+"$</span> etex,"+if(krp==1){"1);"}<span class="flyspell-duplicate">else</span>{"0);"}}
+ else{"valPos(btex <span class="font-latex-math">$"+latex(simplifier(f(Z[r])))+"$</span> etex,"+if(sign(evalf(fp(Z[r]-0.01)))==sign(fp(Z[r]+0.01))){"0.5);"}<span class="flyspell-duplicate">else</span>{if(krp==1){"1);"}<span class="flyspell-duplicate">else</span>{"0);"}}}
+ }; }
+
+<span class="flyspell-duplicate">lnz</span>:=limite(f(x),x=Z[nz-1],-1)==-<span class="flyspell-duplicate">infinity</span>;
+ lf:=if(member(Z[nz-1],F)==0){"valPos(btex <span class="font-latex-math">$"+if(lnz==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[nz-1],-1)))}+"$</span> etex,"}else{"<span class="flyspell-duplicate">nonDefBarre</span>;limGauche(btex <span class="font-latex-math">$"+if(lnz==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[nz-1],-1)))}+"$</span> <span class="flyspell-duplicate">etex</span>,"}+
+ if(kz==1){"1);"}<span class="flyspell-duplicate">else</span>{"0);"};
+
+
+<span class="flyspell-duplicate">intro</span>:="input <span class="flyspell-duplicate">tableauVariation</span>;
+ <span class="flyspell-duplicate">verbatimtex</span>
+<span class="comment-delimiter">%</span><span class="comment">&amp;latex
+</span> <span class="font-latex-warning">\</span><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">documentclass</span><span class="function-name">{article}</span>
+ <span class="font-latex-warning">\</span><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">usepackage</span><span class="variable-name">[upright]</span><span class="function-name">{fourier}</span>
+ <span class="font-latex-warning">\</span><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">usepackage</span><span class="function-name">{amsmath}</span>
+ <span class="font-latex-warning">\</span><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">newcommand</span><span class="function-name">{</span><span class="function-name"><span class="font-latex-warning">\\</span></span><span class="function-name">Mathbold}</span>[1]{<span class="font-latex-warning">\</span><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">mbox</span><span class="function-name">{</span><span class="function-name"><span class="font-latex-warning">\\</span></span><span class="function-name">boldmath</span><span class="function-name"><span class="font-latex-math">$#1$</span></span><span class="function-name"><span class="font-latex-warning">\\</span></span><span class="function-name">unboldmath}</span>}
+ <span class="font-latex-warning">\</span><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">begin</span><span class="function-name">{document}</span>
+ <span class="flyspell-duplicate">etex</span>
+
+"
+
+
+<span class="flyspell-duplicate">MetaL</span>:= if(ftt==0){if(nz&gt;2){intro+"beginTableau("+<span class="flyspell-duplicate">nmr</span>+")"+
+ l0+
+li+
+<span class="flyspell-duplicate">lp</span>+
+<span class="flyspell-duplicate">lf</span>
++"<span class="flyspell-duplicate">endTableau</span>;
+<span class="flyspell-duplicate">end</span>";}else{intro+"beginTableau("+<span class="flyspell-duplicate">nmr</span>+")"+
+ l0+
+li+
+<span class="flyspell-duplicate">lf</span>
++"<span class="flyspell-duplicate">endTableau</span>;
+<span class="flyspell-duplicate">end</span>";}}<span class="flyspell-duplicate">else</span>{
+if(nz&gt;2){intro+"beginTableau("+<span class="flyspell-duplicate">nmr</span>+")"+
+ l0+
+<span class="flyspell-duplicate">lsi</span>+lsp+<span class="flyspell-duplicate">lsf</span>+
+li+
+<span class="flyspell-duplicate">lp</span>+
+<span class="flyspell-duplicate">lf</span>
++"<span class="flyspell-duplicate">endTableau</span>;
+<span class="flyspell-duplicate">end</span>";}else{intro+"beginTableau("+<span class="flyspell-duplicate">nmr</span>+")"+
+ l0+
+<span class="flyspell-duplicate">lsi</span>+<span class="flyspell-duplicate">lsf</span>+
+li+
+<span class="flyspell-duplicate">lf</span>
++"<span class="flyspell-duplicate">endTableau</span>;
+<span class="flyspell-duplicate">end</span>";}
+}
+
+<span class="flyspell-duplicate">return</span>(<span class="flyspell-duplicate">MetaL</span>);
+ }:;
+
+
+
+<span class="font-latex-sedate"><span class="keyword">\end</span></span><span class="function-name">{VerbatimOut}</span>
+
+<span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>{XcasTVI.<span class="flyspell-duplicate">meta</span>}
+
+
+<span class="flyspell-duplicate">TVI</span>(L,F,nom,nomv,f,ftt,ao,<span class="flyspell-duplicate">nmr</span>):={
+<span class="flyspell-duplicate">nl</span>:=<span class="flyspell-duplicate">size</span>(L);
+f:=unapply(f,x);
+<span class="flyspell-duplicate">fp</span>:=fonction_derivee(f);
+Z:=concat(L,F);
+S:=resoudre(fp(x),x);
+ si size(S)&gt;0 alors pour j de 0 jusque size(S)-1 faire
+ <span class="flyspell-duplicate">kk</span>:=(<span class="flyspell-duplicate">evalf</span>(S[j])&gt;=<span class="flyspell-duplicate">evalf</span>(L[0])) and (<span class="flyspell-duplicate">evalf</span>(S[j])&lt;=<span class="flyspell-duplicate">evalf</span>(L[<span class="flyspell-duplicate">nl</span>-1]));
+ if(<span class="flyspell-duplicate">kk</span>==1){Z:=append(Z,simplifier(S[j]))};
+ <span class="flyspell-duplicate">fpour</span>
+ <span class="flyspell-duplicate">fsi</span>;
+
+Z:=sort(Z);
+<span class="flyspell-duplicate">nz</span>:=size(Z);
+ si Z[0]==Z[1] alors Z:=augment(Z[0],Z[2..nz-1]);nz:=<span class="flyspell-duplicate">nz</span>-1;
+ <span class="flyspell-duplicate">fsi</span>;
+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:=<span class="flyspell-duplicate">nz</span>-1;
+ <span class="flyspell-duplicate">fsi</span>;
+<span class="flyspell-duplicate">fpour</span>;
+<span class="flyspell-duplicate">nz</span>:=size(Z);
+l0:=" newLigneVariables(btex <span class="font-latex-math">$"+nomv+"$</span> etex);";lp:=" "; lf:=" ";<span class="flyspell-duplicate">lsp</span>:=" ";
+
+
+
+LI:=limite(f(x),x,Z[0],1);
+<span class="flyspell-duplicate">LF</span>:=limite(f(x),x,Z[<span class="flyspell-duplicate">nz</span>-1],-1);
+<span class="flyspell-duplicate">LP</span>:=<span class="flyspell-duplicate">NULL</span>;
+if(nz&gt;2){ for(r:=1; r&lt;=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&gt;2){ LL:=[LI,LP,LF]}else{LL:=[LI,<span class="flyspell-duplicate">LF</span>]};
+
+<span class="flyspell-duplicate">NL</span>:=size(<span class="flyspell-duplicate">LL</span>);
+A:=NULL;aa:=1;<span class="flyspell-duplicate">kk</span>:=0;
+
+if(NL==nz){for(k:=0;k&lt;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]-<span class="flyspell-duplicate">ao</span>))==0.0);
+if(TestS==0){A:=A,aa;l0:=l0+"val(btex <span class="font-latex-math">$"+latex(Z[k])+"$</span> etex);"+"val(btex <span class="font-latex-math">$\\alpha_</span><span class="font-latex-subscript"><span class="font-latex-math">"</span></span><span class="font-latex-math">+aa+"$</span> etex);";aa:=aa+1;}else{l0:=l0+"val(btex <span class="font-latex-math">$"+latex(Z[k])+"$</span> <span class="flyspell-duplicate">etex</span>);"}}
+l0:=l0+"val(btex <span class="font-latex-math">$"+latex(Z[nz-1])+"$</span> <span class="flyspell-duplicate">etex</span>);"};
+
+if(NL&gt;nz){for(k:=0;k&lt;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]-<span class="flyspell-duplicate">ao</span>))==0.0);
+<span class="flyspell-duplicate">TestL</span>:=(abs(LL[k])==abs(LL[k+1]));
+if(TestS==0){ if( TestL==1 ){l0:=l0}<span class="flyspell-duplicate">else</span>{
+A:=A,aa;l0:=l0+"val(btex <span class="font-latex-math">$"+latex(Z[kk])+"$</span> etex);"+"val(btex <span class="font-latex-math">$\\alpha_</span><span class="font-latex-subscript"><span class="font-latex-math">"</span></span><span class="font-latex-math">+aa+"$</span> etex);";<span class="flyspell-duplicate">aa</span>:=aa+1;kk:=kk+1}}else{l0:=l0+"val(btex <span class="font-latex-math">$"+latex(Z[kk])+"$</span> etex);";kk:=<span class="flyspell-duplicate">kk</span>+1}}
+l0:=l0+"val(btex <span class="font-latex-math">$"+latex(Z[nz-1])+"$</span> <span class="flyspell-duplicate">etex</span>);"};
+
+
+
+<span class="flyspell-duplicate">TestS</span>:=(sign(evalf(LL[0]-ao))==sign(evalf(LL[1]-ao))) or (sign(evalf(LL[0]-ao))==0.0) or (sign(evalf(LL[1]-<span class="flyspell-duplicate">ao</span>))==0.0);
+ k0:= evalf(limite(f(x),x=Z[0],1))&gt; evalf(limite(f(x),x=Z[1],-1));
+ kz:=evalf(limite(f(x),x=Z[nz-1],-1))&gt; evalf(limite(f(x),x=Z[<span class="flyspell-duplicate">nz</span>-2],1));
+
+<span class="flyspell-duplicate">lsi</span>:="newLigneSignes(btex <span class="font-latex-math">$\\hbox{ Signe de }\\atop{\\displaystyle "+nom+"'("+nomv+")}$</span> <span class="flyspell-duplicate">etex</span>);"+
+ if(Z[0]==-<span class="flyspell-duplicate">infinity</span>){if(<span class="flyspell-duplicate">sign</span>(<span class="flyspell-duplicate">evalf</span>(<span class="flyspell-duplicate">fp</span>(if(Z[1]==+<span class="flyspell-duplicate">infinity</span>){0}<span class="flyspell-duplicate">else</span>{Z[1]-10^(-5)})))==1){"plus;"}<span class="flyspell-duplicate">else</span>{"moins;"}}<span class="flyspell-duplicate">else</span>{if(<span class="flyspell-duplicate">member</span>(Z[0],F)==0){
+ if(<span class="flyspell-duplicate">sign</span>(<span class="flyspell-duplicate">fp</span>((Z[0]+10^(-10))))==1){"plus;"}<span class="flyspell-duplicate">else</span>{"moins;"}}<span class="flyspell-duplicate">else</span>{"<span class="flyspell-duplicate">nonDefBarre</span>;"+
+ if(<span class="flyspell-duplicate">sign</span>(<span class="flyspell-duplicate">fp</span>(10^(-10)+Z[0]))==1){"plus;"}<span class="flyspell-duplicate">else</span>{"moins;"} }}+if(<span class="flyspell-duplicate">TestS</span>==0){"<span class="flyspell-duplicate">valBarre</span>(<span class="flyspell-duplicate">btex</span><span class="font-latex-math">$ $</span> <span class="flyspell-duplicate">etex</span>);"+ if(<span class="flyspell-duplicate">sign</span>(<span class="flyspell-duplicate">fp</span>(10^(-10)+Z[0]))==1){"plus;"}<span class="flyspell-duplicate">else</span>{"moins;"}}<span class="flyspell-duplicate">else</span>{" "};
+
+
+
+
+
+if(nz&gt;2){rr:=1; if(nz==NL){for(r:=1; r&lt;=NL-2;r++){ TestS:=(sign(evalf(LL[r]-ao))==sign(<span class="flyspell-duplicate">evalf</span>(LL[r+1]-ao))) or (sign(evalf(LL[r]-ao))==0.0)or (sign(evalf(LL[r+1]-<span class="flyspell-duplicate">ao</span>))==0.0);
+ ksp:=evalf(fp(Z[r]+0.01))&gt;0;
+ TestL:=(abs(LL[r])==abs(LL[r+1]));
+ lsp:=lsp+if(member(Z[r],F)==0){"valBarre(btex 0 etex);"}else{"<span class="flyspell-duplicate">nonDefBarre</span>;"}+
+ if(ksp==1){"plus;"}else{"moins;"}+if(TestS==0){"valBarre(btex <span class="font-latex-math">$ $</span> etex);"}else{" "}+if(TestS==0){if(ksp==1){"plus;"}else{"moins;"}}<span class="flyspell-duplicate">else</span>{" "};
+ }}
+<span class="flyspell-duplicate">else</span>{for(r:=1; r&lt;=NL-2;r++){kspp:=evalf(fp(Z[rr]+0.01))&gt;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]-<span class="flyspell-duplicate">ao</span>))==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{"<span class="flyspell-duplicate">nonDefBarre</span>;"}+
+ if(kspp==1){"plus;"}else{"moins;"}+"valBarre(btex <span class="font-latex-math">$ $</span> etex);"+if(kspp==1){"plus;"}else{"moins;"};rr:=<span class="flyspell-duplicate">rr</span>+1;}
+ } else{lsp:=lsp+if(member(Z[rr],F)==0){"valBarre(btex 0 etex);"}else{"<span class="flyspell-duplicate">nonDefBarre</span>;"}+
+ if(kspp==1){"plus;"}else{"moins;"};rr:=<span class="flyspell-duplicate">rr</span>+1;}
+}}
+ };
+
+
+
+lsf:=if(member(Z[nz-1],F)==0){""}else{"<span class="flyspell-duplicate">nomDefBarre</span>;"}
+lm0:=limite(f(x),x=Z[0],1)==-<span class="flyspell-duplicate">infinity</span>;
+
+TestS:=(sign(evalf(LL[0]-ao))==sign(evalf(LL[1]-ao))) or (sign(evalf(LL[0]-ao))==0.0) or (sign(evalf(LL[1]-<span class="flyspell-duplicate">ao</span>))==0.0);
+
+ li:="newLigneVariations(btex <span class="font-latex-math">$\\hbox{\</span><span class="font-latex-bold"><span class="font-latex-math">\bf</span></span><span class="font-latex-math"> Variations de }\\atop{\\displaystyle \\Mathbold{"+nom+"}}$</span> <span class="flyspell-duplicate">etex</span>);"+
+ if(member(Z[0],F)==0){"valPos(btex <span class="font-latex-math">$"+if(lm0==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[0],1)))}+"$</span> etex,"}
+ else{"nonDefBarre;limDroite(btex <span class="font-latex-math">$"+if(lm0==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[0],1)))}+"$</span> <span class="flyspell-duplicate">etex</span>,"}+
+ if(k0==1){"1);"}else{"0);"}+if(TestS==0){"valPos(btex <span class="font-latex-math">$ "+ao+" $</span> etex,0.5);"}<span class="flyspell-duplicate">else</span>{" "};
+
+
+ if(nz&gt;2){if(nz==NL){for(r:=1; r&lt;=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(<span class="flyspell-duplicate">evalf</span>(LL[r+1]-ao))==0.0);
+ krm:=evalf(limite(f(x),x=Z[r-1],1))&lt; evalf(limite(f(x),x=Z[r],-1));
+ krp:=evalf(limite(f(x),x=Z[r],1))&gt; 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)==-<span class="flyspell-duplicate">infinity</span>;
+ lp:=lp+if(member(Z[r],F)) {
+ "limGauche(btex <span class="font-latex-math">$"+if(lmrm==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[r],-1)))}+"$</span> etex,"+if(krm==1){"1);"}<span class="flyspell-duplicate">else</span>{"0);"}+"nonDefBarre;limDroite(btex <span class="font-latex-math">$"+if(lmrp==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[r],1)))}+"$</span> etex,"+if(krp==1){"1);"}else{"0);"}}
+ else{"valPos(<span class="flyspell-duplicate">btex</span> <span class="font-latex-math">$"+latex(simplifier(f(Z[r])))+"$</span>
+ etex,"+if(sign(evalf(fp(Z[r]-0.01)))==sign(fp(Z[r]+0.01))){"0.5);"}<span class="flyspell-duplicate">else</span>{if(krp==1){"1);"}else{"0);"}}}+if(TestS==0){"valPos(<span class="flyspell-duplicate">btex</span>
+ <span class="font-latex-math">$ "+ao+" $</span> <span class="flyspell-duplicate">etex</span>,0.5);"
+ }else{" "};
+};//for
+}else{rr:=1;for(r:=1; r&lt;=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]-<span class="flyspell-duplicate">ao</span>))==0.0);
+ krm:=evalf(limite(f(x),x=Z[rr-1],1))&lt; evalf(limite(f(x),x=Z[<span class="flyspell-duplicate">rr</span>],-1));
+ krp:=evalf(limite(f(x),x=Z[rr],1))&gt; evalf(limite(f(x),x=Z[<span class="flyspell-duplicate">rr</span>+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 <span class="font-latex-math">$"+if(lmrm==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[rr],-1)))}+"$</span> etex,"+if(krm==1){"1);"}<span class="flyspell-duplicate">else</span>{"0);"}+"nonDefBarre;limDroite(btex <span class="font-latex-math">$"+if(lmrp==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[rr],1)))}+"$</span> etex,"+if(krp==1){"1);"}<span class="flyspell-duplicate">else</span>{"0);"}}
+ else{"valPos(btex <span class="font-latex-math">$"+latex(simplifier(f(Z[rr])))+"$</span>
+ 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(<span class="flyspell-duplicate">btex</span>
+ <span class="font-latex-math">$ "+ao+" $</span> <span class="flyspell-duplicate">etex</span>,0.5);
+ ";rr:=<span class="flyspell-duplicate">rr</span>+1;
+}// else <span class="flyspell-incorrect">testL</span>==1
+}//<span class="flyspell-duplicate">testS</span>==0
+<span class="flyspell-duplicate">else</span>{lp:=lp+if(member(Z[rr],F)){
+ "limGauche(btex <span class="font-latex-math">$"+if(lmrm==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[rr],-1)))}+"$</span> etex,"+if(krm==1){"1);"}<span class="flyspell-duplicate">else</span>{"0);"}+"nonDefBarre;limDroite(btex <span class="font-latex-math">$"+if(lmrp==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[rr],1)))}+"$</span> etex,"+if(krp==1){"1);"}else{"0);"}}
+ else{"valPos(btex <span class="font-latex-math">$"+latex(simplifier(f(Z[rr])))+"$</span>
+ etex,"+if(sign(<span class="flyspell-duplicate">evalf</span>(fp(Z[rr]-0.01)))==sign(fp(Z[rr]+0.01))){"0.5);"}else{if(krp==1){"1);"}<span class="flyspell-duplicate">else</span>{"0);
+ "}}};rr:=<span class="flyspell-duplicate">rr</span>+1;
+}//else <span class="flyspell-duplicate">testS</span>==0
+}//for nz&lt;<span class="flyspell-duplicate">NL</span>
+}// else nz&lt;<span class="flyspell-duplicate">NL</span>
+//if nz=NL
+};//if <span class="flyspell-duplicate">nz</span>&gt;2
+
+
+lnz:=limite(f(x),x=Z[nz-1],-1)==-<span class="flyspell-duplicate">infinity</span>;
+ lf:=if(member(Z[nz-1],F)==0){"valPos(btex <span class="font-latex-math">$"+if(lnz==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[nz-1],-1)))}+"$</span> etex,"}else{"nonDefBarre;limGauche(btex <span class="font-latex-math">$"+if(lnz==1){"-\\infty"}else{latex(simplifier(limite(f(x),x=Z[nz-1],-1)))}+"$</span> etex,"}+
+ if(kz==1){"1);"}<span class="flyspell-duplicate">else</span>{"0);"};
+
+
+
+<span class="flyspell-duplicate">intro</span>:="
+input <span class="flyspell-duplicate">tableauVariation</span>;
+<span class="flyspell-duplicate">verbatimtex</span>
+<span class="comment-delimiter">%</span><span class="comment">&amp;latex
+</span> <span class="font-latex-warning">\</span><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">documentclass</span><span class="function-name">{article}</span>
+ <span class="font-latex-warning">\</span><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">usepackage</span><span class="variable-name">[upright]</span><span class="function-name">{fourier}</span>
+ <span class="font-latex-warning">\</span><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">usepackage</span><span class="function-name">{amsmath}</span>
+ <span class="font-latex-warning">\</span><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">newcommand</span><span class="function-name">{</span><span class="function-name"><span class="font-latex-warning">\\</span></span><span class="function-name">Mathbold}</span>[1]{<span class="font-latex-warning">\</span><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">mbox</span><span class="function-name">{</span><span class="function-name"><span class="font-latex-warning">\\</span></span><span class="function-name">boldmath</span><span class="function-name"><span class="font-latex-math">$#1$</span></span><span class="function-name"><span class="font-latex-warning">\\</span></span><span class="function-name">unboldmath}</span>}
+ <span class="font-latex-warning">\</span><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">begin</span><span class="function-name">{document}</span>
+ <span class="flyspell-duplicate">etex</span>
+
+";
+
+
+<span class="flyspell-duplicate">MetaL</span>:= if(ftt==0){if(nz&gt;2){intro+"beginTableau("+<span class="flyspell-duplicate">nmr</span>+")"+
+ l0+
+li+
+<span class="flyspell-duplicate">lp</span>+
+<span class="flyspell-duplicate">lf</span>
++"endTableau;
+<span class="flyspell-duplicate">end</span>";}else{intro+"beginTableau("+<span class="flyspell-duplicate">nmr</span>+")"+
+ l0+
+li+
+<span class="flyspell-duplicate">lf</span>
++"endTableau;
+<span class="flyspell-duplicate">end</span>";}}else{
+if(nz&gt;2){intro+"beginTableau("+<span class="flyspell-duplicate">nmr</span>+")"+
+ l0+
+<span class="flyspell-duplicate">lsi</span>+lsp+lsf+
+li+
+<span class="flyspell-duplicate">lp</span>+
+<span class="flyspell-duplicate">lf</span>
++"endTableau;
+<span class="flyspell-duplicate">end</span>";}else{intro+"beginTableau("+<span class="flyspell-duplicate">nmr</span>+")"+
+ l0+
+<span class="flyspell-duplicate">lsi</span>+lsf+
+li+
+<span class="flyspell-duplicate">lf</span>
++"endTableau;
+<span class="flyspell-duplicate">end</span>";}
+};
+
+<span class="flyspell-duplicate">return</span>(<span class="flyspell-duplicate">MetaL</span>);
+ }:;
+
+
+
+<span class="font-latex-sedate"><span class="keyword">\end</span></span><span class="function-name">{VerbatimOut}</span>
+
+
+
+
+
+
+
+
+
+
+<span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>{XcasTabSignL.meta}
+<span class="flyspell-duplicate">TS</span>(L,nmr):={
+L:=apply(f-&gt;unapply(f,x),L)
+n:=size(L);
+Z:=<span class="flyspell-duplicate">NULL</span>;
+
+
+pour k de 0 jusque n-1 faire
+ S:=resoudre(L[k](x),x);
+ si size(S)&gt;0 alors pour j de 0 jusque size(S)-1 faire
+ Z:=Z,simplifier(S[j]);
+ <span class="flyspell-duplicate">fpour</span>;
+ fsi;
+<span class="flyspell-duplicate">fpour</span>;
+Z:=sort(Z);
+<span class="flyspell-duplicate">nz</span>:=size(Z);
+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:=<span class="flyspell-duplicate">nz</span>-1;
+ fsi;
+<span class="flyspell-duplicate">fpour</span>;
+nz:=size(Z);
+l0:=" ";li:=" ";lr:=" ";
+pour m de 0 jusque nz-1 faire l0:=l0+"val(btex <span class="font-latex-math">$"+latex(Z[m])+"$</span> etex);";<span class="flyspell-duplicate">fpour</span>;
+
+
+
+for(p:=0;p&lt;=n-1;p++){<span class="flyspell-duplicate">lp</span>:=" ";
+ li:=li+"newLigneSignes(btex <span class="font-latex-math">$\\hbox{\</span><span class="font-latex-bold"><span class="font-latex-math">\bf</span></span><span class="font-latex-math"> Signe de }\\atop{\\displaystyle \\Mathbold{"+latex(L[p](x))+"}}$</span> etex);"+
+ if(L[p](Z[0]-1.0)&gt;0){"plus;"}else{"moins;"}+
+ for(r:=0; r&lt;=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)&gt;0){"plus;"}else{"moins;"}}+
+ if(simplifier(L[p](Z[nz-1]))==0){"valBarre(btex 0 etex);"}else{"barre;"}+
+ if(L[p](Z[nz-1]+1.0)&gt;0){"plus;"}else{"moins;"}
+ };
+
+
+pour t de 0 jusque nz-2 faire
+ lr:=lr+if(product(L[s]((Z[t]+Z[t+1])*.5),s,0,n-1)&gt;0){"plus;"}else{"moins;"}+"valBarre(btex 0 <span class="flyspell-duplicate">etex</span>);"
+ fpour
+
+<span class="flyspell-duplicate">MetaL</span>:=" input <span class="flyspell-duplicate">tableauVariation</span>;
+ <span class="flyspell-duplicate">verbatimtex</span>
+<span class="comment-delimiter">%</span><span class="comment">&amp;latex
+</span> <span class="font-latex-warning">\</span><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">documentclass</span><span class="function-name">{article}</span>
+ <span class="font-latex-warning">\</span><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">usepackage</span><span class="variable-name">[upright]</span><span class="function-name">{fourier}</span>
+ <span class="font-latex-warning">\</span><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">usepackage</span><span class="function-name">{amsmath}</span>
+ <span class="font-latex-warning">\</span><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">newcommand</span><span class="function-name">{</span><span class="function-name"><span class="font-latex-warning">\\</span></span><span class="function-name">Mathbold}</span>[1]{<span class="font-latex-warning">\</span><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">mbox</span><span class="function-name">{</span><span class="function-name"><span class="font-latex-warning">\\</span></span><span class="function-name">boldmath</span><span class="function-name"><span class="font-latex-math">$#1$</span></span><span class="function-name"><span class="font-latex-warning">\\</span></span><span class="function-name">unboldmath}</span>}
+ <span class="font-latex-warning">\</span><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">begin</span><span class="function-name">{document}</span>
+ etex
+ beginTableau("+nmr+")
+<span class="flyspell-duplicate">newLigneVariables</span>(btex <span class="font-latex-math">$\\Mathbold{x}$</span> etex);
+ val(btex <span class="font-latex-math">$-\\infty$</span> etex);"+l0+"val(btex <span class="font-latex-math">$+\\infty$</span> <span class="flyspell-duplicate">etex</span>);"+
+ li
+ +
+ " newLigneSignes(btex <span class="font-latex-math">$\\hbox{\</span><span class="font-latex-bold"><span class="font-latex-math">\bf</span></span><span class="font-latex-math"> Signe du }\\atop{{\</span><span class="font-latex-bold"><span class="font-latex-math">\bf</span></span><span class="font-latex-math"> produit}}$</span> etex);"+
+ if(product(L[s](Z[0]-1.0),s,0,n-1)&gt;0){"plus;"}else{"moins;"}+"valBarre(btex 0 <span class="flyspell-duplicate">etex</span>);"+
+ lr+
+ if(product(L[s](Z[nz-1]+1.0),s,0,n-1)&gt;0){"plus;"}else{"moins;"}+"
+<span class="flyspell-duplicate">endTableau</span>;
+<span class="flyspell-duplicate">end</span>"
+;
+return(<span class="flyspell-duplicate">MetaL</span>);
+ }:;
+<span class="font-latex-sedate"><span class="keyword">\end</span></span><span class="function-name">{VerbatimOut}</span>
+
+
+
+
+
+
+
+
+
+<span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>{XcasTabSignQ.meta}
+<span class="flyspell-duplicate">TSq</span>(nomf,L,Fo,nmr):={
+L:=apply(f-&gt;unapply(f,x),L);
+<span class="flyspell-duplicate">Fo</span>:=apply(f-&gt;unapply(f,x),Fo);
+L:=concat(L,Fo);
+n:=size(L);
+Z:=NULL;
+m:=size(Fo);
+F:=<span class="flyspell-duplicate">NULL</span>;
+
+
+
+pour k de 0 jusque n-1 faire
+ S:=resoudre(L[k](x),x);
+ si size(S)&gt;0 alors pour j de 0 jusque size(S)-1 faire
+ Z:=Z,simplifier(S[j]);
+ <span class="flyspell-duplicate">fpour</span>;
+ fsi;
+<span class="flyspell-duplicate">fpour</span>;
+
+
+pour k de 0 jusque m-1 faire
+ SF:=resoudre(Fo[k](x),x);
+ si size(SF)&gt;0 alors pour j de 0 jusque size(SF)-1 faire
+ F:=F,simplifier(SF[j]);
+ fpour;
+ fsi;
+<span class="flyspell-duplicate">fpour</span>;
+
+
+
+Z:=sort(Z); // on classe les z&#233;ros dans l'ordre croissant
+nz:=size(Z);
+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 z&#233;ros en double
+ fsi;
+fpour;
+<span class="flyspell-duplicate">nz</span>:=size(Z);
+l0:=" ";li:=" ";lr:=" ";
+pour m de 0 jusque nz-1 faire l0:=l0+"val(btex <span class="font-latex-math">$"+latex(Z[m])+"$</span> etex);";<span class="flyspell-duplicate">fpour</span>;
+
+
+
+for(p:=0;p&lt;=n-1;p++){lp:=" ";
+ li:=li+"newLigneSignes(btex <span class="font-latex-math">$\\hbox{\</span><span class="font-latex-bold"><span class="font-latex-math">\bf</span></span><span class="font-latex-math"> Signe de }\\atop{\\displaystyle \\Mathbold{"+latex(L[p](x))+"}}$</span> <span class="flyspell-duplicate">etex</span>);"+
+ if(L[p](Z[0]-1.0)&gt;0){"plus;"}else{"moins;"}+
+ for(r:=0; r&lt;=nz-2;r++){
+ lp:=lp+if(simplifier(L[p](Z[r]))==0){"
+ <span class="flyspell-duplicate">valBarre</span>(btex 0 etex);"}else{"barre;"}+
+ if(L[p]((Z[r]+Z[r+1])*.5)&gt;0){"plus;"}else{"moins;"}}+
+ if(simplifier(L[p](Z[nz-1]))==0){"valBarre(btex 0 etex);"}else{"barre;"}+
+ if(L[p](Z[nz-1]+1.0)&gt;0){"plus;"}else{"moins;
+ "}
+ };
+
+
+pour t de 0 jusque nz-2 faire
+ lr:=lr+if(product(L[s]((Z[t]+Z[t+1])*.5),s,0,n-1)&gt;0){"plus;"}else{"moins;"}+if(member(Z[t+1],F)==0){"valBarre(btex 0 etex);"}else{"<span class="flyspell-duplicate">nonDefBarre</span>;"}
+ fpour
+
+<span class="flyspell-duplicate">MetaL</span>:=" input <span class="flyspell-duplicate">tableauVariation</span>;
+ <span class="flyspell-duplicate">verbatimtex</span>
+<span class="comment-delimiter">%</span><span class="comment">&amp;latex
+</span> <span class="font-latex-warning">\</span><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">documentclass</span><span class="function-name">{article}</span>
+ <span class="font-latex-warning">\</span><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">usepackage</span><span class="variable-name">[upright]</span><span class="function-name">{fourier}</span>
+ <span class="font-latex-warning">\</span><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">usepackage</span><span class="function-name">{amsmath}</span>
+ <span class="font-latex-warning">\</span><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">newcommand</span><span class="function-name">{</span><span class="function-name"><span class="font-latex-warning">\\</span></span><span class="function-name">Mathbold}</span>[1]{<span class="font-latex-warning">\</span><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">mbox</span><span class="function-name">{</span><span class="function-name"><span class="font-latex-warning">\\</span></span><span class="function-name">boldmath</span><span class="function-name"><span class="font-latex-math">$#1$</span></span><span class="function-name"><span class="font-latex-warning">\\</span></span><span class="function-name">unboldmath}</span>}
+ <span class="font-latex-warning">\</span><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">begin</span><span class="function-name">{document}</span>
+ etex
+ beginTableau("+nmr+")
+<span class="flyspell-duplicate">newLigneVariables</span>(btex <span class="font-latex-math">$\\Mathbold{x}$</span> etex);
+ val(btex <span class="font-latex-math">$-\\infty$</span> etex);"+l0+"val(btex <span class="font-latex-math">$+\\infty$</span> <span class="flyspell-duplicate">etex</span>);"+
+ li
+ +
+ " newLigneSignes(btex <span class="font-latex-math">$\\hbox{\</span><span class="font-latex-bold"><span class="font-latex-math">\bf</span></span><span class="font-latex-math"> Signe de }\\atop{\</span><span class="font-latex-bold"><span class="font-latex-math">\bf</span></span><span class="font-latex-math"> "+nomf+"(x) }$</span> etex);"+
+ if(product(L[s](Z[0]-1.0),s,0,n-1)&gt;0){"plus;"}else{"moins;"}+if(member(Z[0],F)==0){"valBarre(btex 0 etex);"}else{"<span class="flyspell-duplicate">nonDefBarre</span>;"}+
+ lr+
+ if(product(L[s](Z[nz-1]+1.0),s,0,n-1)&gt;0){"plus;"}else{"moins;"}+"
+<span class="flyspell-duplicate">endTableau</span>;
+<span class="flyspell-duplicate">end</span>"
+;
+return(<span class="flyspell-duplicate">MetaL</span>);
+ }:;
+
+
+<span class="font-latex-sedate"><span class="keyword">\end</span></span><span class="function-name">{VerbatimOut}</span>
+
+<span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>{XcasTabSign.meta}
+<span class="flyspell-duplicate">TSa</span>(a,b,c,d,nmr):={
+zA:=resoudre(a*x+b=0,x)[0];
+<span class="flyspell-duplicate">zB</span>:=resoudre(c*x+d=0,x)[0];
+<span class="flyspell-duplicate">zmin</span>:=min(zA,zB);
+<span class="flyspell-duplicate">zmax</span>:=max(zA,zB);
+ Meta:= " input <span class="flyspell-duplicate">tableauVariation</span>;
+ verbatimtex
+<span class="comment-delimiter">%</span><span class="comment">&amp;latex
+</span> <span class="font-latex-warning">\</span><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">documentclass</span><span class="function-name">{article}</span>
+ <span class="font-latex-warning">\</span><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">usepackage</span><span class="variable-name">[upright]</span><span class="function-name">{fourier}</span>
+ <span class="font-latex-warning">\</span><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">usepackage</span><span class="function-name">{amsmath}</span>
+ <span class="font-latex-warning">\</span><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">newcommand</span><span class="function-name">{</span><span class="function-name"><span class="font-latex-warning">\\</span></span><span class="function-name">Mathbold}</span>[1]{<span class="font-latex-warning">\</span><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">mbox</span><span class="function-name">{</span><span class="function-name"><span class="font-latex-warning">\\</span></span><span class="function-name">boldmath</span><span class="function-name"><span class="font-latex-math">$#1$</span></span><span class="function-name"><span class="font-latex-warning">\\</span></span><span class="function-name">unboldmath}</span>}
+ <span class="font-latex-warning">\</span><span class="keyword"><span class="font-latex-warning">\</span></span><span class="keyword">begin</span><span class="function-name">{document}</span>
+ <span class="flyspell-duplicate">etex</span>
+ beginTableau("+<span class="flyspell-duplicate">nmr</span>+")
+ newLigneVariables(btex <span class="font-latex-math">$\\Mathbold{x}$</span> <span class="flyspell-duplicate">etex</span>);
+ val(btex <span class="font-latex-math">$-\\infty$</span> etex);val(btex <span class="font-latex-math">$"+latex(zmin)+"$</span> etex);
+val(btex <span class="font-latex-math">$"+latex(zmax)+"$</span>etex);
+val(btex <span class="font-latex-math">$+\\infty$</span> etex);
+ newLigneSignes(btex <span class="font-latex-math">$\\hbox{\</span><span class="font-latex-bold"><span class="font-latex-math">\bf</span></span><span class="font-latex-math"> Signe de }\\atop{\\displaystyle \\Mathbold{"+if(a==1){"x+"}else{if(a==-1){"-x+"}else{a+"x+"}}+b+"}}$</span> <span class="flyspell-duplicate">etex</span>);"
+ + if(a&gt;0){"moins;"}else{"plus;"}+
+ if(zmin==zA){"valBarre(btex 0 etex);"}else{"barre;"}+
+ if(zmin==zA){si a&gt;0 alors "plus;"; sinon "moins;";fsi}
+ else{si a&gt;0 alors "moins;"; sinon "plus;"; <span class="flyspell-duplicate">fsi</span>}+
+ if(zmin==zA){"barre;"}else{"valBarre(btex 0 etex);"}+
+ if(a&gt;0){"plus;"}else{"moins;"}
+ +" newLigneSignes(btex <span class="font-latex-math">$\\hbox{\</span><span class="font-latex-bold"><span class="font-latex-math">\bf</span></span><span class="font-latex-math"> Signe de }\\atop{\\displaystyle \\Mathbold{"+if(c==1){"x+"}else{if(c==-1){"-x+"}else{c+"x+"}}+d+"}}$</span> <span class="flyspell-duplicate">etex</span>);"
+ + if(c&gt;0){"moins"}else{"plus"}+";"+
+ if(zmin==zB){"valBarre(btex 0 etex);"}else{"barre;"}+
+ if(zmin==zB){si c&gt;0 alors "plus;"; sinon "moins;";<span class="flyspell-duplicate">fsi</span>}
+ else{si c&gt;0 alors "moins;"; sinon "plus;"; fsi}+
+ if(zmin==zB){"barre;"}else{"valBarre(btex 0 <span class="flyspell-duplicate">etex</span>);"}+
+ if(c&gt;0){"plus;"}else{"moins;"}
+
+ +" newLigneSignes(btex <span class="font-latex-math">$\\hbox{\</span><span class="font-latex-bold"><span class="font-latex-math">\bf</span></span><span class="font-latex-math"> Signe de }\\atop{\\displaystyle \\Mathbold{("+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+")}}$</span> <span class="flyspell-duplicate">etex</span>);"
+ + si a*c&gt;0 alors plus; sinon moins;fsi+";"+
+ "valBarre(btex 0 <span class="flyspell-duplicate">etex</span>);"+
+ si a*c&gt;0 alors moins; sinon plus;<span class="flyspell-duplicate">fsi</span>+";"+
+ "valBarre(btex 0 <span class="flyspell-duplicate">etex</span>);"+
+ si a*c&gt;0 alors plus; sinon moins;fsi+";"+"
+endTableau;
+<span class="flyspell-duplicate">end</span>"
+;
+<span class="flyspell-duplicate">return</span>(<span class="flyspell-duplicate">Meta</span>);
+ }:;
+<span class="font-latex-sedate"><span class="keyword">\end</span></span><span class="function-name">{VerbatimOut}</span>
+
+
+
+
+<span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>{XCas.in}
+<span class="flyspell-duplicate">maple</span>_mode(0);
+read("XcasTabSign.meta");
+Sortie:=fopen("XCasmp.mp");
+vect.xcas.out := read("XCas.out");
+<span class="flyspell-duplicate">vxo</span> := vect.xcas.out;
+<span class="flyspell-duplicate">dim</span>.vxo := dim(vxo);
+<span class="flyspell-duplicate">nbr</span>.line.vxo := dim.vxo;
+Resultat:=cat(" ");
+<span class="flyspell-duplicate">rslt</span> := vxo[0]; RslT:=cat(rslt);
+Resultat:=cat(Resultat,RslT);
+<span class="flyspell-duplicate">fprint</span>(Sortie,Unquoted,Resultat);
+<span class="flyspell-duplicate">fclose</span>(Sortie);
+<span class="font-latex-sedate"><span class="keyword">\end</span></span><span class="function-name">{VerbatimOut}</span>
+
+<span class="font-latex-sedate"><span class="keyword">\newenvironment</span></span><span class="function-name">{TSa}</span>
+{<span class="font-latex-sedate">\stepcounter</span>{TVn}<span class="font-latex-sedate">\VerbatimEnvironment</span><span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>{XCas.out}}
+{<span class="font-latex-sedate"><span class="keyword">\end</span></span><span class="function-name">{VerbatimOut}</span>
+ <span class="font-latex-sedate">\executGiacmp</span>{XCas.in}
+
+ <span class="font-latex-sedate">\immediate</span><span class="font-latex-sedate">\write</span>18{mpost <span class="flyspell-duplicate">XCasmp</span>}
+
+<span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{center}</span>
+ <span class="font-latex-sedate">\includegraphics</span>{XCasmp.<span class="font-latex-sedate">\theTVn</span>}
+<span class="font-latex-sedate"><span class="keyword">\end</span></span><span class="function-name">{center}</span>
+
+}
+
+
+<span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>{XCasQ.in}
+<span class="flyspell-duplicate">maple</span>_mode(0);
+<span class="flyspell-duplicate">read</span>("XcasTabSignQ.meta");
+Sortie:=fopen("XCasmpQ.mp");
+<span class="flyspell-duplicate">vect</span>.xcas.out := read("XCasQ.out");
+vxo := vect.xcas.out;
+<span class="flyspell-duplicate">dim</span>.vxo := dim(vxo);
+<span class="flyspell-duplicate">nbr</span>.line.vxo := dim.vxo;
+<span class="flyspell-duplicate">Resultat</span>:=cat(" ");
+<span class="flyspell-duplicate">rslt</span> := vxo[0]; RslT:=cat(rslt);
+<span class="flyspell-duplicate">Resultat</span>:=cat(Resultat,RslT);
+fprint(Sortie,Unquoted,Resultat);
+<span class="flyspell-duplicate">fclose</span>(Sortie);
+<span class="font-latex-sedate"><span class="keyword">\end</span></span><span class="function-name">{VerbatimOut}</span>
+
+<span class="font-latex-sedate"><span class="keyword">\newenvironment</span></span><span class="function-name">{</span><span class="function-name"><span class="flyspell-duplicate">TSq</span></span><span class="function-name">}</span>
+{<span class="font-latex-sedate">\stepcounter</span>{TVn}<span class="font-latex-sedate">\VerbatimEnvironment</span><span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>{XCasQ.out}}
+{<span class="font-latex-sedate"><span class="keyword">\end</span></span><span class="function-name">{VerbatimOut}</span>
+ <span class="font-latex-sedate">\executGiacmp</span>{XCasQ.in}
+
+ <span class="font-latex-sedate">\immediate</span><span class="font-latex-sedate">\write</span>18{mpost <span class="flyspell-duplicate">XCasmpQ</span>}
+
+<span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{center}</span>
+ <span class="font-latex-sedate">\includegraphics</span>{XCasmpQ.<span class="font-latex-sedate">\theTVn</span>}
+<span class="font-latex-sedate"><span class="keyword">\end</span></span><span class="function-name">{center}</span>
+
+}
+
+
+
+<span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>{XCasL.in}
+<span class="flyspell-duplicate">maple</span>_mode(0);
+<span class="flyspell-duplicate">read</span>("XcasTabSignL.meta");
+Sortie:=fopen("XCasmpL.mp");
+<span class="flyspell-duplicate">vect</span>.xcas.out := read("XCasL.out");
+vxo := vect.xcas.out;
+<span class="flyspell-duplicate">dim</span>.vxo := dim(vxo);
+<span class="flyspell-duplicate">nbr</span>.line.vxo := dim.vxo;
+<span class="flyspell-duplicate">Resultat</span>:=cat(" ");
+<span class="flyspell-duplicate">rslt</span> := vxo[0]; RslT:=cat(rslt);
+<span class="flyspell-duplicate">Resultat</span>:=cat(Resultat,RslT);
+fprint(Sortie,Unquoted,Resultat);
+<span class="flyspell-duplicate">fclose</span>(Sortie);
+<span class="font-latex-sedate"><span class="keyword">\end</span></span><span class="function-name">{VerbatimOut}</span>
+
+<span class="font-latex-sedate"><span class="keyword">\newenvironment</span></span><span class="function-name">{</span><span class="function-name"><span class="flyspell-duplicate">TS</span></span><span class="function-name">}</span>
+{<span class="font-latex-sedate">\stepcounter</span>{TVn}<span class="font-latex-sedate">\VerbatimEnvironment</span><span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>{XCasL.out}}
+{<span class="font-latex-sedate"><span class="keyword">\end</span></span><span class="function-name">{VerbatimOut}</span>
+ <span class="font-latex-sedate">\executGiacmp</span>{XCasL.in}
+
+ <span class="font-latex-sedate">\immediate</span><span class="font-latex-sedate">\write</span>18{mpost <span class="flyspell-duplicate">XCasmpL</span>}
+
+<span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{center}</span>
+ <span class="font-latex-sedate">\includegraphics</span>{XCasmpL.<span class="font-latex-sedate">\theTVn</span>}
+<span class="font-latex-sedate"><span class="keyword">\end</span></span><span class="function-name">{center}</span>
+
+}
+
+
+
+
+
+
+<span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>{XCasTV.in}
+<span class="flyspell-duplicate">maple</span>_mode(0);
+read("XcasTV.meta");
+Sortie:=fopen("XCasmpTV.mp");
+<span class="flyspell-duplicate">vect</span>.xcas.out := read("XCasTV.out");
+<span class="flyspell-duplicate">vxo</span> := vect.xcas.out;
+<span class="flyspell-duplicate">dim</span>.vxo := dim(vxo);
+<span class="flyspell-duplicate">nbr</span>.line.vxo := dim.vxo;
+Resultat:=cat(" ");
+<span class="flyspell-duplicate">rslt</span> := vxo[0]; RslT:=cat(rslt);
+<span class="flyspell-duplicate">Resultat</span>:=cat(Resultat,<span class="flyspell-duplicate">RslT</span>);
+fprint(Sortie,Unquoted,Resultat);
+<span class="flyspell-duplicate">fclose</span>(Sortie);
+<span class="font-latex-sedate"><span class="keyword">\end</span></span><span class="function-name">{VerbatimOut}</span>
+<span class="font-latex-sedate"><span class="keyword">\newenvironment</span></span><span class="function-name">{TV}</span>
+{<span class="font-latex-sedate">\stepcounter</span>{TVn}<span class="font-latex-sedate">\VerbatimEnvironment</span><span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>{XCasTV.out}}
+{<span class="font-latex-sedate"><span class="keyword">\end</span></span><span class="function-name">{VerbatimOut}</span>
+ <span class="font-latex-sedate">\executGiacmp</span>{XCasTV.in}
+
+ <span class="font-latex-sedate">\immediate</span><span class="font-latex-sedate">\write</span>18{mpost <span class="flyspell-duplicate">XCasmpTV</span>}
+
+<span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{center}</span>
+ <span class="font-latex-sedate">\includegraphics</span>{XCasmpTV.<span class="font-latex-sedate">\theTVn</span>}
+<span class="font-latex-sedate"><span class="keyword">\end</span></span><span class="function-name">{center}</span>
+
+}
+
+
+
+
+<span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>{<span class="flyspell-incorrect">XCasTVI</span>.in}
+maple_mode(0);
+<span class="flyspell-duplicate">read</span>("<span class="flyspell-duplicate">XcasTVI</span>.<span class="flyspell-duplicate">meta</span>");
+Sortie:=<span class="flyspell-duplicate">fopen</span>("<span class="flyspell-incorrect">XCasmpTVI</span>.mp");
+<span class="flyspell-duplicate">vect</span>.xcas.out := read("<span class="flyspell-duplicate">XCasTVI</span>.out");
+vxo := vect.xcas.out;
+dim.vxo := dim(<span class="flyspell-duplicate">vxo</span>);
+nbr.line.vxo := dim.<span class="flyspell-duplicate">vxo</span>;
+<span class="flyspell-duplicate">Resultat</span>:=<span class="flyspell-duplicate">cat</span>(" ");
+rslt := vxo[0]; RslT:=cat(<span class="flyspell-duplicate">rslt</span>);
+<span class="flyspell-duplicate">Resultat</span>:=cat(Resultat,<span class="flyspell-duplicate">RslT</span>);
+fprint(Sortie,Unquoted,Resultat);
+fclose(Sortie);
+<span class="font-latex-sedate"><span class="keyword">\end</span></span><span class="function-name">{VerbatimOut}</span>
+<span class="font-latex-sedate"><span class="keyword">\newenvironment</span></span><span class="function-name">{</span><span class="function-name"><span class="flyspell-duplicate">TVI</span></span><span class="function-name">}</span>
+{<span class="font-latex-sedate">\stepcounter</span>{TVn}<span class="font-latex-sedate">\VerbatimEnvironment</span><span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{VerbatimOut}</span>{<span class="flyspell-duplicate">XCasTVI</span>.out}}
+{<span class="font-latex-sedate"><span class="keyword">\end</span></span><span class="function-name">{VerbatimOut}</span>
+ <span class="font-latex-sedate">\executGiacmp</span>{<span class="flyspell-duplicate">XCasTVI</span>.in}
+
+ <span class="font-latex-sedate">\immediate</span><span class="font-latex-sedate">\write</span>18{mpost <span class="flyspell-duplicate">XCasmpTVI</span>}
+
+<span class="font-latex-sedate"><span class="keyword">\begin</span></span><span class="function-name">{center}</span>
+ <span class="font-latex-sedate">\includegraphics</span>{<span class="flyspell-duplicate">XCasmpTVI</span>.<span class="font-latex-sedate">\theTVn</span>}
+<span class="font-latex-sedate"><span class="keyword">\end</span></span><span class="function-name">{center}</span>
+
+}
+
+
+
+
+
+
+<span class="comment-delimiter">%%</span><span class="comment">
+</span><span class="comment-delimiter">%% </span><span class="comment">Zi </span><span class="comment"><span class="flyspell-duplicate">end</span></span><span class="comment">
+</span></pre>
+ </body>
+</html>
diff --git a/Master/texmf-dist/tex/latex/tablor/tablor.sty b/Master/texmf-dist/tex/latex/tablor/tablor.sty
new file mode 100644
index 00000000000..fa48fb7905c
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tablor/tablor.sty
@@ -0,0 +1,726 @@
+
+\NeedsTeXFormat{LaTeX2e}[1995/12/01]
+\ProvidesPackage{tablor}
+ [17/01/2008 v1.2
+ la machine à créer des tableaux de signes et variations]
+
+
+
+%% Crée 5 environnements :
+%% tableau de signes de 2 facteurs affines
+% \begin{TSa}
+% TSa(-2,3,-1,5,1);
+% \end{TSa}
+% %%%%%% Pour des tableaux de plus de 2 facteurs
+%
+% \begin{TS}
+% TS([-2*x+3,x^2-1,x^2+1,x-1,x^2-2],2);
+% \end{TS}
+%
+% pour les tableaux de signes avec quotient
+%\begin{TSq}
+%TSq("Q",[-2*x+3,-4*x+5],[x^2-16,x-2],3)
+%%\end{TSq}
+% un tableau de variation :
+%
+% \begin{TV}
+% TV([0,+infinity],[0],"h","x",ln(x)-(ln(x))^2,1,4)
+% \end{TV}
+%
+% tableau avec valeurs intermédiares
+%\begin{TVI}
+%TVI([-1,+infinity],[-1],"f","x",x2/sqrt(x+1)-1,1,2,1)
+%\end{TVI}
+%%%
+
+
+
+\newcommand{\nettoyer}{
+\immediate\write18{rm XCasmp.mp* XCasmp.log XCasmp?.mp* XCasmp?.log XCasmpTV.mp* XCasmpTV.log *.out XCasmpTVI.mp* XCasmpTVI.log
+ *.in *.meta *mpx*}}
+
+\newcommand{\bouger}[1]{
+\immediate\write18{cp XCas* #1}}
+
+
+\newcommand{\recup}[2]{
+\immediate\write18{cp #1 #2}}
+
+
+
+\newcounter{TVn}
+
+
+\usepackage{fancyvrb}
+%\usepackage[upright]{fourier}
+
+\makeatletter
+\newcommand{\executGiacmp}[1]{
+\immediate\write18{giac <#1 } }
+\makeatother
+
+
+\begin{VerbatimOut}{XcasTV.meta}
+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:="newLigneSignes(btex $\\hbox{ Signe de }\\atop{\\displaystyle "+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(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:="newLigneVariations(btex $\\hbox{\\bf Variations de }\\atop{\\displaystyle \\Mathbold{"+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);"};
+
+
+intro:="input tableauVariation;
+ verbatimtex
+%&latex
+ \\documentclass{article}
+ \\usepackage[upright]{fourier}
+ \\usepackage{amsmath}
+ \\newcommand{\\Mathbold}[1]{\\mbox{\\boldmath$#1$\\unboldmath}}
+ \\begin{document}
+ etex
+
+"
+
+
+MetaL:= if(ftt==0){if(nz>2){intro+"beginTableau("+nmr+")"+
+ l0+
+li+
+lp+
+lf
++"endTableau;
+end";}else{intro+"beginTableau("+nmr+")"+
+ l0+
+li+
+lf
++"endTableau;
+end";}}else{
+if(nz>2){intro+"beginTableau("+nmr+")"+
+ l0+
+lsi+lsp+lsf+
+li+
+lp+
+lf
++"endTableau;
+end";}else{intro+"beginTableau("+nmr+")"+
+ l0+
+lsi+lsf+
+li+
+lf
++"endTableau;
+end";}
+}
+
+return(MetaL);
+ }:;
+
+
+
+\end{VerbatimOut}
+
+\begin{VerbatimOut}{XcasTVI.meta}
+
+
+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:="newLigneSignes(btex $\\hbox{ Signe de }\\atop{\\displaystyle "+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(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:="newLigneVariations(btex $\\hbox{\\bf Variations de }\\atop{\\displaystyle \\Mathbold{"+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);"};
+
+
+
+intro:="
+input tableauVariation;
+verbatimtex
+%&latex
+ \\documentclass{article}
+ \\usepackage[upright]{fourier}
+ \\usepackage{amsmath}
+ \\newcommand{\\Mathbold}[1]{\\mbox{\\boldmath$#1$\\unboldmath}}
+ \\begin{document}
+ etex
+
+";
+
+
+MetaL:= if(ftt==0){if(nz>2){intro+"beginTableau("+nmr+")"+
+ l0+
+li+
+lp+
+lf
++"endTableau;
+end";}else{intro+"beginTableau("+nmr+")"+
+ l0+
+li+
+lf
++"endTableau;
+end";}}else{
+if(nz>2){intro+"beginTableau("+nmr+")"+
+ l0+
+lsi+lsp+lsf+
+li+
+lp+
+lf
++"endTableau;
+end";}else{intro+"beginTableau("+nmr+")"+
+ l0+
+lsi+lsf+
+li+
+lf
++"endTableau;
+end";}
+};
+
+return(MetaL);
+ }:;
+
+
+
+\end{VerbatimOut}
+
+
+
+
+
+
+
+
+
+
+\begin{VerbatimOut}{XcasTabSignL.meta}
+TS(L,nmr):={
+L:=apply(f->unapply(f,x),L)
+n:=size(L);
+Z:=NULL;
+
+
+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
+ Z:=Z,simplifier(S[j]);
+ fpour;
+ fsi;
+fpour;
+Z:=sort(Z);
+nz:=size(Z);
+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:=" ";
+pour m de 0 jusque nz-1 faire l0:=l0+"val(btex $"+latex(Z[m])+"$ etex);";fpour;
+
+
+
+for(p:=0;p<=n-1;p++){lp:=" ";
+ li:=li+"newLigneSignes(btex $\\hbox{\\bf Signe de }\\atop{\\displaystyle \\Mathbold{"+latex(L[p](x))+"}}$ etex);"+
+ if(L[p](Z[0]-1.0)>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;"}}+
+ 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;"}
+ };
+
+
+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
+
+MetaL:=" input tableauVariation;
+ verbatimtex
+%&latex
+ \\documentclass{article}
+ \\usepackage[upright]{fourier}
+ \\usepackage{amsmath}
+ \\newcommand{\\Mathbold}[1]{\\mbox{\\boldmath$#1$\\unboldmath}}
+ \\begin{document}
+ etex
+ beginTableau("+nmr+")
+newLigneVariables(btex $\\Mathbold{x}$ etex);
+ val(btex $-\\infty$ etex);"+l0+"val(btex $+\\infty$ etex);"+
+ li
+ +
+ " newLigneSignes(btex $\\hbox{\\bf Signe du }\\atop{{\\bf produit}}$ etex);"+
+ if(product(L[s](Z[0]-1.0),s,0,n-1)>0){"plus;"}else{"moins;"}+"valBarre(btex 0 etex);"+
+ lr+
+ if(product(L[s](Z[nz-1]+1.0),s,0,n-1)>0){"plus;"}else{"moins;"}+"
+endTableau;
+end"
+;
+return(MetaL);
+ }:;
+\end{VerbatimOut}
+
+
+
+
+
+
+
+
+
+\begin{VerbatimOut}{XcasTabSignQ.meta}
+TSq(nomf,L,Fo,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;
+
+
+
+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
+ 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
+ F:=F,simplifier(SF[j]);
+ fpour;
+ fsi;
+fpour;
+
+
+
+Z:=sort(Z); // on classe les zéros dans l'ordre croissant
+nz:=size(Z);
+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 zéros en double
+ fsi;
+fpour;
+nz:=size(Z);
+l0:=" ";li:=" ";lr:=" ";
+pour m de 0 jusque nz-1 faire l0:=l0+"val(btex $"+latex(Z[m])+"$ etex);";fpour;
+
+
+
+for(p:=0;p<=n-1;p++){lp:=" ";
+ li:=li+"newLigneSignes(btex $\\hbox{\\bf Signe de }\\atop{\\displaystyle \\Mathbold{"+latex(L[p](x))+"}}$ etex);"+
+ if(L[p](Z[0]-1.0)>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;"}}+
+ 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;
+ "}
+ };
+
+
+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],F)==0){"valBarre(btex 0 etex);"}else{"nonDefBarre;"}
+ fpour
+
+MetaL:=" input tableauVariation;
+ verbatimtex
+%&latex
+ \\documentclass{article}
+ \\usepackage[upright]{fourier}
+ \\usepackage{amsmath}
+ \\newcommand{\\Mathbold}[1]{\\mbox{\\boldmath$#1$\\unboldmath}}
+ \\begin{document}
+ etex
+ beginTableau("+nmr+")
+newLigneVariables(btex $\\Mathbold{x}$ etex);
+ val(btex $-\\infty$ etex);"+l0+"val(btex $+\\infty$ etex);"+
+ li
+ +
+ " newLigneSignes(btex $\\hbox{\\bf Signe de }\\atop{\\bf "+nomf+"(x) }$ etex);"+
+ if(product(L[s](Z[0]-1.0),s,0,n-1)>0){"plus;"}else{"moins;"}+if(member(Z[0],F)==0){"valBarre(btex 0 etex);"}else{"nonDefBarre;"}+
+ lr+
+ if(product(L[s](Z[nz-1]+1.0),s,0,n-1)>0){"plus;"}else{"moins;"}+"
+endTableau;
+end"
+;
+return(MetaL);
+ }:;
+
+
+\end{VerbatimOut}
+
+\begin{VerbatimOut}{XcasTabSign.meta}
+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:= " input tableauVariation;
+ verbatimtex
+%&latex
+ \\documentclass{article}
+ \\usepackage[upright]{fourier}
+ \\usepackage{amsmath}
+ \\newcommand{\\Mathbold}[1]{\\mbox{\\boldmath$#1$\\unboldmath}}
+ \\begin{document}
+ etex
+ beginTableau("+nmr+")
+ newLigneVariables(btex $\\Mathbold{x}$ etex);
+ val(btex $-\\infty$ etex);val(btex $"+latex(zmin)+"$ etex);
+val(btex $"+latex(zmax)+"$etex);
+val(btex $+\\infty$ etex);
+ newLigneSignes(btex $\\hbox{\\bf Signe de }\\atop{\\displaystyle \\Mathbold{"+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;"}
+ +" newLigneSignes(btex $\\hbox{\\bf Signe de }\\atop{\\displaystyle \\Mathbold{"+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;"}
+
+ +" newLigneSignes(btex $\\hbox{\\bf Signe de }\\atop{\\displaystyle \\Mathbold{("+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;
+end"
+;
+return(Meta);
+ }:;
+\end{VerbatimOut}
+
+
+
+
+\begin{VerbatimOut}{XCas.in}
+maple_mode(0);
+read("XcasTabSign.meta");
+Sortie:=fopen("XCasmp.mp");
+vect.xcas.out := read("XCas.out");
+vxo := vect.xcas.out;
+dim.vxo := dim(vxo);
+nbr.line.vxo := dim.vxo;
+Resultat:=cat(" ");
+rslt := vxo[0]; RslT:=cat(rslt);
+Resultat:=cat(Resultat,RslT);
+fprint(Sortie,Unquoted,Resultat);
+fclose(Sortie);
+\end{VerbatimOut}
+
+\newenvironment{TSa}
+{\stepcounter{TVn}\VerbatimEnvironment\begin{VerbatimOut}{XCas.out}}
+{\end{VerbatimOut}
+ \executGiacmp{XCas.in}
+
+ \immediate\write18{mpost XCasmp}
+
+\begin{center}
+ \includegraphics{XCasmp.\theTVn}
+\end{center}
+
+}
+
+
+\begin{VerbatimOut}{XCasQ.in}
+maple_mode(0);
+read("XcasTabSignQ.meta");
+Sortie:=fopen("XCasmpQ.mp");
+vect.xcas.out := read("XCasQ.out");
+vxo := vect.xcas.out;
+dim.vxo := dim(vxo);
+nbr.line.vxo := dim.vxo;
+Resultat:=cat(" ");
+rslt := vxo[0]; RslT:=cat(rslt);
+Resultat:=cat(Resultat,RslT);
+fprint(Sortie,Unquoted,Resultat);
+fclose(Sortie);
+\end{VerbatimOut}
+
+\newenvironment{TSq}
+{\stepcounter{TVn}\VerbatimEnvironment\begin{VerbatimOut}{XCasQ.out}}
+{\end{VerbatimOut}
+ \executGiacmp{XCasQ.in}
+
+ \immediate\write18{mpost XCasmpQ}
+
+\begin{center}
+ \includegraphics{XCasmpQ.\theTVn}
+\end{center}
+
+}
+
+
+
+\begin{VerbatimOut}{XCasL.in}
+maple_mode(0);
+read("XcasTabSignL.meta");
+Sortie:=fopen("XCasmpL.mp");
+vect.xcas.out := read("XCasL.out");
+vxo := vect.xcas.out;
+dim.vxo := dim(vxo);
+nbr.line.vxo := dim.vxo;
+Resultat:=cat(" ");
+rslt := vxo[0]; RslT:=cat(rslt);
+Resultat:=cat(Resultat,RslT);
+fprint(Sortie,Unquoted,Resultat);
+fclose(Sortie);
+\end{VerbatimOut}
+
+\newenvironment{TS}
+{\stepcounter{TVn}\VerbatimEnvironment\begin{VerbatimOut}{XCasL.out}}
+{\end{VerbatimOut}
+ \executGiacmp{XCasL.in}
+
+ \immediate\write18{mpost XCasmpL}
+
+\begin{center}
+ \includegraphics{XCasmpL.\theTVn}
+\end{center}
+
+}
+
+
+
+
+
+
+\begin{VerbatimOut}{XCasTV.in}
+maple_mode(0);
+read("XcasTV.meta");
+Sortie:=fopen("XCasmpTV.mp");
+vect.xcas.out := read("XCasTV.out");
+vxo := vect.xcas.out;
+dim.vxo := dim(vxo);
+nbr.line.vxo := dim.vxo;
+Resultat:=cat(" ");
+rslt := vxo[0]; RslT:=cat(rslt);
+Resultat:=cat(Resultat,RslT);
+fprint(Sortie,Unquoted,Resultat);
+fclose(Sortie);
+\end{VerbatimOut}
+\newenvironment{TV}
+{\stepcounter{TVn}\VerbatimEnvironment\begin{VerbatimOut}{XCasTV.out}}
+{\end{VerbatimOut}
+ \executGiacmp{XCasTV.in}
+
+ \immediate\write18{mpost XCasmpTV}
+
+\begin{center}
+ \includegraphics{XCasmpTV.\theTVn}
+\end{center}
+
+}
+
+
+
+
+\begin{VerbatimOut}{XCasTVI.in}
+maple_mode(0);
+read("XcasTVI.meta");
+Sortie:=fopen("XCasmpTVI.mp");
+vect.xcas.out := read("XCasTVI.out");
+vxo := vect.xcas.out;
+dim.vxo := dim(vxo);
+nbr.line.vxo := dim.vxo;
+Resultat:=cat(" ");
+rslt := vxo[0]; RslT:=cat(rslt);
+Resultat:=cat(Resultat,RslT);
+fprint(Sortie,Unquoted,Resultat);
+fclose(Sortie);
+\end{VerbatimOut}
+\newenvironment{TVI}
+{\stepcounter{TVn}\VerbatimEnvironment\begin{VerbatimOut}{XCasTVI.out}}
+{\end{VerbatimOut}
+ \executGiacmp{XCasTVI.in}
+
+ \immediate\write18{mpost XCasmpTVI}
+
+\begin{center}
+ \includegraphics{XCasmpTVI.\theTVn}
+\end{center}
+
+}
+
+
+
+
+
+
+%%
+%% Zi end
diff --git a/Master/tlpkg/tlpsrc/collection-mathextra.tlpsrc b/Master/tlpkg/tlpsrc/collection-mathextra.tlpsrc
index e89cd827232..34c1642ab0d 100644
--- a/Master/tlpkg/tlpsrc/collection-mathextra.tlpsrc
+++ b/Master/tlpkg/tlpsrc/collection-mathextra.tlpsrc
@@ -21,6 +21,7 @@ depend nath
depend stmaryrd
depend susy
depend synproof
+depend tablor
depend tensor
depend turnstile
depend venn
diff --git a/Master/tlpkg/tlpsrc/tablor.tlpsrc b/Master/tlpkg/tlpsrc/tablor.tlpsrc
new file mode 100644
index 00000000000..b3bd1077b82
--- /dev/null
+++ b/Master/tlpkg/tlpsrc/tablor.tlpsrc
@@ -0,0 +1,2 @@
+name tablor
+category Package