%% %% This is file `xintexpr.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% xint.dtx (with options: `xintexpr') %% %% IMPORTANT NOTICE: %% %% For the copyright see the source file. %% %% Any modified versions of this file must be renamed %% with new filenames distinct from xintexpr.sty. %% %% For distribution of the original source see the terms %% for copying and modification in the file xint.dtx. %% %% This generated file may be distributed as long as the %% original source files, as listed above, are part of the %% same distribution. (The sources need not necessarily be %% in the same archive or directory.) %% --------------------------------------------------------------- %% The xint bundle 1.4j 2021/07/13 %% Copyright (C) 2013-2021 by Jean-Francois Burnol %% xintexpr: Expandable expression parser %% --------------------------------------------------------------- \begingroup\catcode61\catcode48\catcode32=10\relax% \catcode13=5 % ^^M \endlinechar=13 % \catcode123=1 % { \catcode125=2 % } \catcode64=11 % @ \catcode35=6 % # \catcode44=12 % , \catcode45=12 % - \catcode46=12 % . \catcode58=12 % : \def\z {\endgroup}% \expandafter\let\expandafter\x\csname ver@xintexpr.sty\endcsname \expandafter\let\expandafter\w\csname ver@xintfrac.sty\endcsname \expandafter\let\expandafter\t\csname ver@xinttools.sty\endcsname \expandafter \ifx\csname PackageInfo\endcsname\relax \def\y#1#2{\immediate\write-1{Package #1 Info: #2.}}% \else \def\y#1#2{\PackageInfo{#1}{#2}}% \fi \expandafter % I don't think engine exists providing \expanded but not \numexpr \ifx\csname expanded\endcsname\relax \y{xintexpr}{\expanded not available, aborting input}% \aftergroup\endinput \else \ifx\x\relax % plain-TeX, first loading of xintexpr.sty \ifx\w\relax % but xintfrac.sty not yet loaded. \expandafter\def\expandafter\z\expandafter {\z\input xintfrac.sty\relax}% \fi \ifx\t\relax % but xinttools.sty not yet loaded. \expandafter\def\expandafter\z\expandafter {\z\input xinttools.sty\relax}% \fi \else \def\empty {}% \ifx\x\empty % LaTeX, first loading, % variable is initialized, but \ProvidesPackage not yet seen \ifx\w\relax % xintfrac.sty not yet loaded. \expandafter\def\expandafter\z\expandafter {\z\RequirePackage{xintfrac}}% \fi \ifx\t\relax % xinttools.sty not yet loaded. \expandafter\def\expandafter\z\expandafter {\z\RequirePackage{xinttools}}% \fi \else \aftergroup\endinput % xintexpr already loaded. \fi \fi \fi \z% \XINTsetupcatcodes% \XINT_providespackage \ProvidesPackage{xintexpr}% [2021/07/13 v1.4j Expandable expression parser (JFB)]% \catcode`! 11 \let\XINT_Cmp \xintiiCmp \def\XINTfstop{\noexpand\XINTfstop}% \def\xintreloadscilibs{\xintreloadxintlog\xintreloadxinttrig}% \def\xintDigits {\futurelet\XINT_token\xintDigits_i}% \def\xintDigits_i#1={\afterassignment\xintDigits_j\mathchardef\XINT_digits=}% \def\xintDigits_j#1% {% \let\XINTdigits=\XINT_digits \ifx*\XINT_token\expandafter\xintreloadscilibs\fi }% \let\xintfracSetDigits\xintSetDigits \def\xintSetDigits#1#{\if\relax\detokenize{#1}\relax\expandafter\xintfracSetDigits \else\expandafter\xintSetDigits_a\fi}% \def\xintSetDigits_a#1% {% \mathchardef\XINT_digits=\numexpr#1\relax \let\XINTdigits\XINT_digits \xintreloadscilibs }% \def\XINTdigitsormax{\ifnum\XINTdigits>\xint_c_ii^vi\xint_c_ii^vi\else\XINTdigits\fi}% \def\XINT:expr:toblistwith#1#2% {% {\expandafter\XINT:expr:toblist_checkempty \expanded{\noexpand#1!\expandafter}\detokenize{#2}^}% }% \def\XINT:expr:toblist_checkempty #1!#2% {% \if ^#2\expandafter\xint_gob_til_^\else\expandafter\XINT:expr:toblist_a\fi #1!#2% }% \catcode`< 1 \catcode`> 2 \catcode`{ 12 \catcode`} 12 \def\XINT:expr:toblist_a #1{#2% <% \if{#2\xint_dothis<[\XINT:expr:toblist_a>\fi \if P#2\xint_dothis<\XINT:expr:toblist_pol>\fi \xint_orthat\XINT:expr:toblist_b #1#2% >% \def\XINT:expr:toblist_pol #1!#2.{#3}}% <% pol([\XINT:expr:toblist_b #1!#3}^])\XINT:expr:toblist_c #1!}% >% \def\XINT:expr:toblist_b #1!#2}% <% \if\relax#2\relax\xintexprEmptyItem\else#1<#2>\fi\XINT:expr:toblist_c #1!}% >% \def\XINT:expr:toblist_c #1}#2% <% \if ^#2\xint_dothis<\xint_gob_til_^>\fi \if{#2\xint_dothis<, \XINT:expr:toblist_a>\fi \xint_orthat<]\XINT:expr:toblist_c>#1#2% >% \catcode`{ 1 \catcode`} 2 \catcode`< 12 \catcode`> 12 \def\XINT:expr:flatten#1% {% {{\expandafter\XINT:expr:flatten_checkempty\detokenize{#1}^}}% }% \def\XINT:expr:flatten_checkempty #1% {% \if ^#1\expandafter\xint_gobble_i\else\expandafter\XINT:expr:flatten_a\fi #1% }% \begingroup % should I check lccode s generally if corrupted context at load? \catcode`[ 1 \catcode`] 2 \lccode`[`{ \lccode`]`} \catcode`< 1 \catcode`> 2 \catcode`{ 12 \catcode`} 12 \lowercase<\endgroup \def\XINT:expr:flatten_a {#1% <% \if{#1\xint_dothis<\XINT:expr:flatten_a>\fi \xint_orthat\XINT:expr:flatten_b #1% >% \def\XINT:expr:flatten_b #1}% <% [#1]\XINT:expr:flatten_c }% >% \def\XINT:expr:flatten_c }#1% <% \if ^#1\xint_dothis<\xint_gobble_i>\fi \if{#1\xint_dothis<\XINT:expr:flatten_a>\fi \xint_orthat<\XINT:expr:flatten_c>#1% >% >% back to normal catcodes \catcode`& 4 \protected\def\xintexpralignbegin {\halign\bgroup\tabskip2ex\hfil##&&##\hfil\cr}% \def\xintexpralignend {\crcr\egroup}% \protected\def\xintexpralignlinesep {,\cr}% \protected\def\xintexpralignleftbracket {[}% \protected\def\xintexpralignrightbracket{]}% \protected\def\xintexpralignleftsep {&}% \protected\def\xintexpralignrightsep {&}% \protected\def\xintexpraligninnersep {,&}% \catcode`& 7 \def\XINT:expr:toalignwith#1#2% {% {\expandafter\XINT:expr:toalign_checkempty \expanded{\noexpand#1!\expandafter}\detokenize{#2}^\expandafter}% \xintexpralignend }% \def\XINT:expr:toalign_checkempty #1!#2% {% \if ^#2\expandafter\xint_gob_til_^\else\expandafter\XINT:expr:toalign_a\fi #1!#2% }% \catcode`< 1 \catcode`> 2 \catcode`{ 12 \catcode`} 12 \def\XINT:expr:toalign_a #1{#2% <% \if{#2\xint_dothis<\xintexpralignleftbracket\XINT:expr:toalign_a>\fi \xint_orthat<\xintexpralignleftsep\XINT:expr:toalign_b>#1#2% >% \def\XINT:expr:toalign_b #1!#2}% <% \if\relax#2\relax\xintexprEmptyItem\else#1<#2>\fi\XINT:expr:toalign_c #1!}% >% \def\XINT:expr:toalign_c #1}#2% <% \if ^#2\xint_dothis<\xint_gob_til_^>\fi \if {#2\xint_dothis<\xintexpraligninnersep\XINT:expr:toalign_A>\fi \xint_orthat<\xintexpralignrightsep\xintexpralignrightbracket\XINT:expr:toalign_C>#1#2% >% \def\XINT:expr:toalign_A #1{#2% <% \if{#2\xint_dothis<\xintexpralignleftbracket\XINT:expr:toalign_A>\fi \xint_orthat\XINT:expr:toalign_b #1#2% >% \def\XINT:expr:toalign_C #1}#2% <% \if ^#2\xint_dothis<\xint_gob_til_^>\fi \if {#2\xint_dothis<\xintexpralignlinesep\XINT:expr:toalign_a>\fi \xint_orthat<\xintexpralignrightbracket\XINT:expr:toalign_C>#1#2% >% \catcode`{ 1 \catcode`} 2 \catcode`< 12 \catcode`> 12 \def\XINT:expr:mapwithin#1#2% {% {{\expandafter\XINT:expr:mapwithin_checkempty \expanded{\noexpand#1!\expandafter}\detokenize{#2}^}}% }% \def\XINT:expr:mapwithin_checkempty #1!#2% {% \if ^#2\expandafter\xint_gob_til_^\else\expandafter\XINT:expr:mapwithin_a\fi #1!#2% }% \begingroup % should I check lccode s generally if corrupted context at load? \catcode`[ 1 \catcode`] 2 \lccode`[`{ \lccode`]`} \catcode`< 1 \catcode`> 2 \catcode`{ 12 \catcode`} 12 \lowercase<\endgroup \def\XINT:expr:mapwithin_a #1{#2% <% \if{#2\xint_dothis<[\iffalse]\fi\XINT:expr:mapwithin_a>\fi% \xint_orthat\XINT:expr:mapwithin_b #1#2% >% \def\XINT:expr:mapwithin_b #1!#2}% <% #1<#2>\XINT:expr:mapwithin_c #1!}% >% \def\XINT:expr:mapwithin_c #1}#2% <% \if ^#2\xint_dothis<\xint_gob_til_^>\fi \if{#2\xint_dothis<\XINT:expr:mapwithin_a>\fi% \xint_orthat<\iffalse[\fi]\XINT:expr:mapwithin_c>#1#2% >% >% back to normal catcodes \def\xintexpr {\romannumeral0\xintexpro }% \def\xintiexpr {\romannumeral0\xintiexpro }% \def\xintfloatexpr {\romannumeral0\xintfloatexpro }% \def\xintiiexpr {\romannumeral0\xintiiexpro }% \def\xintexpro {\expandafter\XINT_expr_wrap\romannumeral0\xintbareeval }% \def\xintiiexpro {\expandafter\XINT_iiexpr_wrap\romannumeral0\xintbareiieval }% \def\xintiexpro #1% {% \ifx [#1\expandafter\XINT_iexpr_withopt\else\expandafter\XINT_iexpr_noopt \fi #1% }% \def\XINT_iexpr_noopt {% \expandafter\XINT_iexpr_iiround\romannumeral0\xintbareeval }% \def\XINT_iexpr_iiround {% \expandafter\XINT_expr_wrap \expanded \XINT:NEhook:x:mapwithin\XINT:expr:mapwithin{\XINTiRoundzero_braced}% }% \def\XINTiRoundzero_braced#1{{\xintiRound{0}{#1}}}% \def\XINT_iexpr_withopt [#1]% {% \expandafter\XINT_iexpr_round \the\numexpr \xint_zapspaces #1 \xint_gobble_i\expandafter.% \romannumeral0\xintbareeval }% \def\XINT_iexpr_round #1.% {% \ifnum#1=\xint_c_\xint_dothis{\XINT_iexpr_iiround}\fi \xint_orthat{\XINT_iexpr_round_a #1.}% }% \def\XINT_iexpr_round_a #1.% {% \expandafter\XINT_iexpr_wrap \expanded \XINT:NEhook:x:mapwithin\XINT:expr:mapwithin{\XINTiRound_braced{#1}}% }% \def\XINTiRound_braced#1#2{{\xintiRound{#1}{#2}[\the\numexpr\ifnum#1<\xint_c_i0\else-#1\fi]}}% \def\xintfloatexpro #1% {% \ifx [#1\expandafter\XINT_flexpr_withopt\else\expandafter\XINT_flexpr_noopt \fi #1% }% \def\XINT_flexpr_noopt {% \expandafter\XINT_flexpr_wrap\the\numexpr\XINTdigits\expandafter.% \romannumeral0\xintbarefloateval }% \def\XINT_flexpr_withopt [#1]% {% \expandafter\XINT_flexpr_withopt_a \the\numexpr\xint_zapspaces #1 \xint_gobble_i\expandafter.% \romannumeral0\xintbarefloateval }% \def\XINT_flexpr_withopt_a #1#2.% {% \expandafter\XINT_flexpr_withopt_b\the\numexpr\if#1-\XINTdigits\fi#1#2.% }% \def\XINT_flexpr_withopt_b #1.% {% \expandafter\XINT_flexpr_wrap \the\numexpr#1\expandafter.% \expanded \XINT:NEhook:x:mapwithin\XINT:expr:mapwithin{\XINTinFloat_braced[#1]}% }% \def\XINTinFloat_braced[#1]#2{{\XINTinFloat[#1]{#2}}}% \def\XINT_expr_wrap {\XINTfstop\XINTexprprint.}% \def\XINT_iexpr_wrap {\XINTfstop\XINTiexprprint.}% \def\XINT_iiexpr_wrap {\XINTfstop\XINTiiexprprint.}% \def\XINT_flexpr_wrap {\XINTfstop\XINTflexprprint}% \protected\def\XINTexprprint.% {\XINT:NEhook:x:toblist\XINT:expr:toblistwith\xintexprPrintOne}% \let\xintexprPrintOne\xintFracToSci \protected\def\XINTiexprprint.% {\XINT:NEhook:x:toblist\XINT:expr:toblistwith\xintiexprPrintOne}% \let\xintiexprPrintOne\xintDecToString \def\xintexprEmptyItem{[]}% \protected\def\XINTiiexprprint.% {\XINT:NEhook:x:toblist\XINT:expr:toblistwith\xintiiexprPrintOne}% \let\xintiiexprPrintOne\xint_firstofone \protected\def\XINTflexprprint #1.% {\XINT:NEhook:x:toblist\XINT:expr:toblistwith{\xintfloatexprPrintOne[#1]}}% \let\xintfloatexprPrintOne\xintPFloat_wopt \protected\def\XINTboolexprprint.% {\XINT:NEhook:x:toblist\XINT:expr:toblistwith\xintboolexprPrintOne}% \def\xintboolexprPrintOne#1{\xintiiifNotZero{#1}{True}{False}}% \def\xintthe #1{\expanded\expandafter\xint_gobble_i\romannumeral`&&@#1}% \def\xintthealign #1{\expandafter\xintexpralignbegin \expanded\expandafter\XINT:expr:toalignwith \romannumeral0\expandafter\expandafter\expandafter\expandafter \expandafter\expandafter\expandafter\xint_gob_andstop_ii \expandafter\xint_gobble_i\romannumeral`&&@#1}% \def\xinttheexpr {\expanded\expandafter\XINTexprprint\expandafter.\romannumeral0\xintbareeval}% \def\xinttheiexpr {\expanded\expandafter\xint_gobble_i\romannumeral`&&@\xintiexpr}% \def\xintthefloatexpr {\expanded\expandafter\xint_gobble_i\romannumeral`&&@\xintfloatexpr}% \def\xinttheiiexpr {\expanded\expandafter\XINTiiexprprint\expandafter.\romannumeral0\xintbareiieval}% \let\thexintexpr \xinttheexpr \let\thexintiexpr \xinttheiexpr \let\thexintfloatexpr\xintthefloatexpr \let\thexintiiexpr \xinttheiiexpr \def\xintbareeval {\XINT_expr_start }% \def\xintbarefloateval{\XINT_flexpr_start}% \def\xintbareiieval {\XINT_iiexpr_start}% \def\XINT_expr_unlock {\expandafter\xint_firstofone\romannumeral`&&@}% \def\xintthebareeval {\romannumeral0\expandafter\xint_stop_atfirstofone\romannumeral0\xintbareeval}% \def\xintthebareiieval {\romannumeral0\expandafter\xint_stop_atfirstofone\romannumeral0\xintbareiieval}% \def\xintthebarefloateval {\romannumeral0\expandafter\xint_stop_atfirstofone\romannumeral0\xintbarefloateval}% \def\xintthebareroundedfloateval {% \romannumeral0\expandafter\xintthebareroundedfloateval_a\romannumeral0\xintbarefloateval }% \def\xintthebareroundedfloateval_a {% \expandafter\xint_stop_atfirstofone \expanded\XINT:NEhook:x:mapwithin\XINT:expr:mapwithin{\XINTinFloatSdigits_braced}% }% \def\XINTinFloatSdigits_braced#1{{\XINTinFloatS[\XINTdigits]{#1}}}% \def\xinteval #1% {\expanded\expandafter\XINTexprprint\expandafter.\romannumeral0\xintbareeval#1\relax}% \def\xintieval #1% {\expanded\expandafter\xint_gobble_i\romannumeral`&&@\xintiexpr#1\relax}% \def\xintfloateval #1% {\expanded\expandafter\xint_gobble_i\romannumeral`&&@\xintfloatexpr#1\relax}% \def\xintiieval #1% {\expanded\expandafter\XINTiiexprprint\expandafter.\romannumeral0\xintbareiieval#1\relax}% \def\xintboolexpr {% \romannumeral0\expandafter\XINT_boolexpr_done\romannumeral0\xintexpro }% \def\XINT_boolexpr_done #1.{\XINTfstop\XINTboolexprprint.}% \def\xinttheboolexpr {% \expanded\expandafter\XINTboolexprprint\expandafter.\romannumeral0\xintbareeval }% \let\thexintboolexpr\xinttheboolexpr \def\xintifboolexpr #1{\romannumeral0\xintiiifnotzero {\xinttheexpr #1\relax}}% \def\xintifboolfloatexpr #1{\romannumeral0\xintiiifnotzero {\xintthefloatexpr #1\relax}}% \def\xintifbooliiexpr #1{\romannumeral0\xintiiifnotzero {\xinttheiiexpr #1\relax}}% \def\xintifsgnexpr #1{\romannumeral0\xintiiifsgn {\xinttheexpr #1\relax}}% \def\xintifsgnfloatexpr #1{\romannumeral0\xintiiifsgn {\xintthefloatexpr #1\relax}}% \def\xintifsgniiexpr #1{\romannumeral0\xintiiifsgn {\xinttheiiexpr #1\relax}}% \def\XINT_embrace#1{{#1}}% \def\xint_gob_til_! #1!{}% ! with catcode 11 \def\xintError:noopening {% \XINT_expandableerror{Extra ). This is serious and prospects are bleak.}% }% \def\xintthecoords#1% {\romannumeral`&&@\expandafter\XINT_thecoords_a\romannumeral0#1}% \def\XINT_thecoords_a #1#2.#3% #2.=\XINTfloatprint. etc... {\expanded{\expandafter\XINT_thecoords_b\expanded#2.{#3},!,!,^}}% \def\XINT_thecoords_b #1#2,#3#4,% {\xint_gob_til_! #3\XINT_thecoords_c ! (#1#2, #3#4)\XINT_thecoords_b }% \def\XINT_thecoords_c #1^{}% \def\xintthespaceseparated#1% {\expanded\expandafter\xintthespaceseparated_a\romannumeral0#1}% \def\xintthespaceseparated_a #1#2.#3% {{\expandafter\xintthespaceseparated_b\expanded#2.{#3},!,!,!,!,!,!,!,!,!,^}}% \def\xintthespaceseparated_b #1,#2,#3,#4,#5,#6,#7,#8,#9,% {\xint_gob_til_! #9\xintthespaceseparated_c !% #1#2#3#4#5#6#7#8#9% \xintthespaceseparated_b}% \def\xintthespaceseparated_c !#1!#2^{#1}% \let\XINT:NEhook:f:one:from:one\expandafter \let\XINT:NEhook:f:one:from:one:direct\empty \let\XINT:NEhook:f:one:from:two\expandafter \let\XINT:NEhook:f:one:from:two:direct\empty \let\XINT:NEhook:x:one:from:two\empty \let\XINT:NEhook:f:one:and:opt:direct \empty \let\XINT:NEhook:f:tacitzeroifone:direct \empty \let\XINT:NEhook:f:iitacitzeroifone:direct \empty \let\XINT:NEhook:x:select:obey\empty \let\XINT:NEhook:x:listsel\empty \let\XINT:NEhook:f:reverse\empty \def\XINT:NEhook:f:from:delim:u #1#2^% {% \expandafter\XINT_fooof_checkifnumber\expandafter#1\string#2^% }% \def\XINT_fooof_checkifnumber#1#2% {% \expandafter#1% \romannumeral0\expanded{\if ^#2^\else \if\bgroup#2\noexpand\XINT_fooof_no\else \noexpand\XINT_fooof_yes#2\fi\fi}% }% \def\XINT_fooof_yes#1^{{#1}^}% \def\XINT_fooof_no{\expandafter{\iffalse}\fi}% \def\XINT:NEhook:f:LFL #1{\expandafter#1\expandafter}% \def\XINT:NEhook:r:check #1^% {% \expandafter\XINT:NEhook:r:check_a\string#1^% }% \let\XINT:NEsaved:r:check \XINT:NEhook:r:check \def\XINT:NEhook:r:check_a #1% {% \if ^#1\xint_dothis\xint_c_\fi \if\bgroup#1\xint_dothis\XINT:NEhook:r:check_no\fi \xint_orthat{\XINT:NEhook:r:check_yes#1}% }% \def\XINT:NEhook:r:check_no {% \expandafter\XINT:NEhook:r:check_no_b \expandafter\xint_c_\expandafter{\iffalse}\fi }% \def\XINT:NEhook:r:check_no_b#1^{#1}% \def\XINT:NEhook:r:check_yes#1^{\xint_c_{#1}}% \let\XINT:NEhook:branch\expandafter \let\XINT:NEhook:seqx\empty \let\XINT:NEhook:iter\expandafter \let\XINT:NEhook:opx\empty \let\XINT:NEhook:rseq\expandafter \let\XINT:NEhook:iterr\expandafter \let\XINT:NEhook:rrseq\expandafter \let\XINT:NEhook:x:toblist\empty \let\XINT:NEhook:x:mapwithin\empty \let\XINT:NEhook:x:ndmapx\empty \def\XINT_expr_getnext #1% {% \expandafter\XINT_expr_put_op_first\romannumeral`&&@% \expandafter\XINT_expr_getnext_a\romannumeral`&&@#1% }% \def\XINT_expr_put_op_first #1#2#3{\expandafter#2\expandafter#3\expandafter{#1}}% \def\XINT_expr_getnext_a #1% {% \ifx\relax #1\xint_dothis\XINT_expr_foundprematureend\fi \ifx\XINTfstop#1\xint_dothis\XINT_expr_subexpr\fi \ifcat\relax#1\xint_dothis\XINT_expr_countetc\fi \xint_orthat{}\XINT_expr_getnextfork #1% }% \def\XINT_expr_foundprematureend\XINT_expr_getnextfork #1{{}\xint_c_\relax}% \def\XINT_expr_subexpr #1.#2% {% \expanded{\unexpanded{{#2}}\expandafter}\romannumeral`&&@\XINT_expr_getop }% \def\XINT_expr_countetc\XINT_expr_getnextfork#1% {% \if0\ifx\count#11\fi \ifx\numexpr#11\fi \ifx\catcode#11\fi \ifx\dimen#11\fi \ifx\dimexpr#11\fi \ifx\skip#11\fi \ifx\glueexpr#11\fi \ifx\fontdimen#11\fi \ifx\ht#11\fi \ifx\dp#11\fi \ifx\wd#11\fi \ifx\fontcharht#11\fi \ifx\fontcharwd#11\fi \ifx\fontchardp#11\fi \ifx\fontcharic#11\fi 0\expandafter\XINT_expr_fetch_as_number\fi \expandafter\XINT_expr_getnext_a\number #1% }% \def\XINT_expr_fetch_as_number \expandafter\XINT_expr_getnext_a\number #1% {% \expanded{{{\number#1}}\expandafter}\romannumeral`&&@\XINT_expr_getop }% \def\XINT_expr_getnextfork #1% {% \ifcat a#1\xint_dothis\XINT_expr_startfunc\fi \ifnum \xint_c_ix<1\string#1 \xint_dothis\XINT_expr_startint\fi \xint_orthat\XINT_expr_getnextfork_a #1% }% \def\XINT_expr_getnextfork_a #1% {% \if#1*\xint_dothis {{}\xint_c_ii^v 0}\fi \if#1[\xint_dothis {{}\xint_c_ii^v \XINT_expr_itself_obracket}\fi \if#1-\xint_dothis {{}{}-}\fi \if#1@\xint_dothis{\XINT_expr_startfunc @}\fi \if#1(\xint_dothis {{}\xint_c_ii^v (}\fi \xint_orthat{\XINT_expr_getnextfork_b#1}% }% \catcode96 11 % ` \def\XINT_expr_getnextfork_b #1% {% \if#1+\xint_dothis \XINT_expr_getnext_a\fi \if#1.\xint_dothis \XINT_expr_startdec\fi \if#1`\xint_dothis {\XINT_expr_onliteral_`}\fi \if#1!\xint_dothis {\XINT_expr_startfunc !}\fi \if#1?\xint_dothis {\XINT_expr_startfunc ?}\fi \if#1"\xint_dothis \XINT_expr_starthex\fi \xint_orthat{\XINT_expr_getnextfork_c#1}% }% \def\XINT_tmpa #1{% \def\XINT_expr_getnextfork_c ##1% {% \if##1#1\xint_dothis \XINT_expr_getmacropar\fi \if##1_\xint_dothis \XINT_expr_getnext_a\fi \if0\if##1/1\fi\if##1^1\fi0\xint_dothis{\XINT_expr_insertnil##1}\fi \xint_orthat{\XINT_expr_missing_arg##1}% }% }\expandafter\XINT_tmpa\string#% \def\XINT_expr_onliteral_` #1#2({{#1}\xint_c_ii^v `}% \catcode96 12 % ` \def\XINT_tmpa #1{% \def\XINT_expr_getmacropar ##1% {% \expandafter{\expandafter{\expandafter#1\expandafter ##1\expandafter}\expandafter}\romannumeral`&&@\XINT_expr_getop }% }\expandafter\XINT_tmpa\string#% \def\XINT_expr_insertnil #1% {% \expandafter{\expandafter}\romannumeral`&&@\XINT_expr_getop_a#1% }% \def\XINT_expr_missing_arg#1% {% \expanded{\XINT_expandableerror{Expected a value, got nothing before `#1'. Inserting 0.}{{0}}\expandafter}% \romannumeral`&&@\XINT_expr_getop_a#1% }% \def\XINT_expr_startint #1% {% \if #10\expandafter\XINT_expr_gobz_a\else\expandafter\XINT_expr_scanint_a\fi #1% }% \def\XINT_expr_scanint_a #1#2% {\expanded\bgroup{{\iffalse}}\fi #1% spare a \string \expandafter\XINT_expr_scanint_main\romannumeral`&&@#2}% \def\XINT_expr_gobz_a #1#2% {\expanded\bgroup{{\iffalse}}\fi \expandafter\XINT_expr_gobz_scanint_main\romannumeral`&&@#2}% \def\XINT_expr_startdec #1% {\expanded\bgroup{{\iffalse}}\fi \expandafter\XINT_expr_scandec_a\romannumeral`&&@#1}% \def\XINT_expr_scanint_main #1% {% \ifcat \relax #1\expandafter\XINT_expr_scanint_hit_cs \fi \ifnum\xint_c_ix<1\string#1 \else\expandafter\XINT_expr_scanint_next\fi #1\XINT_expr_scanint_again }% \def\XINT_expr_scanint_again #1% {% \expandafter\XINT_expr_scanint_main\romannumeral`&&@#1% }% \def\XINT_expr_scanint_hit_cs \ifnum#1\fi#2\XINT_expr_scanint_again {% \iffalse{{{\fi}}\expandafter}\romannumeral`&&@\XINT_expr_getop_a#2% }% \def\XINT_expr_scanint_next #1\XINT_expr_scanint_again {% \if [#1\xint_dothis\XINT_expr_rawxintfrac\fi \if _#1\xint_dothis\XINT_expr_scanint_again\fi \if e#1\xint_dothis{[\the\numexpr0\XINT_expr_scanexp_a +}\fi \if E#1\xint_dothis{[\the\numexpr0\XINT_expr_scanexp_a +}\fi \if .#1\xint_dothis{\XINT_expr_startdec_a .}\fi \xint_orthat {\iffalse{{{\fi}}\expandafter}\romannumeral`&&@\XINT_expr_getop_a#1}% }% \def\XINT_expr_rawxintfrac {% \iffalse{{{\fi}}\expandafter}\csname XINT_expr_precedence_&&@\endcsname&&@% }% \def\XINT_expr_gobz_scanint_main #1% {% \ifcat \relax #1\expandafter\XINT_expr_gobz_scanint_hit_cs\fi \ifnum\xint_c_x<1\string#1 \else\expandafter\XINT_expr_gobz_scanint_next\fi #1\XINT_expr_scanint_again }% \def\XINT_expr_gobz_scanint_again #1% {% \expandafter\XINT_expr_gobz_scanint_main\romannumeral`&&@#1% }% \def\XINT_expr_gobz_scanint_hit_cs\ifnum#1\fi#2\XINT_expr_scanint_again {% 0\iffalse{{{\fi}}\expandafter}\romannumeral`&&@\XINT_expr_getop_a#2% }% \def\XINT_expr_gobz_scanint_next #1\XINT_expr_scanint_again {% \if [#1\xint_dothis{\expandafter0\XINT_expr_rawxintfrac}\fi \if _#1\xint_dothis\XINT_expr_gobz_scanint_again\fi \if e#1\xint_dothis{0[\the\numexpr0\XINT_expr_scanexp_a +}\fi \if E#1\xint_dothis{0[\the\numexpr0\XINT_expr_scanexp_a +}\fi \if .#1\xint_dothis{\XINT_expr_gobz_startdec_a .}\fi \if 0#1\xint_dothis\XINT_expr_gobz_scanint_again\fi \xint_orthat {0\iffalse{{{\fi}}\expandafter}\romannumeral`&&@\XINT_expr_getop_a#1}% }% \def\XINT_expr_startdec_a .#1% {% \expandafter\XINT_expr_scandec_a\romannumeral`&&@#1% }% \def\XINT_expr_scandec_a #1% {% \if .#1\xint_dothis{\iffalse{{{\fi}}\expandafter}% \romannumeral`&&@\XINT_expr_getop_a..}\fi \xint_orthat {\XINT_expr_scandec_main 0.#1}% }% \def\XINT_expr_gobz_startdec_a .#1% {% \expandafter\XINT_expr_gobz_scandec_a\romannumeral`&&@#1% }% \def\XINT_expr_gobz_scandec_a #1% {% \if .#1\xint_dothis {0\iffalse{{{\fi}}\expandafter}\romannumeral`&&@\XINT_expr_getop_a..}\fi \xint_orthat {\XINT_expr_gobz_scandec_main 0.#1}% }% \def\XINT_expr_scandec_main #1.#2% {% \ifcat \relax #2\expandafter\XINT_expr_scandec_hit_cs\fi \ifnum\xint_c_ix<1\string#2 \else\expandafter\XINT_expr_scandec_next\fi #2\expandafter\XINT_expr_scandec_again\the\numexpr #1-\xint_c_i.% }% \def\XINT_expr_scandec_again #1.#2% {% \expandafter\XINT_expr_scandec_main \the\numexpr #1\expandafter.\romannumeral`&&@#2% }% \def\XINT_expr_scandec_hit_cs\ifnum#1\fi #2\expandafter\XINT_expr_scandec_again\the\numexpr#3-\xint_c_i.% {% [#3]\iffalse{{{\fi}}\expandafter}\romannumeral`&&@\XINT_expr_getop_a#2% }% \def\XINT_expr_scandec_next #1#2\the\numexpr#3-\xint_c_i.% {% \if _#1\xint_dothis{\XINT_expr_scandec_again#3.}\fi \if e#1\xint_dothis{[\the\numexpr#3\XINT_expr_scanexp_a +}\fi \if E#1\xint_dothis{[\the\numexpr#3\XINT_expr_scanexp_a +}\fi \xint_orthat {[#3]\iffalse{{{\fi}}\expandafter}\romannumeral`&&@\XINT_expr_getop_a#1}% }% \def\XINT_expr_gobz_scandec_main #1.#2% {% \ifcat \relax #2\expandafter\XINT_expr_gobz_scandec_hit_cs\fi \ifnum\xint_c_ix<1\string#2 \else\expandafter\XINT_expr_gobz_scandec_next\fi \if0#2\expandafter\xint_firstoftwo\else\expandafter\xint_secondoftwo\fi {\expandafter\XINT_expr_gobz_scandec_main}% {#2\expandafter\XINT_expr_scandec_again}\the\numexpr#1-\xint_c_i.% }% \def\XINT_expr_gobz_scandec_hit_cs \ifnum#1\fi\if0#2#3\xint_c_i.% {% 0[0]\iffalse{{{\fi}}\expandafter}\romannumeral`&&@\XINT_expr_getop_a#2% }% \def\XINT_expr_gobz_scandec_next\if0#1#2\fi #3\numexpr#4-\xint_c_i.% {% \if _#1\xint_dothis{\XINT_expr_gobz_scandec_main #4.}\fi \if e#1\xint_dothis{0[\the\numexpr0\XINT_expr_scanexp_a +}\fi \if E#1\xint_dothis{0[\the\numexpr0\XINT_expr_scanexp_a +}\fi \xint_orthat {0[0]\iffalse{{{\fi}}\expandafter}\romannumeral`&&@\XINT_expr_getop_a#1}% }% \def\XINT_expr_scanexp_a #1#2% {% #1\expandafter\XINT_expr_scanexp_main\romannumeral`&&@#2% }% \def\XINT_expr_scanexp_main #1% {% \ifcat \relax #1\expandafter\XINT_expr_scanexp_hit_cs\fi \ifnum\xint_c_ix<1\string#1 \else\expandafter\XINT_expr_scanexp_next\fi #1\XINT_expr_scanexp_again }% \def\XINT_expr_scanexp_again #1% {% \expandafter\XINT_expr_scanexp_main_b\romannumeral`&&@#1% }% \def\XINT_expr_scanexp_hit_cs\ifnum#1\fi#2\XINT_expr_scanexp_again {% ]\iffalse{{{\fi}}\expandafter}\romannumeral`&&@\XINT_expr_getop_a#2% }% \def\XINT_expr_scanexp_next #1\XINT_expr_scanexp_again {% \if _#1\xint_dothis \XINT_expr_scanexp_again \fi \if +#1\xint_dothis {\XINT_expr_scanexp_a +}\fi \if -#1\xint_dothis {\XINT_expr_scanexp_a -}\fi \xint_orthat {]\iffalse{{{\fi}}\expandafter}\romannumeral`&&@\XINT_expr_getop_a#1}% }% \def\XINT_expr_scanexp_main_b #1% {% \ifcat \relax #1\expandafter\XINT_expr_scanexp_hit_cs_b\fi \ifnum\xint_c_ix<1\string#1 \else\expandafter\XINT_expr_scanexp_next_b\fi #1\XINT_expr_scanexp_again_b }% \def\XINT_expr_scanexp_hit_cs_b\ifnum#1\fi#2\XINT_expr_scanexp_again_b {% ]\iffalse{{{\fi}}\expandafter}\romannumeral`&&@\XINT_expr_getop_a#2% }% \def\XINT_expr_scanexp_again_b #1% {% \expandafter\XINT_expr_scanexp_main_b\romannumeral`&&@#1% }% \def\XINT_expr_scanexp_next_b #1\XINT_expr_scanexp_again_b {% \if _#1\xint_dothis\XINT_expr_scanexp_again\fi \xint_orthat {]\iffalse{{{\fi}}\expandafter}\romannumeral`&&@\XINT_expr_getop_a#1}% }% \def\XINT_expr_hex_in #1.#2#3;% {% \expanded{{{\if#2>% \xintHexToDec{#1}% \else \xintiiMul{\xintiiPow{625}{\xintLength{#3}}}{\xintHexToDec{#1#3}}% [\the\numexpr-4*\xintLength{#3}]% \fi}}\expandafter}\romannumeral`&&@\XINT_expr_getop }% \def\XINT_expr_starthex #1% {% \expandafter\XINT_expr_hex_in\expanded\bgroup \expandafter\XINT_expr_scanhexIgobz_a\romannumeral`&&@#1% }% \def\XINT_expr_scanhexIgobz_a #1% {% \ifcat #1\relax 0.>;\iffalse{\fi\expandafter}\expandafter\xint_gobble_i\fi \XINT_expr_scanhexIgobz_aa #1% }% \def\XINT_expr_scanhexIgobz_aa #1% {% \if\ifnum`#1>`0 \ifnum`#1>`9 \ifnum`#1>`@ \ifnum`#1>`F 0\else1\fi\else0\fi\else1\fi\else0\fi 1% \xint_dothis\XINT_expr_scanhexI_b \fi \if 0#1\xint_dothis\XINT_expr_scanhexIgobz_bgob\fi \if _#1\xint_dothis\XINT_expr_scanhexIgobz_bgob\fi \if .#1\xint_dothis\XINT_expr_scanhexIgobz_toII\fi \xint_orthat {\XINT_expandableerror {Expected an hexadecimal digit but got `#1'. Using `0'.}% 0.>;\iffalse{\fi}}% #1% }% \def\XINT_expr_scanhexIgobz_bgob #1#2% {% \expandafter\XINT_expr_scanhexIgobz_a\romannumeral`&&@#2% }% \def\XINT_expr_scanhexIgobz_toII .#1% {% 0..\expandafter\XINT_expr_scanhexII_a\romannumeral`&&@#1% }% \def\XINT_expr_scanhexI_a #1% {% \ifcat #1\relax .>;\iffalse{\fi\expandafter}\expandafter\xint_gobble_i\fi \XINT_expr_scanhexI_aa #1% }% \def\XINT_expr_scanhexI_aa #1% {% \if\ifnum`#1>`/ \ifnum`#1>`9 \ifnum`#1>`@ \ifnum`#1>`F 0\else1\fi\else0\fi\else1\fi\else0\fi 1% \expandafter\XINT_expr_scanhexI_b \else \if _#1\xint_dothis{\expandafter\XINT_expr_scanhexI_bgob}\fi \if .#1\xint_dothis{\expandafter\XINT_expr_scanhexI_toII}\fi \xint_orthat {.>;\iffalse{\fi\expandafter}}% \fi #1% }% \def\XINT_expr_scanhexI_b #1#2% {% #1\expandafter\XINT_expr_scanhexI_a\romannumeral`&&@#2% }% \def\XINT_expr_scanhexI_bgob #1#2% {% \expandafter\XINT_expr_scanhexI_a\romannumeral`&&@#2% }% \def\XINT_expr_scanhexI_toII .#1% {% ..\expandafter\XINT_expr_scanhexII_a\romannumeral`&&@#1% }% \def\XINT_expr_scanhexII_a #1% {% \ifcat #1\relax\xint_dothis{;\iffalse{\fi}#1}\fi \xint_orthat {\XINT_expr_scanhexII_aa #1}% }% \def\XINT_expr_scanhexII_aa #1% {% \if\ifnum`#1>`/ \ifnum`#1>`9 \ifnum`#1>`@ \ifnum`#1>`F 0\else1\fi\else0\fi\else1\fi\else0\fi 1% \expandafter\XINT_expr_scanhexII_b \else \if _#1\xint_dothis{\expandafter\XINT_expr_scanhexII_bgob}\fi \xint_orthat{;\iffalse{\fi\expandafter}}% \fi #1% }% \def\XINT_expr_scanhexII_b #1#2% {% #1\expandafter\XINT_expr_scanhexII_a\romannumeral`&&@#2% }% \def\XINT_expr_scanhexII_bgob #1#2% {% \expandafter\XINT_expr_scanhexII_a\romannumeral`&&@#2% }% \def\XINT_expr_startfunc #1{\expandafter\XINT_expr_func\expanded\bgroup#1\XINT_expr_scanfunc_a}% \def\XINT_expr_scanfunc_a #1% {% \expandafter\XINT_expr_scanfunc_b\romannumeral`&&@#1% }% \def\XINT_expr_scanfunc_b #1% {% \ifcat \relax#1\xint_dothis{\iffalse{\fi}(_#1}\fi \if (#1\xint_dothis{\iffalse{\fi}(`}\fi \if 1\ifcat a#10\fi \ifnum\xint_c_ix<1\string#1 0\fi \if @#10\fi \if _#10\fi 1% \xint_dothis{\iffalse{\fi}(_#1}\fi \xint_orthat {#1\XINT_expr_scanfunc_a}% }% \def\XINT_expr_func #1(#2{\if _#2\xint_dothis{\XINT_expr_op__{#1}}\fi \xint_orthat{{#1}\xint_c_ii^v #2}}% \def\XINT_tmpa #1#2#3{% \def #1##1% {% \csname XINT_\ifcsname XINT_#3_func_##1\endcsname #3_func_##1\expandafter\endcsname\romannumeral`&&@\expandafter#2% \romannumeral\else \ifcsname XINT_expr_onliteral_##1\endcsname expr_onliteral_##1\expandafter\endcsname\romannumeral \else \ifcsname XINT_expr_var*_##1\endcsname expr_var*_##1\expandafter\endcsname\romannumeral \else #3_func_\XINT_expr_unknown_function {##1}% \expandafter\endcsname\romannumeral`&&@\expandafter#2% \romannumeral \fi\fi\fi\xint_c_ }% }% \xintFor #1 in {expr,flexpr,iiexpr} \do {% \expandafter\XINT_tmpa \csname XINT_#1_op_`\expandafter\endcsname \csname XINT_#1_oparen\endcsname {#1}% }% \def\XINT_expr_unknown_function #1% {\XINT_expandableerror{`#1' is unknown, say `Isome_func' or I use 0.}}% \def\XINT_expr_func_ #1#2#3{#1#2{{0}}}% \let\XINT_flexpr_func_\XINT_expr_func_ \let\XINT_iiexpr_func_\XINT_expr_func_ \def\XINT_expr_op__ #1% op__ with two _'s {% \ifcsname XINT_expr_var*_#1\endcsname \csname XINT_expr_var_#1\expandafter\endcsname \romannumeral`&&@\expandafter\XINT_expr_getop \else \expandafter\expandafter\expandafter\XINT_expr_getop_legacy \csname XINT_expr_var_% \ifcsname XINT_expr_var_#1\endcsname#1\else\XINT_expr_unknown_variable{#1}\fi \expandafter\endcsname \fi }% \def\XINT_expr_unknown_variable #1% {\XINT_expandableerror {`#1' unknown, say `Isome_var' or I use 0.}}% \def\XINT_expr_var_{{{0}}}% \let\XINT_flexpr_op__ \XINT_expr_op__ \let\XINT_iiexpr_op__ \XINT_expr_op__ \def\XINT_expr_getop_legacy #1% {% \expanded{\unexpanded{{#1}}\expandafter}\romannumeral`&&@\XINT_expr_getop }% \def\XINT_expr_getop #1% {% \expandafter\XINT_expr_getop_a\romannumeral`&&@#1% }% \catcode`* 11 \def\XINT_expr_getop_a #1% {% \ifx \relax #1\xint_dothis\xint_firstofthree\fi \ifcat \relax #1\xint_dothis\xint_secondofthree\fi \ifnum\xint_c_ix<1\string#1 \xint_dothis\xint_secondofthree\fi \if :#1\xint_dothis \xint_thirdofthree\fi \if @#1\xint_dothis \xint_secondofthree\fi \if (#1\xint_dothis \xint_secondofthree\fi %) \ifcat a#1\xint_dothis \xint_secondofthree\fi \xint_orthat \xint_thirdofthree \xint_c_ {\XINT_expr_prec_tacit *}% \XINT_expr_getop_b #1% }% \catcode`* 12 \def\XINT_expr_foundend {\xint_c_ \relax}% \def\XINT_expr_getop_b#1{\def\XINT_expr_getop_b ##1% {% \if &&@##1\xint_dothis{#1&&@}\fi \if '##1\xint_dothis{\XINT_expr_binopwrd }\fi \if ?##1\xint_dothis{\XINT_expr_precedence_? ?}\fi \xint_orthat {\XINT_expr_scanop_a ##1}% }}\expandafter\XINT_expr_getop_b\csname XINT_expr_precedence_&&@\endcsname \def\XINT_expr_binopwrd #1'% {% \expandafter\XINT_expr_foundop_a \csname XINT_expr_itself_\xint_zapspaces #1 \xint_gobble_i\endcsname }% \def\XINT_expr_scanop_a #1#2% {% \expandafter\XINT_expr_scanop_b\expandafter#1\romannumeral`&&@#2% }% \def\XINT_expr_scanop_b #1#2% {% \unless\ifcat#2\relax \ifcsname XINT_expr_itself_#1#2\endcsname \XINT_expr_scanop_c \fi\fi \XINT_expr_foundop_a #1#2% }% \def\XINT_expr_scanop_c #1#2#3#4#5#6% #1#2=\fi\fi {% #1#2% \expandafter\XINT_expr_scanop_d\csname XINT_expr_itself_#4#5\expandafter\endcsname \romannumeral`&&@#6% }% \def\XINT_expr_scanop_d #1#2% {% \unless\ifcat#2\relax \ifcsname XINT_expr_itself_#1#2\endcsname \XINT_expr_scanop_c \fi\fi \XINT_expr_foundop #1#2% }% \def\XINT_expr_foundop_a #1% {% \ifcsname XINT_expr_precedence_#1\endcsname \csname XINT_expr_precedence_#1\expandafter\endcsname \expandafter #1% \else \expandafter\XINT_expr_getop\romannumeral`&&@% \xint_afterfi{\XINT_expandableerror {Expected an operator but got `#1'. Ignoring.}}% \fi }% \def\XINT_expr_foundop #1{\csname XINT_expr_precedence_#1\endcsname #1}% \catcode`) 11 \def\XINT_tmpa #1#2#3#4#5#6% {% \def#1% start {% \expandafter#2\romannumeral`&&@\XINT_expr_getnext }% \def#2##1% check {% \xint_UDsignfork ##1{\expandafter#3\romannumeral`&&@#4}% -{#3##1}% \krof }% \def#3##1##2% checkp {% \ifcase ##1% \expandafter\XINT_expr_done \or\expandafter#5% \else \expandafter#3\romannumeral`&&@\csname XINT_#6_op_##2\expandafter\endcsname \fi }% \def#5% {% \XINT_expandableerror {Extra ) removed. Hit , fingers crossed.}% \expandafter#2\romannumeral`&&@\expandafter\XINT_expr_put_op_first \romannumeral`&&@\XINT_expr_getop_legacy }% }% \let\XINT_expr_done\space \xintFor #1 in {expr,flexpr,iiexpr} \do {% \expandafter\XINT_tmpa \csname XINT_#1_start\expandafter\endcsname \csname XINT_#1_check\expandafter\endcsname \csname XINT_#1_checkp\expandafter\endcsname \csname XINT_#1_op_-xii\expandafter\endcsname \csname XINT_#1_extra_)\endcsname {#1}% }% \def\XINT_tmpa #1#2#3#4#5#6#7% {% \def #1##1% op_( {% \expandafter #4\romannumeral`&&@\XINT_expr_getnext }% \def #2##1% op_) {% \expanded{\unexpanded{\XINT_expr_put_op_first{##1}}\expandafter}\romannumeral`&&@\XINT_expr_getop }% \def #3% oparen {% \expandafter #4\romannumeral`&&@\XINT_expr_getnext }% \def #4##1% check- {% \xint_UDsignfork ##1{\expandafter#5\romannumeral`&&@#6}% -{#5##1}% \krof }% \def #5##1##2% checkp {% \ifcase ##1\expandafter\XINT_expr_missing_) \or \csname XINT_#7_op_##2\expandafter\endcsname \else \expandafter #5\romannumeral`&&@\csname XINT_#7_op_##2\expandafter\endcsname \fi }% }% \def\XINT_expr_missing_) {\XINT_expandableerror{End of expression found, but some ) was missing there.}% \xint_c_ \XINT_expr_done }% \xintFor #1 in {expr,flexpr,iiexpr} \do {% \expandafter\XINT_tmpa \csname XINT_#1_op_(\expandafter\endcsname \csname XINT_#1_op_)\expandafter\endcsname \csname XINT_#1_oparen\expandafter\endcsname \csname XINT_#1_check-_)\expandafter\endcsname \csname XINT_#1_checkp_)\expandafter\endcsname \csname XINT_#1_op_-xii\endcsname {#1}% }% \let\XINT_expr_precedence_)\xint_c_i \catcode`) 12 \def\XINT_tmpa #1#2#3#4#5#6% {% \def #1##1% \XINT_expr_op_, {% \expanded{\unexpanded{#2{##1}}\expandafter}% \romannumeral`&&@\expandafter#3\romannumeral`&&@\XINT_expr_getnext }% \def #2##1##2##3##4{##2##3{##1##4}}% \XINT_expr_exec_, \def #3##1% \XINT_expr_check-_, {% \xint_UDsignfork ##1{\expandafter#4\romannumeral`&&@#5}% -{#4##1}% \krof }% \def #4##1##2% \XINT_expr_checkp_, {% \ifnum ##1>\xint_c_iii \expandafter#4% \romannumeral`&&@\csname XINT_#6_op_##2\expandafter\endcsname \else \expandafter##1\expandafter##2% \fi }% }% \xintFor #1 in {expr,flexpr,iiexpr} \do {% \expandafter\XINT_tmpa \csname XINT_#1_op_,\expandafter\endcsname \csname XINT_#1_exec_,\expandafter\endcsname \csname XINT_#1_check-_,\expandafter\endcsname \csname XINT_#1_checkp_,\expandafter\endcsname \csname XINT_#1_op_-xii\endcsname {#1}% }% \expandafter\let\csname XINT_expr_precedence_,\endcsname\xint_c_iii \def\XINT_tmpb #1#2#3#4#5#6#7% {% \def #1% \XINT_expr_op_- {% \expandafter #2\romannumeral`&&@\expandafter#3% \romannumeral`&&@\XINT_expr_getnext }% \def #2##1##2##3% \XINT_expr_exec_- {% \expandafter ##1\expandafter ##2\expandafter {% \romannumeral`&&@\XINT:NEhook:f:one:from:one {\romannumeral`&&@#7##3}% }% }% \def #3##1% \XINT_expr_check-_- {% \xint_UDsignfork ##1{\expandafter #4\romannumeral`&&@#1}% -{#4##1}% \krof }% \def #4##1##2% \XINT_expr_checkp_- {% \ifnum ##1>#5% \expandafter #4% \romannumeral`&&@\csname XINT_#6_op_##2\expandafter\endcsname \else \expandafter ##1\expandafter ##2% \fi }% }% \def\XINT_tmpa #1#2#3% {% \expandafter\XINT_tmpb \csname XINT_#1_op_-#3\expandafter\endcsname \csname XINT_#1_exec_-#3\expandafter\endcsname \csname XINT_#1_check-_-#3\expandafter\endcsname \csname XINT_#1_checkp_-#3\expandafter\endcsname \csname xint_c_#3\endcsname {#1}#2% }% \xintApplyInline{\XINT_tmpa {expr}\xintOpp}{{xii}{xiv}{xvii}}% \xintApplyInline{\XINT_tmpa {flexpr}\xintOpp}{{xii}{xiv}{xvii}}% \xintApplyInline{\XINT_tmpa {iiexpr}\xintiiOpp}{{xii}{xiv}{xvii}}% \def\XINT_tmpa#1#2#3% {% \def#1##1{\expandafter#2\romannumeral`&&@\XINT_expr_getnext}% \def#2##1##2% {% \ifnum ##1>\xint_c_xx \expandafter #2% \romannumeral`&&@\csname XINT_#3_op_##2\expandafter\endcsname \else \expandafter##1\expandafter##2\romannumeral0\expandafter\XINT:NEhook:unpack \fi }% }% \def\XINT:NEhook:unpack{\xint_stop_atfirstofone}% \xintFor* #1 in {{expr}{flexpr}{iiexpr}}: {\expandafter\XINT_tmpa\csname XINT_#1_op_0\expandafter\endcsname \csname XINT_#1_until_unpack\endcsname {#1}}% \catcode`& 12 \catcode`! 12 \xintFor* #1 in {{==}{!=}{<=}{>=}{&&}{||}{//}{/:}{..}{..[}{].}{]..}}% \do {\expandafter\def\csname XINT_expr_itself_#1\endcsname {#1}}% \catcode`& 7 \catcode`! 11 \def\XINT_expr_defbin_c #1#2#3#4#5#6#7#8% {% \def #1##1% \XINT_expr_op_ {% \expanded{\unexpanded{#2{##1}}\expandafter}% \romannumeral`&&@\expandafter#3\romannumeral`&&@\XINT_expr_getnext }% \def #2##1##2##3##4% \XINT_expr_exec_ {% \expandafter##2\expandafter##3\expandafter {\romannumeral`&&@\XINT:NEhook:f:one:from:two{\romannumeral`&&@#7##1##4}}% }% \def #3##1% \XINT_expr_check-_ {% \xint_UDsignfork ##1{\expandafter#4\romannumeral`&&@#5}% -{#4##1}% \krof }% \def #4##1##2% \XINT_expr_checkp_ {% \ifnum ##1>#6% \expandafter#4% \romannumeral`&&@\csname XINT_#8_op_##2\expandafter\endcsname \else \expandafter ##1\expandafter ##2% \fi }% }% \def\XINT_expr_defbin_b #1#2#3#4#5% {% \expandafter\XINT_expr_defbin_c \csname XINT_#1_op_#2\expandafter\endcsname \csname XINT_#1_exec_#2\expandafter\endcsname \csname XINT_#1_check-_#2\expandafter\endcsname \csname XINT_#1_checkp_#2\expandafter\endcsname \csname XINT_#1_op_-\romannumeral\ifnum#4>12 #4\else12\fi\expandafter\endcsname \csname xint_c_\romannumeral#4\endcsname #5% {#1}% \expandafter % done 3 times but well \let\csname XINT_expr_precedence_#2\expandafter\endcsname \csname xint_c_\romannumeral#3\endcsname }% \XINT_expr_defbin_b {expr} {||} {6} {6} \xintOR \XINT_expr_defbin_b {flexpr}{||} {6} {6} \xintOR \XINT_expr_defbin_b {iiexpr}{||} {6} {6} \xintOR \catcode`& 12 \XINT_expr_defbin_b {expr} {&&} {8} {8} \xintAND \XINT_expr_defbin_b {flexpr}{&&} {8} {8} \xintAND \XINT_expr_defbin_b {iiexpr}{&&} {8} {8} \xintAND \catcode`& 7 \XINT_expr_defbin_b {expr} {xor}{6} {6} \xintXOR \XINT_expr_defbin_b {flexpr}{xor}{6} {6} \xintXOR \XINT_expr_defbin_b {iiexpr}{xor}{6} {6} \xintXOR \XINT_expr_defbin_b {expr} {//} {14}{14}\xintDivFloor \XINT_expr_defbin_b {flexpr}{//} {14}{14}\XINTinFloatDivFloor \XINT_expr_defbin_b {iiexpr}{//} {14}{14}\xintiiDivFloor \XINT_expr_defbin_b {expr} {/:} {14}{14}\xintMod \XINT_expr_defbin_b {flexpr}{/:} {14}{14}\XINTinFloatMod \XINT_expr_defbin_b {iiexpr}{/:} {14}{14}\xintiiMod \XINT_expr_defbin_b {expr} + {12}{12}\xintAdd \XINT_expr_defbin_b {flexpr} + {12}{12}\XINTinFloatAdd \XINT_expr_defbin_b {iiexpr} + {12}{12}\xintiiAdd \XINT_expr_defbin_b {expr} - {12}{12}\xintSub \XINT_expr_defbin_b {flexpr} - {12}{12}\XINTinFloatSub \XINT_expr_defbin_b {iiexpr} - {12}{12}\xintiiSub \XINT_expr_defbin_b {expr} * {14}{14}\xintMul \XINT_expr_defbin_b {flexpr} * {14}{14}\XINTinFloatMul \XINT_expr_defbin_b {iiexpr} * {14}{14}\xintiiMul \let\XINT_expr_prec_tacit \xint_c_xvi \XINT_expr_defbin_b {expr} / {14}{14}\xintDiv \XINT_expr_defbin_b {flexpr} / {14}{14}\XINTinFloatDiv \XINT_expr_defbin_b {iiexpr} / {14}{14}\xintiiDivRound \XINT_expr_defbin_b {expr} ^ {18}{17}\xintPow \XINT_expr_defbin_b {flexpr} ^ {18}{17}\XINTinFloatSciPow \XINT_expr_defbin_b {iiexpr} ^ {18}{17}\xintiiPow \expandafter\def\csname XINT_expr_itself_**\endcsname{^}% \catcode`& 12 \xintFor #1 in {and,or,xor,mod} \do {% \expandafter\def\csname XINT_expr_itself_#1\endcsname {#1}% }% \expandafter\let\csname XINT_expr_precedence_and\expandafter\endcsname \csname XINT_expr_precedence_&&\endcsname \expandafter\let\csname XINT_expr_precedence_or\expandafter\endcsname \csname XINT_expr_precedence_||\endcsname \expandafter\let\csname XINT_expr_precedence_mod\expandafter\endcsname \csname XINT_expr_precedence_/:\endcsname \xintFor #1 in {expr, flexpr, iiexpr} \do {% \expandafter\let\csname XINT_#1_op_and\expandafter\endcsname \csname XINT_#1_op_&&\endcsname \expandafter\let\csname XINT_#1_op_or\expandafter\endcsname \csname XINT_#1_op_||\endcsname \expandafter\let\csname XINT_#1_op_mod\expandafter\endcsname \csname XINT_#1_op_/:\endcsname }% \catcode`& 7 \def\XINT_expr_defbin_c #1#2#3#4#5#6#7% {% \def #1##1% \XINT_expr_op_..[ {% \expanded{\unexpanded{#2{##1}}\expandafter}% \romannumeral`&&@\expandafter#3\romannumeral`&&@\XINT_expr_getnext }% \def #2##1##2##3##4% \XINT_expr_exec_..[ {% ##2##3{{##1##4}}% }% \def #3##1% \XINT_expr_check-_..[ {% \xint_UDsignfork ##1{\expandafter#4\romannumeral`&&@#5}% -{#4##1}% \krof }% \def #4##1##2% \XINT_expr_checkp_..[ {% \ifnum ##1>#6% \expandafter#4% \romannumeral`&&@\csname XINT_#7_op_##2\expandafter\endcsname \else \expandafter ##1\expandafter ##2% \fi }% }% \def\XINT_expr_defbin_b #1% {% \expandafter\XINT_expr_defbin_c \csname XINT_#1_op_..[\expandafter\endcsname \csname XINT_#1_exec_..[\expandafter\endcsname \csname XINT_#1_check-_..[\expandafter\endcsname \csname XINT_#1_checkp_..[\expandafter\endcsname \csname XINT_#1_op_-xii\expandafter\endcsname \csname XINT_expr_precedence_..[\endcsname {#1}% }% \XINT_expr_defbin_b {expr}% \XINT_expr_defbin_b {flexpr}% \XINT_expr_defbin_b {iiexpr}% \expandafter\let\csname XINT_expr_precedence_..[\endcsname\xint_c_vi \def\XINT_expr_defbin_c #1#2#3#4#5#6#7#8% {% \def #1##1% \XINT_expr_op_ {% \expanded{\unexpanded{#2{##1}}\expandafter}% \romannumeral`&&@\expandafter#3\romannumeral`&&@\XINT_expr_getnext }% \def #2##1##2##3##4% \XINT_expr_exec_ {% \expandafter##2\expandafter##3\expanded {{\XINT:NEhook:x:one:from:two#8##1##4}}% }% \def #3##1% \XINT_expr_check-_ {% \xint_UDsignfork ##1{\expandafter#4\romannumeral`&&@#5}% -{#4##1}% \krof }% \def #4##1##2% \XINT_expr_checkp_ {% \ifnum ##1>#6% \expandafter#4% \romannumeral`&&@\csname XINT_#7_op_##2\expandafter\endcsname \else \expandafter ##1\expandafter ##2% \fi }% }% \def\XINT_expr_defbin_b #1#2#3% {% \expandafter\XINT_expr_defbin_c \csname XINT_#1_op_#2\expandafter\endcsname \csname XINT_#1_exec_#2\expandafter\endcsname \csname XINT_#1_check-_#2\expandafter\endcsname \csname XINT_#1_checkp_#2\expandafter\endcsname \csname XINT_#1_op_-xii\expandafter\endcsname \csname XINT_expr_precedence_#2\endcsname {#1}#3% \expandafter\let \csname XINT_expr_precedence_#2\expandafter\endcsname\xint_c_vi }% \XINT_expr_defbin_b {expr} {..}\xintSeq:tl:x \XINT_expr_defbin_b {flexpr} {..}\xintSeq:tl:x \XINT_expr_defbin_b {iiexpr} {..}\xintiiSeq:tl:x \XINT_expr_defbin_b {expr} {]..}\xintSeqB:tl:x \XINT_expr_defbin_b {flexpr}{]..}\xintSeqB:tl:x \XINT_expr_defbin_b {iiexpr}{]..}\xintiiSeqB:tl:x \def\XINT_expr_defbin_d #1#2% {% \def #1##1##2##3##4% \XINT_expr_exec_ {% \expandafter##2\expandafter##3\expandafter {\romannumeral`&&@\XINT:NEhook:f:one:from:two{\romannumeral`&&@#2##1##4}}% }% }% \def\XINT_expr_defbin_c #1#2#3#4#5#6#7#8#9% {% \def #1##1% \XINT_expr_op_ {% \expanded{\unexpanded{#2{##1}}\expandafter}% \romannumeral`&&@\expandafter#7% \romannumeral`&&@\expandafter#3\romannumeral`&&@\XINT_expr_getnext }% \def #3##1% \XINT_expr_check-_ {% \xint_UDsignfork ##1{\expandafter#4\romannumeral`&&@#5}% -{#4##1}% \krof }% \def #4##1##2% \XINT_expr_checkp_ {% \ifnum ##1>#6% \expandafter#4% \romannumeral`&&@\csname XINT_#9_op_##2\expandafter\endcsname \else \expandafter ##1\expandafter ##2% \fi }% \let #6\xint_c_x \def #7##1% \XINT_expr_checkc_ {% \ifnum ##1=\xint_c_x\expandafter#8\fi ##1% }% \edef #8##1##2##3% \XINT_expr_execc_ {% \csname XINT_#9_precedence_\string&\string&\endcsname \expandafter\noexpand\csname XINT_#9_itself_\string&\string&\endcsname {##3}% \XINTfstop.{##3}##2% }% \XINT_expr_defbin_d #2% \XINT_expr_exec_ }% \def\XINT_expr_defbin_b #1#2%#3% {% \expandafter\XINT_expr_defbin_c \csname XINT_#1_op_#2\expandafter\endcsname \csname XINT_#1_exec_#2\expandafter\endcsname \csname XINT_#1_check-_#2\expandafter\endcsname \csname XINT_#1_checkp_#2\expandafter\endcsname \csname XINT_#1_op_-xii\expandafter\endcsname \csname XINT_expr_precedence_#2\expandafter\endcsname \csname XINT_#1_checkc_#2\expandafter\endcsname \csname XINT_#1_execc_#2\endcsname {#1}%#3% }% \XINT_expr_defbin_b {expr} <\xintLt \XINT_expr_defbin_b {flexpr}<\xintLt \XINT_expr_defbin_b {iiexpr}<\xintiiLt \XINT_expr_defbin_b {expr} >\xintGt \XINT_expr_defbin_b {flexpr}>\xintGt \XINT_expr_defbin_b {iiexpr}>\xintiiGt \XINT_expr_defbin_b {expr} {==}\xintEq \XINT_expr_defbin_b {flexpr}{==}\xintEq \XINT_expr_defbin_b {iiexpr}{==}\xintiiEq \XINT_expr_defbin_b {expr} {<=}\xintLtorEq \XINT_expr_defbin_b {flexpr}{<=}\xintLtorEq \XINT_expr_defbin_b {iiexpr}{<=}\xintiiLtorEq \XINT_expr_defbin_b {expr} {>=}\xintGtorEq \XINT_expr_defbin_b {flexpr}{>=}\xintGtorEq \XINT_expr_defbin_b {iiexpr}{>=}\xintiiGtorEq \XINT_expr_defbin_b {expr} {!=}\xintNotEq \XINT_expr_defbin_b {flexpr}{!=}\xintNotEq \XINT_expr_defbin_b {iiexpr}{!=}\xintiiNotEq \def\xintSeq:tl:x #1#2% {% \expandafter\XINT_Seq:tl:x \the\numexpr \xintiCeil{#1}\expandafter.\the\numexpr \xintiFloor{#2}.% }% \def\XINT_Seq:tl:x #1.#2.% {% \ifnum #2=#1 \xint_dothis\XINT_Seq:tl:x_z\fi \ifnum #2<#1 \xint_dothis\XINT_Seq:tl:x_n\fi \xint_orthat\XINT_Seq:tl:x_p #1.#2.% }% \def\XINT_Seq:tl:x_z #1.#2.{{#1/1[0]}}% \def\XINT_Seq:tl:x_p #1.#2.% {% {#1/1[0]}\ifnum #1=#2 \XINT_Seq:tl:x_e\fi \expandafter\XINT_Seq:tl:x_p \the\numexpr #1+\xint_c_i.#2.% }% \def\XINT_Seq:tl:x_n #1.#2.% {% {#1/1[0]}\ifnum #1=#2 \XINT_Seq:tl:x_e\fi \expandafter\XINT_Seq:tl:x_n \the\numexpr #1-\xint_c_i.#2.% }% \def\XINT_Seq:tl:x_e#1#2.#3.{#1}% \def\xintiiSeq:tl:x #1#2% {% \expandafter\XINT_iiSeq:tl:x \the\numexpr \xintiCeil{#1}\expandafter.\the\numexpr \xintiFloor{#2}.% }% \def\XINT_iiSeq:tl:x #1.#2.% {% \ifnum #2=#1 \xint_dothis\XINT_iiSeq:tl:x_z\fi \ifnum #2<#1 \xint_dothis\XINT_iiSeq:tl:x_n\fi \xint_orthat\XINT_iiSeq:tl:x_p #1.#2.% }% \def\XINT_iiSeq:tl:x_z #1.#2.{{#1}}% \def\XINT_iiSeq:tl:x_p #1.#2.% {% {#1}\ifnum #1=#2 \XINT_Seq:tl:x_e\fi \expandafter\XINT_iiSeq:tl:x_p \the\numexpr #1+\xint_c_i.#2.% }% \def\XINT_iiSeq:tl:x_n #1.#2.% {% {#1}\ifnum #1=#2 \XINT_Seq:tl:x_e\fi \expandafter\XINT_iiSeq:tl:x_n \the\numexpr #1-\xint_c_i.#2.% }% \def\xintSeqA {\expandafter\XINT_SeqA\romannumeral0\xintraw}% \def\xintiiSeqA #1{\expandafter\XINT_iiSeqA\romannumeral`&&@#1;}% \def\XINT_SeqA #1]#2{\expandafter\XINT_SeqA_a\romannumeral0\xintraw {#2}#1]}% \def\XINT_iiSeqA#1;#2{\expandafter\XINT_SeqA_a\romannumeral`&&@#2;#1;}% \def\XINT_SeqA_a #1{\xint_UDzerominusfork #1-{z}% 0#1{n}% 0-{p}% \krof #1}% \def\xintSeqB:tl:x #1{\expandafter\XINT_SeqB:tl:x\romannumeral`&&@\xintSeqA#1}% \def\XINT_SeqB:tl:x #1{\csname XINT_SeqB#1:tl:x\endcsname}% \def\XINT_SeqBz:tl:x #1]#2]#3{{#2]}}% \def\XINT_SeqBp:tl:x #1]#2]#3{\expandafter\XINT_SeqBp:tl:x_a\romannumeral0\xintraw{#3}#2]#1]}% \def\XINT_SeqBp:tl:x_a #1]#2]#3]% {% \xintifCmp{#1]}{#2]}% {}{{#2]}}{{#2]}\expandafter\XINT_SeqBp:tl:x_b\romannumeral0\xintadd{#3]}{#2]}#1]#3]}% }% \def\XINT_SeqBp:tl:x_b #1]#2]#3]% {% \xintifCmp{#1]}{#2]}% {{#1]}\expandafter\XINT_SeqBp:tl:x_b\romannumeral0\xintadd{#3]}{#1]}#2]#3]}{{#1]}}{}% }% \def\XINT_SeqBn:tl:x #1]#2]#3{\expandafter\XINT_SeqBn:tl:x_a\romannumeral0\xintraw{#3}#2]#1]}% \def\XINT_SeqBn:tl:x_a #1]#2]#3]% {% \xintifCmp{#1]}{#2]}% {{#2]}\expandafter\XINT_SeqBn:tl:x_b\romannumeral0\xintadd{#3]}{#2]}#1]#3]}{{#2]}}{}% }% \def\XINT_SeqBn:tl:x_b #1]#2]#3]% {% \xintifCmp{#1]}{#2]}% {}{{#1]}}{{#1]}\expandafter\XINT_SeqBn:tl:x_b\romannumeral0\xintadd{#3]}{#1]}#2]#3]}% }% \def\xintiiSeqB:tl:x #1{\expandafter\XINT_iiSeqB:tl:x\romannumeral`&&@\xintiiSeqA#1}% \def\XINT_iiSeqB:tl:x #1{\csname XINT_iiSeqB#1:tl:x\endcsname}% \def\XINT_iiSeqBz:tl:x #1;#2;#3{{#2}}% \def\XINT_iiSeqBp:tl:x #1;#2;#3{\expandafter\XINT_iiSeqBp:tl:x_a\romannumeral`&&@#3;#2;#1;}% \def\XINT_iiSeqBp:tl:x_a #1;#2;#3;% {% \xintiiifCmp{#1}{#2}% {}{{#2}}{{#2}\expandafter\XINT_iiSeqBp:tl:x_b\romannumeral0\xintiiadd{#3}{#2};#1;#3;}% }% \def\XINT_iiSeqBp:tl:x_b #1;#2;#3;% {% \xintiiifCmp{#1}{#2}% {{#1}\expandafter\XINT_iiSeqBp:tl:x_b\romannumeral0\xintiiadd{#3}{#1};#2;#3;}{{#1}}{}% }% \def\XINT_iiSeqBn:tl:x #1;#2;#3{\expandafter\XINT_iiSeqBn:tl:x_a\romannumeral`&&@#3;#2;#1;}% \def\XINT_iiSeqBn:tl:x_a #1;#2;#3;% {% \xintiiifCmp{#1}{#2}% {{#2}\expandafter\XINT_iiSeqBn:tl:x_b\romannumeral0\xintiiadd{#3}{#2};#1;#3;}{{#2}}{}% }% \def\XINT_iiSeqBn:tl:x_b #1;#2;#3;% {% \xintiiifCmp{#1}{#2}% {}{{#1}}{{#1}\expandafter\XINT_iiSeqBn:tl:x_b\romannumeral0\xintiiadd{#3}{#1};#2;#3;}% }% \def\XINT_expr_itself_obracket{obracket}% \catcode`] 11 \catcode`[ 11 \def\XINT_expr_defbin_c #1#2#3#4#5#6% {% \def #1##1% {% \expandafter#3\romannumeral`&&@\XINT_expr_getnext }% \def #2##1% op_] {% \expanded{\unexpanded{\XINT_expr_put_op_first{{##1}}}\expandafter}% \romannumeral`&&@\XINT_expr_getop }% \def #3##1% until_cbracket_a {% \xint_UDsignfork ##1{\expandafter#4\romannumeral`&&@#5}% #5 = op_-xii -{#4##1}% \krof }% \def #4##1##2% until_cbracket_b {% \ifcase ##1\expandafter\XINT_expr_missing_] \or \expandafter\XINT_expr_missing_] \or \expandafter#2% \else \expandafter #4% \romannumeral`&&@\csname XINT_#6_op_##2\expandafter\endcsname \fi }% }% \def\XINT_expr_defbin_b #1% {% \expandafter\XINT_expr_defbin_c \csname XINT_#1_op_obracket\expandafter\endcsname \csname XINT_#1_op_]\expandafter\endcsname \csname XINT_#1_until_cbracket_a\expandafter\endcsname \csname XINT_#1_until_cbracket_b\expandafter\endcsname \csname XINT_#1_op_-xii\endcsname {#1}% }% \XINT_expr_defbin_b {expr}% \XINT_expr_defbin_b {flexpr}% \XINT_expr_defbin_b {iiexpr}% \def\XINT_expr_missing_] {\XINT_expandableerror{Ooops, looks like we are missing a ]. Aborting!}% \xint_c_ \XINT_expr_done}% \let\XINT_expr_precedence_]\xint_c_ii \def\XINT_expr_defbin_c #1#2#3#4#5#6% {% \def #1##1% \XINT_expr_op_[ {% \expanded{\unexpanded{#2{##1}}\expandafter}% \romannumeral`&&@\expandafter#3\romannumeral`&&@\XINT_expr_getnext }% \def #2##1##2##3##4% \XINT_expr_exec_] {% \expandafter\XINT_expr_put_op_first \expanded {% {\XINT:NEhook:x:listsel\XINT_ListSel_top ##1__##4&({##1}\expandafter}% \expandafter }% \romannumeral`&&@\XINT_expr_getop }% \def #3##1% \XINT_expr_check-_] {% \xint_UDsignfork ##1{\expandafter#4\romannumeral`&&@#5}% -{#4##1}% \krof }% \def #4##1##2% \XINT_expr_checkp_] {% \ifcase ##1\XINT_expr_missing_] \or \XINT_expr_missing_] \or \expandafter##1\expandafter##2% \else \expandafter#4% \romannumeral`&&@\csname XINT_#6_op_##2\expandafter\endcsname \fi }% }% \let\XINT_expr_precedence_[ \xint_c_xx \def\XINT_expr_defbin_b #1% {% \expandafter\XINT_expr_defbin_c \csname XINT_#1_op_[\expandafter\endcsname \csname XINT_#1_exec_]\expandafter\endcsname \csname XINT_#1_check-_]\expandafter\endcsname \csname XINT_#1_checkp_]\expandafter\endcsname \csname XINT_#1_op_-xii\endcsname {#1}% }% \XINT_expr_defbin_b {expr}% \XINT_expr_defbin_b {flexpr}% \XINT_expr_defbin_b {iiexpr}% \catcode`] 12 \catcode`[ 12 \def\XINT_expr_defbin_c #1#2#3#4#5#6% {% \def #1##1% \XINT_expr_op_: {% \expanded{\unexpanded{#2{##1}}\expandafter}% \romannumeral`&&@\expandafter#3\romannumeral`&&@\XINT_expr_getnext }% \def #2##1##2##3##4% \XINT_expr_exec_: {% ##2##3{:##1{0};##4:_}% }% \def #3##1% \XINT_expr_check-_: {\xint_UDsignfork ##1{\expandafter#4\romannumeral`&&@#5}% -{#4##1}% \krof }% \def #4##1##2% \XINT_expr_checkp_: {% \ifnum ##1>\XINT_expr_precedence_: \expandafter #4\romannumeral`&&@% \csname XINT_#6_op_##2\expandafter\endcsname \else \expandafter##1\expandafter##2% \fi }% }% \let\XINT_expr_precedence_: \xint_c_vi \def\XINT_expr_defbin_b #1% {% \expandafter\XINT_expr_defbin_c \csname XINT_#1_op_:\expandafter\endcsname \csname XINT_#1_exec_:\expandafter\endcsname \csname XINT_#1_check-_:\expandafter\endcsname \csname XINT_#1_checkp_:\expandafter\endcsname \csname XINT_#1_op_-xii\endcsname {#1}% }% \XINT_expr_defbin_b {expr}% \XINT_expr_defbin_b {flexpr}% \XINT_expr_defbin_b {iiexpr}% \def\XINT_ListSel_deeper #1% {% \if :#1\xint_dothis\XINT_ListSel_slice_next\fi \xint_orthat {\XINT_ListSel_extract_next {#1}}% }% \def\XINT_ListSel_slice_next #1(% {% \xintApply{\XINT_ListSel_recurse{:#1}}% }% \def\XINT_ListSel_extract_next #1(% {% \xintApplyUnbraced{\XINT_ListSel_recurse{#1}}% }% \def\XINT_ListSel_recurse #1#2% {% \XINT_ListSel_check #2__#1({#2}\expandafter\empty\empty }% \def\XINT_ListSel_check{\expandafter\XINT_ListSel_check_a \string}% \def\XINT_ListSel_check_a #1% {% \if #1\bgroup\xint_dothis\XINT_ListSel_check_is_ok\fi \xint_orthat\XINT_ListSel_check_leaf }% \def\XINT_ListSel_check_leaf #1\expandafter{\expandafter}% \def\XINT_ListSel_check_is_ok {% \expandafter\XINT_ListSel_check_is_ok_a\expandafter{\string}% }% \def\XINT_ListSel_check_is_ok_a #1__#2% {% \if :#2\xint_dothis{\XINT_ListSel_slice}\fi \xint_orthat {\XINT_ListSel_nthone {#2}}% }% \def\XINT_ListSel_top #1#2% {% \if _\noexpand#2% \expandafter\XINT_ListSel_top_one_or_none\string#1.\else \expandafter\XINT_ListSel_top_at_least_two\fi }% \def\XINT_ListSel_top_at_least_two #1__{\XINT_ListSel_top_ople}% \def\XINT_ListSel_top_one_or_none #1% {% \if #1_\xint_dothis\XINT_ListSel_top_nil\fi \if #1.\xint_dothis\XINT_ListSel_top_nutple_a\fi \if #1\bgroup\xint_dothis\XINT_ListSel_top_nutple\fi \xint_orthat\XINT_ListSel_top_number }% \def\XINT_ListSel_top_nil #1\expandafter#2\expandafter{\fi\expandafter}% \def\XINT_ListSel_top_nutple {% \expandafter\XINT_ListSel_top_nutple_a\expandafter{\string}% }% \def\XINT_ListSel_top_nutple_a #1_#2#3(#4% {% \fi\if :#2\xint_dothis{{\XINT_ListSel_slice #3(#4}}\fi \xint_orthat {\XINT_ListSel_nthone {#2}#3(#4}% }% \def\XINT_ListSel_top_number #1_{\fi\XINT_ListSel_top_ople}% \def\XINT_ListSel_top_ople #1% {% \if :#1\xint_dothis\XINT_ListSel_slice\fi \xint_orthat {\XINT_ListSel_nthone {#1}}% }% \def\XINT_ListSel_slice #1% {% \expandafter\XINT_ListSel_slice_a \expandafter{\romannumeral0\xintnum{#1}}% }% \def\XINT_ListSel_slice_a #1#2;#3#4% {% \if _#4\expandafter\XINT_ListSel_s_b \else\expandafter\XINT_ListSel_slice_b\fi #1;#3% }% \def\XINT_ListSel_s_b #1#2;#3#4% {% \if \expandafter\XINT_ListSel_s_last\fi \XINT_ListSel_s_c #1{#1#2}{#4}% }% \def\XINT_ListSel_s_last\XINT_ListSel_s_c #1#2#3(#4% {% \if-#1\expandafter\xintKeep\else\expandafter\xintTrim\fi {#2}{#4}% }% \def\XINT_ListSel_s_c #1#2#3(#4% {% \expandafter\XINT_ListSel_deeper \expanded{\unexpanded{#3}(\expandafter}\expandafter{% \romannumeral0% \if-#1\expandafter\xintkeep\else\expandafter\xinttrim\fi {#2}{#4}}% }% \def\XINT_ListSel_nthone #1#2% {% \if \expandafter\XINT_ListSel_nthone_last\fi \XINT_ListSel_nthone_a {#1}{#2}% }% \def\XINT_ListSel_nthone_a #1#2(#3% {% \expandafter\XINT_ListSel_deeper \expanded{\unexpanded{#2}(\expandafter}\expandafter{% \romannumeral0\expandafter\XINT_nthonepy_a\the\numexpr\xintNum{#1}.{#3}}% }% \def\XINT_ListSel_nthone_last\XINT_ListSel_nthone_a #1#2(%#3% {% \romannumeral0\expandafter\XINT_nthonepy_a\the\numexpr\xintNum{#1}.%{#3} }% \def\XINT_ListSel_slice_b #1;#2_#3% {% \if \expandafter\XINT_ListSel_slice_last\fi \expandafter\XINT_ListSel_slice_c \expandafter{\romannumeral0\xintnum{#2}};#1;{#3}% }% \def\XINT_ListSel_slice_last\expandafter\XINT_ListSel_slice_c #1;#2;#3(%#4 {% \expandafter\XINT_ListSel_slice_last_c #1;#2;%{#4} }% \def\XINT_ListSel_slice_last_c #1;#2;#3% {% \romannumeral0\XINT_ListSel_slice_d #2;#1;{#3}% }% \def\XINT_ListSel_slice_c #1;#2;#3(#4% {% \expandafter\XINT_ListSel_deeper \expanded{\unexpanded{#3}(\expandafter}\expandafter{% \romannumeral0\XINT_ListSel_slice_d #2;#1;{#4}}% }% \def\XINT_ListSel_slice_d #1#2;#3#4;% {% \xint_UDsignsfork #1#3\XINT_ListSel_N:N #1-\XINT_ListSel_N:P -#3\XINT_ListSel_P:N --\XINT_ListSel_P:P \krof #1#2;#3#4;% }% \def\XINT_ListSel_P:P #1;#2;#3% {% \unless\ifnum #1<#2 \expandafter\xint_gob_andstop_iii\fi \xintkeep{#2-#1}{\xintTrim{#1}{#3}}% }% \def\XINT_ListSel_N:N #1;#2;#3% {% \expandafter\XINT_ListSel_N:N_a \the\numexpr #2-#1\expandafter;\the\numexpr#1+\xintLength{#3};{#3}% }% \def\XINT_ListSel_N:N_a #1;#2;#3% {% \unless\ifnum #1>\xint_c_ \expandafter\xint_gob_andstop_iii\fi \xintkeep{#1}{\xintTrim{\ifnum#2<\xint_c_\xint_c_\else#2\fi}{#3}}% }% \def\XINT_ListSel_N:P #1;#2;#3% {% \expandafter\XINT_ListSel_N:P_a \the\numexpr #1+\xintLength{#3};#2;{#3}% }% \def\XINT_ListSel_N:P_a #1#2;% {\if -#1\expandafter\XINT_ListSel_O:P\fi\XINT_ListSel_P:P #1#2;}% \def\XINT_ListSel_O:P\XINT_ListSel_P:P #1;{\XINT_ListSel_P:P 0;}% \def\XINT_ListSel_P:N #1;#2;#3% {% \expandafter\XINT_ListSel_P:N_a \the\numexpr #2+\xintLength{#3};#1;{#3}% }% \def\XINT_ListSel_P:N_a #1#2;#3;% {\if -#1\expandafter\XINT_ListSel_P:O\fi\XINT_ListSel_P:P #3;#1#2;}% \def\XINT_ListSel_P:O\XINT_ListSel_P:P #1;#2;{\XINT_ListSel_P:P #1;0;}% \catcode0 11 \let\XINT_expr_precedence_&&@ \xint_c_xiv \def\XINT_expr_op_&&@ #1#2]% {% \expandafter\XINT_expr_put_op_first \expanded{{{\xintE#1{\xint_zapspaces #2 \xint_gobble_i}}}% \expandafter}\romannumeral`&&@\XINT_expr_getop }% \def\XINT_iiexpr_op_&&@ #1#2]% {% \expandafter\XINT_expr_put_op_first \expanded{{{\xintiiE#1{\xint_zapspaces #2 \xint_gobble_i}}}% \expandafter}\romannumeral`&&@\XINT_expr_getop }% \def\XINT_flexpr_op_&&@ #1#2]% {% \expandafter\XINT_expr_put_op_first \expanded{{{\XINTinFloatE#1{\xint_zapspaces #2 \xint_gobble_i}}}% \expandafter}\romannumeral`&&@\XINT_expr_getop }% \catcode0 12 \let\XINT_expr_precedence_? \xint_c_xx \catcode`- 11 \def\XINT_expr_op_? {\XINT_expr_op__? \XINT_expr_op_-xii}% \def\XINT_flexpr_op_?{\XINT_expr_op__? \XINT_flexpr_op_-xii}% \def\XINT_iiexpr_op_?{\XINT_expr_op__? \XINT_iiexpr_op_-xii}% \catcode`- 12 \def\XINT_expr_op__? #1#2#3% {\XINT_expr_op__?_a #3!\xint_bye\XINT_expr_exec_? {#1}{#2}{#3}}% \def\XINT_expr_op__?_a #1{\expandafter\XINT_expr_op__?_b\detokenize{#1}}% \def\XINT_expr_op__?_b #1% {\if ?#1\expandafter\XINT_expr_op__?_c\else\expandafter\xint_bye\fi }% \def\XINT_expr_op__?_c #1{\xint_gob_til_! #1\XINT_expr_op_?? !\xint_bye}% \def\XINT_expr_op_?? !\xint_bye\xint_bye\XINT_expr_exec_?{\XINT_expr_exec_??}% \catcode`- 11 \def\XINT_expr_exec_? #1#2% {% \expandafter\XINT_expr_check-_after?\expandafter#1% \romannumeral`&&@\expandafter\XINT_expr_getnext\romannumeral0\xintiiifnotzero#2% }% \def\XINT_expr_exec_?? #1#2#3% {% \expandafter\XINT_expr_check-_after?\expandafter#1% \romannumeral`&&@\expandafter\XINT_expr_getnext\romannumeral0\xintiiifsgn#2% }% \def\XINT_expr_check-_after? #1{% \def\XINT_expr_check-_after? ##1##2% {% \xint_UDsignfork ##2{##1}% #1{##2}% \krof }}\expandafter\XINT_expr_check-_after?\string -% \catcode`- 12 \let\XINT_expr_precedence_! \xint_c_xx \def\XINT_expr_op_! #1% {% \expandafter\XINT_expr_put_op_first \expanded{{\romannumeral`&&@\XINT:NEhook:f:one:from:one {\romannumeral`&&@\xintFac#1}}\expandafter}\romannumeral`&&@\XINT_expr_getop }% \def\XINT_flexpr_op_! #1% {% \expandafter\XINT_expr_put_op_first \expanded{{\romannumeral`&&@\XINT:NEhook:f:one:from:one {\romannumeral`&&@\XINTinFloatFacdigits#1}}\expandafter}\romannumeral`&&@\XINT_expr_getop }% \def\XINT_iiexpr_op_! #1% {% \expandafter\XINT_expr_put_op_first \expanded{{\romannumeral`&&@\XINT:NEhook:f:one:from:one {\romannumeral`&&@\xintiiFac#1}}\expandafter}\romannumeral`&&@\XINT_expr_getop }% \expandafter \def\csname XINT_expr_precedence_!==\expandafter\endcsname \csname XINT_expr_itself_!==\endcsname {\XINT_expr_precedence_! !==}% \expandafter\def\csname XINT_expr_itself_!==\endcsname{!==}% \catcode`* 11 \def\XINT_expr_defvar_one #1#2% {% \XINT_global \expandafter\edef\csname XINT_expr_varvalue_#1\endcsname {#2}% \XINT_expr_defvar_one_b {#1}% }% \def\XINT_expr_defvar_one_b #1% {% \XINT_global \expandafter\edef\csname XINT_expr_var_#1\endcsname {{\expandafter\noexpand\csname XINT_expr_varvalue_#1\endcsname}}% \XINT_global \expandafter\edef\csname XINT_expr_var*_#1\endcsname {\XINT_expr_prec_tacit *\csname XINT_expr_var_#1\endcsname(}% \ifxintverbose\xintMessage{xintexpr}{Info} {Variable #1 \ifxintglobaldefs globally \fi defined with value \csname XINT_expr_varvalue_#1\endcsname.}% \fi }% \catcode`* 12 \catcode`~ 13 \catcode`: 12 \def\XINT_expr_defvar_getname #1:#2~% {% \endgroup \def\XINT_defvar_tmpa{#1}\edef\XINT_defvar_tmpc{\xintCSVLength{#1}}% }% \def\XINT_expr_defvar #1#2% {% \def\XINT_defvar_tmpa{#2}% \expandafter\XINT_expr_defvar_a\expanded{\unexpanded{{#1}}\expandafter}% \romannumeral\XINT_expr_fetch_to_semicolon }% \def\XINT_expr_defvar_a #1#2% {% \xintexprRestoreCatcodes \begingroup\lccode`~`: \lowercase{\let~}\empty \edef\XINT_defvar_tmpa{\XINT_defvar_tmpa}% \edef\XINT_defvar_tmpa{\xint_zapspaces_o\XINT_defvar_tmpa}% \expandafter\XINT_expr_defvar_getname \detokenize\expandafter{\XINT_defvar_tmpa}:~% \ifcase\XINT_defvar_tmpc\space \xintMessage {xintexpr}{Error} {Aborting: not allowed to declare variable with empty name.}% \or \XINT_global \expandafter \edef\csname XINT_expr_varvalue_\XINT_defvar_tmpa\endcsname{#1#2\relax}% \XINT_expr_defvar_one_b\XINT_defvar_tmpa \else \edef\XINT_defvar_tmpb{#1#2\relax}% \edef\XINT_defvar_tmpd{\expandafter\xintLength\expandafter{\XINT_defvar_tmpb}}% \ifnum\XINT_defvar_tmpd=\xint_c_i \oodef\XINT_defvar_tmpb{\expandafter\xint_firstofone\XINT_defvar_tmpb}% \if0\expandafter\expandafter\expandafter\XINT_defvar_checkifnutple \expandafter\string\XINT_defvar_tmpb _\xint_bye \odef\XINT_defvar_tmpb{\expandafter{\XINT_defvar_tmpb}}% \else \edef\XINT_defvar_tmpd{\expandafter\xintLength\expandafter{\XINT_defvar_tmpb}}% \fi \fi \xintAssignArray\xintCSVtoList\XINT_defvar_tmpa\to\XINT_defvar_tmpvar \def\XINT_defvar_tmpe{1}% \expandafter\XINT_expr_defvar_multiple\XINT_defvar_tmpb\relax \fi }% \def\XINT_defvar_checkifnutple#1% {% \if#1_1\fi \if#1\bgroup1\fi 0\xint_bye }% \def\XINT_expr_defvar_multiple {% \ifnum\XINT_defvar_tmpe<\XINT_defvar_tmpc\space \expandafter\XINT_expr_defvar_multiple_one \else \expandafter\XINT_expr_defvar_multiple_last\expandafter\empty \fi }% \def\XINT_expr_defvar_multiple_one {% \ifnum\XINT_defvar_tmpe>\XINT_defvar_tmpd\space \expandafter\XINT_expr_defvar_one \csname XINT_defvar_tmpvar\XINT_defvar_tmpe\endcsname{}% \edef\XINT_defvar_tmpe{\the\numexpr\XINT_defvar_tmpe+1}% \expandafter\XINT_expr_defvar_multiple \else \expandafter\XINT_expr_defvar_multiple_one_a \fi }% \def\XINT_expr_defvar_multiple_one_a #1% {% \expandafter\XINT_expr_defvar_one \csname XINT_defvar_tmpvar\XINT_defvar_tmpe\endcsname{{#1}}% \edef\XINT_defvar_tmpe{\the\numexpr\XINT_defvar_tmpe+1}% \XINT_expr_defvar_multiple }% \def\XINT_expr_defvar_multiple_last #1\relax {% \expandafter\XINT_expr_defvar_one \csname XINT_defvar_tmpvar\XINT_defvar_tmpe\endcsname{#1}% \xintRelaxArray\XINT_defvar_tmpvar \let\XINT_defvar_tmpa\empty \let\XINT_defvar_tmpb\empty \let\XINT_defvar_tmpc\empty \let\XINT_defvar_tmpd\empty \let\XINT_defvar_tmpe\empty }% \catcode`~ 3 \catcode`: 11 \def\xintdefvar {\xintexprSafeCatcodes\xintdefvar_a}% \def\xintdefvar_a#1={\XINT_expr_defvar\xintthebareeval{#1}}% \def\xintdefiivar {\xintexprSafeCatcodes\xintdefiivar_a}% \def\xintdefiivar_a#1={\XINT_expr_defvar\xintthebareiieval{#1}}% \def\xintdeffloatvar {\xintexprSafeCatcodes\xintdeffloatvar_a}% \def\xintdeffloatvar_a #1={\XINT_expr_defvar\xintthebareroundedfloateval{#1}}% \def\xintunassignvar #1{% \edef\XINT_unvar_tmpa{#1}% \edef\XINT_unvar_tmpa {\xint_zapspaces_o\XINT_unvar_tmpa}% \ifcsname XINT_expr_var_\XINT_unvar_tmpa\endcsname \ifnum\expandafter\xintLength\expandafter{\XINT_unvar_tmpa}=\@ne \expandafter\xintnewdummy\XINT_unvar_tmpa \else \XINT_global\expandafter \let\csname XINT_expr_varvalue_\XINT_unvar_tmpa\endcsname\xint_undefined \XINT_global\expandafter \let\csname XINT_expr_var_\XINT_unvar_tmpa\endcsname\xint_undefined \XINT_global\expandafter \let\csname XINT_expr_var*_\XINT_unvar_tmpa\endcsname\xint_undefined \ifxintverbose\xintMessage {xintexpr}{Info} {Variable \XINT_unvar_tmpa\space has been \ifxintglobaldefs globally \fi ``unassigned''.}% \fi \fi \else \xintMessage {xintexpr}{Warning} {Error: there was no such variable \XINT_unvar_tmpa\space to unassign.}% \fi }% \catcode`* 11 \def\XINT_expr_makedummy #1% {% \edef\XINT_tmpa{\xint_zapspaces #1 \xint_gobble_i}% \ifcsname XINT_expr_var_\XINT_tmpa\endcsname \XINT_global \expandafter\let\csname XINT_expr_var_\XINT_tmpa/old\expandafter\endcsname \csname XINT_expr_var_\XINT_tmpa\expandafter\endcsname \fi \ifcsname XINT_expr_var*_\XINT_tmpa\endcsname \XINT_global \expandafter\let\csname XINT_expr_var*_\XINT_tmpa/old\expandafter\endcsname \csname XINT_expr_var*_\XINT_tmpa\expandafter\endcsname \fi \expandafter\XINT_global \expanded {\edef\expandafter\noexpand \csname XINT_expr_var_\XINT_tmpa\endcsname ##1\relax !\XINT_tmpa##2}% {{##2}##1\relax !\XINT_tmpa{##2}}% \expandafter\XINT_global \expanded {\edef\expandafter\noexpand \csname XINT_expr_var*_\XINT_tmpa\endcsname ##1\relax !\XINT_tmpa##2}% {\XINT_expr_prec_tacit *{##2}(##1\relax !\XINT_tmpa{##2}}%) }% \xintApplyUnbraced \XINT_expr_makedummy {abcdefghijklmnopqrstuvwxyz}% \xintApplyUnbraced \XINT_expr_makedummy {ABCDEFGHIJKLMNOPQRSTUVWXYZ}% \def\xintnewdummy #1{% \XINT_expr_makedummy{#1}% \ifxintverbose\xintMessage {xintexpr}{Info}% {\XINT_tmpa\space now \ifxintglobaldefs globally \fi usable as dummy variable.}% \fi }% \catcode`* 12 \XINT_expr_defvar_one{nil}{}% \XINT_expr_defvar_one{None}{{}}% ? tentative \XINT_expr_defvar_one{false}{{0}}% Maple, TeX \XINT_expr_defvar_one{true}{{1}}% \XINT_expr_defvar_one{False}{{0}}% Python \XINT_expr_defvar_one{True}{{1}}% \def\xintensuredummy #1{% \XINT_expr_makedummy{#1}% \ifxintverbose\xintMessage {xintexpr}{Info}% {\XINT_tmpa\space now \ifxintglobaldefs globally \fi usable as dummy variable.&&J Issue \string\xintrestorevariable{\XINT_tmpa} to restore former meaning.}% \fi }% \def\xintrestorevariablesilently #1{% \edef\XINT_tmpa{\xint_zapspaces #1 \xint_gobble_i}% \ifcsname XINT_expr_var_\XINT_tmpa/old\endcsname \XINT_global \expandafter\let\csname XINT_expr_var_\XINT_tmpa\expandafter\endcsname \csname XINT_expr_var_\XINT_tmpa/old\expandafter\endcsname \fi \ifcsname XINT_expr_var*_\XINT_tmpa/old\endcsname \XINT_global \expandafter\let\csname XINT_expr_var*_\XINT_tmpa\expandafter\endcsname \csname XINT_expr_var*_\XINT_tmpa/old\expandafter\endcsname \fi }% \def\xintrestorevariable #1{% \xintrestorevariablesilently {#1}% \ifxintverbose\xintMessage {xintexpr}{Info}% {\XINT_tmpa\space \ifxintglobaldefs globally \fi restored to its earlier status, if any.}% \fi }% \def\XINT_isbalanced_a #1({\XINT_isbalanced_b #1)\xint_bye }% \def\XINT_isbalanced_b #1)#2% {\xint_bye #2\XINT_isbalanced_c\xint_bye\XINT_isbalanced_error }% \def\XINT_isbalanced_error #1)\xint_bye {\xint_c_mone}% \def\XINT_isbalanced_c\xint_bye\XINT_isbalanced_error #1% {\xint_bye #1\XINT_isbalanced_yes\xint_bye\XINT_isbalanced_d #1}% \def\XINT_isbalanced_yes\xint_bye\XINT_isbalanced_d\xint_bye )\xint_bye {\xint_c_ }% \def\XINT_isbalanced_d #1)#2% {\xint_bye #2\XINT_isbalanced_no\xint_bye\XINT_isbalanced_a #1#2}% \def\XINT_isbalanced_no\xint_bye #1\xint_bye\xint_bye {\xint_c_i }% \def\XINT_expr_fetch_E_comma_V_equal_E_a #1#2,% {% \ifcase\XINT_isbalanced_a \relax #1#2(\xint_bye)\xint_bye \expandafter\XINT_expr_fetch_E_comma_V_equal_E_c \or\expandafter\XINT_expr_fetch_E_comma_V_equal_E_b \else\expandafter\xintError:noopening \fi {#1#2},% }% \def\XINT_expr_fetch_E_comma_V_equal_E_b #1,% {\XINT_expr_fetch_E_comma_V_equal_E_a {#1,}}% \def\XINT_expr_fetch_E_comma_V_equal_E_c #1,#2#3=% {% \expandafter\XINT_expr_fetch_E_comma_V_equal_E_d\expandafter {\expanded{{\xint_zapspaces #2#3 \xint_gobble_i}}{#1}}{}% }% \def\XINT_expr_fetch_E_comma_V_equal_E_d #1#2#3)% {% \ifcase\XINT_isbalanced_a \relax #2#3(\xint_bye)\xint_bye \or\expandafter\XINT_expr_fetch_E_comma_V_equal_E_e \else\expandafter\xintError:noopening \fi {#1}{#2#3}% }% \def\XINT_expr_fetch_E_comma_V_equal_E_e #1#2{\XINT_expr_fetch_E_comma_V_equal_E_d {#1}{#2)}}% \def\XINT_expr_fetch_to_semicolon {\XINT_expr_fetch_to_semicolon_a {}\empty}% \def\XINT_expr_fetch_to_semicolon_a #1#2;% {% \ifcase\XINT_isbalanced_a \relax #1#2(\xint_bye)\xint_bye \xint_dothis{\expandafter\XINT_expr_fetch_to_semicolon_c}% \or\xint_dothis{\expandafter\XINT_expr_fetch_to_semicolon_b}% \else\expandafter\xintError:noopening \fi\xint_orthat{}\expandafter{#2}{#1}% }% \def\XINT_expr_fetch_to_semicolon_b #1#2{\XINT_expr_fetch_to_semicolon_a {#2#1;}\empty}% \def\XINT_expr_fetch_to_semicolon_c #1#2{\xint_c_{#2#1}}% \expandafter\def\csname XINT_expr_itself_++\endcsname {++}% \expandafter\def\csname XINT_expr_itself_++)\endcsname {++)}% \expandafter\let\csname XINT_expr_precedence_++)\endcsname \xint_c_i \xintFor #1 in {expr,flexpr,iiexpr} \do {% \expandafter\def\csname XINT_#1_op_++)\endcsname ##1##2\relax {\expandafter\XINT_expr_foundend \expanded{{+{\XINT:NEhook:f:one:from:one:direct\xintiCeil##1}}}% }% }% \catcode`? 3 \def\XINT_expr_func_break #1#2#3{#1#2{?#3}}% \catcode`? 11 \let\XINT_flexpr_func_break \XINT_expr_func_break \let\XINT_iiexpr_func_break \XINT_expr_func_break \edef\XINT_expr_var_omit #1\relax !{1\string !?!\relax !}% \edef\XINT_expr_var_abort #1\relax !{1\string !?^\relax !}% \def\XINT_expr_itself_!? {!?}% \def\XINT_expr_op_!? #1#2\relax{\XINT_expr_foundend{#2}}% \let\XINT_iiexpr_op_!? \XINT_expr_op_!? \let\XINT_flexpr_op_!? \XINT_expr_op_!? \let\XINT_expr_precedence_!? \xint_c_iv \xintFor #1 in {expr,flexpr,iiexpr} \do {% \expandafter\def\csname XINT_#1_op_;\endcsname {\xint_c_i ;}% }% \expandafter\let\csname XINT_expr_precedence_;\endcsname\xint_c_i \expandafter\def\csname XINT_expr_itself_;)\endcsname {)}% \expandafter\let\csname XINT_expr_precedence_;)\endcsname\xint_c_i \catcode`* 11 \def\XINT_expr_var_@ #1~#2{{#2}#1~{#2}}% \def\XINT_expr_var*_@ #1~#2{\XINT_expr_prec_tacit *{#2}(#1~{#2}}% \expandafter \def\csname XINT_expr_var_@1\endcsname #1~#2{{{#2}}#1~{#2}}% \expandafter \def\csname XINT_expr_var_@2\endcsname #1~#2#3{{{#3}}#1~{#2}{#3}}% \expandafter \def\csname XINT_expr_var_@3\endcsname #1~#2#3#4{{{#4}}#1~{#2}{#3}{#4}}% \expandafter \def\csname XINT_expr_var_@4\endcsname #1~#2#3#4#5{{{#5}}#1~{#2}{#3}{#4}{#5}}% \expandafter\def\csname XINT_expr_var*_@1\endcsname #1~#2% {\XINT_expr_prec_tacit *{{#2}}(#1~{#2}}% \expandafter\def\csname XINT_expr_var*_@2\endcsname #1~#2#3% {\XINT_expr_prec_tacit *{{#3}}(#1~{#2}{#3}}% \expandafter\def\csname XINT_expr_var*_@3\endcsname #1~#2#3#4% {\XINT_expr_prec_tacit *{{#4}}(#1~{#2}{#3}{#4}}% \expandafter\def\csname XINT_expr_var*_@4\endcsname #1~#2#3#4#5% {\XINT_expr_prec_tacit *{{#5}}(#1~{#2}{#3}{#4}{#5}}% \catcode`* 12 \catcode`? 3 \def\XINT_expr_func_@@ #1#2#3#4~#5?% {% \expandafter#1\expandafter#2\expandafter{\expandafter{% \romannumeral0\xintntheltnoexpand{\xintNum#3}{#5}}}#4~#5?% }% \def\XINT_expr_func_@@@ #1#2#3#4~#5~#6?% {% \expandafter#1\expandafter#2\expandafter{\expandafter{% \romannumeral0\xintntheltnoexpand{\xintNum#3}{#6}}}#4~#5~#6?% }% \def\XINT_expr_func_@@@@ #1#2#3#4~#5~#6~#7?% {% \expandafter#1\expandafter#2\expandafter{\expandafter{% \romannumeral0\xintntheltnoexpand{\xintNum#3}{#7}}}#4~#5~#6~#7?% }% \let\XINT_flexpr_func_@@\XINT_expr_func_@@ \let\XINT_flexpr_func_@@@\XINT_expr_func_@@@ \let\XINT_flexpr_func_@@@@\XINT_expr_func_@@@@ \def\XINT_iiexpr_func_@@ #1#2#3#4~#5?% {% \expandafter#1\expandafter#2\expandafter{\expandafter{% \romannumeral0\xintntheltnoexpand{\xint_firstofone#3}{#5}}}#4~#5?% }% \def\XINT_iiexpr_func_@@@ #1#2#3#4~#5~#6?% {% \expandafter#1\expandafter#2\expandafter{\expandafter{% \romannumeral0\xintntheltnoexpand{\xint_firstofone#3}{#6}}}#4~#5~#6?% }% \def\XINT_iiexpr_func_@@@@ #1#2#3#4~#5~#6~#7?% {% \expandafter#1\expandafter#2\expandafter{\expandafter{% \romannumeral0\xintntheltnoexpand{\xint_firstofone#3}{#7}}}#4~#5~#6~#7?% }% \catcode`? 11 \def\XINT_expr_onliteral_subs {% \expandafter\XINT_allexpr_subs_f \romannumeral`&&@\XINT_expr_fetch_E_comma_V_equal_E_a {}% }% \def\XINT_allexpr_subs_f #1#2{\xint_c_ii^v `{subsx}#2)\relax #1}% \def\XINT_expr_func_subsx #1#2{\XINT_allexpr_subsx \xintbareeval }% \def\XINT_flexpr_func_subsx #1#2{\XINT_allexpr_subsx \xintbarefloateval}% \def\XINT_iiexpr_func_subsx #1#2{\XINT_allexpr_subsx \xintbareiieval }% \def\XINT_allexpr_subsx #1#2#3#4% {% \expandafter\XINT_expr_clean_and_put_op_first \expanded \bgroup\romannumeral0#1#4\relax !#3{#2}\xint:\iffalse{\fi\expandafter}% \romannumeral`&&@\XINT_expr_getop }% \def\XINT_expr_clean_and_put_op_first #1#2\xint:#3#4{#3#4{#1}}% \def\XINT_expr_onliteral_subsm {% \expandafter\XINT_allexpr_subsm_f \romannumeral`&&@\XINT_expr_fetch_E_comma_V_equal_E_a {}% }% \def\XINT_allexpr_subsm_f #1#2{\xint_c_ii^v `{subsmx}#2)\relax #1}% \def\XINT_expr_func_subsmx {% \expandafter\XINT_allexpr_subsmx\expandafter\xintbareeval \expanded\bgroup{\iffalse}\fi\XINT_allexpr_subsm_A\XINT_expr_oparen }% \def\XINT_flexpr_func_subsmx {% \expandafter\XINT_allexpr_subsmx\expandafter\xintbarefloateval \expanded\bgroup{\iffalse}\fi\XINT_allexpr_subsm_A\XINT_flexpr_oparen }% \def\XINT_iiexpr_func_subsmx {% \expandafter\XINT_allexpr_subsmx\expandafter\xintbareiieval \expanded\bgroup{\iffalse}\fi\XINT_allexpr_subsm_A\XINT_iiexpr_oparen }% \def\XINT_allexpr_subsm_A #1#2#3% {% \ifx#2\xint_c_ \expandafter\XINT_allexpr_subsm_done \else \expandafter\XINT_allexpr_subsm_B \fi #1% }% \def\XINT_allexpr_subsm_B #1#2#3#4=% {% {#2}\relax !\xint_zapspaces#3#4 \xint_gobble_i \expandafter\XINT_allexpr_subsm_A\expandafter#1\romannumeral`&&@#1% }% \def\XINT_allexpr_subsm_done #1#2{{#2}\iffalse{{\fi}}}% \def\XINT_allexpr_subsmx #1#2#3#4% {% \expandafter\XINT_expr_clean_and_put_op_first \expanded \bgroup\romannumeral0#1#4\relax !#3#2\xint:\iffalse{\fi\expandafter}% \romannumeral`&&@\XINT_expr_getop }% \def\XINT_expr_onliteral_subsn {% \expandafter\XINT_allexpr_subsn_f \romannumeral`&&@\XINT_expr_fetch_E_comma_V_equal_E_a {}% }% \def\XINT_allexpr_subsn_f #1{\XINT_allexpr_subsn_g #1}% \def\XINT_allexpr_subsn_g #1#2#3% {% \expandafter\XINT_allexpr_subsn_h \expanded\bgroup{\iffalse}\fi\expandafter\XINT_allexpr_subsn_B \romannumeral\XINT_expr_fetch_to_semicolon #1=#3;\hbox=;;^{#2}% }% \def\XINT_allexpr_subsn_B #1{\XINT_allexpr_subsn_C #1\vbox}% \def\XINT_allexpr_subsn_C #1#2=#3\vbox {% \ifx\hbox#1\iffalse{{\fi}\expandafter}\else {{\xint_zapspaces #1#2 \xint_gobble_i}};\unexpanded{{{#3}}}% \expandafter\XINT_allexpr_subsn_B \romannumeral\expandafter\XINT_expr_fetch_to_semicolon\fi }% \def\XINT_allexpr_subsn_h {% \xint_c_ii^v `{subsnx}\romannumeral0\xintreverseorder }% \def\XINT_expr_func_subsnx #1#2#3#4#5;#6% {% \xint_gob_til_^ #6\XINT_allexpr_subsnx_H ^% \expandafter\XINT_allexpr_subsnx\expandafter \xintbareeval\romannumeral0\xintbareeval #5\relax !#4{#3}\xintundefined {\relax !#4{#3}\relax !#6}% }% \def\XINT_iiexpr_func_subsnx #1#2#3#4#5;#6% {% \xint_gob_til_^ #6\XINT_allexpr_subsnx_H ^% \expandafter\XINT_allexpr_subsnx\expandafter \xintbareiieval\romannumeral0\xintbareiieval #5\relax !#4{#3}\xintundefined {\relax !#4{#3}\relax !#6}% }% \def\XINT_flexpr_func_subsnx #1#2#3#4#5;#6% {% \xint_gob_til_^ #6\XINT_allexpr_subsnx_H ^% \expandafter\XINT_allexpr_subsnx\expandafter \xintbarefloateval\romannumeral0\xintbarefloateval #5\relax !#4{#3}\xintundefined {\relax !#4{#3}\relax !#6}% }% \def\XINT_allexpr_subsnx #1#2!#3\xintundefined#4#5;#6% {% \xint_gob_til_^ #6\XINT_allexpr_subsnx_I ^% \expandafter\XINT_allexpr_subsnx\expandafter #1\romannumeral0#1#5\relax !#4{#2}\xintundefined {\relax !#4{#2}\relax !#6}% }% \def\XINT_allexpr_subsnx_H ^#1\romannumeral0#2#3!#4\xintundefined #5#6% {% \expandafter\XINT_allexpr_subsnx_J\romannumeral0#2#6#5% }% \def\XINT_allexpr_subsnx_I ^#1\romannumeral0#2#3\xintundefined #4#5% {% \expandafter\XINT_allexpr_subsnx_J\romannumeral0#2#5#4% }% \def\XINT_allexpr_subsnx_J #1#2^% {% \expandafter\XINT_expr_put_op_first_noexpand \expanded{\unexpanded{{#1}}\expandafter}\romannumeral`&&@\XINT_expr_getop }% \def\XINT_expr_put_op_first_noexpand#1#2#3{#2#3{#1}}% \def\XINT_allexpr_seq_f #1#2{\xint_c_ii^v `{seqx}#2)\relax #1}% \def\XINT_expr_onliteral_seq {\expandafter\XINT_allexpr_seq_f\romannumeral`&&@\XINT_expr_fetch_E_comma_V_equal_E_a {}}% \def\XINT_expr_func_seqx #1#2{\XINT:NEhook:seqx\XINT_allexpr_seqx\xintbareeval }% \def\XINT_flexpr_func_seqx #1#2{\XINT:NEhook:seqx\XINT_allexpr_seqx\xintbarefloateval}% \def\XINT_iiexpr_func_seqx #1#2{\XINT:NEhook:seqx\XINT_allexpr_seqx\xintbareiieval }% \def\XINT_allexpr_seqx #1#2#3#4% {% \expandafter\XINT_expr_put_op_first \expanded \bgroup {\iffalse}\fi\XINT_expr_seq:_b {#1#4\relax !#3}#2^% \XINT_expr_cb_and_getop }% \def\XINT_expr_cb_and_getop{\iffalse{\fi\expandafter}\romannumeral`&&@\XINT_expr_getop}% \catcode`? 3 \def\XINT_expr_seq:_b #1#2% {% \ifx +#2\xint_dothis\XINT_expr_seq:_Ca\fi \ifx !#2!\xint_dothis\XINT_expr_seq:_noop\fi \ifx ^#2\xint_dothis\XINT_expr_seq:_end\fi \xint_orthat{\XINT_expr_seq:_c}{#2}{#1}% }% \def\XINT_expr_seq:_noop #1{\XINT_expr_seq:_b }% \def\XINT_expr_seq:_end #1#2{\iffalse{\fi}}% \def\XINT_expr_seq:_c #1#2{\expandafter\XINT_expr_seq:_d\romannumeral0#2{{#1}}{#2}}% \def\XINT_expr_seq:_d #1{\ifx ^#1\xint_dothis\XINT_expr_seq:_abort\fi \ifx ?#1\xint_dothis\XINT_expr_seq:_break\fi \ifx !#1\xint_dothis\XINT_expr_seq:_omit\fi \xint_orthat{\XINT_expr_seq:_goon {#1}}}% \def\XINT_expr_seq:_abort #1!#2^{\iffalse{\fi}}% \def\XINT_expr_seq:_break #1!#2^{#1\iffalse{\fi}}% \def\XINT_expr_seq:_omit #1!#2#{\expandafter\XINT_expr_seq:_b\xint_gobble_i}% \def\XINT_expr_seq:_goon #1!#2#{#1\expandafter\XINT_expr_seq:_b\xint_gobble_i}% \def\XINT_expr_seq:_Ca #1#2#3{\XINT_expr_seq:_Cc#3.{#2}}% \def\XINT_expr_seq:_Cb #1{\expandafter\XINT_expr_seq:_Cc\the\numexpr#1+\xint_c_i.}% \def\XINT_expr_seq:_Cc #1.#2{\expandafter\XINT_expr_seq:_D\romannumeral0#2{{#1}}{#1}{#2}}% \def\XINT_expr_seq:_D #1{\ifx ^#1\xint_dothis\XINT_expr_seq:_abort\fi \ifx ?#1\xint_dothis\XINT_expr_seq:_break\fi \ifx !#1\xint_dothis\XINT_expr_seq:_Omit\fi \xint_orthat{\XINT_expr_seq:_Goon {#1}}}% \def\XINT_expr_seq:_Omit #1!#2#{\expandafter\XINT_expr_seq:_Cb\xint_gobble_i}% \def\XINT_expr_seq:_Goon #1!#2#{#1\expandafter\XINT_expr_seq:_Cb\xint_gobble_i}% \def\XINT_expr_func_iter {\XINT_allexpr_iter \xintbareeval }% \def\XINT_flexpr_func_iter {\XINT_allexpr_iter \xintbarefloateval }% \def\XINT_iiexpr_func_iter {\XINT_allexpr_iter \xintbareiieval }% \def\XINT_allexpr_iter #1#2#3#4% {% \expandafter\XINT_expr_iterx \expandafter#1\expanded{\unexpanded{{#4}}\expandafter}% \romannumeral`&&@\XINT_expr_fetch_E_comma_V_equal_E_a {}% }% \def\XINT_expr_iterx #1#2#3#4% {% \XINT:NEhook:iter\XINT_expr_itery\romannumeral0#1(#4)\relax {#2}#3#1% }% \def\XINT_expr_itery #1#2#3#4#5% {% \expandafter\XINT_expr_put_op_first \expanded \bgroup {\iffalse}\fi \XINT_expr_iter:_b {#5#4\relax !#3}#1^~{#2}\XINT_expr_cb_and_getop }% \def\XINT_expr_iter:_b #1#2% {% \ifx +#2\xint_dothis\XINT_expr_iter:_Ca\fi \ifx !#2!\xint_dothis\XINT_expr_iter:_noop\fi \ifx ^#2\xint_dothis\XINT_expr_iter:_end\fi \xint_orthat{\XINT_expr_iter:_c}{#2}{#1}% }% \def\XINT_expr_iter:_noop #1{\XINT_expr_iter:_b }% \def\XINT_expr_iter:_end #1#2~#3{#3\iffalse{\fi}}% \def\XINT_expr_iter:_c #1#2{\expandafter\XINT_expr_iter:_d\romannumeral0#2{{#1}}{#2}}% \def\XINT_expr_iter:_d #1{\ifx ^#1\xint_dothis\XINT_expr_iter:_abort\fi \ifx ?#1\xint_dothis\XINT_expr_iter:_break\fi \ifx !#1\xint_dothis\XINT_expr_iter:_omit\fi \xint_orthat{\XINT_expr_iter:_goon {#1}}}% \def\XINT_expr_iter:_abort #1!#2^~#3{#3\iffalse{\fi}}% \def\XINT_expr_iter:_break #1!#2^~#3{#1\iffalse{\fi}}% \def\XINT_expr_iter:_omit #1!#2#{\expandafter\XINT_expr_iter:_b\xint_gobble_i}% \def\XINT_expr_iter:_goon #1!#2#{\XINT_expr_iter:_goon_a {#1}}% \def\XINT_expr_iter:_goon_a #1#2#3~#4{\XINT_expr_iter:_b #3~{#1}}% \def\XINT_expr_iter:_Ca #1#2#3{\XINT_expr_iter:_Cc#3.{#2}}% \def\XINT_expr_iter:_Cb #1{\expandafter\XINT_expr_iter:_Cc\the\numexpr#1+\xint_c_i.}% \def\XINT_expr_iter:_Cc #1.#2{\expandafter\XINT_expr_iter:_D\romannumeral0#2{{#1}}{#1}{#2}}% \def\XINT_expr_iter:_D #1{\ifx ^#1\xint_dothis\XINT_expr_iter:_abort\fi \ifx ?#1\xint_dothis\XINT_expr_iter:_break\fi \ifx !#1\xint_dothis\XINT_expr_iter:_Omit\fi \xint_orthat{\XINT_expr_iter:_Goon {#1}}}% \def\XINT_expr_iter:_Omit #1!#2#{\expandafter\XINT_expr_iter:_Cb\xint_gobble_i}% \def\XINT_expr_iter:_Goon #1!#2#{\XINT_expr_iter:_Goon_a {#1}}% \def\XINT_expr_iter:_Goon_a #1#2#3~#4{\XINT_expr_iter:_Cb #3~{#1}}% \def\XINT_expr_onliteral_add {\expandafter\XINT_allexpr_add_f\romannumeral`&&@\XINT_expr_fetch_E_comma_V_equal_E_a {}}% \def\XINT_allexpr_add_f #1#2{\xint_c_ii^v `{opx}#2)\relax #1{+}{0}}% \def\XINT_expr_onliteral_mul {\expandafter\XINT_allexpr_mul_f\romannumeral`&&@\XINT_expr_fetch_E_comma_V_equal_E_a {}}% \def\XINT_allexpr_mul_f #1#2{\xint_c_ii^v `{opx}#2)\relax #1{*}{1}}% \def\XINT_expr_func_opx {\XINT:NEhook:opx \XINT_allexpr_opx \xintbareeval }% \def\XINT_flexpr_func_opx {\XINT:NEhook:opx \XINT_allexpr_opx \xintbarefloateval}% \def\XINT_iiexpr_func_opx {\XINT:NEhook:opx \XINT_allexpr_opx \xintbareiieval }% \def\XINT_allexpr_opx #1#2#3#4#5#6#7#8% {% \expandafter\XINT_expr_put_op_first \expanded \bgroup {\iffalse}\fi \XINT_expr_iter:_b {#1% \expandafter\XINT_allexpr_opx_ifnotomitted \romannumeral0#1#6\relax#7@\relax !#5}#4^~{{#8}}\XINT_expr_cb_and_getop }% \def\XINT_allexpr_opx_ifnotomitted #1% {% \ifx !#1\xint_dothis{@\relax}\fi \ifx ^#1\xint_dothis{\XINTfstop. ^\relax}\fi \if ?\xintFirstItem{#1}\xint_dothis{\XINT_allexpr_opx_break{#1}}\fi \xint_orthat{\XINTfstop.{#1}}% }% \def\XINT_allexpr_opx_break #1#2\relax {% break(\expandafter\XINTfstop\expandafter.\expandafter{\xint_gobble_i#1}#2)\relax }% \def\XINT_expr_func_rseq {\XINT_allexpr_rseq \xintbareeval }% \def\XINT_flexpr_func_rseq {\XINT_allexpr_rseq \xintbarefloateval }% \def\XINT_iiexpr_func_rseq {\XINT_allexpr_rseq \xintbareiieval }% \def\XINT_allexpr_rseq #1#2#3#4% {% \expandafter\XINT_expr_rseqx \expandafter #1\expanded{\unexpanded{{#4}}\expandafter}% \romannumeral`&&@\XINT_expr_fetch_E_comma_V_equal_E_a {}% }% \def\XINT_expr_rseqx #1#2#3#4% {% \XINT:NEhook:rseq \XINT_expr_rseqy\romannumeral0#1(#4)\relax {#2}#3#1% }% \def\XINT_expr_rseqy #1#2#3#4#5% {% \expandafter\XINT_expr_put_op_first \expanded \bgroup {\iffalse}\fi #2% \XINT_expr_rseq:_b {#5#4\relax !#3}#1^~{#2}\XINT_expr_cb_and_getop }% \def\XINT_expr_rseq:_b #1#2% {% \ifx +#2\xint_dothis\XINT_expr_rseq:_Ca\fi \ifx !#2!\xint_dothis\XINT_expr_rseq:_noop\fi \ifx ^#2\xint_dothis\XINT_expr_rseq:_end\fi \xint_orthat{\XINT_expr_rseq:_c}{#2}{#1}% }% \def\XINT_expr_rseq:_noop #1{\XINT_expr_rseq:_b }% \def\XINT_expr_rseq:_end #1#2~#3{\iffalse{\fi}}% \def\XINT_expr_rseq:_c #1#2{\expandafter\XINT_expr_rseq:_d\romannumeral0#2{{#1}}{#2}}% \def\XINT_expr_rseq:_d #1{\ifx ^#1\xint_dothis\XINT_expr_rseq:_abort\fi \ifx ?#1\xint_dothis\XINT_expr_rseq:_break\fi \ifx !#1\xint_dothis\XINT_expr_rseq:_omit\fi \xint_orthat{\XINT_expr_rseq:_goon {#1}}}% \def\XINT_expr_rseq:_abort #1!#2^~#3{\iffalse{\fi}}% \def\XINT_expr_rseq:_break #1!#2^~#3{#1\iffalse{\fi}}% \def\XINT_expr_rseq:_omit #1!#2#{\expandafter\XINT_expr_rseq:_b\xint_gobble_i}% \def\XINT_expr_rseq:_goon #1!#2#{\XINT_expr_rseq:_goon_a {#1}}% \def\XINT_expr_rseq:_goon_a #1#2#3~#4{#1\XINT_expr_rseq:_b #3~{#1}}% \def\XINT_expr_rseq:_Ca #1#2#3{\XINT_expr_rseq:_Cc#3.{#2}}% \def\XINT_expr_rseq:_Cb #1{\expandafter\XINT_expr_rseq:_Cc\the\numexpr#1+\xint_c_i.}% \def\XINT_expr_rseq:_Cc #1.#2{\expandafter\XINT_expr_rseq:_D\romannumeral0#2{{#1}}{#1}{#2}}% \def\XINT_expr_rseq:_D #1{\ifx ^#1\xint_dothis\XINT_expr_rseq:_abort\fi \ifx ?#1\xint_dothis\XINT_expr_rseq:_break\fi \ifx !#1\xint_dothis\XINT_expr_rseq:_Omit\fi \xint_orthat{\XINT_expr_rseq:_Goon {#1}}}% \def\XINT_expr_rseq:_Omit #1!#2#{\expandafter\XINT_expr_rseq:_Cb\xint_gobble_i}% \def\XINT_expr_rseq:_Goon #1!#2#{\XINT_expr_rseq:_Goon_a {#1}}% \def\XINT_expr_rseq:_Goon_a #1#2#3~#4{#1\XINT_expr_rseq:_Cb #3~{#1}}% \def\XINT_expr_func_iterr {\XINT_allexpr_iterr \xintbareeval }% \def\XINT_flexpr_func_iterr {\XINT_allexpr_iterr \xintbarefloateval }% \def\XINT_iiexpr_func_iterr {\XINT_allexpr_iterr \xintbareiieval }% \def\XINT_allexpr_iterr #1#2#3#4% {% \expandafter\XINT_expr_iterrx \expandafter #1\expanded{{\xintRevWithBraces{#4}}\expandafter}% \romannumeral`&&@\XINT_expr_fetch_E_comma_V_equal_E_a {}% }% \def\XINT_expr_iterrx #1#2#3#4% {% \XINT:NEhook:iterr\XINT_expr_iterry\romannumeral0#1(#4)\relax {#2}#3#1% }% \def\XINT_expr_iterry #1#2#3#4#5% {% \expandafter\XINT_expr_put_op_first \expanded \bgroup {\iffalse}\fi \XINT_expr_iterr:_b {#5#4\relax !#3}#1^~#20?\XINT_expr_cb_and_getop }% \def\XINT_expr_iterr:_b #1#2% {% \ifx +#2\xint_dothis\XINT_expr_iterr:_Ca\fi \ifx !#2!\xint_dothis\XINT_expr_iterr:_noop\fi \ifx ^#2\xint_dothis\XINT_expr_iterr:_end\fi \xint_orthat{\XINT_expr_iterr:_c}{#2}{#1}% }% \def\XINT_expr_iterr:_noop #1{\XINT_expr_iterr:_b }% \def\XINT_expr_iterr:_end #1#2~#3#4?{{#3}\iffalse{\fi}}% \def\XINT_expr_iterr:_c #1#2{\expandafter\XINT_expr_iterr:_d\romannumeral0#2{{#1}}{#2}}% \def\XINT_expr_iterr:_d #1{\ifx ^#1\xint_dothis\XINT_expr_iterr:_abort\fi \ifx ?#1\xint_dothis\XINT_expr_iterr:_break\fi \ifx !#1\xint_dothis\XINT_expr_iterr:_omit\fi \xint_orthat{\XINT_expr_iterr:_goon {#1}}}% \def\XINT_expr_iterr:_abort #1!#2^~#3?{\iffalse{\fi}}% \def\XINT_expr_iterr:_break #1!#2^~#3?{#1\iffalse{\fi}}% \def\XINT_expr_iterr:_omit #1!#2#{\expandafter\XINT_expr_iterr:_b\xint_gobble_i}% \def\XINT_expr_iterr:_goon #1!#2#{\XINT_expr_iterr:_goon_a{#1}}% \def\XINT_expr_iterr:_goon_a #1#2#3~#4?% {% \expandafter\XINT_expr_iterr:_b \expanded{\unexpanded{#3~}\xintTrim{-2}{#1#4}}0?% }% \def\XINT_expr_iterr:_Ca #1#2#3{\XINT_expr_iterr:_Cc#3.{#2}}% \def\XINT_expr_iterr:_Cb #1{\expandafter\XINT_expr_iterr:_Cc\the\numexpr#1+\xint_c_i.}% \def\XINT_expr_iterr:_Cc #1.#2{\expandafter\XINT_expr_iterr:_D\romannumeral0#2{{#1}}{#1}{#2}}% \def\XINT_expr_iterr:_D #1{\ifx ^#1\xint_dothis\XINT_expr_iterr:_abort\fi \ifx ?#1\xint_dothis\XINT_expr_iterr:_break\fi \ifx !#1\xint_dothis\XINT_expr_iterr:_Omit\fi \xint_orthat{\XINT_expr_iterr:_Goon {#1}}}% \def\XINT_expr_iterr:_Omit #1!#2#{\expandafter\XINT_expr_iterr:_Cb\xint_gooble_i}% \def\XINT_expr_iterr:_Goon #1!#2#{\XINT_expr_iterr:_Goon_a{#1}}% \def\XINT_expr_iterr:_Goon_a #1#2#3~#4?% {% \expandafter\XINT_expr_iterr:_Cb \expanded{\unexpanded{#3~}\xintTrim{-2}{#1#4}}0?% }% \def\XINT_expr_func_rrseq {\XINT_allexpr_rrseq \xintbareeval }% \def\XINT_flexpr_func_rrseq {\XINT_allexpr_rrseq \xintbarefloateval }% \def\XINT_iiexpr_func_rrseq {\XINT_allexpr_rrseq \xintbareiieval }% \def\XINT_allexpr_rrseq #1#2#3#4% {% \expandafter\XINT_expr_rrseqx\expandafter#1\expanded {\unexpanded{{#4}}{\xintRevWithBraces{#4}}\expandafter}% \romannumeral`&&@\XINT_expr_fetch_E_comma_V_equal_E_a {}% }% \def\XINT_expr_rrseqx #1#2#3#4#5% {% \XINT:NEhook:rrseq\XINT_expr_rrseqy\romannumeral0#1(#5)\relax {#2}{#3}#4#1% }% \def\XINT_expr_rrseqy #1#2#3#4#5#6% {% \expandafter\XINT_expr_put_op_first \expanded \bgroup {\iffalse}\fi #2\XINT_expr_rrseq:_b {#6#5\relax !#4}#1^~#30?\XINT_expr_cb_and_getop }% \def\XINT_expr_rrseq:_b #1#2% {% \ifx +#2\xint_dothis\XINT_expr_rrseq:_Ca\fi \ifx !#2!\xint_dothis\XINT_expr_rrseq:_noop\fi \ifx ^#2\xint_dothis\XINT_expr_rrseq:_end\fi \xint_orthat{\XINT_expr_rrseq:_c}{#2}{#1}% }% \def\XINT_expr_rrseq:_noop #1{\XINT_expr_rrseq:_b }% \def\XINT_expr_rrseq:_end #1#2~#3?{\iffalse{\fi}}% \def\XINT_expr_rrseq:_c #1#2{\expandafter\XINT_expr_rrseq:_d\romannumeral0#2{{#1}}{#2}}% \def\XINT_expr_rrseq:_d #1{\ifx ^#1\xint_dothis\XINT_expr_rrseq:_abort\fi \ifx ?#1\xint_dothis\XINT_expr_rrseq:_break\fi \ifx !#1\xint_dothis\XINT_expr_rrseq:_omit\fi \xint_orthat{\XINT_expr_rrseq:_goon {#1}}}% \def\XINT_expr_rrseq:_abort #1!#2^~#3?{\iffalse{\fi}}% \def\XINT_expr_rrseq:_break #1!#2^~#3?{#1\iffalse{\fi}}% \def\XINT_expr_rrseq:_omit #1!#2#{\expandafter\XINT_expr_rrseq:_b\xint_gobble_i}% \def\XINT_expr_rrseq:_goon #1!#2#{\XINT_expr_rrseq:_goon_a {#1}}% \def\XINT_expr_rrseq:_goon_a #1#2#3~#4?% {% #1\expandafter\XINT_expr_rrseq:_b\expanded{\unexpanded{#3~}\xintTrim{-2}{#1#4}}0?% }% \def\XINT_expr_rrseq:_Ca #1#2#3{\XINT_expr_rrseq:_Cc#3.{#2}}% \def\XINT_expr_rrseq:_Cb #1{\expandafter\XINT_expr_rrseq:_Cc\the\numexpr#1+\xint_c_i.}% \def\XINT_expr_rrseq:_Cc #1.#2{\expandafter\XINT_expr_rrseq:_D\romannumeral0#2{{#1}}{#1}{#2}}% \def\XINT_expr_rrseq:_D #1{\ifx ^#1\xint_dothis\XINT_expr_rrseq:_abort\fi \ifx ?#1\xint_dothis\XINT_expr_rrseq:_break\fi \ifx !#1\xint_dothis\XINT_expr_rrseq:_Omit\fi \xint_orthat{\XINT_expr_rrseq:_Goon {#1}}}% \def\XINT_expr_rrseq:_Omit #1!#2#{\expandafter\XINT_expr_rrseq:_Cb\xint_gobble_i}% \def\XINT_expr_rrseq:_Goon #1!#2#{\XINT_expr_rrseq:_Goon_a {#1}}% \def\XINT_expr_rrseq:_Goon_a #1#2#3~#4?% {% #1\expandafter\XINT_expr_rrseq:_Cb\expanded{\unexpanded{#3~}\xintTrim{-2}{#1#4}}0?% }% \catcode`? 11 \def\XINT_expr_onliteral_ndseq {% \expandafter\XINT_allexpr_ndseq_f \romannumeral`&&@\XINT_expr_fetch_E_comma_V_equal_E_a {}% }% \def\XINT_allexpr_ndseq_f #1#2{\xint_c_ii^v `{ndseqx}#2)\relax #1}% \def\XINT_expr_func_ndseqx {% \expandafter\XINT_allexpr_ndseqx\expandafter\xintbareeval \expandafter{\romannumeral0\expandafter\xint_gobble_i\string}% \expandafter\xintrevwithbraces \expanded\bgroup{\iffalse}\fi\XINT_allexpr_ndseq_A\XINT_expr_oparen }% \def\XINT_flexpr_func_ndseqx {% \expandafter\XINT_allexpr_ndseqx\expandafter\xintbarefloateval \expandafter{\romannumeral0\expandafter\xint_gobble_i\string}% \expandafter\xintrevwithbraces \expanded\bgroup{\iffalse}\fi\XINT_allexpr_ndseq_A\XINT_flexpr_oparen }% \def\XINT_iiexpr_func_ndseqx {% \expandafter\XINT_allexpr_ndseqx\expandafter\xintbareiieval \expandafter{\romannumeral0\expandafter\xint_gobble_i\string}% \expandafter\xintrevwithbraces \expanded\bgroup{\iffalse}\fi\XINT_allexpr_ndseq_A\XINT_iiexpr_oparen }% \def\XINT_allexpr_ndseq_A #1#2#3% {% \ifx#2\xint_c_ \expandafter\XINT_allexpr_ndseq_C \else \expandafter\XINT_allexpr_ndseq_B \fi #1% }% \def\XINT_allexpr_ndseq_B #1#2#3#4=% {% {#2}{\xint_zapspaces#3#4 \xint_gobble_i}% \expandafter\XINT_allexpr_ndseq_A\expandafter#1\romannumeral`&&@#1% }% \def\XINT_allexpr_ndseq_C #1#2{{#2}\iffalse{{{\fi}}}}% \def\XINT_allexpr_ndseqx #1#2#3#4% {% \expandafter\XINT_expr_put_op_first \expanded \bgroup \romannumeral0#1\empty \expanded{\xintReplicate{\xintLength{{#3}#2}/2}{[seq(}% \unexpanded{#4}% \XINT_allexpr_ndseqx_a #2{#3}^^% }% \relax \iffalse{\fi\expandafter}\romannumeral`&&@\XINT_expr_getop }% \def\XINT_allexpr_ndseqx_a #1#2% {% \xint_gob_til_^ #1\XINT_allexpr_ndseqx_e ^% \unexpanded{,#2=\XINTfstop.{#1})]}\XINT_allexpr_ndseqx_a }% \def\XINT_allexpr_ndseqx_e ^#1\XINT_allexpr_ndseqx_a{}% \def\XINT_expr_onliteral_ndmap #1,{\xint_c_ii^v `{ndmapx}\XINTfstop.{#1};}% \def\XINT_expr_func_ndmapx #1#2#3% {% \expandafter\XINT_allexpr_ndmapx \csname XINT_expr_func_\xint_zapspaces #3 \xint_gobble_i\endcsname \XINT_expr_oparen }% \def\XINT_flexpr_func_ndmapx #1#2#3% {% \expandafter\XINT_allexpr_ndmapx \csname XINT_flexpr_func_\xint_zapspaces #3 \xint_gobble_i\endcsname \XINT_flexpr_oparen }% \def\XINT_iiexpr_func_ndmapx #1#2#3% {% \expandafter\XINT_allexpr_ndmapx \csname XINT_iiexpr_func_\xint_zapspaces #3 \xint_gobble_i\endcsname \XINT_iiexpr_oparen }% \def\XINT_allexpr_ndmapx #1#2% {% \expandafter\XINT_expr_put_op_first \expanded\bgroup{\iffalse}\fi \expanded {\noexpand\XINT:NEhook:x:ndmapx \noexpand\XINT_allexpr_ndmapx_a \noexpand#1{}\expandafter}% \expanded\bgroup\expandafter\XINT_allexpr_ndmap_A \expandafter#2\romannumeral`&&@#2% }% \def\XINT_allexpr_ndmap_A #1#2#3% {% \ifx#3;% \expandafter\XINT_allexpr_ndmap_B \else \xint_afterfi{\XINT_allexpr_ndmap_C#2#3}% \fi #1% }% \def\XINT_allexpr_ndmap_B #1#2% {% {#2}\expandafter\XINT_allexpr_ndmap_A\expandafter#1\romannumeral`&&@#1% }% \def\XINT_allexpr_ndmap_C #1#2#3#4% {% {#4}^\relax\iffalse{{{\fi}}}#1#2% }% \def\XINT_allexpr_ndmapx_a #1#2#3% {% \xint_gob_til_^ #3\XINT_allexpr_ndmapx_l ^% \XINT_allexpr_ndmapx_b #1{#2}{#3}% }% \def\XINT_allexpr_ndmapx_l ^#1\XINT_allexpr_ndmapx_b #2#3#4\relax {% #2\empty\xint_firstofone{#3}% }% \def\XINT_allexpr_ndmapx_b #1#2#3#4\relax {% {\iffalse}\fi\XINT_allexpr_ndmapx_c {#4\relax}#1{#2}#3^% }% \def\XINT_allexpr_ndmapx_c #1#2#3#4% {% \xint_gob_til_^ #4\XINT_allexpr_ndmapx_e ^% \XINT_allexpr_ndmapx_a #2{#3{#4}}#1% \XINT_allexpr_ndmapx_c {#1}#2{#3}% }% \def\XINT_allexpr_ndmapx_e ^#1\XINT_allexpr_ndmapx_c {\iffalse{\fi}\xint_gobble_iii}% \def\XINT_expr_onliteral_ndfillraw #1,{\xint_c_ii^v `{ndfillrawx}\XINTfstop.{{#1}},}% \def\XINT_expr_func_ndfillrawx #1#2#3% {% \expandafter#1\expandafter#2\expanded{{{\XINT_allexpr_ndfillrawx_a #3}}}% }% \let\XINT_iiexpr_func_ndfillrawx\XINT_expr_func_ndfillrawx \let\XINT_flexpr_func_ndfillrawx\XINT_expr_func_ndfillrawx \def\XINT_allexpr_ndfillrawx_a #1#2% {% \expandafter\XINT_allexpr_ndfillrawx_b \romannumeral0\xintApply{\xintNum}{#2}^\relax {#1}% }% \def\XINT_allexpr_ndfillrawx_b #1#2\relax#3% {% \xint_gob_til_^ #1\XINT_allexpr_ndfillrawx_c ^% \xintReplicate{#1}{{\XINT_allexpr_ndfillrawx_b #2\relax {#3}}}% }% \def\XINT_allexpr_ndfillrawx_c ^\xintReplicate #1#2% {% \expandafter\XINT_allexpr_ndfillrawx_d\xint_firstofone #2% }% \def\XINT_allexpr_ndfillrawx_d\XINT_allexpr_ndfillrawx_b \relax #1{#1}% \def\XINT_expr_onliteral_bool #1)% {\expandafter\XINT_expr_put_op_first\expanded{{{\xintBool{#1}}}\expandafter }\romannumeral`&&@\XINT_expr_getop}% \def\XINT_expr_onliteral_togl #1)% {\expandafter\XINT_expr_put_op_first\expanded{{{\xintToggle{#1}}}\expandafter }\romannumeral`&&@\XINT_expr_getop}% \def\XINT_expr_onliteral_protect #1)% {\expandafter\XINT_expr_put_op_first\expanded{{{\detokenize{#1}}}\expandafter }\romannumeral`&&@\XINT_expr_getop}% \def\XINT_expr_onliteral_qint #1)% {\expandafter\XINT_expr_put_op_first\expanded{{{\xintiNum{#1}}}\expandafter }\romannumeral`&&@\XINT_expr_getop}% \def\XINT_expr_onliteral_qfrac #1)% {\expandafter\XINT_expr_put_op_first\expanded{{{\xintRaw{#1}}}\expandafter }\romannumeral`&&@\XINT_expr_getop}% \def\XINT_expr_onliteral_qfloat #1)% {\expandafter\XINT_expr_put_op_first\expanded{{{\XINTinFloatSdigits{#1}}}\expandafter }\romannumeral`&&@\XINT_expr_getop}% \def\XINT_expr_onliteral_qraw #1)% {\expandafter\XINT_expr_put_op_first\expanded{{#1}\expandafter }\romannumeral`&&@\XINT_expr_getop}% \def\XINT_expr_onliteral_random #1)% {\expandafter\XINT_expr_put_op_first\expanded{{{\XINTinRandomFloatSdigits}}\expandafter }\romannumeral`&&@\XINT_expr_getop}% \def\XINT_expr_onliteral_qrand #1)% {\expandafter\XINT_expr_put_op_first\expanded{{{\XINTinRandomFloatSixteen}}\expandafter }\romannumeral`&&@\XINT_expr_getop}% \def\XINT_expr_onliteral_rbit #1)% {\expandafter\XINT_expr_put_op_first\expanded{{{\xintRandBit}}\expandafter }\romannumeral`&&@\XINT_expr_getop}% \def\XINT:expr:f:one:and:opt #1#2#3!#4#5% {% \if\relax#3\relax\expandafter\xint_firstoftwo\else \expandafter\xint_secondoftwo\fi {#4}{#5[\xintNum{#2}]}{#1}% }% \def\XINT:expr:f:tacitzeroifone #1#2#3!#4#5% {% \if\relax#3\relax\expandafter\xint_firstoftwo\else \expandafter\xint_secondoftwo\fi {#4{0}}{#5{\xintNum{#2}}}{#1}% }% \def\XINT:expr:f:iitacitzeroifone #1#2#3!#4% {% \if\relax#3\relax\expandafter\xint_firstoftwo\else \expandafter\xint_secondoftwo\fi {#4{0}}{#4{#2}}{#1}% }% \def\XINT_expr_func_num #1#2#3% {% \expandafter #1\expandafter #2\expandafter{% \romannumeral`&&@\XINT:NEhook:f:one:from:one {\romannumeral`&&@\xintNum#3}}% }% \let\XINT_flexpr_func_num\XINT_expr_func_num \let\XINT_iiexpr_func_num\XINT_expr_func_num \def\XINT_expr_func_reduce #1#2#3% {% \expandafter #1\expandafter #2\expandafter{% \romannumeral`&&@\XINT:NEhook:f:one:from:one {\romannumeral`&&@\xintIrr#3}}% }% \let\XINT_flexpr_func_reduce\XINT_expr_func_reduce \def\XINT_expr_func_preduce #1#2#3% {% \expandafter #1\expandafter #2\expandafter{% \romannumeral`&&@\XINT:NEhook:f:one:from:one {\romannumeral`&&@\xintPIrr#3}}% }% \let\XINT_flexpr_func_preduce\XINT_expr_func_preduce \def\XINT_expr_func_abs #1#2#3% {% \expandafter #1\expandafter #2\expandafter{% \romannumeral`&&@\XINT:NEhook:f:one:from:one {\romannumeral`&&@\xintAbs#3}}% }% \let\XINT_flexpr_func_abs\XINT_expr_func_abs \def\XINT_iiexpr_func_abs #1#2#3% {% \expandafter #1\expandafter #2\expandafter{% \romannumeral`&&@\XINT:NEhook:f:one:from:one {\romannumeral`&&@\xintiiAbs#3}}% }% \def\XINT_expr_func_sgn #1#2#3% {% \expandafter #1\expandafter #2\expandafter{% \romannumeral`&&@\XINT:NEhook:f:one:from:one {\romannumeral`&&@\xintSgn#3}}% }% \let\XINT_flexpr_func_sgn\XINT_expr_func_sgn \def\XINT_iiexpr_func_sgn #1#2#3% {% \expandafter #1\expandafter #2\expandafter{% \romannumeral`&&@\XINT:NEhook:f:one:from:one {\romannumeral`&&@\xintiiSgn#3}}% }% \def\XINT_expr_func_frac #1#2#3% {% \expandafter #1\expandafter #2\expandafter{% \romannumeral`&&@\XINT:NEhook:f:one:from:one {\romannumeral`&&@\xintTFrac#3}}% }% \def\XINT_flexpr_func_frac #1#2#3% {% \expandafter #1\expandafter #2\expandafter{% \romannumeral`&&@\XINT:NEhook:f:one:from:one {\romannumeral`&&@\XINTinFloatFrac#3}}% }% \def\XINT_expr_func_floor #1#2#3% {% \expandafter #1\expandafter #2\expandafter{% \romannumeral`&&@\XINT:NEhook:f:one:from:one {\romannumeral`&&@\xintFloor#3}}% }% \let\XINT_flexpr_func_floor\XINT_expr_func_floor \def\XINT_iiexpr_func_floor #1#2#3% {% \expandafter #1\expandafter #2\expandafter{% \romannumeral`&&@\XINT:NEhook:f:one:from:one {\romannumeral`&&@\xintiFloor#3}}% }% \def\XINT_expr_func_ceil #1#2#3% {% \expandafter #1\expandafter #2\expandafter{% \romannumeral`&&@\XINT:NEhook:f:one:from:one {\romannumeral`&&@\xintCeil#3}}% }% \let\XINT_flexpr_func_ceil\XINT_expr_func_ceil \def\XINT_iiexpr_func_ceil #1#2#3% {% \expandafter #1\expandafter #2\expandafter{% \romannumeral`&&@\XINT:NEhook:f:one:from:one {\romannumeral`&&@\xintiCeil#3}}% }% \def\XINT_expr_func_sqr #1#2#3% {% \expandafter #1\expandafter #2\expandafter{% \romannumeral`&&@\XINT:NEhook:f:one:from:one {\romannumeral`&&@\xintSqr#3}}% }% \def\XINT_flexpr_func_sqr #1#2#3% {% \expandafter #1\expandafter #2\expandafter{% \romannumeral`&&@\XINT:NEhook:f:one:from:one {\romannumeral`&&@\XINTinFloatSqr#3}}% }% \def\XINT_iiexpr_func_sqr #1#2#3% {% \expandafter #1\expandafter #2\expandafter{% \romannumeral`&&@\XINT:NEhook:f:one:from:one {\romannumeral`&&@\xintiiSqr#3}}% }% \def\XINT_expr_func_? #1#2#3% {% \expandafter #1\expandafter #2\expandafter{% \romannumeral`&&@\XINT:NEhook:f:one:from:one {\romannumeral`&&@\xintiiIsNotZero#3}}% }% \let\XINT_flexpr_func_? \XINT_expr_func_? \let\XINT_iiexpr_func_? \XINT_expr_func_? \def\XINT_expr_func_! #1#2#3% {% \expandafter #1\expandafter #2\expandafter{% \romannumeral`&&@\XINT:NEhook:f:one:from:one {\romannumeral`&&@\xintiiIsZero#3}}% }% \let\XINT_flexpr_func_! \XINT_expr_func_! \let\XINT_iiexpr_func_! \XINT_expr_func_! \def\XINT_expr_func_not #1#2#3% {% \expandafter #1\expandafter #2\expandafter{% \romannumeral`&&@\XINT:NEhook:f:one:from:one {\romannumeral`&&@\xintiiIsZero#3}}% }% \let\XINT_flexpr_func_not \XINT_expr_func_not \let\XINT_iiexpr_func_not \XINT_expr_func_not \def\XINT_expr_func_odd #1#2#3% {% \expandafter #1\expandafter #2\expandafter{% \romannumeral`&&@\XINT:NEhook:f:one:from:one {\romannumeral`&&@\xintOdd#3}}% }% \let\XINT_flexpr_func_odd\XINT_expr_func_odd \def\XINT_iiexpr_func_odd #1#2#3% {% \expandafter #1\expandafter #2\expandafter{% \romannumeral`&&@\XINT:NEhook:f:one:from:one {\romannumeral`&&@\xintiiOdd#3}}% }% \def\XINT_expr_func_even #1#2#3% {% \expandafter #1\expandafter #2\expandafter{% \romannumeral`&&@\XINT:NEhook:f:one:from:one {\romannumeral`&&@\xintEven#3}}% }% \let\XINT_flexpr_func_even\XINT_expr_func_even \def\XINT_iiexpr_func_even #1#2#3% {% \expandafter #1\expandafter #2\expandafter{% \romannumeral`&&@\XINT:NEhook:f:one:from:one {\romannumeral`&&@\xintiiEven#3}}% }% \def\XINT_expr_func_isint #1#2#3% {% \expandafter #1\expandafter #2\expandafter{% \romannumeral`&&@\XINT:NEhook:f:one:from:one {\romannumeral`&&@\xintIsInt#3}}% }% \def\XINT_flexpr_func_isint #1#2#3% {% \expandafter #1\expandafter #2\expandafter{% \romannumeral`&&@\XINT:NEhook:f:one:from:one {\romannumeral`&&@\xintFloatIsInt#3}}% }% \let\XINT_iiexpr_func_isint\XINT_expr_func_isint % ? perhaps rather always 1 \def\XINT_expr_func_isone #1#2#3% {% \expandafter #1\expandafter #2\expandafter{% \romannumeral`&&@\XINT:NEhook:f:one:from:one {\romannumeral`&&@\xintIsOne#3}}% }% \let\XINT_flexpr_func_isone\XINT_expr_func_isone \def\XINT_iiexpr_func_isone #1#2#3% {% \expandafter #1\expandafter #2\expandafter{% \romannumeral`&&@\XINT:NEhook:f:one:from:one {\romannumeral`&&@\xintiiIsOne#3}}% }% \def\XINT_expr_func_factorial #1#2#3% {% \expandafter #1\expandafter #2\expandafter{\expandafter{% \romannumeral`&&@\XINT:NEhook:f:one:and:opt:direct \XINT:expr:f:one:and:opt #3,!\xintFac\XINTinFloatFac }}% }% \def\XINT_flexpr_func_factorial #1#2#3% {% \expandafter #1\expandafter #2\expandafter{\expandafter{% \romannumeral`&&@\XINT:NEhook:f:one:and:opt:direct \XINT:expr:f:one:and:opt#3,!\XINTinFloatFacdigits\XINTinFloatFac }}% }% \def\XINT_iiexpr_func_factorial #1#2#3% {% \expandafter #1\expandafter #2\expandafter{% \romannumeral`&&@\XINT:NEhook:f:one:from:one {\romannumeral`&&@\xintiiFac#3}}% }% \def\XINT_expr_func_sqrt #1#2#3% {% \expandafter #1\expandafter #2\expandafter{\expandafter{% \romannumeral`&&@\XINT:NEhook:f:one:and:opt:direct \XINT:expr:f:one:and:opt #3,!\XINTinFloatSqrtdigits\XINTinFloatSqrt }}% }% \let\XINT_flexpr_func_sqrt\XINT_expr_func_sqrt \def\XINT_iiexpr_func_sqrt #1#2#3% {% \expandafter #1\expandafter #2\expandafter{% \romannumeral`&&@\XINT:NEhook:f:one:from:one {\romannumeral`&&@\xintiiSqrt#3}}% }% \def\XINT_iiexpr_func_sqrtr #1#2#3% {% \expandafter #1\expandafter #2\expandafter{% \romannumeral`&&@\XINT:NEhook:f:one:from:one {\romannumeral`&&@\xintiiSqrtR#3}}% }% \def\XINT_expr_func_inv #1#2#3% {% \expandafter #1\expandafter #2\expandafter{% \romannumeral`&&@\XINT:NEhook:f:one:from:one {\romannumeral`&&@\xintInv#3}}% }% \def\XINT_flexpr_func_inv #1#2#3% {% \expandafter #1\expandafter #2\expandafter{% \romannumeral`&&@\XINT:NEhook:f:one:from:one {\romannumeral`&&@\XINTinFloatInv#3}}% }% \def\XINT_expr_func_round #1#2#3% {% \expandafter #1\expandafter #2\expandafter{\expandafter{% \romannumeral`&&@\XINT:NEhook:f:tacitzeroifone:direct \XINT:expr:f:tacitzeroifone #3,!\xintiRound\xintRound }}% }% \let\XINT_flexpr_func_round\XINT_expr_func_round \def\XINT_iiexpr_func_round #1#2#3% {% \expandafter #1\expandafter #2\expandafter{\expandafter{% \romannumeral`&&@\XINT:NEhook:f:iitacitzeroifone:direct \XINT:expr:f:iitacitzeroifone #3,!\xintiRound }}% }% \def\XINT_expr_func_trunc #1#2#3% {% \expandafter #1\expandafter #2\expandafter{\expandafter{% \romannumeral`&&@\XINT:NEhook:f:tacitzeroifone:direct \XINT:expr:f:tacitzeroifone #3,!\xintiTrunc\xintTrunc }}% }% \let\XINT_flexpr_func_trunc\XINT_expr_func_trunc \def\XINT_iiexpr_func_trunc #1#2#3% {% \expandafter #1\expandafter #2\expandafter{\expandafter{% \romannumeral`&&@\XINT:NEhook:f:iitacitzeroifone:direct \XINT:expr:f:iitacitzeroifone #3,!\xintiTrunc }}% }% \def\XINT_expr_func_float #1#2#3% {% \expandafter #1\expandafter #2\expandafter{\expandafter{% \romannumeral`&&@\XINT:NEhook:f:one:and:opt:direct \XINT:expr:f:one:and:opt #3,!\XINTinFloatdigits\XINTinFloat }}% }% \let\XINT_flexpr_func_float\XINT_expr_func_float \def\XINT_expr_func_float_dgt #1#2#3% {% \expandafter #1\expandafter #2\expandafter{% \romannumeral`&&@\XINT:NEhook:f:one:from:one {\romannumeral`&&@\XINTinFloatdigits#3}}% }% \let\XINT_flexpr_func_float_dgt\XINT_expr_func_float_dgt \def\XINT_expr_func_float_dgtormax #1#2#3% {% \expandafter #1\expandafter #2\expandafter{% \romannumeral`&&@\XINT:NEhook:f:one:from:one {\romannumeral`&&@\XINTinFloatdigitsormax#3}}% }% \let\XINT_flexpr_func_float_dgtormax\XINT_expr_func_float_dgtormax \def\XINT_expr_func_sfloat #1#2#3% {% \expandafter #1\expandafter #2\expandafter{\expandafter{% \romannumeral`&&@\XINT:NEhook:f:one:and:opt:direct \XINT:expr:f:one:and:opt #3,!\XINTinFloatSdigits\XINTinFloatS }}% }% \let\XINT_flexpr_func_sfloat\XINT_expr_func_sfloat \def\XINT_expr_func_sfloat_dgtormax #1#2#3% {% \expandafter #1\expandafter #2\expandafter{% \romannumeral`&&@\XINT:NEhook:f:one:from:one {\romannumeral`&&@\XINTinFloatSdigitsormax#3}}% }% \let\XINT_flexpr_func_sfloat_dgtormax\XINT_expr_func_sfloat_dgtormax \expandafter\def\csname XINT_expr_func_ilog10\endcsname #1#2#3% {% \expandafter #1\expandafter #2\expandafter{\expandafter{% \romannumeral`&&@\XINT:NEhook:f:one:and:opt:direct \XINT:expr:f:one:and:opt #3,!\xintiLogTen\XINTFloatiLogTen }}% }% \expandafter\def\csname XINT_flexpr_func_ilog10\endcsname #1#2#3% {% \expandafter #1\expandafter #2\expandafter{\expandafter{% \romannumeral`&&@\XINT:NEhook:f:one:and:opt:direct \XINT:expr:f:one:and:opt #3,!\XINTFloatiLogTendigits\XINTFloatiLogTen }}% }% \expandafter\def\csname XINT_iiexpr_func_ilog10\endcsname #1#2#3% {% \expandafter #1\expandafter #2\expandafter{% \romannumeral`&&@\XINT:NEhook:f:one:from:one {\romannumeral`&&@\xintiiLogTen#3}}% }% \def\XINT_expr_func_divmod #1#2#3% {% \expandafter #1\expandafter #2\expandafter{\romannumeral`&&@% \XINT:NEhook:f:one:from:two {\romannumeral`&&@\xintDivMod #3}}% }% \def\XINT_flexpr_func_divmod #1#2#3% {% \expandafter #1\expandafter #2\expandafter{\romannumeral`&&@% \XINT:NEhook:f:one:from:two {\romannumeral`&&@\XINTinFloatDivMod #3}}% }% \def\XINT_iiexpr_func_divmod #1#2#3% {% \expandafter #1\expandafter #2\expandafter{\romannumeral`&&@% \XINT:NEhook:f:one:from:two {\romannumeral`&&@\xintiiDivMod #3}}% }% \def\XINT_expr_func_mod #1#2#3% {% \expandafter #1\expandafter #2\expandafter{\romannumeral`&&@% \XINT:NEhook:f:one:from:two {\romannumeral`&&@\xintMod#3}}% }% \def\XINT_flexpr_func_mod #1#2#3% {% \expandafter #1\expandafter #2\expandafter{\romannumeral`&&@% \XINT:NEhook:f:one:from:two {\romannumeral`&&@\XINTinFloatMod#3}}% }% \def\XINT_iiexpr_func_mod #1#2#3% {% \expandafter #1\expandafter #2\expandafter{\romannumeral`&&@% \XINT:NEhook:f:one:from:two {\romannumeral`&&@\xintiiMod#3}}% }% \def\XINT_expr_func_binomial #1#2#3% {% \expandafter #1\expandafter #2\expandafter{\romannumeral`&&@% \XINT:NEhook:f:one:from:two {\romannumeral`&&@\xintBinomial #3}}% }% \def\XINT_flexpr_func_binomial #1#2#3% {% \expandafter #1\expandafter #2\expandafter{\romannumeral`&&@% \XINT:NEhook:f:one:from:two {\romannumeral`&&@\XINTinFloatBinomial #3}}% }% \def\XINT_iiexpr_func_binomial #1#2#3% {% \expandafter #1\expandafter #2\expandafter{\romannumeral`&&@% \XINT:NEhook:f:one:from:two {\romannumeral`&&@\xintiiBinomial #3}}% }% \def\XINT_expr_func_pfactorial #1#2#3% {% \expandafter #1\expandafter #2\expandafter{\romannumeral`&&@% \XINT:NEhook:f:one:from:two {\romannumeral`&&@\xintPFactorial #3}}% }% \def\XINT_flexpr_func_pfactorial #1#2#3% {% \expandafter #1\expandafter #2\expandafter{\romannumeral`&&@% \XINT:NEhook:f:one:from:two {\romannumeral`&&@\XINTinFloatPFactorial #3}}% }% \def\XINT_iiexpr_func_pfactorial #1#2#3% {% \expandafter #1\expandafter #2\expandafter{\romannumeral`&&@% \XINT:NEhook:f:one:from:two {\romannumeral`&&@\xintiiPFactorial #3}}% }% \def\XINT_expr_func_randrange #1#2#3% {% \expandafter #1\expandafter #2\expanded{{{% \XINT:expr:randrange #3,!% }}}% }% \let\XINT_flexpr_func_randrange\XINT_expr_func_randrange \def\XINT_iiexpr_func_randrange #1#2#3% {% \expandafter #1\expandafter #2\expanded{{{% \XINT:iiexpr:randrange #3,!% }}}% }% \def\XINT:expr:randrange #1#2#3!% {% \if\relax#3\relax\expandafter\xint_firstoftwo\else \expandafter\xint_secondoftwo\fi {\xintiiRandRange{\XINT:NEhook:f:one:from:one:direct\xintNum{#1}}}% {\xintiiRandRangeAtoB{\XINT:NEhook:f:one:from:one:direct\xintNum{#1}}% {\XINT:NEhook:f:one:from:one:direct\xintNum{#2}}% }% }% \def\XINT:iiexpr:randrange #1#2#3!% {% \if\relax#3\relax\expandafter\xint_firstoftwo\else \expandafter\xint_secondoftwo\fi {\xintiiRandRange{#1}}% {\xintiiRandRangeAtoB{#1}{#2}}% }% \def\XINT_iiexpr_func_iquo #1#2#3% {% \expandafter #1\expandafter #2\expandafter{\romannumeral`&&@% \XINT:NEhook:f:one:from:two {\romannumeral`&&@\xintiiQuo #3}}% }% \def\XINT_iiexpr_func_irem #1#2#3% {% \expandafter #1\expandafter #2\expandafter{\romannumeral`&&@% \XINT:NEhook:f:one:from:two {\romannumeral`&&@\xintiiRem #3}}% }% \def\XINT_expr_func_gcd #1#2#3% {% \expandafter #1\expandafter #2\expandafter{\expandafter {\romannumeral`&&@\XINT:NEhook:f:from:delim:u\XINT_GCDof#3^}}% }% \let\XINT_flexpr_func_gcd\XINT_expr_func_gcd \def\XINT_iiexpr_func_gcd #1#2#3% {% \expandafter #1\expandafter #2\expandafter{\expandafter {\romannumeral`&&@\XINT:NEhook:f:from:delim:u\XINT_iiGCDof#3^}}% }% \def\XINT_expr_func_lcm #1#2#3% {% \expandafter #1\expandafter #2\expandafter{\expandafter {\romannumeral`&&@\XINT:NEhook:f:from:delim:u\XINT_LCMof#3^}}% }% \let\XINT_flexpr_func_lcm\XINT_expr_func_lcm \def\XINT_iiexpr_func_lcm #1#2#3% {% \expandafter #1\expandafter #2\expandafter{\expandafter {\romannumeral`&&@\XINT:NEhook:f:from:delim:u\XINT_iiLCMof#3^}}% }% \def\XINT_expr_func_max #1#2#3% {% \expandafter #1\expandafter #2\expandafter{\expandafter {\romannumeral`&&@\XINT:NEhook:f:from:delim:u\XINT_Maxof#3^}}% }% \def\XINT_iiexpr_func_max #1#2#3% {% \expandafter #1\expandafter #2\expandafter{\expandafter {\romannumeral`&&@\XINT:NEhook:f:from:delim:u\XINT_iiMaxof#3^}}% }% \def\XINT_flexpr_func_max #1#2#3% {% \expandafter #1\expandafter #2\expandafter{\expandafter {\romannumeral`&&@\XINT:NEhook:f:from:delim:u\XINTinFloatMaxof#3^}}% }% \def\XINT_expr_func_min #1#2#3% {% \expandafter #1\expandafter #2\expandafter{\expandafter {\romannumeral`&&@\XINT:NEhook:f:from:delim:u\XINT_Minof#3^}}% }% \def\XINT_iiexpr_func_min #1#2#3% {% \expandafter #1\expandafter #2\expandafter{\expandafter {\romannumeral`&&@\XINT:NEhook:f:from:delim:u\XINT_iiMinof#3^}}% }% \def\XINT_flexpr_func_min #1#2#3% {% \expandafter #1\expandafter #2\expandafter{\expandafter {\romannumeral`&&@\XINT:NEhook:f:from:delim:u\XINTinFloatMinof#3^}}% }% \expandafter \def\csname XINT_expr_func_+\endcsname #1#2#3% {% \expandafter #1\expandafter #2\expandafter{\expandafter {\romannumeral`&&@\XINT:NEhook:f:from:delim:u\XINT_Sum#3^}}% }% \expandafter \def\csname XINT_flexpr_func_+\endcsname #1#2#3% {% \expandafter #1\expandafter #2\expandafter{\expandafter {\romannumeral`&&@\XINT:NEhook:f:from:delim:u\XINTinFloatSum#3^}}% }% \expandafter \def\csname XINT_iiexpr_func_+\endcsname #1#2#3% {% \expandafter #1\expandafter #2\expandafter{\expandafter {\romannumeral`&&@\XINT:NEhook:f:from:delim:u\XINT_iiSum#3^}}% }% \expandafter \def\csname XINT_expr_func_*\endcsname #1#2#3% {% \expandafter #1\expandafter #2\expandafter{\expandafter {\romannumeral`&&@\XINT:NEhook:f:from:delim:u\XINT_Prd#3^}}% }% \expandafter \def\csname XINT_flexpr_func_*\endcsname #1#2#3% {% \expandafter #1\expandafter #2\expandafter{\expandafter {\romannumeral`&&@\XINT:NEhook:f:from:delim:u\XINTinFloatPrd#3^}}% }% \expandafter \def\csname XINT_iiexpr_func_*\endcsname #1#2#3% {% \expandafter #1\expandafter #2\expandafter{\expandafter {\romannumeral`&&@\XINT:NEhook:f:from:delim:u\XINT_iiPrd#3^}}% }% \def\XINT_expr_func_all #1#2#3% {% \expandafter #1\expandafter #2\expandafter{\expandafter {\romannumeral`&&@\XINT:NEhook:f:from:delim:u\XINT_ANDof#3^}}% }% \let\XINT_flexpr_func_all\XINT_expr_func_all \let\XINT_iiexpr_func_all\XINT_expr_func_all \def\XINT_expr_func_any #1#2#3% {% \expandafter #1\expandafter #2\expandafter{\expandafter {\romannumeral`&&@\XINT:NEhook:f:from:delim:u\XINT_ORof#3^}}% }% \let\XINT_flexpr_func_any\XINT_expr_func_any \let\XINT_iiexpr_func_any\XINT_expr_func_any \def\XINT_expr_func_xor #1#2#3% {% \expandafter #1\expandafter #2\expandafter{\expandafter {\romannumeral`&&@\XINT:NEhook:f:from:delim:u\XINT_XORof#3^}}% }% \let\XINT_flexpr_func_xor\XINT_expr_func_xor \let\XINT_iiexpr_func_xor\XINT_expr_func_xor \def\XINT_expr_func_len #1#2#3% {% \expandafter#1\expandafter#2\expandafter{\expandafter{% \romannumeral`&&@\XINT:NEhook:f:LFL\xintLength {\romannumeral\XINT:NEhook:r:check#3^}% }}% }% \let\XINT_flexpr_func_len \XINT_expr_func_len \let\XINT_iiexpr_func_len \XINT_expr_func_len \def\XINT_expr_func_first #1#2#3% {% \expandafter #1\expandafter #2\expandafter{% \romannumeral`&&@\XINT:NEhook:f:LFL\xintFirstOne {\romannumeral\XINT:NEhook:r:check#3^}% }% }% \let\XINT_flexpr_func_first\XINT_expr_func_first \let\XINT_iiexpr_func_first\XINT_expr_func_first \def\XINT_expr_func_last #1#2#3% {% \expandafter #1\expandafter #2\expandafter{% \romannumeral`&&@\XINT:NEhook:f:LFL\xintLastOne {\romannumeral\XINT:NEhook:r:check#3^}% }% }% \let\XINT_flexpr_func_last\XINT_expr_func_last \let\XINT_iiexpr_func_last\XINT_expr_func_last \def\XINT_expr_func_reversed #1#2#3% {% \expandafter #1\expandafter #2\expandafter{% \romannumeral`&&@\XINT:NEhook:f:reverse\XINT_expr_reverse #3^^#3\xint:\xint:\xint:\xint: \xint:\xint:\xint:\xint:\xint_bye }% }% \def\XINT_expr_reverse #1#2% {% \if ^\noexpand#2% \expandafter\XINT_expr_reverse:_one_or_none\string#1.% \else \expandafter\XINT_expr_reverse:_at_least_two \fi }% \def\XINT_expr_reverse:_at_least_two #1^^{\XINT_revwbr_loop {}}% \def\XINT_expr_reverse:_one_or_none #1% {% \if #1\bgroup\xint_dothis\XINT_expr_reverse:_nutple\fi \if #1^\xint_dothis\XINT_expr_reverse:_nil\fi \xint_orthat\XINT_expr_reverse:_leaf }% \edef\XINT_expr_reverse:_nil #1\xint_bye{\noexpand\fi\space}% \def\XINT_expr_reverse:_leaf#1\fi #2\xint:#3\xint_bye{\fi\xint_gob_andstop_i#2}% \def\XINT_expr_reverse:_nutple% {% \expandafter\XINT_expr_reverse:_nutple_a\expandafter{\string}% }% \def\XINT_expr_reverse:_nutple_a #1^#2\xint:#3\xint_bye {% \fi\expandafter {\romannumeral0\XINT_revwbr_loop{}#2\xint:#3\xint_bye}% }% \let\XINT_flexpr_func_reversed\XINT_expr_func_reversed \let\XINT_iiexpr_func_reversed\XINT_expr_func_reversed \def\XINT_expr_func_if #1#2#3% {% \expandafter #1\expandafter #2\expandafter{% \romannumeral`&&@\XINT:NEhook:branch{\romannumeral`&&@\xintiiifNotZero #3}}% }% \let\XINT_flexpr_func_if\XINT_expr_func_if \let\XINT_iiexpr_func_if\XINT_expr_func_if \def\XINT_expr_func_ifint #1#2#3% {% \expandafter #1\expandafter #2\expandafter{% \romannumeral`&&@\XINT:NEhook:branch{\romannumeral`&&@\xintifInt #3}}% }% \let\XINT_iiexpr_func_ifint\XINT_expr_func_ifint \def\XINT_flexpr_func_ifint #1#2#3% {% \expandafter #1\expandafter #2\expandafter{% \romannumeral`&&@\XINT:NEhook:branch{\romannumeral`&&@\xintifFloatInt #3}}% }% \def\XINT_expr_func_ifone #1#2#3% {% \expandafter #1\expandafter #2\expandafter{% \romannumeral`&&@\XINT:NEhook:branch{\romannumeral`&&@\xintifOne #3}}% }% \let\XINT_flexpr_func_ifone\XINT_expr_func_ifone \def\XINT_iiexpr_func_ifone #1#2#3% {% \expandafter #1\expandafter #2\expandafter{% \romannumeral`&&@\XINT:NEhook:branch{\romannumeral`&&@\xintiiifOne #3}}% }% \def\XINT_expr_func_ifsgn #1#2#3% {% \expandafter #1\expandafter #2\expandafter{% \romannumeral`&&@\XINT:NEhook:branch{\romannumeral`&&@\xintiiifSgn #3}}% }% \let\XINT_flexpr_func_ifsgn\XINT_expr_func_ifsgn \let\XINT_iiexpr_func_ifsgn\XINT_expr_func_ifsgn \def\XINT_expr_func_nuple #1#2#3{#1#2{{#3}}}% \let\XINT_flexpr_func_nuple\XINT_expr_func_nuple \let\XINT_iiexpr_func_nuple\XINT_expr_func_nuple \def\XINT_expr_func_unpack #1#2%#3% {\expandafter#1\expandafter#2\romannumeral0\XINT:NEhook:unpack}% \let\XINT_flexpr_func_unpack\XINT_expr_func_unpack \let\XINT_iiexpr_func_unpack\XINT_expr_func_unpack \def\XINT_expr_func_flat #1#2%#3% {% \expandafter#1\expandafter#2\expanded \XINT:NEhook:x:flatten\XINT:expr:flatten }% \let\XINT_flexpr_func_flat\XINT_expr_func_flat \let\XINT_iiexpr_func_flat\XINT_expr_func_flat \let\XINT:NEhook:x:flatten\empty \def\XINT_expr_func_zip #1#2%#3% {% \expandafter#1\expandafter#2\romannumeral`&&@% \XINT:NEhook:x:zip\XINT:expr:zip }% \let\XINT_flexpr_func_zip\XINT_expr_func_zip \let\XINT_iiexpr_func_zip\XINT_expr_func_zip \let\XINT:NEhook:x:zip\empty \def\XINT:expr:zip#1{\expandafter{\expanded\XINT_zip_A#1\xint_bye\xint_bye}}% \def\XINT_tmpa #1#2#3#4#5% {% \def #1##1(##2)##3={% \edef\XINT_deffunc_tmpa {##1}% \edef\XINT_deffunc_tmpa {\xint_zapspaces_o \XINT_deffunc_tmpa}% \def\XINT_deffunc_tmpb {0}% \edef\XINT_deffunc_tmpd {##2}% \edef\XINT_deffunc_tmpd {\xint_zapspaces_o\XINT_deffunc_tmpd}% \def\XINT_deffunc_tmpe {0}% \expandafter#5\romannumeral\XINT_expr_fetch_to_semicolon }% end of \xintdeffunc_a definition \def#5##1{% \def\XINT_deffunc_tmpc{(##1)}% \ifnum\xintLength:f:csv{\XINT_deffunc_tmpd}>\xint_c_ \xintFor ####1 in {\XINT_deffunc_tmpd}\do {% \xintifForFirst{\let\XINT_deffunc_tmpd\empty}{}% \def\XINT_deffunc_tmpf{####1}% \if*\xintFirstItem{####1}% \xintifForLast {% \def\XINT_deffunc_tmpe{1}% \edef\XINT_deffunc_tmpf{\xintTrim{1}{####1}}% }% {% \edef\XINT_deffunc_tmpf{\xintTrim{1}{####1}}% \xintMessage{xintexpr}{Error} {Only the last positional argument can be variadic. Trimmed ####1 to \XINT_deffunc_tmpf}% }% \fi \XINT_expr_makedummy{\XINT_deffunc_tmpf}% \edef\XINT_deffunc_tmpd{\XINT_deffunc_tmpd{\XINT_deffunc_tmpf}}% \edef\XINT_deffunc_tmpb {\the\numexpr\XINT_deffunc_tmpb+\xint_c_i}% \edef\XINT_deffunc_tmpc {subs(\unexpanded\expandafter{\XINT_deffunc_tmpc},% \XINT_deffunc_tmpf=################\XINT_deffunc_tmpb)}% }% \fi \ifcase\XINT_deffunc_tmpb\space \expandafter\XINT_expr_defuserfunc_none\csname \else \expandafter\XINT_expr_defuserfunc\csname \fi XINT_#2_func_\XINT_deffunc_tmpa\expandafter\endcsname \csname XINT_#2_userfunc_\XINT_deffunc_tmpa\expandafter\endcsname \expandafter{\XINT_deffunc_tmpa}{#2}% \expandafter#3\csname XINT_#2_userfunc_\XINT_deffunc_tmpa\endcsname [\XINT_deffunc_tmpb]{\XINT_deffunc_tmpc}% \ifxintverbose\xintMessage {xintexpr}{Info} {Function \XINT_deffunc_tmpa\space for \string\xint #4 parser associated to \string\XINT_#2_userfunc_\XINT_deffunc_tmpa\space with \ifxintglobaldefs global \fi meaning \expandafter\meaning \csname XINT_#2_userfunc_\XINT_deffunc_tmpa\endcsname}% \fi \xintFor* ####1 in {\XINT_deffunc_tmpd}:{\xintrestorevariablesilently{####1}}% \xintexprRestoreCatcodes }% end of \xintdeffunc_b definition }% \def\xintdeffunc {\xintexprSafeCatcodes\xintdeffunc_a}% \def\xintdefiifunc {\xintexprSafeCatcodes\xintdefiifunc_a}% \def\xintdeffloatfunc {\xintexprSafeCatcodes\xintdeffloatfunc_a}% \XINT_tmpa\xintdeffunc_a {expr} \XINT_NewFunc {expr}\xintdeffunc_b \XINT_tmpa\xintdefiifunc_a {iiexpr}\XINT_NewIIFunc {iiexpr}\xintdefiifunc_b \XINT_tmpa\xintdeffloatfunc_a{flexpr}\XINT_NewFloatFunc{floatexpr}\xintdeffloatfunc_b \def\XINT_expr_defuserfunc_none #1#2#3#4% {% \XINT_global \def #1##1##2##3% {% \expandafter##1\expandafter##2\expanded{% {\XINT:NEhook:usernoargfunc\csname XINT_#4_userfunc_#3\endcsname}% }% }% }% \let\XINT:NEhook:usernoargfunc \empty \def\XINT_expr_defuserfunc #1#2#3#4% {% \if0\XINT_deffunc_tmpe \XINT_global \def #1##1##2%##3% {% \expandafter ##1\expandafter##2\expanded\bgroup{\iffalse}\fi \XINT:NEhook:userfunc{XINT_#4_userfunc_#3}#2%##3% }% \else \def #1##1{% \XINT_global\def #1####1####2%####3% {% \expandafter ####1\expandafter####2\expanded\bgroup{\iffalse}\fi \XINT:NEhook:userfunc:argv{##1}{XINT_#4_userfunc_#3}#2%####3% }}\expandafter#1\expandafter{\the\numexpr\XINT_deffunc_tmpb-1}% \fi }% \def\XINT:NEhook:userfunc #1#2#3{#2#3\iffalse{{\fi}}}% \def\XINT:NEhook:userfunc:argv #1#2#3#4% {\expandafter#3\expanded{\xintKeep{#1}{#4}{\xintTrim{#1}{#4}}}\iffalse{{\fi}}}% \let\xintdefefunc\xintdeffunc \let\xintdefiifunc\xintdefiifunc \let\xintdeffloatefunc\xintdeffloatfunc \def\XINT_tmpa #1#2#3#4#5#6% {% \def #1##1(##2)##3={% \edef\XINT_defufunc_tmpa {##1}% \edef\XINT_defufunc_tmpa {\xint_zapspaces_o \XINT_defufunc_tmpa}% \edef\XINT_defufunc_tmpd {##2}% \edef\XINT_defufunc_tmpd {\xint_zapspaces_o\XINT_defufunc_tmpd}% \expandafter#5\romannumeral\XINT_expr_fetch_to_semicolon }% end of \xint_defufunc_a \def#5##1{% \def\XINT_defufunc_tmpc{(##1)}% \ifnum\xintLength:f:csv{\XINT_defufunc_tmpd}=\xint_c_i \expandafter#6% \else \xintMessage {xintexpr}{ERROR} {Universal functions must be functions of one argument only, but the declaration of \XINT_defufunc_tmpa\space has \xintLength:f:csv{\XINT_defufunc_tmpd} of them. Cancelled.}% \xintexprRestoreCatcodes \fi }% end of \xint_defufunc_b \def #6{% \XINT_expr_makedummy{\XINT_defufunc_tmpd}% \edef\XINT_defufunc_tmpc {subs(\unexpanded\expandafter{\XINT_defufunc_tmpc},% \XINT_defufunc_tmpd=########1)}% \expandafter\XINT_expr_defuserufunc \csname XINT_#2_func_\XINT_defufunc_tmpa\expandafter\endcsname \csname XINT_#2_userufunc_\XINT_defufunc_tmpa\expandafter\endcsname \expandafter{\XINT_defufunc_tmpa}{#2}% \expandafter#3\csname XINT_#2_userufunc_\XINT_defufunc_tmpa\endcsname [1]{\XINT_defufunc_tmpc}% \ifxintverbose\xintMessage {xintexpr}{Info} {Universal function \XINT_defufunc_tmpa\space for \string\xint #4 parser associated to \string\XINT_#2_userufunc_\XINT_defufunc_tmpa\space with \ifxintglobaldefs global \fi meaning \expandafter\meaning \csname XINT_#2_userufunc_\XINT_defufunc_tmpa\endcsname}% \fi }% end of \xint_defufunc_c }% \def\xintdefufunc {\xintexprSafeCatcodes\xintdefufunc_a}% \def\xintdefiiufunc {\xintexprSafeCatcodes\xintdefiiufunc_a}% \def\xintdeffloatufunc {\xintexprSafeCatcodes\xintdeffloatufunc_a}% \XINT_tmpa\xintdefufunc_a {expr} \XINT_NewFunc {expr}% \xintdefufunc_b\xintdefufunc_c \XINT_tmpa\xintdefiiufunc_a {iiexpr}\XINT_NewIIFunc {iiexpr}% \xintdefiiufunc_b\xintdefiiufunc_c \XINT_tmpa\xintdeffloatufunc_a{flexpr}\XINT_NewFloatFunc{floatexpr}% \xintdeffloatufunc_b\xintdeffloatufunc_c \def\XINT_expr_defuserufunc #1#2#3#4% {% \XINT_global \def #1##1##2%##3% {% \expandafter ##1\expandafter##2\expanded \XINT:NEhook:userufunc{XINT_#4_userufunc_#3}#2%##3% }% }% \def\XINT:NEhook:userufunc #1{\XINT:expr:mapwithin}% \def\XINT_tmpa #1{\expandafter\def\csname xintunassign#1func\endcsname ##1{% \edef\XINT_unfunc_tmpa{##1}% \edef\XINT_unfunc_tmpa {\xint_zapspaces_o\XINT_unfunc_tmpa}% \XINT_global\expandafter \let\csname XINT_#1_func_\XINT_unfunc_tmpa\endcsname\xint_undefined \XINT_global\expandafter \let\csname XINT_#1_userfunc_\XINT_unfunc_tmpa\endcsname\xint_undefined \XINT_global\expandafter \let\csname XINT_#1_userufunc_\XINT_unfunc_tmpa\endcsname\xint_undefined \ifxintverbose\xintMessage {xintexpr}{Info} {Function \XINT_unfunc_tmpa\space for \string\xint #1 parser now \ifxintglobaldefs globally \fi undefined.}% \fi}}% \XINT_tmpa{expr}\XINT_tmpa{iiexpr}\XINT_tmpa{floatexpr}% \def\xintNewFunction #1#2[#3]#4% {% \edef\XINT_newfunc_tmpa {#1}% \edef\XINT_newfunc_tmpa {\xint_zapspaces_o \XINT_newfunc_tmpa}% \def\XINT_newfunc_tmpb ##1##2##3##4##5##6##7##8##9{#4}% \begingroup \ifcase #3\relax \toks0{}% \or \toks0{##1}% \or \toks0{##1##2}% \or \toks0{##1##2##3}% \or \toks0{##1##2##3##4}% \or \toks0{##1##2##3##4##5}% \or \toks0{##1##2##3##4##5##6}% \or \toks0{##1##2##3##4##5##6##7}% \or \toks0{##1##2##3##4##5##6##7##8}% \else \toks0{##1##2##3##4##5##6##7##8##9}% \fi \expandafter \endgroup\expandafter \XINT_global\expandafter \def\csname XINT_expr_macrofunc_\XINT_newfunc_tmpa\expandafter\endcsname \the\toks0\expandafter{\XINT_newfunc_tmpb {\XINTfstop.{{##1}}}{\XINTfstop.{{##2}}}{\XINTfstop.{{##3}}}% {\XINTfstop.{{##4}}}{\XINTfstop.{{##5}}}{\XINTfstop.{{##6}}}% {\XINTfstop.{{##7}}}{\XINTfstop.{{##8}}}{\XINTfstop.{{##9}}}}% \expandafter\XINT_expr_newfunction \csname XINT_expr_func_\XINT_newfunc_tmpa\expandafter\endcsname \expandafter{\XINT_newfunc_tmpa}\xintbareeval \expandafter\XINT_expr_newfunction \csname XINT_iiexpr_func_\XINT_newfunc_tmpa\expandafter\endcsname \expandafter{\XINT_newfunc_tmpa}\xintbareiieval \expandafter\XINT_expr_newfunction \csname XINT_flexpr_func_\XINT_newfunc_tmpa\expandafter\endcsname \expandafter{\XINT_newfunc_tmpa}\xintbarefloateval \ifxintverbose \xintMessage {xintexpr}{Info} {Function \XINT_newfunc_tmpa\space for the expression parsers is associated to \string\XINT_expr_macrofunc_\XINT_newfunc_tmpa\space with \ifxintglobaldefs global \fi meaning \expandafter\meaning \csname XINT_expr_macrofunc_\XINT_newfunc_tmpa\endcsname}% \fi }% \def\XINT_expr_newfunction #1#2#3% {% \XINT_global \def#1##1##2##3% {\expandafter ##1\expandafter ##2% \romannumeral0\XINT:NEhook:macrofunc #3{\csname XINT_expr_macrofunc_#2\endcsname##3}\relax }% }% \let\XINT:NEhook:macrofunc\empty \catcode`~ 12 \def\XINT:NE:hastilde#1~#2#3\relax{\unless\if !#21\fi}% \def\XINT:NE:hashash#1{% \def\XINT:NE:hashash##1#1##2##3\relax{\unless\if !##21\fi}% }\expandafter\XINT:NE:hashash\string#% \def\XINT:NE:unpack #1{% \def\XINT:NE:unpack ##1% {% \if0\XINT:NE:hastilde ##1~!\relax \XINT:NE:hashash ##1#1!\relax 0\else \expandafter\XINT:NE:unpack:p\fi \xint_stop_atfirstofone{##1}% }}\expandafter\XINT:NE:unpack\string#% \def\XINT:NE:unpack:p#1#2% {{~romannumeral0~expandafter~xint_stop_atfirstofone~expanded{#2}}}% \def\XINT:NE:f:one:from:one #1{% \def\XINT:NE:f:one:from:one ##1% {% \if0\XINT:NE:hastilde ##1~!\relax \XINT:NE:hashash ##1#1!\relax 0\else \xint_dothis\XINT:NE:f:one:from:one_a\fi \xint_orthat\XINT:NE:f:one:from:one_b ##1&&A% }}\expandafter\XINT:NE:f:one:from:one\string#% \def\XINT:NE:f:one:from:one_a\romannumeral`&&@#1#2&&A% {% \expandafter{\detokenize{\expandafter#1}#2}% }% \def\XINT:NE:f:one:from:one_b#1{% \def\XINT:NE:f:one:from:one_b\romannumeral`&&@##1##2&&A% {% \expandafter{\romannumeral`&&@% \if0\XINT:NE:hastilde ##2~!\relax \XINT:NE:hashash ##2#1!\relax 0\else \expandafter\string\fi ##1{##2}}% }}\expandafter\XINT:NE:f:one:from:one_b\string#% \def\XINT:NE:f:one:from:one:direct #1#2{\XINT:NE:f:one:from:one:direct_a #2&&A{#1}}% \def\XINT:NE:f:one:from:one:direct_a #1#2&&A#3% {% \if ###1\xint_dothis {\detokenize{#3}}\fi \if ~#1\xint_dothis {\detokenize{#3}}\fi \xint_orthat {#3}{#1#2}% }% \def\XINT:NE:f:one:from:two #1{% \def\XINT:NE:f:one:from:two ##1% {% \if0\XINT:NE:hastilde ##1~!\relax \XINT:NE:hashash ##1#1!\relax 0\else \xint_dothis\XINT:NE:f:one:from:two_a\fi \xint_orthat\XINT:NE:f:one:from:two_b ##1&&A% }}\expandafter\XINT:NE:f:one:from:two\string#% \def\XINT:NE:f:one:from:two_a\romannumeral`&&@#1#2&&A% {% \expandafter{\detokenize{\expandafter#1\expanded}{#2}}% }% \def\XINT:NE:f:one:from:two_b#1{% \def\XINT:NE:f:one:from:two_b\romannumeral`&&@##1##2##3&&A% {% \expandafter{\romannumeral`&&@% \if0\XINT:NE:hastilde ##2##3~!\relax \XINT:NE:hashash ##2##3#1!\relax 0\else \expandafter\string\fi ##1{##2}{##3}}% }}\expandafter\XINT:NE:f:one:from:two_b\string#% \def\XINT:NE:f:one:from:two:direct #1#2#3{\XINT:NE:two_fork #2&&A#3&&A#1{#2}{#3}}% \def\XINT:NE:two_fork #1#2&&A#3#4&&A{\XINT:NE:two_fork_nn#1#3}% \def\XINT:NE:two_fork_nn #1#2% {% \if #1##\xint_dothis\string\fi \if #1~\xint_dothis\string\fi \if #2##\xint_dothis\string\fi \if #2~\xint_dothis\string\fi \xint_orthat{}% }% \def\XINT:NE:f:one:and:opt:direct#1{% \def\XINT:NE:f:one:and:opt:direct##1!% {% \if0\XINT:NE:hastilde ##1~!\relax \XINT:NE:hashash ##1#1!\relax 0\else \xint_dothis\XINT:NE:f:one:and:opt_a\fi \xint_orthat\XINT:NE:f:one:and:opt_b ##1&&A% }}\expandafter\XINT:NE:f:one:and:opt:direct\string#% \def\XINT:NE:f:one:and:opt_a #1#2&&A#3#4% {% \detokenize{\romannumeral-`0\expandafter#1\expanded{#2}$XINT_expr_exclam#3#4}%$ }% \def\XINT:NE:f:one:and:opt_b\XINT:expr:f:one:and:opt #1#2#3&&A#4#5% {% \if\relax#3\relax\expandafter\xint_firstoftwo\else \expandafter\xint_secondoftwo\fi {\XINT:NE:f:one:from:one:direct#4}% {\expandafter\XINT:NE:f:onewithopttoone\expandafter#5% \expanded{{\XINT:NE:f:one:from:one:direct\xintNum{#2}}}}% {#1}% }% \def\XINT:NE:f:onewithopttoone#1#2#3{\XINT:NE:two_fork #2&&A#3&&A#1[#2]{#3}}% \def\XINT:NE:f:tacitzeroifone:direct#1{% \def\XINT:NE:f:tacitzeroifone:direct##1!% {% \if0\XINT:NE:hastilde ##1~!\relax \XINT:NE:hashash ##1#1!\relax 0\else \xint_dothis\XINT:NE:f:one:and:opt_a\fi \xint_orthat\XINT:NE:f:tacitzeroifone_b ##1&&A% }}\expandafter\XINT:NE:f:tacitzeroifone:direct\string#% \def\XINT:NE:f:tacitzeroifone_b\XINT:expr:f:tacitzeroifone #1#2#3&&A#4#5% {% \if\relax#3\relax\expandafter\xint_firstoftwo\else \expandafter\xint_secondoftwo\fi {\XINT:NE:f:one:from:two:direct#4{0}}% {\expandafter\XINT:NE:f:one:from:two:direct\expandafter#5% \expanded{{\XINT:NE:f:one:from:one:direct\xintNum{#2}}}}% {#1}% }% \def\XINT:NE:f:iitacitzeroifone:direct#1{% \def\XINT:NE:f:iitacitzeroifone:direct##1!% {% \if0\XINT:NE:hastilde ##1~!\relax \XINT:NE:hashash ##1#1!\relax 0\else \xint_dothis\XINT:NE:f:iitacitzeroifone_a\fi \xint_orthat\XINT:NE:f:iitacitzeroifone_b ##1&&A% }}\expandafter\XINT:NE:f:iitacitzeroifone:direct\string#% \def\XINT:NE:f:iitacitzeroifone_a #1#2&&A#3% {% \detokenize{\romannumeral`$XINT_expr_null\expandafter#1\expanded{#2}$XINT_expr_exclam#3}% }% \def\XINT:NE:f:iitacitzeroifone_b\XINT:expr:f:iitacitzeroifone #1#2#3&&A#4% {% \if\relax#3\relax\expandafter\xint_firstoftwo\else \expandafter\xint_secondoftwo\fi {\XINT:NE:f:one:from:two:direct#4{0}}% {\XINT:NE:f:one:from:two:direct#4{#2}}% {#1}% }% \def\XINT:NE:x:one:from:two #1#2#3{\XINT:NE:x:one:from:two_fork #2&&A#3&&A#1{#2}{#3}}% \def\XINT:NE:x:one:from:two_fork #1{% \def\XINT:NE:x:one:from:two_fork ##1##2&&A##3##4&&A% {% \if0\XINT:NE:hastilde ##1##3~!\relax\XINT:NE:hashash ##1##3#1!\relax 0% \else \expandafter\XINT:NE:x:one:from:two:p \fi }}\expandafter\XINT:NE:x:one:from:two_fork\string#% \def\XINT:NE:x:one:from:two:p #1#2#3% {~expanded{\detokenize{\expandafter#1}~expanded{{#2}{#3}}}}% \def\XINT:NE:x:listsel #1{% \def\XINT:NE:x:listsel ##1##2&% {% \if0\expandafter\XINT:NE:hastilde\detokenize{##2}~!\relax \expandafter\XINT:NE:hashash\detokenize{##2}#1!\relax 0% \else \expandafter\XINT:NE:x:listsel:p \fi ##1##2&% }}\expandafter\XINT:NE:x:listsel\string#% \def\XINT:NE:x:listsel:p #1#2_#3&(#4% {% \detokenize{\expanded\XINT:expr:ListSel{{#3}{#4}}}% }% \def\XINT:expr:ListSel{\expandafter\XINT:expr:ListSel_i\expanded}% \def\XINT:expr:ListSel_i #1#2{{\XINT_ListSel_top #2_#1&({#2}}}% \def\XINT:NE:f:reverse #1{% \def\XINT:NE:f:reverse ##1^% {% \if0\expandafter\XINT:NE:hastilde\detokenize\expandafter{\xint_gobble_i##1}~!\relax \expandafter\XINT:NE:hashash\detokenize{##1}#1!\relax 0% \else \expandafter\XINT:NE:f:reverse:p \fi ##1^% }}\expandafter\XINT:NE:f:reverse\string#% \def\XINT:NE:f:reverse:p #1^#2\xint_bye {% \expandafter\XINT:NE:f:reverse:p_i\expandafter{\xint_gobble_i#1}% }% \def\XINT:NE:f:reverse:p_i #1% {% \detokenize{\romannumeral0\XINT:expr:f:reverse{{#1}}}% }% \def\XINT:expr:f:reverse{\expandafter\XINT:expr:f:reverse_i\expanded}% \def\XINT:expr:f:reverse_i #1% {% \XINT_expr_reverse #1^^#1\xint:\xint:\xint:\xint: \xint:\xint:\xint:\xint:\xint_bye }% \def\XINT:NE:f:from:delim:u #1{% \def\XINT:NE:f:from:delim:u ##1##2^% {% \if0\expandafter\XINT:NE:hastilde\detokenize{##2}~!\relax \expandafter\XINT:NE:hashash\detokenize{##2}#1!\relax 0% \xint_afterfi{\expandafter\XINT_fooof_checkifnumber\expandafter##1\string}% \else \xint_afterfi{\XINT:NE:f:from:delim:u:p##1\empty}% \fi ##2^% }}\expandafter\XINT:NE:f:from:delim:u\string#% \def\XINT:NE:f:from:delim:u:p #1#2^% {% \detokenize{\expandafter\XINT:fooof:checkifnumber\expandafter#1}~expanded{#2}$XINT_expr_caret%$ }% \def\XINT:fooof:checkifnumber#1{\expandafter\XINT_fooof_checkifnumber\expandafter#1\string}% \def\XINT:NE:f:LFL#1#2{\expandafter\XINT:NE:f:LFL_a\expandafter#1#2\XINT:NE:f:LFL_a}% \def\XINT:NE:f:LFL_a#1#2% {% \if#2i\else\expandafter\XINT:NE:f:LFL_p \fi #1% }% \def\XINT:NE:r:check#1{% \def\XINT:NE:r:check##1\XINT:NE:f:LFL_a {% \if0\expandafter\XINT:NE:hastilde\detokenize{##1}~!\relax% \expandafter\XINT:NE:hashash\detokenize{##1}#1!\relax 0% \else \expandafter\XINT:NE:r:check:p \fi 1\expandafter{\romannumeral\XINT:NEsaved:r:check##1}% }}\expandafter\XINT:NE:r:check\string#% \def\XINT:NE:r:check:p 1\expandafter#1{\XINT:NE:r:check:p_i#1}% \def\XINT:NE:r:check:p_i\romannumeral\XINT:NEsaved:r:check{\XINT:NE:r:check:p_ii\empty}% \def\XINT:NE:r:check:p_ii#1^% {% 5~expanded{{~romannumeral~XINT:NEsaved:r:check#1$XINT_expr_caret}}%$ }% \def\XINT:NE:f:LFL_p#1% {% \detokenize{\romannumeral`$XINT_expr_null\expandafter#1}%$ }% \catcode`- 11 \def\XINT:NE:exec_? #1#2% {% \XINT:NE:exec_?_b #2&&A#1{#2}% }% \def\XINT:NE:exec_?_b #1{% \def\XINT:NE:exec_?_b ##1&&A% {% \if0\XINT:NE:hastilde ##1~!\relax \XINT:NE:hashash ##1#1!\relax 0% \xint_dothis\XINT:NE:exec_?:x\fi \xint_orthat\XINT:NE:exec_?:p }}\expandafter\XINT:NE:exec_?_b\string#% \def\XINT:NE:exec_?:x #1#2#3% {% \expandafter\XINT_expr_check-_after?\expandafter#1% \romannumeral`&&@\expandafter\XINT_expr_getnext\romannumeral0\xintiiifnotzero#3% }% \def\XINT:NE:exec_?:p #1#2#3#4#5% {% \csname XINT_expr_func_*If\expandafter\endcsname \romannumeral`&&@#2\XINTfstop.{#3},[#4],[#5])% }% \expandafter\def\csname XINT_expr_func_*If\endcsname #1#2#3% {% #1#2{~expanded{~xintiiifNotZero#3}}% }% \def\XINT:NE:exec_?? #1#2#3% {% \XINT:NE:exec_??_b #2&&A#1{#2}% }% \def\XINT:NE:exec_??_b #1{% \def\XINT:NE:exec_??_b ##1&&A% {% \if0\XINT:NE:hastilde ##1~!\relax \XINT:NE:hashash ##1#1!\relax 0% \xint_dothis\XINT:NE:exec_??:x\fi \xint_orthat\XINT:NE:exec_??:p }}\expandafter\XINT:NE:exec_??_b\string#% \def\XINT:NE:exec_??:x #1#2#3% {% \expandafter\XINT_expr_check-_after?\expandafter#1% \romannumeral`&&@\expandafter\XINT_expr_getnext\romannumeral0\xintiiifsgn#3% }% \def\XINT:NE:exec_??:p #1#2#3#4#5#6% {% \csname XINT_expr_func_*IfSgn\expandafter\endcsname \romannumeral`&&@#2\XINTfstop.{#3},[#4],[#5],[#6])% }% \expandafter\def\csname XINT_expr_func_*IfSgn\endcsname #1#2#3% {% #1#2{~expanded{~xintiiifSgn#3}}% }% \catcode`- 12 \def\XINT:NE:branch #1% {% \if0\XINT:NE:hastilde #1~!\relax 0\else \xint_dothis\XINT:NE:branch_a\fi \xint_orthat\XINT:NE:branch_b #1&&A% }% \def\XINT:NE:branch_a\romannumeral`&&@#1#2&&A% {% \expandafter{\detokenize{\expandafter#1\expanded}{#2}}% }% \def\XINT:NE:branch_b#1{% \def\XINT:NE:branch_b\romannumeral`&&@##1##2##3&&A% {% \expandafter{\romannumeral`&&@% \if0\XINT:NE:hastilde ##2~!\relax \XINT:NE:hashash ##2#1!\relax 0\else \expandafter\string\fi ##1{##2}##3}% }}\expandafter\XINT:NE:branch_b\string#% \def\XINT:NE:seqx#1{% \def\XINT:NE:seqx\XINT_allexpr_seqx##1##2% {% \if 0\expandafter\XINT:NE:hastilde\detokenize{##2}~!\relax \expandafter\XINT:NE:hashash \detokenize{##2}#1!\relax 0% \else \expandafter\XINT:NE:seqx:p \fi \XINT_allexpr_seqx{##1}{##2}% }}\expandafter\XINT:NE:seqx\string#% \def\XINT:NE:seqx:p\XINT_allexpr_seqx #1#2#3#4% {% \expandafter\XINT_expr_put_op_first \expanded {% {% \detokenize {% \expanded\bgroup \expanded {\unexpanded{\XINT_expr_seq:_b{#1#4\relax $XINT_expr_exclam #3}}% #2$XINT_expr_caret}% }% }% \expandafter}\romannumeral`&&@\XINT_expr_getop }% \def\XINT:NE:opx#1{% \def\XINT:NE:opx\XINT_allexpr_opx ##1##2##3##4%##5##6##7##8% {% \if 0\expandafter\XINT:NE:hastilde\detokenize{##4}~!\relax \expandafter\XINT:NE:hashash \detokenize{##4}#1!\relax 0% \else \expandafter\XINT:NE:opx:p \fi \XINT_allexpr_opx ##1{##2}{##3}{##4}% en fait ##2 = \xint_c_, ##3 = \relax }}\expandafter\XINT:NE:opx\string#% \def\XINT:NE:opx:p\XINT_allexpr_opx #1#2#3#4#5#6#7#8% {% \expandafter\XINT_expr_put_op_first \expanded {% {% \detokenize {% \expanded\bgroup \expanded{\unexpanded{\XINT_expr_iter:_b {#1\expandafter\XINT_allexpr_opx_ifnotomitted \romannumeral0#1#6\relax#7@\relax $XINT_expr_exclam #5}}% #4$XINT_expr_caret$XINT_expr_tilde{{#8}}}%$ }% }% \expandafter}\romannumeral`&&@\XINT_expr_getop }% \def\XINT:NE:iter{\expandafter\XINT:NE:itery\expandafter}% \def\XINT:NE:itery#1{% \def\XINT:NE:itery\XINT_expr_itery##1##2% {% \if 0\expandafter\XINT:NE:hastilde\detokenize{##1##2}~!\relax \expandafter\XINT:NE:hashash \detokenize{##1##2}#1!\relax 0% \else \expandafter\XINT:NE:itery:p \fi \XINT_expr_itery{##1}{##2}% }}\expandafter\XINT:NE:itery\string#% \def\XINT:NE:itery:p\XINT_expr_itery #1#2#3#4#5% {% \expandafter\XINT_expr_put_op_first \expanded {% {% \detokenize {% \expanded\bgroup \expanded{\unexpanded{\XINT_expr_iter:_b {#5#4\relax $XINT_expr_exclam #3}}% #1$XINT_expr_caret$XINT_expr_tilde{#2}}%$ }% }% \expandafter}\romannumeral`&&@\XINT_expr_getop }% \def\XINT:NE:rseq{\expandafter\XINT:NE:rseqy\expandafter}% \def\XINT:NE:rseqy#1{% \def\XINT:NE:rseqy\XINT_expr_rseqy##1##2% {% \if 0\expandafter\XINT:NE:hastilde\detokenize{##1##2}~!\relax \expandafter\XINT:NE:hashash \detokenize{##1##2}#1!\relax 0% \else \expandafter\XINT:NE:rseqy:p \fi \XINT_expr_rseqy{##1}{##2}% }}\expandafter\XINT:NE:rseqy\string#% \def\XINT:NE:rseqy:p\XINT_expr_rseqy #1#2#3#4#5% {% \expandafter\XINT_expr_put_op_first \expanded {% {% \detokenize {% \expanded\bgroup \expanded{#2\unexpanded{\XINT_expr_rseq:_b {#5#4\relax $XINT_expr_exclam #3}}% #1$XINT_expr_caret$XINT_expr_tilde{#2}}%$ }% }% \expandafter}\romannumeral`&&@\XINT_expr_getop }% \def\XINT:NE:iterr{\expandafter\XINT:NE:iterry\expandafter}% \def\XINT:NE:iterry#1{% \def\XINT:NE:iterry\XINT_expr_iterry##1##2% {% \if 0\expandafter\XINT:NE:hastilde\detokenize{##1##2}~!\relax \expandafter\XINT:NE:hashash \detokenize{##1##2}#1!\relax 0% \else \expandafter\XINT:NE:iterry:p \fi \XINT_expr_iterry{##1}{##2}% }}\expandafter\XINT:NE:iterry\string#% \def\XINT:NE:iterry:p\XINT_expr_iterry #1#2#3#4#5% {% \expandafter\XINT_expr_put_op_first \expanded {% {% \detokenize {% \expanded\bgroup \expanded{\unexpanded{\XINT_expr_iterr:_b {#5#4\relax $XINT_expr_exclam #3}}% #1$XINT_expr_caret$XINT_expr_tilde #20$XINT_expr_qmark}% }% }% \expandafter}\romannumeral`&&@\XINT_expr_getop }% \def\XINT:NE:rrseq{\expandafter\XINT:NE:rrseqy\expandafter}% \def\XINT:NE:rrseqy#1{% \def\XINT:NE:rrseqy\XINT_expr_rrseqy##1##2% {% \if 0\expandafter\XINT:NE:hastilde\detokenize{##1##2}~!\relax \expandafter\XINT:NE:hashash \detokenize{##1##2}#1!\relax 0% \else \expandafter\XINT:NE:rrseqy:p \fi \XINT_expr_rrseqy{##1}{##2}% }}\expandafter\XINT:NE:rrseqy\string#% \def\XINT:NE:rrseqy:p\XINT_expr_rrseqy #1#2#3#4#5#6% {% \expandafter\XINT_expr_put_op_first \expanded {% {% \detokenize {% \expanded\bgroup \expanded{#2\unexpanded{\XINT_expr_rrseq:_b {#6#5\relax $XINT_expr_exclam #4}}% #1$XINT_expr_caret$XINT_expr_tilde #30$XINT_expr_qmark}% }% }% \expandafter}\romannumeral`&&@\XINT_expr_getop }% \def\XINT:NE:x:toblist#1{% \def\XINT:NE:x:toblist\XINT:expr:toblistwith##1##2% {% \if 0\expandafter\XINT:NE:hastilde\detokenize{##2}~!\relax \expandafter\XINT:NE:hashash \detokenize{##2}#1!\relax 0% \else \expandafter\XINT:NE:x:toblist:p \fi \XINT:expr:toblistwith{##1}{##2}% }}\expandafter\XINT:NE:x:toblist\string#% \def\XINT:NE:x:toblist:p\XINT:expr:toblistwith #1#2{{\XINTfstop.{#2}}}% \def\XINT:NE:x:flatten#1{% \def\XINT:NE:x:flatten\XINT:expr:flatten##1% {% \if 0\expandafter\XINT:NE:hastilde\detokenize{##1}~!\relax \expandafter\XINT:NE:hashash \detokenize{##1}#1!\relax 0% \else \expandafter\XINT:NE:x:flatten:p \fi \XINT:expr:flatten{##1}% }}\expandafter\XINT:NE:x:flatten\string#% \def\XINT:NE:x:flatten:p\XINT:expr:flatten #1% {% {{% \detokenize {% \expandafter\XINT:expr:flatten_checkempty \detokenize\expandafter{\expanded{#1}}$XINT_expr_caret%$ }% }}% }% \def\XINT:NE:x:zip#1{% \def\XINT:NE:x:zip\XINT:expr:zip##1% {% \if 0\expandafter\XINT:NE:hastilde\detokenize{##1}~!\relax \expandafter\XINT:NE:hashash \detokenize{##1}#1!\relax 0% \else \expandafter\XINT:NE:x:zip:p \fi \XINT:expr:zip{##1}% }}\expandafter\XINT:NE:x:zip\string#% \def\XINT:NE:x:zip:p\XINT:expr:zip #1% {% \expandafter{% \detokenize {% \expanded\expandafter\XINT_zip_A\expanded{#1}\xint_bye\xint_bye }% }% }% \def\XINT:NE:x:mapwithin#1{% \def\XINT:NE:x:mapwithin\XINT:expr:mapwithin ##1##2% {% \if 0\expandafter\XINT:NE:hastilde\detokenize{##2}~!\relax \expandafter\XINT:NE:hashash \detokenize{##2}#1!\relax 0% \else \expandafter\XINT:NE:x:mapwithin:p \fi \XINT:expr:mapwithin {##1}{##2}% }}\expandafter\XINT:NE:x:mapwithin\string#% \def\XINT:NE:x:mapwithin:p \XINT:expr:mapwithin #1#2% {% {{% \detokenize {% %% \expanded %% {% \expandafter\XINT:expr:mapwithin_checkempty \expanded{\noexpand#1$XINT_expr_exclam\expandafter}%$ \detokenize\expandafter{\expanded{#2}}$XINT_expr_caret%$ %% }% }% }}% }% \def\XINT:NE:x:ndmapx#1{% \def\XINT:NE:x:ndmapx\XINT_allexpr_ndmapx_a ##1##2^% {% \if 0\expandafter\XINT:NE:hastilde\detokenize{##2}~!\relax \expandafter\XINT:NE:hashash \detokenize{##2}#1!\relax 0% \else \expandafter\XINT:NE:x:ndmapx:p \fi \XINT_allexpr_ndmapx_a ##1##2^% }}\expandafter\XINT:NE:x:ndmapx\string#% \def\XINT:NE:x:ndmapx:p #1#2#3^\relax {% \detokenize {% \expanded{% \expandafter#1\expandafter#2\expanded{#3}$XINT_expr_caret\relax %$ }% }% }% \def\XINTusenoargfunc #1% {% 0\csname #1\endcsname }% \def\XINT:NE:usernoargfunc\csname #1\endcsname {% ~romannumeral~XINTusenoargfunc{#1}% }% \def\XINTusefunc #1% {% 0\csname #1\expandafter\endcsname\expanded }% \def\XINT:NE:usefunc #1#2#3% {% ~romannumeral~XINTusefunc{#1}{#3}\iffalse{{\fi}}% }% \def\XINTuseufunc #1% {% \expanded\expandafter\XINT:expr:mapwithin\csname #1\expandafter\endcsname\expanded }% \def\XINT:NE:useufunc #1#2#3% {% {{~expanded~XINTuseufunc{#1}{#3}}}% }% \def\XINT:NE:userfunc #1{% \def\XINT:NE:userfunc ##1##2##3% {% \if0\expandafter\XINT:NE:hastilde\detokenize{##3}~!\relax \expandafter\XINT:NE:hashash\detokenize{##3}#1!\relax 0% \expandafter\XINT:NE:userfunc_x \else \expandafter\XINT:NE:usefunc \fi {##1}{##2}{##3}% }}\expandafter\XINT:NE:userfunc\string#% \def\XINT:NE:userfunc_x #1#2#3{#2#3\iffalse{{\fi}}}% \def\XINT:NE:userufunc #1{% \def\XINT:NE:userufunc ##1##2##3% {% \if0\expandafter\XINT:NE:hastilde\detokenize{##3}~!\relax \expandafter\XINT:NE:hashash\detokenize{##3}#1!\relax 0% \expandafter\XINT:NE:userufunc_x \else \expandafter\XINT:NE:useufunc \fi {##1}{##2}{##3}% }}\expandafter\XINT:NE:userufunc\string#% \def\XINT:NE:userufunc_x #1{\XINT:expr:mapwithin}% \def\XINT:NE:macrofunc #1#2% {\expandafter\XINT:NE:macrofunc:a\string#1#2\empty&}% \def\XINT:NE:macrofunc:a#1\csname #2\endcsname#3&% {{~XINTusemacrofunc{#1}{#2}{#3}}}% \def\XINTusemacrofunc #1#2#3% {% \romannumeral0\expandafter\xint_stop_atfirstofone \romannumeral0#1\csname #2\endcsname#3\relax }% \catcode`- 11 \def\XINT_expr_redefinemacros {% \let\XINT:NEhook:unpack \XINT:NE:unpack \let\XINT:NEhook:f:one:from:one \XINT:NE:f:one:from:one \let\XINT:NEhook:f:one:from:one:direct \XINT:NE:f:one:from:one:direct \let\XINT:NEhook:f:one:from:two \XINT:NE:f:one:from:two \let\XINT:NEhook:f:one:from:two:direct \XINT:NE:f:one:from:two:direct \let\XINT:NEhook:x:one:from:two \XINT:NE:x:one:from:two \let\XINT:NEhook:f:one:and:opt:direct \XINT:NE:f:one:and:opt:direct \let\XINT:NEhook:f:tacitzeroifone:direct \XINT:NE:f:tacitzeroifone:direct \let\XINT:NEhook:f:iitacitzeroifone:direct \XINT:NE:f:iitacitzeroifone:direct \let\XINT:NEhook:x:listsel \XINT:NE:x:listsel \let\XINT:NEhook:f:reverse \XINT:NE:f:reverse \let\XINT:NEhook:f:from:delim:u \XINT:NE:f:from:delim:u \let\XINT:NEhook:f:LFL \XINT:NE:f:LFL \let\XINT:NEhook:r:check \XINT:NE:r:check \let\XINT:NEhook:branch \XINT:NE:branch \let\XINT:NEhook:seqx \XINT:NE:seqx \let\XINT:NEhook:opx \XINT:NE:opx \let\XINT:NEhook:rseq \XINT:NE:rseq \let\XINT:NEhook:iter \XINT:NE:iter \let\XINT:NEhook:rrseq \XINT:NE:rrseq \let\XINT:NEhook:iterr \XINT:NE:iterr \let\XINT:NEhook:x:toblist \XINT:NE:x:toblist \let\XINT:NEhook:x:flatten \XINT:NE:x:flatten \let\XINT:NEhook:x:zip \XINT:NE:x:zip \let\XINT:NEhook:x:mapwithin \XINT:NE:x:mapwithin \let\XINT:NEhook:x:ndmapx \XINT:NE:x:ndmapx \let\XINT:NEhook:userfunc \XINT:NE:userfunc \let\XINT:NEhook:userufunc \XINT:NE:userufunc \let\XINT:NEhook:usernoargfunc \XINT:NE:usernoargfunc \let\XINT:NEhook:macrofunc \XINT:NE:macrofunc \def\XINTinRandomFloatSdigits{~XINTinRandomFloatSdigits }% \def\XINTinRandomFloatSixteen{~XINTinRandomFloatSixteen }% \def\xintiiRandRange{~xintiiRandRange }% \def\xintiiRandRangeAtoB{~xintiiRandRangeAtoB }% \def\xintRandBit{~xintRandBit }% \let\XINT_expr_exec_? \XINT:NE:exec_? \let\XINT_expr_exec_?? \XINT:NE:exec_?? \def\XINT_expr_op_? {\XINT_expr_op__?{\XINT_expr_op_-xii\XINT_expr_oparen}}% \def\XINT_flexpr_op_?{\XINT_expr_op__?{\XINT_flexpr_op_-xii\XINT_flexpr_oparen}}% \def\XINT_iiexpr_op_?{\XINT_expr_op__?{\XINT_iiexpr_op_-xii\XINT_iiexpr_oparen}}% }% \catcode`- 12 \def\xintNewExpr {\XINT_NewExpr\xint_firstofone\xintexpr \XINT_newexpr_clean}% \def\xintNewFloatExpr{\XINT_NewExpr\xint_firstofone\xintfloatexpr\XINT_newexpr_clean}% \def\xintNewIExpr {\XINT_NewExpr\xint_firstofone\xintiexpr \XINT_newexpr_clean}% \def\xintNewIIExpr {\XINT_NewExpr\xint_firstofone\xintiiexpr \XINT_newexpr_clean}% \def\xintNewBoolExpr {\XINT_NewExpr\xint_firstofone\xintboolexpr \XINT_newexpr_clean}% \def\XINT_newexpr_clean #1>#2#3{\noexpand\expanded\noexpand\xintNEprinthook}% \def\xintNEprinthook#1.#2{\expanded{\unexpanded{#1.}{#2}}}% \def\XINT_NewFunc {\XINT_NewExpr\xint_gobble_i\xintthebareeval\XINT_newfunc_clean}% \def\XINT_NewFloatFunc{\XINT_NewExpr\xint_gobble_i\xintthebarefloateval\XINT_newfunc_clean}% \def\XINT_NewIIFunc {\XINT_NewExpr\xint_gobble_i\xintthebareiieval\XINT_newfunc_clean}% \def\XINT_newfunc_clean #1>{}% \def\XINT_NewExpr #1#2#3#4#5[#6]% {% \begingroup \ifcase #6\relax \toks0 {\endgroup\XINT_global\def#4}% \or \toks0 {\endgroup\XINT_global\def#4##1}% \or \toks0 {\endgroup\XINT_global\def#4##1##2}% \or \toks0 {\endgroup\XINT_global\def#4##1##2##3}% \or \toks0 {\endgroup\XINT_global\def#4##1##2##3##4}% \or \toks0 {\endgroup\XINT_global\def#4##1##2##3##4##5}% \or \toks0 {\endgroup\XINT_global\def#4##1##2##3##4##5##6}% \or \toks0 {\endgroup\XINT_global\def#4##1##2##3##4##5##6##7}% \or \toks0 {\endgroup\XINT_global\def#4##1##2##3##4##5##6##7##8}% \or \toks0 {\endgroup\XINT_global\def#4##1##2##3##4##5##6##7##8##9}% \fi #1\xintexprSafeCatcodes \XINT_expr_redefinemacros \XINT_NewExpr_a #1#2#3#4% }% \catcode`~ 3 \catcode`? 3 \def\XINT_expr_tilde{~}\def\XINT_expr_qmark{?}% catcode 3 \def\XINT_expr_caret{^}\def\XINT_expr_exclam{!}% catcode 11 \def\XINT_expr_tab{&}% catcode 7 \def\XINT_expr_null{&&@}% \catcode`~ 13 \catcode`@ 14 \catcode`\% 6 \catcode`# 12 \catcode`$ 11 @ $ \def\XINT_NewExpr_a %1%2%3%4%5@ {@ \def\XINT_tmpa %%1%%2%%3%%4%%5%%6%%7%%8%%9{%5}@ \def~{$noexpand$}@ \catcode`: 11 \catcode`_ 11 \catcode`\@ 11 \catcode`# 12 \catcode`~ 13 \escapechar 126 \endlinechar -1 \everyeof {\noexpand }@ \edef\XINT_tmpb {\scantokens\expandafter{\romannumeral`&&@\expandafter %2\XINT_tmpa{#1}{#2}{#3}{#4}{#5}{#6}{#7}{#8}{#9}\relax}@ }@ \escapechar 92 \catcode`# 6 \catcode`$ 0 @ $ \edef\XINT_tmpa %%1%%2%%3%%4%%5%%6%%7%%8%%9@ {\scantokens\expandafter{\expandafter%3\meaning\XINT_tmpb}}@ \the\toks0\expandafter {\XINT_tmpa{%%1}{%%2}{%%3}{%%4}{%%5}{%%6}{%%7}{%%8}{%%9}}@ %1{\ifxintverbose \xintMessage{xintexpr}{Info}@ {\string%4\space now with @ \ifxintglobaldefs global \fi meaning \meaning%4}@ \fi}@ }@ \catcode`% 14 \XINTsetcatcodes % clean up to avoid surprises if something changes \newif\ifxintexprsafecatcodes \let\xintexprRestoreCatcodes\empty \def\xintexprSafeCatcodes {% \unless\ifxintexprsafecatcodes \edef\xintexprRestoreCatcodes {% \endlinechar=\the\endlinechar \catcode59=\the\catcode59 % ; \catcode34=\the\catcode34 % " \catcode63=\the\catcode63 % ? \catcode124=\the\catcode124 % | \catcode38=\the\catcode38 % & \catcode33=\the\catcode33 % ! \catcode93=\the\catcode93 % ] \catcode91=\the\catcode91 % [ \catcode94=\the\catcode94 % ^ \catcode95=\the\catcode95 % _ \catcode47=\the\catcode47 % / \catcode41=\the\catcode41 % ) \catcode40=\the\catcode40 % ( \catcode42=\the\catcode42 % * \catcode43=\the\catcode43 % + \catcode62=\the\catcode62 % > \catcode60=\the\catcode60 % < \catcode58=\the\catcode58 % : \catcode46=\the\catcode46 % . \catcode45=\the\catcode45 % - \catcode44=\the\catcode44 % , \catcode61=\the\catcode61 % = \catcode96=\the\catcode96 % ` \catcode32=\the\catcode32\relax % space \noexpand\xintexprsafecatcodesfalse }% \fi \xintexprsafecatcodestrue \endlinechar=13 % \catcode59=12 % ; \catcode34=12 % " \catcode63=12 % ? \catcode124=12 % | \catcode38=4 % & \catcode33=12 % ! \catcode93=12 % ] \catcode91=12 % [ \catcode94=7 % ^ \catcode95=8 % _ \catcode47=12 % / \catcode41=12 % ) \catcode40=12 % ( \catcode42=12 % * \catcode43=12 % + \catcode62=12 % > \catcode60=12 % < \catcode58=12 % : \catcode46=12 % . \catcode45=12 % - \catcode44=12 % , \catcode61=12 % = \catcode96=12 % ` \catcode32=10 % space }% \let\XINT_tmpa\undefined \let\XINT_tmpb\undefined \let\XINT_tmpc\undefined \let\XINT_tmpd\undefined \let\XINT_tmpe\undefined \ifdefined\RequirePackage\expandafter\xint_firstoftwo\else\expandafter\xint_secondoftwo\fi {\RequirePackage{xinttrig}% \RequirePackage{xintlog}}% {\input xinttrig.sty \input xintlog.sty }% \XINTrestorecatcodesendinput% \endinput %% %% End of file `xintexpr.sty'.