Als Tröpfelalgorithmus bezeichnet man einen Algorithmus zur Berechnung mathematischer Konstanten wie der Kreiszahl oder der eulerschen Zahl , bei dem die Ziffern eine nach der anderen berechnet und anschließend nicht mehr benötigt werden, also sozusagen herauströpfeln. Solche Algorithmen kommen bei der Berechnung häufig mit kleinen ganzen Zahlen aus, eine Implementierung hat damit keine Probleme mit Rundungsfehlern und benötigt keine Langzahlarithmetik. Als erster Algorithmus dieses Typs gilt ein Algorithmus zur Berechnung der eulerschen Zahl, den A. H. J. Sale 1968 veröffentlichte. Der englische Name spigot algorithm (wörtlich: Zapfhahnalgorithmus) taucht erstmals 1991 bei Stanley Rabinowitz auf, der einen Tröpfelalgorithmus für angab.
Tröpfelalgorithmen beruhen auf folgendem einfachen Algorithmus zur Bestimmung der Ziffern:
Wiederholt man diese Schritte, so ergibt sich im ersten Schritt der Teil vor dem Komma, in allen weiteren Schritten die nächste Nachkommaziffer. Multipliziert man statt mit 10 mit einer anderen Zahl, so ergibt sich die Darstellung nicht im Dezimalsystem, sondern analog in jedem beliebigen Stellenwertsystem.
Häufig beruhen Tröpfelalgorithmen auf gemischten Basen. Während die übliche Darstellung der eulerschen Zahl letztlich eine konventionelle Schreibweise ist für
so lässt sich aus der Formel folgende Darstellung gewinnen:
Hierbei handelt es sich um eine Erweiterung des fakultätsbasierten Zahlensystems auf reelle Zahlen, in dem die eulersche Zahl geschrieben werden kann als
In dieser Darstellung lassen sich der ganzzahlige und gebrochene Teil einer Zahl ebenso leicht bestimmen wie im gewöhnlichen Dezimalsystem, indem man den Teil vor und nach dem Komma nimmt. Auch die Multiplikation lässt sich wie üblich durchführen, lediglich beim Übertrag ist die gemischte Basis zu beachten.
Aus dieser Idee ergibt sich der folgende Algorithmus zur Berechnung von Nachkommastellen der eulerschen Zahl im Dezimalsystem:
Das folgende Beispiel führt den Algorithmus zur Berechnung von 4 Nachkommastellen durch, wobei gewählt wird, weil die nötigen 4 Stellen zur Anwendung dieses Tröpfelalgorithmus hat:
| A | 1 | 1 | 1 | 1 | 1 | 1 | |
|---|---|---|---|---|---|---|---|
| B | 2 | 3 | 4 | 5 | 6 | 7 | |
| 2 | 1 | 1 | 1 | 1 | 1 | 1 | |
| 7 | 0 | 1 | 0 | 1 | 5 | 3 | |
| 1 | 1 | 1 | 3 | 4 | 0 | 2 | |
| 8 | 0 | 1 | 2 | 0 | 2 | 6 | |
| 2 | 1 | 0 | 0 | 4 | 4 | 4 |
Die 3 in der vierten Zeile rechts außen ergibt sich dabei als der Rest von 10 bei Division durch 7. Dies ergibt einen Übertrag 1, sodass in der nächsten Spalte 11 durch 6 dividiert wird, was als Rest 5 und als Übertrag 1 ergibt. Entsprechend werden die weiteren Einträge berechnet.
Einen ähnlichen Algorithmus fand Stanley Rabinowitz für die Berechnung von . Er beruht auf einer gemischten gebrochenen Basis, es gilt:
Bezüglich der gemischten gebrochenen Basis gilt also
Hier kommt die Schwierigkeit hinzu, dass der „Nachkommateil“ größer werden kann als 1, sodass sich ganzzahliger und gebrochener Teil nicht mehr so leicht bestimmen lassen. Dies führt zu folgendem Algorithmus, um Nachkommastellen von zu bestimmen:
Das folgende Beispiel führt den Algorithmus zur Berechnung von Nachkommastellen durch; dafür ist die Anzahl der erforderlichen Spalten :
| A | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| B | 3 | 5 | 7 | 9 | 11 | 13 | 15 | 17 | 19 | 21 | 23 | 25 | |
| 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | |
| 3 | 0 | 2 | 2 | 4 | 3 | 10 | 1 | 13 | 12 | 1 | 20 | 20 | 20 |
| 1 | 3 | 1 | 3 | 3 | 5 | 5 | 4 | 8 | 5 | 8 | 17 | 20 | 0 |
| 4 | 1 | 1 | 0 | 0 | 0 | 4 | 12 | 9 | 4 | 10 | 6 | 16 | 0 |
| 1 | 4 | 0 | 4 | 3 | 1 | 3 | 1 | 3 | 10 | 8 | 0 | 22 | 0 |
Tatsächlich kann man nicht sicher sein, dass die dritte Nachkommastelle eine 1 ist, es könnte passieren, dass sie im nächsten Schritt noch auf 2 erhöht werden müsste. In Wirklichkeit tritt dieser Fall erstmals an der 31. Nachkommastelle auf, hier liefert der Algorithmus zunächst 4, erst im nächsten Schritt wird sie zu 5 korrigiert. Man kann dieses Problem teilweise umgehen, indem man eine Ziffer mehr berechnet (und entsprechend größer wählt), allerdings kann es auch in diesem Fall passieren, dass man weniger gesicherte Ziffern erhält als gewünscht, nämlich dann, wenn am Ende eine Kette aus 9 vorliegt. Falls normal ist, so muss im Durchschnitt eine von 20 vorläufigen Ziffern nachträglich korrigiert werden.
Auch für andere Zahlen lassen sich Tröpfelalgorithmen finden. Eine Reihe besonderer Algorithmen zur Berechnung von fand Jeremy Gibbons. Während man beim obigen Algorithmus zu Beginn die Anzahl der gewünschten Stellen festlegen muss (er ist bounded, also beschränkt), kann der Algorithmus von Gibbons von festen Startwerten aus beliebig lange ausgeführt werden, um beliebig viele Ziffern zu erhalten (unbounded, also unbeschränkt).