summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/latex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/doc/latex')
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/accsupp.pdfbin157401 -> 157402 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/aliascnt.pdfbin139005 -> 139005 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/alphalph.pdfbin217808 -> 217808 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/atbegshi.pdfbin211441 -> 211441 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/atenddvi.pdfbin130108 -> 130108 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/attachfile2.pdfbin216300 -> 216300 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/auxhook.pdfbin134319 -> 134321 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/bigintcalc-test1.tex74
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/bigintcalc-test2.tex812
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/bigintcalc-test3.tex825
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/bigintcalc.pdfbin0 -> 303422 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/bitset-test1.tex73
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/bitset-test2.tex1080
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/bitset-test3.tex1098
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/bitset.pdfbin0 -> 645650 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/bmpsize.pdfbin294770 -> 294770 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/bookmark-example.tex2
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/bookmark.pdfbin234603 -> 235141 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/catchfile.pdfbin150132 -> 150132 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/centernot.pdfbin126097 -> 126098 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/chemarr.pdfbin130718 -> 130717 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/classlist.pdfbin127082 -> 127081 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/colonequals.pdfbin135848 -> 135848 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/dvipscol.pdfbin119357 -> 119356 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/embedfile.pdfbin183113 -> 183112 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/engord.pdfbin154333 -> 155208 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/epstopdf-test1.tex78
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/epstopdf.pdfbin133402 -> 170341 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/etexcmds.pdfbin141443 -> 141443 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/example-mycolorsetup.sty11
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/flags.pdfbin134238 -> 135731 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/grfext-test1.tex75
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/grfext-test2.tex169
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/grfext.pdfbin0 -> 156948 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/grffile.pdfbin158206 -> 158205 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/holtxdoc.pdfbin137977 -> 137980 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/hycolor.pdfbin193952 -> 193952 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/hypbmsec.pdfbin147133 -> 147133 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/hypcap.pdfbin133316 -> 133316 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/hypdestopt.pdfbin155566 -> 155566 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/hypdoc.pdfbin154552 -> 154551 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/ifdraft.pdfbin122282 -> 122281 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/iflang.pdfbin173761 -> 173760 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/ifpdf.pdfbin146943 -> 146943 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/ifvtex.pdfbin142397 -> 142396 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/infwarerr.pdfbin160830 -> 160832 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/inputenx.pdfbin492088 -> 492088 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/intcalc-test2.tex166
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/intcalc-test3.tex166
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/intcalc-test4.tex30
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/intcalc.pdfbin268205 -> 287350 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/kvoptions-test1.tex78
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/kvoptions.pdfbin246955 -> 260011 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/kvsetkeys-example.tex3
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/kvsetkeys-test1.tex3
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/kvsetkeys-test2.tex264
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/kvsetkeys-test3.tex267
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/kvsetkeys.pdfbin166204 -> 196439 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/makerobust.pdfbin124089 -> 124089 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/oberdiek.pdfbin635272 -> 688539 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/pagesel.pdfbin160335 -> 160335 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/pdfcol.pdfbin158106 -> 158106 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/pdfcolfoot.pdfbin143797 -> 143798 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/pdfcolmk.pdfbin161332 -> 161332 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/pdfcolparallel.pdfbin154332 -> 154332 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/pdfcolparcolumns.pdfbin147283 -> 147283 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/pdfcrypt.pdfbin164853 -> 164852 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/pdfescape.pdfbin211708 -> 211708 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/pdflscape.pdfbin144331 -> 144331 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/picture.pdfbin142011 -> 142013 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/pmboxdraw.pdfbin182728 -> 182728 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/refcount.pdfbin135489 -> 135489 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/selinput.pdfbin516819 -> 516819 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/setouterhbox.pdfbin172769 -> 172767 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/settobox.pdfbin143588 -> 143587 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/soulutf8.pdfbin218887 -> 218888 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/stackrel.pdfbin129620 -> 129620 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/stringenc.pdfbin410699 -> 410700 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/tabularht.pdfbin169045 -> 169045 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/tabularkv.pdfbin119401 -> 119401 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/telprint.pdfbin151195 -> 151195 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/transparent.pdfbin126894 -> 126895 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/twoopt.pdfbin137949 -> 137949 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/zref.pdfbin293230 -> 293231 bytes
84 files changed, 5255 insertions, 19 deletions
diff --git a/Master/texmf-dist/doc/latex/oberdiek/accsupp.pdf b/Master/texmf-dist/doc/latex/oberdiek/accsupp.pdf
index d8f232c2205..721c61b3c8f 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/accsupp.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/accsupp.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/aliascnt.pdf b/Master/texmf-dist/doc/latex/oberdiek/aliascnt.pdf
index 5cb281e2c94..64d2075f792 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/aliascnt.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/aliascnt.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/alphalph.pdf b/Master/texmf-dist/doc/latex/oberdiek/alphalph.pdf
index 80b0d68e2a3..5ecde69c044 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/alphalph.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/alphalph.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/atbegshi.pdf b/Master/texmf-dist/doc/latex/oberdiek/atbegshi.pdf
index e514d3da4ad..4b0ca47d8db 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/atbegshi.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/atbegshi.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/atenddvi.pdf b/Master/texmf-dist/doc/latex/oberdiek/atenddvi.pdf
index c03fe6d863a..8bb1df67130 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/atenddvi.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/atenddvi.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/attachfile2.pdf b/Master/texmf-dist/doc/latex/oberdiek/attachfile2.pdf
index 5b1c5a51921..436d28e819e 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/attachfile2.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/attachfile2.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/auxhook.pdf b/Master/texmf-dist/doc/latex/oberdiek/auxhook.pdf
index df9b3d31017..c22e69a0bde 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/auxhook.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/auxhook.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/bigintcalc-test1.tex b/Master/texmf-dist/doc/latex/oberdiek/bigintcalc-test1.tex
new file mode 100644
index 00000000000..acedbc7d1bf
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/oberdiek/bigintcalc-test1.tex
@@ -0,0 +1,74 @@
+%%
+%% This is file `bigintcalc-test1.tex',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% bigintcalc.dtx (with options: `test1')
+%%
+%% This is a generated file.
+%%
+%% Copyright (C) 2007 by Heiko Oberdiek <oberdiek@uni-freiburg.de>
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any later
+%% version. The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% This Current Maintainer of this work is Heiko Oberdiek.
+%%
+%% This work consists of the main source file bigintcalc.dtx
+%% and the derived files
+%% bigintcalc.sty, bigintcalc.pdf, bigintcalc.ins, bigintcalc.drv,
+%% bigintcalc-test1.tex, bigintcalc-test2.tex,
+%% bigintcalc-test3.tex.
+%%
+\catcode`\@=11 %
+\def\RestoreCatcodes{}
+\count@=0 %
+\loop
+ \edef\RestoreCatcodes{%
+ \RestoreCatcodes
+ \catcode\the\count@=\the\catcode\count@\relax
+ }%
+\ifnum\count@<255 %
+ \advance\count@\@ne
+\repeat
+
+\def\RangeCatcodeInvalid#1#2{%
+ \count@=#1\relax
+ \loop
+ \catcode\count@=15 %
+ \ifnum\count@<#2\relax
+ \advance\count@\@ne
+ \repeat
+}
+\def\Test{%
+ \RangeCatcodeInvalid{0}{47}%
+ \RangeCatcodeInvalid{58}{64}%
+ \RangeCatcodeInvalid{91}{96}%
+ \RangeCatcodeInvalid{123}{255}%
+ \catcode`\@=12 %
+ \catcode`\\=0 %
+ \catcode`\{=1 %
+ \catcode`\}=2 %
+ \catcode`\#=6 %
+ \catcode`\[=12 %
+ \catcode`\]=12 %
+ \catcode`\%=14 %
+ \catcode`\ =10 %
+ \catcode13=5 %
+ \input bigintcalc.sty\relax
+ \RestoreCatcodes
+}
+\Test
+\csname @@end\endcsname
+\end
+\endinput
+%%
+%% End of file `bigintcalc-test1.tex'.
diff --git a/Master/texmf-dist/doc/latex/oberdiek/bigintcalc-test2.tex b/Master/texmf-dist/doc/latex/oberdiek/bigintcalc-test2.tex
new file mode 100644
index 00000000000..3d34ec0e48f
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/oberdiek/bigintcalc-test2.tex
@@ -0,0 +1,812 @@
+%%
+%% This is file `bigintcalc-test2.tex',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% bigintcalc.dtx (with options: `test2,etex')
+%%
+%% This is a generated file.
+%%
+%% Copyright (C) 2007 by Heiko Oberdiek <oberdiek@uni-freiburg.de>
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any later
+%% version. The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% This Current Maintainer of this work is Heiko Oberdiek.
+%%
+%% This work consists of the main source file bigintcalc.dtx
+%% and the derived files
+%% bigintcalc.sty, bigintcalc.pdf, bigintcalc.ins, bigintcalc.drv,
+%% bigintcalc-test1.tex, bigintcalc-test2.tex,
+%% bigintcalc-test3.tex.
+%%
+\NeedsTeXFormat{LaTeX2e}
+\nofiles
+\documentclass{article}
+\makeatletter
+\chardef\BIC@TestMode=1 %
+\makeatother
+\usepackage{bigintcalc}[2007/09/27]
+\usepackage{qstest}
+\IncludeTests{*}
+\LogTests{log}{*}{*}
+\newcommand*{\TestSpaceAtEnd}[1]{%
+ \edef\resultA{#1}%
+ \edef\resultB{#1 }%
+ \Expect*{\resultA\space}*{\resultB}%
+}
+\newcommand*{\TestResult}[2]{%
+ \edef\result{#1}%
+ \Expect*{\result}{#2}%
+}
+\newcommand*{\TestResultTwoExpansions}[2]{%
+ \expandafter\expandafter\expandafter\Expect
+ \expandafter\expandafter\expandafter{#1}{#2}%
+}
+\newcount\TestCount
+\newcommand*{\TestArg}[1]{\numexpr#1\relax}
+\newcommand*{\TestTeXDivide}[2]{%
+ \TestCount=\TestArg{#1}\relax
+ \divide\TestCount by \TestArg{#2}\relax
+ \Expect*{\bigintcalcDiv{#1}{#2}}*{\the\TestCount}%
+}
+\newcommand*{\Test}[2]{%
+ \TestResult{#1}{#2}%
+ \TestResultTwoExpansions{#1}{#2}%
+ \TestSpaceAtEnd{#1}%
+}
+\newcommand*{\TestExch}[2]{\Test{#2}{#1}}
+\newcommand*{\TestInv}[2]{%
+ \Test{\bigintcalcInv{#1}}{#2}%
+}
+\newcommand*{\TestAbs}[2]{%
+ \Test{\bigintcalcAbs{#1}}{#2}%
+}
+\newcommand*{\TestSgn}[2]{%
+ \Test{\bigintcalcSgn{#1}}{#2}%
+}
+\newcommand*{\TestMin}[3]{%
+ \Test{\bigintcalcMin{#1}{#2}}{#3}%
+}
+\newcommand*{\TestMax}[3]{%
+ \Test{\bigintcalcMax{#1}{#2}}{#3}%
+}
+\newcommand*{\TestCmp}[3]{%
+ \Test{\bigintcalcCmp{#1}{#2}}{#3}%
+}
+\newcommand*{\TestOdd}[2]{%
+ \Test{\bigintcalcOdd{#1}}{#2}%
+ \edef\x{%
+ \noexpand\Test{%
+ \noexpand\BigIntCalcOdd
+ \bigintcalcAbs{#1}!%
+ }{#2}%
+ }%
+ \x
+}
+\newcommand*{\TestInc}[2]{%
+ \Test{\bigintcalcInc{#1}}{#2}%
+ \ifnum\bigintcalcSgn{#1}>-1 %
+ \edef\x{%
+ \noexpand\Test{%
+ \noexpand\BigIntCalcInc\bigintcalcNum{#1}!%
+ }{#2}%
+ }%
+ \x
+ \fi
+}
+\newcommand*{\TestDec}[2]{%
+ \Test{\bigintcalcDec{#1}}{#2}%
+ \ifnum\bigintcalcSgn{#1}>0 %
+ \edef\x{%
+ \noexpand\Test{%
+ \noexpand\BigIntCalcDec\bigintcalcNum{#1}!%
+ }{#2}%
+ }%
+ \x
+ \fi
+}
+\newcommand*{\TestAdd}[3]{%
+ \Test{\bigintcalcAdd{#1}{#2}}{#3}%
+ \ifnum\bigintcalcSgn{#1}>0 %
+ \ifnum\bigintcalcSgn{#2}> 0 %
+ \ifnum\bigintcalcCmp{#1}{#2}>0 %
+ \edef\x{%
+ \noexpand\Test{%
+ \noexpand\BigIntCalcAdd
+ \bigintcalcNum{#1}!\bigintcalcNum{#2}!%
+ }{#3}%
+ }%
+ \x
+ \else
+ \edef\x{%
+ \noexpand\Test{%
+ \noexpand\BigIntCalcAdd
+ \bigintcalcNum{#2}!\bigintcalcNum{#1}!%
+ }{#3}%
+ }%
+ \x
+ \fi
+ \fi
+ \fi
+}
+\newcommand*{\TestSub}[3]{%
+ \Test{\bigintcalcSub{#1}{#2}}{#3}%
+ \ifnum\bigintcalcSgn{#1}>0 %
+ \ifnum\bigintcalcSgn{#2}> 0 %
+ \ifnum\bigintcalcCmp{#1}{#2}>0 %
+ \edef\x{%
+ \noexpand\Test{%
+ \noexpand\BigIntCalcSub
+ \bigintcalcNum{#1}!\bigintcalcNum{#2}!%
+ }{#3}%
+ }%
+ \x
+ \fi
+ \fi
+ \fi
+}
+\newcommand*{\TestShl}[2]{%
+ \Test{\bigintcalcShl{#1}}{#2}%
+ \edef\x{%
+ \noexpand\Test{%
+ \noexpand\BigIntCalcShl\bigintcalcAbs{#1}!%
+ }{\bigintcalcAbs{#2}}%
+ }%
+ \x
+}
+\newcommand*{\TestShr}[2]{%
+ \Test{\bigintcalcShr{#1}}{#2}%
+ \edef\x{%
+ \noexpand\Test{%
+ \noexpand\BigIntCalcShr\bigintcalcAbs{#1}!%
+ }{\bigintcalcAbs{#2}}%
+ }%
+ \x
+}
+\newcommand*{\TestMul}[3]{%
+ \Test{\bigintcalcMul{#1}{#2}}{#3}%
+ \edef\x{%
+ \noexpand\Test{%
+ \noexpand\BigIntCalcMul
+ \bigintcalcAbs{#1}!\bigintcalcAbs{#2}!%
+ }{\bigintcalcAbs{#3}}%
+ }%
+ \x
+}
+\newcommand*{\TestSqr}[2]{%
+ \Test{\bigintcalcSqr{#1}}{#2}%
+}
+\newcommand*{\TestFac}[2]{%
+ \expandafter\TestExch\expandafter{%
+ \the\numexpr#2%
+ }{\bigintcalcFac{#1}}%
+}
+\newcommand*{\TestFacBig}[2]{%
+ \Test{\bigintcalcFac{#1}}{#2}%
+}
+\newcommand*{\TestPow}[3]{%
+ \Test{\bigintcalcPow{#1}{#2}}{#3}%
+}
+\newcommand*{\TestDiv}[3]{%
+ \Test{\bigintcalcDiv{#1}{#2}}{#3}%
+ \TestTeXDivide{#1}{#2}%
+}
+\newcommand*{\TestDivBig}[3]{%
+ \Test{\bigintcalcDiv{#1}{#2}}{#3}%
+ \edef\x{%
+ \noexpand\Test{%
+ \noexpand\BigIntCalcDiv\bigintcalcAbs{#1}!\bigintcalcAbs{#2}!%
+ }{\bigintcalcAbs{#3}}%
+ }%
+}
+\newcommand*{\TestMod}[3]{%
+ \Test{\bigintcalcMod{#1}{#2}}{#3}%
+ \ifcase\ifcase\bigintcalcSgn{#1} 0%
+ \or
+ \ifcase\bigintcalcSgn{#2} 1%
+ \or 0%
+ \else 1%
+ \fi
+ \else
+ \ifcase\bigintcalcSgn{#2} 1%
+ \or 1%
+ \else 0%
+ \fi
+ \fi\relax
+ \edef\x{%
+ \noexpand\Test{%
+ \noexpand\BigIntCalcMod
+ \bigintcalcAbs{#1}!\bigintcalcAbs{#2}!%
+ }{\bigintcalcAbs{#3}}%
+ }%
+ \x
+ \fi
+}
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname pdfresettimer\endcsname\relax
+\else
+ \makeatletter
+ \newcount\SummaryTime
+ \newcount\TestTime
+ \SummaryTime=\z@
+ \newcommand*{\PrintTime}[2]{%
+ \typeout{%
+ [Time #1: \strip@pt\dimexpr\number#2sp\relax\space s]%
+ }%
+ }%
+ \newcommand*{\StartTime}[1]{%
+ \renewcommand*{\TimeDescription}{#1}%
+ \pdfresettimer
+ }%
+ \newcommand*{\TimeDescription}{}%
+ \newcommand*{\StopTime}{%
+ \TestTime=\pdfelapsedtime
+ \global\advance\SummaryTime\TestTime
+ \PrintTime\TimeDescription\TestTime
+ }%
+ \let\saved@qstest\qstest
+ \let\saved@endqstest\endqstest
+ \def\qstest#1#2{%
+ \saved@qstest{#1}{#2}%
+ \StartTime{#1}%
+ }%
+ \def\endqstest{%
+ \StopTime
+ \saved@endqstest
+ }%
+ \AtEndDocument{%
+ \PrintTime{summary}\SummaryTime
+ }%
+ \makeatother
+\fi
+\makeatletter
+
+\begin{qstest}{inv}{inv}%
+ \TestInv{0}{0}%
+ \TestInv{1}{-1}%
+ \TestInv{-1}{1}%
+ \TestInv{10}{-10}%
+ \TestInv{-10}{10}%
+ \TestInv{2147483647}{-2147483647}%
+ \TestInv{-2147483647}{2147483647}%
+ \TestInv{12345678901234567890}{-12345678901234567890}%
+ \TestInv{-12345678901234567890}{12345678901234567890}%
+ \TestInv{ 0 }{0}%
+ \TestInv{ 1 }{-1}%
+ \TestInv{--1}{-1}%
+ \TestInv{\number\z@}{0}%
+ \TestInv{\ifx\relax\relax1\fi}{-1}%
+ \TestInv{\ifx\relax\relax-\fi\ifx234\else1\fi}{1}%
+\end{qstest}
+
+\begin{qstest}{abs}{abs}%
+ \TestAbs{0}{0}%
+ \TestAbs{1}{1}%
+ \TestAbs{-1}{1}%
+ \TestAbs{10}{10}%
+ \TestAbs{-10}{10}%
+ \TestAbs{2147483647}{2147483647}%
+ \TestAbs{-2147483647}{2147483647}%
+ \TestAbs{12345678901234567890}{12345678901234567890}%
+ \TestAbs{-12345678901234567890}{12345678901234567890}%
+ \TestAbs{ 0 }{0}%
+ \TestAbs{ 1 }{1}%
+ \TestAbs{--1}{1}%
+ \TestAbs{-+-+1}{1}%
+ \TestAbs{00000000000}{0}%
+ \TestAbs{00000001000}{1000}%
+ \TestAbs{\ifx\relax\relax 0\else 1\fi}{0}%
+\end{qstest}
+
+\begin{qstest}{sign}{sign}%
+ \TestSgn{0}{0}%
+ \TestSgn{1}{1}%
+ \TestSgn{-1}{-1}%
+ \TestSgn{10}{1}%
+ \TestSgn{-10}{-1}%
+ \TestSgn{2147483647}{1}%
+ \TestSgn{-2147483647}{-1}%
+ \TestSgn{12345678901234567890}{1}%
+ \TestSgn{-12345678901234567890}{-1}%
+ \TestSgn{ 0 }{0}%
+ \TestSgn{ 2 }{1}%
+ \TestSgn{ -2 }{-1}%
+ \TestSgn{--2}{1}%
+ \TestSgn{\number\z@}{0}%
+ \TestSgn{\number\@ne}{1}%
+ \TestSgn{\number\m@ne}{-1}%
+ \TestSgn{%
+ -+-+\number\z@\number\z@
+ \iftrue1\fi\iftrue2\fi\iftrue3\fi
+ }{1}%
+\end{qstest}
+
+\begin{qstest}{min}{min}%
+ \TestMin{0}{1}{0}%
+ \TestMin{1}{0}{0}%
+ \TestMin{-10}{-20}{-20}%
+ \TestMin{ 1 }{ 2 }{1}%
+ \TestMin{ 2 }{ 1 }{1}%
+ \TestMin{1}{1}{1}%
+ \TestMin{\number\z@}{\number\@ne}{0}%
+ \TestMin{\number\@ne}{\number\m@ne}{-1}%
+\end{qstest}
+
+\begin{qstest}{max}{max}%
+ \TestMax{0}{1}{1}%
+ \TestMax{1}{0}{1}%
+ \TestMax{-10}{-20}{-10}%
+ \TestMax{ 1 }{ 2 }{2}%
+ \TestMax{ 2 }{ 1 }{2}%
+ \TestMax{1}{1}{1}%
+ \TestMax{\number\z@}{\number\@ne}{1}%
+ \TestMax{\number\@ne}{\number\m@ne}{1}%
+\end{qstest}
+
+\begin{qstest}{cmp}{cmp}%
+ \TestCmp{0}{0}{0}%
+ \TestCmp{-21}{17}{-1}%
+ \TestCmp{3}{4}{-1}%
+ \TestCmp{-10}{-10}{0}%
+ \TestCmp{-10}{-11}{1}%
+ \TestCmp{100}{5}{1}%
+ \TestCmp{9}{10}{-1}%
+ \TestCmp{10}{9}{1}%
+ \TestCmp{ 3 }{ 3 }{0}%
+ \TestCmp{-9}{-10}{1}%
+ \TestCmp{-10}{-9}{-1}%
+ \TestCmp{-3}{-3}{0}%
+ \TestCmp{0}{-2}{1}%
+ \TestCmp{0}{2}{-1}%
+ \TestCmp{2}{0}{1}%
+ \TestCmp{-2}{0}{-1}%
+ \TestCmp{12}{11}{1}%
+ \TestCmp{11}{12}{-1}%
+ \TestCmp{2147483647}{-2147483647}{1}%
+ \TestCmp{-2147483647}{2147483647}{-1}%
+ \TestCmp{2147483647}{2147483647}{0}%
+ \TestCmp{\number\z@}{\number\@ne}{-1}%
+ \TestCmp{\number\@ne}{\number\m@ne}{1}%
+ \TestCmp{ 4 }{ 5 }{-1}%
+ \TestCmp{ -3 }{ -7 }{1}%
+\end{qstest}
+
+\begin{qstest}{odd}{odd}
+\tracingmacros=1
+ \TestOdd{0}{0}%
+ \TestOdd{1}{1}%
+ \TestOdd{2}{0}%
+ \TestOdd{3}{1}%
+ \TestOdd{14}{0}%
+ \TestOdd{15}{1}%
+ \TestOdd{12345678901234567896}{0}%
+ \TestOdd{12345678901234567897}{1}%
+\end{qstest}
+
+\begin{qstest}{inc}{inc}%
+ \TestInc{0}{1}%
+ \TestInc{1}{2}%
+ \TestInc{-1}{0}%
+ \TestInc{10}{11}%
+ \TestInc{-10}{-9}%
+ \TestInc{ 3 }{4}%
+ \TestInc{999}{1000}%
+ \TestInc{-1000}{-999}%
+ \TestInc{129}{130}%
+ \TestInc{2147483646}{2147483647}%
+ \TestInc{-2147483647}{-2147483646}%
+ \TestInc{12345678901234567890}{12345678901234567891}%
+ \TestInc{99999999999999999999}{100000000000000000000}%
+ \TestInc{-12345678901234567891}{-12345678901234567890}%
+ \TestInc{-100000000000000000000}{-99999999999999999999}%
+\end{qstest}
+
+\begin{qstest}{dec}{dec}%
+ \TestDec{0}{-1}%
+ \TestDec{1}{0}%
+ \TestDec{-1}{-2}%
+ \TestDec{10}{9}%
+ \TestDec{-10}{-11}%
+ \TestDec{1000}{999}%
+ \TestDec{-999}{-1000}%
+ \TestDec{130}{129}%
+ \TestDec{2147483647}{2147483646}%
+ \TestDec{-2147483646}{-2147483647}%
+ \TestDec{12345678901234567891}{12345678901234567890}%
+ \TestDec{100000000000000000000}{99999999999999999999}%
+ \TestDec{-12345678901234567890}{-12345678901234567891}%
+ \TestDec{-99999999999999999999}{-100000000000000000000}%
+\end{qstest}
+
+\begin{qstest}{add}{add}%
+ \TestAdd{0}{0}{0}%
+ \TestAdd{1}{0}{1}%
+ \TestAdd{0}{1}{1}%
+ \TestAdd{1}{2}{3}%
+ \TestAdd{-1}{-1}{-2}%
+ \TestAdd{2147483646}{1}{2147483647}%
+ \TestAdd{-2147483647}{2147483647}{0}%
+ \TestAdd{20}{-5}{15}%
+ \TestAdd{-4}{-1}{-5}%
+ \TestAdd{-1}{-4}{-5}%
+ \TestAdd{-4}{1}{-3}%
+ \TestAdd{-1}{4}{3}%
+ \TestAdd{4}{-1}{3}%
+ \TestAdd{1}{-4}{-3}%
+ \TestAdd{-4}{-1}{-5}%
+ \TestAdd{-1}{-4}{-5}%
+ \TestAdd{ -4 }{ -1 }{-5}%
+ \TestAdd{ -1 }{ -4 }{-5}%
+ \TestAdd{ -4 }{ 1 }{-3}%
+ \TestAdd{ -1 }{ 4 }{3}%
+ \TestAdd{ 4 }{ -1 }{3}%
+ \TestAdd{ 1 }{ -4 }{-3}%
+ \TestAdd{ -4 }{ -1 }{-5}%
+ \TestAdd{ -1 }{ -4 }{-5}%
+ \TestAdd{876543210}{111111111}{987654321}%
+ \TestAdd{999999999}{2}{1000000001}%
+\end{qstest}
+
+\begin{qstest}{sub}{sub}
+ \TestSub{0}{0}{0}%
+ \TestSub{1}{0}{1}%
+ \TestSub{1}{2}{-1}%
+ \TestSub{-1}{-1}{0}%
+ \TestSub{2147483646}{-1}{2147483647}%
+ \TestSub{-2147483647}{-2147483647}{0}%
+ \TestSub{-4}{-1}{-3}%
+ \TestSub{-1}{-4}{3}%
+ \TestSub{-4}{1}{-5}%
+ \TestSub{-1}{4}{-5}%
+ \TestSub{4}{-1}{5}%
+ \TestSub{1}{-4}{5}%
+ \TestSub{-4}{-1}{-3}%
+ \TestSub{-1}{-4}{3}%
+ \TestSub{ -4 }{ -1 }{-3}%
+ \TestSub{ -1 }{ -4 }{3}%
+ \TestSub{ -4 }{ 1 }{-5}%
+ \TestSub{ -1 }{ 4 }{-5}%
+ \TestSub{ 4 }{ -1 }{5}%
+ \TestSub{ 1 }{ -4 }{5}%
+ \TestSub{ -4 }{ -1 }{-3}%
+ \TestSub{ -1 }{ -4 }{3}%
+ \TestSub{1000000000}{2}{999999998}%
+ \TestSub{987654321}{111111111}{876543210}%
+\end{qstest}
+
+\begin{qstest}{shl}{shl}
+ \TestShl{0}{0}%
+ \TestShl{1}{2}%
+ \TestShl{2}{4}%
+ \TestShl{5621}{11242}%
+ \TestShl{1073741823}{2147483646}%
+\end{qstest}
+
+\begin{qstest}{shr}{shr}
+ \TestShr{0}{0}%
+ \TestShr{1}{0}%
+ \TestShr{2}{1}%
+ \TestShr{3}{1}%
+ \TestShr{4}{2}%
+ \TestShr{5}{2}%
+ \TestShr{6}{3}%
+ \TestShr{7}{3}%
+ \TestShr{8}{4}%
+ \TestShr{9}{4}%
+ \TestShr{10}{5}%
+ \TestShr{11}{5}%
+ \TestShr{12}{6}%
+ \TestShr{13}{6}%
+ \TestShr{14}{7}%
+ \TestShr{15}{7}%
+ \TestShr{16}{8}%
+ \TestShr{17}{8}%
+ \TestShr{18}{9}%
+ \TestShr{19}{9}%
+ \TestShr{20}{10}%
+ \TestShr{21}{10}%
+ \TestShr{22}{11}%
+ \TestShr{11241}{5620}%
+ \TestShr{73054202}{36527101}%
+ \TestShr{2147483646}{1073741823}%
+\end{qstest}
+
+\begin{qstest}{mul}{mul}
+ \TestMul{0}{0}{0}%
+ \TestMul{1}{0}{0}%
+ \TestMul{0}{1}{0}%
+ \TestMul{1}{1}{1}%
+ \TestMul{3}{1}{3}%
+ \TestMul{1}{-3}{-3}%
+ \TestMul{-4}{-5}{20}%
+ \TestMul{3}{7}{21}%
+ \TestMul{7}{3}{21}%
+ \TestMul{3}{-7}{-21}%
+ \TestMul{7}{-3}{-21}%
+ \TestMul{-3}{7}{-21}%
+ \TestMul{-7}{3}{-21}%
+ \TestMul{-3}{-7}{21}%
+ \TestMul{-7}{-3}{21}%
+ \TestMul{12}{11}{132}%
+ \TestMul{999}{333}{332667}%
+ \TestMul{1000}{4321}{4321000}%
+ \TestMul{12345}{173955}{2147474475}%
+ \TestMul{1073741823}{2}{2147483646}%
+ \TestMul{2}{1073741823}{2147483646}%
+ \TestMul{-1073741823}{2}{-2147483646}%
+ \TestMul{2}{-1073741823}{-2147483646}%
+ \TestMul{6706022400}{13}{87178291200}%
+\end{qstest}
+
+\begin{qstest}{sqr}{sqr}
+ \TestSqr{0}{0}%
+ \TestSqr{1}{1}%
+ \TestSqr{2}{4}%
+ \TestSqr{3}{9}%
+ \TestSqr{4}{16}%
+ \TestSqr{9}{81}%
+ \TestSqr{10}{100}%
+ \TestSqr{46340}{2147395600}%
+ \TestSqr{-1}{1}%
+ \TestSqr{-2}{4}%
+ \TestSqr{-46340}{2147395600}%
+\end{qstest}
+
+\begin{qstest}{fac}{fac}
+ \TestFac{0}{1}%
+ \TestFac{1}{1}%
+ \TestFac{2}{2}%
+ \TestFac{3}{2*3}%
+ \TestFac{4}{2*3*4}%
+ \TestFac{5}{2*3*4*5}%
+ \TestFac{6}{2*3*4*5*6}%
+ \TestFac{7}{2*3*4*5*6*7}%
+ \TestFac{8}{2*3*4*5*6*7*8}%
+ \TestFac{9}{2*3*4*5*6*7*8*9}%
+ \TestFac{10}{2*3*4*5*6*7*8*9*10}%
+ \TestFac{11}{2*3*4*5*6*7*8*9*10*11}%
+ \TestFac{12}{2*3*4*5*6*7*8*9*10*11*12}%
+ \TestFacBig{13}{6227020800}%
+ \TestFacBig{14}{87178291200}%
+ \TestFacBig{15}{1307674368000}%
+ \TestFacBig{16}{20922789888000}%
+ \TestFacBig{17}{355687428096000}%
+ \TestFacBig{18}{6402373705728000}%
+ \TestFacBig{19}{121645100408832000}%
+ \TestFacBig{20}{2432902008176640000}%
+ \TestFacBig{21}{51090942171709440000}%
+ \TestFacBig{22}{1124000727777607680000}%
+\end{qstest}
+
+\begin{qstest}{pow}{pow}
+ \TestPow{-2}{0}{1}%
+ \TestPow{-1}{0}{1}%
+ \TestPow{0}{0}{1}%
+ \TestPow{1}{0}{1}%
+ \TestPow{2}{0}{1}%
+ \TestPow{3}{0}{1}%
+ \TestPow{-2}{1}{-2}%
+ \TestPow{-1}{1}{-1}%
+ \TestPow{1}{1}{1}%
+ \TestPow{2}{1}{2}%
+ \TestPow{3}{1}{3}%
+ \TestPow{-2}{2}{4}%
+ \TestPow{-1}{2}{1}%
+ \TestPow{0}{2}{0}%
+ \TestPow{1}{2}{1}%
+ \TestPow{2}{2}{4}%
+ \TestPow{3}{2}{9}%
+ \TestPow{0}{1}{0}%
+ \TestPow{1}{-2}{1}%
+ \TestPow{1}{-1}{1}%
+ \TestPow{-1}{-2}{1}%
+ \TestPow{-1}{-1}{-1}%
+ \TestPow{-1}{3}{-1}%
+ \TestPow{-1}{4}{1}%
+ \TestPow{-2}{-1}{0}%
+ \TestPow{-2}{-2}{0}%
+ \TestPow{2}{3}{8}%
+ \TestPow{2}{4}{16}%
+ \TestPow{2}{5}{32}%
+ \TestPow{2}{6}{64}%
+ \TestPow{2}{7}{128}%
+ \TestPow{2}{8}{256}%
+ \TestPow{2}{9}{512}%
+ \TestPow{2}{10}{1024}%
+ \TestPow{-2}{3}{-8}%
+ \TestPow{-2}{4}{16}%
+ \TestPow{-2}{5}{-32}%
+ \TestPow{-2}{6}{64}%
+ \TestPow{-2}{7}{-128}%
+ \TestPow{-2}{8}{256}%
+ \TestPow{-2}{9}{-512}%
+ \TestPow{-2}{10}{1024}%
+ \TestPow{3}{3}{27}%
+ \TestPow{3}{4}{81}%
+ \TestPow{3}{5}{243}%
+ \TestPow{-3}{3}{-27}%
+ \TestPow{-3}{4}{81}%
+ \TestPow{-3}{5}{-243}%
+ \TestPow{2}{30}{1073741824}%
+ \TestPow{-3}{19}{-1162261467}%
+ \TestPow{5}{13}{1220703125}%
+ \TestPow{-7}{11}{-1977326743}%
+\end{qstest}
+
+\begin{qstest}{div}{div}
+ \TestDiv{1}{1}{1}%
+ \TestDiv{2}{1}{2}%
+ \TestDiv{-2}{1}{-2}%
+ \TestDiv{2}{-1}{-2}%
+ \TestDiv{-2}{-1}{2}%
+ \TestDiv{15}{2}{7}%
+ \TestDiv{-16}{2}{-8}%
+ \TestDiv{1}{2}{0}%
+ \TestDiv{1}{3}{0}%
+ \TestDiv{2}{3}{0}%
+ \TestDiv{-2}{3}{0}%
+ \TestDiv{2}{-3}{0}%
+ \TestDiv{-2}{-3}{0}%
+ \TestDiv{13}{3}{4}%
+ \TestDiv{-13}{-3}{4}%
+ \TestDiv{-13}{3}{-4}%
+ \TestDiv{-6}{5}{-1}%
+ \TestDiv{-5}{5}{-1}%
+ \TestDiv{-4}{5}{0}%
+ \TestDiv{-3}{5}{0}%
+ \TestDiv{-2}{5}{0}%
+ \TestDiv{-1}{5}{0}%
+ \TestDiv{0}{5}{0}%
+ \TestDiv{1}{5}{0}%
+ \TestDiv{2}{5}{0}%
+ \TestDiv{3}{5}{0}%
+ \TestDiv{4}{5}{0}%
+ \TestDiv{5}{5}{1}%
+ \TestDiv{6}{5}{1}%
+ \TestDiv{-5}{4}{-1}%
+ \TestDiv{-4}{4}{-1}%
+ \TestDiv{-3}{4}{0}%
+ \TestDiv{-2}{4}{0}%
+ \TestDiv{-1}{4}{0}%
+ \TestDiv{0}{4}{0}%
+ \TestDiv{1}{4}{0}%
+ \TestDiv{2}{4}{0}%
+ \TestDiv{3}{4}{0}%
+ \TestDiv{4}{4}{1}%
+ \TestDiv{5}{4}{1}%
+ \TestDiv{12345}{678}{18}%
+ \TestDiv{32372}{5952}{5}%
+ \TestDiv{284271294}{18162}{15651}%
+ \TestDiv{217652429}{12561}{17327}%
+ \TestDiv{462028434}{5439}{84947}%
+ \TestDiv{2147483647}{1000}{2147483}%
+ \TestDiv{2147483647}{-1000}{-2147483}%
+ \TestDiv{-2147483647}{1000}{-2147483}%
+ \TestDiv{-2147483647}{-1000}{2147483}%
+ \TestDiv{0}{3}{0}%
+ \TestDiv{1}{3}{0}%
+ \TestDiv{2}{3}{0}%
+ \TestDiv{3}{3}{1}%
+ \TestDiv{4}{3}{1}%
+ \TestDiv{5}{3}{1}%
+ \TestDiv{6}{3}{2}%
+ \TestDiv{7}{3}{2}%
+ \TestDiv{8}{3}{2}%
+ \TestDiv{9}{3}{3}%
+ \TestDiv{10}{3}{3}%
+ \TestDiv{11}{3}{3}%
+ \TestDiv{12}{3}{4}%
+ \TestDiv{13}{3}{4}%
+ \TestDiv{14}{3}{4}%
+ \TestDiv{15}{3}{5}%
+ \TestDiv{16}{3}{5}%
+ \TestDiv{17}{3}{5}%
+ \TestDiv{18}{3}{6}%
+ \TestDiv{19}{3}{6}%
+ \TestDiv{20}{3}{6}%
+ \TestDiv{21}{3}{7}%
+ \TestDiv{22}{3}{7}%
+ \TestDiv{23}{3}{7}%
+ \TestDiv{24}{3}{8}%
+ \TestDiv{25}{3}{8}%
+ \TestDiv{26}{3}{8}%
+ \TestDiv{27}{3}{9}%
+ \TestDiv{28}{3}{9}%
+ \TestDiv{29}{3}{9}%
+ \TestDiv{30}{3}{10}%
+ \TestDiv{31}{3}{10}%
+ \TestDivBig{17363436332507}{24702}{702916214}%
+\end{qstest}
+
+\begin{qstest}{mod}{mod}
+ \TestMod{-6}{5}{4}%
+ \TestMod{-5}{5}{0}%
+ \TestMod{-4}{5}{1}%
+ \TestMod{-3}{5}{2}%
+ \TestMod{-2}{5}{3}%
+ \TestMod{-1}{5}{4}%
+ \TestMod{0}{5}{0}%
+ \TestMod{1}{5}{1}%
+ \TestMod{2}{5}{2}%
+ \TestMod{3}{5}{3}%
+ \TestMod{4}{5}{4}%
+ \TestMod{5}{5}{0}%
+ \TestMod{6}{5}{1}%
+ \TestMod{-5}{4}{3}%
+ \TestMod{-4}{4}{0}%
+ \TestMod{-3}{4}{1}%
+ \TestMod{-2}{4}{2}%
+ \TestMod{-1}{4}{3}%
+ \TestMod{0}{4}{0}%
+ \TestMod{1}{4}{1}%
+ \TestMod{2}{4}{2}%
+ \TestMod{3}{4}{3}%
+ \TestMod{4}{4}{0}%
+ \TestMod{5}{4}{1}%
+ \TestMod{-6}{-5}{-1}%
+ \TestMod{-5}{-5}{0}%
+ \TestMod{-4}{-5}{-4}%
+ \TestMod{-3}{-5}{-3}%
+ \TestMod{-2}{-5}{-2}%
+ \TestMod{-1}{-5}{-1}%
+ \TestMod{0}{-5}{0}%
+ \TestMod{1}{-5}{-4}%
+ \TestMod{2}{-5}{-3}%
+ \TestMod{3}{-5}{-2}%
+ \TestMod{4}{-5}{-1}%
+ \TestMod{5}{-5}{0}%
+ \TestMod{6}{-5}{-4}%
+ \TestMod{-5}{-4}{-1}%
+ \TestMod{-4}{-4}{0}%
+ \TestMod{-3}{-4}{-3}%
+ \TestMod{-2}{-4}{-2}%
+ \TestMod{-1}{-4}{-1}%
+ \TestMod{0}{-4}{0}%
+ \TestMod{1}{-4}{-3}%
+ \TestMod{2}{-4}{-2}%
+ \TestMod{3}{-4}{-1}%
+ \TestMod{4}{-4}{0}%
+ \TestMod{5}{-4}{-3}%
+ \TestMod{2147483647}{1000}{647}%
+ \TestMod{2147483647}{-1000}{-353}%
+ \TestMod{-2147483647}{1000}{353}%
+ \TestMod{-2147483647}{-1000}{-647}%
+ \TestMod{ 0 }{ 4 }{0}%
+ \TestMod{ 1 }{ 4 }{1}%
+ \TestMod{ -1 }{ 4 }{3}%
+ \TestMod{ 0 }{ -4 }{0}%
+ \TestMod{ 1 }{ -4 }{-3}%
+ \TestMod{ -1 }{ -4 }{-1}%
+ \TestMod{18362}{25}{12}%
+\end{qstest}
+
+\newcommand*{\TestError}[2]{%
+ \begingroup
+ \expandafter\def\csname BigIntCalcError:#1\endcsname{}%
+ \Expect*{#2}{0}%
+ \expandafter\def\csname BigIntCalcError:#1\endcsname{ERROR}%
+ \Expect*{#2}{0ERROR}%
+ \endgroup
+}
+\begin{qstest}{error}{error}
+ \TestError{FacNegative}{\bigintcalcFac{-1}}%
+ \TestError{FacNegative}{\bigintcalcFac{-2147483647}}%
+ \TestError{DivisionByZero}{\bigintcalcPow{0}{-1}}%
+ \TestError{DivisionByZero}{\bigintcalcDiv{1}{0}}%
+ \TestError{DivisionByZero}{\bigintcalcMod{1}{0}}%
+\end{qstest}
+
+\begin{document}
+\end{document}
+\endinput
+%%
+%% End of file `bigintcalc-test2.tex'.
diff --git a/Master/texmf-dist/doc/latex/oberdiek/bigintcalc-test3.tex b/Master/texmf-dist/doc/latex/oberdiek/bigintcalc-test3.tex
new file mode 100644
index 00000000000..67b97d45a8d
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/oberdiek/bigintcalc-test3.tex
@@ -0,0 +1,825 @@
+%%
+%% This is file `bigintcalc-test3.tex',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% bigintcalc.dtx (with options: `test2,noetex')
+%%
+%% This is a generated file.
+%%
+%% Copyright (C) 2007 by Heiko Oberdiek <oberdiek@uni-freiburg.de>
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any later
+%% version. The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% This Current Maintainer of this work is Heiko Oberdiek.
+%%
+%% This work consists of the main source file bigintcalc.dtx
+%% and the derived files
+%% bigintcalc.sty, bigintcalc.pdf, bigintcalc.ins, bigintcalc.drv,
+%% bigintcalc-test1.tex, bigintcalc-test2.tex,
+%% bigintcalc-test3.tex.
+%%
+\NeedsTeXFormat{LaTeX2e}
+\nofiles
+\documentclass{article}
+\let\SavedNumexpr\numexpr
+\let\numexpr\UNDEFINED
+\makeatletter
+\chardef\BIC@TestMode=1 %
+\makeatother
+\usepackage{bigintcalc}[2007/09/27]
+\let\numexpr\SavedNumexpr
+\usepackage{qstest}
+\IncludeTests{*}
+\LogTests{log}{*}{*}
+\newcommand*{\TestSpaceAtEnd}[1]{%
+ \let\SavedNumexpr\numexpr
+ \let\numexpr\UNDEFINED
+ \edef\resultA{#1}%
+ \edef\resultB{#1 }%
+ \let\numexpr\SavedNumexpr
+ \Expect*{\resultA\space}*{\resultB}%
+}
+\newcommand*{\TestResult}[2]{%
+ \let\SavedNumexpr\numexpr
+ \let\numexpr\UNDEFINED
+ \edef\result{#1}%
+ \let\numexpr\SavedNumexpr
+ \Expect*{\result}{#2}%
+}
+\newcommand*{\TestResultTwoExpansions}[2]{%
+ \begingroup
+ \let\numexpr\UNDEFINED
+ \expandafter\expandafter\expandafter
+ \endgroup
+ \expandafter\expandafter\expandafter\Expect
+ \expandafter\expandafter\expandafter{#1}{#2}%
+}
+\newcount\TestCount
+\newcommand*{\TestArg}[1]{#1}
+\newcommand*{\TestTeXDivide}[2]{%
+ \TestCount=\TestArg{#1}\relax
+ \divide\TestCount by \TestArg{#2}\relax
+ \Expect*{\bigintcalcDiv{#1}{#2}}*{\the\TestCount}%
+}
+\newcommand*{\Test}[2]{%
+ \TestResult{#1}{#2}%
+ \TestResultTwoExpansions{#1}{#2}%
+ \TestSpaceAtEnd{#1}%
+}
+\newcommand*{\TestExch}[2]{\Test{#2}{#1}}
+\newcommand*{\TestInv}[2]{%
+ \Test{\bigintcalcInv{#1}}{#2}%
+}
+\newcommand*{\TestAbs}[2]{%
+ \Test{\bigintcalcAbs{#1}}{#2}%
+}
+\newcommand*{\TestSgn}[2]{%
+ \Test{\bigintcalcSgn{#1}}{#2}%
+}
+\newcommand*{\TestMin}[3]{%
+ \Test{\bigintcalcMin{#1}{#2}}{#3}%
+}
+\newcommand*{\TestMax}[3]{%
+ \Test{\bigintcalcMax{#1}{#2}}{#3}%
+}
+\newcommand*{\TestCmp}[3]{%
+ \Test{\bigintcalcCmp{#1}{#2}}{#3}%
+}
+\newcommand*{\TestOdd}[2]{%
+ \Test{\bigintcalcOdd{#1}}{#2}%
+ \edef\x{%
+ \noexpand\Test{%
+ \noexpand\BigIntCalcOdd
+ \bigintcalcAbs{#1}!%
+ }{#2}%
+ }%
+ \x
+}
+\newcommand*{\TestInc}[2]{%
+ \Test{\bigintcalcInc{#1}}{#2}%
+ \ifnum\bigintcalcSgn{#1}>-1 %
+ \edef\x{%
+ \noexpand\Test{%
+ \noexpand\BigIntCalcInc\bigintcalcNum{#1}!%
+ }{#2}%
+ }%
+ \x
+ \fi
+}
+\newcommand*{\TestDec}[2]{%
+ \Test{\bigintcalcDec{#1}}{#2}%
+ \ifnum\bigintcalcSgn{#1}>0 %
+ \edef\x{%
+ \noexpand\Test{%
+ \noexpand\BigIntCalcDec\bigintcalcNum{#1}!%
+ }{#2}%
+ }%
+ \x
+ \fi
+}
+\newcommand*{\TestAdd}[3]{%
+ \Test{\bigintcalcAdd{#1}{#2}}{#3}%
+ \ifnum\bigintcalcSgn{#1}>0 %
+ \ifnum\bigintcalcSgn{#2}> 0 %
+ \ifnum\bigintcalcCmp{#1}{#2}>0 %
+ \edef\x{%
+ \noexpand\Test{%
+ \noexpand\BigIntCalcAdd
+ \bigintcalcNum{#1}!\bigintcalcNum{#2}!%
+ }{#3}%
+ }%
+ \x
+ \else
+ \edef\x{%
+ \noexpand\Test{%
+ \noexpand\BigIntCalcAdd
+ \bigintcalcNum{#2}!\bigintcalcNum{#1}!%
+ }{#3}%
+ }%
+ \x
+ \fi
+ \fi
+ \fi
+}
+\newcommand*{\TestSub}[3]{%
+ \Test{\bigintcalcSub{#1}{#2}}{#3}%
+ \ifnum\bigintcalcSgn{#1}>0 %
+ \ifnum\bigintcalcSgn{#2}> 0 %
+ \ifnum\bigintcalcCmp{#1}{#2}>0 %
+ \edef\x{%
+ \noexpand\Test{%
+ \noexpand\BigIntCalcSub
+ \bigintcalcNum{#1}!\bigintcalcNum{#2}!%
+ }{#3}%
+ }%
+ \x
+ \fi
+ \fi
+ \fi
+}
+\newcommand*{\TestShl}[2]{%
+ \Test{\bigintcalcShl{#1}}{#2}%
+ \edef\x{%
+ \noexpand\Test{%
+ \noexpand\BigIntCalcShl\bigintcalcAbs{#1}!%
+ }{\bigintcalcAbs{#2}}%
+ }%
+ \x
+}
+\newcommand*{\TestShr}[2]{%
+ \Test{\bigintcalcShr{#1}}{#2}%
+ \edef\x{%
+ \noexpand\Test{%
+ \noexpand\BigIntCalcShr\bigintcalcAbs{#1}!%
+ }{\bigintcalcAbs{#2}}%
+ }%
+ \x
+}
+\newcommand*{\TestMul}[3]{%
+ \Test{\bigintcalcMul{#1}{#2}}{#3}%
+ \edef\x{%
+ \noexpand\Test{%
+ \noexpand\BigIntCalcMul
+ \bigintcalcAbs{#1}!\bigintcalcAbs{#2}!%
+ }{\bigintcalcAbs{#3}}%
+ }%
+ \x
+}
+\newcommand*{\TestSqr}[2]{%
+ \Test{\bigintcalcSqr{#1}}{#2}%
+}
+\newcommand*{\TestFac}[2]{%
+ \expandafter\TestExch\expandafter{%
+ \the\numexpr#2%
+ }{\bigintcalcFac{#1}}%
+}
+\newcommand*{\TestFacBig}[2]{%
+ \Test{\bigintcalcFac{#1}}{#2}%
+}
+\newcommand*{\TestPow}[3]{%
+ \Test{\bigintcalcPow{#1}{#2}}{#3}%
+}
+\newcommand*{\TestDiv}[3]{%
+ \Test{\bigintcalcDiv{#1}{#2}}{#3}%
+ \TestTeXDivide{#1}{#2}%
+}
+\newcommand*{\TestDivBig}[3]{%
+ \Test{\bigintcalcDiv{#1}{#2}}{#3}%
+ \edef\x{%
+ \noexpand\Test{%
+ \noexpand\BigIntCalcDiv\bigintcalcAbs{#1}!\bigintcalcAbs{#2}!%
+ }{\bigintcalcAbs{#3}}%
+ }%
+}
+\newcommand*{\TestMod}[3]{%
+ \Test{\bigintcalcMod{#1}{#2}}{#3}%
+ \ifcase\ifcase\bigintcalcSgn{#1} 0%
+ \or
+ \ifcase\bigintcalcSgn{#2} 1%
+ \or 0%
+ \else 1%
+ \fi
+ \else
+ \ifcase\bigintcalcSgn{#2} 1%
+ \or 1%
+ \else 0%
+ \fi
+ \fi\relax
+ \edef\x{%
+ \noexpand\Test{%
+ \noexpand\BigIntCalcMod
+ \bigintcalcAbs{#1}!\bigintcalcAbs{#2}!%
+ }{\bigintcalcAbs{#3}}%
+ }%
+ \x
+ \fi
+}
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname pdfresettimer\endcsname\relax
+\else
+ \makeatletter
+ \newcount\SummaryTime
+ \newcount\TestTime
+ \SummaryTime=\z@
+ \newcommand*{\PrintTime}[2]{%
+ \typeout{%
+ [Time #1: \strip@pt\dimexpr\number#2sp\relax\space s]%
+ }%
+ }%
+ \newcommand*{\StartTime}[1]{%
+ \renewcommand*{\TimeDescription}{#1}%
+ \pdfresettimer
+ }%
+ \newcommand*{\TimeDescription}{}%
+ \newcommand*{\StopTime}{%
+ \TestTime=\pdfelapsedtime
+ \global\advance\SummaryTime\TestTime
+ \PrintTime\TimeDescription\TestTime
+ }%
+ \let\saved@qstest\qstest
+ \let\saved@endqstest\endqstest
+ \def\qstest#1#2{%
+ \saved@qstest{#1}{#2}%
+ \StartTime{#1}%
+ }%
+ \def\endqstest{%
+ \StopTime
+ \saved@endqstest
+ }%
+ \AtEndDocument{%
+ \PrintTime{summary}\SummaryTime
+ }%
+ \makeatother
+\fi
+\makeatletter
+
+\begin{qstest}{inv}{inv}%
+ \TestInv{0}{0}%
+ \TestInv{1}{-1}%
+ \TestInv{-1}{1}%
+ \TestInv{10}{-10}%
+ \TestInv{-10}{10}%
+ \TestInv{2147483647}{-2147483647}%
+ \TestInv{-2147483647}{2147483647}%
+ \TestInv{12345678901234567890}{-12345678901234567890}%
+ \TestInv{-12345678901234567890}{12345678901234567890}%
+ \TestInv{ 0 }{0}%
+ \TestInv{ 1 }{-1}%
+ \TestInv{--1}{-1}%
+ \TestInv{\number\z@}{0}%
+ \TestInv{\ifx\relax\relax1\fi}{-1}%
+ \TestInv{\ifx\relax\relax-\fi\ifx234\else1\fi}{1}%
+\end{qstest}
+
+\begin{qstest}{abs}{abs}%
+ \TestAbs{0}{0}%
+ \TestAbs{1}{1}%
+ \TestAbs{-1}{1}%
+ \TestAbs{10}{10}%
+ \TestAbs{-10}{10}%
+ \TestAbs{2147483647}{2147483647}%
+ \TestAbs{-2147483647}{2147483647}%
+ \TestAbs{12345678901234567890}{12345678901234567890}%
+ \TestAbs{-12345678901234567890}{12345678901234567890}%
+ \TestAbs{ 0 }{0}%
+ \TestAbs{ 1 }{1}%
+ \TestAbs{--1}{1}%
+ \TestAbs{-+-+1}{1}%
+ \TestAbs{00000000000}{0}%
+ \TestAbs{00000001000}{1000}%
+ \TestAbs{\ifx\relax\relax 0\else 1\fi}{0}%
+\end{qstest}
+
+\begin{qstest}{sign}{sign}%
+ \TestSgn{0}{0}%
+ \TestSgn{1}{1}%
+ \TestSgn{-1}{-1}%
+ \TestSgn{10}{1}%
+ \TestSgn{-10}{-1}%
+ \TestSgn{2147483647}{1}%
+ \TestSgn{-2147483647}{-1}%
+ \TestSgn{12345678901234567890}{1}%
+ \TestSgn{-12345678901234567890}{-1}%
+ \TestSgn{ 0 }{0}%
+ \TestSgn{ 2 }{1}%
+ \TestSgn{ -2 }{-1}%
+ \TestSgn{--2}{1}%
+ \TestSgn{\number\z@}{0}%
+ \TestSgn{\number\@ne}{1}%
+ \TestSgn{\number\m@ne}{-1}%
+ \TestSgn{%
+ -+-+\number\z@\number\z@
+ \iftrue1\fi\iftrue2\fi\iftrue3\fi
+ }{1}%
+\end{qstest}
+
+\begin{qstest}{min}{min}%
+ \TestMin{0}{1}{0}%
+ \TestMin{1}{0}{0}%
+ \TestMin{-10}{-20}{-20}%
+ \TestMin{ 1 }{ 2 }{1}%
+ \TestMin{ 2 }{ 1 }{1}%
+ \TestMin{1}{1}{1}%
+ \TestMin{\number\z@}{\number\@ne}{0}%
+ \TestMin{\number\@ne}{\number\m@ne}{-1}%
+\end{qstest}
+
+\begin{qstest}{max}{max}%
+ \TestMax{0}{1}{1}%
+ \TestMax{1}{0}{1}%
+ \TestMax{-10}{-20}{-10}%
+ \TestMax{ 1 }{ 2 }{2}%
+ \TestMax{ 2 }{ 1 }{2}%
+ \TestMax{1}{1}{1}%
+ \TestMax{\number\z@}{\number\@ne}{1}%
+ \TestMax{\number\@ne}{\number\m@ne}{1}%
+\end{qstest}
+
+\begin{qstest}{cmp}{cmp}%
+ \TestCmp{0}{0}{0}%
+ \TestCmp{-21}{17}{-1}%
+ \TestCmp{3}{4}{-1}%
+ \TestCmp{-10}{-10}{0}%
+ \TestCmp{-10}{-11}{1}%
+ \TestCmp{100}{5}{1}%
+ \TestCmp{9}{10}{-1}%
+ \TestCmp{10}{9}{1}%
+ \TestCmp{ 3 }{ 3 }{0}%
+ \TestCmp{-9}{-10}{1}%
+ \TestCmp{-10}{-9}{-1}%
+ \TestCmp{-3}{-3}{0}%
+ \TestCmp{0}{-2}{1}%
+ \TestCmp{0}{2}{-1}%
+ \TestCmp{2}{0}{1}%
+ \TestCmp{-2}{0}{-1}%
+ \TestCmp{12}{11}{1}%
+ \TestCmp{11}{12}{-1}%
+ \TestCmp{2147483647}{-2147483647}{1}%
+ \TestCmp{-2147483647}{2147483647}{-1}%
+ \TestCmp{2147483647}{2147483647}{0}%
+ \TestCmp{\number\z@}{\number\@ne}{-1}%
+ \TestCmp{\number\@ne}{\number\m@ne}{1}%
+ \TestCmp{ 4 }{ 5 }{-1}%
+ \TestCmp{ -3 }{ -7 }{1}%
+\end{qstest}
+
+\begin{qstest}{odd}{odd}
+\tracingmacros=1
+ \TestOdd{0}{0}%
+ \TestOdd{1}{1}%
+ \TestOdd{2}{0}%
+ \TestOdd{3}{1}%
+ \TestOdd{14}{0}%
+ \TestOdd{15}{1}%
+ \TestOdd{12345678901234567896}{0}%
+ \TestOdd{12345678901234567897}{1}%
+\end{qstest}
+
+\begin{qstest}{inc}{inc}%
+ \TestInc{0}{1}%
+ \TestInc{1}{2}%
+ \TestInc{-1}{0}%
+ \TestInc{10}{11}%
+ \TestInc{-10}{-9}%
+ \TestInc{ 3 }{4}%
+ \TestInc{999}{1000}%
+ \TestInc{-1000}{-999}%
+ \TestInc{129}{130}%
+ \TestInc{2147483646}{2147483647}%
+ \TestInc{-2147483647}{-2147483646}%
+ \TestInc{12345678901234567890}{12345678901234567891}%
+ \TestInc{99999999999999999999}{100000000000000000000}%
+ \TestInc{-12345678901234567891}{-12345678901234567890}%
+ \TestInc{-100000000000000000000}{-99999999999999999999}%
+\end{qstest}
+
+\begin{qstest}{dec}{dec}%
+ \TestDec{0}{-1}%
+ \TestDec{1}{0}%
+ \TestDec{-1}{-2}%
+ \TestDec{10}{9}%
+ \TestDec{-10}{-11}%
+ \TestDec{1000}{999}%
+ \TestDec{-999}{-1000}%
+ \TestDec{130}{129}%
+ \TestDec{2147483647}{2147483646}%
+ \TestDec{-2147483646}{-2147483647}%
+ \TestDec{12345678901234567891}{12345678901234567890}%
+ \TestDec{100000000000000000000}{99999999999999999999}%
+ \TestDec{-12345678901234567890}{-12345678901234567891}%
+ \TestDec{-99999999999999999999}{-100000000000000000000}%
+\end{qstest}
+
+\begin{qstest}{add}{add}%
+ \TestAdd{0}{0}{0}%
+ \TestAdd{1}{0}{1}%
+ \TestAdd{0}{1}{1}%
+ \TestAdd{1}{2}{3}%
+ \TestAdd{-1}{-1}{-2}%
+ \TestAdd{2147483646}{1}{2147483647}%
+ \TestAdd{-2147483647}{2147483647}{0}%
+ \TestAdd{20}{-5}{15}%
+ \TestAdd{-4}{-1}{-5}%
+ \TestAdd{-1}{-4}{-5}%
+ \TestAdd{-4}{1}{-3}%
+ \TestAdd{-1}{4}{3}%
+ \TestAdd{4}{-1}{3}%
+ \TestAdd{1}{-4}{-3}%
+ \TestAdd{-4}{-1}{-5}%
+ \TestAdd{-1}{-4}{-5}%
+ \TestAdd{ -4 }{ -1 }{-5}%
+ \TestAdd{ -1 }{ -4 }{-5}%
+ \TestAdd{ -4 }{ 1 }{-3}%
+ \TestAdd{ -1 }{ 4 }{3}%
+ \TestAdd{ 4 }{ -1 }{3}%
+ \TestAdd{ 1 }{ -4 }{-3}%
+ \TestAdd{ -4 }{ -1 }{-5}%
+ \TestAdd{ -1 }{ -4 }{-5}%
+ \TestAdd{876543210}{111111111}{987654321}%
+ \TestAdd{999999999}{2}{1000000001}%
+\end{qstest}
+
+\begin{qstest}{sub}{sub}
+ \TestSub{0}{0}{0}%
+ \TestSub{1}{0}{1}%
+ \TestSub{1}{2}{-1}%
+ \TestSub{-1}{-1}{0}%
+ \TestSub{2147483646}{-1}{2147483647}%
+ \TestSub{-2147483647}{-2147483647}{0}%
+ \TestSub{-4}{-1}{-3}%
+ \TestSub{-1}{-4}{3}%
+ \TestSub{-4}{1}{-5}%
+ \TestSub{-1}{4}{-5}%
+ \TestSub{4}{-1}{5}%
+ \TestSub{1}{-4}{5}%
+ \TestSub{-4}{-1}{-3}%
+ \TestSub{-1}{-4}{3}%
+ \TestSub{ -4 }{ -1 }{-3}%
+ \TestSub{ -1 }{ -4 }{3}%
+ \TestSub{ -4 }{ 1 }{-5}%
+ \TestSub{ -1 }{ 4 }{-5}%
+ \TestSub{ 4 }{ -1 }{5}%
+ \TestSub{ 1 }{ -4 }{5}%
+ \TestSub{ -4 }{ -1 }{-3}%
+ \TestSub{ -1 }{ -4 }{3}%
+ \TestSub{1000000000}{2}{999999998}%
+ \TestSub{987654321}{111111111}{876543210}%
+\end{qstest}
+
+\begin{qstest}{shl}{shl}
+ \TestShl{0}{0}%
+ \TestShl{1}{2}%
+ \TestShl{2}{4}%
+ \TestShl{5621}{11242}%
+ \TestShl{1073741823}{2147483646}%
+\end{qstest}
+
+\begin{qstest}{shr}{shr}
+ \TestShr{0}{0}%
+ \TestShr{1}{0}%
+ \TestShr{2}{1}%
+ \TestShr{3}{1}%
+ \TestShr{4}{2}%
+ \TestShr{5}{2}%
+ \TestShr{6}{3}%
+ \TestShr{7}{3}%
+ \TestShr{8}{4}%
+ \TestShr{9}{4}%
+ \TestShr{10}{5}%
+ \TestShr{11}{5}%
+ \TestShr{12}{6}%
+ \TestShr{13}{6}%
+ \TestShr{14}{7}%
+ \TestShr{15}{7}%
+ \TestShr{16}{8}%
+ \TestShr{17}{8}%
+ \TestShr{18}{9}%
+ \TestShr{19}{9}%
+ \TestShr{20}{10}%
+ \TestShr{21}{10}%
+ \TestShr{22}{11}%
+ \TestShr{11241}{5620}%
+ \TestShr{73054202}{36527101}%
+ \TestShr{2147483646}{1073741823}%
+\end{qstest}
+
+\begin{qstest}{mul}{mul}
+ \TestMul{0}{0}{0}%
+ \TestMul{1}{0}{0}%
+ \TestMul{0}{1}{0}%
+ \TestMul{1}{1}{1}%
+ \TestMul{3}{1}{3}%
+ \TestMul{1}{-3}{-3}%
+ \TestMul{-4}{-5}{20}%
+ \TestMul{3}{7}{21}%
+ \TestMul{7}{3}{21}%
+ \TestMul{3}{-7}{-21}%
+ \TestMul{7}{-3}{-21}%
+ \TestMul{-3}{7}{-21}%
+ \TestMul{-7}{3}{-21}%
+ \TestMul{-3}{-7}{21}%
+ \TestMul{-7}{-3}{21}%
+ \TestMul{12}{11}{132}%
+ \TestMul{999}{333}{332667}%
+ \TestMul{1000}{4321}{4321000}%
+ \TestMul{12345}{173955}{2147474475}%
+ \TestMul{1073741823}{2}{2147483646}%
+ \TestMul{2}{1073741823}{2147483646}%
+ \TestMul{-1073741823}{2}{-2147483646}%
+ \TestMul{2}{-1073741823}{-2147483646}%
+ \TestMul{6706022400}{13}{87178291200}%
+\end{qstest}
+
+\begin{qstest}{sqr}{sqr}
+ \TestSqr{0}{0}%
+ \TestSqr{1}{1}%
+ \TestSqr{2}{4}%
+ \TestSqr{3}{9}%
+ \TestSqr{4}{16}%
+ \TestSqr{9}{81}%
+ \TestSqr{10}{100}%
+ \TestSqr{46340}{2147395600}%
+ \TestSqr{-1}{1}%
+ \TestSqr{-2}{4}%
+ \TestSqr{-46340}{2147395600}%
+\end{qstest}
+
+\begin{qstest}{fac}{fac}
+ \TestFac{0}{1}%
+ \TestFac{1}{1}%
+ \TestFac{2}{2}%
+ \TestFac{3}{2*3}%
+ \TestFac{4}{2*3*4}%
+ \TestFac{5}{2*3*4*5}%
+ \TestFac{6}{2*3*4*5*6}%
+ \TestFac{7}{2*3*4*5*6*7}%
+ \TestFac{8}{2*3*4*5*6*7*8}%
+ \TestFac{9}{2*3*4*5*6*7*8*9}%
+ \TestFac{10}{2*3*4*5*6*7*8*9*10}%
+ \TestFac{11}{2*3*4*5*6*7*8*9*10*11}%
+ \TestFac{12}{2*3*4*5*6*7*8*9*10*11*12}%
+ \TestFacBig{13}{6227020800}%
+ \TestFacBig{14}{87178291200}%
+ \TestFacBig{15}{1307674368000}%
+ \TestFacBig{16}{20922789888000}%
+ \TestFacBig{17}{355687428096000}%
+ \TestFacBig{18}{6402373705728000}%
+ \TestFacBig{19}{121645100408832000}%
+ \TestFacBig{20}{2432902008176640000}%
+ \TestFacBig{21}{51090942171709440000}%
+ \TestFacBig{22}{1124000727777607680000}%
+\end{qstest}
+
+\begin{qstest}{pow}{pow}
+ \TestPow{-2}{0}{1}%
+ \TestPow{-1}{0}{1}%
+ \TestPow{0}{0}{1}%
+ \TestPow{1}{0}{1}%
+ \TestPow{2}{0}{1}%
+ \TestPow{3}{0}{1}%
+ \TestPow{-2}{1}{-2}%
+ \TestPow{-1}{1}{-1}%
+ \TestPow{1}{1}{1}%
+ \TestPow{2}{1}{2}%
+ \TestPow{3}{1}{3}%
+ \TestPow{-2}{2}{4}%
+ \TestPow{-1}{2}{1}%
+ \TestPow{0}{2}{0}%
+ \TestPow{1}{2}{1}%
+ \TestPow{2}{2}{4}%
+ \TestPow{3}{2}{9}%
+ \TestPow{0}{1}{0}%
+ \TestPow{1}{-2}{1}%
+ \TestPow{1}{-1}{1}%
+ \TestPow{-1}{-2}{1}%
+ \TestPow{-1}{-1}{-1}%
+ \TestPow{-1}{3}{-1}%
+ \TestPow{-1}{4}{1}%
+ \TestPow{-2}{-1}{0}%
+ \TestPow{-2}{-2}{0}%
+ \TestPow{2}{3}{8}%
+ \TestPow{2}{4}{16}%
+ \TestPow{2}{5}{32}%
+ \TestPow{2}{6}{64}%
+ \TestPow{2}{7}{128}%
+ \TestPow{2}{8}{256}%
+ \TestPow{2}{9}{512}%
+ \TestPow{2}{10}{1024}%
+ \TestPow{-2}{3}{-8}%
+ \TestPow{-2}{4}{16}%
+ \TestPow{-2}{5}{-32}%
+ \TestPow{-2}{6}{64}%
+ \TestPow{-2}{7}{-128}%
+ \TestPow{-2}{8}{256}%
+ \TestPow{-2}{9}{-512}%
+ \TestPow{-2}{10}{1024}%
+ \TestPow{3}{3}{27}%
+ \TestPow{3}{4}{81}%
+ \TestPow{3}{5}{243}%
+ \TestPow{-3}{3}{-27}%
+ \TestPow{-3}{4}{81}%
+ \TestPow{-3}{5}{-243}%
+ \TestPow{2}{30}{1073741824}%
+ \TestPow{-3}{19}{-1162261467}%
+ \TestPow{5}{13}{1220703125}%
+ \TestPow{-7}{11}{-1977326743}%
+\end{qstest}
+
+\begin{qstest}{div}{div}
+ \TestDiv{1}{1}{1}%
+ \TestDiv{2}{1}{2}%
+ \TestDiv{-2}{1}{-2}%
+ \TestDiv{2}{-1}{-2}%
+ \TestDiv{-2}{-1}{2}%
+ \TestDiv{15}{2}{7}%
+ \TestDiv{-16}{2}{-8}%
+ \TestDiv{1}{2}{0}%
+ \TestDiv{1}{3}{0}%
+ \TestDiv{2}{3}{0}%
+ \TestDiv{-2}{3}{0}%
+ \TestDiv{2}{-3}{0}%
+ \TestDiv{-2}{-3}{0}%
+ \TestDiv{13}{3}{4}%
+ \TestDiv{-13}{-3}{4}%
+ \TestDiv{-13}{3}{-4}%
+ \TestDiv{-6}{5}{-1}%
+ \TestDiv{-5}{5}{-1}%
+ \TestDiv{-4}{5}{0}%
+ \TestDiv{-3}{5}{0}%
+ \TestDiv{-2}{5}{0}%
+ \TestDiv{-1}{5}{0}%
+ \TestDiv{0}{5}{0}%
+ \TestDiv{1}{5}{0}%
+ \TestDiv{2}{5}{0}%
+ \TestDiv{3}{5}{0}%
+ \TestDiv{4}{5}{0}%
+ \TestDiv{5}{5}{1}%
+ \TestDiv{6}{5}{1}%
+ \TestDiv{-5}{4}{-1}%
+ \TestDiv{-4}{4}{-1}%
+ \TestDiv{-3}{4}{0}%
+ \TestDiv{-2}{4}{0}%
+ \TestDiv{-1}{4}{0}%
+ \TestDiv{0}{4}{0}%
+ \TestDiv{1}{4}{0}%
+ \TestDiv{2}{4}{0}%
+ \TestDiv{3}{4}{0}%
+ \TestDiv{4}{4}{1}%
+ \TestDiv{5}{4}{1}%
+ \TestDiv{12345}{678}{18}%
+ \TestDiv{32372}{5952}{5}%
+ \TestDiv{284271294}{18162}{15651}%
+ \TestDiv{217652429}{12561}{17327}%
+ \TestDiv{462028434}{5439}{84947}%
+ \TestDiv{2147483647}{1000}{2147483}%
+ \TestDiv{2147483647}{-1000}{-2147483}%
+ \TestDiv{-2147483647}{1000}{-2147483}%
+ \TestDiv{-2147483647}{-1000}{2147483}%
+ \TestDiv{0}{3}{0}%
+ \TestDiv{1}{3}{0}%
+ \TestDiv{2}{3}{0}%
+ \TestDiv{3}{3}{1}%
+ \TestDiv{4}{3}{1}%
+ \TestDiv{5}{3}{1}%
+ \TestDiv{6}{3}{2}%
+ \TestDiv{7}{3}{2}%
+ \TestDiv{8}{3}{2}%
+ \TestDiv{9}{3}{3}%
+ \TestDiv{10}{3}{3}%
+ \TestDiv{11}{3}{3}%
+ \TestDiv{12}{3}{4}%
+ \TestDiv{13}{3}{4}%
+ \TestDiv{14}{3}{4}%
+ \TestDiv{15}{3}{5}%
+ \TestDiv{16}{3}{5}%
+ \TestDiv{17}{3}{5}%
+ \TestDiv{18}{3}{6}%
+ \TestDiv{19}{3}{6}%
+ \TestDiv{20}{3}{6}%
+ \TestDiv{21}{3}{7}%
+ \TestDiv{22}{3}{7}%
+ \TestDiv{23}{3}{7}%
+ \TestDiv{24}{3}{8}%
+ \TestDiv{25}{3}{8}%
+ \TestDiv{26}{3}{8}%
+ \TestDiv{27}{3}{9}%
+ \TestDiv{28}{3}{9}%
+ \TestDiv{29}{3}{9}%
+ \TestDiv{30}{3}{10}%
+ \TestDiv{31}{3}{10}%
+ \TestDivBig{17363436332507}{24702}{702916214}%
+\end{qstest}
+
+\begin{qstest}{mod}{mod}
+ \TestMod{-6}{5}{4}%
+ \TestMod{-5}{5}{0}%
+ \TestMod{-4}{5}{1}%
+ \TestMod{-3}{5}{2}%
+ \TestMod{-2}{5}{3}%
+ \TestMod{-1}{5}{4}%
+ \TestMod{0}{5}{0}%
+ \TestMod{1}{5}{1}%
+ \TestMod{2}{5}{2}%
+ \TestMod{3}{5}{3}%
+ \TestMod{4}{5}{4}%
+ \TestMod{5}{5}{0}%
+ \TestMod{6}{5}{1}%
+ \TestMod{-5}{4}{3}%
+ \TestMod{-4}{4}{0}%
+ \TestMod{-3}{4}{1}%
+ \TestMod{-2}{4}{2}%
+ \TestMod{-1}{4}{3}%
+ \TestMod{0}{4}{0}%
+ \TestMod{1}{4}{1}%
+ \TestMod{2}{4}{2}%
+ \TestMod{3}{4}{3}%
+ \TestMod{4}{4}{0}%
+ \TestMod{5}{4}{1}%
+ \TestMod{-6}{-5}{-1}%
+ \TestMod{-5}{-5}{0}%
+ \TestMod{-4}{-5}{-4}%
+ \TestMod{-3}{-5}{-3}%
+ \TestMod{-2}{-5}{-2}%
+ \TestMod{-1}{-5}{-1}%
+ \TestMod{0}{-5}{0}%
+ \TestMod{1}{-5}{-4}%
+ \TestMod{2}{-5}{-3}%
+ \TestMod{3}{-5}{-2}%
+ \TestMod{4}{-5}{-1}%
+ \TestMod{5}{-5}{0}%
+ \TestMod{6}{-5}{-4}%
+ \TestMod{-5}{-4}{-1}%
+ \TestMod{-4}{-4}{0}%
+ \TestMod{-3}{-4}{-3}%
+ \TestMod{-2}{-4}{-2}%
+ \TestMod{-1}{-4}{-1}%
+ \TestMod{0}{-4}{0}%
+ \TestMod{1}{-4}{-3}%
+ \TestMod{2}{-4}{-2}%
+ \TestMod{3}{-4}{-1}%
+ \TestMod{4}{-4}{0}%
+ \TestMod{5}{-4}{-3}%
+ \TestMod{2147483647}{1000}{647}%
+ \TestMod{2147483647}{-1000}{-353}%
+ \TestMod{-2147483647}{1000}{353}%
+ \TestMod{-2147483647}{-1000}{-647}%
+ \TestMod{ 0 }{ 4 }{0}%
+ \TestMod{ 1 }{ 4 }{1}%
+ \TestMod{ -1 }{ 4 }{3}%
+ \TestMod{ 0 }{ -4 }{0}%
+ \TestMod{ 1 }{ -4 }{-3}%
+ \TestMod{ -1 }{ -4 }{-1}%
+ \TestMod{18362}{25}{12}%
+\end{qstest}
+
+\newcommand*{\TestError}[2]{%
+ \begingroup
+ \expandafter\def\csname BigIntCalcError:#1\endcsname{}%
+ \Expect*{#2}{0}%
+ \expandafter\def\csname BigIntCalcError:#1\endcsname{ERROR}%
+ \Expect*{#2}{0ERROR}%
+ \endgroup
+}
+\begin{qstest}{error}{error}
+ \TestError{FacNegative}{\bigintcalcFac{-1}}%
+ \TestError{FacNegative}{\bigintcalcFac{-2147483647}}%
+ \TestError{DivisionByZero}{\bigintcalcPow{0}{-1}}%
+ \TestError{DivisionByZero}{\bigintcalcDiv{1}{0}}%
+ \TestError{DivisionByZero}{\bigintcalcMod{1}{0}}%
+\end{qstest}
+
+\begin{document}
+\end{document}
+\endinput
+%%
+%% End of file `bigintcalc-test3.tex'.
diff --git a/Master/texmf-dist/doc/latex/oberdiek/bigintcalc.pdf b/Master/texmf-dist/doc/latex/oberdiek/bigintcalc.pdf
new file mode 100644
index 00000000000..7bd2d03728a
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/oberdiek/bigintcalc.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/bitset-test1.tex b/Master/texmf-dist/doc/latex/oberdiek/bitset-test1.tex
new file mode 100644
index 00000000000..c5baacfbc56
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/oberdiek/bitset-test1.tex
@@ -0,0 +1,73 @@
+%%
+%% This is file `bitset-test1.tex',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% bitset.dtx (with options: `test1')
+%%
+%% This is a generated file.
+%%
+%% Copyright (C) 2007 by Heiko Oberdiek <oberdiek@uni-freiburg.de>
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any later
+%% version. The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% This Current Maintainer of this work is Heiko Oberdiek.
+%%
+%% This work consists of the main source file bitset.dtx
+%% and the derived files
+%% bitset.sty, bitset.pdf, bitset.ins, bitset.drv,
+%% bitset-test1.tex, bitset-test2.tex, bitset-test3.tex.
+%%
+\catcode`\@=11 %
+\def\RestoreCatcodes{}
+\count@=0 %
+\loop
+ \edef\RestoreCatcodes{%
+ \RestoreCatcodes
+ \catcode\the\count@=\the\catcode\count@\relax
+ }%
+\ifnum\count@<255 %
+ \advance\count@\@ne
+\repeat
+
+\def\RangeCatcodeInvalid#1#2{%
+ \count@=#1\relax
+ \loop
+ \catcode\count@=15 %
+ \ifnum\count@<#2\relax
+ \advance\count@\@ne
+ \repeat
+}
+\def\Test{%
+ \RangeCatcodeInvalid{0}{47}%
+ \RangeCatcodeInvalid{58}{64}%
+ \RangeCatcodeInvalid{91}{96}%
+ \RangeCatcodeInvalid{123}{255}%
+ \catcode`\@=12 %
+ \catcode`\\=0 %
+ \catcode`\{=1 %
+ \catcode`\}=2 %
+ \catcode`\#=6 %
+ \catcode`\[=12 %
+ \catcode`\]=12 %
+ \catcode`\%=14 %
+ \catcode`\ =10 %
+ \catcode13=5 %
+ \input bitset.sty\relax
+ \RestoreCatcodes
+}
+\Test
+\csname @@end\endcsname
+\end
+\endinput
+%%
+%% End of file `bitset-test1.tex'.
diff --git a/Master/texmf-dist/doc/latex/oberdiek/bitset-test2.tex b/Master/texmf-dist/doc/latex/oberdiek/bitset-test2.tex
new file mode 100644
index 00000000000..146141d3171
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/oberdiek/bitset-test2.tex
@@ -0,0 +1,1080 @@
+%%
+%% This is file `bitset-test2.tex',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% bitset.dtx (with options: `test2,etex')
+%%
+%% This is a generated file.
+%%
+%% Copyright (C) 2007 by Heiko Oberdiek <oberdiek@uni-freiburg.de>
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any later
+%% version. The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% This Current Maintainer of this work is Heiko Oberdiek.
+%%
+%% This work consists of the main source file bitset.dtx
+%% and the derived files
+%% bitset.sty, bitset.pdf, bitset.ins, bitset.drv,
+%% bitset-test1.tex, bitset-test2.tex, bitset-test3.tex.
+%%
+\NeedsTeXFormat{LaTeX2e}
+\nofiles
+\documentclass{article}
+\makeatletter
+\makeatletter
+\chardef\BitSet@TestMode=1 %
+\makeatother
+\usepackage{bitset}[2007/09/28]
+\usepackage{qstest}
+\IncludeTests{*}
+\LogTests{log}{*}{*}
+\makeatletter
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname pdfresettimer\endcsname\relax
+\else
+ \newcount\SummaryTime
+ \newcount\TestTime
+ \SummaryTime=\z@
+ \newcommand*{\PrintTime}[2]{%
+ \typeout{%
+ [Time #1: \strip@pt\dimexpr\number#2sp\relax\space s]%
+ }%
+ }%
+ \newcommand*{\StartTime}[1]{%
+ \renewcommand*{\TimeDescription}{#1}%
+ \pdfresettimer
+ }%
+ \newcommand*{\TimeDescription}{}%
+ \newcommand*{\StopTime}{%
+ \TestTime=\pdfelapsedtime
+ \global\advance\SummaryTime\TestTime
+ \PrintTime\TimeDescription\TestTime
+ }%
+ \let\saved@qstest\qstest
+ \let\saved@endqstest\endqstest
+ \def\qstest#1#2{%
+ \saved@qstest{#1}{#2}%
+ \StartTime{#1}%
+ }%
+ \def\endqstest{%
+ \StopTime
+ \saved@endqstest
+ }%
+ \AtEndDocument{%
+ \PrintTime{summary}\SummaryTime
+ }%
+\fi
+\let\orig@qstest\qstest
+\let\orig@endqstest\endqstest
+\def\qstest#1#2{%
+ \orig@qstest{#1}{#2}%
+ \setbox0\hbox\bgroup\begingroup\ignorespaces
+}
+\def\endqstest{%
+ \endgroup\egroup
+ \Expect*{\the\wd0}{0.0pt}%
+ \orig@endqstest
+}
+\newcounter{Test}
+
+\def\TestError#1#2{%
+ \begingroup
+ \setcounter{Test}{0}%
+ \sbox0{%
+ \def\@PackageError##1##2##3{%
+ \stepcounter{Test}%
+ \begingroup
+ \let\MessageBreak\relax
+ \Expect{##1}{bitset}%
+ \Expect*{##2}*{#1}%
+ \endgroup
+ }%
+ #2%
+ }%
+ \Expect*{\theTest}{1}%
+ \Expect*{\the\wd0}{0.0pt}%
+ \endgroup
+}
+
+\def\TestErrorNegativeIndex#1#2{%
+ \TestError{Invalid negative index (#1)}{#2}%
+}
+
+\def\TestGetterUndefined#1{%
+ \CheckUndef{dummy}%
+ \expandafter\expandafter\expandafter\Expect
+ \expandafter\expandafter\expandafter{#1{dummy}}{0}%
+}
+
+\def\ExpectBitSet#1#2{%
+ \expandafter\expandafter\expandafter\Expect
+ \expandafter\expandafter\expandafter
+ {\csname BS@#1\endcsname}*{#2}%
+}
+\def\Check#1#2{%
+ \ExpectBitSet{#1}{#2}%
+}
+\def\CheckUndef#1{%
+ \begingroup
+ \Expect*{%
+ \expandafter
+ \ifx\csname BS@#1\endcsname\relax true\else false\fi
+ }{true}%
+ \endgroup
+}
+\def\RevCheck#1#2{%
+ \ExpectBitSet{#1}{\Reverse#2!!}%
+}
+\def\Set#1#2{%
+ \expandafter\def\csname BS@#1\endcsname{#2}%
+}
+\def\RevSet#1#2{%
+ \expandafter\edef\csname BS@#1\endcsname{%
+ \Reverse#2!!%
+ }%
+}
+\def\Reverse#1#2!#3!{%
+ \ifx\\#2\\%
+ #1#3%
+ \expandafter\@gobble
+ \else
+ \expandafter\@firstofone
+ \fi
+ {\Reverse#2!#1#3!}%
+}
+\begin{qstest}{Let}{Let}
+ \CheckUndef{abc}%
+ \CheckUndef{xyz}%
+ \bitsetLet{xyz}{abc}%
+ \CheckUndef{abc}%
+ \Check{xyz}{0}%
+ \Set{abc}{1}%
+ \Check{abc}{1}%
+ \Check{xyz}{0}%
+ \bitsetLet{xyz}{abc}%
+ \Check{abc}{1}%
+ \Check{xyz}{1}%
+ \Set{xyz}{11}%
+ \Check{abc}{1}%
+ \Check{xyz}{11}%
+\end{qstest}
+
+\begin{qstest}{Reset}{Reset}
+ \bitsetReset{xyz}%
+ \Check{xyz}{0}%
+ \bitsetReset{abc}%
+ \Check{abc}{0}%
+ \Set{abc}{10101}%
+ \bitsetReset{abc}%
+ \Check{abc}{0}%
+\end{qstest}
+
+\begin{qstest}{Get/Query}{Get/Query}
+ \expandafter\expandafter\expandafter\Expect
+ \expandafter\expandafter\expandafter{%
+ \bitsetGet{dummy}{0}%
+ }{0}%
+ \begingroup
+ \expandafter\def\csname BitSetError:NegativeIndex\endcsname{}%
+ \Set{abc}{1}%
+ \Expect*{\bitsetQuery{abc}{-1}{true}{false}}{false}%
+ \endgroup
+ \def\Test#1#2#3{%
+ \Set{abc}{#1}%
+ \expandafter\expandafter\expandafter\Expect
+ \expandafter\expandafter\expandafter{\bitsetGet{abc}{#2}}{#3}%
+ \Expect*{\bitsetQuery{abc}{#2}{true}{false}}%
+ *{\ifcase#3 false\or true\else error\fi}%
+ }%
+ \Test{1}{100}{0}%
+ \Test{0}{0}{0}%
+ \Test{1}{0}{1}%
+ \Test{11}{1}{1}%
+ \Test{111}{1}{1}%
+ \Test{101}{1}{0}%
+ \Test{101}{2}{1}%
+ \Test{10100110011}{10}{1}%
+\end{qstest}
+
+\begin{qstest}{Size}{Size}
+ \TestGetterUndefined\bitsetSize
+ \def\Test#1#2{%
+ \Set{abc}{#1}%
+ \expandafter\expandafter\expandafter\Expect
+ \expandafter\expandafter\expandafter{\bitsetSize{abc}}{#2}%
+ }%
+ \Test{0}{0}%
+ \Test{1}{1}%
+ \Test{00}{0}%
+ \Test{0000000}{0}%
+ \Test{10}{1}%
+ \Test{01}{2}%
+ \Test{11}{2}%
+ \Test{010}{2}%
+ \Test{011}{3}%
+ \Test{100110011}{9}%
+ \Test{0000011111000001111100000}{20}%
+ \Test{000000000000000000000000011111111111111111111}{45}%
+\end{qstest}
+
+\begin{qstest}{Cardinality}{Cardinality}
+ \TestGetterUndefined\bitsetCardinality
+ \def\Test#1#2{%
+ \Set{abc}{#1}%
+ \expandafter\expandafter\expandafter\Expect
+ \expandafter\expandafter\expandafter{%
+ \bitsetCardinality{abc}%
+ }{#2}%
+ }%
+ \Test{0}{0}%
+ \Test{1}{1}%
+ \Test{00}{0}%
+ \Test{0000000}{0}%
+ \Test{10}{1}%
+ \Test{01}{1}%
+ \Test{11}{2}%
+ \Test{010}{1}%
+ \Test{011}{2}%
+ \Test{100110011}{5}%
+ \Test{0000011111000001111100000}{10}%
+ \Test{000000000000000000000000011111111111111111111}{20}%
+\end{qstest}
+
+\begin{qstest}{NextClearBit/NextSetBit}{NextClearBit/NextSetBit}
+ \def\Test#1#2{%
+ \expandafter\expandafter\expandafter\Expect
+ \expandafter\expandafter\expandafter{%
+ \TestOp{abc}{#1}%
+ }{#2}%
+ }%
+ \def\Clear{\let\TestOp\bitsetNextClearBit}%
+ \def\Set{\let\TestOp\bitsetNextSetBit}%
+ \begingroup
+ \catcode`\:=11 %
+ \bitsetSetBin{abc}{1}%
+ \Clear
+ \Test{-1}{1\BitSetError:NegativeIndex}%
+ \Set
+ \Test{-1}{0\BitSetError:NegativeIndex}%
+ \endgroup
+ \let\BS@abc\@undefined
+ \Clear
+ \Test{0}{0}%
+ \Test{1}{1}%
+ \Test{2}{2}%
+ \Test{100}{100}%
+ \Set
+ \Test{0}{-1}%
+ \Test{1}{-1}%
+ \Test{100}{-1}%
+ \bitsetReset{abc}%
+ \Clear
+ \Test{0}{0}%
+ \Test{1}{1}%
+ \Test{2}{2}%
+ \Test{100}{100}%
+ \Set
+ \Test{0}{-1}%
+ \Test{1}{-1}%
+ \Test{100}{-1}%
+ \bitsetSetBin{abc}{1}%
+ \Clear
+ \Test{0}{1}%
+ \Test{1}{1}%
+ \Test{2}{2}%
+ \Test{100}{100}%
+ \Set
+ \Test{0}{0}%
+ \Test{1}{-1}%
+ \Test{100}{-1}%
+ \bitsetSetBin{abc}{111000111000111000111}%
+ \Clear
+ \Test{0}{3}%
+ \Test{1}{3}%
+ \Test{2}{3}%
+ \Test{3}{3}%
+ \Test{4}{4}%
+ \Test{5}{5}%
+ \Test{6}{9}%
+ \Test{7}{9}%
+ \Test{8}{9}%
+ \Test{9}{9}%
+ \Test{10}{10}%
+ \Test{11}{11}%
+ \Test{12}{15}%
+ \Test{13}{15}%
+ \Test{14}{15}%
+ \Test{15}{15}%
+ \Test{16}{16}%
+ \Test{17}{17}%
+ \Test{18}{21}%
+ \Test{19}{21}%
+ \Test{20}{21}%
+ \Test{21}{21}%
+ \Test{22}{22}%
+ \Test{100}{100}%
+ \Set
+ \Test{0}{0}%
+ \Test{1}{1}%
+ \Test{2}{2}%
+ \Test{3}{6}%
+ \Test{4}{6}%
+ \Test{5}{6}%
+ \Test{6}{6}%
+ \Test{7}{7}%
+ \Test{8}{8}%
+ \Test{9}{12}%
+ \Test{10}{12}%
+ \Test{11}{12}%
+ \Test{12}{12}%
+ \Test{13}{13}%
+ \Test{14}{14}%
+ \Test{15}{18}%
+ \Test{16}{18}%
+ \Test{17}{18}%
+ \Test{18}{18}%
+ \Test{19}{19}%
+ \Test{20}{20}%
+ \Test{21}{-1}%
+ \Test{22}{-1}%
+ \Test{100}{-1}%
+ \bitsetSetBin{abc}{1111111}%
+ \Clear
+ \Test{6}{7}%
+ \Test{7}{7}%
+ \Test{8}{8}%
+ \Test{100}{100}%
+ \Set
+ \Test{6}{6}%
+ \Test{7}{-1}%
+ \Test{8}{-1}%
+ \Test{100}{-1}%
+ \bitsetSetBin{abc}{11111111}%
+ \Clear
+ \Test{7}{8}%
+ \Test{8}{8}%
+ \Test{9}{9}%
+ \Test{100}{100}%
+ \Set
+ \Test{7}{7}%
+ \Test{8}{-1}%
+ \Test{9}{-1}%
+ \Test{100}{-1}%
+ \bitsetSetBin{abc}{111111111}%
+ \Clear
+ \Test{8}{9}%
+ \Test{9}{9}%
+ \Test{10}{10}%
+ \Test{100}{100}%
+ \Set
+ \Test{8}{8}%
+ \Test{9}{-1}%
+ \Test{10}{-1}%
+ \Test{100}{-1}%
+ \bitsetSetBin{abc}{1111111111}%
+ \Clear
+ \Test{9}{10}%
+ \Test{10}{10}%
+ \Test{11}{11}%
+ \Test{100}{100}%
+ \Set
+ \Test{9}{9}%
+ \Test{10}{-1}%
+ \Test{11}{-1}%
+ \Test{100}{-1}%
+\end{qstest}
+
+\begin{qstest}{GetSetBitList}{GetSetBitList}
+ \let\BS@abc\@undefined
+ \expandafter\expandafter\expandafter\Expect
+ \expandafter\expandafter\expandafter{%
+ \bitsetGetSetBitList{abc}%
+ }{}%
+ \def\Test#1#2{%
+ \bitsetSetBin{abc}{#1}%
+ \expandafter\expandafter\expandafter\Expect
+ \expandafter\expandafter\expandafter{%
+ \bitsetGetSetBitList{abc}%
+ }{#2}%
+ }%
+ \Test{0}{}%
+ \Test{1}{0}%
+ \Test{10}{1}%
+ \Test{11}{0,1}%
+ \Test{10110100}{2,4,5,7}%
+ \Test{101101001010011}{0,1,4,6,9,11,12,14}%
+\end{qstest}
+
+\begin{qstest}{GetDec}{GetDec}
+ \TestGetterUndefined\bitsetGetDec
+ \def\Test#1#2{%
+ \RevSet{abc}{#1}%
+ \expandafter\expandafter\expandafter\Expect
+ \expandafter\expandafter\expandafter{%
+ \bitsetGetDec{abc}%
+ }{#2}%
+ }%
+ \Test{0}{0}%
+ \Test{1}{1}%
+ \Test{10}{2}%
+ \Test{11}{3}%
+ \Test{100}{4}%
+ \Test{101}{5}%
+ \Test{110}{6}%
+ \Test{111}{7}%
+ \Test{1000}{8}%
+ \Test{000111}{7}%
+ \Test{1111111111111111%
+ 111111111111111}{2147483647}%
+ \Test{0001111111111111111%
+ 111111111111111}{2147483647}%
+ \Test{1000000000000000%
+ 0000000000000000}{2147483648}%
+ \Test{1000000000000000%
+ 00000000000000000}{4294967296}%
+ \Test{0001000000000000000%
+ 00000000000000000}{4294967296}%
+ \Test{1100000000000000%
+ 00000000000000011}{6442450947}%
+\end{qstest}
+
+\begin{qstest}{Clear}{Clear}
+ \def\Test#1#2#3{%
+ \RevSet{abc}{#1}%
+ \bitsetClear{abc}{#2}%
+ \Expect*{\BS@abc}*{\Reverse#3!!}%
+ }%
+ \bitsetClear{abc}{2}%
+ \RevCheck{abc}{0}%
+ \TestErrorNegativeIndex{-1}{\bitsetClear{abc}{-1}}%
+ \RevCheck{abc}{0}%
+ \Test{0}{0}{0}%
+ \Test{1}{0}{0}%
+ \Test{111}{1}{101}%
+ \Test{111}{30}{111}%
+ \Test{0000111}{5}{0000111}% 111 would also be ok
+ \Test{10000111}{5}{10000111}%
+ \Test{1001001}{3}{1000001}%
+\end{qstest}
+
+\begin{qstest}{Set}{Set}
+ \def\Test#1#2#3{%
+ \RevSet{abc}{#1}%
+ \bitsetSet{abc}{#2}%
+ \Expect*{\BS@abc}*{\Reverse#3!!}%
+ }%
+ \bitsetSet{abc}{2}%
+ \RevCheck{abc}{100}%
+ \TestErrorNegativeIndex{-1}{\bitsetSet{abc}{-1}}%
+ \RevCheck{abc}{100}%
+ \Test{0}{0}{1}%
+ \Test{1}{0}{1}%
+ \Test{100}{1}{110}%
+ \Test{111}{1}{111}%
+ \Test{11}{1}{11}%
+ \Test{11}{2}{111}%
+ \Test{11}{3}{1011}%
+ \Test{111}{10}{10000000111}%
+ \Test{0000111}{5}{0100111}% 100111 would also be ok
+ \Test{10000111}{5}{10100111}%
+ \Test{1000001}{3}{1001001}%
+ \Test{1001001}{3}{1001001}%
+\end{qstest}
+
+\begin{qstest}{Flip}{Flip}
+ \def\Test#1#2#3{%
+ \RevSet{abc}{#1}%
+ \bitsetFlip{abc}{#2}%
+ \Expect*{\BS@abc}*{\Reverse#3!!}%
+ }%
+ \bitsetFlip{abc}{2}%
+ \RevCheck{abc}{100}%
+ \TestErrorNegativeIndex{-1}{\bitsetFlip{abc}{-1}}%
+ \RevCheck{abc}{100}%
+ \Test{0}{0}{1}%
+ \Test{1}{0}{0}%
+ \Test{0}{2}{100}%
+ \Test{100}{1}{110}%
+ \Test{111}{1}{101}%
+ \Test{11}{1}{1}%
+ \Test{11}{2}{111}%
+ \Test{11}{3}{1011}%
+ \Test{111}{10}{10000000111}%
+ \Test{0000111}{5}{0100111}% 100111 would also be ok
+ \Test{10000111}{5}{10100111}%
+ \Test{1000001}{3}{1001001}%
+ \Test{1001001}{3}{1000001}%
+ \Test{11111}{2}{11011}%
+\end{qstest}
+
+\begin{qstest}{SetValue}{SetValue}
+ \def\Test#1#2{%
+ \TestError{Invalid bit value (#2) not in range 0..1}{%
+ \bitsetSetValue{abc}{#1}{#2}%
+ }%
+ }%
+ \Test{0}{-1}%
+ \Test{0}{2}%
+ \Test{0}{10}%
+ \def\Test#1#2#3{%
+ \let\BS@abc\@undefined
+ \bitsetSetValue{abc}{#1}{#2}%
+ \bitsetSetBin{result}{#3}%
+ \Expect*{\BS@abc}*{\BS@result}%
+ }%
+ \Test{0}{0}{0}%
+ \Test{0}{1}{1}%
+ \Test{1}{0}{0}%
+ \Test{1}{1}{10}%
+ \def\Test#1#2#3#4{%
+ \bitsetSetBin{abc}{#1}%
+ \bitsetSetBin{result}{#4}%
+ \bitsetSetValue{abc}{#2}{#3}%
+ \Expect*{\BS@abc}*{\BS@result}%
+ }%
+ \Test{0}{0}{0}{0}%
+ \Test{0}{0}{0}{0}%
+ \Test{0}{0}{1}{1}%
+ \Test{0}{1}{0}{0}%
+ \Test{0}{1}{1}{10}%
+ \Test{1010}{2}{1}{1110}%
+ \Test{1010}{4}{1}{11010}%
+ \Test{1010}{6}{1}{1001010}%
+ \Test{1010}{1}{0}{1000}%
+ \Test{1010}{2}{0}{1010}%
+ \Test{1010}{3}{0}{10}%
+ \Test{1010}{4}{0}{1010}%
+ \Test{1010}{6}{0}{1010}%
+ \Test{1010}{2}{\csname iffalse\endcsname 0\else 1\fi}{1110}%
+ \Test{1010}{1}{\csname iffalse\endcsname 1\else 0\fi}{1000}%
+\end{qstest}
+
+\begin{qstest}{IsDefined}{IsDefined}
+ \let\BS@abc\@undefined
+ \Expect*{\bitsetIsDefined{abc}{true}{false}}{false}%
+ \bitsetReset{abc}%
+ \Expect*{\bitsetIsDefined{abc}{true}{false}}{true}%
+\end{qstest}
+
+\begin{qstest}{IsEmpty}{IsEmpty}
+ \let\BS@abc\@undefined
+ \Expect*{\bitsetIsEmpty{abc}{true}{false}}{true}%
+ \bitsetReset{abc}%
+ \Expect*{\bitsetIsEmpty{abc}{true}{false}}{true}%
+ \bitsetSet{abc}{1}%
+ \Expect*{\bitsetIsEmpty{abc}{true}{false}}{false}%
+\end{qstest}
+
+\begin{qstest}{Equals}{Equals}
+ \def\Test#1#2#3{%
+ \Expect*{\bitsetEquals{#1}{#2}{true}{false}}{#3}%
+ }%
+ \let\BS@abc\@undefined
+ \Test{abc}{abc}{true}%
+ \Test{abc}{foo}{true}%
+ \Test{foo}{abc}{true}%
+ \bitsetReset{abc}%
+ \Test{abc}{abc}{true}%
+ \Test{abc}{foo}{false}%
+ \Test{foo}{abc}{false}%
+ \bitsetReset{foo}%
+ \Test{abc}{foo}{true}%
+ \Test{foo}{abc}{true}%
+ \bitsetSet{abc}{4}%
+ \Test{abc}{foo}{false}%
+ \Test{foo}{abc}{false}%
+ \bitsetFlip{foo}{4}%
+ \Test{abc}{foo}{true}%
+ \Test{foo}{abc}{true}%
+\end{qstest}
+
+\begin{qstest}{Intersects}{Intersects}
+ \def\Test#1{%
+ \Expect*{\bitsetIntersects{abc}{foo}{true}{false}}{#1}%
+ }%
+ \let\BS@abc\@undefined
+ \let\BS@foo\@undefined
+ \Test{false}%
+ \Set{abc}{0}%
+ \Test{false}%
+ \Set{foo}{0}%
+ \Test{false}%
+ \let\BS@abc\@undefined
+ \Test{false}%
+ \Set{foo}{1}%
+ \Test{false}%
+ \Set{abc}{0}%
+ \Test{false}%
+ \Set{abc}{1}%
+ \Test{true}%
+ \let\BS@foo\@undefined
+ \Test{false}%
+ \Set{foo}{0}%
+ \Test{false}%
+ \def\Test#1#2#3{%
+ \bitsetSetBin{abc}{#1}%
+ \bitsetSetBin{foo}{#2}%
+ \Expect*{\bitsetIntersects{abc}{foo}{true}{false}}{#3}%
+ }%
+ \Test{1010}{0101}{false}%
+ \Test{0}{10}{false}%
+ \Test{1}{11}{true}%
+ \Test{11}{1}{true}%
+ \Test{10}{1}{false}%
+\end{qstest}
+
+\begin{qstest}{And/AndNot/Or/Xor}{And/AndNot/Or/Xor}
+ \def\@Test#1#2#3#4#5{%
+ \begingroup
+ #5%
+ \begingroup
+ \let\BS@foo\@undefined
+ \csname bitset#1\endcsname{abc}{foo}%
+ \CheckUndef{foo}%
+ \Check{abc}{#2}%
+ \endgroup
+ \begingroup
+ \bitsetReset{foo}%
+ \csname bitset#1\endcsname{abc}{foo}%
+ \Check{foo}{0}%
+ \Check{abc}{#3}%
+ \endgroup
+ \begingroup
+ \def\BS@foo{0101}%
+ \csname bitset#1\endcsname{abc}{foo}%
+ \Check{foo}{0101}%
+ \Check{abc}{#4}%
+ \endgroup
+ \endgroup
+ }%
+ \def\Test#1{%
+ \def\Op{#1}%
+ \Test@
+ }%
+ \def\Test@#1#2#3#4#5#6#7#8#9{%
+ \@Test\Op{#1}{#2}{#3}{%
+ \let\BS@abc\@undefined
+ }%
+ \@Test\Op{#4}{#5}{#6}{%
+ \bitsetReset{abc}%
+ }%
+ \@Test\Op{#7}{#8}{#9}{%
+ \def\BS@abc{1001}%
+ }%
+ }%
+ \Test{And}%
+ {0}{0}{0}%
+ {0}{0}{0}%
+ {0}{0}{0001}%
+ \Test{AndNot}%
+ {0}{0}{0}%
+ {0}{0}{0}%
+ {1001}{1001}{1}%
+ \Test{Or}%
+ {0}{0}{0101}%
+ {0}{0}{0101}%
+ {1001}{1001}{1101}%
+ \Test{Xor}%
+ {0}{0}{0101}%
+ {0}{0}{0101}%
+ {1001}{1001}{11}%
+ \def\Test#1#2#3{%
+ \bitsetSetBin{abc}{#1}%
+ \bitsetSetBin{foo}{#2}%
+ \csname bitset\Op\endcsname{abc}{foo}%
+ \RevCheck{foo}{#2}%
+ \RevCheck{abc}{#3}%
+ }%
+ \def\Op{And}%
+ \Test{1}{111}{1}%
+ \Test{111}{1}{1}%
+ \Test{10}{111}{10}%
+ \Test{111}{10}{10}%
+ \Test{111}{1000}{0}%
+ \Test{1000}{111}{0}%
+ \def\Op{AndNot}%
+ \Test{1010}{11}{1000}%
+ \Test{100}{100}{0}%
+ \Test{111}{1111}{0}%
+ \Test{100}{111}{0}%
+ \def\Op{Or}%
+ \Test{0}{0}{0}%
+ \Test{1}{0}{1}%
+ \Test{0}{1}{1}%
+ \Test{1}{1}{1}%
+ \Test{1000}{10}{1010}%
+ \Test{10}{1000}{1010}%
+ \def\Op{Xor}%
+ \Test{0}{0}{0}%
+ \Test{1}{0}{1}%
+ \Test{0}{1}{1}%
+ \Test{1}{1}{0}%
+ \Test{1000}{10}{1010}%
+ \Test{10}{1000}{1010}%
+ \Test {110011001100}%
+ {111000111000111}%
+ {111110100001011}%
+ \Test{111000111000111}%
+ {110011001100}%
+ {111110100001011}%
+\end{qstest}
+
+\begin{qstest}{GetUndef}{GetUndef, GetBin, GetOct, GetHex}
+ \def\TestUndef#1#2{%
+ \let\BS@abc\@undefined
+ \expandafter\expandafter\expandafter\Expect
+ \expandafter\expandafter\expandafter{%
+ \x{abc}{#1}%
+ }{#2}%
+ }%
+ \let\x\bitsetGetBin
+ \TestUndef{-1}{0}%
+ \TestUndef{0}{0}%
+ \TestUndef{1}{0}%
+ \TestUndef{2}{00}%
+ \TestUndef{8}{00000000}%
+ \let\x\bitsetGetOct
+ \TestUndef{-1}{0}%
+ \TestUndef{0}{0}%
+ \TestUndef{1}{0}%
+ \TestUndef{2}{0}%
+ \TestUndef{3}{0}%
+ \TestUndef{4}{00}%
+ \TestUndef{5}{00}%
+ \TestUndef{6}{00}%
+ \TestUndef{7}{000}%
+ \TestUndef{8}{000}%
+ \TestUndef{9}{000}%
+ \TestUndef{10}{0000}%
+ \let\x\bitsetGetHex
+ \TestUndef{-1}{0}%
+ \TestUndef{0}{0}%
+ \TestUndef{1}{0}%
+ \TestUndef{2}{0}%
+ \TestUndef{3}{0}%
+ \TestUndef{4}{0}%
+ \TestUndef{5}{00}%
+ \TestUndef{6}{00}%
+ \TestUndef{7}{00}%
+ \TestUndef{8}{00}%
+ \TestUndef{9}{000}%
+ \TestUndef{10}{000}%
+ \TestUndef{12}{000}%
+ \TestUndef{13}{0000}%
+ \TestUndef{16}{0000}%
+ \TestUndef{17}{00000}%
+\end{qstest}
+
+\begin{qstest}{SetBin}{SetBin}
+ \def\Test#1#2{%
+ \let\BS@abc\@undefined
+ \bitsetSetBin{abc}{#1}%
+ \expandafter\Expect\expandafter{\BS@abc}{#2}%
+ }%
+ \Test{}{0}%
+ \Test{0}{0}%
+ \Test{1}{1}%
+ \Test{10}{01}%
+ \Test{11}{11}%
+ \Test{010}{01}%
+ \Test{011}{11}%
+ \Test{0010}{01}%
+ \Test{1010}{0101}%
+\end{qstest}
+
+\begin{qstest}{SetOct}{SetOct}
+ \def\Test#1#2{%
+ \bitsetSetOct{abc}{#1}%
+ \expandafter\Expect\expandafter{\BS@abc}{#2}%
+ }%
+ \Test{}{0}%
+ \Test{0}{0}%
+ \Test{000}{0}%
+ \Test{1}{1}%
+ \Test{001}{1}%
+ \Test{010}{0001}%
+ \Test{020}{00001}%
+ \Test{42}{010001}%
+ \Test{377}{11111111}%
+ \Test{0377}{11111111}%
+ \Test{76543210}{000100010110001101011111}%
+ \Test{ 0 7 0 7 1 }{100111000111}%
+\end{qstest}
+
+\begin{qstest}{SetHex}{SetHex}
+ \def\Test#1#2{%
+ \bitsetSetHex{abc}{#1}%
+ \expandafter\Expect\expandafter{\BS@abc}{#2}%
+ }%
+ \Test{}{0}%
+ \Test{0}{0}%
+ \Test{000}{0}%
+ \Test{1}{1}%
+ \Test{001}{1}%
+ \Test{010}{00001}%
+ \Test{020}{000001}%
+ \Test{42}{0100001}%
+ \Test{3F}{111111}%
+ \Test{03F}{111111}%
+ \Test{43210}{0000100001001100001}%
+ \Test{98765}{10100110111000011001}%
+ \Test{FEDCBA}{010111010011101101111111}%
+ \Test{ 0 F 0 F 1 }{1000111100001111}%
+\end{qstest}
+
+\begin{qstest}{SetDec}{SetDec}
+ \def\Test#1#2{%
+ \bitsetSetDec{abc}{#1}%
+ \expandafter\Expect\expandafter{\BS@abc}{#2}%
+ }%
+ \Test{}{0}%
+ \Test{0}{0}%
+ \Test{000}{0}%
+ \Test{1}{1}%
+ \Test{7}{111}%
+ \Test{8}{0001}%
+ \Test{001}{1}%
+ \Test{010}{0101}%
+ \Test{020}{00101}%
+ \Test{53}{101011}%
+ \Test{255}{11111111}%
+ \Test{256}{000000001}%
+ \Test{999999999}{111111111001001101011001110111}%
+ \Test{1000000000}{000000000101001101011001110111}%
+ \Test{4210987654}{01100001010010010111111101011111}%
+ \Test{2147483647}{1111111111111111111111111111111}%
+ \Test{2147483648}{00000000000000000000000000000001}%
+\end{qstest}
+
+\begin{qstest}{GetBin}{GetBin}
+ \def\TestUndef#1#2{%
+ \let\BS@abc\@undefined
+ \expandafter\expandafter\expandafter\Expect
+ \expandafter\expandafter\expandafter{%
+ \bitsetGetBin{abc}{#1}%
+ }{#2}%
+ }%
+ \TestUndef{-1}{0}%
+ \TestUndef{0}{0}%
+ \TestUndef{1}{0}%
+ \TestUndef{2}{00}%
+ \TestUndef{8}{00000000}%
+ \def\Test#1#2{%
+ \bitsetSetBin{abc}{#2}%
+ \expandafter\expandafter\expandafter\Expect
+ \expandafter\expandafter\expandafter{%
+ \bitsetGetBin{abc}{#1}%
+ }{#2}%
+ }%
+ \Test{-1}{0}%
+ \Test{0}{0}%
+ \Test{1}{0}%
+ \Test{1}{1}%
+ \Test{2}{01}%
+ \Test{2}{10}%
+ \Test{3}{010}%
+ \Test{2}{00}%
+ \Test{2}{01}%
+ \Test{8}{00101100}%
+ \Test{2}{10101}%
+ \Test{-100}{11011}%
+\end{qstest}
+
+\begin{qstest}{GetOct}{GetOct}
+ \def\Test#1#2#3{%
+ \edef\x{\zap@space#1 \@empty}%
+ \edef\x{\noexpand\bitsetSetBin{abc}{\x}}%
+ \x
+ \expandafter\expandafter\expandafter\Expect
+ \expandafter\expandafter\expandafter{%
+ \bitsetGetOct{abc}{#2}%
+ }{#3}%
+ }%
+ \Test{111 110 101 100 011 010 001 000}{0}{76543210}%
+ \Test{000 111}{0}{7}%
+ \Test{101 000}{-1}{50}%
+ \Test{111}{-1}{7}%
+ \Test{111}{0}{7}%
+ \Test{111}{1}{7}%
+ \Test{111}{3}{7}%
+ \Test{111}{4}{07}%
+ \Test{111}{6}{07}%
+ \Test{111}{7}{007}%
+ \Test{111 010}{6}{72}%
+ \Test{111 010}{7}{072}%
+ \Test{011 111}{0}{37}%
+ \Test{011 111}{6}{37}%
+ \Test{011 111}{7}{037}%
+ \Test{001 111}{0}{17}%
+ \Test{001 111}{6}{17}%
+ \Test{001 111}{7}{017}%
+\end{qstest}
+
+\begin{qstest}{GetHex}{GetHex}
+ \def\Test#1#2#3{%
+ \bitsetSetBin{abc}{#1}%
+ \expandafter\expandafter\expandafter\Expect
+ \expandafter\expandafter\expandafter{%
+ \bitsetGetHex{abc}{#2}%
+ }{#3}%
+ }%
+ \Test{1111 1110 1101 1100 1011 1010 1001 1000}{0}{FEDCBA98}%
+ \Test{0111 0110 0101 0100 0011 0010 0001 0000}{0}{76543210}%
+ \Test{0000 1111}{0}{F}%
+ \Test{0101 0000}{-1}{50}%
+ \Test{1111}{-1}{F}%
+ \Test{1111}{0}{F}%
+ \Test{1111}{1}{F}%
+ \Test{1111}{4}{F}%
+ \Test{1111}{5}{0F}%
+ \Test{1111}{8}{0F}%
+ \Test{1111}{9}{00F}%
+ \Test{1111 0010}{8}{F2}%
+ \Test{1111 0010}{9}{0F2}%
+ \Test{0111 1111}{0}{7F}%
+ \Test{0111 1111}{8}{7F}%
+ \Test{0111 1111}{9}{07F}%
+ \Test{0011 1111}{0}{3F}%
+ \Test{0011 1111}{8}{3F}%
+ \Test{0011 1111}{9}{03F}%
+ \Test{0001 1111}{0}{1F}%
+ \Test{0001 1111}{8}{1F}%
+ \Test{0001 1111}{9}{01F}%
+\end{qstest}
+
+\begin{qstest}{Range}{Range}
+ \TestError{%
+ Wrong index numbers in range [9..8]\MessageBreak% hash-ok
+ for clear/set/flip on bit set `abc'.\MessageBreak
+ The lower index exceeds the upper index.\MessageBreak
+ Canceling the operation as error recovery%
+ }{%
+ \bitsetSetRange{abc}{9}{8}%
+ }%
+ \def\TestErrorNegInd#1#2#3#4#5#6{%
+ \TestError{%
+ Negative index in range [#2..#3]\MessageBreak % hash-ok
+ for \string\bitset #1Range on bit set `abc'.\MessageBreak
+ Using [#4..#5] as error recovery% hash-ok
+ }{%
+ \csname bitset#1Range\endcsname{abc}{#2}{#3}%
+ \global\let\BS@global\BS@abc
+ }%
+ \Check{global}{#6}%
+ }%
+ \Set{abc}{111}%
+ \TestErrorNegInd{Clear}{-1}{0}{0}{0}{111}%
+ \TestErrorNegInd{Clear}{0}{-1}{0}{0}{111}%
+ \TestErrorNegInd{Clear}{-2}{2}{0}{2}{001}%
+ \bitsetReset{abc}%
+ \TestErrorNegInd{Set}{-1}{0}{0}{0}{0}%
+ \TestErrorNegInd{Set}{0}{-1}{0}{0}{0}%
+ \TestErrorNegInd{Set}{-2}{2}{0}{2}{11}%
+ \Set{abc}{101}%
+ \TestErrorNegInd{Flip}{-1}{0}{0}{0}{101}%
+ \TestErrorNegInd{Flip}{0}{-1}{0}{0}{101}%
+ \TestErrorNegInd{Flip}{-2}{2}{0}{2}{011}%
+ \def\Test#1#2#3#4{%
+ \bitsetSetBin{abc}{#1}%
+ \csname bitset\TestOp Range\endcsname{abc}{#2}{#3}%
+ \Expect*{\bitsetGetBin{abc}{0}}{#4}%
+ }%
+ \def\TestOp{Clear}%
+ \Test{0}{0}{1}{0}%
+ \Test{1111}{1}{2}{1101}%
+ \Test{1111}{1}{3}{1001}%
+ \Test{1111111100000000}{12}{14}{1100111100000000}%
+ \def\TestOp{Set}%
+ \Test{0}{0}{1}{1}%
+ \Test{1000}{1}{2}{1010}%
+ \Test{0}{1}{2}{10}%
+ \Test{1}{12}{15}{111000000000001}%
+ \Test{1111}{1}{3}{1111}%
+ \Test{1000000000000000}{12}{14}{1011000000000000}%
+ \def\TestOp{Flip}%
+ \Test{0}{0}{1}{1}%
+ \Test{1}{0}{1}{0}%
+ \Test{10101010}{1}{5}{10110100}%
+ \def\Test#1#2#3#4#5{%
+ \bitsetSetBin{abc}{#1}%
+ \bitsetSetValueRange{abc}{#2}{#3}{#4}%
+ \Expect*{\bitsetGetBin{abc}{0}}{#5}%
+ }%
+ \Test{0}{0}{1}{0}{0}%
+ \Test{0}{0}{1}{1}{1}%
+ \Test{1010}{1}{3}{0}{1000}%
+ \Test{1010}{1}{3}{1}{1110}%
+\end{qstest}
+
+\begin{qstest}{ShiftLeft/ShiftRight}{ShiftLeft/ShiftRight}
+ \def\@Test#1#2{%
+ \let\BS@abc\@undefined
+ \csname bitsetShift#1\endcsname{abc}{#2}%
+ \Expect*{\BS@abc}{0}%
+ }%
+ \def\Test#1{%
+ \@Test{Left}{#1}%
+ \@Test{Right}{#1}%
+ }%
+ \Test{-16}%
+ \Test{-1}%
+ \Test{0}%
+ \Test{1}%
+ \Test{16}%
+ \def\Test#1#2#3{%
+ \bitsetSetBin{abc}{#1}%
+ \bitsetSetBin{result}{#3}%
+ \csname bitsetShift\Op\endcsname{abc}{#2}%
+ \Expect*{\bitsetGetBin{abc}{0}}*{\bitsetGetBin{result}{0}}%
+ }%
+ \def\Op{Left}%
+ \Test{0}{0}{0}%
+ \Test{0}{1}{0}%
+ \Test{0}{-1}{0}%
+ \Test{1}{0}{1}%
+ \Test{1}{1}{10}%
+ \Test{1}{-1}{0}%
+ \Test{10}{1}{100}%
+ \Test{10}{-1}{1}%
+ \Test{1}{32}{100000000000000000000000000000000}%
+ \Test{1}{-100}{0}%
+ \def\Op{Right}%
+ \Test{0}{0}{0}%
+ \Test{0}{1}{0}%
+ \Test{0}{-1}{0}%
+ \Test{1}{0}{1}%
+ \Test{1}{1}{0}%
+ \Test{1}{-1}{10}%
+ \Test{10}{1}{1}%
+ \Test{10}{-1}{100}%
+ \Test{1}{-32}{100000000000000000000000000000000}%
+ \Test{1}{100}{0}%
+ \Test{110110110110110}{10}{11011}%
+ \Test{110110110110110}{100}{0}%
+ \Test{1}{100000}{0}%
+\end{qstest}
+
+\begin{qstest}{Profile: Set}{Profile: Set}
+ \bitsetSet{abc}{4095}%
+ \global\let\BS@global\BS@abc
+\end{qstest}
+
+\begin{qstest}{Profile: Get}{Profile: Get}
+ \edef\x{\bitsetGet{global}{4095}}%
+\end{qstest}
+
+\begin{document}
+\end{document}
+\endinput
+%%
+%% End of file `bitset-test2.tex'.
diff --git a/Master/texmf-dist/doc/latex/oberdiek/bitset-test3.tex b/Master/texmf-dist/doc/latex/oberdiek/bitset-test3.tex
new file mode 100644
index 00000000000..a53c82704c8
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/oberdiek/bitset-test3.tex
@@ -0,0 +1,1098 @@
+%%
+%% This is file `bitset-test3.tex',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% bitset.dtx (with options: `test2,noetex')
+%%
+%% This is a generated file.
+%%
+%% Copyright (C) 2007 by Heiko Oberdiek <oberdiek@uni-freiburg.de>
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any later
+%% version. The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% This Current Maintainer of this work is Heiko Oberdiek.
+%%
+%% This work consists of the main source file bitset.dtx
+%% and the derived files
+%% bitset.sty, bitset.pdf, bitset.ins, bitset.drv,
+%% bitset-test1.tex, bitset-test2.tex, bitset-test3.tex.
+%%
+\NeedsTeXFormat{LaTeX2e}
+\nofiles
+\documentclass{article}
+\makeatletter
+\let\SavedNumexpr\numexpr
+\let\SavedIfcsname\ifcsname
+\let\SavedCurrentgrouplevel\currentgrouplevel
+\def\ETeXDisable{%
+ \let\ifcsname\@undefined
+ \let\numexpr\@undefined
+ \let\currentgrouplevel\@undefined
+}
+\ETeXDisable
+\makeatletter
+\chardef\BitSet@TestMode=1 %
+\makeatother
+\usepackage{bitset}[2007/09/28]
+\def\ETeXEnable{%
+ \let\numexpr\SavedNumexpr
+ \let\ifcsname\SavedIfcsname
+ \let\currentgrouplevel\SavedCurrentgrouplevel
+}
+\ETeXEnable
+\usepackage{qstest}
+\IncludeTests{*}
+\LogTests{log}{*}{*}
+\makeatletter
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname pdfresettimer\endcsname\relax
+\else
+ \newcount\SummaryTime
+ \newcount\TestTime
+ \SummaryTime=\z@
+ \newcommand*{\PrintTime}[2]{%
+ \typeout{%
+ [Time #1: \strip@pt\dimexpr\number#2sp\relax\space s]%
+ }%
+ }%
+ \newcommand*{\StartTime}[1]{%
+ \renewcommand*{\TimeDescription}{#1}%
+ \pdfresettimer
+ }%
+ \newcommand*{\TimeDescription}{}%
+ \newcommand*{\StopTime}{%
+ \TestTime=\pdfelapsedtime
+ \global\advance\SummaryTime\TestTime
+ \PrintTime\TimeDescription\TestTime
+ }%
+ \let\saved@qstest\qstest
+ \let\saved@endqstest\endqstest
+ \def\qstest#1#2{%
+ \saved@qstest{#1}{#2}%
+ \StartTime{#1}%
+ }%
+ \def\endqstest{%
+ \StopTime
+ \saved@endqstest
+ }%
+ \AtEndDocument{%
+ \PrintTime{summary}\SummaryTime
+ }%
+\fi
+\let\orig@qstest\qstest
+\let\orig@endqstest\endqstest
+\def\qstest#1#2{%
+ \orig@qstest{#1}{#2}%
+ \setbox0\hbox\bgroup\begingroup\ignorespaces
+}
+\def\endqstest{%
+ \endgroup\egroup
+ \Expect*{\the\wd0}{0.0pt}%
+ \orig@endqstest
+}
+\newcounter{Test}
+
+\def\TestError#1#2{%
+ \begingroup
+ \setcounter{Test}{0}%
+ \sbox0{%
+ \def\@PackageError##1##2##3{%
+ \stepcounter{Test}%
+ \begingroup
+ \let\MessageBreak\relax
+ \ETeXEnable
+ \Expect{##1}{bitset}%
+ \Expect*{##2}*{#1}%
+ \endgroup
+ }%
+ \ETeXDisable
+ #2%
+ }%
+ \Expect*{\theTest}{1}%
+ \Expect*{\the\wd0}{0.0pt}%
+ \endgroup
+}
+
+\def\TestErrorNegativeIndex#1#2{%
+ \TestError{Invalid negative index (#1)}{#2}%
+}
+
+\def\TestGetterUndefined#1{%
+ \CheckUndef{dummy}%
+ \expandafter\expandafter\expandafter\Expect
+ \expandafter\expandafter\expandafter{#1{dummy}}{0}%
+}
+
+\def\ExpectBitSet#1#2{%
+ \expandafter\expandafter\expandafter\Expect
+ \expandafter\expandafter\expandafter
+ {\csname BS@#1\endcsname}*{#2}%
+}
+\def\Check#1#2{%
+ \ExpectBitSet{#1}{#2}%
+}
+\def\CheckUndef#1{%
+ \begingroup
+ \Expect*{%
+ \expandafter
+ \ifx\csname BS@#1\endcsname\relax true\else false\fi
+ }{true}%
+ \endgroup
+}
+\def\RevCheck#1#2{%
+ \ExpectBitSet{#1}{\Reverse#2!!}%
+}
+\def\Set#1#2{%
+ \expandafter\def\csname BS@#1\endcsname{#2}%
+}
+\def\RevSet#1#2{%
+ \expandafter\edef\csname BS@#1\endcsname{%
+ \Reverse#2!!%
+ }%
+}
+\def\Reverse#1#2!#3!{%
+ \ifx\\#2\\%
+ #1#3%
+ \expandafter\@gobble
+ \else
+ \expandafter\@firstofone
+ \fi
+ {\Reverse#2!#1#3!}%
+}
+\begin{qstest}{Let}{Let}
+ \CheckUndef{abc}%
+ \CheckUndef{xyz}%
+ \bitsetLet{xyz}{abc}%
+ \CheckUndef{abc}%
+ \Check{xyz}{0}%
+ \Set{abc}{1}%
+ \Check{abc}{1}%
+ \Check{xyz}{0}%
+ \bitsetLet{xyz}{abc}%
+ \Check{abc}{1}%
+ \Check{xyz}{1}%
+ \Set{xyz}{11}%
+ \Check{abc}{1}%
+ \Check{xyz}{11}%
+\end{qstest}
+
+\begin{qstest}{Reset}{Reset}
+ \bitsetReset{xyz}%
+ \Check{xyz}{0}%
+ \bitsetReset{abc}%
+ \Check{abc}{0}%
+ \Set{abc}{10101}%
+ \bitsetReset{abc}%
+ \Check{abc}{0}%
+\end{qstest}
+
+\begin{qstest}{Get/Query}{Get/Query}
+ \expandafter\expandafter\expandafter\Expect
+ \expandafter\expandafter\expandafter{%
+ \bitsetGet{dummy}{0}%
+ }{0}%
+ \begingroup
+ \expandafter\def\csname BitSetError:NegativeIndex\endcsname{}%
+ \Set{abc}{1}%
+ \Expect*{\bitsetQuery{abc}{-1}{true}{false}}{false}%
+ \endgroup
+ \def\Test#1#2#3{%
+ \Set{abc}{#1}%
+ \expandafter\expandafter\expandafter\Expect
+ \expandafter\expandafter\expandafter{\bitsetGet{abc}{#2}}{#3}%
+ \Expect*{\bitsetQuery{abc}{#2}{true}{false}}%
+ *{\ifcase#3 false\or true\else error\fi}%
+ }%
+ \Test{1}{100}{0}%
+ \Test{0}{0}{0}%
+ \Test{1}{0}{1}%
+ \Test{11}{1}{1}%
+ \Test{111}{1}{1}%
+ \Test{101}{1}{0}%
+ \Test{101}{2}{1}%
+ \Test{10100110011}{10}{1}%
+\end{qstest}
+
+\begin{qstest}{Size}{Size}
+ \TestGetterUndefined\bitsetSize
+ \def\Test#1#2{%
+ \Set{abc}{#1}%
+ \expandafter\expandafter\expandafter\Expect
+ \expandafter\expandafter\expandafter{\bitsetSize{abc}}{#2}%
+ }%
+ \Test{0}{0}%
+ \Test{1}{1}%
+ \Test{00}{0}%
+ \Test{0000000}{0}%
+ \Test{10}{1}%
+ \Test{01}{2}%
+ \Test{11}{2}%
+ \Test{010}{2}%
+ \Test{011}{3}%
+ \Test{100110011}{9}%
+ \Test{0000011111000001111100000}{20}%
+ \Test{000000000000000000000000011111111111111111111}{45}%
+\end{qstest}
+
+\begin{qstest}{Cardinality}{Cardinality}
+ \TestGetterUndefined\bitsetCardinality
+ \def\Test#1#2{%
+ \Set{abc}{#1}%
+ \expandafter\expandafter\expandafter\Expect
+ \expandafter\expandafter\expandafter{%
+ \bitsetCardinality{abc}%
+ }{#2}%
+ }%
+ \Test{0}{0}%
+ \Test{1}{1}%
+ \Test{00}{0}%
+ \Test{0000000}{0}%
+ \Test{10}{1}%
+ \Test{01}{1}%
+ \Test{11}{2}%
+ \Test{010}{1}%
+ \Test{011}{2}%
+ \Test{100110011}{5}%
+ \Test{0000011111000001111100000}{10}%
+ \Test{000000000000000000000000011111111111111111111}{20}%
+\end{qstest}
+
+\begin{qstest}{NextClearBit/NextSetBit}{NextClearBit/NextSetBit}
+ \def\Test#1#2{%
+ \expandafter\expandafter\expandafter\Expect
+ \expandafter\expandafter\expandafter{%
+ \TestOp{abc}{#1}%
+ }{#2}%
+ }%
+ \def\Clear{\let\TestOp\bitsetNextClearBit}%
+ \def\Set{\let\TestOp\bitsetNextSetBit}%
+ \begingroup
+ \catcode`\:=11 %
+ \bitsetSetBin{abc}{1}%
+ \Clear
+ \Test{-1}{1\BitSetError:NegativeIndex}%
+ \Set
+ \Test{-1}{0\BitSetError:NegativeIndex}%
+ \endgroup
+ \let\BS@abc\@undefined
+ \Clear
+ \Test{0}{0}%
+ \Test{1}{1}%
+ \Test{2}{2}%
+ \Test{100}{100}%
+ \Set
+ \Test{0}{-1}%
+ \Test{1}{-1}%
+ \Test{100}{-1}%
+ \bitsetReset{abc}%
+ \Clear
+ \Test{0}{0}%
+ \Test{1}{1}%
+ \Test{2}{2}%
+ \Test{100}{100}%
+ \Set
+ \Test{0}{-1}%
+ \Test{1}{-1}%
+ \Test{100}{-1}%
+ \bitsetSetBin{abc}{1}%
+ \Clear
+ \Test{0}{1}%
+ \Test{1}{1}%
+ \Test{2}{2}%
+ \Test{100}{100}%
+ \Set
+ \Test{0}{0}%
+ \Test{1}{-1}%
+ \Test{100}{-1}%
+ \bitsetSetBin{abc}{111000111000111000111}%
+ \Clear
+ \Test{0}{3}%
+ \Test{1}{3}%
+ \Test{2}{3}%
+ \Test{3}{3}%
+ \Test{4}{4}%
+ \Test{5}{5}%
+ \Test{6}{9}%
+ \Test{7}{9}%
+ \Test{8}{9}%
+ \Test{9}{9}%
+ \Test{10}{10}%
+ \Test{11}{11}%
+ \Test{12}{15}%
+ \Test{13}{15}%
+ \Test{14}{15}%
+ \Test{15}{15}%
+ \Test{16}{16}%
+ \Test{17}{17}%
+ \Test{18}{21}%
+ \Test{19}{21}%
+ \Test{20}{21}%
+ \Test{21}{21}%
+ \Test{22}{22}%
+ \Test{100}{100}%
+ \Set
+ \Test{0}{0}%
+ \Test{1}{1}%
+ \Test{2}{2}%
+ \Test{3}{6}%
+ \Test{4}{6}%
+ \Test{5}{6}%
+ \Test{6}{6}%
+ \Test{7}{7}%
+ \Test{8}{8}%
+ \Test{9}{12}%
+ \Test{10}{12}%
+ \Test{11}{12}%
+ \Test{12}{12}%
+ \Test{13}{13}%
+ \Test{14}{14}%
+ \Test{15}{18}%
+ \Test{16}{18}%
+ \Test{17}{18}%
+ \Test{18}{18}%
+ \Test{19}{19}%
+ \Test{20}{20}%
+ \Test{21}{-1}%
+ \Test{22}{-1}%
+ \Test{100}{-1}%
+ \bitsetSetBin{abc}{1111111}%
+ \Clear
+ \Test{6}{7}%
+ \Test{7}{7}%
+ \Test{8}{8}%
+ \Test{100}{100}%
+ \Set
+ \Test{6}{6}%
+ \Test{7}{-1}%
+ \Test{8}{-1}%
+ \Test{100}{-1}%
+ \bitsetSetBin{abc}{11111111}%
+ \Clear
+ \Test{7}{8}%
+ \Test{8}{8}%
+ \Test{9}{9}%
+ \Test{100}{100}%
+ \Set
+ \Test{7}{7}%
+ \Test{8}{-1}%
+ \Test{9}{-1}%
+ \Test{100}{-1}%
+ \bitsetSetBin{abc}{111111111}%
+ \Clear
+ \Test{8}{9}%
+ \Test{9}{9}%
+ \Test{10}{10}%
+ \Test{100}{100}%
+ \Set
+ \Test{8}{8}%
+ \Test{9}{-1}%
+ \Test{10}{-1}%
+ \Test{100}{-1}%
+ \bitsetSetBin{abc}{1111111111}%
+ \Clear
+ \Test{9}{10}%
+ \Test{10}{10}%
+ \Test{11}{11}%
+ \Test{100}{100}%
+ \Set
+ \Test{9}{9}%
+ \Test{10}{-1}%
+ \Test{11}{-1}%
+ \Test{100}{-1}%
+\end{qstest}
+
+\begin{qstest}{GetSetBitList}{GetSetBitList}
+ \let\BS@abc\@undefined
+ \expandafter\expandafter\expandafter\Expect
+ \expandafter\expandafter\expandafter{%
+ \bitsetGetSetBitList{abc}%
+ }{}%
+ \def\Test#1#2{%
+ \bitsetSetBin{abc}{#1}%
+ \expandafter\expandafter\expandafter\Expect
+ \expandafter\expandafter\expandafter{%
+ \bitsetGetSetBitList{abc}%
+ }{#2}%
+ }%
+ \Test{0}{}%
+ \Test{1}{0}%
+ \Test{10}{1}%
+ \Test{11}{0,1}%
+ \Test{10110100}{2,4,5,7}%
+ \Test{101101001010011}{0,1,4,6,9,11,12,14}%
+\end{qstest}
+
+\begin{qstest}{GetDec}{GetDec}
+ \TestGetterUndefined\bitsetGetDec
+ \def\Test#1#2{%
+ \RevSet{abc}{#1}%
+ \begingroup\expandafter\expandafter\expandafter\endgroup
+ \expandafter\expandafter\expandafter\Expect
+ \expandafter\expandafter\expandafter{%
+ \bitsetGetDec{abc}%
+ }{#2}%
+ }%
+ \Test{0}{0}%
+ \Test{1}{1}%
+ \Test{10}{2}%
+ \Test{11}{3}%
+ \Test{100}{4}%
+ \Test{101}{5}%
+ \Test{110}{6}%
+ \Test{111}{7}%
+ \Test{1000}{8}%
+ \Test{000111}{7}%
+ \Test{1111111111111111%
+ 111111111111111}{2147483647}%
+ \Test{0001111111111111111%
+ 111111111111111}{2147483647}%
+ \Test{1000000000000000%
+ 0000000000000000}{2147483648}%
+ \Test{1000000000000000%
+ 00000000000000000}{4294967296}%
+ \Test{0001000000000000000%
+ 00000000000000000}{4294967296}%
+ \Test{1100000000000000%
+ 00000000000000011}{6442450947}%
+\end{qstest}
+
+\begin{qstest}{Clear}{Clear}
+ \def\Test#1#2#3{%
+ \RevSet{abc}{#1}%
+ \bitsetClear{abc}{#2}%
+ \Expect*{\BS@abc}*{\Reverse#3!!}%
+ }%
+ \bitsetClear{abc}{2}%
+ \RevCheck{abc}{0}%
+ \TestErrorNegativeIndex{-1}{\bitsetClear{abc}{-1}}%
+ \RevCheck{abc}{0}%
+ \Test{0}{0}{0}%
+ \Test{1}{0}{0}%
+ \Test{111}{1}{101}%
+ \Test{111}{30}{111}%
+ \Test{0000111}{5}{0000111}% 111 would also be ok
+ \Test{10000111}{5}{10000111}%
+ \Test{1001001}{3}{1000001}%
+\end{qstest}
+
+\begin{qstest}{Set}{Set}
+ \def\Test#1#2#3{%
+ \RevSet{abc}{#1}%
+ \bitsetSet{abc}{#2}%
+ \Expect*{\BS@abc}*{\Reverse#3!!}%
+ }%
+ \bitsetSet{abc}{2}%
+ \RevCheck{abc}{100}%
+ \TestErrorNegativeIndex{-1}{\bitsetSet{abc}{-1}}%
+ \RevCheck{abc}{100}%
+ \Test{0}{0}{1}%
+ \Test{1}{0}{1}%
+ \Test{100}{1}{110}%
+ \Test{111}{1}{111}%
+ \Test{11}{1}{11}%
+ \Test{11}{2}{111}%
+ \Test{11}{3}{1011}%
+ \Test{111}{10}{10000000111}%
+ \Test{0000111}{5}{0100111}% 100111 would also be ok
+ \Test{10000111}{5}{10100111}%
+ \Test{1000001}{3}{1001001}%
+ \Test{1001001}{3}{1001001}%
+\end{qstest}
+
+\begin{qstest}{Flip}{Flip}
+ \def\Test#1#2#3{%
+ \RevSet{abc}{#1}%
+ \bitsetFlip{abc}{#2}%
+ \Expect*{\BS@abc}*{\Reverse#3!!}%
+ }%
+ \bitsetFlip{abc}{2}%
+ \RevCheck{abc}{100}%
+ \TestErrorNegativeIndex{-1}{\bitsetFlip{abc}{-1}}%
+ \RevCheck{abc}{100}%
+ \Test{0}{0}{1}%
+ \Test{1}{0}{0}%
+ \Test{0}{2}{100}%
+ \Test{100}{1}{110}%
+ \Test{111}{1}{101}%
+ \Test{11}{1}{1}%
+ \Test{11}{2}{111}%
+ \Test{11}{3}{1011}%
+ \Test{111}{10}{10000000111}%
+ \Test{0000111}{5}{0100111}% 100111 would also be ok
+ \Test{10000111}{5}{10100111}%
+ \Test{1000001}{3}{1001001}%
+ \Test{1001001}{3}{1000001}%
+ \Test{11111}{2}{11011}%
+\end{qstest}
+
+\begin{qstest}{SetValue}{SetValue}
+ \def\Test#1#2{%
+ \TestError{Invalid bit value (#2) not in range 0..1}{%
+ \bitsetSetValue{abc}{#1}{#2}%
+ }%
+ }%
+ \Test{0}{-1}%
+ \Test{0}{2}%
+ \Test{0}{10}%
+ \def\Test#1#2#3{%
+ \let\BS@abc\@undefined
+ \bitsetSetValue{abc}{#1}{#2}%
+ \bitsetSetBin{result}{#3}%
+ \Expect*{\BS@abc}*{\BS@result}%
+ }%
+ \Test{0}{0}{0}%
+ \Test{0}{1}{1}%
+ \Test{1}{0}{0}%
+ \Test{1}{1}{10}%
+ \def\Test#1#2#3#4{%
+ \bitsetSetBin{abc}{#1}%
+ \bitsetSetBin{result}{#4}%
+ \bitsetSetValue{abc}{#2}{#3}%
+ \Expect*{\BS@abc}*{\BS@result}%
+ }%
+ \Test{0}{0}{0}{0}%
+ \Test{0}{0}{0}{0}%
+ \Test{0}{0}{1}{1}%
+ \Test{0}{1}{0}{0}%
+ \Test{0}{1}{1}{10}%
+ \Test{1010}{2}{1}{1110}%
+ \Test{1010}{4}{1}{11010}%
+ \Test{1010}{6}{1}{1001010}%
+ \Test{1010}{1}{0}{1000}%
+ \Test{1010}{2}{0}{1010}%
+ \Test{1010}{3}{0}{10}%
+ \Test{1010}{4}{0}{1010}%
+ \Test{1010}{6}{0}{1010}%
+ \Test{1010}{2}{\csname iffalse\endcsname 0\else 1\fi}{1110}%
+ \Test{1010}{1}{\csname iffalse\endcsname 1\else 0\fi}{1000}%
+\end{qstest}
+
+\begin{qstest}{IsDefined}{IsDefined}
+ \let\BS@abc\@undefined
+ \Expect*{\bitsetIsDefined{abc}{true}{false}}{false}%
+ \bitsetReset{abc}%
+ \Expect*{\bitsetIsDefined{abc}{true}{false}}{true}%
+\end{qstest}
+
+\begin{qstest}{IsEmpty}{IsEmpty}
+ \let\BS@abc\@undefined
+ \Expect*{\bitsetIsEmpty{abc}{true}{false}}{true}%
+ \bitsetReset{abc}%
+ \Expect*{\bitsetIsEmpty{abc}{true}{false}}{true}%
+ \bitsetSet{abc}{1}%
+ \Expect*{\bitsetIsEmpty{abc}{true}{false}}{false}%
+\end{qstest}
+
+\begin{qstest}{Equals}{Equals}
+ \def\Test#1#2#3{%
+ \Expect*{\bitsetEquals{#1}{#2}{true}{false}}{#3}%
+ }%
+ \let\BS@abc\@undefined
+ \Test{abc}{abc}{true}%
+ \Test{abc}{foo}{true}%
+ \Test{foo}{abc}{true}%
+ \bitsetReset{abc}%
+ \Test{abc}{abc}{true}%
+ \Test{abc}{foo}{false}%
+ \Test{foo}{abc}{false}%
+ \bitsetReset{foo}%
+ \Test{abc}{foo}{true}%
+ \Test{foo}{abc}{true}%
+ \bitsetSet{abc}{4}%
+ \Test{abc}{foo}{false}%
+ \Test{foo}{abc}{false}%
+ \bitsetFlip{foo}{4}%
+ \Test{abc}{foo}{true}%
+ \Test{foo}{abc}{true}%
+\end{qstest}
+
+\begin{qstest}{Intersects}{Intersects}
+ \def\Test#1{%
+ \Expect*{\bitsetIntersects{abc}{foo}{true}{false}}{#1}%
+ }%
+ \let\BS@abc\@undefined
+ \let\BS@foo\@undefined
+ \Test{false}%
+ \Set{abc}{0}%
+ \Test{false}%
+ \Set{foo}{0}%
+ \Test{false}%
+ \let\BS@abc\@undefined
+ \Test{false}%
+ \Set{foo}{1}%
+ \Test{false}%
+ \Set{abc}{0}%
+ \Test{false}%
+ \Set{abc}{1}%
+ \Test{true}%
+ \let\BS@foo\@undefined
+ \Test{false}%
+ \Set{foo}{0}%
+ \Test{false}%
+ \def\Test#1#2#3{%
+ \bitsetSetBin{abc}{#1}%
+ \bitsetSetBin{foo}{#2}%
+ \Expect*{\bitsetIntersects{abc}{foo}{true}{false}}{#3}%
+ }%
+ \Test{1010}{0101}{false}%
+ \Test{0}{10}{false}%
+ \Test{1}{11}{true}%
+ \Test{11}{1}{true}%
+ \Test{10}{1}{false}%
+\end{qstest}
+
+\begin{qstest}{And/AndNot/Or/Xor}{And/AndNot/Or/Xor}
+ \def\@Test#1#2#3#4#5{%
+ \begingroup
+ #5%
+ \begingroup
+ \let\BS@foo\@undefined
+ \csname bitset#1\endcsname{abc}{foo}%
+ \CheckUndef{foo}%
+ \Check{abc}{#2}%
+ \endgroup
+ \begingroup
+ \bitsetReset{foo}%
+ \csname bitset#1\endcsname{abc}{foo}%
+ \Check{foo}{0}%
+ \Check{abc}{#3}%
+ \endgroup
+ \begingroup
+ \def\BS@foo{0101}%
+ \csname bitset#1\endcsname{abc}{foo}%
+ \Check{foo}{0101}%
+ \Check{abc}{#4}%
+ \endgroup
+ \endgroup
+ }%
+ \def\Test#1{%
+ \def\Op{#1}%
+ \Test@
+ }%
+ \def\Test@#1#2#3#4#5#6#7#8#9{%
+ \@Test\Op{#1}{#2}{#3}{%
+ \let\BS@abc\@undefined
+ }%
+ \@Test\Op{#4}{#5}{#6}{%
+ \bitsetReset{abc}%
+ }%
+ \@Test\Op{#7}{#8}{#9}{%
+ \def\BS@abc{1001}%
+ }%
+ }%
+ \Test{And}%
+ {0}{0}{0}%
+ {0}{0}{0}%
+ {0}{0}{0001}%
+ \Test{AndNot}%
+ {0}{0}{0}%
+ {0}{0}{0}%
+ {1001}{1001}{1}%
+ \Test{Or}%
+ {0}{0}{0101}%
+ {0}{0}{0101}%
+ {1001}{1001}{1101}%
+ \Test{Xor}%
+ {0}{0}{0101}%
+ {0}{0}{0101}%
+ {1001}{1001}{11}%
+ \def\Test#1#2#3{%
+ \bitsetSetBin{abc}{#1}%
+ \bitsetSetBin{foo}{#2}%
+ \csname bitset\Op\endcsname{abc}{foo}%
+ \RevCheck{foo}{#2}%
+ \RevCheck{abc}{#3}%
+ }%
+ \def\Op{And}%
+ \Test{1}{111}{1}%
+ \Test{111}{1}{1}%
+ \Test{10}{111}{10}%
+ \Test{111}{10}{10}%
+ \Test{111}{1000}{0}%
+ \Test{1000}{111}{0}%
+ \def\Op{AndNot}%
+ \Test{1010}{11}{1000}%
+ \Test{100}{100}{0}%
+ \Test{111}{1111}{0}%
+ \Test{100}{111}{0}%
+ \def\Op{Or}%
+ \Test{0}{0}{0}%
+ \Test{1}{0}{1}%
+ \Test{0}{1}{1}%
+ \Test{1}{1}{1}%
+ \Test{1000}{10}{1010}%
+ \Test{10}{1000}{1010}%
+ \def\Op{Xor}%
+ \Test{0}{0}{0}%
+ \Test{1}{0}{1}%
+ \Test{0}{1}{1}%
+ \Test{1}{1}{0}%
+ \Test{1000}{10}{1010}%
+ \Test{10}{1000}{1010}%
+ \Test {110011001100}%
+ {111000111000111}%
+ {111110100001011}%
+ \Test{111000111000111}%
+ {110011001100}%
+ {111110100001011}%
+\end{qstest}
+
+\begin{qstest}{GetUndef}{GetUndef, GetBin, GetOct, GetHex}
+ \def\TestUndef#1#2{%
+ \let\BS@abc\@undefined
+ \expandafter\expandafter\expandafter\Expect
+ \expandafter\expandafter\expandafter{%
+ \x{abc}{#1}%
+ }{#2}%
+ }%
+ \let\x\bitsetGetBin
+ \TestUndef{-1}{0}%
+ \TestUndef{0}{0}%
+ \TestUndef{1}{0}%
+ \TestUndef{2}{00}%
+ \TestUndef{8}{00000000}%
+ \let\x\bitsetGetOct
+ \TestUndef{-1}{0}%
+ \TestUndef{0}{0}%
+ \TestUndef{1}{0}%
+ \TestUndef{2}{0}%
+ \TestUndef{3}{0}%
+ \TestUndef{4}{00}%
+ \TestUndef{5}{00}%
+ \TestUndef{6}{00}%
+ \TestUndef{7}{000}%
+ \TestUndef{8}{000}%
+ \TestUndef{9}{000}%
+ \TestUndef{10}{0000}%
+ \let\x\bitsetGetHex
+ \TestUndef{-1}{0}%
+ \TestUndef{0}{0}%
+ \TestUndef{1}{0}%
+ \TestUndef{2}{0}%
+ \TestUndef{3}{0}%
+ \TestUndef{4}{0}%
+ \TestUndef{5}{00}%
+ \TestUndef{6}{00}%
+ \TestUndef{7}{00}%
+ \TestUndef{8}{00}%
+ \TestUndef{9}{000}%
+ \TestUndef{10}{000}%
+ \TestUndef{12}{000}%
+ \TestUndef{13}{0000}%
+ \TestUndef{16}{0000}%
+ \TestUndef{17}{00000}%
+\end{qstest}
+
+\begin{qstest}{SetBin}{SetBin}
+ \def\Test#1#2{%
+ \let\BS@abc\@undefined
+ \bitsetSetBin{abc}{#1}%
+ \expandafter\Expect\expandafter{\BS@abc}{#2}%
+ }%
+ \Test{}{0}%
+ \Test{0}{0}%
+ \Test{1}{1}%
+ \Test{10}{01}%
+ \Test{11}{11}%
+ \Test{010}{01}%
+ \Test{011}{11}%
+ \Test{0010}{01}%
+ \Test{1010}{0101}%
+\end{qstest}
+
+\begin{qstest}{SetOct}{SetOct}
+ \def\Test#1#2{%
+ \bitsetSetOct{abc}{#1}%
+ \expandafter\Expect\expandafter{\BS@abc}{#2}%
+ }%
+ \Test{}{0}%
+ \Test{0}{0}%
+ \Test{000}{0}%
+ \Test{1}{1}%
+ \Test{001}{1}%
+ \Test{010}{0001}%
+ \Test{020}{00001}%
+ \Test{42}{010001}%
+ \Test{377}{11111111}%
+ \Test{0377}{11111111}%
+ \Test{76543210}{000100010110001101011111}%
+ \Test{ 0 7 0 7 1 }{100111000111}%
+\end{qstest}
+
+\begin{qstest}{SetHex}{SetHex}
+ \def\Test#1#2{%
+ \bitsetSetHex{abc}{#1}%
+ \expandafter\Expect\expandafter{\BS@abc}{#2}%
+ }%
+ \Test{}{0}%
+ \Test{0}{0}%
+ \Test{000}{0}%
+ \Test{1}{1}%
+ \Test{001}{1}%
+ \Test{010}{00001}%
+ \Test{020}{000001}%
+ \Test{42}{0100001}%
+ \Test{3F}{111111}%
+ \Test{03F}{111111}%
+ \Test{43210}{0000100001001100001}%
+ \Test{98765}{10100110111000011001}%
+ \Test{FEDCBA}{010111010011101101111111}%
+ \Test{ 0 F 0 F 1 }{1000111100001111}%
+\end{qstest}
+
+\begin{qstest}{SetDec}{SetDec}
+ \def\Test#1#2{%
+ \bitsetSetDec{abc}{#1}%
+ \expandafter\Expect\expandafter{\BS@abc}{#2}%
+ }%
+ \Test{}{0}%
+ \Test{0}{0}%
+ \Test{000}{0}%
+ \Test{1}{1}%
+ \Test{7}{111}%
+ \Test{8}{0001}%
+ \Test{001}{1}%
+ \Test{010}{0101}%
+ \Test{020}{00101}%
+ \Test{53}{101011}%
+ \Test{255}{11111111}%
+ \Test{256}{000000001}%
+ \Test{999999999}{111111111001001101011001110111}%
+ \Test{1000000000}{000000000101001101011001110111}%
+ \Test{4210987654}{01100001010010010111111101011111}%
+ \Test{2147483647}{1111111111111111111111111111111}%
+ \Test{2147483648}{00000000000000000000000000000001}%
+\end{qstest}
+
+\begin{qstest}{GetBin}{GetBin}
+ \def\TestUndef#1#2{%
+ \let\BS@abc\@undefined
+ \expandafter\expandafter\expandafter\Expect
+ \expandafter\expandafter\expandafter{%
+ \bitsetGetBin{abc}{#1}%
+ }{#2}%
+ }%
+ \TestUndef{-1}{0}%
+ \TestUndef{0}{0}%
+ \TestUndef{1}{0}%
+ \TestUndef{2}{00}%
+ \TestUndef{8}{00000000}%
+ \def\Test#1#2{%
+ \bitsetSetBin{abc}{#2}%
+ \expandafter\expandafter\expandafter\Expect
+ \expandafter\expandafter\expandafter{%
+ \bitsetGetBin{abc}{#1}%
+ }{#2}%
+ }%
+ \Test{-1}{0}%
+ \Test{0}{0}%
+ \Test{1}{0}%
+ \Test{1}{1}%
+ \Test{2}{01}%
+ \Test{2}{10}%
+ \Test{3}{010}%
+ \Test{2}{00}%
+ \Test{2}{01}%
+ \Test{8}{00101100}%
+ \Test{2}{10101}%
+ \Test{-100}{11011}%
+\end{qstest}
+
+\begin{qstest}{GetOct}{GetOct}
+ \def\Test#1#2#3{%
+ \edef\x{\zap@space#1 \@empty}%
+ \edef\x{\noexpand\bitsetSetBin{abc}{\x}}%
+ \x
+ \expandafter\expandafter\expandafter\Expect
+ \expandafter\expandafter\expandafter{%
+ \bitsetGetOct{abc}{#2}%
+ }{#3}%
+ }%
+ \Test{111 110 101 100 011 010 001 000}{0}{76543210}%
+ \Test{000 111}{0}{7}%
+ \Test{101 000}{-1}{50}%
+ \Test{111}{-1}{7}%
+ \Test{111}{0}{7}%
+ \Test{111}{1}{7}%
+ \Test{111}{3}{7}%
+ \Test{111}{4}{07}%
+ \Test{111}{6}{07}%
+ \Test{111}{7}{007}%
+ \Test{111 010}{6}{72}%
+ \Test{111 010}{7}{072}%
+ \Test{011 111}{0}{37}%
+ \Test{011 111}{6}{37}%
+ \Test{011 111}{7}{037}%
+ \Test{001 111}{0}{17}%
+ \Test{001 111}{6}{17}%
+ \Test{001 111}{7}{017}%
+\end{qstest}
+
+\begin{qstest}{GetHex}{GetHex}
+ \def\Test#1#2#3{%
+ \bitsetSetBin{abc}{#1}%
+ \expandafter\expandafter\expandafter\Expect
+ \expandafter\expandafter\expandafter{%
+ \bitsetGetHex{abc}{#2}%
+ }{#3}%
+ }%
+ \Test{1111 1110 1101 1100 1011 1010 1001 1000}{0}{FEDCBA98}%
+ \Test{0111 0110 0101 0100 0011 0010 0001 0000}{0}{76543210}%
+ \Test{0000 1111}{0}{F}%
+ \Test{0101 0000}{-1}{50}%
+ \Test{1111}{-1}{F}%
+ \Test{1111}{0}{F}%
+ \Test{1111}{1}{F}%
+ \Test{1111}{4}{F}%
+ \Test{1111}{5}{0F}%
+ \Test{1111}{8}{0F}%
+ \Test{1111}{9}{00F}%
+ \Test{1111 0010}{8}{F2}%
+ \Test{1111 0010}{9}{0F2}%
+ \Test{0111 1111}{0}{7F}%
+ \Test{0111 1111}{8}{7F}%
+ \Test{0111 1111}{9}{07F}%
+ \Test{0011 1111}{0}{3F}%
+ \Test{0011 1111}{8}{3F}%
+ \Test{0011 1111}{9}{03F}%
+ \Test{0001 1111}{0}{1F}%
+ \Test{0001 1111}{8}{1F}%
+ \Test{0001 1111}{9}{01F}%
+\end{qstest}
+
+\begin{qstest}{Range}{Range}
+ \TestError{%
+ Wrong index numbers in range [9..8]\MessageBreak% hash-ok
+ for clear/set/flip on bit set `abc'.\MessageBreak
+ The lower index exceeds the upper index.\MessageBreak
+ Canceling the operation as error recovery%
+ }{%
+ \bitsetSetRange{abc}{9}{8}%
+ }%
+ \def\TestErrorNegInd#1#2#3#4#5#6{%
+ \TestError{%
+ Negative index in range [#2..#3]\MessageBreak % hash-ok
+ for \string\bitset #1Range on bit set `abc'.\MessageBreak
+ Using [#4..#5] as error recovery% hash-ok
+ }{%
+ \csname bitset#1Range\endcsname{abc}{#2}{#3}%
+ \global\let\BS@global\BS@abc
+ }%
+ \Check{global}{#6}%
+ }%
+ \Set{abc}{111}%
+ \TestErrorNegInd{Clear}{-1}{0}{0}{0}{111}%
+ \TestErrorNegInd{Clear}{0}{-1}{0}{0}{111}%
+ \TestErrorNegInd{Clear}{-2}{2}{0}{2}{001}%
+ \bitsetReset{abc}%
+ \TestErrorNegInd{Set}{-1}{0}{0}{0}{0}%
+ \TestErrorNegInd{Set}{0}{-1}{0}{0}{0}%
+ \TestErrorNegInd{Set}{-2}{2}{0}{2}{11}%
+ \Set{abc}{101}%
+ \TestErrorNegInd{Flip}{-1}{0}{0}{0}{101}%
+ \TestErrorNegInd{Flip}{0}{-1}{0}{0}{101}%
+ \TestErrorNegInd{Flip}{-2}{2}{0}{2}{011}%
+ \def\Test#1#2#3#4{%
+ \bitsetSetBin{abc}{#1}%
+ \csname bitset\TestOp Range\endcsname{abc}{#2}{#3}%
+ \Expect*{\bitsetGetBin{abc}{0}}{#4}%
+ }%
+ \def\TestOp{Clear}%
+ \Test{0}{0}{1}{0}%
+ \Test{1111}{1}{2}{1101}%
+ \Test{1111}{1}{3}{1001}%
+ \Test{1111111100000000}{12}{14}{1100111100000000}%
+ \def\TestOp{Set}%
+ \Test{0}{0}{1}{1}%
+ \Test{1000}{1}{2}{1010}%
+ \Test{0}{1}{2}{10}%
+ \Test{1}{12}{15}{111000000000001}%
+ \Test{1111}{1}{3}{1111}%
+ \Test{1000000000000000}{12}{14}{1011000000000000}%
+ \def\TestOp{Flip}%
+ \Test{0}{0}{1}{1}%
+ \Test{1}{0}{1}{0}%
+ \Test{10101010}{1}{5}{10110100}%
+ \def\Test#1#2#3#4#5{%
+ \bitsetSetBin{abc}{#1}%
+ \bitsetSetValueRange{abc}{#2}{#3}{#4}%
+ \Expect*{\bitsetGetBin{abc}{0}}{#5}%
+ }%
+ \Test{0}{0}{1}{0}{0}%
+ \Test{0}{0}{1}{1}{1}%
+ \Test{1010}{1}{3}{0}{1000}%
+ \Test{1010}{1}{3}{1}{1110}%
+\end{qstest}
+
+\begin{qstest}{ShiftLeft/ShiftRight}{ShiftLeft/ShiftRight}
+ \def\@Test#1#2{%
+ \let\BS@abc\@undefined
+ \csname bitsetShift#1\endcsname{abc}{#2}%
+ \Expect*{\BS@abc}{0}%
+ }%
+ \def\Test#1{%
+ \@Test{Left}{#1}%
+ \@Test{Right}{#1}%
+ }%
+ \Test{-16}%
+ \Test{-1}%
+ \Test{0}%
+ \Test{1}%
+ \Test{16}%
+ \def\Test#1#2#3{%
+ \bitsetSetBin{abc}{#1}%
+ \bitsetSetBin{result}{#3}%
+ \csname bitsetShift\Op\endcsname{abc}{#2}%
+ \Expect*{\bitsetGetBin{abc}{0}}*{\bitsetGetBin{result}{0}}%
+ }%
+ \def\Op{Left}%
+ \Test{0}{0}{0}%
+ \Test{0}{1}{0}%
+ \Test{0}{-1}{0}%
+ \Test{1}{0}{1}%
+ \Test{1}{1}{10}%
+ \Test{1}{-1}{0}%
+ \Test{10}{1}{100}%
+ \Test{10}{-1}{1}%
+ \Test{1}{32}{100000000000000000000000000000000}%
+ \Test{1}{-100}{0}%
+ \def\Op{Right}%
+ \Test{0}{0}{0}%
+ \Test{0}{1}{0}%
+ \Test{0}{-1}{0}%
+ \Test{1}{0}{1}%
+ \Test{1}{1}{0}%
+ \Test{1}{-1}{10}%
+ \Test{10}{1}{1}%
+ \Test{10}{-1}{100}%
+ \Test{1}{-32}{100000000000000000000000000000000}%
+ \Test{1}{100}{0}%
+ \Test{110110110110110}{10}{11011}%
+ \Test{110110110110110}{100}{0}%
+ \Test{1}{100000}{0}%
+\end{qstest}
+
+\begin{qstest}{Profile: Set}{Profile: Set}
+ \bitsetSet{abc}{4095}%
+ \global\let\BS@global\BS@abc
+\end{qstest}
+
+\begin{qstest}{Profile: Get}{Profile: Get}
+ \edef\x{\bitsetGet{global}{4095}}%
+\end{qstest}
+
+\begin{document}
+\end{document}
+\endinput
+%%
+%% End of file `bitset-test3.tex'.
diff --git a/Master/texmf-dist/doc/latex/oberdiek/bitset.pdf b/Master/texmf-dist/doc/latex/oberdiek/bitset.pdf
new file mode 100644
index 00000000000..63d66e5ca3b
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/oberdiek/bitset.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/bmpsize.pdf b/Master/texmf-dist/doc/latex/oberdiek/bmpsize.pdf
index 38a9d015985..1682862d0e4 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/bmpsize.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/bmpsize.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/bookmark-example.tex b/Master/texmf-dist/doc/latex/oberdiek/bookmark-example.tex
index 3b9f96c73a3..2f37d6a4868 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/bookmark-example.tex
+++ b/Master/texmf-dist/doc/latex/oberdiek/bookmark-example.tex
@@ -36,7 +36,7 @@
open,
openlevel=2,
atend
-]{bookmark}[2007/07/13]
+]{bookmark}[2007/09/25]
\bookmarksetup{color=blue}
diff --git a/Master/texmf-dist/doc/latex/oberdiek/bookmark.pdf b/Master/texmf-dist/doc/latex/oberdiek/bookmark.pdf
index bc3a7579cd7..bd3871ea352 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/bookmark.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/bookmark.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/catchfile.pdf b/Master/texmf-dist/doc/latex/oberdiek/catchfile.pdf
index 3a35aacfec7..358a40fb0b6 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/catchfile.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/catchfile.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/centernot.pdf b/Master/texmf-dist/doc/latex/oberdiek/centernot.pdf
index 20dd81068b3..70a386e60db 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/centernot.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/centernot.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/chemarr.pdf b/Master/texmf-dist/doc/latex/oberdiek/chemarr.pdf
index e6dfd612014..2b54bf53e66 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/chemarr.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/chemarr.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/classlist.pdf b/Master/texmf-dist/doc/latex/oberdiek/classlist.pdf
index 2004fb73c0c..7e89d712854 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/classlist.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/classlist.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/colonequals.pdf b/Master/texmf-dist/doc/latex/oberdiek/colonequals.pdf
index 878227378f8..5afe5c47c2d 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/colonequals.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/colonequals.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/dvipscol.pdf b/Master/texmf-dist/doc/latex/oberdiek/dvipscol.pdf
index 8e4dc085b94..a7b397aae97 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/dvipscol.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/dvipscol.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/embedfile.pdf b/Master/texmf-dist/doc/latex/oberdiek/embedfile.pdf
index 16879df7209..096ba1907f9 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/embedfile.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/embedfile.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/engord.pdf b/Master/texmf-dist/doc/latex/oberdiek/engord.pdf
index 491fe2b0317..58cca6539f6 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/engord.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/engord.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/epstopdf-test1.tex b/Master/texmf-dist/doc/latex/oberdiek/epstopdf-test1.tex
new file mode 100644
index 00000000000..86f8a5979e4
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/oberdiek/epstopdf-test1.tex
@@ -0,0 +1,78 @@
+%%
+%% This is file `epstopdf-test1.tex',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% epstopdf.dtx (with options: `test1')
+%%
+%% This is a generated file.
+%%
+%% Copyright (C) 2001, 2006, 2007 by
+%% Heiko Oberdiek <oberdiek@uni-freiburg.de>
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any later
+%% version. The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% This Current Maintainer of this work is Heiko Oberdiek.
+%%
+%% This work consists of the main source file epstopdf.dtx
+%% and the derived files
+%% epstopdf.sty, epstopdf.pdf, epstopdf.ins, epstopdf.drv,
+%% epstopdf-test1.tex.
+%%
+\input miniltx.tex\relax
+\def\Gin@driver{pdftex.def}
+\input graphicx.sty\relax
+\resetatcatcode
+\catcode`\@=11 %
+\def\RestoreCatcodes{}
+\count@=0 %
+\loop
+ \edef\RestoreCatcodes{%
+ \RestoreCatcodes
+ \catcode\the\count@=\the\catcode\count@\relax
+ }%
+\ifnum\count@<255 %
+ \advance\count@\@ne
+\repeat
+
+\def\RangeCatcodeInvalid#1#2{%
+ \count@=#1\relax
+ \loop
+ \catcode\count@=15 %
+ \ifnum\count@<#2\relax
+ \advance\count@\@ne
+ \repeat
+}
+\def\Test{%
+ \RangeCatcodeInvalid{0}{47}%
+ \RangeCatcodeInvalid{58}{64}%
+ \RangeCatcodeInvalid{91}{96}%
+ \RangeCatcodeInvalid{123}{255}%
+ \catcode`\@=12 %
+ \catcode`\\=0 %
+ \catcode`\{=1 %
+ \catcode`\}=2 %
+ \catcode`\#=6 %
+ \catcode`\[=12 %
+ \catcode`\]=12 %
+ \catcode`\%=14 %
+ \catcode`\ =10 %
+ \catcode13=5 %
+ \input epstopdf.sty\relax
+ \RestoreCatcodes
+}
+\Test
+\csname @@end\endcsname
+\end
+\endinput
+%%
+%% End of file `epstopdf-test1.tex'.
diff --git a/Master/texmf-dist/doc/latex/oberdiek/epstopdf.pdf b/Master/texmf-dist/doc/latex/oberdiek/epstopdf.pdf
index 473b244bf42..e0ddff965a1 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/epstopdf.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/epstopdf.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/etexcmds.pdf b/Master/texmf-dist/doc/latex/oberdiek/etexcmds.pdf
index df64101c42d..8bc0f6bc822 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/etexcmds.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/etexcmds.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/example-mycolorsetup.sty b/Master/texmf-dist/doc/latex/oberdiek/example-mycolorsetup.sty
index 8b58b76c8e5..25a123d91d7 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/example-mycolorsetup.sty
+++ b/Master/texmf-dist/doc/latex/oberdiek/example-mycolorsetup.sty
@@ -26,15 +26,15 @@
%% This work consists of the main source file kvoptions.dtx
%% and the derived files
%% kvoptions.sty, kvoptions.pdf, kvoptions.ins, kvoptions.drv,
-%% example-mycolorsetup.sty.
+%% example-mycolorsetup.sty, kvoptions-test1.tex.
%%
%% No we don't need the option 'color'.
-%% With color support option 'emphcolor' will dynamically change
-%% the color of \emph statements.
+%% With color support option 'emphcolor' will dynamically
+%% change the color of \emph statements.
% Package identification
% -----------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{example-mycolorsetup}[2007/06/11 Managing my colors]
+\ProvidesPackage{example-mycolorsetup}[2007/10/02 Managing my colors]
\RequirePackage{ifpdf}
\RequirePackage{kvoptions}
@@ -92,7 +92,8 @@
}%
% Pass the option to package color.
% Again it is better to expand \CurrentOption.
- \expandafter\PassOptionsToPackage\expandafter{\CurrentOption}{color}%
+ \expandafter\PassOptionsToPackage
+ \expandafter{\CurrentOption}{color}%
\else
% Package color does not take options with values.
% We provide the standard LaTeX error.
diff --git a/Master/texmf-dist/doc/latex/oberdiek/flags.pdf b/Master/texmf-dist/doc/latex/oberdiek/flags.pdf
index dca6f662d3d..8f4f4c5bcf4 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/flags.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/flags.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/grfext-test1.tex b/Master/texmf-dist/doc/latex/oberdiek/grfext-test1.tex
new file mode 100644
index 00000000000..4d8e64b1138
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/oberdiek/grfext-test1.tex
@@ -0,0 +1,75 @@
+%%
+%% This is file `grfext-test1.tex',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% grfext.dtx (with options: `test1')
+%%
+%% This is a generated file.
+%%
+%% Copyright (C) 2007 by Heiko Oberdiek <oberdiek@uni-freiburg.de>
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any later
+%% version. The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% This Current Maintainer of this work is Heiko Oberdiek.
+%%
+%% This work consists of the main source file grfext.dtx
+%% and the derived files
+%% grfext.sty, grfext.pdf, grfext.ins, grfext.drv,
+%% grfext-test1.tex, grfext-test2.tex.
+%%
+\input miniltx.tex\relax
+\resetatcatcode
+\catcode`\@=11 %
+\def\RestoreCatcodes{}
+\count@=0 %
+\loop
+ \edef\RestoreCatcodes{%
+ \RestoreCatcodes
+ \catcode\the\count@=\the\catcode\count@\relax
+ }%
+\ifnum\count@<255 %
+ \advance\count@\@ne
+\repeat
+
+\def\RangeCatcodeInvalid#1#2{%
+ \count@=#1\relax
+ \loop
+ \catcode\count@=15 %
+ \ifnum\count@<#2\relax
+ \advance\count@\@ne
+ \repeat
+}
+\def\Test{%
+ \RangeCatcodeInvalid{0}{47}%
+ \RangeCatcodeInvalid{58}{64}%
+ \RangeCatcodeInvalid{91}{96}%
+ \RangeCatcodeInvalid{123}{255}%
+ \catcode`\@=12 %
+ \catcode`\\=0 %
+ \catcode`\{=1 %
+ \catcode`\}=2 %
+ \catcode`\#=6 %
+ \catcode`\[=12 %
+ \catcode`\]=12 %
+ \catcode`\%=14 %
+ \catcode`\ =10 %
+ \catcode13=5 %
+ \input grfext.sty\relax
+ \RestoreCatcodes
+}
+\Test
+\csname @@end\endcsname
+\end
+\endinput
+%%
+%% End of file `grfext-test1.tex'.
diff --git a/Master/texmf-dist/doc/latex/oberdiek/grfext-test2.tex b/Master/texmf-dist/doc/latex/oberdiek/grfext-test2.tex
new file mode 100644
index 00000000000..514e0710c2d
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/oberdiek/grfext-test2.tex
@@ -0,0 +1,169 @@
+%%
+%% This is file `grfext-test2.tex',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% grfext.dtx (with options: `test2')
+%%
+%% This is a generated file.
+%%
+%% Copyright (C) 2007 by Heiko Oberdiek <oberdiek@uni-freiburg.de>
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any later
+%% version. The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% This Current Maintainer of this work is Heiko Oberdiek.
+%%
+%% This work consists of the main source file grfext.dtx
+%% and the derived files
+%% grfext.sty, grfext.pdf, grfext.ins, grfext.drv,
+%% grfext-test1.tex, grfext-test2.tex.
+%%
+\NeedsTeXFormat{LaTeX2e}
+\nofiles
+\documentclass{article}
+\usepackage[pdftex]{graphics}
+\usepackage{grfext}[2007/09/30]
+\usepackage{qstest}
+\IncludeTests{*}
+\LogTests{log}{*}{*}
+\makeatletter
+\let\orig@qstest\qstest
+\let\orig@endqstest\endqstest
+\def\qstest#1#2{%
+ \orig@qstest{#1}{#2}%
+ \setbox0\hbox\bgroup\begingroup\ignorespaces
+}
+\def\endqstest{%
+ \endgroup\egroup
+ \Expect*{\the\wd0}{0.0pt}%
+ \orig@endqstest
+}
+\def\Test{\@ifnextchar\bgroup\TestInitList\TestInitCmd}%
+\def\TestInitList#1{%
+ \def\Gin@extensions{#1}%
+ \@Test
+}
+\def\TestInitCmd#1{%
+ \let\Gin@extensions#1\relax
+ \@Test
+}
+\def\@Test#1#2{%
+ \TestCmd{#1}%
+ \expandafter\Expect\expandafter*{\Gin@extensions}{#2}%
+}
+\begin{qstest}{AppendGraphicsExtensions}{AppendGraphicsExtensions}
+ \let\TestCmd\AppendGraphicsExtensions
+ \Test\@undefined{.test}{.test}%
+ \Test\relax{.test}{.test}%
+ \Test{}{.test}{.test}%
+ \Test{.foo}{.test}{.foo,.test}%
+ \Test{.foo,.bar}{.test}{.foo,.bar,.test}%
+ \Test{.test}{.test}{.test}%
+ \Test{.foo,.test}{.test}{.foo,.test}%
+ \Test{.test,.foo}{.test}{.foo,.test}%
+ \Test{.foo,.test,.bar}{.test}{.foo,.bar,.test}%
+ \Test{.foo}{.test,.bar}{.foo,.test,.bar}%
+ \Test{.foo}{.test,.foo}{.test,.foo}%
+ \Test{.foo}{ .test ,.bar , .x, .y }{.foo,.test,.bar,.x,.y}%
+ \def\TestCmd{\AppendGraphicsExtensions*}%
+ \Test\@undefined{.test}{}%
+ \Test\relax{.test}{}%
+ \Test{}{.test}{}%
+ \Test{.test}{.test}{.test}%
+ \Test{.foo}{.test}{.foo}%
+ \Test{.foo,.bar}{.test}{.foo,.bar}%
+ \Test{.test}{.test}{.test}%
+ \Test{.foo,.test}{.test}{.foo,.test}%
+ \Test{.test,.foo}{.test}{.test,.foo}%
+ \Test{.foo,.test,.bar}{.test}{.foo,.test,.bar}%
+ \Test{.foo}{.test,.bar}{.foo}%
+ \Test{.foo}{.test,.foo}{.foo}%
+ \DeclareGraphicsRule{.test}{test}{.test}{}%
+ \Test\@undefined{.test}{.test}%
+ \Test\relax{.test}{.test}%
+ \Test{}{.test}{.test}%
+ \Test{.foo}{.test}{.foo,.test}%
+ \Test{.foo,.bar}{.test}{.foo,.bar,.test}%
+ \Test{.test}{.test}{.test}%
+ \Test{.foo,.test}{.test}{.foo,.test}%
+ \Test{.test,.foo}{.test}{.foo,.test}%
+ \Test{.foo,.test,.bar}{.test}{.foo,.bar,.test}%
+ \Test{.foo}{.test,.bar}{.foo,.test}%
+ \Test{.foo}{.test,.foo}{.foo,.test}%
+ \DeclareGraphicsRule{.bar}{bar}{.bar}{}%
+ \Test{.foo}{.test,.bar}{.foo,.test,.bar}%
+ \Test{.bar}{.test,.bar}{.test,.bar}%
+ \Test{.bar}{.bar,.test}{.bar,.test}%
+\end{qstest}
+\begin{qstest}{PrependGraphicsExtensions}{PrependGraphicsExtensions}
+ \let\TestCmd\PrependGraphicsExtensions
+ \Test\@undefined{.test}{.test}%
+ \Test\relax{.test}{.test}%
+ \Test{}{.test}{.test}%
+ \Test{.foo}{.test}{.test,.foo}%
+ \Test{.foo,.bar}{.test}{.test,.foo,.bar}%
+ \Test{.test}{.test}{.test}%
+ \Test{.foo,.test}{.test}{.test,.foo}%
+ \Test{.test,.foo}{.test}{.test,.foo}%
+ \Test{.foo,.test,.bar}{.test}{.test,.foo,.bar}%
+ \Test{.foo}{.test,.bar}{.test,.bar,.foo}%
+ \Test{.foo}{.test,.foo}{.test,.foo}%
+ \Test{.foo}{ .test ,.bar , .x, .y }{.test,.bar,.x,.y,.foo}%
+ \def\TestCmd{\PrependGraphicsExtensions*}%
+ \Test\@undefined{.test}{}%
+ \Test\relax{.test}{}%
+ \Test{}{.test}{}%
+ \Test{.test}{.test}{.test}%
+ \Test{.foo}{.test}{.foo}%
+ \Test{.foo,.bar}{.test}{.foo,.bar}%
+ \Test{.test}{.test}{.test}%
+ \Test{.foo,.test}{.test}{.foo,.test}%
+ \Test{.test,.foo}{.test}{.test,.foo}%
+ \Test{.foo,.test,.bar}{.test}{.foo,.test,.bar}%
+ \DeclareGraphicsRule{.test}{test}{.test}{}%
+ \Test\@undefined{.test}{.test}%
+ \Test\relax{.test}{.test}%
+ \Test{}{.test}{.test}%
+ \Test{.foo}{.test}{.test,.foo}%
+ \Test{.foo,.bar}{.test}{.test,.foo,.bar}%
+ \Test{.test}{.test}{.test}%
+ \Test{.foo,.test}{.test}{.test,.foo}%
+ \Test{.test,.foo}{.test}{.test,.foo}%
+ \Test{.foo,.test,.bar}{.test}{.test,.foo,.bar}%
+ \Test{.foo}{.test,.bar}{.test,.foo}%
+ \Test{.foo}{.test,.foo}{.test,.foo}%
+ \DeclareGraphicsRule{.bar}{bar}{.bar}{}%
+ \Test{.foo}{.test,.bar}{.test,.bar,.foo}%
+ \Test{.bar}{.test,.bar}{.test,.bar}%
+ \Test{.bar}{.bar,.test}{.bar,.test}%
+\end{qstest}
+\begin{qstest}{RemoveGraphicsExtensions}{RemoveGraphicsExtensions}
+ \let\TestCmd\RemoveGraphicsExtensions
+ \Test\@undefined{.test}{}%
+ \Test\relax{.test}{}%
+ \Test{}{.test}{}%
+ \Test{.foo}{.test}{.foo}%
+ \Test{.foo,.bar}{.test}{.foo,.bar}%
+ \Test{.test}{.test}{}%
+ \Test{.foo,.test}{.test}{.foo}%
+ \Test{.test,.foo}{.test}{.foo}%
+ \Test{.foo,.test,.bar}{.test}{.foo,.bar}%
+ \Test{.test,.test}{.test}{}%
+ \Test{.foo,.test,.bar,.test,.test,.bar}{.test}{.foo,.bar,.bar}%
+ \Test{.foo,.test,.bar,.foo,.test,.bar}{.test,.bar}{.foo,.foo}%
+ \Test{.foo,.test,.bar,.foo,.test,.bar}{ .test , .bar }{.foo,.foo}%
+\end{qstest}
+\begin{document}
+\end{document}
+\endinput
+%%
+%% End of file `grfext-test2.tex'.
diff --git a/Master/texmf-dist/doc/latex/oberdiek/grfext.pdf b/Master/texmf-dist/doc/latex/oberdiek/grfext.pdf
new file mode 100644
index 00000000000..cbbc935c8e7
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/oberdiek/grfext.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/grffile.pdf b/Master/texmf-dist/doc/latex/oberdiek/grffile.pdf
index 4300cbcfd67..6fcc0b72d3d 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/grffile.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/grffile.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/holtxdoc.pdf b/Master/texmf-dist/doc/latex/oberdiek/holtxdoc.pdf
index f0bd0b4382d..f25036ee563 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/holtxdoc.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/holtxdoc.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/hycolor.pdf b/Master/texmf-dist/doc/latex/oberdiek/hycolor.pdf
index 886869ff5fd..fd2b832c00c 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/hycolor.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/hycolor.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/hypbmsec.pdf b/Master/texmf-dist/doc/latex/oberdiek/hypbmsec.pdf
index 0f11ac7e7f1..05602d321d4 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/hypbmsec.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/hypbmsec.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/hypcap.pdf b/Master/texmf-dist/doc/latex/oberdiek/hypcap.pdf
index e0eff055795..35d7632dfff 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/hypcap.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/hypcap.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/hypdestopt.pdf b/Master/texmf-dist/doc/latex/oberdiek/hypdestopt.pdf
index f07ab610914..43e229a83fd 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/hypdestopt.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/hypdestopt.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/hypdoc.pdf b/Master/texmf-dist/doc/latex/oberdiek/hypdoc.pdf
index cc9da5e337d..7fa447c6033 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/hypdoc.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/hypdoc.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/ifdraft.pdf b/Master/texmf-dist/doc/latex/oberdiek/ifdraft.pdf
index 5c8482788c0..ade2cd5a7e3 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/ifdraft.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/ifdraft.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/iflang.pdf b/Master/texmf-dist/doc/latex/oberdiek/iflang.pdf
index 114445b261a..df6371bf6ab 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/iflang.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/iflang.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/ifpdf.pdf b/Master/texmf-dist/doc/latex/oberdiek/ifpdf.pdf
index d86aac82fac..6b5ad56372d 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/ifpdf.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/ifpdf.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/ifvtex.pdf b/Master/texmf-dist/doc/latex/oberdiek/ifvtex.pdf
index 13118cfc8eb..580daf5cb9c 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/ifvtex.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/ifvtex.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/infwarerr.pdf b/Master/texmf-dist/doc/latex/oberdiek/infwarerr.pdf
index 15a8262dc71..3821ac1eda9 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/infwarerr.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/infwarerr.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/inputenx.pdf b/Master/texmf-dist/doc/latex/oberdiek/inputenx.pdf
index 506a04bf47a..9203ca9e90e 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/inputenx.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/inputenx.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/intcalc-test2.tex b/Master/texmf-dist/doc/latex/oberdiek/intcalc-test2.tex
index 696816c6f80..8242acd1ee7 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/intcalc-test2.tex
+++ b/Master/texmf-dist/doc/latex/oberdiek/intcalc-test2.tex
@@ -32,9 +32,9 @@
\nofiles
\documentclass{article}
\makeatletter
-\chardef\IntCalc@TestMode=1 %
+\chardef\InCa@TestMode=1 %
\makeatother
-\usepackage{intcalc}[2007/09/09]
+\usepackage{intcalc}[2007/09/27]
\usepackage{qstest}
\IncludeTests{*}
\LogTests{log}{*}{*}
@@ -67,6 +67,9 @@
\newcommand*{\TestInv}[2]{%
\Test{\intcalcInv{#1}}{#2}%
}
+\newcommand*{\TestNum}[2]{%
+ \Test{\intcalcNum{#1}}{#2}%
+}
\newcommand*{\TestAbs}[2]{%
\Test{\intcalcAbs{#1}}{#2}%
}
@@ -84,24 +87,92 @@
}
\newcommand*{\TestInc}[2]{%
\Test{\intcalcInc{#1}}{#2}%
+ \ifnum\intcalcNum{#1}>-1 %
+ \edef\x{%
+ \noexpand\Test{%
+ \noexpand\IntCalcInc\intcalcNum{#1}!%
+ }{#2}%
+ }%
+ \x
+ \fi
}
\newcommand*{\TestDec}[2]{%
\Test{\intcalcDec{#1}}{#2}%
+ \ifnum\intcalcNum{#1}>0 %
+ \edef\x{%
+ \noexpand\Test{%
+ \noexpand\IntCalcDec\intcalcNum{#1}!%
+ }{#2}%
+ }%
+ \x
+ \fi
}
\newcommand*{\TestAdd}[3]{%
\Test{\intcalcAdd{#1}{#2}}{#3}%
+ \ifnum\intcalcNum{#1}>0 %
+ \ifnum\intcalcNum{#2}> 0 %
+ \ifnum\intcalcCmp{#1}{#2}>0 %
+ \edef\x{%
+ \noexpand\Test{%
+ \noexpand\IntCalcAdd
+ \intcalcNum{#1}!\intcalcNum{#2}!%
+ }{#3}%
+ }%
+ \x
+ \else
+ \edef\x{%
+ \noexpand\Test{%
+ \noexpand\IntCalcAdd
+ \intcalcNum{#2}!\intcalcNum{#1}!%
+ }{#3}%
+ }%
+ \x
+ \fi
+ \fi
+ \fi
}
\newcommand*{\TestSub}[3]{%
\Test{\intcalcSub{#1}{#2}}{#3}%
+ \ifnum\intcalcNum{#1}>0 %
+ \ifnum\intcalcNum{#2}> 0 %
+ \ifnum\intcalcCmp{#1}{#2}>0 %
+ \edef\x{%
+ \noexpand\Test{%
+ \noexpand\IntCalcSub
+ \intcalcNum{#1}!\intcalcNum{#2}!%
+ }{#3}%
+ }%
+ \x
+ \fi
+ \fi
+ \fi
}
\newcommand*{\TestShl}[2]{%
\Test{\intcalcShl{#1}}{#2}%
+ \edef\x{%
+ \noexpand\Test{%
+ \noexpand\IntCalcShl\intcalcAbs{#1}!%
+ }{\intcalcAbs{#2}}%
+ }%
+ \x
}
\newcommand*{\TestShr}[2]{%
\Test{\intcalcShr{#1}}{#2}%
+ \edef\x{%
+ \noexpand\Test{%
+ \noexpand\IntCalcShr\intcalcAbs{#1}!%
+ }{\intcalcAbs{#2}}%
+ }%
+ \x
}
\newcommand*{\TestMul}[3]{%
\Test{\intcalcMul{#1}{#2}}{#3}%
+ \edef\x{%
+ \noexpand\Test{%
+ \noexpand\IntCalcMul\intcalcAbs{#1}!\intcalcAbs{#2}!%
+ }{\intcalcAbs{#3}}%
+ }%
+ \x
}
\newcommand*{\TestSqr}[2]{%
\Test{\intcalcSqr{#1}}{#2}%
@@ -115,12 +186,93 @@
\newcommand*{\TestDiv}[3]{%
\Test{\intcalcDiv{#1}{#2}}{#3}%
\TestTeXDivide{#1}{#2}%
+ \edef\x{%
+ \noexpand\Test{%
+ \noexpand\IntCalcDiv\intcalcAbs{#1}!\intcalcAbs{#2}!%
+ }{\intcalcAbs{#3}}%
+ }%
}
\newcommand*{\TestMod}[3]{%
\Test{\intcalcMod{#1}{#2}}{#3}%
+ \ifcase\ifcase\intcalcSgn{#1} 0%
+ \or
+ \ifcase\intcalcSgn{#2} 1%
+ \or 0%
+ \else 1%
+ \fi
+ \else
+ \ifcase\intcalcSgn{#2} 1%
+ \or 1%
+ \else 0%
+ \fi
+ \fi\relax
+ \edef\x{%
+ \noexpand\Test{%
+ \noexpand\IntCalcMod
+ \intcalcAbs{#1}!\intcalcAbs{#2}!%
+ }{\intcalcAbs{#3}}%
+ }%
+ \x
+ \fi
}
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname pdfresettimer\endcsname\relax
+\else
+ \makeatletter
+ \newcount\SummaryTime
+ \newcount\TestTime
+ \SummaryTime=\z@
+ \newcommand*{\PrintTime}[2]{%
+ \typeout{%
+ [Time #1: \strip@pt\dimexpr\number#2sp\relax\space s]%
+ }%
+ }%
+ \newcommand*{\StartTime}[1]{%
+ \renewcommand*{\TimeDescription}{#1}%
+ \pdfresettimer
+ }%
+ \newcommand*{\TimeDescription}{}%
+ \newcommand*{\StopTime}{%
+ \TestTime=\pdfelapsedtime
+ \global\advance\SummaryTime\TestTime
+ \PrintTime\TimeDescription\TestTime
+ }%
+ \let\saved@qstest\qstest
+ \let\saved@endqstest\endqstest
+ \def\qstest#1#2{%
+ \saved@qstest{#1}{#2}%
+ \StartTime{#1}%
+ }%
+ \def\endqstest{%
+ \StopTime
+ \saved@endqstest
+ }%
+ \AtEndDocument{%
+ \PrintTime{summary}\SummaryTime
+ }%
+ \makeatother
+\fi
\makeatletter
+\begin{qstest}{num}{num}%
+ \TestNum{0}{0}%
+ \TestNum{1}{1}%
+ \TestNum{-1}{-1}%
+ \TestNum{10}{10}%
+ \TestNum{-10}{-10}%
+ \TestNum{2147483647}{2147483647}%
+ \TestNum{-2147483647}{-2147483647}%
+ \TestNum{ 0 }{0}%
+ \TestNum{ 1 }{1}%
+ \TestNum{--1}{1}%
+ \TestNum{ - + - + 4 }{4}%
+ \TestNum{\z@}{0}%
+ \TestNum{\@ne}{1}%
+ \TestNum{\m@ne}{-1}%
+ \TestNum{-10+30}{20}%
+ \TestNum{10-30}{-20}%
+\end{qstest}
+
\begin{qstest}{inv}{inv}%
\TestInv{0}{0}%
\TestInv{1}{-1}%
@@ -324,6 +476,8 @@
\TestShl{1}{2}%
\TestShl{5621}{11242}%
\TestShl{1073741823}{2147483646}%
+ \TestShl{-1}{-2}%
+ \TestShl{-5621}{-11242}%
\end{qstest}
\begin{qstest}{shr}{shr}
@@ -353,6 +507,10 @@
\TestShr{11241}{5620}%
\TestShr{73054202}{36527101}%
\TestShr{2147483646}{1073741823}%
+ \TestShr{-1}{0}%
+ \TestShr{-2}{-1}%
+ \TestShr{-3}{-1}%
+ \TestShr{-11241}{-5620}%
\end{qstest}
\begin{qstest}{mul}{mul}
@@ -583,11 +741,11 @@
\TestError{FacNegative}{\intcalcFac{-2147483647}}%
\TestError{FacOverflow}{\intcalcFac{13}}%
\TestError{FacOverflow}{\intcalcFac{2147483647}}%
- \TestError{ShlNegativeNumber}{\intcalcShl{-1}}%
- \TestError{ShrNegativeNumber}{\intcalcShr{-1}}%
\TestError{DivisionByZero}{\intcalcPow{0}{-1}}%
\TestError{DivisionByZero}{\intcalcDiv{1}{0}}%
\TestError{DivisionByZero}{\intcalcMod{1}{0}}%
+ \TestError{DivisionByZero}{\IntCalcDiv1!0!}%
+ \TestError{DivisionByZero}{\IntCalcMod1!0!}%
\end{qstest}
\begin{document}
diff --git a/Master/texmf-dist/doc/latex/oberdiek/intcalc-test3.tex b/Master/texmf-dist/doc/latex/oberdiek/intcalc-test3.tex
index c01bff1c246..4874311d1f0 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/intcalc-test3.tex
+++ b/Master/texmf-dist/doc/latex/oberdiek/intcalc-test3.tex
@@ -4,7 +4,7 @@
%%
%% The original source files were:
%%
-%% intcalc.dtx (with options: `test3,noetex')
+%% intcalc.dtx (with options: `test2,noetex')
%%
%% This is a generated file.
%%
@@ -34,9 +34,9 @@
\let\SavedNumexpr\numexpr
\let\numexpr\UNDEFINED
\makeatletter
-\chardef\IntCalc@TestMode=1 %
+\chardef\InCa@TestMode=1 %
\makeatother
-\usepackage{intcalc}[2007/09/09]
+\usepackage{intcalc}[2007/09/27]
\let\numexpr\SavedNumexpr
\usepackage{qstest}
\IncludeTests{*}
@@ -80,6 +80,9 @@
\newcommand*{\TestInv}[2]{%
\Test{\intcalcInv{#1}}{#2}%
}
+\newcommand*{\TestNum}[2]{%
+ \Test{\intcalcNum{#1}}{#2}%
+}
\newcommand*{\TestAbs}[2]{%
\Test{\intcalcAbs{#1}}{#2}%
}
@@ -97,24 +100,92 @@
}
\newcommand*{\TestInc}[2]{%
\Test{\intcalcInc{#1}}{#2}%
+ \ifnum\intcalcNum{#1}>-1 %
+ \edef\x{%
+ \noexpand\Test{%
+ \noexpand\IntCalcInc\intcalcNum{#1}!%
+ }{#2}%
+ }%
+ \x
+ \fi
}
\newcommand*{\TestDec}[2]{%
\Test{\intcalcDec{#1}}{#2}%
+ \ifnum\intcalcNum{#1}>0 %
+ \edef\x{%
+ \noexpand\Test{%
+ \noexpand\IntCalcDec\intcalcNum{#1}!%
+ }{#2}%
+ }%
+ \x
+ \fi
}
\newcommand*{\TestAdd}[3]{%
\Test{\intcalcAdd{#1}{#2}}{#3}%
+ \ifnum\intcalcNum{#1}>0 %
+ \ifnum\intcalcNum{#2}> 0 %
+ \ifnum\intcalcCmp{#1}{#2}>0 %
+ \edef\x{%
+ \noexpand\Test{%
+ \noexpand\IntCalcAdd
+ \intcalcNum{#1}!\intcalcNum{#2}!%
+ }{#3}%
+ }%
+ \x
+ \else
+ \edef\x{%
+ \noexpand\Test{%
+ \noexpand\IntCalcAdd
+ \intcalcNum{#2}!\intcalcNum{#1}!%
+ }{#3}%
+ }%
+ \x
+ \fi
+ \fi
+ \fi
}
\newcommand*{\TestSub}[3]{%
\Test{\intcalcSub{#1}{#2}}{#3}%
+ \ifnum\intcalcNum{#1}>0 %
+ \ifnum\intcalcNum{#2}> 0 %
+ \ifnum\intcalcCmp{#1}{#2}>0 %
+ \edef\x{%
+ \noexpand\Test{%
+ \noexpand\IntCalcSub
+ \intcalcNum{#1}!\intcalcNum{#2}!%
+ }{#3}%
+ }%
+ \x
+ \fi
+ \fi
+ \fi
}
\newcommand*{\TestShl}[2]{%
\Test{\intcalcShl{#1}}{#2}%
+ \edef\x{%
+ \noexpand\Test{%
+ \noexpand\IntCalcShl\intcalcAbs{#1}!%
+ }{\intcalcAbs{#2}}%
+ }%
+ \x
}
\newcommand*{\TestShr}[2]{%
\Test{\intcalcShr{#1}}{#2}%
+ \edef\x{%
+ \noexpand\Test{%
+ \noexpand\IntCalcShr\intcalcAbs{#1}!%
+ }{\intcalcAbs{#2}}%
+ }%
+ \x
}
\newcommand*{\TestMul}[3]{%
\Test{\intcalcMul{#1}{#2}}{#3}%
+ \edef\x{%
+ \noexpand\Test{%
+ \noexpand\IntCalcMul\intcalcAbs{#1}!\intcalcAbs{#2}!%
+ }{\intcalcAbs{#3}}%
+ }%
+ \x
}
\newcommand*{\TestSqr}[2]{%
\Test{\intcalcSqr{#1}}{#2}%
@@ -128,12 +199,91 @@
\newcommand*{\TestDiv}[3]{%
\Test{\intcalcDiv{#1}{#2}}{#3}%
\TestTeXDivide{#1}{#2}%
+ \edef\x{%
+ \noexpand\Test{%
+ \noexpand\IntCalcDiv\intcalcAbs{#1}!\intcalcAbs{#2}!%
+ }{\intcalcAbs{#3}}%
+ }%
}
\newcommand*{\TestMod}[3]{%
\Test{\intcalcMod{#1}{#2}}{#3}%
+ \ifcase\ifcase\intcalcSgn{#1} 0%
+ \or
+ \ifcase\intcalcSgn{#2} 1%
+ \or 0%
+ \else 1%
+ \fi
+ \else
+ \ifcase\intcalcSgn{#2} 1%
+ \or 1%
+ \else 0%
+ \fi
+ \fi\relax
+ \edef\x{%
+ \noexpand\Test{%
+ \noexpand\IntCalcMod
+ \intcalcAbs{#1}!\intcalcAbs{#2}!%
+ }{\intcalcAbs{#3}}%
+ }%
+ \x
+ \fi
}
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname pdfresettimer\endcsname\relax
+\else
+ \makeatletter
+ \newcount\SummaryTime
+ \newcount\TestTime
+ \SummaryTime=\z@
+ \newcommand*{\PrintTime}[2]{%
+ \typeout{%
+ [Time #1: \strip@pt\dimexpr\number#2sp\relax\space s]%
+ }%
+ }%
+ \newcommand*{\StartTime}[1]{%
+ \renewcommand*{\TimeDescription}{#1}%
+ \pdfresettimer
+ }%
+ \newcommand*{\TimeDescription}{}%
+ \newcommand*{\StopTime}{%
+ \TestTime=\pdfelapsedtime
+ \global\advance\SummaryTime\TestTime
+ \PrintTime\TimeDescription\TestTime
+ }%
+ \let\saved@qstest\qstest
+ \let\saved@endqstest\endqstest
+ \def\qstest#1#2{%
+ \saved@qstest{#1}{#2}%
+ \StartTime{#1}%
+ }%
+ \def\endqstest{%
+ \StopTime
+ \saved@endqstest
+ }%
+ \AtEndDocument{%
+ \PrintTime{summary}\SummaryTime
+ }%
+ \makeatother
+\fi
\makeatletter
+\begin{qstest}{num}{num}%
+ \TestNum{0}{0}%
+ \TestNum{1}{1}%
+ \TestNum{-1}{-1}%
+ \TestNum{10}{10}%
+ \TestNum{-10}{-10}%
+ \TestNum{2147483647}{2147483647}%
+ \TestNum{-2147483647}{-2147483647}%
+ \TestNum{ 0 }{0}%
+ \TestNum{ 1 }{1}%
+ \TestNum{--1}{1}%
+ \TestNum{ - + - + 4 }{4}%
+ \TestNum{\z@}{0}%
+ \TestNum{\@ne}{1}%
+ \TestNum{\m@ne}{-1}%
+\end{qstest}
+
\begin{qstest}{inv}{inv}%
\TestInv{0}{0}%
\TestInv{1}{-1}%
@@ -324,6 +474,8 @@
\TestShl{1}{2}%
\TestShl{5621}{11242}%
\TestShl{1073741823}{2147483646}%
+ \TestShl{-1}{-2}%
+ \TestShl{-5621}{-11242}%
\end{qstest}
\begin{qstest}{shr}{shr}
@@ -353,6 +505,10 @@
\TestShr{11241}{5620}%
\TestShr{73054202}{36527101}%
\TestShr{2147483646}{1073741823}%
+ \TestShr{-1}{0}%
+ \TestShr{-2}{-1}%
+ \TestShr{-3}{-1}%
+ \TestShr{-11241}{-5620}%
\end{qstest}
\begin{qstest}{mul}{mul}
@@ -576,11 +732,11 @@
\TestError{FacNegative}{\intcalcFac{-2147483647}}%
\TestError{FacOverflow}{\intcalcFac{13}}%
\TestError{FacOverflow}{\intcalcFac{2147483647}}%
- \TestError{ShlNegativeNumber}{\intcalcShl{-1}}%
- \TestError{ShrNegativeNumber}{\intcalcShr{-1}}%
\TestError{DivisionByZero}{\intcalcPow{0}{-1}}%
\TestError{DivisionByZero}{\intcalcDiv{1}{0}}%
\TestError{DivisionByZero}{\intcalcMod{1}{0}}%
+ \TestError{DivisionByZero}{\IntCalcDiv1!0!}%
+ \TestError{DivisionByZero}{\IntCalcMod1!0!}%
\end{qstest}
\begin{document}
diff --git a/Master/texmf-dist/doc/latex/oberdiek/intcalc-test4.tex b/Master/texmf-dist/doc/latex/oberdiek/intcalc-test4.tex
index 9d4d2391743..021744f16dd 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/intcalc-test4.tex
+++ b/Master/texmf-dist/doc/latex/oberdiek/intcalc-test4.tex
@@ -32,9 +32,9 @@
\nofiles
\documentclass{article}
\makeatletter
-\chardef\IntCalc@TestMode=1 %
+\chardef\InCa@TestMode=1 %
\makeatother
-\usepackage{intcalc}[2007/09/09]
+\usepackage{intcalc}[2007/09/27]
\usepackage{qstest}
\IncludeTests{*}
\LogTests{log}{*}{*}
@@ -58,6 +58,7 @@
\TestDo{#1}{#2}%
\TestDo{#2}{#1}%
}
+\let\TestNum\TestOne
\let\TestInv\TestOne
\let\TestAbs\TestOne
\let\TestSgn\TestOne
@@ -78,6 +79,25 @@
\let\TestMod\TestTwo
\makeatletter
+\begin{qstest}{num}{num}%
+ \TestNum{0}{0}%
+ \TestNum{1}{1}%
+ \TestNum{-1}{-1}%
+ \TestNum{10}{10}%
+ \TestNum{-10}{-10}%
+ \TestNum{2147483647}{2147483647}%
+ \TestNum{-2147483647}{-2147483647}%
+ \TestNum{ 0 }{0}%
+ \TestNum{ 1 }{1}%
+ \TestNum{--1}{1}%
+ \TestNum{ - + - + 4 }{4}%
+ \TestNum{\z@}{0}%
+ \TestNum{\@ne}{1}%
+ \TestNum{\m@ne}{-1}%
+ \TestNum{-10+30}{20}%
+ \TestNum{10-30}{-20}%
+\end{qstest}
+
\begin{qstest}{inv}{inv}%
\TestInv{0}{0}%
\TestInv{1}{-1}%
@@ -281,6 +301,8 @@
\TestShl{1}{2}%
\TestShl{5621}{11242}%
\TestShl{1073741823}{2147483646}%
+ \TestShl{-1}{-2}%
+ \TestShl{-5621}{-11242}%
\end{qstest}
\begin{qstest}{shr}{shr}
@@ -310,6 +332,10 @@
\TestShr{11241}{5620}%
\TestShr{73054202}{36527101}%
\TestShr{2147483646}{1073741823}%
+ \TestShr{-1}{0}%
+ \TestShr{-2}{-1}%
+ \TestShr{-3}{-1}%
+ \TestShr{-11241}{-5620}%
\end{qstest}
\begin{qstest}{mul}{mul}
diff --git a/Master/texmf-dist/doc/latex/oberdiek/intcalc.pdf b/Master/texmf-dist/doc/latex/oberdiek/intcalc.pdf
index a3978b992e8..161a3b40d2b 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/intcalc.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/intcalc.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/kvoptions-test1.tex b/Master/texmf-dist/doc/latex/oberdiek/kvoptions-test1.tex
new file mode 100644
index 00000000000..de0a68d2468
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/oberdiek/kvoptions-test1.tex
@@ -0,0 +1,78 @@
+%%
+%% This is file `kvoptions-test1.tex',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% kvoptions.dtx (with options: `test1')
+%%
+%% This is a generated file.
+%%
+%% Copyright (C) 2004, 2006, 2007 by
+%% Heiko Oberdiek <oberdiek@uni-freiburg.de>
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any later
+%% version. The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% This Current Maintainer of this work is Heiko Oberdiek.
+%%
+%% This work consists of the main source file kvoptions.dtx
+%% and the derived files
+%% kvoptions.sty, kvoptions.pdf, kvoptions.ins, kvoptions.drv,
+%% example-mycolorsetup.sty, kvoptions-test1.tex.
+%%
+%% No we don't need the option 'color'.
+%% With color support option 'emphcolor' will dynamically
+%% change the color of \emph statements.
+\input miniltx.tex\relax
+\catcode`\@=11 %
+\def\RestoreCatcodes{}
+\count@=0 %
+\loop
+ \edef\RestoreCatcodes{%
+ \RestoreCatcodes
+ \catcode\the\count@=\the\catcode\count@\relax
+ }%
+\ifnum\count@<255 %
+ \advance\count@\@ne
+\repeat
+
+\def\RangeCatcodeInvalid#1#2{%
+ \count@=#1\relax
+ \loop
+ \catcode\count@=15 %
+ \ifnum\count@<#2\relax
+ \advance\count@\@ne
+ \repeat
+}
+\def\Test{%
+ \RangeCatcodeInvalid{0}{47}%
+ \RangeCatcodeInvalid{58}{64}%
+ \RangeCatcodeInvalid{91}{96}%
+ \RangeCatcodeInvalid{123}{255}%
+ \catcode`\@=12 %
+ \catcode`\\=0 %
+ \catcode`\{=1 %
+ \catcode`\}=2 %
+ \catcode`\#=6 %
+ \catcode`\[=12 %
+ \catcode`\]=12 %
+ \catcode`\%=14 %
+ \catcode`\ =10 %
+ \catcode13=5 %
+ \input kvoptions.sty\relax
+ \RestoreCatcodes
+}
+\Test
+\csname @@end\endcsname
+\end
+\endinput
+%%
+%% End of file `kvoptions-test1.tex'.
diff --git a/Master/texmf-dist/doc/latex/oberdiek/kvoptions.pdf b/Master/texmf-dist/doc/latex/oberdiek/kvoptions.pdf
index 57996c95bab..89e71b5133b 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/kvoptions.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/kvoptions.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/kvsetkeys-example.tex b/Master/texmf-dist/doc/latex/oberdiek/kvsetkeys-example.tex
index 1466159e2db..8f78800f374 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/kvsetkeys-example.tex
+++ b/Master/texmf-dist/doc/latex/oberdiek/kvsetkeys-example.tex
@@ -25,7 +25,8 @@
%% This work consists of the main source file kvsetkeys.dtx
%% and the derived files
%% kvsetkeys.sty, kvsetkeys.pdf, kvsetkeys.ins, kvsetkeys.drv,
-%% kvsetkeys-example.tex, kvsetkeys-test1.tex.
+%% kvsetkeys-example.tex, kvsetkeys-test1.tex,
+%% kvsetkeys-test2.tex, kvsetkeys-test3.tex.
%%
\documentclass{article}
\usepackage[T1]{fontenc}
diff --git a/Master/texmf-dist/doc/latex/oberdiek/kvsetkeys-test1.tex b/Master/texmf-dist/doc/latex/oberdiek/kvsetkeys-test1.tex
index 718ce0bced8..14225a1cd0b 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/kvsetkeys-test1.tex
+++ b/Master/texmf-dist/doc/latex/oberdiek/kvsetkeys-test1.tex
@@ -25,7 +25,8 @@
%% This work consists of the main source file kvsetkeys.dtx
%% and the derived files
%% kvsetkeys.sty, kvsetkeys.pdf, kvsetkeys.ins, kvsetkeys.drv,
-%% kvsetkeys-example.tex, kvsetkeys-test1.tex.
+%% kvsetkeys-example.tex, kvsetkeys-test1.tex,
+%% kvsetkeys-test2.tex, kvsetkeys-test3.tex.
%%
\catcode`\@=11 %
\def\RestoreCatcodes{}
diff --git a/Master/texmf-dist/doc/latex/oberdiek/kvsetkeys-test2.tex b/Master/texmf-dist/doc/latex/oberdiek/kvsetkeys-test2.tex
new file mode 100644
index 00000000000..739944bab57
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/oberdiek/kvsetkeys-test2.tex
@@ -0,0 +1,264 @@
+%%
+%% This is file `kvsetkeys-test2.tex',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% kvsetkeys.dtx (with options: `test2')
+%%
+%% This is a generated file.
+%%
+%% Copyright (C) 2006, 2007 by Heiko Oberdiek <oberdiek@uni-freiburg.de>
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any later
+%% version. The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% This Current Maintainer of this work is Heiko Oberdiek.
+%%
+%% This work consists of the main source file kvsetkeys.dtx
+%% and the derived files
+%% kvsetkeys.sty, kvsetkeys.pdf, kvsetkeys.ins, kvsetkeys.drv,
+%% kvsetkeys-example.tex, kvsetkeys-test1.tex,
+%% kvsetkeys-test2.tex, kvsetkeys-test3.tex.
+%%
+\NeedsTeXFormat{LaTeX2e}
+\nofiles
+\documentclass{article}
+\makeatletter
+\chardef\KVS@TestMode=1 %
+\makeatother
+\usepackage{kvsetkeys}[2007/09/29]
+\usepackage{qstest}
+\IncludeTests{*}
+\LogTests{log}{*}{*}
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname pdfresettimer\endcsname\relax
+\else
+ \makeatletter
+ \newcount\SummaryTime
+ \newcount\TestTime
+ \SummaryTime=\z@
+ \newcommand*{\PrintTime}[2]{%
+ \typeout{%
+ [Time #1: \strip@pt\dimexpr\number#2sp\relax\space s]%
+ }%
+ }%
+ \newcommand*{\StartTime}[1]{%
+ \renewcommand*{\TimeDescription}{#1}%
+ \pdfresettimer
+ }%
+ \newcommand*{\TimeDescription}{}%
+ \newcommand*{\StopTime}{%
+ \TestTime=\pdfelapsedtime
+ \global\advance\SummaryTime\TestTime
+ \PrintTime\TimeDescription\TestTime
+ }%
+ \let\saved@qstest\qstest
+ \let\saved@endqstest\endqstest
+ \def\qstest#1#2{%
+ \saved@qstest{#1}{#2}%
+ \StartTime{#1}%
+ }%
+ \def\endqstest{%
+ \StopTime
+ \saved@endqstest
+ }%
+ \AtEndDocument{%
+ \PrintTime{summary}\SummaryTime
+ }%
+ \makeatother
+\fi
+\makeatletter
+\def\@makeactive#1{%
+ \catcode`#1=13\relax
+}
+\@makeactive\,
+\def,{\errmessage{COMMA}}
+\@makeother\,
+\@makeactive\=
+\def={\errmessage{EQUALS}}
+\@makeother\=
+
+\begin{qstest}{normalize}{normalize,active-chars,space-removal}%
+ \def\Test#1#2{%
+ \@makeother\,%
+ \@makeother\=%
+ \scantokens{\toks@={#2}}%
+ \edef\Result{\the\toks@}%
+ \@makeother\,%
+ \@makeother\=%
+ \@Test{#1}%
+ \@makeactive\,%
+ \@Test{#1}%
+ \@makeactive\=%
+ \@Test{#1}%
+ \@makeother\,%
+ \@Test{#1}%
+ \@makeother\=%
+ }%
+ \def\@Test#1{%
+ \scantokens{\kv@normalize{#1}}%
+ \expandafter\expandafter\expandafter\Expect
+ \expandafter\expandafter\expandafter
+ {\expandafter\kv@list\expandafter}\expandafter{\Result}%
+ \Expect*{\ifx\kv@list\Result true\else false\fi}{true}%
+ }%
+ \Test{}{,}%
+ \Test{,}{,}%
+ \Test{,,}{,}%
+ \Test{,,,}{,}%
+ \Test{ , }{,}%
+ \Test{{a}}{,{a},}%
+ \Test{,{a}}{,{a},}%
+ \Test{{a},}{,{a},}%
+ \Test{{a},{b}}{,{a},{b},}%
+ \Test{{b}={c},{}=,{}={},{d}=}{,{b}={c},{}=,{}={},{d}=,}%
+ \Test{{}}{,{},}%
+ \Test{{},{},{}}{,{},{},{},}%
+ \Test{=}{,=,}%
+ \Test{=,=,=}{,=,=,=,}%
+ \def\TestSet#1{%
+ \Test{#1#1}{,}%
+ \Test{#1#1,#1#1}{,}%
+ \Test{#1#1,#1#1,#1#1}{,}%
+ \Test{#1#1#1#1#1}{,}%
+ \Test{{a}#1#1=#1#1{b}}{,{a}={b},}%
+ }%
+ \TestSet{ }%
+ \begingroup
+ \let\saved@normalize\kv@normalize
+ \def\kv@normalize#1{%
+ \saved@normalize{#1}%
+ \@onelevel@sanitize\kv@list
+ \@onelevel@sanitize\Result
+ }%
+ \Test{#,#=#,{#}={#},{#}=,{#}}{,#,#=#,{#}={#},{#}=,{#},}%
+ \endgroup
+ \begingroup
+ \def\Test#1#2{%
+ \edef\Result{#2}%
+ \@Test{#1}%
+ }%
+ \Test{{ a = b }}{,{ a = b },}%
+ \@makeactive\,%
+ \Test{{,}}{\string,{\noexpand,}\string,}%
+ \@makeother\,%
+ \@makeactive\=%
+ \Test{a={=}}{,a\string={\noexpand=},}%
+ \endgroup
+ \Test{a=b}{,a=b,}%
+ \Test{a={b}}{,a={b},}%
+ \Test{a ={b}}{,a={b},}%
+ \Test{a= {b}}{,a={b},}%
+ \Test{a = {b}}{,a={b},}%
+ \Test{a = {b} ,}{,a={b},}%
+ \Test{a}{,a,}%
+ \Test{ a}{,a,}%
+ \Test{a }{,a,}%
+ \Test{ a }{,a,}%
+ \Test{, a ,}{,a,}%
+ \Test{, a b ,}{,a b,}%
+ \Test{,a ,}{,a,}%
+ \Test{ a =}{,a=,}%
+ \Test{ a = }{,a=,}%
+ \Test{a =}{,a=,}%
+ \Test{{a} =}{,{a}=,}%
+ \Test{{a}= {}}{,{a}={},}%
+ \Test{, a = {}}{,a={},}%
+ \Test{a,,b}{,a,b,}%
+ \Test{a=\fi}{,a=\fi,}%
+ \Test{a=\iffalse}{,a=\iffalse,}%
+ \Test{a=\iffalse,b=\fi}{,a=\iffalse,b=\fi,}%
+\end{qstest}
+
+\begin{qstest}{parse}{parse,brace-removal}
+ \def\Processor#1#2{%
+ \expandafter\Expect\expandafter{\kv@key}{#1}%
+ \toks@{#2}%
+ \edef\x{\the\toks@}%
+ \ifx\kv@value\relax
+ \Expect*{\the\toks@}{}%
+ \def\Value{<>}%
+ \else
+ \edef\Value{[\the\toks@]}%
+ \@onelevel@sanitize\Value
+ \fi
+ \toks@{#1}%
+ \ifx\Result\@empty
+ \edef\Result{[\the\toks@]=\Value}%
+ \else
+ \edef\Result{\Result,[\the\toks@]=\Value}%
+ \fi
+ \@onelevel@sanitize\Result
+ }%
+ \def\Test#1#2{%
+ \let\Result\@empty
+ \kv@parse{#1}\Processor
+ \Expect*{\Result}{#2}%
+ }%
+ \Test{}{}%
+ \Test{{}}{}%
+ \Test{{{}}}{[]=<>}%
+ \Test{{{{}}}}{[{}]=<>}%
+ \Test{a}{[a]=<>}%
+ \Test{{a}}{[a]=<>}%
+ \Test{{a}}{[a]=<>}%
+ \Test{{{a}}}{[a]=<>}%
+ \Test{{{{a}}}}{[{a}]=<>}%
+ \Test{a=}{[a]=[]}%
+ \Test{{a}=}{[a]=[]}%
+ \Test{{{a}}=}{[{a}]=[]}%
+ \Test{a={}}{[a]=[]}%
+ \Test{{a}={{}}}{[a]=[{}]}%
+ \Test{a=b}{[a]=[b]}%
+ \Test{a=\fi}{[a]=[\fi]}%
+ \Test{a=\iffalse}{[a]=[\iffalse]}%
+ \Test{a=\iffalse,b=\fi}{[a]=[\iffalse],[b]=[\fi]}%
+ \Test{{ a = b }}{[ a ]=[ b ]}%
+ \Test{{{ a = b }}}{[ a = b ]=<>}%
+\end{qstest}
+
+\begin{qstest}{comma}{comma,parse}
+ \def\Processor#1{%
+ \expandafter\Expect\expandafter{\comma@entry}{#1}%
+ \toks@{#1}%
+ \ifx\Result\@empty
+ \edef\Result{[\the\toks@]}%
+ \else
+ \edef\Result{\Result,[\the\toks@]}%
+ \fi
+ \@onelevel@sanitize\Result
+ }%
+ \def\Test#1#2{%
+ \let\Result\@empty
+ \comma@parse{#1}\Processor
+ \Expect*{\Result}{#2}%
+ }%
+\tracingmacros=1
+ \Test{}{}%
+ \Test{{}}{}%
+ \Test{{{}}}{[{}]}%
+ \Test{a}{[a]}%
+ \Test{{a}}{[a]}%
+ \Test{{{a}}}{[{a}]}%
+ \Test{a=}{[a=]}%
+ \Test{a\fi}{[a\fi]}%
+ \Test{a\iffalse}{[a\iffalse]}%
+ \Test{\iffalse,\fi}{[\iffalse],[\fi]}%
+ \Test{ a , b , c }{[a],[b],[c]}%
+ \Test{ { } ,{ }, { }, { } , { } }{[ ],[ ],[ ],[ ],[ ]}%
+ \Test{ {{}} ,{{}}, {{}}, {{}} , {{}} }{[{}],[{}],[{}],[{}],[{}]}%
+\end{qstest}
+
+\begin{document}
+\end{document}
+\endinput
+%%
+%% End of file `kvsetkeys-test2.tex'.
diff --git a/Master/texmf-dist/doc/latex/oberdiek/kvsetkeys-test3.tex b/Master/texmf-dist/doc/latex/oberdiek/kvsetkeys-test3.tex
new file mode 100644
index 00000000000..fcf53c96479
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/oberdiek/kvsetkeys-test3.tex
@@ -0,0 +1,267 @@
+%%
+%% This is file `kvsetkeys-test3.tex',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% kvsetkeys.dtx (with options: `test2,noetex')
+%%
+%% This is a generated file.
+%%
+%% Copyright (C) 2006, 2007 by Heiko Oberdiek <oberdiek@uni-freiburg.de>
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any later
+%% version. The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% This Current Maintainer of this work is Heiko Oberdiek.
+%%
+%% This work consists of the main source file kvsetkeys.dtx
+%% and the derived files
+%% kvsetkeys.sty, kvsetkeys.pdf, kvsetkeys.ins, kvsetkeys.drv,
+%% kvsetkeys-example.tex, kvsetkeys-test1.tex,
+%% kvsetkeys-test2.tex, kvsetkeys-test3.tex.
+%%
+\NeedsTeXFormat{LaTeX2e}
+\nofiles
+\documentclass{article}
+\let\SavedUnexpanded\unexpanded
+\let\unexpanded\UNDEFINED
+\makeatletter
+\chardef\KVS@TestMode=1 %
+\makeatother
+\usepackage{kvsetkeys}[2007/09/29]
+\let\unexpanded\SavedUnexpanded
+\usepackage{qstest}
+\IncludeTests{*}
+\LogTests{log}{*}{*}
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname pdfresettimer\endcsname\relax
+\else
+ \makeatletter
+ \newcount\SummaryTime
+ \newcount\TestTime
+ \SummaryTime=\z@
+ \newcommand*{\PrintTime}[2]{%
+ \typeout{%
+ [Time #1: \strip@pt\dimexpr\number#2sp\relax\space s]%
+ }%
+ }%
+ \newcommand*{\StartTime}[1]{%
+ \renewcommand*{\TimeDescription}{#1}%
+ \pdfresettimer
+ }%
+ \newcommand*{\TimeDescription}{}%
+ \newcommand*{\StopTime}{%
+ \TestTime=\pdfelapsedtime
+ \global\advance\SummaryTime\TestTime
+ \PrintTime\TimeDescription\TestTime
+ }%
+ \let\saved@qstest\qstest
+ \let\saved@endqstest\endqstest
+ \def\qstest#1#2{%
+ \saved@qstest{#1}{#2}%
+ \StartTime{#1}%
+ }%
+ \def\endqstest{%
+ \StopTime
+ \saved@endqstest
+ }%
+ \AtEndDocument{%
+ \PrintTime{summary}\SummaryTime
+ }%
+ \makeatother
+\fi
+\makeatletter
+\def\@makeactive#1{%
+ \catcode`#1=13\relax
+}
+\@makeactive\,
+\def,{\errmessage{COMMA}}
+\@makeother\,
+\@makeactive\=
+\def={\errmessage{EQUALS}}
+\@makeother\=
+
+\begin{qstest}{normalize}{normalize,active-chars,space-removal}%
+ \def\Test#1#2{%
+ \@makeother\,%
+ \@makeother\=%
+ \scantokens{\toks@={#2}}%
+ \edef\Result{\the\toks@}%
+ \@makeother\,%
+ \@makeother\=%
+ \@Test{#1}%
+ \@makeactive\,%
+ \@Test{#1}%
+ \@makeactive\=%
+ \@Test{#1}%
+ \@makeother\,%
+ \@Test{#1}%
+ \@makeother\=%
+ }%
+ \def\@Test#1{%
+ \scantokens{\kv@normalize{#1}}%
+ \expandafter\expandafter\expandafter\Expect
+ \expandafter\expandafter\expandafter
+ {\expandafter\kv@list\expandafter}\expandafter{\Result}%
+ \Expect*{\ifx\kv@list\Result true\else false\fi}{true}%
+ }%
+ \Test{}{,}%
+ \Test{,}{,}%
+ \Test{,,}{,}%
+ \Test{,,,}{,}%
+ \Test{ , }{,}%
+ \Test{{a}}{,{a},}%
+ \Test{,{a}}{,{a},}%
+ \Test{{a},}{,{a},}%
+ \Test{{a},{b}}{,{a},{b},}%
+ \Test{{b}={c},{}=,{}={},{d}=}{,{b}={c},{}=,{}={},{d}=,}%
+ \Test{{}}{,{},}%
+ \Test{{},{},{}}{,{},{},{},}%
+ \Test{=}{,=,}%
+ \Test{=,=,=}{,=,=,=,}%
+ \def\TestSet#1{%
+ \Test{#1#1}{,}%
+ \Test{#1#1,#1#1}{,}%
+ \Test{#1#1,#1#1,#1#1}{,}%
+ \Test{#1#1#1#1#1}{,}%
+ \Test{{a}#1#1=#1#1{b}}{,{a}={b},}%
+ }%
+ \TestSet{ }%
+ \begingroup
+ \let\saved@normalize\kv@normalize
+ \def\kv@normalize#1{%
+ \saved@normalize{#1}%
+ \@onelevel@sanitize\kv@list
+ \@onelevel@sanitize\Result
+ }%
+ \Test{#,#=#,{#}={#},{#}=,{#}}{,#,#=#,{#}={#},{#}=,{#},}%
+ \endgroup
+ \begingroup
+ \def\Test#1#2{%
+ \edef\Result{#2}%
+ \@Test{#1}%
+ }%
+ \Test{{ a = b }}{,{ a = b },}%
+ \@makeactive\,%
+ \Test{{,}}{\string,{\noexpand,}\string,}%
+ \@makeother\,%
+ \@makeactive\=%
+ \Test{a={=}}{,a\string={\noexpand=},}%
+ \endgroup
+ \Test{a=b}{,a=b,}%
+ \Test{a={b}}{,a={b},}%
+ \Test{a ={b}}{,a={b},}%
+ \Test{a= {b}}{,a={b},}%
+ \Test{a = {b}}{,a={b},}%
+ \Test{a = {b} ,}{,a={b},}%
+ \Test{a}{,a,}%
+ \Test{ a}{,a,}%
+ \Test{a }{,a,}%
+ \Test{ a }{,a,}%
+ \Test{, a ,}{,a,}%
+ \Test{, a b ,}{,a b,}%
+ \Test{,a ,}{,a,}%
+ \Test{ a =}{,a=,}%
+ \Test{ a = }{,a=,}%
+ \Test{a =}{,a=,}%
+ \Test{{a} =}{,{a}=,}%
+ \Test{{a}= {}}{,{a}={},}%
+ \Test{, a = {}}{,a={},}%
+ \Test{a,,b}{,a,b,}%
+ \Test{a=\fi}{,a=\fi,}%
+ \Test{a=\iffalse}{,a=\iffalse,}%
+ \Test{a=\iffalse,b=\fi}{,a=\iffalse,b=\fi,}%
+\end{qstest}
+
+\begin{qstest}{parse}{parse,brace-removal}
+ \def\Processor#1#2{%
+ \expandafter\Expect\expandafter{\kv@key}{#1}%
+ \toks@{#2}%
+ \edef\x{\the\toks@}%
+ \ifx\kv@value\relax
+ \Expect*{\the\toks@}{}%
+ \def\Value{<>}%
+ \else
+ \edef\Value{[\the\toks@]}%
+ \@onelevel@sanitize\Value
+ \fi
+ \toks@{#1}%
+ \ifx\Result\@empty
+ \edef\Result{[\the\toks@]=\Value}%
+ \else
+ \edef\Result{\Result,[\the\toks@]=\Value}%
+ \fi
+ \@onelevel@sanitize\Result
+ }%
+ \def\Test#1#2{%
+ \let\Result\@empty
+ \kv@parse{#1}\Processor
+ \Expect*{\Result}{#2}%
+ }%
+ \Test{}{}%
+ \Test{{}}{}%
+ \Test{{{}}}{[]=<>}%
+ \Test{{{{}}}}{[{}]=<>}%
+ \Test{a}{[a]=<>}%
+ \Test{{a}}{[a]=<>}%
+ \Test{{a}}{[a]=<>}%
+ \Test{{{a}}}{[a]=<>}%
+ \Test{{{{a}}}}{[{a}]=<>}%
+ \Test{a=}{[a]=[]}%
+ \Test{{a}=}{[a]=[]}%
+ \Test{{{a}}=}{[{a}]=[]}%
+ \Test{a={}}{[a]=[]}%
+ \Test{{a}={{}}}{[a]=[{}]}%
+ \Test{a=b}{[a]=[b]}%
+ \Test{a=\fi}{[a]=[\fi]}%
+ \Test{a=\iffalse}{[a]=[\iffalse]}%
+ \Test{a=\iffalse,b=\fi}{[a]=[\iffalse],[b]=[\fi]}%
+ \Test{{ a = b }}{[ a ]=[ b ]}%
+ \Test{{{ a = b }}}{[ a = b ]=<>}%
+\end{qstest}
+
+\begin{qstest}{comma}{comma,parse}
+ \def\Processor#1{%
+ \expandafter\Expect\expandafter{\comma@entry}{#1}%
+ \toks@{#1}%
+ \ifx\Result\@empty
+ \edef\Result{[\the\toks@]}%
+ \else
+ \edef\Result{\Result,[\the\toks@]}%
+ \fi
+ \@onelevel@sanitize\Result
+ }%
+ \def\Test#1#2{%
+ \let\Result\@empty
+ \comma@parse{#1}\Processor
+ \Expect*{\Result}{#2}%
+ }%
+\tracingmacros=1
+ \Test{}{}%
+ \Test{{}}{}%
+ \Test{{{}}}{[{}]}%
+ \Test{a}{[a]}%
+ \Test{{a}}{[a]}%
+ \Test{{{a}}}{[{a}]}%
+ \Test{a=}{[a=]}%
+ \Test{a\fi}{[a\fi]}%
+ \Test{a\iffalse}{[a\iffalse]}%
+ \Test{\iffalse,\fi}{[\iffalse],[\fi]}%
+ \Test{ a , b , c }{[a],[b],[c]}%
+ \Test{ { } ,{ }, { }, { } , { } }{[ ],[ ],[ ],[ ],[ ]}%
+ \Test{ {{}} ,{{}}, {{}}, {{}} , {{}} }{[{}],[{}],[{}],[{}],[{}]}%
+\end{qstest}
+
+\begin{document}
+\end{document}
+\endinput
+%%
+%% End of file `kvsetkeys-test3.tex'.
diff --git a/Master/texmf-dist/doc/latex/oberdiek/kvsetkeys.pdf b/Master/texmf-dist/doc/latex/oberdiek/kvsetkeys.pdf
index eb2c8c0652b..f4110fab0cf 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/kvsetkeys.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/kvsetkeys.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/makerobust.pdf b/Master/texmf-dist/doc/latex/oberdiek/makerobust.pdf
index 77dfad4fa94..413c98d4b42 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/makerobust.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/makerobust.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/oberdiek.pdf b/Master/texmf-dist/doc/latex/oberdiek/oberdiek.pdf
index 621d9703be5..c4df5f6495a 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/oberdiek.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/oberdiek.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/pagesel.pdf b/Master/texmf-dist/doc/latex/oberdiek/pagesel.pdf
index 0be191a8819..806c3dda08b 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/pagesel.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/pagesel.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/pdfcol.pdf b/Master/texmf-dist/doc/latex/oberdiek/pdfcol.pdf
index be5d4d31346..f3d4f4c5628 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/pdfcol.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/pdfcol.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/pdfcolfoot.pdf b/Master/texmf-dist/doc/latex/oberdiek/pdfcolfoot.pdf
index 48ae28c940f..77fc0928449 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/pdfcolfoot.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/pdfcolfoot.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/pdfcolmk.pdf b/Master/texmf-dist/doc/latex/oberdiek/pdfcolmk.pdf
index 7e34d34f014..b16a1b630ba 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/pdfcolmk.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/pdfcolmk.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/pdfcolparallel.pdf b/Master/texmf-dist/doc/latex/oberdiek/pdfcolparallel.pdf
index ab399713002..a1334f403a8 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/pdfcolparallel.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/pdfcolparallel.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/pdfcolparcolumns.pdf b/Master/texmf-dist/doc/latex/oberdiek/pdfcolparcolumns.pdf
index 4e252de7e10..a3d9de705ec 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/pdfcolparcolumns.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/pdfcolparcolumns.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/pdfcrypt.pdf b/Master/texmf-dist/doc/latex/oberdiek/pdfcrypt.pdf
index 52eda074d29..8a2084591b2 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/pdfcrypt.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/pdfcrypt.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/pdfescape.pdf b/Master/texmf-dist/doc/latex/oberdiek/pdfescape.pdf
index 107c2f93d17..d2b50f80033 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/pdfescape.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/pdfescape.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/pdflscape.pdf b/Master/texmf-dist/doc/latex/oberdiek/pdflscape.pdf
index d9d0beb4611..1dd1bf2072a 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/pdflscape.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/pdflscape.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/picture.pdf b/Master/texmf-dist/doc/latex/oberdiek/picture.pdf
index caeacfcc186..10c07b6e977 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/picture.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/picture.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/pmboxdraw.pdf b/Master/texmf-dist/doc/latex/oberdiek/pmboxdraw.pdf
index de133485a5b..6444b6f8ea0 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/pmboxdraw.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/pmboxdraw.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/refcount.pdf b/Master/texmf-dist/doc/latex/oberdiek/refcount.pdf
index 135dc0c67af..8e0f11e5705 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/refcount.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/refcount.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/selinput.pdf b/Master/texmf-dist/doc/latex/oberdiek/selinput.pdf
index e14700e609b..aa83acad4ca 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/selinput.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/selinput.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/setouterhbox.pdf b/Master/texmf-dist/doc/latex/oberdiek/setouterhbox.pdf
index 69044ed98d9..37dbbe7249c 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/setouterhbox.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/setouterhbox.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/settobox.pdf b/Master/texmf-dist/doc/latex/oberdiek/settobox.pdf
index 4bde244f1ea..cc2a25a8a01 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/settobox.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/settobox.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/soulutf8.pdf b/Master/texmf-dist/doc/latex/oberdiek/soulutf8.pdf
index e8604c214a7..43de362e3c2 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/soulutf8.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/soulutf8.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/stackrel.pdf b/Master/texmf-dist/doc/latex/oberdiek/stackrel.pdf
index d2eccc9186c..f8fffdf3a11 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/stackrel.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/stackrel.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/stringenc.pdf b/Master/texmf-dist/doc/latex/oberdiek/stringenc.pdf
index 754122c52fc..b07bf55f954 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/stringenc.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/stringenc.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/tabularht.pdf b/Master/texmf-dist/doc/latex/oberdiek/tabularht.pdf
index 964eb41f869..4d27a653e9a 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/tabularht.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/tabularht.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/tabularkv.pdf b/Master/texmf-dist/doc/latex/oberdiek/tabularkv.pdf
index 11132898a58..1f490de7b75 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/tabularkv.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/tabularkv.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/telprint.pdf b/Master/texmf-dist/doc/latex/oberdiek/telprint.pdf
index 226f45a0f38..b36039cf50c 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/telprint.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/telprint.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/transparent.pdf b/Master/texmf-dist/doc/latex/oberdiek/transparent.pdf
index 7d5ea1e9227..230735afb84 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/transparent.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/transparent.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/twoopt.pdf b/Master/texmf-dist/doc/latex/oberdiek/twoopt.pdf
index cdd894dd434..27d558ccf4e 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/twoopt.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/twoopt.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/oberdiek/zref.pdf b/Master/texmf-dist/doc/latex/oberdiek/zref.pdf
index 30fd5d536f9..655eb8704a0 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/zref.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/zref.pdf
Binary files differ