%% %% 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 (version 1.07a of May 26, 2013) %% xintexpr: Expandable expression parser %% Copyright (C) 2013 by Jean-Francois Burnol %%---------------------------------------------------------------- %% \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\space { }% \let\z\endgroup \expandafter\let\expandafter\x\csname ver@xintexpr.sty\endcsname \expandafter\let\expandafter\w\csname ver@xintfrac.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 \ifx\csname numexpr\endcsname\relax \y{xintexpr}{\numexpr 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. \y{xintexpr}{Package xintfrac is required}% \y{xintexpr}{Will try \string\input\space xintfrac.sty}% \def\z{\endgroup\input xintfrac.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. \y{xintexpr}{Package xintfrac is required}% \y{xintexpr}{Will try \string\RequirePackage{xintfrac}}% \def\z{\endgroup\RequirePackage{xintfrac}}% \fi \else \y{xintexpr}{I was already loaded, aborting input}% \aftergroup\endinput \fi \fi \fi \z% \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 % : \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 \def\empty {}% \expandafter\let\expandafter\w\csname ver@xintfrac.sty\endcsname \ifx\w\relax % Plain TeX, user gave a file name at the prompt \y{xintexpr}{Loading of package xintfrac failed, aborting input}% \aftergroup\endinput \fi \ifx\w\empty % LaTeX, user gave a file name at the prompt \y{xintexpr}{Loading of package xintfrac failed, aborting input}% \aftergroup\endinput \fi \endgroup% \begingroup\catcode61\catcode48\catcode32=10\relax% \catcode13=5 % ^^M \endlinechar=13 % \catcode123=1 % { \catcode125=2 % } \catcode95=11 % _ \def\x {% \endgroup \edef\XINT_expr_restorecatcodes_endinput {% \catcode94=\the\catcode94 % ^ \catcode33=\the\catcode33 % ! \catcode93=\the\catcode93 % ] \catcode91=\the\catcode91 % [ \catcode96=\the\catcode96 % ` \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 % , \catcode35=\the\catcode35 % # \catcode95=\the\catcode95 % _ \catcode125=\the\catcode125 % } \catcode123=\the\catcode123 % { \endlinechar=\the\endlinechar \catcode13=\the\catcode13 % ^^M \catcode32=\the\catcode32 % \catcode61=\the\catcode61\relax % = \noexpand\endinput }% \XINT_setcatcodes \catcode91=12 % [ \catcode93=12 % ] \catcode33=11 % ! \catcode94=12 % ^ }% \x \begingroup \catcode64=11 % @ \catcode58=12 % : \expandafter\ifx\csname ProvidesPackage\endcsname\relax \def\x#1#2#3[#4]{\endgroup \immediate\write-1{Package: #3 #4}% \xdef#1{#4}% }% \else \def\x#1#2[#3]{\endgroup #2[{#3}]% \ifx#1\@undefined \xdef#1{#3}% \fi \ifx#1\relax \xdef#1{#3}% \fi }% \fi \expandafter\x\csname ver@xintexpr.sty\endcsname \ProvidesPackage{xintexpr}% [2013/05/26 v1.07a Expandable expression parser (jfB)]% \chardef\xint_c_ 0 \chardef\xint_c_i 1 \chardef\xint_c_ii 2 \chardef\xint_c_iii 3 \chardef\xint_c_iv 4 \chardef\xint_c_v 5 \chardef\xint_c_ix 9 \def\xint_gob_til_dot #1.{}% \def\xint_gob_til_dot_andstop #1.{ }% \def\xint_gob_til_! #1!{}% ! of catcode 11 \def\XINT_expr_string {\expandafter\xint_gob_til_dot\string }% \def\XINT_expr_unexpectedtoken {\xintError:ignored }% \def\xintexpr {\romannumeral0\xinteval }% \def\xinteval {% \expandafter\XINT_expr_until_end\romannumeral-`0% \expandafter\XINT_expr_checkifprefix_ii\romannumeral-`0% \XINT_expr_getnext }% \def\xinttheexpr {\romannumeral0\xinttheeval }% \def\xinttheeval {\expandafter\XINT_expr_the\romannumeral0\xinteval }% \def\XINT_expr_the #1#2#3{\xintraw{\XINT_expr_string #3}}% \def\xintthe #1{\ifx#1\xintexpr \expandafter\xinttheexpr \else\expandafter\xintthefloatexpr\fi}% \def\XINT_expr_until_end #1% {% \ifcase#1% \expandafter\xint_gobble_vi \or \expandafter\XINT_expr_extra_closing_paren \fi \expandafter\XINT_expr_until_end\romannumeral-`0% }% \def\XINT_expr_extra_closing_paren {\xintError:removed }% \def\XINT_expr_endofexpr {!\XINT_illegaluse }% \def\XINT_illegaluse {Illegal_here_use_xintthe\xintError:use_xintthe!\xint_gobble_i }% \def\XINT_expr_oparen {% \expandafter\XINT_expr_until_cparen\romannumeral-`0% \expandafter\XINT_expr_checkifprefix_ii\romannumeral-`0% \XINT_expr_getnext }% \def\XINT_expr_until_cparen #1% {% \ifcase#1% \expandafter\XINT_expr_missing_cparen \or \else \xint_afterfi{\expandafter\XINT_expr_until_cparen\romannumeral-`0}% \fi }% \def\XINT_expr_missing_cparen #1% {% \xintError:inserted \xint_c_ \XINT_expr_endofexpr }% \def\xint_tmp_def #1#2#3% {% \expandafter\xint_tmp_do_defs \csname XINT_expr_op_#1\expandafter\endcsname \csname XINT_expr_until_#1\expandafter\endcsname \csname XINT_expr_checkifprefix_#2\expandafter\endcsname \csname XINT_expr_precedence_#1\expandafter\endcsname \csname xint_c_#2\expandafter\endcsname \csname xint#3\endcsname }% \def\xint_tmp_do_defs #1#2#3#4#5#6% {% \def #1##1% \XINT_expr_op_? {% \expandafter #2\expandafter ##1\romannumeral-`0\expandafter #3\romannumeral-`0\XINT_expr_getnext }% \def #2##1##2##3##4% \XINT_expr_until_? {% \ifnum ##2>#5% \xint_afterfi {\expandafter #2\expandafter ##1\romannumeral-`0##3##4}% \else \xint_afterfi {\expandafter ##2\expandafter ##3% \csname .#6{\XINT_expr_string ##1}{\XINT_expr_string ##4}\endcsname }% \fi }% \global\let #4#5% }% \xint_tmp_def +{ii}{Add}% \xint_tmp_def -{ii}{Sub}% \xint_tmp_def *{iii}{Mul}% \xint_tmp_def /{iii}{Div}% \xint_tmp_def ^{iv}{fPow}% \xint_tmp_def e{v}{fE}% \xint_tmp_def E{v}{fE}% \def\xint_tmp_def #1% {% \expandafter\xint_tmp_do_defs \csname XINT_expr_checkifprefix_#1\expandafter\endcsname \csname XINT_expr_op_-#1\endcsname }% \def\xint_tmp_do_defs #1#2% {% \def #1##1% {\xint_UDsignfork ##1\dummy #2% -\dummy ##1% \krof }% }% \xint_tmp_def {ii}% \xint_tmp_def {iii}% \xint_tmp_def {iv}% \xint_tmp_def {v}% \def\xint_tmp_def #1% {% \expandafter\xint_tmp_do_defs \csname XINT_expr_op_-#1\expandafter\endcsname \csname XINT_expr_until_-#1\expandafter\endcsname \csname XINT_expr_checkifprefix_#1\expandafter\endcsname \csname xint_c_#1\endcsname }% \def\xint_tmp_do_defs #1#2#3#4% {% \def #1% \XINT_expr_op_-ii,iii,iv,v {% \expandafter #2\romannumeral-`0\expandafter #3\romannumeral-`0\XINT_expr_getnext }% \def #2##1##2##3% \XINT_expr_until_-ii,iii,iv,v {% \ifnum ##1>#4% \xint_afterfi {\expandafter #2\romannumeral-`0##2##3}% \else \xint_afterfi {\expandafter ##1\expandafter ##2% \csname .\xintOpp{\XINT_expr_string ##3}\endcsname }% \fi }% }% \xint_tmp_def {ii}% \xint_tmp_def {iii}% \xint_tmp_def {iv}% \xint_tmp_def {v}% \def\XINT_expr_getop #1% {% \expandafter\XINT_expr_getop_a\expandafter #1\romannumeral-`0% }% \def\XINT_expr_getop_a #1#2% {% \ifcat #2\relax \ifx #2\relax \expandafter\expandafter\expandafter \XINT_expr_foundendofexpr \else \XINT_expr_unexpectedtoken \expandafter\expandafter\expandafter \XINT_expr_getop \fi \else \expandafter\XINT_expr_op_found\expandafter #2% \fi #1% }% \def\XINT_expr_foundendofexpr {\xint_c_ \XINT_expr_endofexpr }% \def\XINT_expr_op_found #1% {% \ifcsname XINT_expr_precedence_\string #1\endcsname \expandafter\xint_afterfi\expandafter {\csname XINT_expr_precedence_\string #1\expandafter\endcsname \csname XINT_expr_op_\string #1\endcsname }% \else \XINT_expr_unexpectedtoken \expandafter\XINT_expr_getop \fi }% \expandafter\let\csname XINT_expr_precedence_)\endcsname \xint_c_i \expandafter\let\csname XINT_expr_op_)\endcsname\XINT_expr_getop \def\xint_tmp_def {% \expandafter\xint_tmp_do_defs \csname XINT_expr_precedence_!\expandafter\endcsname \csname XINT_expr_op_!\endcsname }% \def\xint_tmp_do_defs #1#2% {% \def #1##1##2% {\ifx ##1#2% \expandafter\xint_firstoftwo \else\expandafter\xint_secondoftwo \fi{\expandafter\XINT_expr_getop}{\expandafter\XINT_flexpr_getop}% \csname .\xintfFac{\XINT_expr_string ##2}/1[0]\endcsname }% \let#2\empty }% \xint_tmp_def \def\XINT_expr_getnext {% \expandafter\XINT_expr_getnext_checkforbraced_a\romannumeral-`0% }% \def\XINT_expr_getnext_checkforbraced_a #1% {% \XINT_expr_getnext_checkforbraced_b #1\W\Z {#1}% }% \def\XINT_expr_getnext_checkforbraced_b #1#2% {% \xint_UDwfork #1\dummy \XINT_expr_getnext_emptybracepair #2\dummy \XINT_expr_getnext_onetoken_perhaps \W\dummy \XINT_expr_getnext_gotbracedstuff \krof }% \def\XINT_expr_getnext_onetoken_perhaps\Z #1% {% \expandafter\XINT_expr_getnext_checkforbraced_c\expandafter {\romannumeral-`0#1}% }% \def\XINT_expr_getnext_checkforbraced_c #1% {% \XINT_expr_getnext_checkforbraced_d #1\W\Z {#1}% }% \def\XINT_expr_getnext_checkforbraced_d #1#2% {% \xint_UDwfork #1\dummy \XINT_expr_getnext_emptybracepair #2\dummy \XINT_expr_getnext_onetoken_wehope \W\dummy \XINT_expr_getnext_gotbracedstuff \krof }% \def\XINT_expr_getnext_emptybracepair #1{\XINT_expr_getnext }% \def\XINT_expr_getnext_gotbracedstuff #1\W\Z #2% {% \expandafter\XINT_expr_getop\csname .#2\endcsname }% \def\XINT_expr_getnext_onetoken_wehope\Z #1% {% \xint_gob_til_! #1\XINT_expr_subexpr !% \expandafter\XINT_expr_getnext_onetoken_fork\string #1% }% \def\XINT_expr_subexpr !#1!{\expandafter\XINT_expr_getop\xint_gobble_i }% \begingroup \lccode`*=`_ \lowercase{\endgroup \def\XINT_expr_sixwayfork #1(-.+*\dummy #2#3\krof {#2}% \def\XINT_expr_getnext_onetoken_fork #1% {% \XINT_expr_sixwayfork #1-.+*\dummy \XINT_expr_oparen (#1.+*\dummy -% (-#1+*\dummy {\XINT_expr_scannum_start\XINT_expr_scannum_decpart_b.}% (-.#1*\dummy \XINT_expr_getnext% (-.+#1\dummy {\XINT_expr_scannum_start\XINT_expr_scannum_decpart_b*}% (-.+*\dummy {\XINT_expr_scannum_check #1}% \krof }}% \def\XINT_expr_scannum_check #1% {% \ifnum \xint_c_ix<1#1 \expandafter\XINT_expr_scannum_start \else \xint_afterfi{\XINT_expr_unexpectedtoken \expandafter\XINT_expr_getnext\xint_gobble_ii}% \fi \XINT_expr_scannum_intpart_b #1% }% \def\XINT_expr_scannum_stopscan {!}% ! catcode 11 \def\XINT_expr_gathernum #1!% ! with catcode 11 {% \expandafter\space\csname .#1\endcsname }% \def\XINT_expr_scannum_start #1% {% \expandafter\XINT_expr_getop \romannumeral-`0\expandafter\XINT_expr_gathernum \romannumeral-`0#1% }% \def\XINT_expr_scannum_intpart_a #1% {% \ifnum \xint_c_ix<1\string#1 \expandafter\expandafter\expandafter \XINT_expr_scannum_intpart_b \expandafter\string \else \if #1.% \expandafter\expandafter\expandafter \XINT_expr_scannum_transition \else \expandafter\expandafter\expandafter \XINT_expr_scannum_stopscan \fi \fi #1% }% \def\XINT_expr_scannum_intpart_b #1% {% \expandafter #1\romannumeral-`0\expandafter \XINT_expr_scannum_intpart_a\romannumeral-`0% }% \def\XINT_expr_scannum_transition #1% {% \expandafter.\romannumeral-`0\expandafter \XINT_expr_scannum_decpart_a\romannumeral-`0% }% \def\XINT_expr_scannum_decpart_a #1% {% \ifnum \xint_c_ix<1\string#1 \expandafter\expandafter\expandafter \XINT_expr_scannum_decpart_b\expandafter\string \else \expandafter \XINT_expr_scannum_stopscan \fi #1% }% \def\XINT_expr_scannum_decpart_b #1% {% \expandafter #1\romannumeral-`0\expandafter \XINT_expr_scannum_decpart_a\romannumeral-`0% }% \def\xintfloatexpr {\romannumeral0\xintfloateval }% \def\xintfloateval {% \expandafter\XINT_expr_until_end\romannumeral-`0% \expandafter\XINT_flexpr_checkifprefix_ii\romannumeral-`0% \XINT_flexpr_getnext }% \def\xintthefloatexpr {\romannumeral0\xintthefloateval }% \def\xintthefloateval {\expandafter\XINT_flexpr_the\romannumeral0\xintfloateval }% \def\XINT_flexpr_the #1#2#3{\xintfloat{\XINT_expr_string #3}}% \def\XINT_flexpr_oparen {% \expandafter\XINT_expr_until_cparen\romannumeral-`0% \expandafter\XINT_flexpr_checkifprefix_ii\romannumeral-`0% \XINT_flexpr_getnext }% \def\xint_tmp_def #1#2#3% {% \expandafter\xint_tmp_do_defs \csname XINT_flexpr_op_#1\expandafter\endcsname \csname XINT_flexpr_until_#1\expandafter\endcsname \csname XINT_flexpr_checkifprefix_#2\expandafter\endcsname \csname XINT_expr_precedence_#1\expandafter\endcsname \csname xint_c_#2\expandafter\endcsname \csname XINTinFloat#3\endcsname }% \def\xint_tmp_do_defs #1#2#3#4#5#6% {% \def #1##1% \XINT_flexpr_op_? {% \expandafter #2\expandafter ##1\romannumeral-`0\expandafter #3\romannumeral-`0\XINT_flexpr_getnext }% \def #2##1##2##3##4% \XINT_flexpr_until_? {% \ifnum ##2>#5% \xint_afterfi {\expandafter #2\expandafter ##1\romannumeral-`0##3##4}% \else \xint_afterfi {\expandafter ##2\expandafter ##3% \csname .#6{\XINT_expr_string ##1}% {\XINT_expr_string ##4}\endcsname }% \fi }% }% \xint_tmp_def +{ii}{Add}% \xint_tmp_def -{ii}{Sub}% \xint_tmp_def *{iii}{Mul}% \xint_tmp_def /{iii}{Div}% \xint_tmp_def ^{iv}{Power}% \xint_tmp_def e{v}{fE}% \xint_tmp_def E{v}{fE}% \def\xint_tmp_def #1% {% \expandafter\xint_tmp_do_defs \csname XINT_flexpr_checkifprefix_#1\expandafter\endcsname \csname XINT_flexpr_op_-#1\endcsname }% \def\xint_tmp_do_defs #1#2% {% \def #1##1% {\xint_UDsignfork ##1\dummy #2% -\dummy ##1% \krof }% }% \xint_tmp_def {ii}% \xint_tmp_def {iii}% \xint_tmp_def {iv}% \xint_tmp_def {v}% \def\xint_tmp_def #1% {% \expandafter\xint_tmp_do_defs \csname XINT_flexpr_op_-#1\expandafter\endcsname \csname XINT_expr_until_-#1\expandafter\endcsname \csname XINT_flexpr_checkifprefix_#1\expandafter\endcsname \csname xint_c_#1\endcsname }% \def\xint_tmp_do_defs #1#2#3#4% {% \def #1% \XINT_flexpr_op_-ii,iii,iv,v {% \expandafter #2\romannumeral-`0\expandafter #3\romannumeral-`0\XINT_flexpr_getnext }% }% \xint_tmp_def {ii}% \xint_tmp_def {iii}% \xint_tmp_def {iv}% \xint_tmp_def {v}% \let\xint_tmp_def\empty \let\xint_tmp_do_defs\empty \def\XINT_flexpr_getop #1% {% \expandafter\XINT_flexpr_getop_a\expandafter #1\romannumeral-`0% }% \def\XINT_flexpr_getop_a #1#2% {% \ifcat #2\relax \ifx #2\relax \expandafter\expandafter\expandafter \XINT_expr_foundendofexpr \else \XINT_expr_unexpectedtoken \expandafter\expandafter\expandafter \XINT_flexpr_getop \fi \else \expandafter\XINT_flexpr_op_found\expandafter #2% \fi #1% }% \def\XINT_flexpr_op_found #1% {% \ifcsname XINT_expr_precedence_\string #1\endcsname \expandafter\xint_afterfi\expandafter {\csname XINT_expr_precedence_\string #1\expandafter\endcsname \csname XINT_flexpr_op_\string #1\endcsname }% \else \XINT_expr_unexpectedtoken \expandafter\XINT_flexpr_getop \fi }% \expandafter\let\csname XINT_flexpr_op_)\endcsname\XINT_flexpr_getop \def\XINT_flexpr_getnext {% \expandafter\XINT_flexpr_getnext_checkforbraced_a\romannumeral-`0% }% \def\XINT_flexpr_getnext_checkforbraced_a #1% {% \XINT_flexpr_getnext_checkforbraced_b #1\W\Z {#1}% }% \def\XINT_flexpr_getnext_checkforbraced_b #1#2% {% \xint_UDwfork #1\dummy \XINT_flexpr_getnext_emptybracepair #2\dummy \XINT_flexpr_getnext_onetoken_perhaps \W\dummy \XINT_flexpr_getnext_gotbracedstuff \krof }% \def\XINT_flexpr_getnext_onetoken_perhaps\Z #1% {% \expandafter\XINT_flexpr_getnext_checkforbraced_c\expandafter {\romannumeral-`0#1}% }% \def\XINT_flexpr_getnext_checkforbraced_c #1% {% \XINT_flexpr_getnext_checkforbraced_d #1\W\Z {#1}% }% \def\XINT_flexpr_getnext_checkforbraced_d #1#2% {% \xint_UDwfork #1\dummy \XINT_flexpr_getnext_emptybracepair #2\dummy \XINT_flexpr_getnext_onetoken_wehope \W\dummy \XINT_flexpr_getnext_gotbracedstuff \krof }% \def\XINT_flexpr_getnext_emptybracepair #1{\XINT_flexpr_getnext }% \def\XINT_flexpr_getnext_gotbracedstuff #1\W\Z #2% {% \expandafter\XINT_flexpr_getop\csname .#2\endcsname }% \def\XINT_flexpr_getnext_onetoken_wehope\Z #1% {% \xint_gob_til_! #1\XINT_flexpr_subexpr !% \expandafter\XINT_flexpr_getnext_onetoken_fork\string #1% }% \def\XINT_flexpr_subexpr !#1!{\expandafter\XINT_flexpr_getop\xint_gobble_i }% \begingroup \lccode`*=`_ \lowercase{\endgroup \def\XINT_flexpr_getnext_onetoken_fork #1% {% \XINT_expr_sixwayfork #1-.+*\dummy \XINT_flexpr_oparen (#1.+*\dummy -% (-#1+*\dummy {\XINT_flexpr_scannum_start\XINT_expr_scannum_decpart_b.}% (-.#1*\dummy \XINT_flexpr_getnext% (-.+#1\dummy {\XINT_flexpr_scannum_start\XINT_expr_scannum_decpart_b*}% (-.+*\dummy {\XINT_flexpr_scannum_check #1}% \krof }}% \def\XINT_flexpr_scannum_check #1% {% \ifnum \xint_c_ix<1#1 \expandafter\XINT_flexpr_scannum_start \else \xint_afterfi {\XINT_expr_unexpectedtoken \expandafter\XINT_flexpr_getnext\xint_gobble_ii}% \fi \XINT_expr_scannum_intpart_b #1% }% \def\XINT_flexpr_scannum_start #1% {% \expandafter\XINT_flexpr_getop \romannumeral-`0\expandafter\XINT_expr_gathernum \romannumeral-`0#1% }% \catcode`* 13 \def\xintNewExpr #1[#2]#3% {% \begingroup \ifcase #2\relax \toks0 {\xdef #1}% \or \toks0 {\xdef #1##1}% \or \toks0 {\xdef #1##1##2}% \or \toks0 {\xdef #1##1##2##3}% \or \toks0 {\xdef #1##1##2##3##4}% \or \toks0 {\xdef #1##1##2##3##4##5}% \or \toks0 {\xdef #1##1##2##3##4##5##6}% \or \toks0 {\xdef #1##1##2##3##4##5##6##7}% \or \toks0 {\xdef #1##1##2##3##4##5##6##7##8}% \or \toks0 {\xdef #1##1##2##3##4##5##6##7##8##9}% \else \immediate\write-1{Package xintexpr Error! illegal number of macro parameters.}% \fi \def\xintAdd {:xintAdd}% \def\xintSub {:xintSub}% \def\xintMul {:xintMul}% \def\xintDiv {:xintDiv}% \def\xintfPow {:xintfPow}% \def\xintfFac {:xintfFac}% \def\xintOpp {:xintOpp}% \def\xintfE {:xintfE}% \def\xintraw { :romannumeral0:xintraw}% \def\XINT_expr_the ##1##2##3% {\expandafter\xintraw \expandafter{\romannumeral-`0\XINT_expr_string ##3}}% \lccode`\*=`: \lowercase {\def*}{!noexpand!}% \catcode`: 13 \endlinechar -1 \everyeof {\noexpand }% \edef\xintNewExprtmp {\expandafter\scantokens \expandafter{\romannumeral0\xinttheeval #3\relax}}% \lccode`\*=`_ \lowercase {\def*}{####}% \catcode`_ 13 \catcode`! 0 \catcode`: 11 \the\toks0 {\expandafter\scantokens\expandafter{\xintNewExprtmp }}% \endgroup }% \def\xintNewFloatExpr #1[#2]#3% {% \begingroup \ifcase #2\relax \toks0 {\xdef #1}% \or \toks0 {\xdef #1##1}% \or \toks0 {\xdef #1##1##2}% \or \toks0 {\xdef #1##1##2##3}% \or \toks0 {\xdef #1##1##2##3##4}% \or \toks0 {\xdef #1##1##2##3##4##5}% \or \toks0 {\xdef #1##1##2##3##4##5##6}% \or \toks0 {\xdef #1##1##2##3##4##5##6##7}% \or \toks0 {\xdef #1##1##2##3##4##5##6##7##8}% \or \toks0 {\xdef #1##1##2##3##4##5##6##7##8##9}% \else \immediate\write-1{Package xintexpr Error! illegal number of macro parameters.}% \fi \def\XINTinFloatAdd {:XINTinFloatAdd}% \def\XINTinFloatSub {:XINTinFloatSub}% \def\XINTinFloatMul {:XINTinFloatMul}% \def\XINTinFloatDiv {:XINTinFloatDiv}% \def\XINTinFloatPower {:XINTinFloatPower}% \def\xintfFac {:xintfFac}% \def\xintOpp {:xintOpp}% \def\XINTinFloatfE {:XINTinFloatfE}% \def\xintfloat { :romannumeral0:xintfloat}% \def\XINT_flexpr_the ##1##2##3% {\expandafter\xintfloat \expandafter{\romannumeral-`0\XINT_expr_string ##3}}% \lccode`\*=`: \lowercase {\def*}{!noexpand!}% \catcode`: 13 \endlinechar -1 \everyeof {\noexpand }% \edef\xintNewExprtmp {\expandafter\scantokens \expandafter{\romannumeral0\xintthefloateval #3\relax}}% \lccode`\*=`_ \lowercase {\def*}{####}% \catcode`_ 13 \catcode`! 0 \catcode`: 11 \the\toks0 {\expandafter\scantokens\expandafter{\xintNewExprtmp }}% \endgroup }% \XINT_expr_restorecatcodes_endinput% \endinput %% %% End of file `xintexpr.sty'.