summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2019-12-17 23:24:25 +0000
committerKarl Berry <karl@freefriends.org>2019-12-17 23:24:25 +0000
commitaf44b62ae72030d27d75d2f6b9a3619fb2a54821 (patch)
tree693e7cced5af5306e67c3c81463a56c6b16f5892 /Master/texmf-dist/tex/generic
parentb85578ddb113fb36cfabf6478966066cc6226170 (diff)
intcalc split from oberdiek (18dec19)
git-svn-id: svn://tug.org/texlive/trunk@53168 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/generic')
-rw-r--r--Master/texmf-dist/tex/generic/intcalc/intcalc.sty1734
1 files changed, 1734 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/generic/intcalc/intcalc.sty b/Master/texmf-dist/tex/generic/intcalc/intcalc.sty
new file mode 100644
index 00000000000..3e660fe2224
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/intcalc/intcalc.sty
@@ -0,0 +1,1734 @@
+%%
+%% This is file `intcalc.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% intcalc.dtx (with options: `package')
+%%
+%% This is a generated file.
+%%
+%% Project: intcalc
+%% Version: 2019/12/15 v1.3
+%%
+%% Copyright (C)
+%% 2007 Heiko Oberdiek
+%% 2016-2019 Oberdiek Package Support Group
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3c of this license or (at your option) any later
+%% version. This version of this license is in
+%% https://www.latex-project.org/lppl/lppl-1-3c.txt
+%% and the latest version of this license is in
+%% https://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".
+%%
+%% The Current Maintainers of this work are
+%% Heiko Oberdiek and the Oberdiek Package Support Group
+%% https://github.com/ho-tex/intcalc/issues
+%%
+%%
+%% The Base Interpreter refers to any `TeX-Format',
+%% because some files are installed in TDS:tex/generic//.
+%%
+%% This work consists of the main source file intcalc.dtx
+%% and the derived files
+%% intcalc.sty, intcalc.pdf, intcalc.ins, intcalc.drv,
+%% intcalc-test1.tex, intcalc-test2.tex, intcalc-test3.tex,
+%% intcalc-test4.tex.
+%%
+\begingroup\catcode61\catcode48\catcode32=10\relax%
+ \catcode13=5 % ^^M
+ \endlinechar=13 %
+ \catcode35=6 % #
+ \catcode39=12 % '
+ \catcode44=12 % ,
+ \catcode45=12 % -
+ \catcode46=12 % .
+ \catcode58=12 % :
+ \catcode64=11 % @
+ \catcode123=1 % {
+ \catcode125=2 % }
+ \expandafter\let\expandafter\x\csname ver@intcalc.sty\endcsname
+ \ifx\x\relax % plain-TeX, first loading
+ \else
+ \def\empty{}%
+ \ifx\x\empty % LaTeX, first loading,
+ % variable is initialized, but \ProvidesPackage not yet seen
+ \else
+ \expandafter\ifx\csname PackageInfo\endcsname\relax
+ \def\x#1#2{%
+ \immediate\write-1{Package #1 Info: #2.}%
+ }%
+ \else
+ \def\x#1#2{\PackageInfo{#1}{#2, stopped}}%
+ \fi
+ \x{intcalc}{The package is already loaded}%
+ \aftergroup\endinput
+ \fi
+ \fi
+\endgroup%
+\begingroup\catcode61\catcode48\catcode32=10\relax%
+ \catcode13=5 % ^^M
+ \endlinechar=13 %
+ \catcode35=6 % #
+ \catcode39=12 % '
+ \catcode40=12 % (
+ \catcode41=12 % )
+ \catcode44=12 % ,
+ \catcode45=12 % -
+ \catcode46=12 % .
+ \catcode47=12 % /
+ \catcode58=12 % :
+ \catcode64=11 % @
+ \catcode91=12 % [
+ \catcode93=12 % ]
+ \catcode123=1 % {
+ \catcode125=2 % }
+ \expandafter\ifx\csname ProvidesPackage\endcsname\relax
+ \def\x#1#2#3[#4]{\endgroup
+ \immediate\write-1{Package: #3 #4}%
+ \xdef#1{#4}%
+ }%
+ \else
+ \def\x#1#2[#3]{\endgroup
+ #2[{#3}]%
+ \ifx#1\@undefined
+ \xdef#1{#3}%
+ \fi
+ \ifx#1\relax
+ \xdef#1{#3}%
+ \fi
+ }%
+ \fi
+\expandafter\x\csname ver@intcalc.sty\endcsname
+\ProvidesPackage{intcalc}%
+ [2019/12/15 v1.3 Expandable calculations with integers (HO)]%
+\begingroup\catcode61\catcode48\catcode32=10\relax%
+ \catcode13=5 % ^^M
+ \endlinechar=13 %
+ \catcode123=1 % {
+ \catcode125=2 % }
+ \catcode64=11 % @
+ \def\x{\endgroup
+ \expandafter\edef\csname InCa@AtEnd\endcsname{%
+ \endlinechar=\the\endlinechar\relax
+ \catcode13=\the\catcode13\relax
+ \catcode32=\the\catcode32\relax
+ \catcode35=\the\catcode35\relax
+ \catcode61=\the\catcode61\relax
+ \catcode64=\the\catcode64\relax
+ \catcode123=\the\catcode123\relax
+ \catcode125=\the\catcode125\relax
+ }%
+ }%
+\x\catcode61\catcode48\catcode32=10\relax%
+\catcode13=5 % ^^M
+\endlinechar=13 %
+\catcode35=6 % #
+\catcode64=11 % @
+\catcode123=1 % {
+\catcode125=2 % }
+\def\TMP@EnsureCode#1#2{%
+ \edef\InCa@AtEnd{%
+ \InCa@AtEnd
+ \catcode#1=\the\catcode#1\relax
+ }%
+ \catcode#1=#2\relax
+}
+\TMP@EnsureCode{33}{12}% !
+\TMP@EnsureCode{40}{12}% (
+\TMP@EnsureCode{41}{12}% )
+\TMP@EnsureCode{42}{12}% *
+\TMP@EnsureCode{43}{12}% +
+\TMP@EnsureCode{45}{12}% -
+\TMP@EnsureCode{47}{12}% /
+\TMP@EnsureCode{58}{11}% : (letter!)
+\TMP@EnsureCode{60}{12}% <
+\TMP@EnsureCode{62}{12}% >
+\TMP@EnsureCode{63}{14}% ? (comment!)
+\edef\InCa@AtEnd{\InCa@AtEnd\noexpand\endinput}
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname InCa@TestMode\endcsname\relax
+\else
+ \catcode63=9 % ? (ignore)
+\fi
+? \let\InCa@@TestMode\InCa@TestMode
+\def\InCa@Abs#1#2!{%
+ \ifx#1-%
+ #2%
+ \else
+ #1#2%
+ \fi
+}
+\def\InCa@Sgn#1#2!{%
+ \ifx#1-%
+ -1%
+ \else
+ \ifx#10%
+ 0%
+ \else
+ 1%
+ \fi
+ \fi
+}
+\def\InCa@Min#1!#2!{%
+ \ifnum#1<#2 %
+ #1%
+ \else
+ #2%
+ \fi
+}
+\def\InCa@Max#1!#2!{%
+ \ifnum#1>#2 %
+ #1%
+ \else
+ #2%
+ \fi
+}
+\def\InCa@Cmp#1!#2!{%
+ \ifnum#1=#2 %
+ 0%
+ \else
+ \ifnum#1<#2 %
+ -%
+ \fi
+ 1%
+ \fi
+}
+\def\InCa@Fac#1!{%
+ \ifcase#1 1% 0!
+ \or 1% 1!
+ \or 2% 2!
+ \or 6% 3!
+ \or 24% 4!
+ \or 120% 5!
+ \or 720% 6!
+ \or 5040% 7!
+ \or 40320% 8!
+ \or 362880% 9!
+ \or 3628800% 10!
+ \or 39916800% 11!
+ \or 479001600% 12!
+ \else
+ \ifnum#1<\z@
+ 0\IntCalcError:FacNegative%
+ \else
+ 0\IntCalcError:FacOverflow%
+ \fi
+ \fi
+}
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname numexpr\endcsname\relax
+\else
+ \def\intcalcNum#1{%
+ \the\numexpr#1\relax
+ }%
+ \def\intcalcInv#1{%
+ \number-\intcalcNum{#1} %
+ }%
+ \def\intcalcAbs#1{%
+ \number\expandafter\InCa@Abs\the\numexpr#1! %
+ }%
+ \def\intcalcSgn#1{%
+ \number\expandafter\InCa@Sgn\the\numexpr#1! %
+ }%
+ \def\intcalcMin#1#2{%
+ \number\expandafter\InCa@Min
+ \the\numexpr#1\expandafter!%
+ \the\numexpr#2! %
+ }%
+ \def\intcalcMax#1#2{%
+ \number\expandafter\InCa@Max
+ \the\numexpr#1\expandafter!%
+ \the\numexpr#2! %
+ }%
+ \def\intcalcCmp#1#2{%
+ \number\expandafter\InCa@Cmp
+ \the\numexpr#1\expandafter!\the\numexpr#2! %
+ }%
+ \def\intcalcInc#1{%
+ \the\numexpr#1+1\relax
+ }%
+ \def\intcalcDec#1{%
+ \the\numexpr#1-1\relax
+ }%
+ \def\IntCalcInc#1!{%
+ \the\numexpr#1+1\relax
+ }%
+ \def\IntCalcDec#1!{%
+ \the\numexpr#1-1\relax
+ }%
+ \def\intcalcAdd#1#2{%
+ \the\numexpr#1+(#2)\relax
+ }%
+ \def\intcalcSub#1#2{%
+ \the\numexpr#1-(#2)\relax
+ }%
+ \def\IntCalcAdd#1!#2!{%
+ \the\numexpr#1+#2\relax
+ }%
+ \def\IntCalcSub#1!#2!{%
+ \the\numexpr#1-#2\relax
+ }%
+ \def\intcalcShl#1{%
+ \the\numexpr(#1)*2\relax
+ }%
+ \def\intcalcShr#1{%
+ \number\expandafter\InCa@Shr\the\numexpr#1! %
+ }%
+ \def\IntCalcShl#1!{%
+ \the\numexpr#1*2\relax
+ }%
+ \def\IntCalcShr#1!{%
+ \the\numexpr\ifodd#1 (#1-1)\else#1\fi/2\relax
+ }%
+ \def\InCa@Shr#1#2!{%
+ \ifx#1-%
+ -\InCa@Shr#2!%
+ \else
+ \ifodd#1#2 %
+ \the\numexpr(#1#2-1)/2\relax
+ \else
+ \the\numexpr#1#2/2\relax
+ \fi
+ \fi
+ }%
+ \def\intcalcMul#1#2{%
+ \the\numexpr(#1)*(#2)\relax
+ }%
+ \def\IntCalcMul#1!#2!{%
+ \the\numexpr#1*#2\relax
+ }%
+ \def\intcalcSqr#1{%
+ \number\expandafter\InCa@Sqr\the\numexpr#1! %
+ }%
+ \def\InCa@Sqr#1!{%
+ \the\numexpr#1*#1\relax
+ }%
+ \def\intcalcFac#1{%
+ \number\expandafter\InCa@Fac\the\numexpr#1! %
+ }%
+ \def\intcalcPow#1#2{%
+ \number\expandafter\InCa@Pow
+ \the\numexpr#1\expandafter!%
+ \the\numexpr#2! %
+ }%
+ \def\InCa@Pow#1#2!#3#4!{%
+ \ifcase#3#4 % power = 0
+ 1%
+ \or % power = 1
+ #1#2%
+ \or % power = 2
+ \the\numexpr#1#2*#1#2\relax
+ \else
+ \ifcase#1#2 % basis = 0, power <> 0
+ 0%
+ \ifx#3-% power < 0
+ 0\IntCalcError:DivisionByZero%
+ \fi
+ \or
+ 1% basis = 1
+ \else
+ \ifnum#1#2=\m@ne % basis = -1
+ \ifodd#3#4 %
+ -%
+ \fi
+ 1%
+ \else % |basis| > 1
+ \ifx#3-% power < 0
+ 0%
+ \else % power > 2
+ \InCa@PowRec#1#2!#3#4!1!%
+ \fi
+ \fi
+ \fi
+ \fi
+ }%
+ \def\InCa@PowRec#1!#2!#3!{%
+ \ifnum#2=\@ne
+ \the\numexpr#1*#3\relax
+ \else
+ \ifodd#2 %
+ \expandafter\InCa@PowRec
+ \the\numexpr#1*#1\expandafter!%
+ \the\numexpr(#2-1)/2\expandafter!%
+ \the\numexpr#1*#3\expandafter\expandafter\expandafter!%
+ \else
+ \expandafter\InCa@PowRec
+ \the\numexpr#1*#1\expandafter!%
+ \the\numexpr(#2-1)/2\expandafter!%
+ \number#3\expandafter\expandafter\expandafter!%
+ \fi
+ \fi
+ }%
+ \def\intcalcDiv#1#2{%
+ \number\expandafter\InCa@Div
+ \the\numexpr#1\expandafter!%
+ \the\numexpr#2! %
+ }%
+ \def\InCa@Div#1!#2!{%
+ \ifcase#2 %
+ 0\IntCalcError:DivisionByZero%
+ \else
+ \ifcase#1 %
+ 0%
+ \else
+ \expandafter\InCa@@Div
+ \romannumeral 0%
+ \ifnum#1<\z@
+ \expandafter-\number-#1%
+ \else
+ \expandafter+\number#1%
+ \fi
+ \expandafter!%
+ \romannumeral 0%
+ \ifnum#2<\z@
+ \expandafter-\number-#2%
+ \else
+ \expandafter+\number#2%
+ \fi
+ !%
+ \fi
+ \fi
+ }%
+ \def\InCa@Temp#1{%
+ \def\IntCalcDiv##1!##2!{%
+ \number
+ \ifcase##2 %
+ 0\IntCalcError:DivisionByZero%
+ \else
+ \ifcase##1 %
+ 0%
+ \else
+ \the\numexpr(##1-(##2-1)/2)/##2\relax
+ \fi
+ \fi
+ #1%
+ }%
+ }%
+ \InCa@Temp{ }%
+ \def\InCa@@Div#1#2!#3#4!{%
+ #1#3%
+ \the\numexpr(#2-(#4-1)/2)/#4\relax
+ }%
+ \def\intcalcMod#1#2{%
+ \number\expandafter\InCa@Mod
+ \the\numexpr#1\expandafter!%
+ \the\numexpr#2! %
+ }%
+ \def\InCa@Mod#1!#2!{%
+ \ifcase#2 %
+ 0\IntCalcError:DivisionByZero%
+ \else
+ \ifcase#1 %
+ 0%
+ \else
+ \expandafter\InCa@@Mod
+ \romannumeral 0%
+ \ifnum#1<\z@
+ \expandafter-\number-#1%
+ \else
+ \expandafter+\number#1%
+ \fi
+ \expandafter!%
+ \romannumeral 0%
+ \ifnum#2<\z@
+ \expandafter-\number-#2%
+ \else
+ \expandafter+\number#2%
+ \fi
+ !%
+ \fi
+ \fi
+ }%
+ \def\InCa@Temp#1{%
+ \def\IntCalcMod##1!##2!{%
+ \number
+ \ifcase##2 %
+ 0\IntCalcError:DivisionByZero%
+ \else
+ \ifcase##1 %
+ 0%
+ \else
+ \the\numexpr##1-(##1-(##2-1)/2)/##2*##2\relax
+ \fi
+ \fi
+ #1%
+ }%
+ }%
+ \InCa@Temp{ }%
+ \def\InCa@@Mod#1#2!#3#4!{%
+ \if#3+%
+ \if#1+%
+ \the\numexpr#2-\InCa@@Div+#2!+#4!*#4\relax
+ \else
+ \expandafter\InCa@ModX
+ \the\numexpr-#2+\InCa@@Div+#2!+#4!*#4!#4!%
+ \fi
+ \else
+ -%
+ \if#1+%
+ \expandafter\InCa@ModX
+ \the\numexpr-#2+\InCa@@Div+#2!+#4!*#4!#4!%
+ \else
+ \the\numexpr#2-\InCa@@Div+#2!+#4!*#4\relax
+ \fi
+ \fi
+ }%
+ \def\InCa@ModX#1!#2!{%
+ \ifcase#1 %
+ 0%
+ \else
+ \the\numexpr#1+#2\relax
+ \fi
+ }%
+ \expandafter\InCa@AtEnd
+\fi%
+\def\intcalcNum#1{%
+ \number\expandafter\InCa@FirstOfOne\number#1! %
+}
+\def\intcalcInv#1{%
+ \number\expandafter\InCa@FirstOfOne\number-#1! %
+}
+\def\InCa@FirstOfOne#1!{#1}
+\def\intcalcAbs#1{%
+ \number\expandafter\InCa@Abs\number#1! %
+}
+\def\intcalcSgn#1{%
+ \number\expandafter\InCa@Sgn\number#1! %
+}
+\def\intcalcMin#1#2{%
+ \number\expandafter\InCa@Min
+ \number\number#1\expandafter!\number#2! %
+}
+\def\intcalcMax#1#2{%
+ \number\expandafter\InCa@Max
+ \number\number#1\expandafter!\number#2! %
+}
+\def\intcalcCmp#1#2{%
+ \number\expandafter\InCa@Cmp
+ \number\number#1\expandafter!\number#2! %
+}%
+\def\intcalcInc#1{%
+ \number\expandafter\InCa@IncSwitch\number#1! %
+}
+\def\InCa@IncSwitch#1#2!{%
+ \ifx#1-%
+ -%
+ \csname InCa@Empty%
+ \InCa@Dec#2!%
+ \else
+ \csname InCa@Empty%
+ \InCa@Inc#1#2!%
+ \fi
+}
+\def\intcalcDec#1{%
+ \number\expandafter\InCa@DecSwitch\number#1! %
+}
+\def\InCa@DecSwitch#1#2!{%
+ \ifx#1-%
+ -%
+ \csname InCa@Empty%
+ \expandafter\InCa@Inc#2!%
+ \else
+ \ifx#10%
+ -1%
+ \else
+ \csname InCa@Empty%
+ \InCa@Dec#1#2!%
+ \fi
+ \fi
+}
+\def\IntCalcInc#1!{%
+ \number\csname InCa@Empty\InCa@Inc#1! %
+}
+\def\IntCalcDec#1!{%
+ \number\csname InCa@Empty\InCa@Dec#1! %
+}
+\def\InCa@Inc#1#2{%
+ \ifx#2!%
+ \csname InCa@IncDigit#1\endcsname1%
+ \else
+ \csname InCa@IncDigit#1%
+ \expandafter\InCa@Inc\expandafter#2%
+ \fi
+}
+\def\InCa@Temp#1#2{%
+ \expandafter\def\csname InCa@IncDigit#1\endcsname##1{%
+ \endcsname
+ 0%
+ \ifcase##1 %
+ #1%
+ \else
+ #2%
+ \fi
+ }%
+}
+\InCa@Temp 01
+\InCa@Temp 12
+\InCa@Temp 23
+\InCa@Temp 34
+\InCa@Temp 45
+\InCa@Temp 56
+\InCa@Temp 67
+\InCa@Temp 78
+\InCa@Temp 89
+\expandafter\def\csname InCa@IncDigit9\endcsname#1{%
+ \expandafter\endcsname
+ \ifcase#1 %
+ 09%
+ \else
+ 10%
+ \fi
+}
+\def\InCa@Dec#1#2{%
+ \ifx#2!%
+ \csname InCa@DecDigit#1\endcsname1%
+ \else
+ \csname InCa@DecDigit#1%
+ \expandafter\InCa@Dec\expandafter#2%
+ \fi
+}
+\def\InCa@Temp#1#2{%
+ \expandafter\def\csname InCa@DecDigit#1\endcsname##1{%
+ \endcsname
+ 0%
+ \ifcase##1 %
+ #1%
+ \else
+ #2%
+ \fi
+ }%
+}
+\InCa@Temp 98
+\InCa@Temp 87
+\InCa@Temp 76
+\InCa@Temp 65
+\InCa@Temp 54
+\InCa@Temp 43
+\InCa@Temp 32
+\InCa@Temp 21
+\InCa@Temp 10
+\expandafter\def\csname InCa@DecDigit0\endcsname#1{%
+ \expandafter\endcsname
+ \ifcase#1 %
+ 00%
+ \else
+ 19%
+ \fi
+}
+\def\intcalcAdd#1#2{%
+ \number
+ \expandafter\InCa@AddSwitch
+ \number\number#1\expandafter!%
+ \number#2! %
+}
+\def\intcalcSub#1#2{%
+ \number
+ \expandafter\InCa@AddSwitch
+ \number\number#1\expandafter!%
+ \number-\number#2! %
+}
+\def\InCa@AddSwitch#1!#2!{%
+ \ifnum#1<\z@
+ \ifnum#2<\z@
+ -%
+ \ifnum#1<#2 %
+ \expandafter\InCa@Add\number-#1\expandafter!%
+ \@gobble#2!%
+ \else
+ \expandafter\InCa@Add\number-#2\expandafter!%
+ \@gobble#1!%
+ \fi
+ \else
+ \ifnum-#1>#2 %
+ -%
+ \expandafter\InCa@Sub\@gobble#1!#2!%
+ \else
+ \expandafter\InCa@Sub\number#2\expandafter!%
+ \@gobble#1!%
+ \fi
+ \fi
+ \else
+ \ifnum#2<\z@
+ \ifnum#1>-#2 %
+ \expandafter\InCa@Sub\number#1\expandafter!%
+ \@gobble#2!%
+ \else
+ -%
+ \expandafter\InCa@Sub\@gobble#2!#1!%
+ \fi
+ \else
+ \ifnum#1>#2 %
+ \InCa@Add#1!#2!%
+ \else
+ \InCa@Add#2!#1!%
+ \fi
+ \fi
+ \fi
+}
+\def\IntCalcAdd#1!#2!{%
+ \number\InCa@Add#1!#2! %
+}
+\def\IntCalcSub#1!#2!{%
+ \number\InCa@Sub#1!#2! %
+}
+\begingroup
+ \def\x#1{\endgroup
+ \let\InCa@Space= #1%
+ }%
+\x{ }
+\def\InCa@Add#1!#2!{%
+ \ifcase#2 %
+ #1%
+ \else
+ \InCa@@Add#1!#2!000000000\InCa@Space
+ \fi
+}
+\def\InCa@Sub#1!#2!{%
+ \ifnum#1=#2 %
+ 0%
+ \else
+ \InCa@@Sub#1!#2!000000000\InCa@Space
+ \fi
+}
+\def\InCa@@Add#1!#2#3!{%
+ \ifx\InCa@Empty#3\InCa@Empty
+ \@ReturnAfterElseFi{%
+ \InCa@@@Add!!#1!#2%
+ }%
+ \else
+ \@ReturnAfterFi{%
+ \InCa@@Add#1!#3!#2%
+ }%
+ \fi
+}
+\def\InCa@@Sub#1!#2#3!{%
+ \ifx\InCa@Empty#3\InCa@Empty
+ \@ReturnAfterElseFi{%
+ \InCa@@@Sub!!#1!#2%
+ }%
+ \else
+ \@ReturnAfterFi{%
+ \InCa@@Sub#1!#3!#2%
+ }%
+ \fi
+}
+\def\InCa@@@Add#1!#2!#3#4!#5{%
+ \ifx\InCa@Empty#4\InCa@Empty
+ \csname InCa@Empty%
+ \@ReturnAfterElseFi{%
+ \InCa@ProcessAdd#1#3!#5#2%
+ }%
+ \else
+ \@ReturnAfterFi{%
+ \InCa@@@Add#1#3!#5#2!#4!%
+ }%
+ \fi
+}
+\def\InCa@@@Sub#1!#2!#3#4!#5{%
+ \ifx\InCa@Empty#4\InCa@Empty
+ \csname @gobble%
+ \@ReturnAfterElseFi{%
+ \InCa@ProcessSub#1#3!#5#2%
+ }%
+ \else
+ \@ReturnAfterFi{%
+ \InCa@@@Sub#1#3!#5#2!#4!%
+ }%
+ \fi
+}
+\def\InCa@ProcessAdd#1#2!#3#4{%
+ \ifx\InCa@Empty#2\InCa@Empty
+ \csname InCa@AddDigit#1\endcsname#3%
+ \romannumeral0#4%
+ \else
+ \csname InCa@AddDigit#1\csname InCa@DigitCarry#3%
+ \@ReturnAfterFi{%
+ \InCa@ProcessAdd#2!#4%
+ }%
+ \fi
+}
+\def\InCa@ProcessSub#1#2!#3#4{%
+ \ifx\InCa@Empty#2\InCa@Empty
+ \csname InCa@SubDigit#1\endcsname#3%
+ \romannumeral0#4%
+ \else
+ \csname InCa@SubDigit#1\csname InCa@DigitCarry#3%
+ \@ReturnAfterFi{%
+ \InCa@ProcessSub#2!#4%
+ }%
+ \fi
+}
+\def\InCa@Temp#1#2{%
+ \expandafter\def\csname InCa@DigitCarry#1\endcsname##1{%
+ \ifcase##1 %
+ \endcsname#1%
+ \else
+ \endcsname#2%
+ \fi
+ }%
+}
+\InCa@Temp 01
+\InCa@Temp 12
+\InCa@Temp 23
+\InCa@Temp 34
+\InCa@Temp 45
+\InCa@Temp 56
+\InCa@Temp 67
+\InCa@Temp 78
+\InCa@Temp 89
+\InCa@Temp 9{{10}}
+\expandafter\def\csname InCa@AddDigit0\endcsname#1{%
+ \ifnum#1>9 %
+ \endcsname10%
+ \else
+ \endcsname0#1%
+ \fi
+}
+\def\InCa@Temp#1#2#3{%
+ \expandafter\def\csname InCa@AddDigit#1\endcsname##1{%
+ \ifnum##1>#2 %
+ \endcsname 1%
+ \else
+ \endcsname 0%
+ \fi
+ \ifcase##1 #1% 0
+ #3%
+ \else #1% 10
+ \fi
+ }%
+}
+\InCa@Temp 18{%
+ \or 2% 1
+ \or 3% 2
+ \or 4% 3
+ \or 5% 4
+ \or 6% 5
+ \or 7% 6
+ \or 8% 7
+ \or 9% 8
+ \or 0% 9
+}%
+\InCa@Temp 27{%
+ \or 3% 1
+ \or 4% 2
+ \or 5% 3
+ \or 6% 4
+ \or 7% 5
+ \or 8% 6
+ \or 9% 7
+ \or 0% 8
+ \or 1% 9
+}%
+\InCa@Temp 36{%
+ \or 4% 1
+ \or 5% 2
+ \or 6% 3
+ \or 7% 4
+ \or 8% 5
+ \or 9% 6
+ \or 0% 7
+ \or 1% 8
+ \or 2% 9
+}%
+\InCa@Temp 45{%
+ \or 5% 1
+ \or 6% 2
+ \or 7% 3
+ \or 8% 4
+ \or 9% 5
+ \or 0% 6
+ \or 1% 7
+ \or 2% 8
+ \or 3% 9
+}%
+\InCa@Temp 54{%
+ \or 6% 1
+ \or 7% 2
+ \or 8% 3
+ \or 9% 4
+ \or 0% 5
+ \or 1% 6
+ \or 2% 7
+ \or 3% 8
+ \or 4% 9
+}%
+\InCa@Temp 63{%
+ \or 7% 1
+ \or 8% 2
+ \or 9% 3
+ \or 0% 4
+ \or 1% 5
+ \or 2% 6
+ \or 3% 7
+ \or 4% 8
+ \or 5% 9
+}%
+\InCa@Temp 72{%
+ \or 8% 1
+ \or 9% 2
+ \or 0% 3
+ \or 1% 4
+ \or 2% 5
+ \or 3% 6
+ \or 4% 7
+ \or 5% 8
+ \or 6% 9
+}%
+\InCa@Temp 81{%
+ \or 9% 1
+ \or 0% 2
+ \or 1% 3
+ \or 2% 4
+ \or 3% 5
+ \or 4% 6
+ \or 5% 7
+ \or 6% 8
+ \or 7% 9
+}%
+\InCa@Temp 90{%
+ \or 0% 1
+ \or 1% 2
+ \or 2% 3
+ \or 3% 4
+ \or 4% 5
+ \or 5% 6
+ \or 6% 7
+ \or 7% 8
+ \or 8% 9
+}%
+\def\InCa@Temp#1#2{%
+ \expandafter\def\csname InCa@SubDigit#1\endcsname##1{%
+ \ifnum##1>#1 %
+ \endcsname 1%
+ \else
+ \endcsname 0%
+ \fi
+ \ifcase##1 #1% 0
+ #2%
+ \else #1% 10
+ \fi
+ }%
+}
+\InCa@Temp 0{%
+ \or 9% 1
+ \or 8% 2
+ \or 7% 3
+ \or 6% 4
+ \or 5% 5
+ \or 4% 6
+ \or 3% 7
+ \or 2% 8
+ \or 1% 9
+}
+\InCa@Temp 1{%
+ \or 0% 1
+ \or 9% 2
+ \or 8% 3
+ \or 7% 4
+ \or 6% 5
+ \or 5% 6
+ \or 4% 7
+ \or 3% 8
+ \or 2% 9
+}
+\InCa@Temp 2{%
+ \or 1% 1
+ \or 0% 2
+ \or 9% 3
+ \or 8% 4
+ \or 7% 5
+ \or 6% 6
+ \or 5% 7
+ \or 4% 8
+ \or 3% 9
+}
+\InCa@Temp 3{%
+ \or 2% 1
+ \or 1% 2
+ \or 0% 3
+ \or 9% 4
+ \or 8% 5
+ \or 7% 6
+ \or 6% 7
+ \or 5% 8
+ \or 4% 9
+}
+\InCa@Temp 4{%
+ \or 3% 1
+ \or 2% 2
+ \or 1% 3
+ \or 0% 4
+ \or 9% 5
+ \or 8% 6
+ \or 7% 7
+ \or 6% 8
+ \or 5% 9
+}
+\InCa@Temp 5{%
+ \or 4% 1
+ \or 3% 2
+ \or 2% 3
+ \or 1% 4
+ \or 0% 5
+ \or 9% 6
+ \or 8% 7
+ \or 7% 8
+ \or 6% 9
+}
+\InCa@Temp 6{%
+ \or 5% 1
+ \or 4% 2
+ \or 3% 3
+ \or 2% 4
+ \or 1% 5
+ \or 0% 6
+ \or 9% 7
+ \or 8% 8
+ \or 7% 9
+}
+\InCa@Temp 7{%
+ \or 6% 1
+ \or 5% 2
+ \or 4% 3
+ \or 3% 4
+ \or 2% 5
+ \or 1% 6
+ \or 0% 7
+ \or 9% 8
+ \or 8% 9
+}
+\InCa@Temp 8{%
+ \or 7% 1
+ \or 6% 2
+ \or 5% 3
+ \or 4% 4
+ \or 3% 5
+ \or 2% 6
+ \or 1% 7
+ \or 0% 8
+ \or 9% 9
+}
+\InCa@Temp 9{%
+ \or 8% 1
+ \or 7% 2
+ \or 6% 3
+ \or 5% 4
+ \or 4% 5
+ \or 3% 6
+ \or 2% 7
+ \or 1% 8
+ \or 0% 9
+}
+\def\intcalcShl#1{%
+ \number\expandafter\InCa@ShlSwitch\number#1! %
+}
+\def\InCa@ShlSwitch#1#2!{%
+ \ifx#1-%
+ -\csname InCa@Empty%
+ \InCa@Shl#2!%
+ \else
+ \csname InCa@Empty%
+ \InCa@Shl#1#2!%
+ \fi
+}
+\def\IntCalcShl#1!{%
+ \number
+ \csname InCa@Empty%
+ \InCa@Shl#1! %
+}
+\def\InCa@Shl#1#2{%
+ \ifx#2!%
+ \csname InCa@ShlDigit#1\endcsname0%
+ \else
+ \csname InCa@ShlDigit#1%
+ \@ReturnAfterFi{%
+ \InCa@Shl#2%
+ }%
+ \fi
+}
+\expandafter\def\csname InCa@ShlDigit0\endcsname{%
+ \endcsname0%
+}
+\def\InCa@Temp#1#2#3#4#5{%
+ \expandafter\def\csname InCa@ShlDigit#1\endcsname##1{%
+ \expandafter\endcsname
+ \ifcase##1 %
+ #2#3%
+ \else
+ #4#5%
+ \fi
+ }%
+}
+\InCa@Temp 10203
+\InCa@Temp 20405
+\InCa@Temp 30607
+\InCa@Temp 40809
+\InCa@Temp 51011
+\InCa@Temp 61213
+\InCa@Temp 71415
+\InCa@Temp 81617
+\InCa@Temp 91819
+\def\intcalcShr#1{%
+ \number\expandafter\InCa@ShrSwitch\number#1! %
+}
+\def\InCa@ShrSwitch#1#2!{%
+ \ifx#1-%
+ -\InCa@Shr#2!%
+ \else
+ \InCa@Shr#1#2!%
+ \fi
+}
+\def\IntCalcShr#1!{%
+ \number\InCa@Shr#1! %
+}
+\def\InCa@Shr#1#2{%
+ \InCa@ShrDigit#1!%
+ \ifx#2!%
+ \else
+ \@ReturnAfterFi{%
+ \ifodd#1 %
+ \@ReturnAfterElseFi{%
+ \InCa@Shr{1#2}%
+ }%
+ \else
+ \expandafter\InCa@Shr\expandafter#2%
+ \fi
+ }%
+ \fi
+}
+\def\InCa@ShrDigit#1!{%
+ \ifcase#1 0% 0
+ \or 0% 1
+ \or 1% 2
+ \or 1% 3
+ \or 2% 4
+ \or 2% 5
+ \or 3% 6
+ \or 3% 7
+ \or 4% 8
+ \or 4% 9
+ \or 5% 10
+ \or 5% 11
+ \or 6% 12
+ \or 6% 13
+ \or 7% 14
+ \or 7% 15
+ \or 8% 16
+ \or 8% 17
+ \or 9% 18
+ \or 9% 19
+ \fi
+}
+\def\InCa@Temp#1{%
+ \def\InCa@Tim##1##2{%
+ \number
+ \ifcase##2 % 0
+ 0%
+ \or % 1
+ ##1%
+ \else % 2-9
+ \csname InCa@Empty%
+ \InCa@ProcessTim##2##1!%
+ \fi
+ #1%
+ }%
+}
+\InCa@Temp{ }
+\def\InCa@ProcessTim#1#2#3{%
+ \ifx#3!%
+ \csname InCa@TimDigit#2\endcsname#10%
+ \else
+ \csname InCa@TimDigit#2\csname InCa@Param#1%
+ \@ReturnAfterFi{%
+ \InCa@ProcessTim#1#3%
+ }%
+ \fi
+}
+\def\InCa@Temp#1{%
+ \expandafter\def\csname InCa@Param#1\endcsname{%
+ \endcsname#1%
+ }%
+}
+\InCa@Temp 0%
+\InCa@Temp 1%
+\InCa@Temp 2%
+\InCa@Temp 3%
+\InCa@Temp 4%
+\InCa@Temp 5%
+\InCa@Temp 6%
+\InCa@Temp 7%
+\InCa@Temp 8%
+\InCa@Temp 9%
+\expandafter\def\csname InCa@TimDigit0\endcsname#1#2{%
+ \endcsname
+ 0#2%
+}
+\expandafter\def\csname InCa@TimDigit1\endcsname#1#2{%
+ \ifcase#2 %
+ \endcsname 0#1%
+ \else
+ \csname InCa@AddDigit#1\endcsname #2%
+ \fi
+}
+\def\InCa@Temp#1#2{%
+ \expandafter\def\csname InCa@TimDigit#1\endcsname##1{%
+ \expandafter\InCa@TimDigitCarry
+ \number
+ \ifcase##1 0% 0
+ #2%
+ \fi
+ !%
+ }%
+}
+\InCa@Temp 2{%
+ \or 2% 1
+ \or 4% 2
+ \or 6% 3
+ \or 8% 4
+ \or 10% 5
+ \or 12% 6
+ \or 14% 7
+ \or 16% 8
+ \or 18% 9
+}
+\InCa@Temp 3{%
+ \or 3% 1
+ \or 6% 2
+ \or 9% 3
+ \or 12% 4
+ \or 15% 5
+ \or 18% 6
+ \or 21% 7
+ \or 24% 8
+ \or 27% 9
+}
+\InCa@Temp 4{%
+ \or 4% 1
+ \or 8% 2
+ \or 12% 3
+ \or 16% 4
+ \or 20% 5
+ \or 24% 6
+ \or 28% 7
+ \or 32% 8
+ \or 36% 9
+}
+\InCa@Temp 5{%
+ \or 5% 1
+ \or 10% 2
+ \or 15% 3
+ \or 20% 4
+ \or 25% 5
+ \or 30% 6
+ \or 35% 7
+ \or 40% 8
+ \or 45% 9
+}
+\InCa@Temp 6{%
+ \or 6% 1
+ \or 12% 2
+ \or 18% 3
+ \or 24% 4
+ \or 30% 5
+ \or 36% 6
+ \or 42% 7
+ \or 48% 8
+ \or 54% 9
+}
+\InCa@Temp 7{%
+ \or 7% 1
+ \or 14% 2
+ \or 21% 3
+ \or 28% 4
+ \or 35% 5
+ \or 42% 6
+ \or 49% 7
+ \or 56% 8
+ \or 63% 9
+}
+\InCa@Temp 8{%
+ \or 8% 1
+ \or 16% 2
+ \or 24% 3
+ \or 32% 4
+ \or 40% 5
+ \or 48% 6
+ \or 56% 7
+ \or 64% 8
+ \or 72% 9
+}
+\InCa@Temp 9{%
+ \or 9% 1
+ \or 18% 2
+ \or 27% 3
+ \or 36% 4
+ \or 45% 5
+ \or 54% 6
+ \or 63% 7
+ \or 72% 8
+ \or 81% 9
+}
+\def\InCa@TimDigitCarry#1!{%
+ \ifnum#1<10 %
+ \csname InCa@AddDigit#1\expandafter\endcsname
+ \else
+ \@ReturnAfterFi{%
+ \InCa@@TimDigitCarry#1!%
+ }%
+ \fi
+}
+\def\InCa@@TimDigitCarry#1#2!#3{%
+ \csname InCa@DigitCarry#1%
+ \csname InCa@AddDigit#2\endcsname #3%
+}
+\def\intcalcMul#1#2{%
+ \number
+ \expandafter\InCa@MulSwitch
+ \number\number#1\expandafter!%
+ \number#2! %
+}
+\def\InCa@MulSwitch#1!#2!{%
+ \ifnum#1<\z@
+ \ifnum#2<\z@
+ \ifnum#1<#2 %
+ \expandafter\InCa@Mul\number-#1\expandafter!%
+ \@gobble#2!%
+ \else
+ \expandafter\InCa@Mul\number-#2\expandafter!%
+ \@gobble#1!%
+ \fi
+ \else
+ -%
+ \ifnum-#1>#2 %
+ \expandafter\InCa@Mul\@gobble#1!#2!%
+ \else
+ \expandafter\InCa@Mul\number#2\expandafter!%
+ \@gobble#1!%
+ \fi
+ \fi
+ \else
+ \ifnum#2<\z@
+ -%
+ \ifnum#1>-#2 %
+ \expandafter\InCa@Mul\number#1\expandafter!%
+ \@gobble#2!%
+ \else
+ \expandafter\InCa@Mul\@gobble#2!#1!%
+ \fi
+ \else
+ \ifnum#1>#2 %
+ \InCa@Mul#1!#2!%
+ \else
+ \InCa@Mul#2!#1!%
+ \fi
+ \fi
+ \fi
+}
+\def\IntCalcMul#1!#2!{%
+ \number\InCa@Mul#1!#2! %
+}
+\def\InCa@Mul#1!#2!{%
+ \ifcase#2 %
+ 0%
+ \or
+ #1%
+ \or
+ \csname InCa@Empty%
+ \expandafter\InCa@Shl#1!%
+ \else
+ \ifnum#2<10 %
+ \InCa@Tim{#1}#2%
+ \else
+ \InCa@ProcessMul!#2!#1!%
+ \fi
+ \fi
+}
+\def\InCa@ProcessMul#1!#2#3!#4!{%
+ \ifx\InCa@Empty#3\InCa@Empty
+ \expandafter\InCa@Add\number
+ #10\expandafter\expandafter\expandafter!%
+ \InCa@Tim{#4}#2!%
+ \else
+ \ifx\InCa@Empty#1\InCa@Empty
+ \expandafter\expandafter\expandafter\InCa@ProcessMul
+ \InCa@Tim{#4}#2!%
+ #3!#4!%
+ \else
+ \expandafter\InCa@ProcessMul\number
+ \expandafter\InCa@Add\number%
+ #10\expandafter\expandafter\expandafter!%
+ \InCa@Tim{#4}#2!!%
+ #3!#4!%
+ \fi
+ \fi
+}
+\def\intcalcSqr#1{%
+ \number\expandafter\InCa@Sqr\number#1! %
+}
+\def\InCa@Sqr#1#2!{%
+ \ifx#1-%
+ \InCa@Mul#2!#2!%
+ \else
+ \InCa@Mul#1#2!#1#2!%
+ \fi
+}
+\def\intcalcFac#1{%
+ \number\expandafter\InCa@Fac\number#1! %
+}
+\def\intcalcPow#1#2{%
+ \number\expandafter\InCa@Pow
+ \number\number#1\expandafter!%
+ \number#2! %
+}
+\def\InCa@Pow#1#2!#3#4!{%
+ \ifcase#3#4 % power = 0
+ 1%
+ \or % power = 1
+ #1#2%
+ \or % power = 2
+ \ifx#1-%
+ \InCa@Mul#2!#2!%
+ \else
+ \InCa@Mul#1#2!#1#2!%
+ \fi
+ \else
+ \ifcase#1#2 % basis = 0, power <> 0
+ 0%
+ \ifx#3-% power < 0
+ 0\IntCalcError:DivisionByZero%
+ \fi
+ \or
+ 1% basis = 1
+ \else
+ \ifnum#1#2=\m@ne % basis = -1
+ \ifodd#3#4 %
+ -%
+ \fi
+ 1%
+ \else % |basis| > 1
+ \ifx#3-% power < 0
+ 0%
+ \else % power > 2
+ \ifx#1-% basis < 0
+ \ifodd#3#4 %
+ -%
+ \fi
+ \InCa@PowRec#2!#3#4!1!%
+ \else
+ \InCa@PowRec#1#2!#3#4!1!%
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+}
+\def\InCa@PowRec#1!#2!#3!{%
+ \ifnum#2=\@ne
+ \ifnum#1>#3 %
+ \InCa@Mul#1!#3!%
+ \else
+ \InCa@Mul#3!#1!%
+ \fi
+ \else
+ \expandafter\InCa@PowRec
+ \number\InCa@Mul#1!#1!\expandafter!%
+ \number\intcalcShr{#2}\expandafter!%
+ \number
+ \ifodd#2 %
+ \ifnum#1>#3 %
+ \InCa@Mul#1!#3!%
+ \else
+ \InCa@Mul#3!#1!%
+ \fi
+ \else
+ #3%
+ \fi
+ \expandafter!%
+ \fi
+}
+\def\intcalcDiv#1#2{%
+ \number\expandafter\InCa@Div
+ \number\number#1\expandafter!%
+ \number#2! %
+}
+\def\InCa@Div#1!#2!{%
+ \ifcase#2 %
+ 0\IntCalcError:DivisionByZero%
+ \else
+ \ifcase#1 %
+ 0%
+ \else
+ \expandafter\InCa@DivSwitch
+ \number#1\expandafter!%
+ \number#2!%
+ \fi
+ \fi
+}
+\def\InCa@Temp#1{%
+ \def\IntCalcDiv##1!##2!{%
+ \number
+ \ifcase##2 %
+ 0\IntCalcError:DivisionByZero%
+ \else
+ \ifcase##1 %
+ 0%
+ \else
+ \InCa@@Div##1!##2!%
+ \fi
+ \fi
+ #1%
+ }%
+}
+\InCa@Temp{ }%
+\def\InCa@DivSwitch#1!#2!{%
+ \ifnum#1<\z@
+ \ifnum#2<\z@
+ \expandafter\InCa@@Div\number-#1\expandafter!%
+ \@gobble#2!%
+ \else
+ -%
+ \expandafter\InCa@@Div\@gobble#1!#2!%
+ \fi
+ \else
+ \ifnum#2<\z@
+ -%
+ \expandafter\InCa@@Div\number#1\expandafter!%
+ \@gobble#2!%
+ \else
+ \InCa@@Div#1!#2!%
+ \fi
+ \fi
+}
+\def\InCa@@Div#1!#2!{%
+ \ifnum#1>#2 %
+ \ifcase#2 % 0 already catched
+? \IntCalcError:ThisCannotHappen%
+ \or % 1
+ #1%
+ \or % 2
+ \InCa@Shr#1!%
+ \else
+ \InCa@DivStart!#1!#2!#2!%
+ \fi
+ \else
+ \ifnum#1=#2 %
+ 1%
+ \else
+ 0%
+ \fi
+ \fi
+}
+\def\InCa@DivStart#1!#2#3!#4#5{%
+ \ifx#5!%
+ \@ReturnAfterElseFi{%
+ \InCa@DivStartI{#1#2}#3=!%
+ }%
+ \else
+ \@ReturnAfterFi{%
+ \InCa@DivStart{#1#2}!#3!#5%
+ }%
+ \fi
+}
+\def\InCa@DivStartI#1!#2!{%
+ \expandafter\InCa@DivStartII
+ \number#2\expandafter\expandafter\expandafter!%
+ \intcalcShl{#2}!%
+ #1!%
+}
+\def\InCa@DivStartII#1!#2!{%
+ \expandafter\InCa@DivStartIII
+ \number#1\expandafter!%
+ \number#2\expandafter\expandafter\expandafter!%
+ \intcalcShl{#2}!%
+}
+\def\InCa@DivStartIII#1!#2!#3!{%
+ \expandafter\InCa@DivStartIV
+ \number#1\expandafter!%
+ \number#2\expandafter!%
+ \number#3\expandafter!%
+ \number\InCa@Add#3!#2!\expandafter\expandafter\expandafter!%
+ \intcalcShl{#3}!%
+}
+\def\InCa@DivStartIV#1!#2!#3!#4!#5!#6!{%
+ \InCa@ProcessDiv#6!#1!#2!#3!#4!#5!/%
+}
+\def\InCa@ProcessDiv#1#2#3!#4!#5!#6!#7!#8!#9/{%
+ #9%
+ \ifnum#1<#4 % 0
+ 0%
+ \ifx#2=%
+ \else
+ \InCa@ProcessDiv{#1#2}#3!#4!#5!#6!#7!#8!%
+ \fi
+ \else % 1-9
+ \ifnum#1<#5 % 1
+ 1%
+ \ifx#2=%
+ \else
+ \expandafter\InCa@ProcessDiv\expandafter{%
+ \number\InCa@Sub#1!#4!%
+ #2%
+ }#3!#4!#5!#6!#7!#8!%
+ \fi
+ \else % 2-9
+ \ifnum#1<#7 % 2 3 4 5
+ \ifnum#1<#6 % 2 3
+ \@ReturnAfterElseFi{%
+ \expandafter\InCa@@ProcessDiv
+ \number\InCa@Sub#1!#5!!%
+ 23%
+ }%
+ \else % 4 5
+ \@ReturnAfterFi{%
+ \expandafter\InCa@@ProcessDiv
+ \number\InCa@Sub#1!#6!!%
+ 45%
+ }%
+ \fi
+ #2#3!#4!#5!#6!#7!#8!%
+ \else % 6 7 8 9
+ \ifnum#1<#8 % 6 7
+ \@ReturnAfterElseFi{%
+ \expandafter\InCa@@ProcessDiv
+ \number\InCa@Sub#1!#7!!%
+ 67%
+ }%
+ \else % 8 9
+ \@ReturnAfterFi{%
+ \expandafter\InCa@@ProcessDiv
+ \number\InCa@Sub#1!#8!!%
+ 89%
+ }%
+ \fi
+ #2#3!#4!#5!#6!#7!#8!%
+ \fi
+ \fi
+ \fi
+ \ifx#2=%
+ \expandafter\@gobble
+ \fi
+ /%
+}
+\def\InCa@@ProcessDiv#1!#2#3#4#5!#6!{%
+ \ifnum#1<#6 %
+ #2%
+ \@ReturnAfterElseFi{%
+ \ifx#4=%
+ \expandafter\InCa@CleanupIV
+ \else
+ \@ReturnAfterFi{%
+ \InCa@ProcessDiv{#1#4}#5!#6!%
+ }%
+ \fi
+ }%
+ \else
+ #3%
+ \@ReturnAfterFi{%
+ \ifx#4=%
+ \expandafter\InCa@CleanupIV
+ \else
+ \@ReturnAfterFi{%
+ \expandafter\InCa@ProcessDiv\expandafter{%
+ \number\InCa@Sub#1!#6! %
+ #4%
+ }#5!#6!%
+ }%
+ \fi
+ }%
+ \fi
+}
+\def\InCa@CleanupIV#1!#2!#3!#4!{}
+\def\intcalcMod#1#2{%
+ \number\expandafter\InCa@Mod
+ \number\number#1\expandafter!%
+ \number#2! %
+}
+\def\InCa@Mod#1!#2!{%
+ \ifcase#2 %
+ 0\IntCalcError:DivisionByZero%
+ \else
+ \ifnum#2<\z@
+ -%
+ \expandafter\InCa@Mod
+ \number-#1\expandafter!%
+ \number-#2!%
+ \else
+ \ifcase#1 %
+ 0%
+ \else
+ \ifcase#2 % 0 already catched
+? \IntCalcError:ThisCannotHappen%
+ \or % 1
+ 0%
+ \or % 2
+ \ifodd#1 1\else 0\fi
+ \else
+ \ifnum#1<\z@
+ \expandafter\InCa@ModShift
+ \number-%
+ \expandafter\InCa@Sub
+ \number\@gobble#1\expandafter!%
+ \number\intcalcMul{#2}{%
+ \expandafter\InCa@Div\@gobble#1!#2!%
+ }!%
+ !#2!%
+ \else
+ \expandafter\InCa@Sub\number#1\expandafter!%
+ \number\intcalcMul{#2}{\InCa@Div#1!#2!}!%
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+}
+\def\InCa@Temp#1{%
+ \def\IntCalcMod##1!##2!{%
+ \number
+ \ifcase##2 %
+ 0\IntCalcError:DivisionByZero%
+ \else
+ \ifcase##1 %
+ 0%
+ \else
+ \ifcase##2 % 0 already catched
+? \IntCalcError:ThisCannotHappen
+ \or % 1
+ 0%
+ \or % 2
+ \ifodd ##1 1\else 0\fi
+ \else
+ \expandafter\InCa@Sub\number##1\expandafter!%
+ \number\intcalcMul{##2}{\InCa@Div##1!##2!}!%
+ \fi
+ \fi
+ \fi
+ #1%
+ }%
+}
+\InCa@Temp{ }%
+\def\InCa@ModShift#1!#2!{%
+ \ifnum#1<\z@
+ \expandafter\InCa@Sub\number#2\expandafter!%
+ \@gobble#1!%
+ \else
+ #1%
+ \fi
+}
+\def\InCa@Empty{}
+\expandafter\ifx\csname @gobble\endcsname\relax
+ \long\def\@gobble#1{}%
+\fi
+\long\def\@ReturnAfterFi#1\fi{\fi#1}%
+\long\def\@ReturnAfterElseFi#1\else#2\fi{\fi#1}%
+\InCa@AtEnd%
+%% \section{Installation}
+\endinput
+%%
+%% End of file `intcalc.sty'.