Die heutigen
Fließkommatypen Single und
Double (oder sonstige, die ja alle intern nach dem selben Schema
arbeiten), haben schon immer mein persönliches Empfinden
gestört. Ich habe schon immer das Rechnen mit Bruchzahlen dem
Rechnen mit Kommazahlen vorgezogen. Aus diesem Grund habe ich
irgendwann beschlossen ein Tool zu entwickeln, daß intern nur
mit
Integern in Form von Brüchen arbeitet, und das mindestens
ebenso genau rechnet, wie die
üblichen Fließkommatypen.
Dabei fand ich heraus, daß an der entscheidenden Stelle der
Computermathematik mit Zahlen fester Länge, nämlich
dem
approximieren eines intern exakt gerechneten doppeltlangen
Zwischenergebnisses einer Grundrechenoperation hin zu einem
darstellbaren einfachlangem Ergebnis, die Bruchrechnung ganz neue
Möglichkeiten eröffnet. Ich fand einen Algorithmus,
der
mathematisch optimal
ist
in Hinblick auf die Minimierung des dabei zwangsläufig
auftretenden Restfehlers (Rundungsfehler). Leider ist er so aufwendig,
das die entsprechende Routine vergleichsweise a...langsam arbeitet.
Denoch hat mich diese Erkenntnis so fasziniert, das ich gerade eine
entsprechende Unit entwickle. Und jetzt die schlechten Nachrichten:
- Ich werde den Algorithmus und den Code nicht verraten.
Stattdessen werde ich nur mein Tool, wenn es lauffähig ist,
als
Laufzeitbibliothek zum Download anbieten. Für die Nutzung
werde
ich keine Begrenzung festlegen, d.h. jeder wird es in seiner
unveränderten Form für jeden Zweck, auch kommerziell,
einsetzen dürfen, aber wer den Algorithmus wissen will,
(zum Beispiel um das ganze in Hardware zu implementieren, was sehr viel
Sinn machen würde) muß mir Lizenzgebühr
zahlen. Was das
angeht bin ich relativ unbescheiden.
- Ich hatte das Tool schon mal lauffähig, die ersten
Ergebnisse waren großartig, und dann habe ich mich
für eine
umfangreiche Neukonzeption entschieden, u.a. mit dezimalen Exponenten
(von 10E-999 bis 10E+999) und nun ... na ja. Es dauert
noch eine Weile, seufz.
- Zur Zeit bin ich erheblich mit anderem
beschäftigt. Es dauert also sogar noch länger als
eben gesagt.
Und jetzt noch zur Info: Als ehemaliger Turbo-Pascaler mache
ich
weder mit C (uuaää, igiiitt), noch irgendwelchem
anderen
neumodischen Zeug herum (auch wenn einige von denen ja ganz
gut
sein sollen). Ich selbst programmiere inzwischen in
Freepascal, das
Laufzeitbilbliotheken für Windows, Linux und wohl noch
für einige andere Plattformen erzeugen kann.