texlive[42899] Master/texmf-dist: xlop (8jan17)

commits+karl at tug.org commits+karl at tug.org
Sun Jan 8 23:20:53 CET 2017


Revision: 42899
          http://tug.org/svn/texlive?view=revision&revision=42899
Author:   karl
Date:     2017-01-08 23:20:53 +0100 (Sun, 08 Jan 2017)
Log Message:
-----------
xlop (8jan17)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/generic/xlop/LISEZMOI
    trunk/Master/texmf-dist/doc/generic/xlop/README
    trunk/Master/texmf-dist/doc/generic/xlop/xlop-doc-fr.pdf
    trunk/Master/texmf-dist/doc/generic/xlop/xlop-doc-fr.tex
    trunk/Master/texmf-dist/doc/generic/xlop/xlop-doc.pdf
    trunk/Master/texmf-dist/doc/generic/xlop/xlop-doc.tex
    trunk/Master/texmf-dist/source/generic/xlop/manual.sty
    trunk/Master/texmf-dist/tex/generic/xlop/xlop.tex

Modified: trunk/Master/texmf-dist/doc/generic/xlop/LISEZMOI
===================================================================
--- trunk/Master/texmf-dist/doc/generic/xlop/LISEZMOI	2017-01-08 22:18:15 UTC (rev 42898)
+++ trunk/Master/texmf-dist/doc/generic/xlop/LISEZMOI	2017-01-08 22:20:53 UTC (rev 42899)
@@ -8,8 +8,8 @@
 la m\xE9moire de TeX. Ces manipulations incluent toutes les op\xE9rations
 usuelles, les entr\xE9es-sorties, la notion de variable num\xE9rique, les
 tests et quelques op\xE9rations de haut niveau (sans permettre les
-op\xE9rations n\xE9cessitant un traitement infini telles que la racine
-carr\xE9e, l'exponentielle, les fonctions trigonom\xE9triques, etc.).
+op\xE9rations n\xE9cessitant un traitement infini telles l'exponentielle,
+les fonctions trigonom\xE9triques, etc.).
 
 DISTRIBUTION
 ------------
@@ -21,8 +21,7 @@
 -------
 La distribution comporte les fichiers suivants :
   - LISEZ.MOI (celui que vous \xEAtes en train de lire) ;
-  - README (la m\xEAme en anglais) ;
-  - XLOP03 qui indique ce que devrait fournir la version prochaine ;
+  - README (le m\xEAme en anglais) ;
   - history.txt qui retrace l'historique rapide du projet ;
   - manual.sty qui est le fichier de style n\xE9cessaire \xE0 la compilation
     des fichiers de documentation ; 

Modified: trunk/Master/texmf-dist/doc/generic/xlop/README
===================================================================
--- trunk/Master/texmf-dist/doc/generic/xlop/README	2017-01-08 22:18:15 UTC (rev 42898)
+++ trunk/Master/texmf-dist/doc/generic/xlop/README	2017-01-08 22:20:53 UTC (rev 42899)
@@ -6,7 +6,7 @@
 fact, limitations are due to TeX memory.  This features include
 basic arithmetic operations, input/ouput, numeric variables, tests,
 and some high level operation (without operations which imply infinite
-processing such roots, exponential, trigonometric functions, etc.).
+processing such exponential, trigonometric functions, etc.).
 
 DISTRIBUTION
 ------------
@@ -19,7 +19,6 @@
 Distribution consists of files:
   * README (the file you are reading)
   * LISEZ.MOI (same in french)
-  * XLOP03 indicates what features the next version should be provide
   * history.txt relates project history
   * manual.sty package file to compile documentation
   * xlop-doc-fr.tex and xlop-doc-fr.pdf source and pdf of french user's

