AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Gleitkommaüberlauf

Ein Thema von EWeiss · begonnen am 17. Mär 2019 · letzter Beitrag vom 17. Mär 2019
Antwort Antwort
EWeiss
(Gast)

n/a Beiträge
 
#1

Gleitkommaüberlauf

  Alt 17. Mär 2019, 13:48
Beispiel:
Soll mit folgenden Step (2048, 1024, 512, 256, 128, 64, 32, 16, 8, 4) durchlaufen werden..


Delphi-Quellcode:
  ie := FFFTSize;
  for n := 1 to FFTLog do
  begin
    w := Coef[FFTLog - n];
    in_ := ie div 2;
    u.r := 1;
    u.i := 0;

    for j := 0 to (in_ - 1) do
    begin
      for i := j to (FFFTSize - 1) do
      begin
        if (i mod ie) <> 0 then
          continue;

        io := i + in_;

        tp.r := Dat[i].r + Dat[io].r;
        tp.i := Dat[i].i + Dat[io].i;

        tq.r := Dat[i].r - Dat[io].r;
        tq.i := Dat[i].i - Dat[io].i;

        Dat[io].r := tq.r * u.r - tq.i * u.i;
        Dat[io].i := tq.i * u.r + tq.r * u.i;
        Dat[i] := tp;
      end;

      sr := u.r;
      u.r := u.r * w.r - u.i * w.i;
      u.i := u.i * w.r + sr * w.i;
    end;
    ie := ie div 2;
  end;
bekomme aber immer einen Gleitkommaüberlauf woran könnte es liegen?
Ich gehe eigentlich davon aus das diese Abfrage genau das tut was ich oben als Beispiel angegeben habe.
Delphi-Quellcode:
if (i mod ie) <> 0 then
  continue;
gruss
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.825 Beiträge
 
Delphi 12 Athens
 
#2

AW: Gleitkommaüberlauf

  Alt 17. Mär 2019, 14:47
Schon mal die Zwischenwerte irgendwie mit geloggt? (z.B. mit CodeSite)
Dadurch käme man evtl. dahinter welcher der Werte überläuft. Dessen Berechnung könnte man
sich dann mal näher anschauen.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: Gleitkommaüberlauf

  Alt 17. Mär 2019, 14:51
Schon mal die Zwischenwerte irgendwie mit geloggt? (z.B. mit CodeSite)
Dadurch käme man evtl. dahinter welcher der Werte überläuft. Dessen Berechnung könnte man
sich dann mal näher anschauen.
Den Punkt kenne ich kann nur nicht ermitteln welcher Fehler hier auftritt.
Weil das Programm zu dem Zeitpunkt dann nicht mehr aktiv ist.

tp.r := Dat[i].r + Dat[io].r;

PS:
Kann weder zu diesen Zeitpunkt etwas loggen noch nutzt es etwas wenn ich mit der Maus irgendwo drüberfahre.
Es werden keinerlei werte mehr angezeigt.

gruss

Geändert von EWeiss (17. Mär 2019 um 14:54 Uhr)
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.919 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Gleitkommaüberlauf

  Alt 17. Mär 2019, 15:41
Warum lässt sich das nicht loggen?
Etwas ganz Brachiales wie das Wegschreiben in eine Datei wird doch immer gehen? Elegant geht gewiss anders, aber damit hättest Du vermutlich schnell einen Überblick über die Werte zu den jeweiligen Schleifendurchläufen.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: Gleitkommaüberlauf

  Alt 17. Mär 2019, 15:47
Warum lässt sich das nicht loggen?
Etwas ganz Brachiales wie das Wegschreiben in eine Datei wird doch immer gehen? Elegant geht gewiss anders, aber damit hättest Du vermutlich schnell einen Überblick über die Werte zu den jeweiligen Schleifendurchläufen.
Ich kann es versuchen aber wie ich schon sagte wenn das Problem auftritt gibt es keine verwertbaren Daten mehr.
Der FFT läuft in einer Subclass also in MS Bereich.

gruss
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#6

AW: Gleitkommaüberlauf

  Alt 17. Mär 2019, 16:19
Habe mal einen einfachen outputdebugstring genommen.

Delphi-Quellcode:
for i := j to (FFFTSize - 1) do
begin
  if (i mod ie) <> 0 then
    continue;

  outputdebugstring(PWideChar(IntToStr(i mod ie)));
eigentlich sollte man davon ausgehen das wenn die abfrage nach "i mod ie" erfolgt outputdebugstring > 0 ausgeben sollte.
Seltsamer weise ist es aber immer 0.
Oder verdrehe ich da was.

Hmmm…
OK habe es verdreht 0 ist richtig. Muss mich da selber durchbeißen.. Danke.

gruss

Geändert von EWeiss (17. Mär 2019 um 16:57 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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 21:14 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