summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic/oberdiek/intcalc.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/generic/oberdiek/intcalc.sty')
-rw-r--r--Master/texmf-dist/tex/generic/oberdiek/intcalc.sty1569
1 files changed, 1569 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/generic/oberdiek/intcalc.sty b/Master/texmf-dist/tex/generic/oberdiek/intcalc.sty
new file mode 100644
index 00000000000..e92da6bba91
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/oberdiek/intcalc.sty
@@ -0,0 +1,1569 @@
+%%
+%% 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.
+%%
+%% 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 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
+ \catcode44 12 % ,
+ \catcode45 12 % -
+ \catcode46 12 % .
+ \catcode58 12 % :
+ \catcode64 11 % @
+ \expandafter\let\expandafter\x\csname ver@intcalc.sty\endcsname
+ \ifcase 0%
+ \ifx\x\relax % plain
+ \else
+ \ifx\x\empty % LaTeX
+ \else
+ 1%
+ \fi
+ \fi
+ \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}%
+ \endgroup
+ \expandafter\endinput
+ \fi
+\endgroup
+\begingroup
+ \catcode40 12 % (
+ \catcode41 12 % )
+ \catcode44 12 % ,
+ \catcode45 12 % -
+ \catcode46 12 % .
+ \catcode47 12 % /
+ \catcode58 12 % :
+ \catcode64 11 % @
+ \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\relax
+ \xdef#1{#3}%
+ \fi
+ }%
+ \fi
+\expandafter\x\csname ver@intcalc.sty\endcsname
+\ProvidesPackage{intcalc}%
+ [2007/09/09 v1.0 Expandable integer calculations (HO)]
+\expandafter\edef\csname IntCalc@AtEnd\endcsname{%
+ \catcode64 \the\catcode64\relax
+}
+\catcode64 11 % @
+\def\TMP@EnsureCode#1#2{%
+ \edef\IntCalc@AtEnd{%
+ \IntCalc@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{61}{12}% =
+\TMP@EnsureCode{62}{12}% >
+\TMP@EnsureCode{63}{14}% ? (comment!)
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname IntCalc@TestMode\endcsname\relax
+\else
+ \catcode63=9 % ? (ignore)
+\fi
+? \let\IntCalc@@TestMode\IntCalc@TestMode
+\def\IntCalc@Space{ }
+\def\IntCalc@Abs#1#2!{%
+ \ifx#1-%
+ #2%
+ \else
+ #1#2%
+ \fi
+}
+\def\IntCalc@Sgn#1#2!{%
+ \ifx#1-%
+ -1%
+ \else
+ \ifx#10%
+ 0%
+ \else
+ 1%
+ \fi
+ \fi
+}
+\def\IntCalc@Min#1!#2!{%
+ \ifnum#1<#2 %
+ #1%
+ \else
+ #2%
+ \fi
+}
+\def\IntCalc@Max#1!#2!{%
+ \ifnum#1>#2 %
+ #1%
+ \else
+ #2%
+ \fi
+}
+\def\IntCalc@Cmp#1!#2!{%
+ \ifnum#1=#2 %
+ 0%
+ \else
+ \ifnum#1<#2 %
+ -%
+ \fi
+ 1%
+ \fi
+}
+\def\IntCalc@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\intcalcInv#1{%
+ \number-\the\numexpr#1\relax\IntCalc@Space
+ }%
+ \def\intcalcAbs#1{%
+ \number\expandafter\IntCalc@Abs\the\numexpr#1! %
+ }%
+ \def\intcalcSgn#1{%
+ \number\expandafter\IntCalc@Sgn\the\numexpr#1! %
+ }%
+ \def\intcalcMin#1#2{%
+ \number\expandafter\IntCalc@Min
+ \the\numexpr#1\expandafter!%
+ \the\numexpr#2! %
+ }%
+ \def\intcalcMax#1#2{%
+ \number\expandafter\IntCalc@Max
+ \the\numexpr#1\expandafter!%
+ \the\numexpr#2! %
+ }%
+ \def\intcalcCmp#1#2{%
+ \number\expandafter\IntCalc@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\intcalcAdd#1#2{%
+ \the\numexpr#1+(#2)\relax
+ }%
+ \def\intcalcSub#1#2{%
+ \the\numexpr#1-(#2)\relax
+ }%
+ \def\intcalcShl#1{%
+ \number\expandafter\IntCalc@Shl\the\numexpr#1! %
+ }%
+ \def\IntCalc@Shl#1#2!{%
+ \ifx#1-%
+ 0\IntCalcError:ShlNegativeNumber%
+ \else
+ \the\numexpr#1#2*2\relax
+ \fi
+ }%
+ \def\intcalcShr#1{%
+ \number\expandafter\IntCalc@Shr\the\numexpr#1! %
+ }%
+ \def\IntCalc@Shr#1#2!{%
+ \ifx#1-%
+ 0\IntCalcError:ShrNegativeNumber%
+ \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\intcalcSqr#1{%
+ \number\expandafter\IntCalc@Sqr\the\numexpr#1! %
+ }%
+ \def\IntCalc@Sqr#1!{%
+ \the\numexpr#1*#1\relax
+ }%
+ \def\intcalcFac#1{%
+ \number\expandafter\IntCalc@Fac\the\numexpr#1! %
+ }%
+ \def\intcalcPow#1#2{%
+ \number\expandafter\IntCalc@Pow
+ \the\numexpr#1\expandafter!%
+ \the\numexpr#2! %
+ }%
+ \def\IntCalc@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
+ \IntCalc@PowRec#1#2!#3#4!1!%
+ \fi
+ \fi
+ \fi
+ \fi
+ }%
+ \def\IntCalc@PowRec#1!#2!#3!{%
+ \ifnum#2=\@ne
+ \the\numexpr#1*#3\relax
+ \else
+ \ifodd#2 %
+ \expandafter\IntCalc@PowRec
+ \the\numexpr#1*#1\expandafter!%
+ \the\numexpr(#2-1)/2\expandafter!%
+ \the\numexpr#1*#3\expandafter\expandafter\expandafter!%
+ \else
+ \expandafter\IntCalc@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\IntCalc@Div
+ \the\numexpr#1\expandafter!%
+ \the\numexpr#2! %
+ }%
+ \def\IntCalc@Div#1!#2!{%
+ \ifcase#2 %
+ 0\IntCalcError:DivisionByZero%
+ \else
+ \ifcase#1 %
+ 0%
+ \else
+ \expandafter\IntCalc@@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\IntCalc@@Div#1#2!#3#4!{%
+ #1#3%
+ \the\numexpr(#2-(#4-1)/2)/#4\relax
+ }%
+ \def\intcalcMod#1#2{%
+ \number\expandafter\IntCalc@Mod
+ \the\numexpr#1\expandafter!%
+ \the\numexpr#2! %
+ }%
+ \def\IntCalc@Mod#1!#2!{%
+ \ifcase#2 %
+ 0\IntCalcError:DivisionByZero%
+ \else
+ \ifcase#1 %
+ 0%
+ \else
+ \expandafter\IntCalc@@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\IntCalc@@Mod#1#2!#3#4!{%
+ \if#3+%
+ \if#1+%
+ \the\numexpr#2-\IntCalc@@Div+#2!+#4!*#4\relax
+ \else
+ \expandafter\IntCalc@ModX
+ \the\numexpr-#2+\IntCalc@@Div+#2!+#4!*#4!#4!%
+ \fi
+ \else
+ -%
+ \if#1+%
+ \expandafter\IntCalc@ModX
+ \the\numexpr-#2+\IntCalc@@Div+#2!+#4!*#4!#4!%
+ \else
+ \the\numexpr#2-\IntCalc@@Div+#2!+#4!*#4\relax
+ \fi
+ \fi
+ }%
+ \def\IntCalc@ModX#1!#2!{%
+ \ifcase#1 %
+ 0%
+ \else
+ \the\numexpr#1+#2\relax
+ \fi
+ }%
+ \IntCalc@AtEnd
+ \expandafter\endinput
+\fi
+\def\intcalcInv#1{%
+ \number\expandafter\IntCalc@Inv\number-#1! %
+}
+\def\IntCalc@Inv#1!{#1}
+\def\intcalcAbs#1{%
+ \number\expandafter\IntCalc@Abs\number#1! %
+}
+\def\intcalcSgn#1{%
+ \number\expandafter\IntCalc@Sgn\number#1! %
+}
+\def\intcalcMin#1#2{%
+ \number\expandafter\IntCalc@Min
+ \number\number#1\expandafter!\number#2! %
+}
+\def\intcalcMax#1#2{%
+ \number\expandafter\IntCalc@Max
+ \number\number#1\expandafter!\number#2! %
+}
+\def\intcalcCmp#1#2{%
+ \number\expandafter\IntCalc@Cmp
+ \number\number#1\expandafter!\number#2! %
+}%
+\def\intcalcInc#1{%
+ \number\expandafter\IntCalc@IncSwitch\number#1! %
+}
+\def\IntCalc@IncSwitch#1#2!{%
+ \ifx#1-%
+ -%
+ \csname IntCalc@Empty%
+ \IntCalc@Dec#2!%
+ \else
+ \csname IntCalc@Empty%
+ \IntCalc@Inc#1#2!%
+ \fi
+}
+\def\intcalcDec#1{%
+ \number\expandafter\IntCalc@DecSwitch\number#1! %
+}
+\def\IntCalc@DecSwitch#1#2!{%
+ \ifx#1-%
+ -%
+ \csname IntCalc@Empty%
+ \expandafter\IntCalc@Inc#2!%
+ \else
+ \ifx#10%
+ -1%
+ \else
+ \csname IntCalc@Empty%
+ \IntCalc@Dec#1#2!%
+ \fi
+ \fi
+}
+\def\IntCalc@Inc#1#2{%
+ \ifx#2!%
+ \csname IntCalc@IncDigit#1\endcsname1%
+ \else
+ \csname IntCalc@IncDigit#1%
+ \expandafter\IntCalc@Inc\expandafter#2%
+ \fi
+}
+\def\IntCalc@Temp#1#2{%
+ \expandafter\def\csname IntCalc@IncDigit#1\endcsname##1{%
+ \endcsname
+ 0%
+ \ifcase##1 %
+ #1%
+ \else
+ #2%
+ \fi
+ }%
+}
+\IntCalc@Temp 01
+\IntCalc@Temp 12
+\IntCalc@Temp 23
+\IntCalc@Temp 34
+\IntCalc@Temp 45
+\IntCalc@Temp 56
+\IntCalc@Temp 67
+\IntCalc@Temp 78
+\IntCalc@Temp 89
+\expandafter\def\csname IntCalc@IncDigit9\endcsname#1{%
+ \expandafter\endcsname
+ \ifcase#1 %
+ 09%
+ \else
+ 10%
+ \fi
+}
+\def\IntCalc@Dec#1#2{%
+ \ifx#2!%
+ \csname IntCalc@DecDigit#1\endcsname1%
+ \else
+ \csname IntCalc@DecDigit#1%
+ \expandafter\IntCalc@Dec\expandafter#2%
+ \fi
+}
+\def\IntCalc@Temp#1#2{%
+ \expandafter\def\csname IntCalc@DecDigit#1\endcsname##1{%
+ \endcsname
+ 0%
+ \ifcase##1 %
+ #1%
+ \else
+ #2%
+ \fi
+ }%
+}
+\IntCalc@Temp 98
+\IntCalc@Temp 87
+\IntCalc@Temp 76
+\IntCalc@Temp 65
+\IntCalc@Temp 54
+\IntCalc@Temp 43
+\IntCalc@Temp 32
+\IntCalc@Temp 21
+\IntCalc@Temp 10
+\expandafter\def\csname IntCalc@DecDigit0\endcsname#1{%
+ \expandafter\endcsname
+ \ifcase#1 %
+ 00%
+ \else
+ 19%
+ \fi
+}
+\def\intcalcAdd#1#2{%
+ \number
+ \expandafter\IntCalc@AddSwitch
+ \number\number#1\expandafter!%
+ \number#2!%
+ \IntCalc@Space
+}
+\def\intcalcSub#1#2{%
+ \number
+ \expandafter\IntCalc@AddSwitch
+ \number\number#1\expandafter!%
+ \number-\number#2!%
+ \IntCalc@Space
+}
+\def\IntCalc@AddSwitch#1!#2!{%
+ \ifnum#1<\z@
+ \ifnum#2<\z@
+ -%
+ \ifnum#1<#2 %
+ \expandafter\IntCalc@Add\number-#1\expandafter!%
+ \IntCalc@Gobble#2!%
+ \else
+ \expandafter\IntCalc@Add\number-#2\expandafter!%
+ \IntCalc@Gobble#1!%
+ \fi
+ \else
+ \ifnum-#1>#2 %
+ -%
+ \expandafter\IntCalc@Sub\IntCalc@Gobble#1!#2!%
+ \else
+ \expandafter\IntCalc@Sub\number#2\expandafter!%
+ \IntCalc@Gobble#1!%
+ \fi
+ \fi
+ \else
+ \ifnum#2<\z@
+ \ifnum#1>-#2 %
+ \expandafter\IntCalc@Sub\number#1\expandafter!%
+ \IntCalc@Gobble#2!%
+ \else
+ -%
+ \expandafter\IntCalc@Sub\IntCalc@Gobble#2!#1!%
+ \fi
+ \else
+ \ifnum#1>#2 %
+ \IntCalc@Add#1!#2!%
+ \else
+ \IntCalc@Add#2!#1!%
+ \fi
+ \fi
+ \fi
+}
+\def\IntCalc@Add#1!#2!{%
+ \ifcase#2 %
+ #1%
+ \else
+ \IntCalc@@Add#1!#2!000000000\IntCalc@Space
+ \fi
+}
+\def\IntCalc@Sub#1!#2!{%
+ \ifnum#1=#2 %
+ 0%
+ \else
+ \IntCalc@@Sub#1!#2!000000000\IntCalc@Space
+ \fi
+}
+\def\IntCalc@@Add#1!#2#3!{%
+ \ifx\IntCalc@Empty#3\IntCalc@Empty
+ \@ReturnAfterElseFi{%
+ \IntCalc@@@Add!!#1!#2%
+ }%
+ \else
+ \@ReturnAfterFi{%
+ \IntCalc@@Add#1!#3!#2%
+ }%
+ \fi
+}
+\def\IntCalc@@Sub#1!#2#3!{%
+ \ifx\IntCalc@Empty#3\IntCalc@Empty
+ \@ReturnAfterElseFi{%
+ \IntCalc@@@Sub!!#1!#2%
+ }%
+ \else
+ \@ReturnAfterFi{%
+ \IntCalc@@Sub#1!#3!#2%
+ }%
+ \fi
+}
+\def\IntCalc@@@Add#1!#2!#3#4!#5{%
+ \ifx\IntCalc@Empty#4\IntCalc@Empty
+ \csname IntCalc@Empty%
+ \@ReturnAfterElseFi{%
+ \IntCalc@ProcessAdd#1#3!#5#2%
+ }%
+ \else
+ \@ReturnAfterFi{%
+ \IntCalc@@@Add#1#3!#5#2!#4!%
+ }%
+ \fi
+}
+\def\IntCalc@@@Sub#1!#2!#3#4!#5{%
+ \ifx\IntCalc@Empty#4\IntCalc@Empty
+ \csname IntCalc@Gobble%
+ \@ReturnAfterElseFi{%
+ \IntCalc@ProcessSub#1#3!#5#2%
+ }%
+ \else
+ \@ReturnAfterFi{%
+ \IntCalc@@@Sub#1#3!#5#2!#4!%
+ }%
+ \fi
+}
+\def\IntCalc@ProcessAdd#1#2!#3#4{%
+ \ifx\IntCalc@Empty#2\IntCalc@Empty
+ \csname IntCalc@AddDigit#1\endcsname#3%
+ \romannumeral0#4%
+ \else
+ \csname IntCalc@AddDigit#1\csname IntCalc@DigitCarry#3%
+ \@ReturnAfterFi{%
+ \IntCalc@ProcessAdd#2!#4%
+ }%
+ \fi
+}
+\def\IntCalc@ProcessSub#1#2!#3#4{%
+ \ifx\IntCalc@Empty#2\IntCalc@Empty
+ \csname IntCalc@SubDigit#1\endcsname#3%
+ \romannumeral0#4%
+ \else
+ \csname IntCalc@SubDigit#1\csname IntCalc@DigitCarry#3%
+ \@ReturnAfterFi{%
+ \IntCalc@ProcessSub#2!#4%
+ }%
+ \fi
+}
+\def\IntCalc@Temp#1#2{%
+ \expandafter\def\csname IntCalc@DigitCarry#1\endcsname##1{%
+ \ifcase##1 %
+ \endcsname#1%
+ \else
+ \endcsname#2%
+ \fi
+ }%
+}
+\IntCalc@Temp 01
+\IntCalc@Temp 12
+\IntCalc@Temp 23
+\IntCalc@Temp 34
+\IntCalc@Temp 45
+\IntCalc@Temp 56
+\IntCalc@Temp 67
+\IntCalc@Temp 78
+\IntCalc@Temp 89
+\IntCalc@Temp 9{{10}}
+\expandafter\def\csname IntCalc@AddDigit0\endcsname#1{%
+ \ifnum#1>9 %
+ \endcsname10%
+ \else
+ \endcsname0#1%
+ \fi
+}
+\def\IntCalc@Temp#1#2#3{%
+ \expandafter\def\csname IntCalc@AddDigit#1\endcsname##1{%
+ \ifnum##1>#2 %
+ \endcsname 1%
+ \else
+ \endcsname 0%
+ \fi
+ \ifcase##1 #1% 0
+ #3%
+ \else #1% 10
+ \fi
+ }%
+}
+\IntCalc@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
+}%
+\IntCalc@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
+}%
+\IntCalc@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
+}%
+\IntCalc@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
+}%
+\IntCalc@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
+}%
+\IntCalc@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
+}%
+\IntCalc@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
+}%
+\IntCalc@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
+}%
+\IntCalc@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\IntCalc@Temp#1#2{%
+ \expandafter\def\csname IntCalc@SubDigit#1\endcsname##1{%
+ \ifnum##1>#1 %
+ \endcsname 1%
+ \else
+ \endcsname 0%
+ \fi
+ \ifcase##1 #1% 0
+ #2%
+ \else #1% 10
+ \fi
+ }%
+}
+\IntCalc@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
+}
+\IntCalc@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
+}
+\IntCalc@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
+}
+\IntCalc@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
+}
+\IntCalc@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
+}
+\IntCalc@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
+}
+\IntCalc@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
+}
+\IntCalc@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
+}
+\IntCalc@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
+}
+\IntCalc@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\IntCalc@ShlSwitch\number#1! %
+}
+\def\IntCalc@ShlSwitch#1!{%
+ \ifnum#1<\z@
+ 0\IntCalcError:ShlNegativeNumber%
+ \else
+ \csname IntCalc@Empty%
+ \IntCalc@Shl#1!%
+ \fi
+}
+\def\IntCalc@Shl#1#2{%
+ \ifx#2!%
+ \csname IntCalc@ShlDigit#1\endcsname0%
+ \else
+ \csname IntCalc@ShlDigit#1%
+ \@ReturnAfterFi{%
+ \IntCalc@Shl#2%
+ }%
+ \fi
+}
+\expandafter\def\csname IntCalc@ShlDigit0\endcsname{%
+ \endcsname0%
+}
+\def\IntCalc@Temp#1#2#3#4#5{%
+ \expandafter\def\csname IntCalc@ShlDigit#1\endcsname##1{%
+ \expandafter\endcsname
+ \ifcase##1 %
+ #2#3%
+ \else
+ #4#5%
+ \fi
+ }%
+}
+\IntCalc@Temp 10203
+\IntCalc@Temp 20405
+\IntCalc@Temp 30607
+\IntCalc@Temp 40809
+\IntCalc@Temp 51011
+\IntCalc@Temp 61213
+\IntCalc@Temp 71415
+\IntCalc@Temp 81617
+\IntCalc@Temp 91819
+\def\intcalcShr#1{%
+ \number\expandafter\IntCalc@ShrSwitch\number#1! %
+}
+\def\IntCalc@ShrSwitch#1!{%
+ \ifnum#1<\z@
+ 0\IntCalcError:ShrNegativeNumber%
+ \else
+ \IntCalc@Shr#1!%
+ \fi
+}
+\def\IntCalc@Shr#1#2{%
+ \IntCalc@ShrDigit#1!%
+ \ifx#2!%
+ \else
+ \@ReturnAfterFi{%
+ \ifodd#1 %
+ \@ReturnAfterElseFi{%
+ \IntCalc@Shr{1#2}%
+ }%
+ \else
+ \expandafter\IntCalc@Shr\expandafter#2%
+ \fi
+ }%
+ \fi
+}
+\def\IntCalc@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\IntCalc@Tim#1#2{%
+ \number
+ \ifcase#2 % 0
+ 0%
+ \or % 1
+ #1%
+ \else % 2-9
+ \csname IntCalc@Empty%
+ \IntCalc@ProcessTim#2#1!%
+ \fi
+ \IntCalc@Space
+}
+\def\IntCalc@ProcessTim#1#2#3{%
+ \ifx#3!%
+ \csname IntCalc@TimDigit#2\endcsname#10%
+ \else
+ \csname IntCalc@TimDigit#2\csname IntCalc@Param#1%
+ \@ReturnAfterFi{%
+ \IntCalc@ProcessTim#1#3%
+ }%
+ \fi
+}
+\def\IntCalc@Temp#1{%
+ \expandafter\def\csname IntCalc@Param#1\endcsname{%
+ \endcsname#1%
+ }%
+}
+\IntCalc@Temp 0%
+\IntCalc@Temp 1%
+\IntCalc@Temp 2%
+\IntCalc@Temp 3%
+\IntCalc@Temp 4%
+\IntCalc@Temp 5%
+\IntCalc@Temp 6%
+\IntCalc@Temp 7%
+\IntCalc@Temp 8%
+\IntCalc@Temp 9%
+\expandafter\def\csname IntCalc@TimDigit0\endcsname#1#2{%
+ \endcsname
+ 0#2%
+}
+\expandafter\def\csname IntCalc@TimDigit1\endcsname#1#2{%
+ \ifcase#2 %
+ \endcsname 0#1%
+ \else
+ \csname IntCalc@AddDigit#1\endcsname #2%
+ \fi
+}
+\def\IntCalc@Temp#1#2{%
+ \expandafter\def\csname IntCalc@TimDigit#1\endcsname##1{%
+ \expandafter\IntCalc@TimDigitCarry
+ \number
+ \ifcase##1 0% 0
+ #2%
+ \fi
+ !%
+ }%
+}
+\IntCalc@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
+}
+\IntCalc@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
+}
+\IntCalc@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
+}
+\IntCalc@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
+}
+\IntCalc@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
+}
+\IntCalc@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
+}
+\IntCalc@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
+}
+\IntCalc@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\IntCalc@TimDigitCarry#1!{%
+ \ifnum#1<10 %
+ \csname IntCalc@AddDigit#1\expandafter\endcsname
+ \else
+ \@ReturnAfterFi{%
+ \IntCalc@@TimDigitCarry#1!%
+ }%
+ \fi
+}
+\def\IntCalc@@TimDigitCarry#1#2!#3{%
+ \csname IntCalc@DigitCarry#1%
+ \csname IntCalc@AddDigit#2\endcsname #3%
+}
+\def\intcalcMul#1#2{%
+ \number
+ \expandafter\IntCalc@MulSwitch
+ \number\number#1\expandafter!%
+ \number#2!%
+ \IntCalc@Space
+}
+\def\IntCalc@MulSwitch#1!#2!{%
+ \ifnum#1<\z@
+ \ifnum#2<\z@
+ \ifnum#1<#2 %
+ \expandafter\IntCalc@Mul\number-#1\expandafter!%
+ \IntCalc@Gobble#2!%
+ \else
+ \expandafter\IntCalc@Mul\number-#2\expandafter!%
+ \IntCalc@Gobble#1!%
+ \fi
+ \else
+ -%
+ \ifnum-#1>#2 %
+ \expandafter\IntCalc@Mul\IntCalc@Gobble#1!#2!%
+ \else
+ \expandafter\IntCalc@Mul\number#2\expandafter!%
+ \IntCalc@Gobble#1!%
+ \fi
+ \fi
+ \else
+ \ifnum#2<\z@
+ -%
+ \ifnum#1>-#2 %
+ \expandafter\IntCalc@Mul\number#1\expandafter!%
+ \IntCalc@Gobble#2!%
+ \else
+ \expandafter\IntCalc@Mul\IntCalc@Gobble#2!#1!%
+ \fi
+ \else
+ \ifnum#1>#2 %
+ \IntCalc@Mul#1!#2!%
+ \else
+ \IntCalc@Mul#2!#1!%
+ \fi
+ \fi
+ \fi
+}
+\def\IntCalc@Mul#1!#2!{%
+ \ifcase#2 %
+ 0%
+ \or
+ #1%
+ \or
+ \csname IntCalc@Empty%
+ \expandafter\IntCalc@Shl#1!%
+ \else
+ \ifnum#2<10 %
+ \IntCalc@Tim{#1}#2%
+ \else
+ \IntCalc@ProcessMul!#2!#1!%
+ \fi
+ \fi
+}
+\def\IntCalc@ProcessMul#1!#2#3!#4!{%
+ \ifx\IntCalc@Empty#3\IntCalc@Empty
+ \expandafter\IntCalc@Add\number
+ #10\expandafter\expandafter\expandafter!%
+ \IntCalc@Tim{#4}#2!%
+ \else
+ \ifx\IntCalc@Empty#1\IntCalc@Empty
+ \expandafter\expandafter\expandafter\IntCalc@ProcessMul
+ \IntCalc@Tim{#4}#2!%
+ #3!#4!%
+ \else
+ \expandafter\IntCalc@ProcessMul\number
+ \expandafter\IntCalc@Add\number%
+ #10\expandafter\expandafter\expandafter!%
+ \IntCalc@Tim{#4}#2!!%
+ #3!#4!%
+ \fi
+ \fi
+}
+\def\intcalcSqr#1{%
+ \number\expandafter\IntCalc@Sqr\number#1! %
+}
+\def\IntCalc@Sqr#1#2!{%
+ \ifx#1-%
+ \IntCalc@Mul#2!#2!%
+ \else
+ \IntCalc@Mul#1#2!#1#2!%
+ \fi
+}
+\def\intcalcFac#1{%
+ \number\expandafter\IntCalc@Fac\number#1! %
+}
+\def\intcalcPow#1#2{%
+ \number\expandafter\IntCalc@Pow
+ \number\number#1\expandafter!%
+ \number#2! %
+}
+\def\IntCalc@Pow#1#2!#3#4!{%
+ \ifcase#3#4 % power = 0
+ 1%
+ \or % power = 1
+ #1#2%
+ \or % power = 2
+ \ifx#1-%
+ \IntCalc@Mul#2!#2!%
+ \else
+ \IntCalc@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
+ \IntCalc@PowRec#2!#3#4!1!%
+ \else
+ \IntCalc@PowRec#1#2!#3#4!1!%
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+}
+\def\IntCalc@PowRec#1!#2!#3!{%
+ \ifnum#2=\@ne
+ \ifnum#1>#3 %
+ \IntCalc@Mul#1!#3!%
+ \else
+ \IntCalc@Mul#3!#1!%
+ \fi
+ \else
+ \expandafter\IntCalc@PowRec
+ \number\IntCalc@Mul#1!#1!\expandafter!%
+ \number\intcalcShr{#2}\expandafter!%
+ \number
+ \ifodd#2 %
+ \ifnum#1>#3 %
+ \IntCalc@Mul#1!#3!%
+ \else
+ \IntCalc@Mul#3!#1!%
+ \fi
+ \else
+ #3%
+ \fi
+ \expandafter!%
+ \fi
+}
+\def\intcalcDiv#1#2{%
+ \number\expandafter\IntCalc@Div
+ \number\number#1\expandafter!%
+ \number#2! %
+}
+\def\IntCalc@Div#1!#2!{%
+ \ifcase#2 %
+ 0\IntCalcError:DivisionByZero%
+ \else
+ \ifcase#1 %
+ 0%
+ \else
+ \expandafter\IntCalc@DivSwitch
+ \number#1\expandafter!%
+ \number#2!%
+ \fi
+ \fi
+}
+\def\IntCalc@DivSwitch#1!#2!{%
+ \ifnum#1<\z@
+ \ifnum#2<\z@
+ \expandafter\IntCalc@@Div\number-#1\expandafter!%
+ \IntCalc@Gobble#2!%
+ \else
+ -%
+ \expandafter\IntCalc@@Div\IntCalc@Gobble#1!#2!%
+ \fi
+ \else
+ \ifnum#2<\z@
+ -%
+ \expandafter\IntCalc@@Div\number#1\expandafter!%
+ \IntCalc@Gobble#2!%
+ \else
+ \IntCalc@@Div#1!#2!%
+ \fi
+ \fi
+}
+\def\IntCalc@@Div#1!#2!{%
+ \ifnum#1>#2 %
+ \ifcase#2 % 0 already catched
+? \IntCalcError:ThisCannotHappen%
+ \or % 1
+ #1%
+ \or % 2
+ \IntCalc@Shr#1!%
+ \else
+ \IntCalc@DivStart!#1!#2!#2!%
+ \fi
+ \else
+ \ifnum#1=#2 %
+ 1%
+ \else
+ 0%
+ \fi
+ \fi
+}
+\def\IntCalc@DivStart#1!#2#3!#4#5{%
+ \ifx#5!%
+ \@ReturnAfterElseFi{%
+ \IntCalc@DivStartI{#1#2}#3=!%
+ }%
+ \else
+ \@ReturnAfterFi{%
+ \IntCalc@DivStart{#1#2}!#3!#5%
+ }%
+ \fi
+}
+\def\IntCalc@DivStartI#1!#2!{%
+ \expandafter\IntCalc@DivStartII
+ \number#2\expandafter\expandafter\expandafter!%
+ \intcalcShl{#2}!%
+ #1!%
+}
+\def\IntCalc@DivStartII#1!#2!{%
+ \expandafter\IntCalc@DivStartIII
+ \number#1\expandafter!%
+ \number#2\expandafter\expandafter\expandafter!%
+ \intcalcShl{#2}!%
+}
+\def\IntCalc@DivStartIII#1!#2!#3!{%
+ \expandafter\IntCalc@DivStartIV
+ \number#1\expandafter!%
+ \number#2\expandafter!%
+ \number#3\expandafter!%
+ \number\IntCalc@Add#3!#2!\expandafter\expandafter\expandafter!%
+ \intcalcShl{#3}!%
+}
+\def\IntCalc@DivStartIV#1!#2!#3!#4!#5!#6!{%
+ \IntCalc@ProcessDiv#6!#1!#2!#3!#4!#5!/%
+}
+\def\IntCalc@ProcessDiv#1#2#3!#4!#5!#6!#7!#8!#9/{%
+ #9%
+ \ifnum#1<#4 % 0
+ 0%
+ \ifx#2=%
+ \else
+ \IntCalc@ProcessDiv{#1#2}#3!#4!#5!#6!#7!#8!%
+ \fi
+ \else % 1-9
+ \ifnum#1<#5 % 1
+ 1%
+ \ifx#2=%
+ \else
+ \expandafter\IntCalc@ProcessDiv\expandafter{%
+ \number\IntCalc@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\IntCalc@@ProcessDiv
+ \number\IntCalc@Sub#1!#5!!%
+ 23%
+ }%
+ \else % 4 5
+ \@ReturnAfterFi{%
+ \expandafter\IntCalc@@ProcessDiv
+ \number\IntCalc@Sub#1!#6!!%
+ 45%
+ }%
+ \fi
+ #2#3!#4!#5!#6!#7!#8!%
+ \else % 6 7 8 9
+ \ifnum#1<#8 % 6 7
+ \@ReturnAfterElseFi{%
+ \expandafter\IntCalc@@ProcessDiv
+ \number\IntCalc@Sub#1!#7!!%
+ 67%
+ }%
+ \else % 8 9
+ \@ReturnAfterFi{%
+ \expandafter\IntCalc@@ProcessDiv
+ \number\IntCalc@Sub#1!#8!!%
+ 89%
+ }%
+ \fi
+ #2#3!#4!#5!#6!#7!#8!%
+ \fi
+ \fi
+ \fi
+ \ifx#2=%
+ \expandafter\IntCalc@Gobble
+ \fi
+ /%
+}
+\def\IntCalc@@ProcessDiv#1!#2#3#4#5!#6!{%
+ \ifnum#1<#6 %
+ #2%
+ \@ReturnAfterElseFi{%
+ \ifx#4=%
+ \expandafter\IntCalc@CleanupIV
+ \else
+ \@ReturnAfterFi{%
+ \IntCalc@ProcessDiv{#1#4}#5!#6!%
+ }%
+ \fi
+ }%
+ \else
+ #3%
+ \@ReturnAfterFi{%
+ \ifx#4=%
+ \expandafter\IntCalc@CleanupIV
+ \else
+ \@ReturnAfterFi{%
+ \expandafter\IntCalc@ProcessDiv\expandafter{%
+ \number\IntCalc@Sub#1!#6!\IntCalc@Space
+ #4%
+ }#5!#6!%
+ }%
+ \fi
+ }%
+ \fi
+}
+\def\IntCalc@CleanupIV#1!#2!#3!#4!{}
+\def\intcalcMod#1#2{%
+ \number\expandafter\IntCalc@Mod
+ \number\number#1\expandafter!%
+ \number#2! %
+}
+\def\IntCalc@Mod#1!#2!{%
+ \ifcase#2 %
+ 0\IntCalcError:DivisionByZero%
+ \else
+ \ifnum#2<\z@
+ -%
+ \expandafter\IntCalc@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\IntCalc@ModShift
+ \number-%
+ \expandafter\IntCalc@Sub
+ \number\IntCalc@Gobble#1\expandafter!%
+ \number\intcalcMul{#2}{%
+ \expandafter\IntCalc@Div\IntCalc@Gobble#1!#2!%
+ }!%
+ !#2!%
+ \else
+ \expandafter\IntCalc@Sub\number#1\expandafter!%
+ \number\intcalcMul{#2}{\IntCalc@Div#1!#2!}!%
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+}
+\def\IntCalc@ModShift#1!#2!{%
+ \ifnum#1<\z@
+ \expandafter\IntCalc@Sub\number#2\expandafter!%
+ \IntCalc@Gobble#1!%
+ \else
+ #1%
+ \fi
+}
+\def\IntCalc@Empty{}
+\def\IntCalc@Gobble#1{}
+\long\def\@ReturnAfterFi#1\fi{\fi#1}%
+\long\def\@ReturnAfterElseFi#1\else#2\fi{\fi#1}%
+\IntCalc@AtEnd
+
+
+\endinput
+%%
+%% End of file `intcalc.sty'.