Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Noch'n Bug in Tokyo Community Edition? Betrifft denormale Fließkommazahlen und ldexp. (https://www.delphipraxis.net/197186-nochn-bug-tokyo-community-edition-betrifft-denormale-fliesskommazahlen-und-ldexp.html)

gammatester 20. Jul 2018 16:29

Delphi-Version: 10.2 Tokyo

Noch'n Bug in Tokyo Community Edition? Betrifft denormale Fließkommazahlen und ldexp.
 
Ich habe noch ein wenig mehr in system.math gestöbert und dabei folgendes entdeckt (ich habe schon eine Frage auf https://stackoverflow.com/questions/...umbers-to-zero gestellt, weil es wieder etwas esoterisch ist).

Wenn jemand hier das bestätigen kann, und es nicht as-specified ist, würde ich noch einen QC-Issuereport schreiben.

Diese Beobachtung hätte mehr Auswirkungen als der AES-NI-Bug, da die gesamte Arithmetik betroffen wäre, denn denormale Fließkommazahlen sind ein wichtiger kleiner Baustein für genaue Arithmetik.

Uwe Raabe 20. Jul 2018 16:43

AW: Noch'n Bug in Tokyo Community Edition?
 
Das kann gar nicht as designed sein, da das Verhalten bei 32 und 64 Bit unterschiedlich ist.

gammatester 20. Jul 2018 16:55

AW: Noch'n Bug in Tokyo Community Edition?
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1408123)
Das kann gar nicht as designed sein, da das Verhalten bei 32 und 64 Bit unterschiedlich ist.

Na ja, es gibt ja wesentliche Unterschiede bei der Fließkommaarithmetik von 32- und 64-Bit: 64-Bit arbeitet mit SSE und hat keine native 10-Byte-Extended.

Außerdem scheint bei CPUARM irgendeine Besonderheit vorzuliegen und man wollte es einheitlich machen. Das glaube ich zwar nicht, habe aber keine Stelle im Sourcecode gefunden, wo explizit ein Flush-to-Zero eingebaut ist.

Uwe Raabe 20. Jul 2018 17:00

AW: Noch'n Bug in Tokyo Community Edition?
 
Zitat:

Zitat von gammatester (Beitrag 1408124)
Das glaube ich zwar nicht, habe aber keine Stelle im Sourcecode gefunden, wo explizit ein Flush-to-Zero eingebaut ist.

Das wird auch nicht explizit gemacht, sondern entsteht durch die Multiplikation zweier sehr kleiner Zahlen. Man kann das im Debugger nachvollziehen.

gammatester 20. Jul 2018 17:09

AW: Noch'n Bug in Tokyo Community Edition?
 
[QUOTE=Uwe Raabe;1408125]
Zitat:

Zitat von gammatester (Beitrag 1408124)
Das wird auch nicht explizit gemacht, sondern entsteht durch die Multiplikation zweier sehr kleiner Zahlen. Man kann das im Debugger nachvollziehen.

Ich würde hier dem Debugger nicht unbedingt trauen, was wird denn für x nach x := PDouble(@twopm1030)^ angezeigt?

Interessanterweise gibt es bei FPC-64 noch eine zusätzliche Variante: x*x wird richtig berechnet, aber x := ldexp(1,-1030) crasht mit EOverflow: Floating point overflow :evil:

Edit:
Da scheint noch mehr faul zu sein. Und vermutlich liegt das Problem in ldexp. Ich habe jetzt den Debugger angeworfen und x ist korrekt angezeigt nach der Konstantenzuweisung. Allerdings hat er mit auch x:=ldexp(1,-510) als 0 angezeigt und das wird durch writeln bestätigt.

Die 32-Bit-Version zeigt richtig an 9.32292591400026E-0156.

gammatester 20. Jul 2018 19:02

AW: Noch'n Bug in Tokyo Community Edition?
 
Wie scho im letzten Beitrag gesagt, ist ldexp das Problem: Es wird die Overload-Version für Single aufgerufen. Das wirkt sich nur für 64-Bit aus, weil die 32-Bit-Overloads praktisch identisch sind.

Wie kann man eigenlich in die Debg-DCUs rein-steppen?
Ich habe Linking with Debug und Debug-Configuration eingestellt, aber der Debugger verweigert die Sourcecode-Anzeige. Ich bin mir aber sicher, daß die Singleversion genommen wird, weil ich im CPU-Fenster sehe
Delphi-Quellcode:
call TSingleHelper.SpecialType
...
call TSingleHelper.BuildUp
Werde dann mal einen weiteren Issue-Report schreiben, letztlich geht es also 'nur' um eine Inkonstistenz zwischen 32- und 64-Bit.

Uwe Raabe 20. Jul 2018 19:13

AW: Noch'n Bug in Tokyo Community Edition?
 
Zitat:

Zitat von gammatester (Beitrag 1408142)
Wie kann man eigenlich in die Debg-DCUs rein-steppen?

Projektoptionen -> Delphi-Compiler -> Compilieren -> Mit Debug-DCUs

gammatester 20. Jul 2018 19:22

AW: Noch'n Bug in Tokyo Community Edition?
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1408146)
Zitat:

Zitat von gammatester (Beitrag 1408142)
Wie kann man eigenlich in die Debg-DCUs rein-steppen?

Projektoptionen -> Delphi-Compiler -> Compilieren -> Mit Debug-DCUs

Danke, hat auf Anhieb funktioniert! :thumb:

Daniel 20. Jul 2018 19:42

AW: Noch'n Bug in Tokyo Community Edition?
 
Auch bei Fehlermeldungen bitte ich den Themen-Titel präziser zu wählen. Danke. ;-)

gammatester 20. Jul 2018 19:56

AW: Noch'n Bug in Tokyo Community Edition? Betrifft denormale Fließkommazahlen und ld
 
Zitat:

Zitat von Daniel (Beitrag 1408151)
Auch bei Fehlermeldungen bitte ich den Themen-Titel präziser zu wählen. Danke. ;-)

Zu Befehl, passt es so?

Edit: Der QC-Eintrag ist https://quality.embarcadero.com/browse/RSP-20925


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:30 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