texlive[44975] Master/texmf-dist: xint (7aug17)

commits+karl at tug.org commits+karl at tug.org
Mon Aug 7 23:08:44 CEST 2017


Revision: 44975
          http://tug.org/svn/texlive?view=revision&revision=44975
Author:   karl
Date:     2017-08-07 23:08:44 +0200 (Mon, 07 Aug 2017)
Log Message:
-----------
xint (7aug17)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/generic/xint/CHANGES.html
    trunk/Master/texmf-dist/doc/generic/xint/CHANGES.pdf
    trunk/Master/texmf-dist/doc/generic/xint/README
    trunk/Master/texmf-dist/doc/generic/xint/README.html
    trunk/Master/texmf-dist/doc/generic/xint/README.pdf
    trunk/Master/texmf-dist/doc/generic/xint/sourcexint.pdf
    trunk/Master/texmf-dist/doc/generic/xint/xint.pdf
    trunk/Master/texmf-dist/source/generic/xint/xint.dtx
    trunk/Master/texmf-dist/source/generic/xint/xint.ins
    trunk/Master/texmf-dist/tex/generic/xint/xint.sty
    trunk/Master/texmf-dist/tex/generic/xint/xintbinhex.sty
    trunk/Master/texmf-dist/tex/generic/xint/xintcfrac.sty
    trunk/Master/texmf-dist/tex/generic/xint/xintcore.sty
    trunk/Master/texmf-dist/tex/generic/xint/xintexpr.sty
    trunk/Master/texmf-dist/tex/generic/xint/xintfrac.sty
    trunk/Master/texmf-dist/tex/generic/xint/xintgcd.sty
    trunk/Master/texmf-dist/tex/generic/xint/xintkernel.sty
    trunk/Master/texmf-dist/tex/generic/xint/xintseries.sty
    trunk/Master/texmf-dist/tex/generic/xint/xinttools.sty

Modified: trunk/Master/texmf-dist/doc/generic/xint/CHANGES.html
===================================================================
--- trunk/Master/texmf-dist/doc/generic/xint/CHANGES.html	2017-08-07 21:08:29 UTC (rev 44974)
+++ trunk/Master/texmf-dist/doc/generic/xint/CHANGES.html	2017-08-07 21:08:44 UTC (rev 44975)
@@ -4,7 +4,7 @@
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
   <meta http-equiv="Content-Style-Type" content="text/css" />
   <meta name="generator" content="pandoc" />
-  <meta name="author" content="xint 1.2m" />
+  <meta name="author" content="xint 1.2n" />
   <title>CHANGE LOG</title>
   <style type="text/css">code{white-space: pre;}</style>
   <style type="text/css">
@@ -17,59 +17,63 @@
 <body>
 <div id="header">
 <h1 class="title">CHANGE LOG</h1>
-<h2 class="author">xint 1.2m</h2>
-<h3 class="date">2017/07/31</h3>
+<h2 class="author">xint 1.2n</h2>
+<h3 class="date">2017/08/06</h3>
 </div>
 <div id="TOC">
 <ul>
-<li><a href="#m-20170731"><code>1.2m (2017/07/31)</code></a><ul>
+<li><a href="#n-20170806"><code>1.2n (2017/08/06)</code></a><ul>
 <li><a href="#incompatible-changes">Incompatible changes</a></li>
 <li><a href="#improvements-and-new-features">Improvements and new features</a></li>
+</ul></li>
+<li><a href="#m-20170731"><code>1.2m (2017/07/31)</code></a><ul>
+<li><a href="#incompatible-changes-1">Incompatible changes</a></li>
+<li><a href="#improvements-and-new-features-1">Improvements and new features</a></li>
 <li><a href="#bug-fixes">Bug fixes</a></li>
 </ul></li>
 <li><a href="#l-20170726"><code>1.2l (2017/07/26)</code></a><ul>
 <li><a href="#removed">Removed</a></li>
-<li><a href="#improvements-and-new-features-1">Improvements and new features</a></li>
+<li><a href="#improvements-and-new-features-2">Improvements and new features</a></li>
 <li><a href="#bug-fixes-1">Bug fixes</a></li>
 </ul></li>
 <li><a href="#k-20170106"><code>1.2k (2017/01/06)</code></a><ul>
-<li><a href="#incompatible-changes-1">Incompatible changes</a></li>
-<li><a href="#improvements-and-new-features-2">Improvements and new features</a></li>
+<li><a href="#incompatible-changes-2">Incompatible changes</a></li>
+<li><a href="#improvements-and-new-features-3">Improvements and new features</a></li>
 <li><a href="#bug-fixes-2">Bug fixes</a></li>
 </ul></li>
 <li><a href="#j-20161222"><code>1.2j (2016/12/22)</code></a><ul>
-<li><a href="#improvements-and-new-features-3">Improvements and new features</a></li>
+<li><a href="#improvements-and-new-features-4">Improvements and new features</a></li>
 <li><a href="#bug-fixes-3">Bug fixes</a></li>
 </ul></li>
 <li><a href="#i-20161213"><code>1.2i (2016/12/13)</code></a><ul>
-<li><a href="#incompatible-changes-2">Incompatible changes</a></li>
+<li><a href="#incompatible-changes-3">Incompatible changes</a></li>
 <li><a href="#removed-1">Removed</a></li>
-<li><a href="#improvements-and-new-features-4">Improvements and new features</a></li>
+<li><a href="#improvements-and-new-features-5">Improvements and new features</a></li>
 <li><a href="#bug-fixes-4">Bug fixes</a></li>
 </ul></li>
 <li><a href="#h-20161120"><code>1.2h (2016/11/20)</code></a><ul>
-<li><a href="#improvements-and-new-features-5">Improvements and new features</a></li>
+<li><a href="#improvements-and-new-features-6">Improvements and new features</a></li>
 <li><a href="#bug-fixes-5">Bug fixes</a></li>
 </ul></li>
 <li><a href="#g-20160319"><code>1.2g (2016/03/19)</code></a><ul>
-<li><a href="#incompatible-changes-3">Incompatible changes</a></li>
-<li><a href="#improvements-and-new-features-6">Improvements and new features</a></li>
+<li><a href="#incompatible-changes-4">Incompatible changes</a></li>
+<li><a href="#improvements-and-new-features-7">Improvements and new features</a></li>
 </ul></li>
 <li><a href="#f-20160312"><code>1.2f (2016/03/12)</code></a><ul>
-<li><a href="#incompatible-changes-4">Incompatible changes</a></li>
-<li><a href="#improvements-and-new-features-7">Improvements and new features</a></li>
+<li><a href="#incompatible-changes-5">Incompatible changes</a></li>
+<li><a href="#improvements-and-new-features-8">Improvements and new features</a></li>
 <li><a href="#bug-fixes-6">Bug fixes</a></li>
 </ul></li>
 <li><a href="#e-20151122"><code>1.2e (2015/11/22)</code></a><ul>
-<li><a href="#improvements-and-new-features-8">Improvements and new features</a></li>
+<li><a href="#improvements-and-new-features-9">Improvements and new features</a></li>
 <li><a href="#bug-fixes-7">Bug fixes</a></li>
 </ul></li>
 <li><a href="#d-20151118"><code>1.2d (2015/11/18)</code></a><ul>
-<li><a href="#improvements-and-new-features-9">Improvements and new features</a></li>
+<li><a href="#improvements-and-new-features-10">Improvements and new features</a></li>
 <li><a href="#bug-fixes-8">Bug fixes</a></li>
 </ul></li>
 <li><a href="#c-20151116"><code>1.2c (2015/11/16)</code></a><ul>
-<li><a href="#improvements-and-new-features-10">Improvements and new features</a></li>
+<li><a href="#improvements-and-new-features-11">Improvements and new features</a></li>
 <li><a href="#bug-fixes-9">Bug fixes</a></li>
 </ul></li>
 <li><a href="#b-20151029"><code>1.2b (2015/10/29)</code></a><ul>
@@ -76,21 +80,21 @@
 <li><a href="#bug-fixes-10">Bug fixes</a></li>
 </ul></li>
 <li><a href="#a-20151019"><code>1.2a (2015/10/19)</code></a><ul>
-<li><a href="#improvements-and-new-features-11">Improvements and new features</a></li>
+<li><a href="#improvements-and-new-features-12">Improvements and new features</a></li>
 <li><a href="#bug-fixes-11">Bug fixes</a></li>
 </ul></li>
 <li><a href="#section"><code>1.2 (2015/10/10)</code></a><ul>
 <li><a href="#removed-2">Removed</a></li>
-<li><a href="#improvements-and-new-features-12">Improvements and new features</a></li>
+<li><a href="#improvements-and-new-features-13">Improvements and new features</a></li>
 </ul></li>
 <li><a href="#c-20150912"><code>1.1c (2015/09/12)</code></a></li>
 <li><a href="#b-20150831"><code>1.1b (2015/08/31)</code></a></li>
 <li><a href="#a-20141107"><code>1.1a (2014/11/07)</code></a></li>
 <li><a href="#section-1"><code>1.1 (2014/10/28)</code></a><ul>
-<li><a href="#incompatible-changes-5">Incompatible changes</a></li>
+<li><a href="#incompatible-changes-6">Incompatible changes</a></li>
 <li><a href="#removed-3">Removed</a></li>
 <li><a href="#deprecated">Deprecated</a></li>
-<li><a href="#improvements-and-new-features-13">Improvements and new features</a></li>
+<li><a href="#improvements-and-new-features-14">Improvements and new features</a></li>
 <li><a href="#bug-fixes-12">Bug fixes</a></li>
 </ul></li>
 <li><a href="#n-20140401"><code>1.09n (2014/04/01)</code></a></li>
@@ -119,17 +123,27 @@
 <li><a href="#section-8"><code>1.0 (2013/03/28)</code></a></li>
 </ul>
 </div>
-<pre><code>Source:  xint.dtx 1.2m 2017/07/31 (doc 2017/07/31)
+<pre><code>Source:  xint.dtx 1.2n 2017/08/06 (doc 2017/08/06)
 Author:  Jean-Francois Burnol
 Info:    Expandable operations on big integers, decimals, fractions
 License: LPPL 1.3c</code></pre>
-<h2 id="m-20170731"><code>1.2m (2017/07/31)</code></h2>
+<h2 id="n-20170806"><code>1.2n (2017/08/06)</code></h2>
 <h3 id="incompatible-changes">Incompatible changes</h3>
 <ul>
+<li><strong>xintbinhex</strong> does not load package <strong>xintcore</strong> anymore, but only <strong>xintkernel</strong>.</li>
+</ul>
+<h3 id="improvements-and-new-features">Improvements and new features</h3>
+<ul>
+<li><p><strong>xintbinhex</strong> has only <strong>xintkernel</strong> as dependency.</p></li>
+<li><p>Macros of <strong>xintbinhex</strong> have been improved for speed and increased maximal sizes of allowable inputs.</p></li>
+</ul>
+<h2 id="m-20170731"><code>1.2m (2017/07/31)</code></h2>
+<h3 id="incompatible-changes-1">Incompatible changes</h3>
+<ul>
 <li><p><strong>xintbinhex</strong>: the length of the input is now limited. The maximum size depends on the macro and ranges from about <code>4000</code> to about <code>19900</code> digits.</p></li>
 <li><p><strong>xintbinhex</strong>: <code>\xintCHexToBin</code> is now the variant of <code>\xintHexToBin</code> which does not remove leading binary zeroes: <code>N</code> hex-digits give on output exactly <code>4N</code> binary digits.</p></li>
 </ul>
-<h3 id="improvements-and-new-features">Improvements and new features</h3>
+<h3 id="improvements-and-new-features-1">Improvements and new features</h3>
 <ul>
 <li><strong>xintbinhex</strong>: all macros have been rewritten using techniques from the 1.2 release (they had remained unmodified since <code>1.08</code> of <code>2013/06/07</code>.) The new macros are faster but limited to a few thousand digits. The <code>1.08</code> routines could handle tens of thousands of digits, but not in a reasonable time.</li>
 </ul>
@@ -144,7 +158,7 @@
 <ul>
 <li><code>\xintiiSumExpr</code>, <code>\xintiiPrdExpr</code> (<strong>xint</strong>) and <code>\xintSumExpr</code>, <code>\xintPrdExpr</code> (<strong>xintfrac</strong>). They had not been formally deprecated, but had been left un-documented since <code>1.09d (2013/10/22)</code>.</li>
 </ul>
-<h3 id="improvements-and-new-features-1">Improvements and new features</h3>
+<h3 id="improvements-and-new-features-2">Improvements and new features</h3>
 <ul>
 <li><p>the underscore character <code>_</code> is accepted by the <strong>xintexpr</strong> parsers as a digit separator (the space character already could be used for improved readability of big numbers). It is not allowed as <em>first</em> character of a number, as it would then be mis-interpreted as the start of a possible variable name.</p></li>
 <li><p>some refactoring in <strong>xintcore</strong> auxiliary routines and in <code>\xintiiSub</code> and <code>\xintiiCmp</code> for some small efficiency gains.</p></li>
@@ -160,12 +174,12 @@
 <li><p><strong>xintfrac</strong>: the manual said one could use directly <code>\numexpr</code> compatible expressions in arithmetic macros (without even a <code>\numexpr</code> encapsulation) if they were expressed with up to 8 tokens. There was a bug if these 8 tokens evaluated to zero. The bug has been fixed, and up to 9 tokens are now accepted. But it is simpler to use <code>\the\numexpr</code> prefix and not to worry about the token count... The ending <code>\relax</code> is now un-needed.</p></li>
 </ul>
 <h2 id="k-20170106"><code>1.2k (2017/01/06)</code></h2>
-<h3 id="incompatible-changes-1">Incompatible changes</h3>
+<h3 id="incompatible-changes-2">Incompatible changes</h3>
 <ul>
 <li><p>macro <code>\xintFloat</code> which rounds its input to a floating point number does <em>not</em> print anymore <code>10.0...0eN</code> to signal an upwards rounding to the next power of ten. The mantissa has in all cases except the zero input exactly one digit before the decimal mark.</p></li>
 <li><p>some floating point computations may differ in the least significant digits, due to a change in the rounding algorithm applied to macro arguments expressed as fractions and to an improvement in precision regarding half-integer powers in expressions. See next.</p></li>
 </ul>
-<h3 id="improvements-and-new-features-2">Improvements and new features</h3>
+<h3 id="improvements-and-new-features-3">Improvements and new features</h3>
 <ul>
 <li><p>the initial rounding to the target precision <code>P</code> which is applied by the floating point macros from <strong>xintfrac</strong> to their arguments achieves the <em>exact (aka correct) rounding</em> even for inputs which are fractions with more than <code>P+2</code> digits in their numerators and denominators (<code>>1</code>.) Hence the computed values depend only on the arguments as rational numbers and not upon their representatives. This is not relevant to <em>expressions</em> (<strong>xintexpr</strong>), because the <code>\xintfloatexpr</code> parser sees there <code>/</code> as an operator and does not (apart from special constructs) get to manipulate fractions as such.</p></li>
 <li><p><code>\xintnewdummy</code> is public interface to a <code>1.2e</code> macro which serves to declare any given catcode 11 character as a dummy variable for expressions (<strong>xintexpr</strong>). This is useful for Unicode engines (the Latin letters being already all pre-declared as dummy variables.)</p></li>
@@ -179,7 +193,7 @@
 <li><p><code>\xintiiSquareRoot{0}</code> now produces <code>{1}{1}</code>, which fits better the general documented behaviour of this macro than <code>11</code>.</p></li>
 </ul>
 <h2 id="j-20161222"><code>1.2j (2016/12/22)</code></h2>
-<h3 id="improvements-and-new-features-3">Improvements and new features</h3>
+<h3 id="improvements-and-new-features-4">Improvements and new features</h3>
 <ul>
 <li><p><strong>xinttools</strong> and <strong>xintexpr</strong>:</p>
 <ol style="list-style-type: decimal">
@@ -193,7 +207,7 @@
 <li>fix two <code>1.2i</code> regressions caused by undefined macros (<code>\xintNthElt</code> in certain branches and <code>[list][N]</code> item extraction in certain cases.) The test files existed but were not executed prior to release. Automation in progress.</li>
 </ul>
 <h2 id="i-20161213"><code>1.2i (2016/12/13)</code></h2>
-<h3 id="incompatible-changes-2">Incompatible changes</h3>
+<h3 id="incompatible-changes-3">Incompatible changes</h3>
 <ul>
 <li><code>\xintDecSplit</code> second argument must have no sign (former code replaced it with its absolute value, a sign now may cause an error.)</li>
 </ul>
@@ -201,7 +215,7 @@
 <ul>
 <li>deprecated macros <code>\xintifTrue</code>, <code>\xintifTrueFalse</code>, <code>\xintQuo</code>, <code>\xintRem</code>, <code>\xintquo</code>, <code>\xintrem</code>.</li>
 </ul>
-<h3 id="improvements-and-new-features-4">Improvements and new features</h3>
+<h3 id="improvements-and-new-features-5">Improvements and new features</h3>
 <ul>
 <li><p><strong>xintkernel</strong>: <code>\xintLength</code> is faster. New macros:</p>
 <ul>
@@ -225,7 +239,7 @@
 <li><code>\xintDecSplitL</code> and <code>\xintDecSplitR</code> from <strong>xint</strong> produced their output in a spurious brace pair (bug introduced in <code>1.2f</code>).</li>
 </ul>
 <h2 id="h-20161120"><code>1.2h (2016/11/20)</code></h2>
-<h3 id="improvements-and-new-features-5">Improvements and new features</h3>
+<h3 id="improvements-and-new-features-6">Improvements and new features</h3>
 <ul>
 <li><p>new macro <code>\xintNewFunction</code> in <strong>xintexpr</strong> which allows to extend the parser syntax with functions in situations where <code>\xintdeffunc</code> is not usable (typically, because dummy variables are used over a not yet determined range of values because it depends on the variables).</p></li>
 <li><p>after three years of strict obedience to <code>xint</code> prefix, now <code>\thexintexpr</code>, <code>\thexintiexpr</code>, <code>\thexintfloatexpr</code>, and <code>\thexintiiexpr</code> are provided as synonyms to <code>\xinttheexpr</code>, etc...</p></li>
@@ -238,12 +252,12 @@
 <li><p>the <code>add</code> and <code>mul</code> from <strong>xintexpr</strong>, which work with dummy variables since <code>1.1</code>, raised an error since <code>1.2c 2015/11/16</code> when the dummy variable was given an empty range (or list) of values, rather than producing respectively <code>0</code> and <code>1</code> as formerly.</p></li>
 </ul>
 <h2 id="g-20160319"><code>1.2g (2016/03/19)</code></h2>
-<h3 id="incompatible-changes-3">Incompatible changes</h3>
+<h3 id="incompatible-changes-4">Incompatible changes</h3>
 <ul>
 <li><p>inside expressions, list item selector <code>[L][n]</code> counts starting at zero, not at one. This is more coherent with <code>[L][a:b]</code> which was already exactly like in Python since its introduction. A function len(L) replaces earlier <code>[L][0]</code>.</p></li>
 <li><p>former <code>iter</code> keyword now called <code>iterr</code>. Indeed it matched with <code>rrseq</code>, the new <code>iter</code> (which was somehow missing from <code>1.1</code>) is the one matching <code>rseq</code>. Allows to iterate more easily with a "list" variable.</p></li>
 </ul>
