Source: xint.dtx 1.2g 2016/03/19 (doc 2016/03/19)
Author: Jean-Francois Burnol
Info: Expandable operations on big integers, decimals, fractions
License: LPPL 1.3c
This README
is also available as README.pdf
and README.html
.
Change log is to be found in CHANGES.pdf
or CHANGES.html
.
The user manual is xint.pdf
, and the commented source code is available as sourcexint.pdf
.
The basic aim is provide expandable computations on integers, fractions, and floating point numbers. For example
\xinttheexpr reduce(37189719/183618963+11390170/17310720)^17\relax
will evaluate exactly the fraction (the result has 462 characters including the fraction slash). One can also work with dummy variables:
\xinttheexpr mul(add(x(x+1)(x+2), x=y..y+15), y=171286,98762,9296)\relax
(evaluates to 15979066346135829902328007959448563667099190784
.)
Float computations are possible at an adjustable precision (default 16).
\xintthefloatexpr 123456789^1000.5\relax
Mathematical functions (apart from sqrt
which achieves correct rounding in arbitrary precision) are yet to be implemented.
It is possible to use the package with Plain as well as with LaTeX.
Sub-units xintcore
, xint
and xintfrac
provide the underlying macros, and xintexpr
loads all of them and provides expandable parsers allowing computations such as the above (and more). A more light-weight package bnumexpr (LaTeX only) loads only xintcore
and provides a parser which handles only big integers, the four operations, the power operation and the factorial (1.2).
\usepackage{xint} % expandable arithmetic with big integers
\usepackage{xintfrac} % decimal numbers, fractions, floats
\usepackage{xintexpr} % expressions with infix operators
Further packages: xintbinhex
, xintgcd
, xintseries
and xintcfrac
. All dependencies are handled automatically. For example xintexpr
automatically loads xintfrac
which itself loads xint
. Package xintcore
is the subset of xint
providing only the five operations on big integers: \xintiiAdd
, \xintiiMul
, ... There is also xinttools
which is a separate package providing, among others, expandable and non-expandable loops such as \xintFor
.
One does for example:
\input xintexpr.sty
Again, all dependencies are handled automatically. The packages may be loaded in any catcode context such that letters, digits, \
and %
have their standard catcodes.
xintcore.sty
and xinttools.sty
both import xintkernel.sty
which has the catcode handler and package identifier and defines a few utilities such as \oodef
, \fdef
, or \xint_dothis/\xint_orthat
.
xint
is included in TeXLive (hence also MacTeX) and MikTeX.
There can be a few days of delay between apparition of a new version on CTAN and availability via the distribution package manager.
xint.tds.zip
and unzip
Assumes a GNU/Linux-like system (or Mac OS X).
obtain xint.tds.zip
from CTAN: http://mirror.ctan.org/install/macros/generic/xint.tds.zip
cd to the download repertory and issue:
unzip xint.tds.zip -d <TEXMF>
where <TEXMF>
is a suitable TDS-compliant destination repertory. For example, with TeXLive:
Linux, standard access rights, hence sudo is needed, installation into the "local" tree:
sudo unzip xint.tds.zip -d /usr/local/texlive/texmf-local
sudo texhash /usr/local/texlive/texmf-local
Mac OS X, installation into user home folder (no sudo needed, and it is recommended to not have a ls-R file there, hence no texhash):
unzip xint.tds.zip -d ~/Library/texmf
Makefile
and xint.dtx
The Makefile automatizes rebuilding from xint.dtx
all documentation files as well as xint.tds.zip
. It is for GNU/Linux-like (inc. Mac OS X) systems, with a teTeX like installation such as TeXLive. Furthermore the Pandoc software is required.
obtain xint.dtx
and Makefile
from http://mirror.ctan.org/macros/generic/xint.
put them in an otherwise empty working repertory, run make
or equivalently make help
for further instructions.
xint.dtx
Run "tex xint.dtx"
or "etex xint.dtx"
to extract from xint.dtx
all packages as well as these files:
README.md
CHANGES.md
xint.tex
xint.pdf
via "latex xint.tex"
(thrice) then "dvipdfmx xint.dvi"
. It is also possible to compile xint.tex
with xelatex
, or with pdflatex
(this latter option produces a bigger pdf).
For successful compilation, packages newtxtt
, newtxmath
, etoc
, mathastext
are needed. Inclusion of the source code is off by default, but the toggle can be set in xint.tex
.
A third option is to generate xint.pdf
via xelatex xint.dtx
or pdflatex xint.dtx
. Source code is then included by default (but some code comments in French use 8bit characters, hence for xelatex
an a priori conversion of xint.dtx into utf-8 will give a better result).
Makefile.mk
"etex xint.dtx"
, not with "tex xint.dtx"
. Rename it to Makefile
and run make
on the command line for further help.
doHTMLs.sh
and doPDFs.sh
README.md
and CHANGES.md
to HTML and PDF formats. They require Pandoc.
pandoctpl.latex
doPDFs.sh
.
Finishing the installation in a TDS hierarchy:
move the style files to TDS:tex/generic/xint/
xint.dtx
goes to TDS:source/generic/xint/
the documentation (xint.pdf, README.md,...) goes to TDS:doc/generic/xint/
Depending on the destination, it may then be necessary to refresh a filename database.
Copyright (C) 2013-2016 by Jean-Francois Burnol
This Work may be distributed and/or modified under the conditions of the LaTeX Project Public License version 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 of this Work is Jean-Francois Burnol.
This Work consists of the source file xint.dtx and of its derived files: xintkernel.sty, xintcore.sty, xint.sty, xintfrac.sty, xintexpr.sty, xintbinhex.sty, xintgcd.sty, xintseries.sty, xintcfrac.sty, xinttools.sty, xint.ins, xint.tex, README, README.md, README.html, README.pdf, CHANGES.md, CHANGES.html, CHANGES.pdf, pandoctpl.latex, doHTMLs.sh, doPDFs.sh, xint.dvi, xint.pdf, Makefile.mk.