AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi High-Precision Floating-Point Types for Delphi - Hilfe beim Linken von C object files
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von Andreas13 · begonnen am 9. Mai 2021 · letzter Beitrag vom 14. Mai 2021
Antwort Antwort
Seite 1 von 2  1 2      
Andreas13

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

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

  Alt 9. Mai 2021, 21: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 18:58 Uhr)
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: High-Precision Floating-Point Types for Delphi - Hilfe beim Linken von C object f

  Alt 10. Mai 2021, 14:47
1. Bitte Cross-Post in die EE und andersrum verlinken!
2. Bevor TurboMagic wieder fragt: Hast du keine Möglichkeit zum Update?
3. Was ist mit Eriks letztem Vorschlag?
Zitat:
But if you cannot do that, then you will have to experiment with debugging this yourself.
Instructions on how to build the object files can be found in the readme.txt file in the C subdirectory.
Hast du dich damit schon auseinandergesetzt?

Geändert von TiGü (10. Mai 2021 um 15:01 Uhr)
  Mit Zitat antworten Zitat
Andreas13

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

AW: High-Precision Floating-Point Types for Delphi - Hilfe beim Linken von C object f

  Alt 10. Mai 2021, 19:03
@TiGü
Danke für Deine Tipps und Fragen!
Zitat:
1. Bitte Cross-Post in die EE und andersrum verlinken!
Habe soeben erledigt.
Zitat:
3. Was ist mit Eriks letztem Vorschlag?
Zitat:
But if you cannot do that, then you will have to experiment with debugging this yourself. Instructions on how to build the object files can be found in the readme.txt file in the C subdirectory.
Im Gegensatz zu den meisten von Euch bin ich kein Informatiker, sondern Ingenieur im Ruhestand – und ich kann kein C.
Das ist der Grund für meine zahlreichen für Informatiker-Ohren recht "dummen" Fragen hier in unserem Forum. Deswegen habe ich ja Euch um Hilfe gebeten…

Zitat:
2. Bevor TurboMagic wieder fragt: Hast du keine Möglichkeit zum Update?
Ich muß mein "Zeugnis" kurz erklären. Als Rentner und pensionierter Hobby-Programmierer entwickle ich ausschließlich Windows 32-Bit-Programme für meine Buchprojekte. Hierbei handelt es sich um technisch-wissenschaftliche Berechnungen, bei denen es in erster Linie um exakte Rechenergebnisse geht und nicht um die Optik der Programmoberfläche. Visuelle Elemente verwende ich kaum, zumal meine Berechnungsroutinen über DLL’s als AddIns in Excel eingebunden werden und somit Excel die Benutzeroberfläche bildet.

Mit meinen Programmen verdiene auch ich kein Geld, und ich brauche auch keine neuen Features für MacOS, iOS, Android etc. Auch keine Netzwerke. Und als Datenbank genügt für meine Zwecke die Einzelplatzversion von Absolute Database vollkommen. Und für all dies reicht das "alte" Delphi XE5 mehr als aus. Das ist der Grund, warum ich mir kein Delphi-Update zulege.

Warum habe ich überhaupt diese Anfrage gemacht?
Ich dachte mir und habe sehr gehofft, daß hier außer mir auch noch zahlreiche "Fließkomma-Programmierer" mit älteren Delphi-Versionen zu Werke gehen und von einer solchen Bibliothek wie Neslib.MultiPrecision profitieren würden. Ich brauche es nicht unbedingt, da ich seit rund 5 Jahren die MPA-Bibliotheken von Wolfgang Ehrhardt erfolgreich verwende – auch wenn ihre Benutzung etwas umständlich ist – bin ich mit diesen recht zufrieden, da sie sehr zuverlässig sind.

Gruß, Andreas
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 19:06 Uhr)
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.736 Beiträge
 
Delphi 6 Enterprise
 
#4

AW: High-Precision Floating-Point Types for Delphi - Hilfe beim Linken von C object f

  Alt 11. Mai 2021, 09:32