-<h3 id="improvements-and-new-features-6">Improvements and new features</h3>
+<h3 id="improvements-and-new-features-7">Improvements and new features</h3>
 <ul>
 <li><p>in <strong>xintexpr.sty</strong>: list selectors <code>[L][n]</code> and <code>[L][a:b]</code> are more efficient: the earlier <code>1.1</code> routines did back and forth conversions from comma separated values to braced tokens, the <code>1.2g</code> routines use macros from <strong>xinttools.sty</strong> handling directly the encountered lists of comma separated values.</p></li>
 <li><p>in <strong>xinttools.sty</strong>: slight improvements in the efficiency of the <code>\xintNthElt</code>, <code>\xintKeep</code>, <code>\xintTrim</code> routines and new routines handling directly comma separated values. The latter are not included in the user manual (they are not <code>\long</code>, they don't make efforts to preserve some braces, do not worry about spaces, all those worries being irrelevant to the use in expressions for list selectors).</p></li>
@@ -252,11 +266,11 @@
 <li><p>the syntax of expressions is described in a devoted chapter of the documentation; an example shows how to implement (expandably) the Brent-Salamin algorithm for computation of Pi using <code>iter</code> in a float expression.</p></li>
 </ul>
 <h2 id="f-20160312"><code>1.2f (2016/03/12)</code></h2>
-<h3 id="incompatible-changes-4">Incompatible changes</h3>
+<h3 id="incompatible-changes-5">Incompatible changes</h3>
 <ul>
 <li>no more <code>\xintFac</code> macro but <code>\xintiFac/\xintiiFac/\xintFloatFac</code>.</li>
 </ul>
-<h3 id="improvements-and-new-features-7">Improvements and new features</h3>
+<h3 id="improvements-and-new-features-8">Improvements and new features</h3>
 <ul>
 <li><p>functions <code>binomial</code>, <code>pfactorial</code> and <code>factorial</code> in both integer and float versions.</p></li>
 <li><p>macros <code>\xintiiBinomial</code>, <code>\xintiiPFactorial</code> (<strong>xint.sty</strong>) and <code>\xintFloatBinomial</code>, <code>\xintFloatPFactorial</code> (<strong>xintfrac.sty</strong>). Improvements to <code>\xintFloatFac</code>.</p></li>
@@ -277,7 +291,7 @@
 <li><p>the comparison operators were not recognized by <code>\xintNewIIExpr</code> and <code>\xintdefiifunc</code> constructs.</p></li>
 </ul>
 <h2 id="e-20151122"><code>1.2e (2015/11/22)</code></h2>
-<h3 id="improvements-and-new-features-8">Improvements and new features</h3>
+<h3 id="improvements-and-new-features-9">Improvements and new features</h3>
 <ul>
 <li><p>macro <code>\xintunassignvar</code>.</p></li>
 <li><p>slight modifications of the logged messages in case of <code>\xintverbosetrue</code>.</p></li>
@@ -291,7 +305,7 @@
 <li><p>in <strong>xintexpr</strong>: contrarily to what <code>1.2d</code> documentation said, tacit multiplication was not yet always done with enhanced precedence. Now yes.</p></li>
 </ul>
 <h2 id="d-20151118"><code>1.2d (2015/11/18)</code></h2>
-<h3 id="improvements-and-new-features-9">Improvements and new features</h3>
+<h3 id="improvements-and-new-features-10">Improvements and new features</h3>
 <ul>
 <li><p>the function definitions done by <code>\xintdeffunc</code> et al., as well as the macro declarations by <code>\xintNewExpr</code> et al. now have only local scope.</p></li>
 <li><p>tacit multiplication applies to more cases, for example (x+y)z, and always ties more than standard * infix operator, e.g. x/2y is like x/(2*y).</p></li>
@@ -302,7 +316,7 @@
 <li>in <strong>xintcore</strong>: release <code>1.2c</code> had inadvertently broken the <code>\xintiiDivRound</code> macro.</li>
 </ul>
 <h2 id="c-20151116"><code>1.2c (2015/11/16)</code></h2>
-<h3 id="improvements-and-new-features-10">Improvements and new features</h3>
+<h3 id="improvements-and-new-features-11">Improvements and new features</h3>
 <ul>
 <li><p>macros <code>\xintdeffunc</code>, <code>\xintdefiifunc</code>, <code>\xintdeffloatfunc</code> and boolean <code>\ifxintverbose</code>.</p></li>
 <li><p>on-going code improvements and documentation enhancements, but stopped in order to issue this bugfix release.</p></li>
@@ -317,7 +331,7 @@
 <li>in <strong>xintcore</strong>: recent release <code>1.2</code> introduced a bug in the division macros, causing a crash when the divisor started with 99999999 (it was attempted to use with 1+99999999 a subroutine expecting only 8-digits numbers).</li>
 </ul>
 <h2 id="a-20151019"><code>1.2a (2015/10/19)</code></h2>
-<h3 id="improvements-and-new-features-11">Improvements and new features</h3>
+<h3 id="improvements-and-new-features-12">Improvements and new features</h3>
 <ul>
 <li><p>added <code>\xintKeepUnbraced</code>, <code>\xintTrimUnbraced</code> (<strong>xinttools</strong>) and fixed documentation of <code>\xintKeep</code> and <code>\xintTrim</code> regarding brace stripping.</p></li>
 <li><p>added <code>\xintiiMaxof/\xintiiMinof</code> (<strong>xint</strong>).</p></li>
@@ -332,7 +346,7 @@
 <ul>
 <li>the macros <code>\xintAdd</code>, <code>\xintSub</code>, <code>\xintMul</code>, <code>\xintMax</code>, <code>\xintMin</code>, <code>\xintMaxof</code>, <code>\xintMinof</code> are removed from package <strong>xint</strong>, and only exist in the versions from <strong>xintfrac</strong>. With only <strong>xintcore</strong> or <strong>xint</strong> loaded, one <em>must</em> use <code>\xintiiAdd</code>, <code>\xintiiSub</code>, ..., or <code>\xintiAdd</code>, <code>\xintiSub</code>, etc...</li>
 </ul>
-<h3 id="improvements-and-new-features-12">Improvements and new features</h3>
+<h3 id="improvements-and-new-features-13">Improvements and new features</h3>
 <ul>
 <li><p>the basic arithmetic implemented in <strong>xintcore</strong> has been entirely rewritten. The mathematics remains the elementary school one, but the <code>TeX</code> implementation achieves higher speed (except, regarding addition/subtraction, for numbers up to about thirty digits), the gains becoming quite significant for numbers with hundreds of digits.</p></li>
 <li><p>the inputs must have less than 19959 digits. But computations with thousands of digits take time.</p></li>
@@ -366,7 +380,7 @@
 <li><p>various typographical fixes throughout the documentation, and a bit of clean up of the code comments. Improved <code>\Factors</code> example of nested <code>subs</code>, <code>rseq</code>, <code>iter</code> in <code>\xintiiexpr</code>.</p></li>
 </ul>
 <h2 id="section-1"><code>1.1 (2014/10/28)</code></h2>
-<h3 id="incompatible-changes-5">Incompatible changes</h3>
+<h3 id="incompatible-changes-6">Incompatible changes</h3>
 <ul>
 <li><p>in <code>\xintiiexpr</code>, <code>/</code> does <em>rounded</em> division, rather than the Euclidean division (for positive arguments, this is truncated division). The <code>//</code> operator does truncated division,</p></li>
 <li><p>the <code>:</code> operator for three-way branching is gone, replaced with <code>??</code>,</p></li>
@@ -385,7 +399,7 @@
 <li><p><code>\xintMax</code>, <code>\xintMin</code>, <code>\xintAdd</code>, <code>\xintSub</code>, <code>\xintMul</code> (<strong>xint</strong>): their usage without <strong>xintfrac</strong> is deprecated; use <code>\xintiMax</code>, <code>\xintiMin</code>, <code>\xintiAdd</code>, <code>\xintiSub</code>, <code>\xintiMul</code>.</p></li>
 <li><p>the <code>&</code> and <code>|</code> as Boolean operators in <code>xintexpr</code>-essions are deprecated in favour of <code>&&</code> and <code>||</code>. The single letter operators might be assigned some other meaning in some later release (bitwise operations, perhaps). Do not use them.</p></li>
 </ul>
-<h3 id="improvements-and-new-features-13">Improvements and new features</h3>
+<h3 id="improvements-and-new-features-14">Improvements and new features</h3>
 <ul>
 <li><p>new package <strong>xintcore</strong> has been split off <strong>xint</strong>. It contains the core arithmetic macros (it is loaded by LaTeX package <strong>bnumexpr</strong>),</p></li>
 <li><p>neither <strong>xint</strong> nor <strong>xintfrac</strong> load <strong>xinttools</strong>. Only <strong>xintexpr</strong> does,</p></li>

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

Modified: trunk/Master/texmf-dist/doc/generic/xint/README
===================================================================
--- trunk/Master/texmf-dist/doc/generic/xint/README	2017-08-07 21:08:29 UTC (rev 44974)
+++ trunk/Master/texmf-dist/doc/generic/xint/README	2017-08-07 21:08:44 UTC (rev 44975)
@@ -1,4 +1,4 @@
-    Source:  xint.dtx 1.2m 2017/07/31 (doc 2017/07/31)
+    Source:  xint.dtx 1.2n 2017/08/06 (doc 2017/08/06)
     Author:  Jean-Francois Burnol
     Info:    Expandable operations on big integers, decimals, fractions
     License: LPPL 1.3c
@@ -65,7 +65,7 @@
 and hexadecimal notation requires explicit loading of xintbinhex.
 
 Package xintcore is the subset of xint providing only the five
-operations on big integers: \xintiiAdd, \xintiiMul, ... It is (by
+operations on big integers: \xintiiAdd, \xintiiMul, ... It is (by
 default) loaded by the (LaTeX only) package bnumexpr which provides a
 more light-weight expression parser handling only big integers, the four
 operations, the power operation and the factorial.

Modified: trunk/Master/texmf-dist/doc/generic/xint/README.html
===================================================================
--- trunk/Master/texmf-dist/doc/generic/xint/README.html	2017-08-07 21:08:29 UTC (rev 44974)
+++ trunk/Master/texmf-dist/doc/generic/xint/README.html	2017-08-07 21:08:44 UTC (rev 44975)
@@ -4,7 +4,7 @@
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
   <meta http-equiv="Content-Style-Type" content="text/css" />
   <meta name="generator" content="pandoc" />
-  <meta name="author" content="xint 1.2m" />
+  <meta name="author" content="xint 1.2n" />
   <title>README</title>
   <style type="text/css">code{white-space: pre;}</style>
   <style type="text/css">
@@ -17,8 +17,8 @@
 <body>
 <div id="header">
 <h1 class="title">README</h1>
-<h2 class="author">xint 1.2m</h2>
-<h3 class="date">2017/07/31</h3>
+<h2 class="author">xint 1.2n</h2>
+<h3 class="date">2017/08/06</h3>
 </div>
 <div id="TOC">
 <ul>
@@ -36,7 +36,7 @@
 <li><a href="#license">License</a></li>
 </ul>
 </div>
-<pre><code>Source:  xint.dtx 1.2m 2017/07/31 (doc 2017/07/31)
+<pre><code>Source:  xint.dtx 1.2n 2017/08/06 (doc 2017/08/06)
 Author:  Jean-Francois Burnol
 Info:    Expandable operations on big integers, decimals, fractions
 License: LPPL 1.3c</code></pre>
@@ -62,7 +62,7 @@
 \usepackage{xintexpr}   % expressions with infix operators</code></pre>
 <p>Further packages: <code>xintbinhex</code>, <code>xintgcd</code>, <code>xintseries</code> and <code>xintcfrac</code>.</p>
 <p>Main dependencies are handled automatically. For example <code>xintexpr</code> automatically loads <code>xintfrac</code> which itself loads <code>xint</code>; but use of the <code>gcd</code> and <code>lcm</code> functions in expressions require explicit loading of <code>xintgcd</code>, and hexadecimal notation requires explicit loading of <code>xintbinhex</code>.</p>
-<p>Package <code>xintcore</code> is the subset of <code>xint</code> providing only the five operations on big integers: <code>\xintiiAdd</code>, <code>\xintiiMul</code>, ... It is (by default) loaded by the (LaTeX only) package <a href="http://www.ctan.org/pkg/bnumexpr">bnumexpr</a> which provides a more light-weight expression parser handling only big integers, the four operations, the power operation and the factorial.</p>
+<p>Package <code>xintcore</code> is the subset of <code>xint</code> providing only the five operations on big integers: <code>\xintiiAdd</code>, <code>\xintiiMul</code>, ... It is (by default) loaded by the (LaTeX only) package <a href="http://www.ctan.org/pkg/bnumexpr">bnumexpr</a> which provides a more light-weight expression parser handling only big integers, the four operations, the power operation and the factorial.</p>
 <p>There is also <code>xinttools</code> which is a separate package providing, among others, expandable and non-expandable loops such as <code>\xintFor</code>.</p>
 <h2 id="with-tex">With TeX</h2>
 <p>One does for example:</p>

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

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

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

Modified: trunk/Master/texmf-dist/source/generic/xint/xint.dtx
===================================================================
--- trunk/Master/texmf-dist/source/generic/xint/xint.dtx	2017-08-07 21:08:29 UTC (rev 44974)
+++ trunk/Master/texmf-dist/source/generic/xint/xint.dtx	2017-08-07 21:08:44 UTC (rev 44975)
@@ -3,20 +3,20 @@
 % Extract all files via "etex xint.dtx" and do "make help"
 % or follow instructions from extracted README.md.
 %<*dtx>
-\def\xintdtxtimestamp {Time-stamp: <31-07-2017 at 22:49:40 CEST>}
+\def\xintdtxtimestamp {Time-stamp: <06-08-2017 at 23:22:42 CEST>}
 %</dtx>
 %<*drv>
 %% ---------------------------------------------------------------
-\def\xintdocdate {2017/07/31}
-\def\xintbndldate{2017/07/31}
-\def\xintbndlversion {1.2m}
+\def\xintdocdate {2017/08/06}
+\def\xintbndldate{2017/08/06}
+\def\xintbndlversion {1.2n}
 %</drv>
 %<readme>% README
 %<changes>% CHANGE LOG
-%<readme|changes>% xint 1.2m
-%<readme|changes>% 2017/07/31
+%<readme|changes>% xint 1.2n
+%<readme|changes>% 2017/08/06
 %<readme|changes>
-%<readme|changes>    Source:  xint.dtx 1.2m 2017/07/31 (doc 2017/07/31)
+%<readme|changes>    Source:  xint.dtx 1.2n 2017/08/06 (doc 2017/08/06)
 %<readme|changes>    Author:  Jean-Francois Burnol
 %<readme|changes>    Info:    Expandable operations on big integers, decimals, fractions
 %<readme|changes>    License: LPPL 1.3c
@@ -23,7 +23,7 @@
 %<readme|changes>
 %<*!readme&!changes&!dohtmlsh&!dopdfsh&!makefile>
 %% ---------------------------------------------------------------
-%% The xint bundle 1.2m 2017/07/31
+%% The xint bundle 1.2n 2017/08/06
 %% Copyright (C) 2013-2017 by Jean-Francois Burnol
 %<xintkernel>%% xintkernel: Paraphernalia for the xint packages
 %<xinttools>%% xinttools: Expandable and non-expandable utilities
@@ -100,7 +100,7 @@
 `xintbinhex`.
 
 Package `xintcore` is the subset of `xint` providing only the five
-operations on big integers: `\xintiiAdd`, `\xintiiMul`,\ ... It is (by
+operations on big integers: `\xintiiAdd`, `\xintiiMul`, ... It is (by
 default) loaded by the (LaTeX only) package
 [bnumexpr](http://www.ctan.org/pkg/bnumexpr) which provides a more
 light-weight expression parser handling only big integers, the four
@@ -250,6 +250,22 @@
 %</readme>--------------------------------------------------------
 %<*changes>-------------------------------------------------------
 
+`1.2n (2017/08/06)`
+----
+
+### Incompatible changes
+
+ - **xintbinhex** does not load package **xintcore** anymore, but only
+   **xintkernel**.
+
+### Improvements and new features
+
+ - **xintbinhex** has only **xintkernel** as dependency.
+
+ - Macros of **xintbinhex** have been improved for speed and increased maximal
+   sizes of allowable inputs.
+ 
+
 `1.2m (2017/07/31)`
 ----
 
@@ -3217,8 +3233,8 @@
     \node [block, below left of=A]  (tools) {\xinttoolsname};
     \node [block, right of=core, xshift=1cm]  (bnumexpr) {\href{http://www.ctan.org/pkg/bnumexpr}{bnumexpr}};
     \node [block, below of=core] (xint) {\xintname};
-    \node [block, left of=xint, xshift=-.5cm] (binhex) {\xintbinhexname};
-    \node [block, left of=binhex] (gcd) {\xintgcdname};
+    \node [block, left of=xint, xshift=-.5cm] (gcd) {\xintgcdname};
+    \node [block, left of=gcd] (binhex) {\xintbinhexname};
     \node [block, below of=xint] (frac) {\xintfracname};
     \node [block, below of=frac, yshift=-.5cm] (expr) {\xintexprname};
     \node [block, below right of=frac, xshift=1cm] (cfrac) {\xintcfracname};
@@ -3228,7 +3244,7 @@
     \path [line,-{Stealth[length=5mm]}] (kernel) -- (tools);
     \path [line,-{Stealth[length=5mm]}] (core) -- (bnumexpr);
     \path [line,-{Stealth[length=5mm]}] (core) to [out=180,in=90] (gcd.north);
-    \path [line,-{Stealth[length=5mm]}] (core) to [out=180,in=90] (binhex.north);
+    \path [line,-{Stealth[length=5mm]}] (kernel) -- (binhex);
     \path [line,-{Stealth[length=5mm]}] (core) -- (xint);
     \path [line,-{Stealth[length=5mm]}] (xint) -- (frac);
     \path [line,-{Stealth[length=5mm]}] (frac) -- (expr);
@@ -3236,8 +3252,8 @@
     \path [line,-{Stealth[length=5mm]}] (frac) to [out=0,in=90] (cfrac.north);
     \path [line,dashed,-{Stealth[length=5mm]}] (binhex.south) -- (expr);
     \path [line,dashed,-{Stealth[length=5mm]}] (gcd.south) -- (expr);
-    \path [line,dashed,-{Stealth[length=5mm]}] (tools) -- (gcd);
-%    \path [line,dashed,-{Stealth[length=5mm]}] (tools) to [out=270,in=180] (frac);
+    \path [line,dashed,-{Stealth[length=5mm]}] (tools) to [out=0, in=90]
+    (gcd.north);% je dois positionner mieux mais pas le temps de lire 700 pages
     \path [line,-{Stealth[length=5mm]}] (tools) to [out=270,in=180] (expr);
   \end{tikzpicture}}\bigskip
 \end{figure}
@@ -3254,8 +3270,8 @@
     functionalities of the lower module it is necessary to use 
     the suitable |\usepackage| (\LaTeX) or |\input| (Plain \TeX.)\par
 
-    Notice that since |1.2i| the macro \csbxint{XTrunc} does not cause a
-    partial dependency of \xintfracname on \xinttoolsname anymore.\par
+    Note: at |1.2n| \xintbinhexname has no dependency on \xintcorename
+    anymore, it only loads \xintkernelname.
 
     The \href{http://ctan.org/pkg/bnumexpr}{bnumexpr} package is a
     separate package (\LaTeX{} only) by the author which uses (by default)
@@ -13319,7 +13335,7 @@
 
 \localtableofcontents
 
-This package provides expandable conversions of arbitrarily big integers to
+This package provides expandable conversions of (big) integers to
 and from binary and hexadecimal.
 
 It was first included in the |1.08| (|2013/06/07|) release of \xintname. Its
@@ -13326,11 +13342,49 @@
 routines remained un-modified until their complete rewrite at release |1.2m|
 (|2017/07/31|). The new macros are faster, using techniques from the |1.2|
 (|2015/10/10|) release of \xintcorename. But the inputs are now limited to a
-few thousand characters (check next for the respective maxima, the values
-given have a safety margin for nested contexts).
+few thousand digits, whereas the |1.08| could handle (slowly...) tens of
+thousands of digits.
 
+\autoref{tab:binhexsizes} recapitulates the maximal allowed sizes (they got
+increased at |1.2n|)\CHANGED{1.2n}:
+for macro |\xintFooToBar| in the first column, the value in the second column
+is the maximal |N| such that |\edef\X{\xintFooToBar{<N digits>}}| does not
+raise an error with standard \TeX\ memory parameters (input stack
+size=\dtt{5000}, expansion depth=\dtt{10000}, parameter stack
+size=\dtt{10000}). The tests were done with TL2017 and |etex|. Nested calls
+will allow slightly lesser values only. The third column gives the
+corresponding maximal size of output. The fourth column gives the \TeX\
+parameter cited in the error message when trying with |N+1| digits.
+
+\begin{table}[htbp]
+\capstart
+  \centering
+\def\E#1#2!{\edef\F{\the\numexpr(#1-\xintLength{#2})/2}%
+          \relax\romannumeral\xintreplicate{\F}{ }#2%
+          \romannumeral\xintreplicate{#1-\F-\xintLength{#2}}{ }\relax}%
+% non satisfactory because depends on #1 oddness, but well. Temporary destined
+% to stay...
+\begin{tabular}{r>{\E{19}}c<{!}>{\E{19}}c<{!}r}
+  \hline
+  &Max\ length\ of\ input&->\ length\ of\ output&Limiting factor\\
+  \csbxint{DecToHex}&6014&4995&input stack size=5000\\
+  \csbxint{DecToBin}&6014&19979&input stack size=5000\\
+  \csbxint{HexToDec}&8298&9992&input stack size=5000\\
+  \csbxint{BinToDec}&19988&6017&input stack size=5000\\
+  \csbxint{BinToHex}&19988&4997&input stack size=5000\\
+  \csbxint{HexToBin}&4996&19984&input stack size=5000\\
+  \csbxint{CHexToBin}&4997&19988&input stack size=5000\\
+  \hline
+\end{tabular}
+\caption{Maximal sizes of inputs (at \texttt{1.2n}) for \xintbinhexname macros}\label{tab:binhexsizes}
+\end{table}
+
+Roughly, base |10| numbers are limited to \dtt{6000} digits, hexadecimal
+numbers to (almost) \dtt{5000} digits, and binary numbers to (almost)
+\dtt{20000} digits. With the surprising exception of \csbxint{HexToDec} which
+allows almost \dtt{8300} hexadecimal digits on input.\CHANGED{1.2n}
+
 The argument is first \fexpan ded.
-
 It may optionally have a unique leading minus sign (a plus sign is not
 allowed), and leading zeroes.
 
@@ -13363,7 +13417,8 @@
 
 With this package loaded additionally to \xintexprname, hexadecimal input is
 possible in expressions: simply by using the prefix |"|. Such hexadecimal
-numbers may have a fractional part. Lowercase letters are allowed there.
+numbers may have a fractional part. Lowercase hexadecimal letters are
+currently \emph{not} recognized as such in expressions.
 Currently the |p| postfix notation from standard programming languages given a
 power of two multiplicand is not implemented.
 
@@ -13373,9 +13428,6 @@
 
 Converts from decimal to hexadecimal.\etype{f}
 
-Input limited to |4000| digits (only a few more allowed) with standard \TeX\
-settings.\CHANGED{1.2m}
-
 \texttt{\string\xintDecToHex \string{\printnumber{2718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178525166427427466391932003}\string}}\endgraf\noindent\dtt{->\printnumber{\xintDecToHex{2718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178525166427427466391932003}}}
 
 \subsection{\csbh{xintDecToBin}}\label{xintDecToBin}
@@ -13382,9 +13434,6 @@
 
 Converts from decimal to binary.\etype{f}
 
-Input limited to |4000| digits (only a few more allowed) with standard \TeX\
-settings.\CHANGED{1.2m}
-
 \texttt{\string\xintDecToBin \string{\printnumber{2718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178525166427427466391932003}\string}}\endgraf\noindent\dtt{->\printnumber{\xintDecToBin{2718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178525166427427466391932003}}}
 
 \subsection{\csbh{xintHexToDec}}\label{xintHexToDec}
@@ -13391,9 +13440,6 @@
 
 Converts from hexadecimal to decimal.\etype{f}
 
-Input limited to about |5500| hexadecimal digits with standard \TeX\
-settings.\CHANGED{1.2m}
-
 \texttt{\string\xintHexToDec
   \string{\printnumber{11A9397C66949A97051F7D0A817914E3E0B17C41B11C48BAEF2B5760BB38D272F46DCE46C6032936BF37DAC918814C63}\string}}\endgraf\noindent
 \dtt{->\printnumber{\xintHexToDec{11A9397C66949A97051F7D0A817914E3E0B17C41B11C48BAEF2B5760BB38D272F46DCE46C6032936BF37DAC918814C63}}}
@@ -13402,9 +13448,6 @@
 
 Converts from binary to decimal.\etype{f}
 
-Input limited to about |19950| binary digits with standard \TeX\
-settings.\CHANGED{1.2m}
-
 \texttt{\string\xintBinToDec
   \string{\printnumber{100011010100100111001011111000110011010010100100110101001011100000101000111110111110100001010100000010111100100010100111000111110000010110001011111000100000110110001000111000100100010111010111011110010101101010111011000001011101100111000110100100111001011110100011011011100111001000110110001100000001100101001001101101011111100110111110110101100100100011000100000010100110001100011}\string}}\endgraf\noindent
 \dtt{->\printnumber{\xintBinToDec{100011010100100111001011111000110011010010100100110101001011100000101000111110111110100001010100000010111100100010100111000111110000010110001011111000100000110110001000111000100100010111010111011110010101101010111011000001011101100111000110100100111001011110100011011011100111001000110110001100000001100101001001101101011111100110111110110101100100100011000100000010100110001100011}}}
@@ -13413,9 +13456,6 @@
 
 Converts from binary to hexadecimal.\etype{f}
 
-Input limited to about |13300| binary digits with standard \TeX\
-settings.\CHANGED{1.2m}
-
 \texttt{\string\xintBinToHex
   \string{\printnumber{100011010100100111001011111000110011010010100100110101001011100000101000111110111110100001010100000010111100100010100111000111110000010110001011111000100000110110001000111000100100010111010111011110010101101010111011000001011101100111000110100100111001011110100011011011100111001000110110001100000001100101001001101101011111100110111110110101100100100011000100000010100110001100011}\string}}\endgraf\noindent
 \dtt{->\printnumber{\xintBinToHex{100011010100100111001011111000110011010010100100110101001011100000101000111110111110100001010100000010111100100010100111000111110000010110001011111000100000110110001000111000100100010111010111011110010101101010111011000001011101100111000110100100111001011110100011011011100111001000110110001100000001100101001001101101011111100110111110110101100100100011000100000010100110001100011}}}
@@ -13425,9 +13465,6 @@
 Converts from hexadecimal to binary. Up to three leading zeroes of the output
 are trimmed.\etype{f}
 
-Input limited to about |4950| hexadecimal digits with standard \TeX\
-settings.\CHANGED{1.2m}
-
 \texttt{\string\xintHexToBin
   \string{\printnumber{11A9397C66949A97051F7D0A817914E3E0B17C41B11C48BAEF2B5760BB38D272F46DCE46C6032936BF37DAC918814C63}\string}}\endgraf\noindent
 \dtt{->\printnumber{\xintHexToBin{11A9397C66949A97051F7D0A817914E3E0B17C41B11C48BAEF2B5760BB38D272F46DCE46C6032936BF37DAC918814C63}}}
@@ -13438,9 +13475,6 @@
 an input with |N| hexadecimal digits will give an output with exactly |4N|
 binary digits, leading zeroes are not trimmed.\CHANGED{1.2m}
 
-Input limited to about |4950| hexadecimal digits with standard \TeX\
-settings.
-
 \texttt{\string\xintCHexToBin
   \string{\printnumber{11A9397C66949A97051F7D0A817914E3E0B17C41B11C48BAEF2B5760BB38D272F46DCE46C6032936BF37DAC918814C63}\string}}\endgraf\noindent
 \dtt{->\printnumber{\xintCHexToBin{11A9397C66949A97051F7D0A817914E3E0B17C41B11C48BAEF2B5760BB38D272F46DCE46C6032936BF37DAC918814C63}}}
@@ -15334,6 +15368,13 @@
 % This is \expandafter|\xintbndlversion| of \expandafter|\xintbndldate|.
 %
 % \begin{itemize}
+%
+% \item Release |1.2n| of |2017/08/06| modified \xintbinhexnameimp to depend
+%   only on \xintkernelnameimp: it does not load \xintcorenameimp anymore.
+%   Also, macros were rewritten and in particular conversion from decimal
+%   allows bigger arguments (up to around |6000| rather than |4000| digits as
+%   in |1.2m|).
+%
 % \item Release |1.2m| of |2017/07/31| has rewritten entirely the
 %   \xintbinhexnameimp module. The new routines (in the style of the |1.2|
 %   from \xintcorenameimp) are faster (depending on the macro |1.5x--2.5x|
@@ -15572,7 +15613,7 @@
 \fi
 \XINT_providespackage
 \ProvidesPackage {xintkernel}%
-  [2017/07/31 1.2m Paraphernalia for the xint packages (JFB)]%
+  [2017/08/06 1.2n Paraphernalia for the xint packages (JFB)]%
 %    \end{macrocode}
 % \subsection{Constants}
 %    \begin{macrocode}
@@ -16158,7 +16199,7 @@
 %    \begin{macrocode}
 \XINT_providespackage
 \ProvidesPackage{xinttools}%
-  [2017/07/31 1.2m Expandable and non-expandable utilities (JFB)]%
+  [2017/08/06 1.2n Expandable and non-expandable utilities (JFB)]%
 %    \end{macrocode}
 % \lverb|\XINT_toks is used in macros such as \xintFor. It is not used
 % elsewhere in the xint bundle.|
@@ -18062,7 +18103,7 @@
 %    \begin{macrocode}
 \XINT_providespackage
 \ProvidesPackage{xintcore}%
-  [2017/07/31 1.2m Expandable arithmetic on big integers (JFB)]%
+  [2017/08/06 1.2n Expandable arithmetic on big integers (JFB)]%
 %    \end{macrocode}
 % \subsection{(WIP!) Error conditions and exceptions}
 % \lverb|As per the Mike Cowlishaw/IBM's General Decimal Arithmetic Specification
@@ -18205,7 +18246,9 @@
 \ifdefined\m at ne\let\xint_c_mone\m at ne
           \else\csname newcount\endcsname\xint_c_mone \xint_c_mone -1 \fi
 \newcount\xint_c_x^viii                  \xint_c_x^viii   100000000
-\newcount\xint_c_x^ix                      \xint_c_x^ix  1000000000
+\ifdefined\xint_c_x^ix\else
+\csname newcount\endcsname\xint_c_x^ix   \xint_c_x^ix    1000000000
+\fi
 \newcount\xint_c_x^viii_mone        \xint_c_x^viii_mone    99999999
 \newcount\xint_c_xii_e_viii          \xint_c_xii_e_viii  1200000000
 \newcount\xint_c_xi_e_viii_mone  \xint_c_xi_e_viii_mone  1099999999
@@ -18696,33 +18739,6 @@
 }%
 \def\XINT_unsep_clean 1{\relax}%
 %    \end{macrocode}
-% \subsection{\csh{XINT_unsepb_loop}}
-%
-% \lverb|This is used as
-%( \the\numexpr0\XINT_unsepb_loop (blocks of digits with ! as separator)%
-%:               \xint_bye!2!3!4!5!6!7!8!9!\xint_bye\xint_c_i\relax
-%)
-% It removes the !'s and outputs the digits (being careful not to suppress
-% leading zeroes) with a 0 prefix to remove later. Each block is allowed up to
-% nine digits.
-%
-% This is the same as \XINT_unsep_loop except that the digits blocks have no
-% 1-prefix. Used by \xintHexToDec of 1.2m.|
-%    \begin{macrocode}
-\def\XINT_unsepb_loop #1!#2!#3!#4!#5!#6!#7!#8!#9!%
-{%
-    \expandafter\XINT_unsep_clean
-    \the\numexpr 1#1\expandafter\XINT_unsep_clean
-    \the\numexpr 1#2\expandafter\XINT_unsep_clean
-    \the\numexpr 1#3\expandafter\XINT_unsep_clean
-    \the\numexpr 1#4\expandafter\XINT_unsep_clean
-    \the\numexpr 1#5\expandafter\XINT_unsep_clean
-    \the\numexpr 1#6\expandafter\XINT_unsep_clean
-    \the\numexpr 1#7\expandafter\XINT_unsep_clean
-    \the\numexpr 1#8\expandafter\XINT_unsep_clean
-    \the\numexpr 1#9\XINT_unsepb_loop
-}%
-%    \end{macrocode}
 % \subsection{\csh{XINT_unsep_cuzsmall}}
 %
 % \lverb|This is used as
@@ -18813,21 +18829,6 @@
     \expandafter#1\xint_gob_til_one ##2##3##4##5##6##7##8%
 }}\XINT_zeroes_forviii_end{ }%
 %    \end{macrocode}
-% \subsection{\csh{XINT_zeroes_foriv}}
-% \lverb|&
-%( \romannumeral0\XINT_zeroes_foriv #1\R{0\R}{00\R}{000\R}%
-%:                                    \R{0\R}{00\R}{000\R}\R\W
-%)
-% Helper macro needed by 1.2m \xintHexToDec of xintbinhex.|
-%    \begin{macrocode}
-\def\XINT_zeroes_foriv #1#2#3#4#5#6#7#8%
-{%
-    \xint_gob_til_R #8\XINT_zeroes_foriv_end\R\XINT_zeroes_foriv
-}%
-\def\XINT_zeroes_foriv_end\R\XINT_zeroes_foriv #1#2\W
-   {\XINT_zeroes_foriv_done #1}%
-\def\XINT_zeroes_foriv_done #1\R{ #1}%
-%    \end{macrocode}
 % \subsection{\csh{XINT_sepbyviii_Z}}
 %
 % \lverb|This is used as
@@ -21394,7 +21395,7 @@
 %    \begin{macrocode}
 \XINT_providespackage
 \ProvidesPackage{xint}%
-  [2017/07/31 1.2m Expandable operations on big integers (JFB)]%
+  [2017/08/06 1.2n Expandable operations on big integers (JFB)]%
 %    \end{macrocode}
 % \subsection{More token management}
 %    \begin{macrocode}
@@ -23352,6 +23353,14 @@
 % The macros from |1.08| (|2013/06/07|) remained unchanged
 % until their complete rewrite at |1.2m| (|2017/07/31|).
 %
+% At |1.2n| dependencies on \xintcorenameimp were removed, so now the package
+% loads only \xintkernelnameimp (this could have been done earlier).
+%
+% Also at |1.2n|, macros evolved again, the main improvements being in the
+% increased allowable sizes of the input for |\xintDecToHex|, |\xintDecToBin|,
+% |\xintBinToHex|. Use of |\csname| governed expansion at some places rather
+% than |\numexpr| with some clean-up after it.
+%
 % \subsection{Catcodes, \protect\eTeX{} and reload detection}
 %
 % The code for reload detection was initially copied from \textsc{Heiko
@@ -23374,7 +23383,7 @@
   \catcode58=12   % :
   \let\z\endgroup
   \expandafter\let\expandafter\x\csname ver at xintbinhex.sty\endcsname
-  \expandafter\let\expandafter\w\csname ver at xintcore.sty\endcsname
+  \expandafter\let\expandafter\w\csname ver at xintkernel.sty\endcsname
   \expandafter
     \ifx\csname PackageInfo\endcsname\relax
       \def\y#1#2{\immediate\write-1{Package #1 Info: #2.}}%
@@ -23387,15 +23396,15 @@
      \aftergroup\endinput
   \else
     \ifx\x\relax   % plain-TeX, first loading of xintbinhex.sty
-      \ifx\w\relax % but xintcore.sty not yet loaded.
-         \def\z{\endgroup\input xintcore.sty\relax}%
+      \ifx\w\relax % but xintkernel.sty not yet loaded.
+         \def\z{\endgroup\input xintkernel.sty\relax}%
       \fi
     \else
       \def\empty {}%
       \ifx\x\empty % LaTeX, first loading,
       % variable is initialized, but \ProvidesPackage not yet seen
-          \ifx\w\relax % xintcore.sty not yet loaded.
-            \def\z{\endgroup\RequirePackage{xintcore}}%
+          \ifx\w\relax % xintkernel.sty not yet loaded.
+            \def\z{\endgroup\RequirePackage{xintkernel}}%
           \fi
       \else
         \aftergroup\endinput % xintbinhex already loaded.
@@ -23409,98 +23418,113 @@
 %    \begin{macrocode}
 \XINT_providespackage
 \ProvidesPackage{xintbinhex}%
-  [2017/07/31 1.2m Expandable binary and hexadecimal conversions (JFB)]%
+  [2017/08/06 1.2n Expandable binary and hexadecimal conversions (JFB)]%
 %    \end{macrocode}
 % \subsection{Constants, etc...}
+% \lverb|1.2n switches to \csname-governed expansion at various places.|
 %    \begin{macrocode}
 \newcount\xint_c_ii^xv  \xint_c_ii^xv   32768
 \newcount\xint_c_ii^xvi \xint_c_ii^xvi  65536
-\newcount\xint_c_x^v    \xint_c_x^v    100000
 \def\XINT_tmpa #1{\ifx\relax#1\else
-  \expandafter\edef\csname XINT_sdth_#1\endcsname
-  {\ifcase #1 0\or 1\or 2\or 3\or 4\or 5\or 6\or 7\or
-              8\or 9\or A\or B\or C\or D\or E\or F\else\space\fi}%
+  \expandafter\edef\csname XINT_csdth_#1\endcsname
+  {\endcsname\ifcase #1 0\or 1\or 2\or 3\or 4\or 5\or 6\or 7\or
+              8\or 9\or A\or B\or C\or D\or E\or F\fi}%
   \expandafter\XINT_tmpa\fi }%
-\XINT_tmpa {-1}{0}{1}{2}{3}{4}{5}{6}{7}{8}{9}{10}{11}{12}{13}{14}{15}\relax
+\XINT_tmpa {0}{1}{2}{3}{4}{5}{6}{7}{8}{9}{10}{11}{12}{13}{14}{15}\relax
 \def\XINT_tmpa #1{\ifx\relax#1\else
-  \expandafter\edef\csname XINT_sdtb_#1\endcsname
-  {\ifcase #1
+  \expandafter\edef\csname XINT_csdtb_#1\endcsname
+  {\endcsname\ifcase #1
    0000\or 0001\or 0010\or 0011\or 0100\or 0101\or 0110\or 0111\or
-   1000\or 1001\or 1010\or 1011\or 1100\or 1101\or 1110\or 1111\else\space\fi}%
+   1000\or 1001\or 1010\or 1011\or 1100\or 1101\or 1110\or 1111\fi}%
   \expandafter\XINT_tmpa\fi }%
-\XINT_tmpa {-1}{0}{1}{2}{3}{4}{5}{6}{7}{8}{9}{10}{11}{12}{13}{14}{15}\relax
+\XINT_tmpa {0}{1}{2}{3}{4}{5}{6}{7}{8}{9}{10}{11}{12}{13}{14}{15}\relax
 \let\XINT_tmpa\relax
-\expandafter\def\csname XINT_sbth_0000\endcsname {0}%
-\expandafter\def\csname XINT_sbth_0001\endcsname {1}%
-\expandafter\def\csname XINT_sbth_0010\endcsname {2}%
-\expandafter\def\csname XINT_sbth_0011\endcsname {3}%
-\expandafter\def\csname XINT_sbth_0100\endcsname {4}%
-\expandafter\def\csname XINT_sbth_0101\endcsname {5}%
-\expandafter\def\csname XINT_sbth_0110\endcsname {6}%
-\expandafter\def\csname XINT_sbth_0111\endcsname {7}%
-\expandafter\def\csname XINT_sbth_1000\endcsname {8}%
-\expandafter\def\csname XINT_sbth_1001\endcsname {9}%
-\expandafter\def\csname XINT_sbth_1010\endcsname {10}%
-\expandafter\def\csname XINT_sbth_1011\endcsname {11}%
-\expandafter\def\csname XINT_sbth_1100\endcsname {12}%
-\expandafter\def\csname XINT_sbth_1101\endcsname {13}%
-\expandafter\def\csname XINT_sbth_1110\endcsname {14}%
-\expandafter\def\csname XINT_sbth_1111\endcsname {15}%
-\expandafter\def\csname XINT_sbth_1010\endcsname {A}%
-\expandafter\def\csname XINT_sbth_1011\endcsname {B}%
-\expandafter\def\csname XINT_sbth_1100\endcsname {C}%
-\expandafter\def\csname XINT_sbth_1101\endcsname {D}%
-\expandafter\def\csname XINT_sbth_1110\endcsname {E}%
-\expandafter\def\csname XINT_sbth_1111\endcsname {F}%
-\let\XINT_sbth_none \empty
-\expandafter\def\csname XINT_shtb_0\endcsname {0000}%
-\expandafter\def\csname XINT_shtb_1\endcsname {0001}%
-\expandafter\def\csname XINT_shtb_2\endcsname {0010}%
-\expandafter\def\csname XINT_shtb_3\endcsname {0011}%
-\expandafter\def\csname XINT_shtb_4\endcsname {0100}%
-\expandafter\def\csname XINT_shtb_5\endcsname {0101}%
-\expandafter\def\csname XINT_shtb_6\endcsname {0110}%
-\expandafter\def\csname XINT_shtb_7\endcsname {0111}%
-\expandafter\def\csname XINT_shtb_8\endcsname {1000}%
-\expandafter\def\csname XINT_shtb_9\endcsname {1001}%
-\def\XINT_shtb_A {1010}%
-\def\XINT_shtb_B {1011}%
-\def\XINT_shtb_C {1100}%
-\def\XINT_shtb_D {1101}%
-\def\XINT_shtb_E {1110}%
-\def\XINT_shtb_F {1111}%
-\let\XINT_shtb_none \empty
-\def\XINT_smallhex #1!%
+\expandafter\def\csname XINT_csbth_0000\endcsname {\endcsname0}%
+\expandafter\def\csname XINT_csbth_0001\endcsname {\endcsname1}%
+\expandafter\def\csname XINT_csbth_0010\endcsname {\endcsname2}%
+\expandafter\def\csname XINT_csbth_0011\endcsname {\endcsname3}%
+\expandafter\def\csname XINT_csbth_0100\endcsname {\endcsname4}%
+\expandafter\def\csname XINT_csbth_0101\endcsname {\endcsname5}%
+\expandafter\def\csname XINT_csbth_0110\endcsname {\endcsname6}%
+\expandafter\def\csname XINT_csbth_0111\endcsname {\endcsname7}%
+\expandafter\def\csname XINT_csbth_1000\endcsname {\endcsname8}%
+\expandafter\def\csname XINT_csbth_1001\endcsname {\endcsname9}%
+\expandafter\def\csname XINT_csbth_1010\endcsname {\endcsname A}%
+\expandafter\def\csname XINT_csbth_1011\endcsname {\endcsname B}%
+\expandafter\def\csname XINT_csbth_1100\endcsname {\endcsname C}%
+\expandafter\def\csname XINT_csbth_1101\endcsname {\endcsname D}%
+\expandafter\def\csname XINT_csbth_1110\endcsname {\endcsname E}%
+\expandafter\def\csname XINT_csbth_1111\endcsname {\endcsname F}%
+\let\XINT_csbth_none \endcsname
+\expandafter\def\csname XINT_cshtb_0\endcsname {\endcsname0000}%
+\expandafter\def\csname XINT_cshtb_1\endcsname {\endcsname0001}%
+\expandafter\def\csname XINT_cshtb_2\endcsname {\endcsname0010}%
+\expandafter\def\csname XINT_cshtb_3\endcsname {\endcsname0011}%
+\expandafter\def\csname XINT_cshtb_4\endcsname {\endcsname0100}%
+\expandafter\def\csname XINT_cshtb_5\endcsname {\endcsname0101}%
+\expandafter\def\csname XINT_cshtb_6\endcsname {\endcsname0110}%
+\expandafter\def\csname XINT_cshtb_7\endcsname {\endcsname0111}%
+\expandafter\def\csname XINT_cshtb_8\endcsname {\endcsname1000}%
+\expandafter\def\csname XINT_cshtb_9\endcsname {\endcsname1001}%
+\def\XINT_cshtb_A {\endcsname1010}%
+\def\XINT_cshtb_B {\endcsname1011}%
+\def\XINT_cshtb_C {\endcsname1100}%
+\def\XINT_cshtb_D {\endcsname1101}%
+\def\XINT_cshtb_E {\endcsname1110}%
+\def\XINT_cshtb_F {\endcsname1111}%
+\let\XINT_cshtb_none \endcsname
+%    \end{macrocode}
+% \subsection{Helper macros}
+% \subsubsection{\csh{XINT_zeroes_foriv}}
+% \lverb|&
+%( \romannumeral0\XINT_zeroes_foriv #1\R{0\R}{00\R}{000\R}$%
+%:                                    \R{0\R}{00\R}{000\R}\R\W
+%)
+% expands to the <empty> or 0 or 00 or 000 needed which when adjoined to #1
+% extend it to length 4N.|
+%    \begin{macrocode}
+\def\XINT_zeroes_foriv #1#2#3#4#5#6#7#8%
 {%
-    \expandafter\XINT_smallhex_a
-    \the\numexpr (#1+\xint_c_viii)/\xint_c_xvi-\xint_c_i\xint:#1\xint:
+    \xint_gob_til_R #8\XINT_zeroes_foriv_end\R\XINT_zeroes_foriv
 }%
-\def\XINT_smallhex_a #1\xint:#2\xint:
+\def\XINT_zeroes_foriv_end\R\XINT_zeroes_foriv #1#2\W
+   {\XINT_zeroes_foriv_done #1}%
+\def\XINT_zeroes_foriv_done #1\R{ #1}%
+%    \end{macrocode}
+% \subsubsection{\csh{XINT_unsepb_loop}}
+%
+% \lverb|This is used as
+%( \the\numexpr0\XINT_unsepb_loop (blocks of digits with ! as separator)%
+%:               \xint_bye!2!3!4!5!6!7!8!9!\xint_bye\xint_c_i\relax
+%)
+% It removes the !'s and outputs the digits (being careful not to suppress
+% leading zeroes) with a 0 prefix to remove later. Each block is allowed up to
+% nine digits.
+%
+% This is the same as \XINT_unsep_loop from xintcore.sty except that the
+% digits blocks have no 1-prefix. Was done for \xintHexToDec at 1.2m.|
+%    \begin{macrocode}
+\def\XINT_unsepb_loop #1!#2!#3!#4!#5!#6!#7!#8!#9!%
 {%
-    \csname XINT_sdth_#1\expandafter\expandafter\expandafter\endcsname
-    \csname XINT_sdth_\the\numexpr #2-\xint_c_xvi*#1\relax\expandafter\endcsname
-    \romannumeral`&&@%
+    \expandafter\XINT_unsep_clean
+    \the\numexpr 1#1\expandafter\XINT_unsep_clean
+    \the\numexpr 1#2\expandafter\XINT_unsep_clean
+    \the\numexpr 1#3\expandafter\XINT_unsep_clean
+    \the\numexpr 1#4\expandafter\XINT_unsep_clean
+    \the\numexpr 1#5\expandafter\XINT_unsep_clean
+    \the\numexpr 1#6\expandafter\XINT_unsep_clean
+    \the\numexpr 1#7\expandafter\XINT_unsep_clean
+    \the\numexpr 1#8\expandafter\XINT_unsep_clean
+    \the\numexpr 1#9\XINT_unsepb_loop
 }%
-\def\XINT_smallbin #1!%
-{%
-    \expandafter\XINT_smallbin_a
-    \the\numexpr (#1+\xint_c_viii)/\xint_c_xvi-\xint_c_i\xint:#1\xint:
-}%
-\def\XINT_smallbin_a #1\xint:#2\xint:
-{%
-    \csname XINT_sdtb_#1\expandafter\expandafter\expandafter\endcsname
-    \csname XINT_sdtb_\the\numexpr #2-\xint_c_xvi*#1\relax\expandafter\endcsname
-    \romannumeral`&&@%
-}%
+\def\XINT_unsep_clean 1{\relax}% also in xintcore
 %    \end{macrocode}
 % \subsection{\csh{xintDecToHex}}
-% \lverb|Complete rewrite at 1.2m in the 1.2 style.
+% \lverb|Complete rewrite at 1.2m in the 1.2 style. Also, 1.2m is robust
+% against non terminated inputs.
 %
-% Faster but currently limited at about 4007 decimal digits on input
-% [expansion depth=10000].
+% Improvements of coding at 1.2n, increased maximal size.
 %
-% 1.2m version robust against non terminated inputs.
-%
 % An input without leading zeroes gives an output without leading zeroes.|
 %    \begin{macrocode}
 \def\xintDecToHex {\romannumeral0\xintdectohex }%
@@ -23518,101 +23542,100 @@
 \def\XINT_dth_neg {\expandafter-\romannumeral0\XINT_dth_main}%
 \def\XINT_dth_main #1\xint:
 {%
-    \expandafter\XINT_dth_start
+    \expandafter\XINT_dth_finish
+    \romannumeral`&&@\expandafter\XINT_dthb_start
     \romannumeral0\XINT_zeroes_foriv
        #1\R{0\R}{00\R}{000\R}\R{0\R}{00\R}{000\R}\R\W
-    #1\xint_bye\xint_bye\XINT_dthb_final_a!2!3!4!5!6!7!8!9!\W
+    #1\xint_bye\XINT_dth_tohex
 }%
-\def\XINT_dth_start #1#2#3#4#5%
+\def\XINT_dthb_start #1#2#3#4#5%
 {%
-    \xint_bye#5\XINT_dth_small\xint_bye
-    \XINT_dth_start_a #1#2#3#4#5%
+    \xint_bye#5\XINT_dthb_small\xint_bye\XINT_dthb_start_a #1#2#3#4#5%
 }%
-\def\XINT_dth_start_a #1#2#3#4#5%
+\def\XINT_dthb_small\xint_bye\XINT_dthb_start_a #1\xint_bye#2{#2#1!}%
+\def\XINT_dthb_start_a #1#2#3#4#5#6#7#8#9%
 {%
-    \expandafter\XINT_dth_A\the\numexpr\XINT_dth_a
-    #1#2#3#4\XINT_dth_nextfour!2!3!4!5!6!7!8!9!\Z #5%
+    \expandafter\XINT_dthb_again\the\numexpr\expandafter\XINT_dthb_update
+    \the\numexpr#1#2#3#4%
+    \xint_bye#9\XINT_dthb_lastpass\xint_bye
+    #5#6#7#8!\XINT_dthb_exclam\relax\XINT_dthb_nextfour!2!3!4!5!6!7!8!9!\Z #9%
 }%
-\def\XINT_dth_small\xint_bye\XINT_dth_start_a #1\xint_bye #2\W
+\def\XINT_dthb_exclam {!\XINT_dthb_exclam!}%
+\def\XINT_dthb_update #1!%
 {%
-    \expandafter\XINT_dth_B_finish
-    \romannumeral`&&@\XINT_tofourhex#1!\space
+    \expandafter\XINT_dthb_update_a
+    \the\numexpr (#1+\xint_c_ii^xv)/\xint_c_ii^xvi-\xint_c_i\xint:
+    #1\xint:%
 }%
-\def\XINT_dth_a #1!#2!#3!#4!#5!#6!#7!#8!#9!%
+\def\XINT_dthb_update_a #1\xint:#2\xint:#3%
 {%
-    \expandafter\XINT_dth_update
-    \the\numexpr #1\expandafter\XINT_dth_update
-    \the\numexpr #2\expandafter\XINT_dth_update
-    \the\numexpr #3\expandafter\XINT_dth_update
-    \the\numexpr #4\expandafter\XINT_dth_update
-    \the\numexpr #5\expandafter\XINT_dth_update
-    \the\numexpr #6\expandafter\XINT_dth_update
-    \the\numexpr #7\expandafter\XINT_dth_update
-    \the\numexpr #8\expandafter\XINT_dth_update
-    \the\numexpr #9\XINT_dth_a
-}% 
-\def\XINT_dth_nextfour #1\Z #2#3#4#5%
-{%
-    #2#3#4#5!\relax\XINT_dth_nextfour!2!3!4!5!6!7!8!9!\Z
+    0000+#1\expandafter#3\the\numexpr#2-#1*\xint_c_ii^xvi
 }%
-\def\XINT_dth_update #1!%
+\def\XINT_dthb_nextfour #1\Z #2#3#4#5#6%
 {%
-    \expandafter\XINT_dth_update_a
-    \the\numexpr (#1+\xint_c_ii^xv)/\xint_c_ii^xvi-\xint_c_i\xint:
-    #1\xint:%
+    \xint_bye#6\XINT_dthb_lastpass\xint_bye
+    #2#3#4#5!\XINT_dthb_exclam\relax\XINT_dthb_nextfour!2!3!4!5!6!7!8!9!\Z #6%
 }%
-\def\XINT_dth_update_a #1\xint:#2\xint:
+\def\XINT_dthb_lastpass\xint_bye #1!#2\xint_bye#3{#1!#3!}%
+\def\XINT_dth_tohex
 {%
-    0000+#1\expandafter!\expandafter!\the\numexpr#2-#1*\xint_c_ii^xvi
+    \expandafter\expandafter\expandafter\XINT_dth_tohex_a\csname\XINT_tofourhex
 }%
-\def\XINT_dth_A #1!!%
+\def\XINT_dth_tohex_a\endcsname{!\XINT_dth_tohex!}%
+\def\XINT_dthb_a #1!#2!#3!#4!#5!#6!#7!#8!#9!%
 {%
-    \ifnum #1>\xint_c_ \xint_dothis{\XINT_dth_again #1!}\fi
-    \xint_orthat{\XINT_dth_again}%
+    \expandafter\XINT_dthb_update
+    \the\numexpr #1\expandafter\XINT_dthb_update
+    \the\numexpr #2\expandafter\XINT_dthb_update
+    \the\numexpr #3\expandafter\XINT_dthb_update
+    \the\numexpr #4\expandafter\XINT_dthb_update
+    \the\numexpr #5\expandafter\XINT_dthb_update
+    \the\numexpr #6\expandafter\XINT_dthb_update
+    \the\numexpr #7\expandafter\XINT_dthb_update
+    \the\numexpr #8\expandafter\XINT_dthb_update
+    \the\numexpr #9\XINT_dthb_a
+}% 
+\def\XINT_dthb_again #1!#2!%
+{%
+    \ifx\XINT_dthb_exclam#2%
+          \expandafter\xint_firstoftwo
+      \else
+          \expandafter\xint_secondoftwo
+    \fi
+    {\expandafter\XINT_dthb_again\the\numexpr\expandafter\XINT_dthb_a
+     \romannumeral`&&@\ifnum #1>\xint_c_ \xint_dothis{#1!}\fi\xint_orthat{}}%
+    {\ifnum #1>\xint_c_ \xint_dothis{#2#1!}\fi\xint_orthat{!#2!}}%
 }%
-\def\XINT_dth_again #1\Z #2%
+\def\XINT_tofourhex #1!%
 {%
-    \xint_bye #2\XINT_dth_B_a\xint_bye
-    \expandafter\XINT_dth_A\the\numexpr\XINT_dth_a #1\Z #2%
+    \expandafter\XINT_tofourhex_a
+    \the\numexpr (#1+\xint_c_ii^vii)/\xint_c_ii^viii-\xint_c_i\xint:
+    #1\xint:
 }%
-\def\XINT_dth_B_a\xint_bye
-    \expandafter\XINT_dth_A\the\numexpr\XINT_dth_a #1\XINT_dth_nextfour #2\Z
+\def\XINT_tofourhex_a #1\xint:#2\xint:
 {%
-    \expandafter\XINT_dth_B_finish\romannumeral`&&@\XINT_dth_B_c #1!% 
+    \expandafter\XINT_tofourhex_c
+    \the\numexpr (#1+\xint_c_viii)/\xint_c_xvi-\xint_c_i\xint:
+    #1\xint:
+    \the\numexpr #2-\xint_c_ii^viii*#1!%
 }%
-\def\XINT_dth_B_c #1!#2!#3!#4!#5!#6!#7!#8!#9!%
+\def\XINT_tofourhex_c #1\xint:#2\xint:
 {%
-    \XINT_tofourhex#1!%
-    \XINT_tofourhex#2!%
-    \XINT_tofourhex#3!%
-    \XINT_tofourhex#4!%
-    \XINT_tofourhex#5!%
-    \XINT_tofourhex#6!%
-    \XINT_tofourhex#7!%
-    \XINT_tofourhex#8!%
-    \XINT_tofourhex#9!%
-    \XINT_dth_B_c
+    XINT_csdth_#1%
+    \csname XINT_csdth_\the\numexpr #2-\xint_c_xvi*#1\relax
+    \csname \expandafter\XINT_tofourhex_d
 }%
-% attention ici mon #1 compte pour 4 chiffres hexa
-\def\XINT_tofourhex #1!%
+\def\XINT_tofourhex_d #1!%
 {%
-    \expandafter\XINT_tofourhex_a
-    \the\numexpr (#1+\xint_c_ii^vii)/\xint_c_ii^viii-\xint_c_i\xint: #1\xint:
+    \expandafter\XINT_tofourhex_e
+    \the\numexpr (#1+\xint_c_viii)/\xint_c_xvi-\xint_c_i\xint:
+    #1\xint:
 }%
-\def\XINT_tofourhex_a #1\xint: #2\xint:
+\def\XINT_tofourhex_e #1\xint:#2\xint:
 {%
-    \expandafter\XINT_tofourhex_b
-    \the\numexpr #2-\xint_c_ii^viii*#1\xint:#1\xint:
+    XINT_csdth_#1%
+    \csname XINT_csdth_\the\numexpr #2-\xint_c_xvi*#1\endcsname
 }%
-\def\XINT_tofourhex_b #1\xint: #2\xint:
-{% 
-    \XINT_smallhex #2!%
-    \XINT_smallhex #1!%
-}% 
-\def\XINT_dthb_final_a #1\W{1)\relax \xint:\XINT_dthb_final_b\xint:\W}%
-\def\XINT_dthb_final_b #1\W{1\relax \xint:\XINT_dthb_final_c\xint:\W}%
-\def\XINT_dthb_final_c #1\W{-1)\relax \XINT_dthb_final_d\xint:\xint:\W}%
-\def\XINT_dthb_final_d #1\W{\endcsname}%
 %    \end{macrocode}
 % \lverb|We only clean-up up to 3 zero hexadecimal digits, as output was
 % produced in chunks of 4 hex digits. If input had no leading zero, output
@@ -23622,7 +23645,7 @@
 % The coding is for varying a bit, I did not check if efficient, it does not
 % matter.|
 %    \begin{macrocode}
-\def\XINT_dth_B_finish #1#2#3%
+\def\XINT_dth_finish !\XINT_dth_tohex!#1#2#3%
 {%
     \unless\if#10\xint_dothis{ #1#2#3}\fi
     \unless\if#20\xint_dothis{ #2#3}\fi
@@ -23631,14 +23654,14 @@
 }%
 %    \end{macrocode}
 % \subsection{\csh{xintDecToBin}}
-% \lverb|Complete rewrite at 1.2m in the 1.2 style.
+% \lverb|Complete rewrite at 1.2m in the 1.2 style. Also, 1.2m is robust
+% against non terminated inputs.
 %
-% Much faster but currently limited at about 4007 decimal digits on input
-% [expansion depth=10000]
+% Revisited at 1.2n like in \xintDecToHex: increased maximal size.
 %
-% 1.2m version robust against non terminated inputs.
+% An input without leading zeroes gives an output without leading zeroes.
 %
-% An input without leading zeroes gives an output without leading zeroes.
+% Most of the code canvas is shared with \xintDecToHex.
 % |
 %    \begin{macrocode}
 \def\xintDecToBin {\romannumeral0\xintdectobin }%
@@ -23656,106 +23679,56 @@
 \def\XINT_dtb_neg {\expandafter-\romannumeral0\XINT_dtb_main}%
 \def\XINT_dtb_main #1\xint:
 {%
-    \expandafter\XINT_dtb_start
+    \expandafter\XINT_dtb_finish
+    \romannumeral`&&@\expandafter\XINT_dthb_start
     \romannumeral0\XINT_zeroes_foriv
        #1\R{0\R}{00\R}{000\R}\R{0\R}{00\R}{000\R}\R\W
-    #1\xint_bye\xint_bye\XINT_dthb_final_a!2!3!4!5!6!7!8!9!\W
+    #1\xint_bye\XINT_dtb_tobin
 }%
-\def\XINT_dtb_start #1#2#3#4#5%
+\def\XINT_dtb_tobin
 {%
-    \xint_bye#5\XINT_dtb_small\xint_bye
-    \XINT_dtb_start_a #1#2#3#4#5%
+    \expandafter\expandafter\expandafter\XINT_dtb_tobin_a\csname\XINT_tosixteenbits
 }%
-\def\XINT_dtb_start_a #1#2#3#4#5%
+\def\XINT_dtb_tobin_a\endcsname{!\XINT_dtb_tobin!}%
+\def\XINT_tosixteenbits #1!%
 {%
-    \expandafter\XINT_dtb_A\the\numexpr\XINT_dtb_a
-    #1#2#3#4\XINT_dtb_nextfour!2!3!4!5!6!7!8!9!\Z #5%
+    \expandafter\XINT_tosixteenbits_a
+    \the\numexpr (#1+\xint_c_ii^vii)/\xint_c_ii^viii-\xint_c_i\xint:
+    #1\xint:
 }%
-\def\XINT_dtb_small\xint_bye\XINT_dtb_start_a #1\xint_bye #2\W
+\def\XINT_tosixteenbits_a #1\xint:#2\xint:
 {%
-    \expandafter\XINT_dtb_B_finish
-    \romannumeral`&&@\XINT_tosixteenbits#1!\space
+    \expandafter\XINT_tosixteenbits_c
+    \the\numexpr (#1+\xint_c_viii)/\xint_c_xvi-\xint_c_i\xint:
+    #1\xint:
+    \the\numexpr #2-\xint_c_ii^viii*#1!%
 }%
-\def\XINT_dtb_a #1!#2!#3!#4!#5!#6!#7!#8!#9!%
+\def\XINT_tosixteenbits_c #1\xint:#2\xint:
 {%
-    \expandafter\XINT_dtb_update
-    \the\numexpr #1\expandafter\XINT_dtb_update
-    \the\numexpr #2\expandafter\XINT_dtb_update
-    \the\numexpr #3\expandafter\XINT_dtb_update
-    \the\numexpr #4\expandafter\XINT_dtb_update
-    \the\numexpr #5\expandafter\XINT_dtb_update
-    \the\numexpr #6\expandafter\XINT_dtb_update
-    \the\numexpr #7\expandafter\XINT_dtb_update
-    \the\numexpr #8\expandafter\XINT_dtb_update
-    \the\numexpr #9\XINT_dtb_a
-}% 
-\def\XINT_dtb_nextfour #1\Z #2#3#4#5%
-{%
-    #2#3#4#5!\relax\XINT_dtb_nextfour!2!3!4!5!6!7!8!9!\Z
+    XINT_csdtb_#1%
+    \csname XINT_csdtb_\the\numexpr #2-\xint_c_xvi*#1\relax
+    \csname \expandafter\XINT_tosixteenbits_d
 }%
-\def\XINT_dtb_update #1!%
+\def\XINT_tosixteenbits_d #1!%
 {%
-    \expandafter\XINT_dtb_update_a
-    \the\numexpr (#1+\xint_c_ii^xv)/\xint_c_ii^xvi-\xint_c_i\xint:
-    #1\xint:%
+    \expandafter\XINT_tosixteenbits_e
+    \the\numexpr (#1+\xint_c_viii)/\xint_c_xvi-\xint_c_i\xint:
+    #1\xint:
 }%
-\def\XINT_dtb_update_a #1\xint:#2\xint:
+\def\XINT_tosixteenbits_e #1\xint:#2\xint:
 {%
-    0000+#1\expandafter!\expandafter!\the\numexpr#2-#1*\xint_c_ii^xvi
+    XINT_csdtb_#1%
+    \csname XINT_csdtb_\the\numexpr #2-\xint_c_xvi*#1\endcsname
 }%
-\def\XINT_dtb_A #1!!%
+\def\XINT_dtb_finish !\XINT_dtb_tobin!#1#2#3#4#5#6#7#8%
 {%
-    \ifnum #1>\xint_c_ \xint_dothis{\XINT_dtb_again #1!}\fi
-    \xint_orthat{\XINT_dtb_again}%
+    \expandafter\XINT_dtb_finish_a\the\numexpr #1#2#3#4#5#6#7#8\relax
 }%
-\def\XINT_dtb_again #1\Z #2%
+\def\XINT_dtb_finish_a #1{%
+\def\XINT_dtb_finish_a ##1##2##3##4##5##6##7##8##9%
 {%
-    \xint_bye #2\XINT_dtb_B_a\xint_bye
-    \expandafter\XINT_dtb_A\the\numexpr\XINT_dtb_a #1\Z #2%
-}%
-\def\XINT_dtb_B_a\xint_bye
-    \expandafter\XINT_dtb_A\the\numexpr\XINT_dtb_a #1\XINT_dtb_nextfour #2\Z
-{%
-    \expandafter\XINT_dtb_B_finish\romannumeral`&&@\XINT_dtb_B_c #1!% 
-}%
-\def\XINT_dtb_B_c #1!#2!#3!#4!#5!#6!#7!#8!#9!%
-{%
-    \XINT_tosixteenbits#1!%
-    \XINT_tosixteenbits#2!%
-    \XINT_tosixteenbits#3!%
-    \XINT_tosixteenbits#4!%
-    \XINT_tosixteenbits#5!%
-    \XINT_tosixteenbits#6!%
-    \XINT_tosixteenbits#7!%
-    \XINT_tosixteenbits#8!%
-    \XINT_tosixteenbits#9!%
-    \XINT_dtb_B_c
-}%
-% attention ici mon #1 compte pour 4 chiffres hexa
-\def\XINT_tosixteenbits #1!%
-{%
-    \expandafter\XINT_tosixteenbits_a
-    \the\numexpr (#1+\xint_c_ii^vii)/\xint_c_ii^viii-\xint_c_i\xint: #1\xint:
-}%
-\def\XINT_tosixteenbits_a #1\xint: #2\xint:
-{%
-    \expandafter\XINT_tosixteenbits_b
-    \the\numexpr #2-\xint_c_ii^viii*#1\xint:#1\xint:
-}%
-\def\XINT_tosixteenbits_b #1\xint: #2\xint:
-{% 
-    \XINT_smallbin #2!%
-    \XINT_smallbin #1!%
-}% 
-\def\XINT_dtb_B_finish #1#2#3#4#5#6#7#8%
-{%
-    \expandafter\XINT_dtb_B_finish_a\the\numexpr #1#2#3#4#5#6#7#8\relax
-}%
-\def\XINT_dtb_B_finish_a #1{%
-\def\XINT_dtb_B_finish_a ##1##2##3##4##5##6##7##8##9%
-{%
     \expandafter#1\the\numexpr ##1##2##3##4##5##6##7##8##9\relax
-}}\XINT_dtb_B_finish_a { }%
+}}\XINT_dtb_finish_a { }%
 %    \end{macrocode}
 % \subsection{\csh{xintHexToDec}}
 % \lverb|Completely (and belatedly) rewritten at 1.2m in the 1.2 style.
@@ -23766,8 +23739,7 @@
 % robustness is not on purpose but from need to expand argument and then grab
 % it again. So we do it safely.
 %
-% Input should not have more than circa 5538 hexadecimal digits, else, TeX
-% capacity exceeded [parameter stack size=10000]
+% Increased maximal size at 1.2n.
 %
 % 1.2m version robust against non terminated inputs.
 %
@@ -23806,9 +23778,15 @@
     \xint_bye!2!3!4!5!6!7!8!9!\xint_bye\XINT_htd_nextfour}%
 \def\XINT_htd_startbb 1#1#2!{\XINT_htd_again #1!#2%
     \xint_bye!2!3!4!5!6!7!8!9!\xint_bye\XINT_htd_nextfour}%
+%    \end{macrocode}
+% \lverb|It is a bit annoying to grab all to the end here. I have a version,
+% modeled on the 1.2n variant of \xintDecToHex which solved that problem
+% there, but it did not prove enough if at all faster in my brief testing and
+% it had the defect of a reduced maximal allowed size of the input. |
+%    \begin{macrocode}
 \def\XINT_htd_again #1\XINT_htd_nextfour #2%
 {%
-    \xint_bye #2\XINT_htd_end_a\xint_bye
+    \xint_bye #2\XINT_htd_finish\xint_bye
     \expandafter\XINT_htd_A\the\numexpr
     \XINT_htd_a #1\XINT_htd_nextfour #2%
 }%
@@ -23827,12 +23805,17 @@
 }% 
 \def\XINT_htd_nextfour #1#2#3#4%
 {%
-    *\xint_c_ii^xvi+"#1#2#3#4+\xint_c_x^ix\relax\xint_bye!%
+    *\xint_c_ii^xvi+"#1#2#3#4+1000000000\relax\xint_bye!%
     2!3!4!5!6!7!8!9!\xint_bye\XINT_htd_nextfour
 }%
-\def\XINT_htd_update 1#1#2#3#4#5#6!%
+%    \end{macrocode}
+% \lverb|If the innocent looking commented out $#6 is left in the pattern as
+% was the case at 1.2m, the maximal size becomes limited at 5538 digits, not
+% 8298! (with parameter stack size = 10000.) |
+%    \begin{macrocode}
+\def\XINT_htd_update 1#1#2#3#4#5%#6!%
 {%
-    *\xint_c_ii^xvi+#1#2#3#4#5+\xint_c_x^ix!#6!%
+    *\xint_c_ii^xvi+10000#1#2#3#4#5!%#6!%
 }%
 \def\XINT_htd_A 1#1%
 {%
@@ -23840,32 +23823,45 @@
           \expandafter\XINT_htd_Ab
     \fi 1#1%
 }%
-\def\XINT_htd_Aa 10#1#2#3#4#5!{\XINT_htd_again #1#2#3#4!#5!}%
-\def\XINT_htd_Ab 1#1#2#3#4#5#6!{\XINT_htd_again #1!#2#3#4#5!#6!}%
-%    \end{macrocode}
-% \lverb|\XINT_unsepb_loop is in xintcore. It removes the ! separators, the
-% blocs of digits not being prefixed by 1; \XINT_unsep_loop on the other hand
-% assumes 1 prefix on the digit blocks|
-%    \begin{macrocode}
-\def\XINT_htd_end_a\xint_bye
+\def\XINT_htd_Aa 10#1#2#3#4{\XINT_htd_again #1#2#3#4!}%
+\def\XINT_htd_Ab 1#1#2#3#4#5{\XINT_htd_again #1!#2#3#4#5!}%
+\def\XINT_htd_finish\xint_bye
     \expandafter\XINT_htd_A\the\numexpr \XINT_htd_a #1\XINT_htd_nextfour
 {%
-    \expandafter\XINT_htd_end_b\the\numexpr0\XINT_unsepb_loop #1% 
+    \expandafter\XINT_htd_finish_cuz\the\numexpr0\XINT_htd_unsep_loop #1% 
 }%
-\def\XINT_htd_end_b #1{%
-\def\XINT_htd_end_b ##1##2##3##4##5%
+\def\XINT_htd_unsep_loop #1!#2!#3!#4!#5!#6!#7!#8!#9!%
+{%
+    \expandafter\XINT_unsep_clean
+    \the\numexpr 1#1#2\expandafter\XINT_unsep_clean
+    \the\numexpr 1#3#4\expandafter\XINT_unsep_clean
+    \the\numexpr 1#5#6\expandafter\XINT_unsep_clean
+    \the\numexpr 1#7#8\expandafter\XINT_unsep_clean
+    \the\numexpr 1#9\XINT_htd_unsep_loop_a
+}%
+\def\XINT_htd_unsep_loop_a #1!#2!#3!#4!#5!#6!#7!#8!#9!%
+{%
+    #1\expandafter\XINT_unsep_clean
+    \the\numexpr 1#2#3\expandafter\XINT_unsep_clean
+    \the\numexpr 1#4#5\expandafter\XINT_unsep_clean
+    \the\numexpr 1#6#7\expandafter\XINT_unsep_clean
+    \the\numexpr 1#8#9\XINT_htd_unsep_loop
+}%
+\def\XINT_unsep_clean 1{\relax}% also in xintcore
+\def\XINT_htd_finish_cuz #1{%
+\def\XINT_htd_finish_cuz ##1##2##3##4##5%
    {\expandafter#1\the\numexpr ##1##2##3##4##5\relax}%
-}\XINT_htd_end_b{ }%
+}\XINT_htd_finish_cuz{ }%
 %    \end{macrocode}
 % \subsection{\csh{xintBinToDec}}
 % \lverb|Redone entirely for 1.2m. Starts by converting to hexadecimal
-% first (but with unexpanded \XINT_sbth_xxxx macros).
+% first.
 %
-% Maximal size of input around 19984 digits (expansion depth=10000).
+% Increased maximal size at 1.2n.
 %
 % An input without leading zeroes gives an output without leading zeroes.
 %
-% 1.2m robust against non-terminated input.|
+% Robust against non-terminated input.|
 %    \begin{macrocode}
 \def\xintBinToDec {\romannumeral0\xintbintodec }%
 \def\xintbintodec #1%
@@ -23882,21 +23878,13 @@
 \def\XINT_btd_N {\expandafter-\romannumeral0\XINT_btd_main }%
 \def\XINT_btd_main #1\xint:
 {%
-    \expandafter\XINT_btd_htd
-    \csname\expandafter\XINT_btd_tohex
+    \csname XINT_btd_htd\csname\expandafter\XINT_bth_loop
     \romannumeral0\XINT_zeroes_foriv
-     #1\R{0\R}{00\R}{000\R}\R{0\R}{00\R}{000\R}\R\W
-    #1\XINT_btd_tohex_endcsname2345678\W
+       #1\R{0\R}{00\R}{000\R}\R{0\R}{00\R}{000\R}\R\W
+    #1\xint_bye2345678\xint_bye none\endcsname\xint:
 }%
-\def\XINT_btd_tohex #1#2#3#4#5#6#7#8%
+\def\XINT_btd_htd #1\xint:
 {%
-            XINT_sbth_#1#2#3#4\expandafter\endcsname
-    \csname XINT_sbth_#5#6#7#8\expandafter\endcsname
-    \csname\XINT_btd_tohex
-}%
-\def\XINT_btd_tohex_endcsname#1\W{none\endcsname}%
-\def\XINT_btd_htd #1\XINT_sbth_none
-{%
     \expandafter\XINT_htd_startb
     \the\numexpr\expandafter\XINT_htd_starta
     \romannumeral0\XINT_zeroes_foriv
@@ -23906,16 +23894,17 @@
 %    \end{macrocode}
 % \subsection{\csh{xintBinToHex}}
 % \lverb|Complete rewrite for 1.2m.
-%
-% But input should not have more than about 13320 binary digits (expansion
+% But input for 1.2m version limited to about 13320 binary digits (expansion
 % depth=10000).
 %
+% Again redone for 1.2n for \csname governed expansion: increased maximal size.
+%
 % Size of output is ceil(size(input)/4), leading zeroes in output (inherited
 % from the input) are not trimmed.
 %
 % An input without leading zeroes gives an output without leading zeroes.
 %
-% 1.2m robust against non-terminated input.
+% Robust against non-terminated input.
 % |
 %    \begin{macrocode}
 \def\xintBinToHex {\romannumeral0\xintbintohex }%
@@ -23931,26 +23920,22 @@
      \krof
 }%
 \def\XINT_bth_N {\expandafter-\romannumeral0\XINT_bth_main }%
-\def\XINT_bth_main #1{%
-\def\XINT_bth_main ##1\xint:
+\def\XINT_bth_main #1\xint:
 {%
-    \expandafter\expandafter\expandafter#1%
-    \csname\expandafter\XINT_bth_tohex
+    \csname space\csname\expandafter\XINT_bth_loop
     \romannumeral0\XINT_zeroes_foriv
-       ##1\R{0\R}{00\R}{000\R}\R{0\R}{00\R}{000\R}\R\W
-    ##1\XINT_bth_tohex_endcsname2345678\W
-}}\XINT_bth_main{ }%
-\def\XINT_bth_tohex #1#2#3#4#5#6#7#8%
+       #1\R{0\R}{00\R}{000\R}\R{0\R}{00\R}{000\R}\R\W
+    #1\xint_bye2345678\xint_bye none\endcsname
+}%
+\def\XINT_bth_loop #1#2#3#4#5#6#7#8%
 {%
-            XINT_sbth_#1#2#3#4\expandafter\expandafter\expandafter\endcsname
-    \csname XINT_sbth_#5#6#7#8\expandafter\expandafter\expandafter\endcsname
-    \csname\XINT_bth_tohex
+            XINT_csbth_#1#2#3#4%
+    \csname XINT_csbth_#5#6#7#8%
+    \csname\XINT_bth_loop
 }%
-\def\XINT_bth_tohex_endcsname#1\W{none\endcsname}%
 %    \end{macrocode}
 % \subsection{\csh{xintHexToBin}}
-% \lverb|Completely rewritten for 1.2m. Limited to inputs of at most about
-% 4994 hexadecimal digits [input stack size=5000].
+% \lverb|Completely rewritten for 1.2m.
 %
 % Attention this macro is not robust against arguments expanding after
 % themselves.
@@ -23957,13 +23942,15 @@
 %
 % Only up to three zeros are removed on front of output: if the input had a
 % leading zero, there will be a leading zero (and then possibly 4n of them if
-% inputs had more leading zeroes) on output.|
+% inputs had more leading zeroes) on output.
+%
+% Rewritten again at 1.2n for \csname governed expansion.|
 %    \begin{macrocode}
 \def\xintHexToBin {\romannumeral0\xinthextobin }%
 \def\xinthextobin #1%
 {%
     \expandafter\XINT_htb_checkin\romannumeral`&&@#1%
-    \xint_bye 23456789\xint_bye none\endcsname\relax
+    \xint_bye 23456789\xint_bye none\endcsname
 }%
 \def\XINT_htb_checkin #1%
 {%
@@ -23973,44 +23960,22 @@
      \krof
 }%
 \def\XINT_htb_N {\expandafter-\romannumeral0\XINT_htb_main }%
-\def\XINT_htb_main {\expandafter\XINT_htb_cuz\the\numexpr\XINT_htb_loop}%
+\def\XINT_htb_main {\csname XINT_htb_cuz\csname\XINT_htb_loop}%
 \def\XINT_htb_loop #1#2#3#4#5#6#7#8#9%
 {%
-                 1\csname XINT_shtb_#1\endcsname
-                  \csname XINT_shtb_#2\endcsname
-     \expandafter\XINT_unsep_clean
-     \the\numexpr1\csname XINT_shtb_#3\endcsname
-                  \csname XINT_shtb_#4\endcsname
-     \expandafter\XINT_unsep_clean
-     \the\numexpr1\csname XINT_shtb_#5\endcsname
-                  \csname XINT_shtb_#6\endcsname
-     \expandafter\XINT_unsep_clean
-     \the\numexpr1\csname XINT_shtb_#7\endcsname
-                  \csname XINT_shtb_#8\endcsname
-     \expandafter\XINT_unsep_clean
-     \the\numexpr1\csname XINT_shtb_#9\endcsname
-     \XINT_htb_loop_a
+             XINT_cshtb_#1%
+     \csname XINT_cshtb_#2%
+     \csname XINT_cshtb_#3%
+     \csname XINT_cshtb_#4%
+     \csname XINT_cshtb_#5%
+     \csname XINT_cshtb_#6%
+     \csname XINT_cshtb_#7%
+     \csname XINT_cshtb_#8%
+     \csname XINT_cshtb_#9%
+     \csname \XINT_htb_loop
 }%
-\def\XINT_htb_loop_a #1#2#3#4#5#6#7#8#9%
-{%
-                  \csname XINT_shtb_#1\endcsname
-     \expandafter\XINT_unsep_clean
-     \the\numexpr1\csname XINT_shtb_#2\endcsname
-                  \csname XINT_shtb_#3\endcsname
-     \expandafter\XINT_unsep_clean
-     \the\numexpr1\csname XINT_shtb_#4\endcsname
-                  \csname XINT_shtb_#5\endcsname
-     \expandafter\XINT_unsep_clean
-     \the\numexpr1\csname XINT_shtb_#6\endcsname
-                  \csname XINT_shtb_#7\endcsname
-     \expandafter\XINT_unsep_clean
-     \the\numexpr1\csname XINT_shtb_#8\endcsname
-                  \csname XINT_shtb_#9\endcsname
-     \expandafter\XINT_unsep_clean
-     \the\numexpr\XINT_htb_loop
-}%
 \def\XINT_htb_cuz #1{%
-\def\XINT_htb_cuz 1##1##2##3##4%
+\def\XINT_htb_cuz ##1##2##3##4%
    {\expandafter#1\the\numexpr##1##2##3##4\relax}%
 }\XINT_htb_cuz { }%
 %    \end{macrocode}
@@ -24018,13 +23983,15 @@
 % \lverb|The 1.08 macro had same functionality as \xintHexToBin, and slightly
 % different code, the 1.2m version has the same code as \xintHexToBin except
 % that it does not remove leading zeros from output: if the input had N
-% hexadecimal digits, the output will have exactly 4N binary digits.|
+% hexadecimal digits, the output will have exactly 4N binary digits.
+%
+% Rewritten again at 1.2n for \csname governed expansion.|
 %    \begin{macrocode}
 \def\xintCHexToBin {\romannumeral0\xintchextobin }%
 \def\xintchextobin #1%
 {%
     \expandafter\XINT_chtb_checkin\romannumeral`&&@#1%
-    \xint_bye 23456789\xint_bye none\endcsname\relax
+    \xint_bye 23456789\xint_bye none\endcsname
 }%
 \def\XINT_chtb_checkin #1%
 {%
@@ -24034,8 +24001,7 @@
      \krof
 }%
 \def\XINT_chtb_N {\expandafter-\romannumeral0\XINT_chtb_main }%
-\def\XINT_chtb_main
-   {\expandafter\xint_gobble_thenstop\the\numexpr\XINT_htb_loop}%
+\def\XINT_chtb_main {\csname space\csname\XINT_htb_loop}%
 \XINT_restorecatcodes_endinput%
 %    \end{macrocode}
 %
@@ -24120,7 +24086,7 @@
 %    \begin{macrocode}
 \XINT_providespackage
 \ProvidesPackage{xintgcd}%
-  [2017/07/31 1.2m Euclide algorithm with xint package (JFB)]%
+  [2017/08/06 1.2n Euclide algorithm with xint package (JFB)]%
 %    \end{macrocode}
 % \subsection{\csh{xintGCD}, \csh{xintiiGCD}}
 %    \begin{macrocode}
@@ -24787,7 +24753,7 @@
 %    \begin{macrocode}
 \XINT_providespackage
 \ProvidesPackage{xintfrac}%
-  [2017/07/31 1.2m Expandable operations on fractions (JFB)]%
+  [2017/08/06 1.2n Expandable operations on fractions (JFB)]%
 %    \end{macrocode}
 % \subsection{\csh{XINT_cntSgnFork}}
 % \lverb|1.09i. Used internally, #1 must expand to \m at ne, \z@, or \@ne or
@@ -28776,7 +28742,7 @@
 %    \begin{macrocode}
 \XINT_providespackage
 \ProvidesPackage{xintseries}%
-  [2017/07/31 1.2m Expandable partial sums with xint package (JFB)]%
+  [2017/08/06 1.2n Expandable partial sums with xint package (JFB)]%
 %    \end{macrocode}
 % \subsection{\csh{xintSeries}}
 %    \begin{macrocode}
@@ -29274,7 +29240,7 @@
 %    \begin{macrocode}
 \XINT_providespackage
 \ProvidesPackage{xintcfrac}%
-  [2017/07/31 1.2m Expandable continued fractions with xint package (JFB)]%
+  [2017/08/06 1.2n Expandable continued fractions with xint package (JFB)]%
 %    \end{macrocode}
 % \subsection{\csh{xintCFrac}}
 %    \begin{macrocode}
@@ -30525,7 +30491,7 @@
 %    \begin{macrocode}
 \XINT_providespackage
 \ProvidesPackage{xintexpr}%
-  [2017/07/31 1.2m Expandable expression parser (JFB)]%
+  [2017/08/06 1.2n Expandable expression parser (JFB)]%
 \catcode`! 11
 \let\XINT_Cmp \xintiiCmp
 %    \end{macrocode}
@@ -34527,9 +34493,9 @@
 \iffalse
 % grep -c -e "^{%" xint*sty
 xint.sty:178
-xintbinhex.sty:66
+xintbinhex.sty:55
 xintcfrac.sty:183
-xintcore.sty:280
+xintcore.sty:278
 xintexpr.sty:168
 xintfrac.sty:439
 xintgcd.sty:50
@@ -34538,13 +34504,13 @@
 xinttools.sty:138
 \fi
 % grep -o "^{%" xint*sty | wc -l
-\def\totala{    1563}
+\def\totala{    1550}
 \iffalse
 % grep -c -e "^}%" xint*sty
 xint.sty:177
-xintbinhex.sty:64
+xintbinhex.sty:54
 xintcfrac.sty:183
-xintcore.sty:277
+xintcore.sty:275
 xintexpr.sty:199
 xintfrac.sty:437
 xintgcd.sty:52
@@ -34553,7 +34519,7 @@
 xinttools.sty:137
 \fi
 % grep -o "^}%" xint*sty | wc -l
-\def\totalb{    1588}
+\def\totalb{    1576}
 \DeleteShortVerb{\|}
 \def\mymacro #1{\mymacroaux #1}
 \def\mymacroaux #1#2{\strut \csname #1nameimp\endcsname:& \dtt{ #2.}\tabularnewline }
@@ -34590,8 +34556,8 @@
   Right bracket \]     Circumflex    \^     Underscore    \_
   Grave accent  \`     Left brace    \{     Vertical bar  \|
   Right brace   \}     Tilde         \~}
-\CheckSum {30439}% 30303 pour 1.2h, 30403 pour 1.2i, 30750 pour 1.2j,
-                 % 30677 pour 1.2k, 30931 pour 1.2l
+\CheckSum {30253}% 30303 pour 1.2h, 30403 pour 1.2i, 30750 pour 1.2j,
+                 % 30677 pour 1.2k, 30931 pour 1.2l, 30439 pour 1.2m
 \makeatletter\check at checksum\makeatother
 \Finale
 %% End of file xint.dtx

Modified: trunk/Master/texmf-dist/source/generic/xint/xint.ins
===================================================================
--- trunk/Master/texmf-dist/source/generic/xint/xint.ins	2017-08-07 21:08:29 UTC (rev 44974)
+++ trunk/Master/texmf-dist/source/generic/xint/xint.ins	2017-08-07 21:08:44 UTC (rev 44975)
@@ -21,7 +21,7 @@
 %% same distribution. (The sources need not necessarily be
 %% in the same archive or directory.)
 %% ---------------------------------------------------------------
-%% The xint bundle 1.2m 2017/07/31
+%% The xint bundle 1.2n 2017/08/06
 %% Copyright (C) 2013-2017 by Jean-Francois Burnol
 %% ---------------------------------------------------------------
 %%

Modified: trunk/Master/texmf-dist/tex/generic/xint/xint.sty
===================================================================
--- trunk/Master/texmf-dist/tex/generic/xint/xint.sty	2017-08-07 21:08:29 UTC (rev 44974)
+++ trunk/Master/texmf-dist/tex/generic/xint/xint.sty	2017-08-07 21:08:44 UTC (rev 44975)
@@ -21,7 +21,7 @@
 %% same distribution. (The sources need not necessarily be
 %% in the same archive or directory.)
 %% ---------------------------------------------------------------
-%% The xint bundle 1.2m 2017/07/31
+%% The xint bundle 1.2n 2017/08/06
 %% Copyright (C) 2013-2017 by Jean-Francois Burnol
 %% xint: Expandable operations on big integers
 %% ---------------------------------------------------------------
@@ -70,7 +70,7 @@
 \XINTsetupcatcodes% defined in xintkernel.sty (loaded by xintcore.sty)
 \XINT_providespackage
 \ProvidesPackage{xint}%
-  [2017/07/31 1.2m Expandable operations on big integers (JFB)]%
+  [2017/08/06 1.2n Expandable operations on big integers (JFB)]%
 \long\def\xint_firstofthree  #1#2#3{#1}%
 \long\def\xint_secondofthree #1#2#3{#2}%
 \long\def\xint_thirdofthree  #1#2#3{#3}%

Modified: trunk/Master/texmf-dist/tex/generic/xint/xintbinhex.sty
===================================================================
--- trunk/Master/texmf-dist/tex/generic/xint/xintbinhex.sty	2017-08-07 21:08:29 UTC (rev 44974)
+++ trunk/Master/texmf-dist/tex/generic/xint/xintbinhex.sty	2017-08-07 21:08:44 UTC (rev 44975)
@@ -21,7 +21,7 @@
 %% same distribution. (The sources need not necessarily be
 %% in the same archive or directory.)
 %% ---------------------------------------------------------------
-%% The xint bundle 1.2m 2017/07/31
+%% The xint bundle 1.2n 2017/08/06
 %% Copyright (C) 2013-2017 by Jean-Francois Burnol
 %% xintbinhex: Expandable binary and hexadecimal conversions
 %% ---------------------------------------------------------------
@@ -38,7 +38,7 @@
   \catcode58=12   % :
   \let\z\endgroup
   \expandafter\let\expandafter\x\csname ver at xintbinhex.sty\endcsname
-  \expandafter\let\expandafter\w\csname ver at xintcore.sty\endcsname
+  \expandafter\let\expandafter\w\csname ver at xintkernel.sty\endcsname
   \expandafter
     \ifx\csname PackageInfo\endcsname\relax
       \def\y#1#2{\immediate\write-1{Package #1 Info: #2.}}%
@@ -51,15 +51,15 @@
      \aftergroup\endinput
   \else
     \ifx\x\relax   % plain-TeX, first loading of xintbinhex.sty
-      \ifx\w\relax % but xintcore.sty not yet loaded.
-         \def\z{\endgroup\input xintcore.sty\relax}%
+      \ifx\w\relax % but xintkernel.sty not yet loaded.
+         \def\z{\endgroup\input xintkernel.sty\relax}%
       \fi
     \else
       \def\empty {}%
       \ifx\x\empty % LaTeX, first loading,
       % variable is initialized, but \ProvidesPackage not yet seen
-          \ifx\w\relax % xintcore.sty not yet loaded.
-            \def\z{\endgroup\RequirePackage{xintcore}}%
+          \ifx\w\relax % xintkernel.sty not yet loaded.
+            \def\z{\endgroup\RequirePackage{xintkernel}}%
           \fi
       \else
         \aftergroup\endinput % xintbinhex already loaded.
@@ -70,86 +70,78 @@
 \XINTsetupcatcodes% defined in xintkernel.sty
 \XINT_providespackage
 \ProvidesPackage{xintbinhex}%
-  [2017/07/31 1.2m Expandable binary and hexadecimal conversions (JFB)]%
+  [2017/08/06 1.2n Expandable binary and hexadecimal conversions (JFB)]%
 \newcount\xint_c_ii^xv  \xint_c_ii^xv   32768
 \newcount\xint_c_ii^xvi \xint_c_ii^xvi  65536
-\newcount\xint_c_x^v    \xint_c_x^v    100000
 \def\XINT_tmpa #1{\ifx\relax#1\else
-  \expandafter\edef\csname XINT_sdth_#1\endcsname
-  {\ifcase #1 0\or 1\or 2\or 3\or 4\or 5\or 6\or 7\or
-              8\or 9\or A\or B\or C\or D\or E\or F\else\space\fi}%
+  \expandafter\edef\csname XINT_csdth_#1\endcsname
+  {\endcsname\ifcase #1 0\or 1\or 2\or 3\or 4\or 5\or 6\or 7\or
+              8\or 9\or A\or B\or C\or D\or E\or F\fi}%
   \expandafter\XINT_tmpa\fi }%
-\XINT_tmpa {-1}{0}{1}{2}{3}{4}{5}{6}{7}{8}{9}{10}{11}{12}{13}{14}{15}\relax
+\XINT_tmpa {0}{1}{2}{3}{4}{5}{6}{7}{8}{9}{10}{11}{12}{13}{14}{15}\relax
 \def\XINT_tmpa #1{\ifx\relax#1\else
-  \expandafter\edef\csname XINT_sdtb_#1\endcsname
-  {\ifcase #1
+  \expandafter\edef\csname XINT_csdtb_#1\endcsname
+  {\endcsname\ifcase #1
    0000\or 0001\or 0010\or 0011\or 0100\or 0101\or 0110\or 0111\or
-   1000\or 1001\or 1010\or 1011\or 1100\or 1101\or 1110\or 1111\else\space\fi}%
+   1000\or 1001\or 1010\or 1011\or 1100\or 1101\or 1110\or 1111\fi}%
   \expandafter\XINT_tmpa\fi }%
-\XINT_tmpa {-1}{0}{1}{2}{3}{4}{5}{6}{7}{8}{9}{10}{11}{12}{13}{14}{15}\relax
+\XINT_tmpa {0}{1}{2}{3}{4}{5}{6}{7}{8}{9}{10}{11}{12}{13}{14}{15}\relax
 \let\XINT_tmpa\relax
-\expandafter\def\csname XINT_sbth_0000\endcsname {0}%
-\expandafter\def\csname XINT_sbth_0001\endcsname {1}%
-\expandafter\def\csname XINT_sbth_0010\endcsname {2}%
-\expandafter\def\csname XINT_sbth_0011\endcsname {3}%
-\expandafter\def\csname XINT_sbth_0100\endcsname {4}%
-\expandafter\def\csname XINT_sbth_0101\endcsname {5}%
-\expandafter\def\csname XINT_sbth_0110\endcsname {6}%
-\expandafter\def\csname XINT_sbth_0111\endcsname {7}%
-\expandafter\def\csname XINT_sbth_1000\endcsname {8}%
-\expandafter\def\csname XINT_sbth_1001\endcsname {9}%
-\expandafter\def\csname XINT_sbth_1010\endcsname {10}%
-\expandafter\def\csname XINT_sbth_1011\endcsname {11}%
-\expandafter\def\csname XINT_sbth_1100\endcsname {12}%
-\expandafter\def\csname XINT_sbth_1101\endcsname {13}%
-\expandafter\def\csname XINT_sbth_1110\endcsname {14}%
-\expandafter\def\csname XINT_sbth_1111\endcsname {15}%
-\expandafter\def\csname XINT_sbth_1010\endcsname {A}%
-\expandafter\def\csname XINT_sbth_1011\endcsname {B}%
-\expandafter\def\csname XINT_sbth_1100\endcsname {C}%
-\expandafter\def\csname XINT_sbth_1101\endcsname {D}%
-\expandafter\def\csname XINT_sbth_1110\endcsname {E}%
-\expandafter\def\csname XINT_sbth_1111\endcsname {F}%
-\let\XINT_sbth_none \empty
-\expandafter\def\csname XINT_shtb_0\endcsname {0000}%
-\expandafter\def\csname XINT_shtb_1\endcsname {0001}%
-\expandafter\def\csname XINT_shtb_2\endcsname {0010}%
-\expandafter\def\csname XINT_shtb_3\endcsname {0011}%
-\expandafter\def\csname XINT_shtb_4\endcsname {0100}%
-\expandafter\def\csname XINT_shtb_5\endcsname {0101}%
-\expandafter\def\csname XINT_shtb_6\endcsname {0110}%
-\expandafter\def\csname XINT_shtb_7\endcsname {0111}%
-\expandafter\def\csname XINT_shtb_8\endcsname {1000}%
-\expandafter\def\csname XINT_shtb_9\endcsname {1001}%
-\def\XINT_shtb_A {1010}%
-\def\XINT_shtb_B {1011}%
-\def\XINT_shtb_C {1100}%
-\def\XINT_shtb_D {1101}%
-\def\XINT_shtb_E {1110}%
-\def\XINT_shtb_F {1111}%
-\let\XINT_shtb_none \empty
-\def\XINT_smallhex #1!%
+\expandafter\def\csname XINT_csbth_0000\endcsname {\endcsname0}%
+\expandafter\def\csname XINT_csbth_0001\endcsname {\endcsname1}%
+\expandafter\def\csname XINT_csbth_0010\endcsname {\endcsname2}%
+\expandafter\def\csname XINT_csbth_0011\endcsname {\endcsname3}%
+\expandafter\def\csname XINT_csbth_0100\endcsname {\endcsname4}%
+\expandafter\def\csname XINT_csbth_0101\endcsname {\endcsname5}%
+\expandafter\def\csname XINT_csbth_0110\endcsname {\endcsname6}%
+\expandafter\def\csname XINT_csbth_0111\endcsname {\endcsname7}%
+\expandafter\def\csname XINT_csbth_1000\endcsname {\endcsname8}%
+\expandafter\def\csname XINT_csbth_1001\endcsname {\endcsname9}%
+\expandafter\def\csname XINT_csbth_1010\endcsname {\endcsname A}%
+\expandafter\def\csname XINT_csbth_1011\endcsname {\endcsname B}%
+\expandafter\def\csname XINT_csbth_1100\endcsname {\endcsname C}%
+\expandafter\def\csname XINT_csbth_1101\endcsname {\endcsname D}%
+\expandafter\def\csname XINT_csbth_1110\endcsname {\endcsname E}%
+\expandafter\def\csname XINT_csbth_1111\endcsname {\endcsname F}%
+\let\XINT_csbth_none \endcsname
+\expandafter\def\csname XINT_cshtb_0\endcsname {\endcsname0000}%
+\expandafter\def\csname XINT_cshtb_1\endcsname {\endcsname0001}%
+\expandafter\def\csname XINT_cshtb_2\endcsname {\endcsname0010}%
+\expandafter\def\csname XINT_cshtb_3\endcsname {\endcsname0011}%
+\expandafter\def\csname XINT_cshtb_4\endcsname {\endcsname0100}%
+\expandafter\def\csname XINT_cshtb_5\endcsname {\endcsname0101}%
+\expandafter\def\csname XINT_cshtb_6\endcsname {\endcsname0110}%
+\expandafter\def\csname XINT_cshtb_7\endcsname {\endcsname0111}%
+\expandafter\def\csname XINT_cshtb_8\endcsname {\endcsname1000}%
+\expandafter\def\csname XINT_cshtb_9\endcsname {\endcsname1001}%
+\def\XINT_cshtb_A {\endcsname1010}%
+\def\XINT_cshtb_B {\endcsname1011}%
+\def\XINT_cshtb_C {\endcsname1100}%
+\def\XINT_cshtb_D {\endcsname1101}%
+\def\XINT_cshtb_E {\endcsname1110}%
+\def\XINT_cshtb_F {\endcsname1111}%
+\let\XINT_cshtb_none \endcsname
+\def\XINT_zeroes_foriv #1#2#3#4#5#6#7#8%
 {%
-    \expandafter\XINT_smallhex_a
-    \the\numexpr (#1+\xint_c_viii)/\xint_c_xvi-\xint_c_i\xint:#1\xint:
+    \xint_gob_til_R #8\XINT_zeroes_foriv_end\R\XINT_zeroes_foriv
 }%
-\def\XINT_smallhex_a #1\xint:#2\xint:
+\def\XINT_zeroes_foriv_end\R\XINT_zeroes_foriv #1#2\W
+   {\XINT_zeroes_foriv_done #1}%
+\def\XINT_zeroes_foriv_done #1\R{ #1}%
+\def\XINT_unsepb_loop #1!#2!#3!#4!#5!#6!#7!#8!#9!%
 {%
-    \csname XINT_sdth_#1\expandafter\expandafter\expandafter\endcsname
-    \csname XINT_sdth_\the\numexpr #2-\xint_c_xvi*#1\relax\expandafter\endcsname
-    \romannumeral`&&@%
+    \expandafter\XINT_unsep_clean
+    \the\numexpr 1#1\expandafter\XINT_unsep_clean
+    \the\numexpr 1#2\expandafter\XINT_unsep_clean
+    \the\numexpr 1#3\expandafter\XINT_unsep_clean
+    \the\numexpr 1#4\expandafter\XINT_unsep_clean
+    \the\numexpr 1#5\expandafter\XINT_unsep_clean
+    \the\numexpr 1#6\expandafter\XINT_unsep_clean
+    \the\numexpr 1#7\expandafter\XINT_unsep_clean
+    \the\numexpr 1#8\expandafter\XINT_unsep_clean
+    \the\numexpr 1#9\XINT_unsepb_loop
 }%
-\def\XINT_smallbin #1!%
-{%
-    \expandafter\XINT_smallbin_a
-    \the\numexpr (#1+\xint_c_viii)/\xint_c_xvi-\xint_c_i\xint:#1\xint:
-}%
-\def\XINT_smallbin_a #1\xint:#2\xint:
-{%
-    \csname XINT_sdtb_#1\expandafter\expandafter\expandafter\endcsname
-    \csname XINT_sdtb_\the\numexpr #2-\xint_c_xvi*#1\relax\expandafter\endcsname
-    \romannumeral`&&@%
-}%
+\def\XINT_unsep_clean 1{\relax}% also in xintcore
 \def\xintDecToHex {\romannumeral0\xintdectohex }%
 \def\xintdectohex #1%
 {%
@@ -165,102 +157,102 @@
 \def\XINT_dth_neg {\expandafter-\romannumeral0\XINT_dth_main}%
 \def\XINT_dth_main #1\xint:
 {%
-    \expandafter\XINT_dth_start
+    \expandafter\XINT_dth_finish
+    \romannumeral`&&@\expandafter\XINT_dthb_start
     \romannumeral0\XINT_zeroes_foriv
        #1\R{0\R}{00\R}{000\R}\R{0\R}{00\R}{000\R}\R\W
-    #1\xint_bye\xint_bye\XINT_dthb_final_a!2!3!4!5!6!7!8!9!\W
+    #1\xint_bye\XINT_dth_tohex
 }%
-\def\XINT_dth_start #1#2#3#4#5%
+\def\XINT_dthb_start #1#2#3#4#5%
 {%
-    \xint_bye#5\XINT_dth_small\xint_bye
-    \XINT_dth_start_a #1#2#3#4#5%
+    \xint_bye#5\XINT_dthb_small\xint_bye\XINT_dthb_start_a #1#2#3#4#5%
 }%
-\def\XINT_dth_start_a #1#2#3#4#5%
+\def\XINT_dthb_small\xint_bye\XINT_dthb_start_a #1\xint_bye#2{#2#1!}%
+\def\XINT_dthb_start_a #1#2#3#4#5#6#7#8#9%
 {%
-    \expandafter\XINT_dth_A\the\numexpr\XINT_dth_a
-    #1#2#3#4\XINT_dth_nextfour!2!3!4!5!6!7!8!9!\Z #5%
+    \expandafter\XINT_dthb_again\the\numexpr\expandafter\XINT_dthb_update
+    \the\numexpr#1#2#3#4%
+    \xint_bye#9\XINT_dthb_lastpass\xint_bye
+    #5#6#7#8!\XINT_dthb_exclam\relax\XINT_dthb_nextfour!2!3!4!5!6!7!8!9!\Z #9%
 }%
-\def\XINT_dth_small\xint_bye\XINT_dth_start_a #1\xint_bye #2\W
+\def\XINT_dthb_exclam {!\XINT_dthb_exclam!}%
+\def\XINT_dthb_update #1!%
 {%
-    \expandafter\XINT_dth_B_finish
-    \romannumeral`&&@\XINT_tofourhex#1!\space
+    \expandafter\XINT_dthb_update_a
+    \the\numexpr (#1+\xint_c_ii^xv)/\xint_c_ii^xvi-\xint_c_i\xint:
+    #1\xint:%
 }%
-\def\XINT_dth_a #1!#2!#3!#4!#5!#6!#7!#8!#9!%
+\def\XINT_dthb_update_a #1\xint:#2\xint:#3%
 {%
-    \expandafter\XINT_dth_update
-    \the\numexpr #1\expandafter\XINT_dth_update
-    \the\numexpr #2\expandafter\XINT_dth_update
-    \the\numexpr #3\expandafter\XINT_dth_update
-    \the\numexpr #4\expandafter\XINT_dth_update
-    \the\numexpr #5\expandafter\XINT_dth_update
-    \the\numexpr #6\expandafter\XINT_dth_update
-    \the\numexpr #7\expandafter\XINT_dth_update
-    \the\numexpr #8\expandafter\XINT_dth_update
-    \the\numexpr #9\XINT_dth_a
+    0000+#1\expandafter#3\the\numexpr#2-#1*\xint_c_ii^xvi
 }%
-\def\XINT_dth_nextfour #1\Z #2#3#4#5%
+\def\XINT_dthb_nextfour #1\Z #2#3#4#5#6%
 {%
-    #2#3#4#5!\relax\XINT_dth_nextfour!2!3!4!5!6!7!8!9!\Z
+    \xint_bye#6\XINT_dthb_lastpass\xint_bye
+    #2#3#4#5!\XINT_dthb_exclam\relax\XINT_dthb_nextfour!2!3!4!5!6!7!8!9!\Z #6%
 }%
-\def\XINT_dth_update #1!%
+\def\XINT_dthb_lastpass\xint_bye #1!#2\xint_bye#3{#1!#3!}%
+\def\XINT_dth_tohex
 {%
-    \expandafter\XINT_dth_update_a
-    \the\numexpr (#1+\xint_c_ii^xv)/\xint_c_ii^xvi-\xint_c_i\xint:
-    #1\xint:%
+    \expandafter\expandafter\expandafter\XINT_dth_tohex_a\csname\XINT_tofourhex
 }%
-\def\XINT_dth_update_a #1\xint:#2\xint:
+\def\XINT_dth_tohex_a\endcsname{!\XINT_dth_tohex!}%
+\def\XINT_dthb_a #1!#2!#3!#4!#5!#6!#7!#8!#9!%
 {%
-    0000+#1\expandafter!\expandafter!\the\numexpr#2-#1*\xint_c_ii^xvi
+    \expandafter\XINT_dthb_update
+    \the\numexpr #1\expandafter\XINT_dthb_update
+    \the\numexpr #2\expandafter\XINT_dthb_update
+    \the\numexpr #3\expandafter\XINT_dthb_update
+    \the\numexpr #4\expandafter\XINT_dthb_update
+    \the\numexpr #5\expandafter\XINT_dthb_update
+    \the\numexpr #6\expandafter\XINT_dthb_update
+    \the\numexpr #7\expandafter\XINT_dthb_update
+    \the\numexpr #8\expandafter\XINT_dthb_update
+    \the\numexpr #9\XINT_dthb_a
 }%
-\def\XINT_dth_A #1!!%
+\def\XINT_dthb_again #1!#2!%
 {%
-    \ifnum #1>\xint_c_ \xint_dothis{\XINT_dth_again #1!}\fi
-    \xint_orthat{\XINT_dth_again}%
+    \ifx\XINT_dthb_exclam#2%
+          \expandafter\xint_firstoftwo
+      \else
+          \expandafter\xint_secondoftwo
+    \fi
+    {\expandafter\XINT_dthb_again\the\numexpr\expandafter\XINT_dthb_a
+     \romannumeral`&&@\ifnum #1>\xint_c_ \xint_dothis{#1!}\fi\xint_orthat{}}%
+    {\ifnum #1>\xint_c_ \xint_dothis{#2#1!}\fi\xint_orthat{!#2!}}%
 }%
-\def\XINT_dth_again #1\Z #2%
+\def\XINT_tofourhex #1!%
 {%
-    \xint_bye #2\XINT_dth_B_a\xint_bye
-    \expandafter\XINT_dth_A\the\numexpr\XINT_dth_a #1\Z #2%
+    \expandafter\XINT_tofourhex_a
+    \the\numexpr (#1+\xint_c_ii^vii)/\xint_c_ii^viii-\xint_c_i\xint:
+    #1\xint:
 }%
-\def\XINT_dth_B_a\xint_bye
-    \expandafter\XINT_dth_A\the\numexpr\XINT_dth_a #1\XINT_dth_nextfour #2\Z
+\def\XINT_tofourhex_a #1\xint:#2\xint:
 {%
-    \expandafter\XINT_dth_B_finish\romannumeral`&&@\XINT_dth_B_c #1!%
+    \expandafter\XINT_tofourhex_c
+    \the\numexpr (#1+\xint_c_viii)/\xint_c_xvi-\xint_c_i\xint:
+    #1\xint:
+    \the\numexpr #2-\xint_c_ii^viii*#1!%
 }%
-\def\XINT_dth_B_c #1!#2!#3!#4!#5!#6!#7!#8!#9!%
+\def\XINT_tofourhex_c #1\xint:#2\xint:
 {%
-    \XINT_tofourhex#1!%
-    \XINT_tofourhex#2!%
-    \XINT_tofourhex#3!%
-    \XINT_tofourhex#4!%
-    \XINT_tofourhex#5!%
-    \XINT_tofourhex#6!%
-    \XINT_tofourhex#7!%
-    \XINT_tofourhex#8!%
-    \XINT_tofourhex#9!%
-    \XINT_dth_B_c
+    XINT_csdth_#1%
+    \csname XINT_csdth_\the\numexpr #2-\xint_c_xvi*#1\relax
+    \csname \expandafter\XINT_tofourhex_d
 }%
-\def\XINT_tofourhex #1!%
+\def\XINT_tofourhex_d #1!%
 {%
-    \expandafter\XINT_tofourhex_a
-    \the\numexpr (#1+\xint_c_ii^vii)/\xint_c_ii^viii-\xint_c_i\xint: #1\xint:
+    \expandafter\XINT_tofourhex_e
+    \the\numexpr (#1+\xint_c_viii)/\xint_c_xvi-\xint_c_i\xint:
+    #1\xint:
 }%
-\def\XINT_tofourhex_a #1\xint: #2\xint:
+\def\XINT_tofourhex_e #1\xint:#2\xint:
 {%
-    \expandafter\XINT_tofourhex_b
-    \the\numexpr #2-\xint_c_ii^viii*#1\xint:#1\xint:
+    XINT_csdth_#1%
+    \csname XINT_csdth_\the\numexpr #2-\xint_c_xvi*#1\endcsname
 }%
-\def\XINT_tofourhex_b #1\xint: #2\xint:
+\def\XINT_dth_finish !\XINT_dth_tohex!#1#2#3%
 {%
-    \XINT_smallhex #2!%
-    \XINT_smallhex #1!%
-}%
-\def\XINT_dthb_final_a #1\W{1)\relax \xint:\XINT_dthb_final_b\xint:\W}%
-\def\XINT_dthb_final_b #1\W{1\relax \xint:\XINT_dthb_final_c\xint:\W}%
-\def\XINT_dthb_final_c #1\W{-1)\relax \XINT_dthb_final_d\xint:\xint:\W}%
-\def\XINT_dthb_final_d #1\W{\endcsname}%
-\def\XINT_dth_B_finish #1#2#3%
-{%
     \unless\if#10\xint_dothis{ #1#2#3}\fi
     \unless\if#20\xint_dothis{ #2#3}\fi
     \unless\if#30\xint_dothis{ #3}\fi
@@ -281,105 +273,56 @@
 \def\XINT_dtb_neg {\expandafter-\romannumeral0\XINT_dtb_main}%
 \def\XINT_dtb_main #1\xint:
 {%
-    \expandafter\XINT_dtb_start
+    \expandafter\XINT_dtb_finish
+    \romannumeral`&&@\expandafter\XINT_dthb_start
     \romannumeral0\XINT_zeroes_foriv
        #1\R{0\R}{00\R}{000\R}\R{0\R}{00\R}{000\R}\R\W
-    #1\xint_bye\xint_bye\XINT_dthb_final_a!2!3!4!5!6!7!8!9!\W
+    #1\xint_bye\XINT_dtb_tobin
 }%
-\def\XINT_dtb_start #1#2#3#4#5%
+\def\XINT_dtb_tobin
 {%
-    \xint_bye#5\XINT_dtb_small\xint_bye
-    \XINT_dtb_start_a #1#2#3#4#5%
+    \expandafter\expandafter\expandafter\XINT_dtb_tobin_a\csname\XINT_tosixteenbits
 }%
-\def\XINT_dtb_start_a #1#2#3#4#5%
+\def\XINT_dtb_tobin_a\endcsname{!\XINT_dtb_tobin!}%
+\def\XINT_tosixteenbits #1!%
 {%
-    \expandafter\XINT_dtb_A\the\numexpr\XINT_dtb_a
-    #1#2#3#4\XINT_dtb_nextfour!2!3!4!5!6!7!8!9!\Z #5%
+    \expandafter\XINT_tosixteenbits_a
+    \the\numexpr (#1+\xint_c_ii^vii)/\xint_c_ii^viii-\xint_c_i\xint:
+    #1\xint:
 }%
-\def\XINT_dtb_small\xint_bye\XINT_dtb_start_a #1\xint_bye #2\W
+\def\XINT_tosixteenbits_a #1\xint:#2\xint:
 {%
-    \expandafter\XINT_dtb_B_finish
-    \romannumeral`&&@\XINT_tosixteenbits#1!\space
+    \expandafter\XINT_tosixteenbits_c
+    \the\numexpr (#1+\xint_c_viii)/\xint_c_xvi-\xint_c_i\xint:
+    #1\xint:
+    \the\numexpr #2-\xint_c_ii^viii*#1!%
 }%
-\def\XINT_dtb_a #1!#2!#3!#4!#5!#6!#7!#8!#9!%
+\def\XINT_tosixteenbits_c #1\xint:#2\xint:
 {%
-    \expandafter\XINT_dtb_update
-    \the\numexpr #1\expandafter\XINT_dtb_update
-    \the\numexpr #2\expandafter\XINT_dtb_update
-    \the\numexpr #3\expandafter\XINT_dtb_update
-    \the\numexpr #4\expandafter\XINT_dtb_update
-    \the\numexpr #5\expandafter\XINT_dtb_update
-    \the\numexpr #6\expandafter\XINT_dtb_update
-    \the\numexpr #7\expandafter\XINT_dtb_update
-    \the\numexpr #8\expandafter\XINT_dtb_update
-    \the\numexpr #9\XINT_dtb_a
+    XINT_csdtb_#1%
+    \csname XINT_csdtb_\the\numexpr #2-\xint_c_xvi*#1\relax
+    \csname \expandafter\XINT_tosixteenbits_d
 }%
-\def\XINT_dtb_nextfour #1\Z #2#3#4#5%
+\def\XINT_tosixteenbits_d #1!%
 {%
-    #2#3#4#5!\relax\XINT_dtb_nextfour!2!3!4!5!6!7!8!9!\Z
+    \expandafter\XINT_tosixteenbits_e
+    \the\numexpr (#1+\xint_c_viii)/\xint_c_xvi-\xint_c_i\xint:
+    #1\xint:
 }%
-\def\XINT_dtb_update #1!%
+\def\XINT_tosixteenbits_e #1\xint:#2\xint:
 {%
-    \expandafter\XINT_dtb_update_a
-    \the\numexpr (#1+\xint_c_ii^xv)/\xint_c_ii^xvi-\xint_c_i\xint:
-    #1\xint:%
+    XINT_csdtb_#1%
+    \csname XINT_csdtb_\the\numexpr #2-\xint_c_xvi*#1\endcsname
 }%
-\def\XINT_dtb_update_a #1\xint:#2\xint:
+\def\XINT_dtb_finish !\XINT_dtb_tobin!#1#2#3#4#5#6#7#8%
 {%
-    0000+#1\expandafter!\expandafter!\the\numexpr#2-#1*\xint_c_ii^xvi
+    \expandafter\XINT_dtb_finish_a\the\numexpr #1#2#3#4#5#6#7#8\relax
 }%
-\def\XINT_dtb_A #1!!%
+\def\XINT_dtb_finish_a #1{%
+\def\XINT_dtb_finish_a ##1##2##3##4##5##6##7##8##9%
 {%
-    \ifnum #1>\xint_c_ \xint_dothis{\XINT_dtb_again #1!}\fi
-    \xint_orthat{\XINT_dtb_again}%
-}%
-\def\XINT_dtb_again #1\Z #2%
-{%
-    \xint_bye #2\XINT_dtb_B_a\xint_bye
-    \expandafter\XINT_dtb_A\the\numexpr\XINT_dtb_a #1\Z #2%
-}%
-\def\XINT_dtb_B_a\xint_bye
-    \expandafter\XINT_dtb_A\the\numexpr\XINT_dtb_a #1\XINT_dtb_nextfour #2\Z
-{%
-    \expandafter\XINT_dtb_B_finish\romannumeral`&&@\XINT_dtb_B_c #1!%
-}%
-\def\XINT_dtb_B_c #1!#2!#3!#4!#5!#6!#7!#8!#9!%
-{%
-    \XINT_tosixteenbits#1!%
-    \XINT_tosixteenbits#2!%
-    \XINT_tosixteenbits#3!%
-    \XINT_tosixteenbits#4!%
-    \XINT_tosixteenbits#5!%
-    \XINT_tosixteenbits#6!%
-    \XINT_tosixteenbits#7!%
-    \XINT_tosixteenbits#8!%
-    \XINT_tosixteenbits#9!%
-    \XINT_dtb_B_c
-}%
-\def\XINT_tosixteenbits #1!%
-{%
-    \expandafter\XINT_tosixteenbits_a
-    \the\numexpr (#1+\xint_c_ii^vii)/\xint_c_ii^viii-\xint_c_i\xint: #1\xint:
-}%
-\def\XINT_tosixteenbits_a #1\xint: #2\xint:
-{%
-    \expandafter\XINT_tosixteenbits_b
-    \the\numexpr #2-\xint_c_ii^viii*#1\xint:#1\xint:
-}%
-\def\XINT_tosixteenbits_b #1\xint: #2\xint:
-{%
-    \XINT_smallbin #2!%
-    \XINT_smallbin #1!%
-}%
-\def\XINT_dtb_B_finish #1#2#3#4#5#6#7#8%
-{%
-    \expandafter\XINT_dtb_B_finish_a\the\numexpr #1#2#3#4#5#6#7#8\relax
-}%
-\def\XINT_dtb_B_finish_a #1{%
-\def\XINT_dtb_B_finish_a ##1##2##3##4##5##6##7##8##9%
-{%
     \expandafter#1\the\numexpr ##1##2##3##4##5##6##7##8##9\relax
-}}\XINT_dtb_B_finish_a { }%
+}}\XINT_dtb_finish_a { }%
 \def\xintHexToDec {\romannumeral0\xinthextodec }%
 \def\xinthextodec #1%
 {%
@@ -414,7 +357,7 @@
     \xint_bye!2!3!4!5!6!7!8!9!\xint_bye\XINT_htd_nextfour}%
 \def\XINT_htd_again #1\XINT_htd_nextfour #2%
 {%
-    \xint_bye #2\XINT_htd_end_a\xint_bye
+    \xint_bye #2\XINT_htd_finish\xint_bye
     \expandafter\XINT_htd_A\the\numexpr
     \XINT_htd_a #1\XINT_htd_nextfour #2%
 }%
@@ -433,12 +376,12 @@
 }%
 \def\XINT_htd_nextfour #1#2#3#4%
 {%
-    *\xint_c_ii^xvi+"#1#2#3#4+\xint_c_x^ix\relax\xint_bye!%
+    *\xint_c_ii^xvi+"#1#2#3#4+1000000000\relax\xint_bye!%
     2!3!4!5!6!7!8!9!\xint_bye\XINT_htd_nextfour
 }%
-\def\XINT_htd_update 1#1#2#3#4#5#6!%
+\def\XINT_htd_update 1#1#2#3#4#5%#6!%
 {%
-    *\xint_c_ii^xvi+#1#2#3#4#5+\xint_c_x^ix!#6!%
+    *\xint_c_ii^xvi+10000#1#2#3#4#5!%#6!%
 }%
 \def\XINT_htd_A 1#1%
 {%
@@ -446,17 +389,35 @@
           \expandafter\XINT_htd_Ab
     \fi 1#1%
 }%
-\def\XINT_htd_Aa 10#1#2#3#4#5!{\XINT_htd_again #1#2#3#4!#5!}%
-\def\XINT_htd_Ab 1#1#2#3#4#5#6!{\XINT_htd_again #1!#2#3#4#5!#6!}%
-\def\XINT_htd_end_a\xint_bye
+\def\XINT_htd_Aa 10#1#2#3#4{\XINT_htd_again #1#2#3#4!}%
+\def\XINT_htd_Ab 1#1#2#3#4#5{\XINT_htd_again #1!#2#3#4#5!}%
+\def\XINT_htd_finish\xint_bye
     \expandafter\XINT_htd_A\the\numexpr \XINT_htd_a #1\XINT_htd_nextfour
 {%
-    \expandafter\XINT_htd_end_b\the\numexpr0\XINT_unsepb_loop #1%
+    \expandafter\XINT_htd_finish_cuz\the\numexpr0\XINT_htd_unsep_loop #1%
 }%
-\def\XINT_htd_end_b #1{%
-\def\XINT_htd_end_b ##1##2##3##4##5%
+\def\XINT_htd_unsep_loop #1!#2!#3!#4!#5!#6!#7!#8!#9!%
+{%
+    \expandafter\XINT_unsep_clean
+    \the\numexpr 1#1#2\expandafter\XINT_unsep_clean
+    \the\numexpr 1#3#4\expandafter\XINT_unsep_clean
+    \the\numexpr 1#5#6\expandafter\XINT_unsep_clean
+    \the\numexpr 1#7#8\expandafter\XINT_unsep_clean
+    \the\numexpr 1#9\XINT_htd_unsep_loop_a
+}%
+\def\XINT_htd_unsep_loop_a #1!#2!#3!#4!#5!#6!#7!#8!#9!%
+{%
+    #1\expandafter\XINT_unsep_clean
+    \the\numexpr 1#2#3\expandafter\XINT_unsep_clean
+    \the\numexpr 1#4#5\expandafter\XINT_unsep_clean
+    \the\numexpr 1#6#7\expandafter\XINT_unsep_clean
+    \the\numexpr 1#8#9\XINT_htd_unsep_loop
+}%
+\def\XINT_unsep_clean 1{\relax}% also in xintcore
+\def\XINT_htd_finish_cuz #1{%
+\def\XINT_htd_finish_cuz ##1##2##3##4##5%
    {\expandafter#1\the\numexpr ##1##2##3##4##5\relax}%
-}\XINT_htd_end_b{ }%
+}\XINT_htd_finish_cuz{ }%
 \def\xintBinToDec {\romannumeral0\xintbintodec }%
 \def\xintbintodec #1%
 {%
@@ -472,21 +433,13 @@
 \def\XINT_btd_N {\expandafter-\romannumeral0\XINT_btd_main }%
 \def\XINT_btd_main #1\xint:
 {%
-    \expandafter\XINT_btd_htd
-    \csname\expandafter\XINT_btd_tohex
+    \csname XINT_btd_htd\csname\expandafter\XINT_bth_loop
     \romannumeral0\XINT_zeroes_foriv
-     #1\R{0\R}{00\R}{000\R}\R{0\R}{00\R}{000\R}\R\W
-    #1\XINT_btd_tohex_endcsname2345678\W
+       #1\R{0\R}{00\R}{000\R}\R{0\R}{00\R}{000\R}\R\W
+    #1\xint_bye2345678\xint_bye none\endcsname\xint:
 }%
-\def\XINT_btd_tohex #1#2#3#4#5#6#7#8%
+\def\XINT_btd_htd #1\xint:
 {%
-            XINT_sbth_#1#2#3#4\expandafter\endcsname
-    \csname XINT_sbth_#5#6#7#8\expandafter\endcsname
-    \csname\XINT_btd_tohex
-}%
-\def\XINT_btd_tohex_endcsname#1\W{none\endcsname}%
-\def\XINT_btd_htd #1\XINT_sbth_none
-{%
     \expandafter\XINT_htd_startb
     \the\numexpr\expandafter\XINT_htd_starta
     \romannumeral0\XINT_zeroes_foriv
@@ -506,27 +459,24 @@
      \krof
 }%
 \def\XINT_bth_N {\expandafter-\romannumeral0\XINT_bth_main }%
-\def\XINT_bth_main #1{%
-\def\XINT_bth_main ##1\xint:
+\def\XINT_bth_main #1\xint:
 {%
-    \expandafter\expandafter\expandafter#1%
-    \csname\expandafter\XINT_bth_tohex
+    \csname space\csname\expandafter\XINT_bth_loop
     \romannumeral0\XINT_zeroes_foriv
-       ##1\R{0\R}{00\R}{000\R}\R{0\R}{00\R}{000\R}\R\W
-    ##1\XINT_bth_tohex_endcsname2345678\W
-}}\XINT_bth_main{ }%
-\def\XINT_bth_tohex #1#2#3#4#5#6#7#8%
+       #1\R{0\R}{00\R}{000\R}\R{0\R}{00\R}{000\R}\R\W
+    #1\xint_bye2345678\xint_bye none\endcsname
+}%
+\def\XINT_bth_loop #1#2#3#4#5#6#7#8%
 {%
-            XINT_sbth_#1#2#3#4\expandafter\expandafter\expandafter\endcsname
-    \csname XINT_sbth_#5#6#7#8\expandafter\expandafter\expandafter\endcsname
-    \csname\XINT_bth_tohex
+            XINT_csbth_#1#2#3#4%
+    \csname XINT_csbth_#5#6#7#8%
+    \csname\XINT_bth_loop
 }%
-\def\XINT_bth_tohex_endcsname#1\W{none\endcsname}%
 \def\xintHexToBin {\romannumeral0\xinthextobin }%
 \def\xinthextobin #1%
 {%
     \expandafter\XINT_htb_checkin\romannumeral`&&@#1%
-    \xint_bye 23456789\xint_bye none\endcsname\relax
+    \xint_bye 23456789\xint_bye none\endcsname
 }%
 \def\XINT_htb_checkin #1%
 {%
@@ -536,44 +486,22 @@
      \krof
 }%
 \def\XINT_htb_N {\expandafter-\romannumeral0\XINT_htb_main }%
-\def\XINT_htb_main {\expandafter\XINT_htb_cuz\the\numexpr\XINT_htb_loop}%
+\def\XINT_htb_main {\csname XINT_htb_cuz\csname\XINT_htb_loop}%
 \def\XINT_htb_loop #1#2#3#4#5#6#7#8#9%
 {%
-                 1\csname XINT_shtb_#1\endcsname
-                  \csname XINT_shtb_#2\endcsname
-     \expandafter\XINT_unsep_clean
-     \the\numexpr1\csname XINT_shtb_#3\endcsname
-                  \csname XINT_shtb_#4\endcsname
-     \expandafter\XINT_unsep_clean
-     \the\numexpr1\csname XINT_shtb_#5\endcsname
-                  \csname XINT_shtb_#6\endcsname
-     \expandafter\XINT_unsep_clean
-     \the\numexpr1\csname XINT_shtb_#7\endcsname
-                  \csname XINT_shtb_#8\endcsname
-     \expandafter\XINT_unsep_clean
-     \the\numexpr1\csname XINT_shtb_#9\endcsname
-     \XINT_htb_loop_a
+             XINT_cshtb_#1%
+     \csname XINT_cshtb_#2%
+     \csname XINT_cshtb_#3%
+     \csname XINT_cshtb_#4%
+     \csname XINT_cshtb_#5%
+     \csname XINT_cshtb_#6%
+     \csname XINT_cshtb_#7%
+     \csname XINT_cshtb_#8%
+     \csname XINT_cshtb_#9%
+     \csname \XINT_htb_loop
 }%
-\def\XINT_htb_loop_a #1#2#3#4#5#6#7#8#9%
-{%
-                  \csname XINT_shtb_#1\endcsname
-     \expandafter\XINT_unsep_clean
-     \the\numexpr1\csname XINT_shtb_#2\endcsname
-                  \csname XINT_shtb_#3\endcsname
-     \expandafter\XINT_unsep_clean
-     \the\numexpr1\csname XINT_shtb_#4\endcsname
-                  \csname XINT_shtb_#5\endcsname
-     \expandafter\XINT_unsep_clean
-     \the\numexpr1\csname XINT_shtb_#6\endcsname
-                  \csname XINT_shtb_#7\endcsname
-     \expandafter\XINT_unsep_clean
-     \the\numexpr1\csname XINT_shtb_#8\endcsname
-                  \csname XINT_shtb_#9\endcsname
-     \expandafter\XINT_unsep_clean
-     \the\numexpr\XINT_htb_loop
-}%
 \def\XINT_htb_cuz #1{%
-\def\XINT_htb_cuz 1##1##2##3##4%
+\def\XINT_htb_cuz ##1##2##3##4%
    {\expandafter#1\the\numexpr##1##2##3##4\relax}%
 }\XINT_htb_cuz { }%
 \def\xintCHexToBin {\romannumeral0\xintchextobin }%
@@ -580,7 +508,7 @@
 \def\xintchextobin #1%
 {%
     \expandafter\XINT_chtb_checkin\romannumeral`&&@#1%
-    \xint_bye 23456789\xint_bye none\endcsname\relax
+    \xint_bye 23456789\xint_bye none\endcsname
 }%
 \def\XINT_chtb_checkin #1%
 {%
@@ -590,8 +518,7 @@
      \krof
 }%
 \def\XINT_chtb_N {\expandafter-\romannumeral0\XINT_chtb_main }%
-\def\XINT_chtb_main
-   {\expandafter\xint_gobble_thenstop\the\numexpr\XINT_htb_loop}%
+\def\XINT_chtb_main {\csname space\csname\XINT_htb_loop}%
 \XINT_restorecatcodes_endinput%
 \endinput
 %%

Modified: trunk/Master/texmf-dist/tex/generic/xint/xintcfrac.sty
===================================================================
--- trunk/Master/texmf-dist/tex/generic/xint/xintcfrac.sty	2017-08-07 21:08:29 UTC (rev 44974)
+++ trunk/Master/texmf-dist/tex/generic/xint/xintcfrac.sty	2017-08-07 21:08:44 UTC (rev 44975)
@@ -21,7 +21,7 @@
 %% same distribution. (The sources need not necessarily be
 %% in the same archive or directory.)
 %% ---------------------------------------------------------------
-%% The xint bundle 1.2m 2017/07/31
+%% The xint bundle 1.2n 2017/08/06
 %% Copyright (C) 2013-2017 by Jean-Francois Burnol
 %% xintcfrac: Expandable continued fractions with xint package
 %% ---------------------------------------------------------------
@@ -70,7 +70,7 @@
 \XINTsetupcatcodes% defined in xintkernel.sty
 \XINT_providespackage
 \ProvidesPackage{xintcfrac}%
-  [2017/07/31 1.2m Expandable continued fractions with xint package (JFB)]%
+  [2017/08/06 1.2n Expandable continued fractions with xint package (JFB)]%
 \def\xintCFrac {\romannumeral0\xintcfrac }%
 \def\xintcfrac #1%
 {%

Modified: trunk/Master/texmf-dist/tex/generic/xint/xintcore.sty
===================================================================
--- trunk/Master/texmf-dist/tex/generic/xint/xintcore.sty	2017-08-07 21:08:29 UTC (rev 44974)
+++ trunk/Master/texmf-dist/tex/generic/xint/xintcore.sty	2017-08-07 21:08:44 UTC (rev 44975)
@@ -21,7 +21,7 @@
 %% same distribution. (The sources need not necessarily be
 %% in the same archive or directory.)
 %% ---------------------------------------------------------------
-%% The xint bundle 1.2m 2017/07/31
+%% The xint bundle 1.2n 2017/08/06
 %% Copyright (C) 2013-2017 by Jean-Francois Burnol
 %% xintcore: Expandable arithmetic on big integers
 %% ---------------------------------------------------------------
@@ -70,7 +70,7 @@
 \XINTsetupcatcodes% defined in xintkernel.sty
 \XINT_providespackage
 \ProvidesPackage{xintcore}%
-  [2017/07/31 1.2m Expandable arithmetic on big integers (JFB)]%
+  [2017/08/06 1.2n Expandable arithmetic on big integers (JFB)]%
 \csname XINT_Clamped_istrapped\endcsname
 \csname XINT_ConversionSyntax_istrapped\endcsname
 \csname XINT_DivisionByZero_istrapped\endcsname
@@ -141,7 +141,9 @@
 \ifdefined\m at ne\let\xint_c_mone\m at ne
           \else\csname newcount\endcsname\xint_c_mone \xint_c_mone -1 \fi
 \newcount\xint_c_x^viii                  \xint_c_x^viii   100000000
-\newcount\xint_c_x^ix                      \xint_c_x^ix  1000000000
+\ifdefined\xint_c_x^ix\else
+\csname newcount\endcsname\xint_c_x^ix   \xint_c_x^ix    1000000000
+\fi
 \newcount\xint_c_x^viii_mone        \xint_c_x^viii_mone    99999999
 \newcount\xint_c_xii_e_viii          \xint_c_xii_e_viii  1200000000
 \newcount\xint_c_xi_e_viii_mone  \xint_c_xi_e_viii_mone  1099999999
@@ -446,19 +448,6 @@
     \the\numexpr #9\XINT_unsep_loop
 }%
 \def\XINT_unsep_clean 1{\relax}%
-\def\XINT_unsepb_loop #1!#2!#3!#4!#5!#6!#7!#8!#9!%
-{%
-    \expandafter\XINT_unsep_clean
-    \the\numexpr 1#1\expandafter\XINT_unsep_clean
-    \the\numexpr 1#2\expandafter\XINT_unsep_clean
-    \the\numexpr 1#3\expandafter\XINT_unsep_clean
-    \the\numexpr 1#4\expandafter\XINT_unsep_clean
-    \the\numexpr 1#5\expandafter\XINT_unsep_clean
-    \the\numexpr 1#6\expandafter\XINT_unsep_clean
-    \the\numexpr 1#7\expandafter\XINT_unsep_clean
-    \the\numexpr 1#8\expandafter\XINT_unsep_clean
-    \the\numexpr 1#9\XINT_unsepb_loop
-}%
 \def\XINT_unsep_cuzsmall
 {%
     \expandafter\XINT_unsep_cuzsmall_x\the\numexpr0\XINT_unsep_loop
@@ -502,13 +491,6 @@
 {%
     \expandafter#1\xint_gob_til_one ##2##3##4##5##6##7##8%
 }}\XINT_zeroes_forviii_end{ }%
-\def\XINT_zeroes_foriv #1#2#3#4#5#6#7#8%
-{%
-    \xint_gob_til_R #8\XINT_zeroes_foriv_end\R\XINT_zeroes_foriv
-}%
-\def\XINT_zeroes_foriv_end\R\XINT_zeroes_foriv #1#2\W
-   {\XINT_zeroes_foriv_done #1}%
-\def\XINT_zeroes_foriv_done #1\R{ #1}%
 \def\XINT_sepbyviii_Z #1#2#3#4#5#6#7#8%
 {%
     1#1#2#3#4#5#6#7#8\expandafter!\the\numexpr\XINT_sepbyviii_Z

Modified: trunk/Master/texmf-dist/tex/generic/xint/xintexpr.sty
===================================================================
--- trunk/Master/texmf-dist/tex/generic/xint/xintexpr.sty	2017-08-07 21:08:29 UTC (rev 44974)
+++ trunk/Master/texmf-dist/tex/generic/xint/xintexpr.sty	2017-08-07 21:08:44 UTC (rev 44975)
@@ -21,7 +21,7 @@
 %% same distribution. (The sources need not necessarily be
 %% in the same archive or directory.)
 %% ---------------------------------------------------------------
-%% The xint bundle 1.2m 2017/07/31
+%% The xint bundle 1.2n 2017/08/06
 %% Copyright (C) 2013-2017 by Jean-Francois Burnol
 %% xintexpr: Expandable expression parser
 %% ---------------------------------------------------------------
@@ -81,7 +81,7 @@
 \XINTsetupcatcodes%
 \XINT_providespackage
 \ProvidesPackage{xintexpr}%
-  [2017/07/31 1.2m Expandable expression parser (JFB)]%
+  [2017/08/06 1.2n Expandable expression parser (JFB)]%
 \catcode`! 11
 \let\XINT_Cmp \xintiiCmp
 \def\xint_gob_til_! #1!{}% ! with catcode 11

Modified: trunk/Master/texmf-dist/tex/generic/xint/xintfrac.sty
===================================================================
--- trunk/Master/texmf-dist/tex/generic/xint/xintfrac.sty	2017-08-07 21:08:29 UTC (rev 44974)
+++ trunk/Master/texmf-dist/tex/generic/xint/xintfrac.sty	2017-08-07 21:08:44 UTC (rev 44975)
@@ -21,7 +21,7 @@
 %% same distribution. (The sources need not necessarily be
 %% in the same archive or directory.)
 %% ---------------------------------------------------------------
-%% The xint bundle 1.2m 2017/07/31
+%% The xint bundle 1.2n 2017/08/06
 %% Copyright (C) 2013-2017 by Jean-Francois Burnol
 %% xintfrac: Expandable operations on fractions
 %% ---------------------------------------------------------------
@@ -70,7 +70,7 @@
 \XINTsetupcatcodes% defined in xintkernel.sty
 \XINT_providespackage
 \ProvidesPackage{xintfrac}%
-  [2017/07/31 1.2m Expandable operations on fractions (JFB)]%
+  [2017/08/06 1.2n Expandable operations on fractions (JFB)]%
 \def\XINT_cntSgnFork #1%
 {%
     \ifcase #1\expandafter\xint_secondofthree

Modified: trunk/Master/texmf-dist/tex/generic/xint/xintgcd.sty
===================================================================
--- trunk/Master/texmf-dist/tex/generic/xint/xintgcd.sty	2017-08-07 21:08:29 UTC (rev 44974)
+++ trunk/Master/texmf-dist/tex/generic/xint/xintgcd.sty	2017-08-07 21:08:44 UTC (rev 44975)
@@ -21,7 +21,7 @@
 %% same distribution. (The sources need not necessarily be
 %% in the same archive or directory.)
 %% ---------------------------------------------------------------
-%% The xint bundle 1.2m 2017/07/31
+%% The xint bundle 1.2n 2017/08/06
 %% Copyright (C) 2013-2017 by Jean-Francois Burnol
 %% xintgcd: Euclidean algorithm with xint package
 %% ---------------------------------------------------------------
@@ -70,7 +70,7 @@
 \XINTsetupcatcodes% defined in xintkernel.sty
 \XINT_providespackage
 \ProvidesPackage{xintgcd}%
-  [2017/07/31 1.2m Euclide algorithm with xint package (JFB)]%
+  [2017/08/06 1.2n Euclide algorithm with xint package (JFB)]%
 \def\xintGCD {\romannumeral0\xintgcd }%
 \def\xintgcd #1%
 {%

Modified: trunk/Master/texmf-dist/tex/generic/xint/xintkernel.sty
===================================================================
--- trunk/Master/texmf-dist/tex/generic/xint/xintkernel.sty	2017-08-07 21:08:29 UTC (rev 44974)
+++ trunk/Master/texmf-dist/tex/generic/xint/xintkernel.sty	2017-08-07 21:08:44 UTC (rev 44975)
@@ -21,7 +21,7 @@
 %% same distribution. (The sources need not necessarily be
 %% in the same archive or directory.)
 %% ---------------------------------------------------------------
-%% The xint bundle 1.2m 2017/07/31
+%% The xint bundle 1.2n 2017/08/06
 %% Copyright (C) 2013-2017 by Jean-Francois Burnol
 %% xintkernel: Paraphernalia for the xint packages
 %% ---------------------------------------------------------------
@@ -156,7 +156,7 @@
 \fi
 \XINT_providespackage
 \ProvidesPackage {xintkernel}%
-  [2017/07/31 1.2m Paraphernalia for the xint packages (JFB)]%
+  [2017/08/06 1.2n Paraphernalia for the xint packages (JFB)]%
 \chardef\xint_c_     0
 \chardef\xint_c_i    1
 \chardef\xint_c_ii   2

Modified: trunk/Master/texmf-dist/tex/generic/xint/xintseries.sty
===================================================================
--- trunk/Master/texmf-dist/tex/generic/xint/xintseries.sty	2017-08-07 21:08:29 UTC (rev 44974)
+++ trunk/Master/texmf-dist/tex/generic/xint/xintseries.sty	2017-08-07 21:08:44 UTC (rev 44975)
@@ -21,7 +21,7 @@
 %% same distribution. (The sources need not necessarily be
 %% in the same archive or directory.)
 %% ---------------------------------------------------------------
-%% The xint bundle 1.2m 2017/07/31
+%% The xint bundle 1.2n 2017/08/06
 %% Copyright (C) 2013-2017 by Jean-Francois Burnol
 %% xintseries: Expandable partial sums with xint package
 %% ---------------------------------------------------------------
@@ -70,7 +70,7 @@
 \XINTsetupcatcodes% defined in xintkernel.sty
 \XINT_providespackage
 \ProvidesPackage{xintseries}%
-  [2017/07/31 1.2m Expandable partial sums with xint package (JFB)]%
+  [2017/08/06 1.2n Expandable partial sums with xint package (JFB)]%
 \def\xintSeries {\romannumeral0\xintseries }%
 \def\xintseries #1#2%
 {%

Modified: trunk/Master/texmf-dist/tex/generic/xint/xinttools.sty
===================================================================
--- trunk/Master/texmf-dist/tex/generic/xint/xinttools.sty	2017-08-07 21:08:29 UTC (rev 44974)
+++ trunk/Master/texmf-dist/tex/generic/xint/xinttools.sty	2017-08-07 21:08:44 UTC (rev 44975)
@@ -21,7 +21,7 @@
 %% same distribution. (The sources need not necessarily be
 %% in the same archive or directory.)
 %% ---------------------------------------------------------------
-%% The xint bundle 1.2m 2017/07/31
+%% The xint bundle 1.2n 2017/08/06
 %% Copyright (C) 2013-2017 by Jean-Francois Burnol
 %% xinttools: Expandable and non-expandable utilities
 %% ---------------------------------------------------------------
@@ -70,7 +70,7 @@
 \XINTsetupcatcodes% defined in xintkernel.sty
 \XINT_providespackage
 \ProvidesPackage{xinttools}%
-  [2017/07/31 1.2m Expandable and non-expandable utilities (JFB)]%
+  [2017/08/06 1.2n Expandable and non-expandable utilities (JFB)]%
 \newtoks\XINT_toks
 \xint_firstofone{\let\XINT_sptoken= } %<- space here!
 \def\xintgodef  {\global\xintodef }%



More information about the tex-live-commits mailing list