Einzelnen Beitrag anzeigen

Andreas13

Registriert seit: 14. Okt 2006
Ort: Nürnberg
711 Beiträge
 
Delphi XE5 Professional
 
#1

High-Precision Floating-Point Types for Delphi - Hilfe beim Linken von C object files

  Alt 9. Mai 2021, 20:34
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.
Grüße, Andreas
Wenn man seinem Nächsten einen steilen Berg hinaufhilft, kommt man selbst dem Gipfel näher. (John C. Cornelius)

Geändert von Andreas13 (10. Mai 2021 um 17:58 Uhr)
  Mit Zitat antworten Zitat