CTAN Comprehensive TeX Archive Network

Directory macros/latex/contrib/bnumexpr

Source: bnumexpr.dtx
Version: v1.2e, 2019/01/08 (doc: 2019/01/08)
Author: Jean-Francois Burnol
Info: Expressions with big integers
License: LPPL 1.3c



The package bnumexpr allows _expandable_ computations with big integers
and the four infix operators +, -, *, / familiar from the \numexpr e-TeX

Besides extending the scope to arbitrarily big numbers (and having a
more complete syntax, for example -(1) is legal input), it adds the (by
default) floored division operator //, and its associated modulo /:, the
power operator ^ (or equivalently **), and the factorial post-fix
operator !. The space character as well as the underscore character _
both may serve to optionally separate digits in long numbers, for better
readability of the input.

For example:

    \bnumeval{( 92_874_927_979^5 - 31_9792_7979^6 ) / 30!}

    The above expands (in two steps) to `-4006240736596543944035189`
    (the `/` does rounded division to match the `\numexpr` behaviour).

The expression parser is scaled-down from the \xinttheiiexpr...\relax
parser as provided by package xintexpr[1]: it does not handle
hexadecimal input, boolean operators, dummy or user defined variables,
functions, etc...

By default, the package loads xintcore[2] (release 1.3d is then
required) but it is possible via option _custom_ and macro
\bnumexprsetup to map the operators to macros of one's own choice. It is
the responsability of the user to load the packages providing these
custom macros.

Notice that the possibility not to use the xintcore macros might be
removed in the future: perhaps a future release will maintain during
computations a private internal representation (especially tailored
either for the xintcore macros or new ones which would be included
within bnumexpr.sty itself) and the constraints this implies may render
optional use of other macros impossible.


Obtain bnumexpr.dtx (and possibly, bnumexpr.ins and the README) from


Both "tex bnumexpr.ins" and "tex bnumexpr.dtx" extract from bnumexpr.dtx
the following files:

    this is the style file.

    reconstitutes this README.

    lists changes from the initial version.

    can be used to generate the documentation:
    -   with latex+dvipdfmx: "latex bnumexpr.tex" (thrice) then
        "dvipdfmx bnumexpr.dvi".

    Ignore dvipdfmx warnings, but if the pdf file has problems with
    fonts (possibly from an old dvipdfmx), use then rather pdflatex.

    -   with pdflatex: "pdflatex bnumexpr.tex" (thrice).

    In both cases files README.md and bnumexprchanges.tex must be
    present in the same repertory.

without bnumexpr.tex:
    "pdflatex bnumexpr.dtx" (thrice) extracts all files and
    simultaneously generates the pdf documentation.

Finishing the installation:

           bnumexpr.sty   --> TDS:tex/latex/bnumexpr/

           bnumexpr.dtx   --> TDS:source/latex/bnumexpr/
           bnumexpr.ins   --> TDS:source/latex/bnumexpr/

           bnumexpr.pdf   --> TDS:doc/latex/bnumexpr/
                 README   --> TDS:doc/latex/bnumexpr/

Files bnumexpr.tex, bnumexprchanges.tex, README.md may be discarded.


Copyright (C) 2014-2019 by Jean-Francois Burnol

This Work may be distributed and/or modified under the
conditions of the LaTeX Project Public License 1.3c.
This version of this license is in


and version 1.3 or later is part of all distributions of
LaTeX version 2005/12/01 or later.

This Work has the LPPL maintenance status "author-maintained".

The Author and Maintainer of this Work is Jean-Francois Burnol.

This Work consists of the main source file bnumexpr.dtx and the derived

    bnumexpr.sty, bnumexpr.pdf, bnumexpr.ins, bnumexpr.tex,
    bnumexprchanges.tex, README.md

[1] http://www.ctan.org/pkg/xint

[2] http://www.ctan.org/pkg/xint

Download the contents of this package in one zip archive (103.3k).

bnumexpr – Extends ’s \numexpr...\relax construct to big integers

The package extends ε- \numexpr...\relax operation to allow big integers, powers, factorials, truncated division and its associated modulo.

By default, bnumexpr loads package xintcore (part of the xint bundle) and uses its arithmetic macros.

Version1.2d 2019-01-07
LicensesThe Project Public License 1.3c
Copyright2014–2019 Jean-François Burnol
MaintainerJean-François Burnol
Contained inTeX Live as bnumexpr
MiKTeX as bnumexpr
Guest Book Sitemap Contact Contact Author