%%
%% This is file `bnumexprchanges.tex',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% bnumexpr.dtx  (with options: `changes')
%% 
%% IMPORTANT NOTICE:
%% 
%% For the copyright see the source file.
%% 
%% Any modified versions of this file must be renamed
%% with new filenames distinct from bnumexprchanges.tex.
%% 
%% For distribution of the original source see the terms
%% for copying and modification in the file bnumexpr.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 bnumexpr package: Expressions with big integers
%% Copyright (C) 2014-2022, 2025 Jean-Francois Burnol
%%
\item[1.7b (2025/09/27)] Add to documentation an expandable macro
  computing Fibonacci numbers and illustrate it with the computation
  of $F_{10000}$.
\item[1.7a (2025/09/14)]\mbox{}\newline
  \textbf{Bug fix:} inputs consisting exclusively of zeros and underscores
  following an hexadecimal or other prefix caused a crash due to a |1.7|
  regression. \emph{Yes, we have now added a long delayed test suite doing
    more than checking only those examples as included in the documentation.}

  \textbf{New feature:} if the parser expects a value and finds only
  underscores (they are allowed as separators for blocks of digits) before
  hitting an operator, an opening parenthesis (or |\bnumexpr| sub-expression),
  a comma, or the end of the expression, it will consider it has fetched the
  value zero.  Formerly, for example expressions reduced to |_|, |__|, or
  entirely empty, or for example |_^_| all reported errors.

  \textbf{Other:} \cs{evaltohex} which signaled via an expandable
  error its deprecation since |1.6| has been removed.
\item[1.7 (2025/09/13)]\mbox{}\newline
  \textbf{Bug fix:} inputs with an underscore immediately after a
  hexadecimal (or other) prefix caused a crash due to a |1.6| regression.

\textbf{New features:}
\begin{itemize}
\item Support for hexadecimal input using letters in lowercase.
\item Optional argument |[ha]| for lowercase hexadecimal output.
\end{itemize}
\item[1.6a (2025/09/07)]\mbox{}\newline
  \textbf{Bug fix:} the |1.6| support for Babel-active
  characters worked with |\bnumeval| (which is recommended interface)
  but not with |\bnumexpr|.
\item[1.6 (2025/09/05)]\mbox{}\newline
\textbf{Breaking changes:}
    \begin{itemize}[noitemsep]
    \item Release |1.4n| or later of the \xintname bundle is required
          (for those components actually used, which by default are
           \xintkernelname, \xintcorename and \xintbinhexname).
    \item \cs{evaltohex} is deprecated and causes
      an error signaling it. \emph{It was removed at |1.7a|}. Use new |\bnumeval||[h]|.
    \item \cs{bnumexprsetup} was deprecated at |1.5| and kept as alias of
         |\bnumsetup|.  It has now been removed.
    \item \cs{bnumprintonetohex} and \cs{bnumhextodec}, which were documented
      as customizable do not exist anymore.  Check the documentation for
      |\bnumprintonehex| and |\bnumsetup|'s key |hextodec|.
    \item Under the |custom| option, not only \xintcorename but
      also \xintbinhexname are not loaded.
      Use |customcore| to avoid that.   There is also |custombinhex|.
    \end{itemize}

\textbf{Bug fix:}
  An underscore |_| located in front of a number used to cause
        an error. It is now ignored.

\textbf{New features:}
  \begin{itemize}
  \item |0b|, |0o| and |0x| are recognized as prefixes for binary, octal, and
    hexadecimal inputs. And |'| is recognized as prefix for octal input, in
    addition to |"| for hexadecimal.
  \item |\bnumeval| accepts an optional argument |[b]| or |[o]| or
        |[h]| for automatic conversion of the calculated value
        (or comma separated values) to
        respectively binary, octal, or hexadecimal.
  \item Babel-active characters (such as |:| and |!| with French)
        do not need any preventive measures anymore such as using
        |\string!| in place of |!|.
  \item |\bnumsetup| can now be used also to customize which macros
        implement conversion from decimal to other bases.
  \end{itemize}
The documentation was extensively revised and made more user-friendly.
\item[1.5 (2021/05/17)]
  \begin{itemize}
  \item \textbf{breaking change:} the power operators act now in a right
    associative way; this has been announced at \xintexprname as a probable
    future evolution, and is implemented in anticipation here now.
  \item \textbf{fix two bugs} (imported from upstream \xintexprname) regarding
    hexadecimal input: impossibility to use |"\foo| syntax (one had to do
    |\expandafter"\foo| which is unexpected constraint; a very longstanding
    \xintexprname bug) and issues with leading zeros (since \xintexprname |1.2m|).
  \item renamed \cs{bnumexprsetup} into |\bnumsetup|; the former remains
    available but is deprecated. [REMOVED AT |1.6|]
  \item the customizability and extendibility is now total:
    \begin{enumerate}
      \item |\bnumprintone|, |\bnumprintonetohex|, |\bnumprintonesep|, |\bnumhextodec|,
      \item |\bnumdefinfix| which allows to add extra infix operators,
      \item |\bnumdefpostfix| which allows to add extra postfix operators.
    \end{enumerate}
  \item |\bnumsetup|, |\bnumdefinfix|, |\bnumdefpostfix| obey the
    |\xintglobaldefstrue| and |\xintverbosetrue| settings.
  \item documentation is extended, providing details regarding the precedence
    model of the parser, as inherited from upstream \xintexprname; also an
    example of usage of |\bnumsetup| is included on how to transform
    |\bnumeval| into a calculator with fractions.
  \end{itemize}