Modified: trunk/Master/texmf-dist/doc/generic/xlop/xlop-doc-fr.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/generic/xlop/xlop-doc-fr.tex
===================================================================
--- trunk/Master/texmf-dist/doc/generic/xlop/xlop-doc-fr.tex	2017-01-08 22:18:15 UTC (rev 42898)
+++ trunk/Master/texmf-dist/doc/generic/xlop/xlop-doc-fr.tex	2017-01-08 22:20:53 UTC (rev 42899)
@@ -1461,6 +1461,43 @@
   \end{tabular}
 \end{center}
 
+\index{racine carr\xE9e}
+Avec la version~0.26, \package{xlop} propose l'op\xE9ration de racine
+carr\xE9e \macro{opsqrt}. Cette macro n'a pas la m\xEAme syntaxe que les
+autres macros arithm\xE9tiques puisqu'il n'y a pas de forme \xE9toil\xE9e. En
+r\xE9alit\xE9, il y a bien une fa\xE7on d'afficher l'op\xE9ration d'extraction de
+racine carr\xE9e mais elle n'est pas franchement courante. Je suis
+relativement \xE2g\xE9 et mon grand-p\xE8re me racontait qu'il l'avait vue
+lorsqu'il \xE9tait \xE0 l'\xE9cole. Ainsi, il y a une macro \macro{opgfsqrt} o\xF9
+le \og gf \fg{} est pour \og grandfather \fg{} (grand-p\xE8re).
+
+Voyons la premi\xE8re macro : celle qui calcule la racine carr\xE9e et qui
+stocke le r\xE9sultat dans une variable \package{xlop}:
+\begin{SideBySideExample}
+  \opsqrt{2}{sqrt2}
+  $\sqrt{2}\approx\opprint{sqrt2}$
+\end{SideBySideExample}
+Cette macro partage le param\xE8tre \parameter{maxdivstep} avec les
+macros de division. Par exemple:
+\begin{SideBySideExample}
+  \opsqrt[maxdivstep=15]{2}{sqrt2}
+  $\sqrt{2}\approx\opprint{sqrt2}$
+\end{SideBySideExample}
+
+Pour la pr\xE9sentation \xE0 la \og grand-p\xE8re \fg{}, je n'ai vraiment pas
+le courage d'expliquer tout le processus. Il se base sur l'eidentiot\xE9
+remarquable $(a+b)^2=a^2+2ab+b^2$. Merci \xE0 Jean-Michel Sarlat d'avoir
+pris le temps de m'expliquer cette m\xE9thode afin que je puisse la coder
+dans \package{xlop}.
+
+Voici un exemple avec le calcul de la racine carr\xE9e de 15 :
+\begin{CenterExample}
+  \opgfsqrt[maxdivstep=5]{15}
+\end{CenterExample}
+Cette m\xE9thode est horrible, autant pour un humain que pour
+l'ordinateur. Par exemple, l'op\xE9ration r\xE9ellement effectu\xE9e par
+\package{xlop} se fonde sur la m\xE9thode de H\xE9ron.
+
 \index{expression complexe|(}
 La derni\xE8re macro qui nous reste \xE0 voir est \macro{opexpr} qui permet
 de r\xE9aliser le calcul d'une expression complexe. Cette macro demande
@@ -1737,6 +1774,9 @@
   Construit le nombre \verb+N+ avec le seul chiffre situ\xE9 en
   \verb+T+i\xE8me position de la partie enti\xE8re du nombre
   \verb+n+. \\\hline
+  \verb+\opgfsqrt{n}+ &
+  Affiche la fa\xE7on ancienne d'afficher le calcul de la racine
+  carr\xE9e de \verb+n+. \\\hline
   \verb+\ophline(T1,T2){T3}+ &
   Trace un trait horizontal de longueur \verb+T3+, d'\xE9paisseur
   \verb+hrulewidth+ et d\xE9butant en \verb+(T1,T2)+ par
@@ -1787,6 +1827,8 @@
   \verb+\opsetintegerdigit{n}{T}{N}+ &
   Modifie le \verb+T+i\xE8me chiffre de la partie enti\xE8re de
   \verb+N+ pour qu'il soit \xE9gal \xE0 \verb+n+. \\\hline
+  \verb+\opsqrt{n}{N}+ &
+  M\xE9morise la racine carr\xE9e de \verb+n+ dans \verb+N+. \\\hline
   \verb+\opsub[P]{n1}{n2}+ &
   Affiche le r\xE9sultat de l'op\xE9ration n1-n2. \\\hline
   \verb+\opsub*{n1}{n2}{N}+ &

Modified: trunk/Master/texmf-dist/doc/generic/xlop/xlop-doc.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/generic/xlop/xlop-doc.tex
===================================================================
--- trunk/Master/texmf-dist/doc/generic/xlop/xlop-doc.tex	2017-01-08 22:18:15 UTC (rev 42898)
+++ trunk/Master/texmf-dist/doc/generic/xlop/xlop-doc.tex	2017-01-08 22:20:53 UTC (rev 42899)
@@ -248,7 +248,7 @@
 \index{number!valid}In practice, what does it mean all these rules?
 First, they means that a number writes in a decimal form can be
 preceded by any sequence of plus or minus signs. Obviously, if there
-is a odd number of minus signs, the number will be negative. Next, a
+is an odd number of minus signs, the number will be negative. Next, a
 decimal number admits only one decimal separator symbol which can
 be a dot or a comma, this one can be put anywhere in the
 number. Finally, a number is write in basis~10. Be carefull: these
@@ -262,7 +262,7 @@
 \index{parameter!syntax|(}
 Parameter assignments are local to the macro when they are indicated
 in the optional argument. To make global a parameter assignment, you
-have to use the \macro{opset} macro. For example:
+have to use the \macro{opset} macro. For instance:
 \begin{Verbatim}[xrightmargin=0pt]
   \opset{decimalsepsymbol={,}}
 \end{Verbatim}
@@ -779,7 +779,7 @@
 \parameter{safedivstep}, and \parameter{period} parameters. It is only
 partially true because a classical division will stop automatically
 when a remainder will be zero, whatever the values of these three
-parameters and a euclidean division will stop with an integer quotient
+parameters and an euclidean division will stop with an integer quotient
 without attention for these three parameters.
 \begin{SideBySideExample}
   \opdiv{25}{7}
@@ -845,7 +845,7 @@
 In order to avoid too long calculations, \package{xlop} don't process
 beyond the value of \parameter{safedivstep} parameter in division with
 period. Its default value is~50. However, \package{xlop} package show
-this problem. For example, if you ask for such a division with the
+this problem. For instance, if you ask for such a division with the
 code:
 \begin{Verbatim}[xrightmargin=0pt,frame=none]
   \opdiv[period]{1}{289}
@@ -1388,6 +1388,42 @@
   \end{tabular}
 \end{center}
 
+\index{square root}
+With version~0.26 comes the square root operation:
+\macro{opsqrt}. This macro has not the same syntax as the other
+arithmetic macros since there is no starred version. In fact, there is
+a way to display a processing of square root but it's really not
+current. I'm pretty old and my grandfather told me that he saw
+this method when he was young! Therefore, there is an \macro{opgfsqrt}
+macro to display the operation (``gf'' for grandfather).
+
+Let us see the first macro: the one which calculates the square root
+and store the result in a xlop variable:
+\begin{SideBySideExample}
+  \opsqrt{2}{sqrt2}
+  $\sqrt{2}\approx\opprint{sqrt2}$
+\end{SideBySideExample}
+This macro shares the parameter \parameter{maxdivstep} with division
+macros. For instance:
+\begin{SideBySideExample}
+  \opsqrt[maxdivstep=15]{2}{sqrt2}
+  $\sqrt{2}\approx\opprint{sqrt2}$
+\end{SideBySideExample}
+
+For ``grandfather'' display, I have not the energy to explain the
+processus. It's based on remarkable identity
+$(a+b)^2=a^2+2ab+b^2$. Thanks to Jean-Michel Sarlat who had taken time
+to explain this method in order that I can write it for
+\package{xlop}!
+
+Here is an example for square root of 15:
+\begin{CenterExample}
+  \opgfsqrt[maxdivstep=5]{15}
+\end{CenterExample}
+This method is horrible. It's horrible for human being. It's horrible
+for computer. For instance, the real operation isn't make that way:
+it uses Heron method.
+
 \index{complex expression|(}
 The very last macro we have to study is \macro{opexpr}. It calculates
 a complex expression. This macro needs two parameters: the first one
@@ -1564,7 +1600,7 @@
 \index{compilation time|)}\index{time (calculation)|)}%
 
 \newpage
-\section{Macros List}
+\section{Macro List}
 \label{sec:Liste des macros}
 \index{macros!table of|(}%
 \noindent\begin{longtable}{|l|p{6.3cm}|}
@@ -1641,6 +1677,9 @@
   \verb+\opgetintegerdigit{n}{T}{N}+ &
   Build the number \verb+N+ width the only digit in slot
   \verb+T+ of integer part of \verb+n+. \\\hline
+  \verb+\opgfsqrt{n}+ &
+  Display the old timed way to calculate a square root of
+  \verb+n+. \\\hline
   \verb+\ophline(T1,T2){T3}+ &
   Draw a horizontal rule of length \verb+T3+, of thickness
   \verb+hrulewidth+, and which begin at \verb+(T1,T2)+ in relation to
@@ -1690,6 +1729,8 @@
   \verb+\opsetintegerdigit{n}{T}{N}+ &
   Modify the digit of rank \verb+T+ in integer part of \verb+N+ in
   order to have the value \verb+n+ for this digit. \\\hline
+  \verb+\opsqrt{n}{N}+ & Put square root of \verb+n+ in
+  \verb+N+. \\\hline
   \verb+\opsub[P]{n1}{n2}+ &
   Display result of \verb+n1-n2+. \\\hline
   \verb+\opsub*{n1}{n2}{N}+ &
@@ -1816,7 +1857,8 @@
   shifting. \\\hline
   \verb+maxdivstep+ &
   \verb+10+ &
-  Maximal number of steps in division. \\\hline
+  Maximal number of steps in division or in square root
+  operation. \\\hline
   \verb+safedivstep+ &
   \verb+50+ &
   Maximal number of steps in division when there is a period to
@@ -2070,7 +2112,7 @@
 \end{SideBySideExample}
 
 Note that this code is very bad: it is very slow and don't give
-anything against native \TeX{} operations. It is only a educational
+anything against native \TeX{} operations. It is only an educational
 example. Note also that the tricks to put loop into loop with macro
 \verb+\testprimality+ inside a group. \package{xlop} operations give
 global results.\index{global allocation}

Modified: trunk/Master/texmf-dist/source/generic/xlop/manual.sty
===================================================================
--- trunk/Master/texmf-dist/source/generic/xlop/manual.sty	2017-01-08 22:18:15 UTC (rev 42898)
+++ trunk/Master/texmf-dist/source/generic/xlop/manual.sty	2017-01-08 22:20:53 UTC (rev 42899)
@@ -17,7 +17,9 @@
 \geometry{a4paper,left=4cm,right=4cm,top=3cm,bottom=3cm,nohead}
 
 \let\SBSori\SideBySideExample
-\def\SideBySideExample{\par\bigbreak\SBSori}
+\def\SideBySideExample{%
+  \par\bigbreak\SBSori
+}
 \let\endSBSori\endSideBySideExample
 \def\endSideBySideExample{%
   \endSBSori

Modified: trunk/Master/texmf-dist/tex/generic/xlop/xlop.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/xlop/xlop.tex	2017-01-08 22:18:15 UTC (rev 42898)
+++ trunk/Master/texmf-dist/tex/generic/xlop/xlop.tex	2017-01-08 22:20:53 UTC (rev 42899)
@@ -1,5 +1,5 @@
-\def\fileversion{0.25}
-\def\filedate{2013/02/26}
+\def\fileversion{0.26}
+\def\filedate{2017/01/07}
 %%
 %% xlop.tex: 
 %% eXtra Large OPeration macros for Generic TeX.
@@ -6,7 +6,7 @@
 %% See `user.pdf' for documentation;
 %%     `hacker.pdf' for explanation.
 %%
-%% Copyright 2005,2006, by Jean-C\^ome Charpentier
+%% Copyright 2005,2017, by Jean-C\^ome Charpentier
 %%   Jean-Come.Charpentier at wanadoo.fr
 %%
 %% This program may be distributed and/or modified under the
@@ -933,6 +933,11 @@
          \advance\op at count@i by1
          \xdef\op@@export{\@nameuse{OP at tmp@\the\op at count@vi}\op@@export}%
        \repeat
+       % add 0.26
+       \ifnum\OP at tmp@s=1
+         \xdef\op@@export{-\op@@export}%
+       \fi
+       % end add 0.26
      \fi
 % comment 0.24
 %     \fi
@@ -1878,7 +1883,7 @@
     \op at split{#3}{b}%
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %%% Ajout du 20/11/2006                 %%%
-%%% Sur indication de Cristophe Poulain %%%
+%%% Sur indication de Christophe Poulain %%%
     \op at cmp{b}{zero}%
     \ifopeq
       \op at error{divisor must be nonzero}%
@@ -3481,6 +3486,233 @@
     \op at floor{#1}{#2}%
   \fi
 }
+% add 0.26
+\op at split{0}{@zero}
+\op at split{1}{@one}
+\op at split{2}{@two}
+\op at split{3}{@three}
+\op at split{4}{@four}
+\op at split{5}{@five}
+\op at split{6}{@six}
+\op at split{7}{@seven}
+\op at split{8}{@height}
+\op at split{9}{@nine}
+\op at split{10}{@ten}
+
+\def\opsqrt{%
+  \@ifnextchar[{\op at sqrt}{\op at sqrt[nil]}%]
+}
+\def\op at sqrt[#1]#2#3{%
+  \begingroup
+  \opset{#1}%
+  \opcmp{0}{#2}%
+  \ifopeq
+    \op at copy{@zero}{U}%
+    \let\op at savemaxdivstep\op at maxdivstep
+  \else
+    \op at split{#2}{z}%
+    \op at count@z=\OP at z@i
+    \divide\op at count@z by2
+    \edef\op at savemaxdivstep{\op at maxdivstep}%
+    \op at count@i=\op at maxdivstep
+    \advance\op at count@i by\op at count@z
+    \advance\op at count@i by1
+    \edef\op at maxdivstep{\the\op at count@i}%
+    \ifodd\OP at z@i
+      \xdef\op at initsqrt{\@nameuse{OP at z@\OP at z@w}}%
+    \else
+      \op at count@z=\OP at z@w
+      \xdef\op at initsqrt{\@nameuse{OP at z@\the\op at count@z}}%
+      \advance\op at count@z by-1
+      \xdef\op at initsqrt{\op at initsqrt\@nameuse{OP at z@\the\op at count@z}}%
+    \fi
+    \ifnum\op at initsqrt<1
+      \op at copy{@zero}{u}%
+    \else\ifnum\op at initsqrt<3
+      \op at copy{@one}{u}%
+    \else\ifnum\op at initsqrt<7
+      \op at copy{@two}{u}%
+    \else\ifnum\op at initsqrt<13
+      \op at copy{@three}{u}%
+    \else\ifnum\op at initsqrt<21
+      \op at copy{@four}{u}%
+    \else\ifnum\op at initsqrt<31
+      \op at copy{@five}{u}%
+    \else\ifnum\op at initsqrt<43
+      \op at copy{@six}{u}%
+    \else\ifnum\op at initsqrt<57
+      \op at copy{@seven}{u}%
+    \else\ifnum\op at initsqrt<73
+      \op at copy{@height}{u}%
+    \else\ifnum\op at initsqrt<91
+      \op at copy{@nine}{u}%
+    \else
+      \op at copy{@ten}{u}%
+    \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+    \op at count@ii=\OP at z@i
+    \advance\op at count@ii by1
+    \divide\op at count@ii by2
+    \advance\op at count@ii by-1
+    \op at lshift{\the\op at count@ii}{u}%
+    \op at count@z=\OP at z@w
+    \advance\op at count@z by1
+    \edef\op@@maxdivstep{\op at maxdivstep}%
+    \loop
+      \op at mul{u}{u}{U}%
+      \op at add{U}{z}{U}%
+      \op at mul{u}{@two}{D}%
+      \edef\op at maxdivstep{\the\op at count@z}%
+      \op at div{0}{U}{D}{U}{r}%
+      \multiply\op at count@z by2
+      \ifnum\op at count@z>\op@@maxdivstep
+        \op at count@z=\op@@maxdivstep
+      \fi
+      \op at cmp{u}{U}%
+    \ifopneq
+      \op at copy{U}{u}%
+    \repeat
+  \fi
+  \op at unsplit{U}{#3}%
+  \opround{#3}{\op at savemaxdivstep}{#3}%
+  \endgroup
+}
+
+\def\opgfsqrt{%
+  \@ifnextchar[{\op at gfsqrt}{\op at gfsqrt[nil]}%]
+}
+\def\op at gfsqrt[#1]#2{%
+  \begingroup
+  \edef\op at saveparindent{\the\parindent}%
+  \parindent=0pt
+  \opset{#1}%
+  \op at split{#2}{sq}%
+  \opsqrt{#2}{@sqrt}%
+  \op at split{@sqrt}{sqrt}%
+  \op at split{\op at initsqrt}{init}%
+  \op at count@z=\OP at sqrt@w
+  \op at split{\@nameuse{OP at sqrt@\the\op at count@z}}{atosub}%
+  \op at mul{atosub}{atosub}{tosub}%
+  \setbox1=\hbox{\kern\opcolumnwidth
+    \op at display{operandstyle.1}{sq}}%
+  \setbox2=\vtop{%
+    \hbox{\ophline(-0.5,-0.25){\OP at sqrt@w.5}%
+      \op at display{resultstyle}{sqrt}}%
+    \hbox{\op at display{intermediarystyle.1}{atosub}%
+      \hbox to\opcolumnwidth{\hss\op at mulsymbol\hss}%
+      \op at display{intermediarystyle.1}{atosub}%
+      \hbox to\opcolumnwidth{\hss\op at equalsymbol\hss}%
+      \op at display{operandstyle.2}{tosub}}%
+  }
+  \op at sub{init}{tosub}{rest}%
+  \op at count@ii=\OP at init@w
+  \op at count@iii=\op at count@ii
+  \advance\op at count@iii by1
+  \setbox1=\hbox{\hsize=\op at count@iii\opcolumnwidth\vtop{%
+      \box1
+      \hbox{%
+        \op at makebox{\the\op at count@iii}{0}%
+        {operandstyle.2}{tosub}%
+        \box0}}}%
+  \op at unzero{rest}%
+  \op at copy{@zero}{cursqrt}%
+  \op at copy{@zero}{digitmul}%
+  \op at count@i=\OP at sq@w
+  \advance\op at count@i by-\OP at init@w
+  \op at count@iv=2
+  \loop
+  \ifnum\op at count@z>1
+    \op at lshift{2}{rest}%
+    \ifnum\op at count@i>0
+      \@namexdef{OP at rest@2}{\@nameuse{OP at sq@\the\op at count@i}}%
+      \advance\op at count@i by-1
+      \ifnum\op at count@i>0
+        \@namexdef{OP at rest@1}{\@nameuse{OP at sq@\the\op at count@i}}%
+        \advance\op at count@i by-1
+      \fi
+    \fi
+    \op at count@ii=\op at count@iii
+    \advance\op at count@ii by-\OP at tosub@w
+    \advance\op at count@ii by-1
+    \advance\op at count@iii by2
+    \setbox1=\hbox{\hsize=\op at count@iii\opcolumnwidth
+      \vtop{%
+        \hbox{\box1}%
+        \hbox{%
+          \oplput(\op at count@ii,0.75){\ophline(0,0){1}}%
+          \oplput(\op at count@ii,0.75){\ophline(1,0){\OP at tosub@w}}%
+          \advance\op at count@iv by-1
+          \op at makebox{\the\op at count@iii}{0}%
+          {remainderstyle.\the\op at count@iv}{rest}%
+          \advance\op at count@iv by1
+          \oplput(\op at count@ii,1.5){$-$}%
+          \box0}%
+      }}%
+    \op at multen{cursqrt}%
+    \@namexdef{OP at cursqrt@1}%
+    {\@nameuse{OP at sqrt@\the\op at count@z}}%
+    \advance\op at count@z by-1
+    \op at mul{cursqrt}{@two}{atosub}%
+    \op at unzero{atosub}%
+    \op at multen{atosub}%
+    \@namexdef{OP at atosub@1}%
+    {\@nameuse{OP at sqrt@\the\op at count@z}}%
+    \@namexdef{OP at digitmul@1}%
+    {\@nameuse{OP at sqrt@\the\op at count@z}}%
+    \op at mul{atosub}{digitmul}{tosub}%
+    \op at unzero{tosub}%
+    \setbox2=\hbox{\vtop{%
+        \hbox{\box2}%
+        \hbox{\vrule width0pt height0pt
+          depth\oplineheight}%
+        \hbox{%
+          \op at display
+          {intermediarystyle.\the\op at count@iv}{atosub}%
+          \hbox to\opcolumnwidth{\hss\op at mulsymbol\hss}%
+          \op at display
+          {intermediarystyle.\the\op at count@iv}{digitmul}%
+          \hbox to\opcolumnwidth{\hss\op at equalsymbol\hss}%
+          \advance\op at count@iv by1
+          \op at display{operandstyle.\the\op at count@iv}{tosub}%
+        }%
+      }}%
+    \op at sub{rest}{tosub}{rest}%
+    \op at unzero{rest}%
+    \advance\op at count@iv by1
+    \setbox1=\hbox{\hsize=\op at count@iii\opcolumnwidth
+      \vtop{%
+        \hbox{\box1}%
+        \hbox{%
+          \op at makebox{\the\op at count@iii}{0}%
+          {operandstyle.\the\op at count@iv}{tosub}%
+          \box0}}}%
+    \repeat
+    \op at count@ii=\op at count@iii
+    \advance\op at count@ii by-\OP at tosub@w
+    \advance\op at count@ii by-1
+    \setbox1=\hbox{\hsize=\op at count@iii\opcolumnwidth
+      \vtop{%
+        \hbox{\box1}%
+        \hbox{%
+          \oplput(\op at count@ii,0.75){%
+            \ophline(0,0){1}}%
+          \oplput(\op at count@ii,0.75){%
+            \ophline(1,0){\OP at tosub@w}}%
+          \op at makebox{\the\op at count@iii}{0}%
+          {remainderstyle.\the\op at count@iv}{rest}%
+          \oplput(\op at count@ii,1.5){$-$}%
+          \box0}%
+      }%
+    }%
+    \parindent=\op at saveparindent
+    \leavevmode\hbox{%
+      \box1
+      \kern0.5\opcolumnwidth
+      \vrule
+      \kern0.5\opcolumnwidth
+      \box2}%
+    \endgroup
+  }
+% end add 0.26
 \edef\opHatCode{\the\catcode`\^}
 \catcode`\^=12\relax
 \def\opexpr{\@ifnextchar[{\op at exprarg}{\op at exprarg[nil]}}



More information about the tex-live-commits mailing list