%%
%% 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'.