\item[1.4a (2021/05/13)]
  \begin{itemize}
  \item fix undefined control sequences errors encountered by the parser in
    case of either extra or missing closing parenthesis (due to a problem
    in technology transfer at |1.4| from upstream \xintexprname).
  \item fix |\BNE_Op_opp| must now be \emph{f}-expandable (also caused as a
    collateral to the technology transfer).
  \item fix user documentation regarding the constraints applying to the user
    replacement macros for the core algebra, as they have changed at |1.4|.
  \end{itemize}

\item[1.4 (2021/05/12)]
  \begin{itemize}
  \item technology transfer from \xintexprname |1.4| of
    |2020/01/31|. The |\expanded| primitive is now required (TeXLive
    2019).
  \item addition to the syntax of the |"| prefix for hexadecimal
    input.
  \item addition of \cs{evaltohex} which is like |\bnumeval| with an extra
    conversion step to hexadecimal notation.
  \end{itemize}

\item[1.2e (2019/01/08)]
  Fixes a documentation glitch (extra braces when mentioning |\the\numexpr| or
  |\thebnumexpr|).

\item[1.2d (2019/01/07)]
  \begin{itemize}
  \item requires \xintcorename |1.3d| or later (if not using option |custom|).
  \item adds |\bnumeval|\marg{expression} user interface.
  \end{itemize}

\item[1.2c (2017/12/05)] \textbf{Breaking changes:}
  \begin{itemize}
  \item requires \xintcorename |1.2p| or later (if not using option |custom|).
  \item |divtrunc| key of \cs{bnumexprsetup} is renamed to |div|.
  \item the |//| and |/:| operators are now by default associated to the
    \emph{floored} division. This is to keep in sync with the change of
    \xintcorename at |1.2p|.
  \item for backwards compatibility, one
    may add to existing document:\newline
    \string\bnumexprsetup\{div=\string\xintiiDivTrunc,
    mod=\string\xintiiModTrunc\}
  \end{itemize}

\item[1.2b (2017/07/09)]
  \begin{itemize}
  \item the |_| may be used to separate visually blocks of digits in long
    numbers.
  \end{itemize}

\item[1.2a (2015/10/14)]
  \begin{itemize}
  \item requires \xintcorename |1.2| or later (if not using option |custom|).
  \item additions to the syntax: factorial |!|, truncated division
    |//|, its associated modulo |/:| and |**| as alternative to |^|.
  \item all options removed except |custom|.
  \item new command \cs{bnumexprsetup} which replaces the commands such as
    |\bnumexprusesbigintcalc|.
  \item the parser is no more limited to numbers with at most 5000 digits.
  \end{itemize}

\item[1.1b (2014/10/28)]
  \begin{itemize}
  \item README converted to |markdown/pandoc| syntax,
  \item the package now loads only |xintcore|, which belongs to |xint| bundle
    version |1.1| and extracts from the earlier |xint| package the core arithmetic
    operations as used by |bnumexpr|.
  \end{itemize}

\item[1.1a (2014/09/22)]
  \begin{itemize}
  \item added |l3bigint| option to use experimental \LaTeX3
    package of the same name,

  \item added Changes and Readme sections to the documentation,

  \item better |\BNE_protect| mechanism for use of
  |\bnumexpr...\relax| inside an |\edef| (without |\bnethe|). Previous one,
  inherited from |xintexpr.sty 1.09n|, assumed that the |\.=<digits>| dummy
  control sequence encapsulating the computation result had \cs{relax}
  meaning. But removing this assumption was only a matter of letting
  |\BNE_protect| protect two, not one, tokens. This will be backported to
  next version of \xintexprname, naturally (done with |xintexpr.sty 1.1|).
  \end{itemize}

\item[1.1 (2014/09/21)] First release. This is down-scaled from the
  (development version of) \xintexprname. Motivation came the previous day
  from a chat with \textsc{Joseph Wright} over big int status in \LaTeX3.
  The |\bnumexpr...\relax| parser can be used on top of big int macros of
  one's choice. Functionalities limited to the basic operations. I leave
  the power operator |^| as an option.
\endinput
%%
%% End of file `bnumexprchanges.tex'.
