Hallo Delphi-Community,
am 5. Mai 2021 wurde ein interessantes Thema in
DP News-Robot vorgestellt:
High-Precision Floating-Point Types for Delphi https://www.delphipraxis.net/207809-...es-delphi.html . Der dort genannte Link lautet korrekt:
https://blog.grijjy.com/2021/05/05/h...#comment-29726
Hier wird eine von Erik van Bilsen entwickelte Delphi-Schnittstelle repräsentiert
https://github.com/neslib/Neslib.MultiPrecision , die zwei neue Floating point-Typen zur Verfügung stellt:
- DoubleDouble (128-Bit: Doppelte Genauigkeit von Double)
- QuadDouble (256-Bit: Vierfache Genauigkeit von Double)
Erik’s Bibliothek basiert auf der C/C++ - Bibliothek von David H. Bailey
https://www.davidhbailey.com/dhbsoftware/
Leider macht Erik's Bibliothek auch von den neuesten Delphi-Features (Delphi 10.4.2.) Gebrauch. Wenn man die Inline-Deklarationen in den Routinen
function MultiPrecisionInit: UInt32;
und
procedure MultiPrecisionReset(const AState: UInt32);
in der
Unit Neslib.MultiPrecision.pas
umschreibt, läßt sich das Projekt auch mit XE5 kompilieren. Allerdings sind die Ergebnisse mit XE5 bedauerlicherweise nicht zu gebrauchen, weil sie falsch sind. Meine Kommentare und Korrespondenz mit Erik sind unter oberem Link
https://blog.grijjy.com/2021/05/05/h...#comment-29726 am Ende seines Beitrags zu finden.
Summa summarum schreibt mir Erik zum Schluß:
Zitat:
I can reproduce the issues with XE5, but it seems to have to do with the way Delphi XE5 links C object files. Tried creating those object files in different ways, with different calling conventions but couldn’t get it to work. On
Win32, it would generate invalid results, and on Win64 it would result in
Access Violations. I don’t know in which Delphi version this was changed to the current (working) behavior. But I can’t spend too much time on trying to support an 8 year old Delphi version.
Kennt sich jemand von Euch mit der von Erik vermuteten Problematik des seit XE5-Zeiten veränderten Verhaltens neuerer Delphi-Versionen bezüglich des Linkens von "C object files"?
Und vor allem könnte jemand dabei helfen, diesen
wertvollen Schatz zu bergen und ihn auch
für ältere Delphi-Versionen zur Verfügung zu stellen. Die Benutzung von
Neslib.MultiPrecision.pas
scheint wesentlich einfacher zu sein, als die der deutlich komplexer zu handhabenden MPA-Bibliotheken vom verstorbenen
Wolfgang Ehrhardt, zumal man hier lediglich den Dateitypen ändern müßte, um auf einen Schlag 128 oder 256-Bit Fließkomma-Genauigkeit
mit Prozessor-Geschwindigkeit zu erhalten.
Danke im Voraus für jedwede Hilfe!
Gruß, Andreas
PS:
Ich werde Erik van Bilsen den Link zu diesem Topic mitteilen, damit er eventuelle Verbesserungsvorschläge direkt verfolgen kann.
[edit]
Eine analoge Anfrage habe ich auch unter
https://entwickler-ecke.de/topic_Hil...E5_118708.html gestellt, in der Hoffnung auf eine breitere Resonanz.