Mit meinen Programmen verdiene auch ich kein Geld, und ich brauche auch keine neuen Features für MacOS, iOS, Android etc. Auch keine Netzwerke. Und als Datenbank genügt für meine Zwecke die Einzelplatzversion von Absolute Database vollkommen. Und für all dies reicht das "alte" Delphi XE5 mehr als aus. Das ist der Grund, warum ich mir kein Delphi-Update zulege.
Damit klingst du aber schon wie ein Kandidat für die kostenlose Community Edition, die ist meine ich Stand 10.3?
Ralph
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: High-Precision Floating-Point Types for Delphi - Hilfe beim Linken von C object f

  Alt 11. Mai 2021, 09:48
Halo,
ich kenne die Bibliothek nicht,
werfe mal die Record-Alignments ins Boot.
Der Default-Werte wurde doch irgendwann mal geändert, war das vielleicht in XE4-6?
Heiko
  Mit Zitat antworten Zitat
Andreas13

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

AW: High-Precision Floating-Point Types for Delphi - Hilfe beim Linken von C object f

  Alt 11. Mai 2021, 09:50
Hi Ralph,
meine Befürchtung ist nur, daß meine in den letzten 3 Jahrzehnten mühselig erstellten und vor allem vielfach und sorgfältig getesteten Berechnungsroutinen mit einer neueren Delphi-Version nicht mehr korrekt funktionieren würden. Der letzte Umstieg von Delphi 5 Pro auf XE5 Pro im Jahre 2013 hat mich extrem viel Zeit gekostet: manche alten Programme funktionieren trotz Anpassungen bis heute nicht korrekt…
Vom Moderator Th69 der Entwickler-Ecke kam soeben eine interessante Vermutung:
https://entwickler-ecke.de/topic_Hil...E5_118708.html
Zitat:
Kann es sein, daß diese schon von den neueren AVX-512 Befehlen Gebrauch machen?
Vielleicht ist das eine heiße Spur?
Gruß, Andreas
Grüße, Andreas
Wenn man seinem Nächsten einen steilen Berg hinaufhilft, kommt man selbst dem Gipfel näher. (John C. Cornelius)
  Mit Zitat antworten Zitat
Andreas13

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

AW: High-Precision Floating-Point Types for Delphi - Hilfe beim Linken von C object f

  Alt 11. Mai 2021, 10:10
... werfe mal die Record-Alignments ins Boot. Der Default-Werte wurde doch irgendwann mal geändert, war das vielleicht in XE4-6?
Danke Hoika,
leider sind die Rechenergebnisse auch ohne Record-Alignment immer noch falsch.
Gruß, Andreas
Grüße, Andreas
Wenn man seinem Nächsten einen steilen Berg hinaufhilft, kommt man selbst dem Gipfel näher. (John C. Cornelius)
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: High-Precision Floating-Point Types for Delphi - Hilfe beim Linken von C object f

  Alt 11. Mai 2021, 12:57
Probiere bitte einfach die Community-Edition.
Spart allen Zeit und Nerven.
Der Sprung von XE5 nach 10.3 ist nicht so groß, wie damals von Delphi 5 nach XE5 (Unicode!).
Zumindest nutze es doch einfach nur für dieses eine Projekt zum Testen.
  Mit Zitat antworten Zitat
Andreas13

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

AW: High-Precision Floating-Point Types for Delphi - Hilfe beim Linken von C object f

  Alt 12. Mai 2021, 19:31
Probiere bitte einfach die Community-Edition...
Ich möchte meine derzeitige Delphi-Installation & Lizenz nicht gefährden oder gar zerstören. Wie könnte ich die neueste Community-Edition parallel zum vorhandenen Delphi XE5 installieren und benutzen?
Danke & Gruß, Andreas
Grüße, Andreas
Wenn man seinem Nächsten einen steilen Berg hinaufhilft, kommt man selbst dem Gipfel näher. (John C. Cornelius)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.035 Beiträge
 
Delphi 12 Athens
 
#10

AW: High-Precision Floating-Point Types for Delphi - Hilfe beim Linken von C object f

  Alt 12. Mai 2021, 19:50
"Editionen" der gleichen Version können nicht gleichzeitig, (Community/Pro/Ent/...)

aber verschiedene Versionen sind quasi jeweils eigenständige Programme und die können zusammen.



Zitat:
nicht gefährden oder gar zerstören
Natürlich hast du ein aktuelles Backup rumliegen ... dann ist das doch egal.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz