`spigot`

*a command-line exact real calculator*

## Introduction

`spigot`

is a command-line streaming exact real calculator.

A normal calculating program, given a mathematical expression to
evaluate, will want to know in advance how many digits of output are
needed (if it even has that option), and if the expression includes
more than one successive operation, then rounding errors will build up
so that the last few digits are potentially wrong, or perhaps more in
some cases (e.g. if significance loss occurs).

`spigot`

, by contrast, does not output any digit of the
answer until it's sure that the digit is right, and it will keep
generating digits until you tell it to stop.

Also, `spigot`

is ‘streaming’ in the sense that
if you tell it to do computations on a number you've previously stored
in a file (perhaps to very high precision) or a number it's reading
from a pipe, then it will begin producing output as soon as it's read
enough of the input to know how the output starts.

The downside is that `spigot`

is very slow compared to the
usual kind of computer arithmetic. But it can be useful if you really
need a lot of digits for some reason (e.g. a large number of digits of
mathematical constants are sometimes incorporated into cryptographic
algorithms), or as a cross-check on other calculating systems.

For more information, read the
manual online, which includes some
examples of
the sort of thing `spigot`

can do.

`spigot`

is named after its core algorithm, which is Jeremy
Gibbons's
unbounded spigot algorithm for the digits of *π*,
enhanced to support more output modes and a lot more input numbers.

## Licence

`spigot`

is distributed under the MIT licence, so it is
free to copy, redistribute, use and reuse.

For more details, see the file called `LICENCE`

in the
distribution archive, or the
licence appendix in the
documentation.

## Download

A Unix source archive of `spigot`

is available here:

`spigot-20240202.10bd0ca.tar.gz`

`spigot`

can run on Windows too. A pre-compiled Windows
executable is here:

`spigot.exe`

If you want to see the latest state of development, you can check
the development sources out from my `git`

repository:

`git clone https://git.tartarus.org/simon/spigot.git`

Alternatively, you can browse the repository on the web,
here.

## Feedback

Please report bugs to
anakin@pobox.com.

You might find it helpful to read
this article
before reporting a bug.

Patches are welcome.

(comments to anakin@pobox.com)

(thanks to
chiark
for hosting this page)

(last modified on Fri Feb 2 02:42:56 2024)