Hallo Delphifreunde!
Schon seit längerem werkele ich an einem Programm, das ich bisher nur in der Entwicklerecke veröffentlichte:
Langzahlentaschenrechner.
In diesem geht darum, verschiedene in Pascal verfügbare Langzahlenbibliotheken hinsichtlich ihrer Geschwindigkeit zu vergleichen und das zu demonstrieren.
Neben den Rechenoperationen von der 1. bis zur 3. Stufe, dem größten gemeinsamen Teiler und dem kleinsten gemeinsamen Vielfachen (teilweise selbstgeschrieben, teilweise bibliothekseigen) bietet das Programm auch 3 Primzahlzerlegungen und einige Funktionen zum Erzeugen möglichst großer Zahlen an.
Einige Bibliotheken sind array-, andere zeigerbasiert. Der unbekümmert-beherzte Umgang mit letzteren erzeugt teilweise sogar massive Speicherlecks. Diese zu bekämpfen, war ich mal mehr, mal weniger, jedoch nicht vollständig erfolgreich. Bei einigen Berechnungen steigt deshalb der Speicherbedarf des Programmes (im Vergleich zu früher nur noch leicht) an.
In der jetzigen Einstellung rechnet das Programm am schnellsten - liegt an der voreingestellten Langzahlenbibliothek. Aber es gibt wahrlich respektable Konkurrenten dazu.
Die Quelltexte liegen bis auf das DECMath bei. Das vorliegende Projekt ist nur mit Delphi 4 compilierbar. Soll es mit Delphi 5, 6 oder 7 compiliert werden, so sind die jeweils compilierten Units vonnöten (bei Luckie bzw. Michael Puff erhältlich).
Wer von (fast) beliebig großen (Integer-)Zahlen und mehr oder weniger schneller Arithmetik (wie meine Wenigkeit) fasziniert ist, dem möge mein Programm zusagen.
Fehlermitteilungen sind gern willkommen - danke dafür im voraus!
Noch habe ich einige Langzahlenbibliotheken in petto - vorrangig in diesem Forum gefunden - die ich nach und nach noch zu integrieren beabsichtige.
Viel Spaß und viele Grüße
Delphi-Laie
Das Projekt kann wegen der mit Delphi 4 compilierten Units des DECs nur mit Delphi 4 compiliert werden, bei einem anderen Delphi (5-7) bitte die veröffentlichten DCUs für das jeweiligen Delphi verwenden oder sich vertrauensvoll an mich wenden, vielleicht kann ich weiterhelfen.