Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Logarithmus Log zu Delphi (https://www.delphipraxis.net/200099-logarithmus-log-zu-delphi.html)

EWeiss 20. Mär 2019 06:00

Logarithmus Log zu Delphi
 
Habe leider immer wieder Geleitkommaüberläufe.

Der Ausgang..

Code:
b ist Long..
b = (Log(Sqr(Spectrum(i1).r * Spectrum(i1).r + Spectrum(i1).i * Spectrum(i1).i) + 0.0001) + 9.21034037197618) * q1
das ganze nach Delphi
Delphi-Quellcode:
b: Single;
b := (LN(Sqr(Spectrum[i1].r * Spectrum[i1].r + Spectrum[i1].i * Spectrum[i1].i) + 0.0001) + 9.21034037197618) * q1;
bin mir aber nicht sicher ob LN der richtige Datentyp ist.

Alternativen Wenn nicht?
Keine Ahnung wie ich die Ergebnisse wenn -NAN, +NAN abfangen soll.
Ungültige Gleitkomma Operationen. grrr...

Muss dabei sagen das ich kein Mathe experte bin..

gruss

Jasocul 20. Mär 2019 06:28

AW: Logarithmus Log zu Delphi
 
Ich habe Delphi noch nicht gestartet, aber ist das Ergebnis nicht vom Typ Extended?

hoika 20. Mär 2019 06:36

AW: Logarithmus Log zu Delphi
 
Hallo,
Zitat:

Keine Ahnung wie ich die Ergebnisse wenn -NAN, +NAN abfangen soll.
Da kann man doch so ein 8087-Flag (https://www.oreilly.com/library/view...595/re288.html) setzen oder try except ;)

EWeiss 20. Mär 2019 06:45

AW: Logarithmus Log zu Delphi
 
Zitat:

Zitat von hoika (Beitrag 1428121)
Hallo,
Zitat:

Keine Ahnung wie ich die Ergebnisse wenn -NAN, +NAN abfangen soll.
Da kann man doch so ein 8087-Flag (https://www.oreilly.com/library/view...595/re288.html) setzen oder try except ;)

Delphi-Quellcode:
constructor TSpectrum.Create;
begin
//  Saved8087CW := Default8087CW;
//  Set8087CW($133f);

  FFFTSize := 2048;
  FFTLog := 11;
end;
es nutzt nur nichts deshalb wieder aus kommentiert.
try except auch nicht!

sobald ich hier abfrage

Delphi-Quellcode:
b := (LN(Sqr(Spectrum[i1].r * Spectrum[i1].r + Spectrum[i1].i * Spectrum[i1].i) + 0.0001) + 9.21034037197618) * q1;


und die Rückgabe +NAN oder -NAN ist dann kracht es.

gruss

Klaus01 20. Mär 2019 07:04

AW: Logarithmus Log zu Delphi
 
sqr in Visual basic -> Square root , also Quadrat Wurzel

sqr in Delphi -> Square -> Quadratzahl

sqrt in Delphi -> Square root

Quelle: http://www.vbforums.com/showthread.p...9-Sqr-And-Sqrt

Grüße
Klaus

EWeiss 20. Mär 2019 07:29

AW: Logarithmus Log zu Delphi
 
Zitat:

Zitat von Klaus01 (Beitrag 1428123)
sqr in Visual basic -> Square root , also Quadrat Wurzel

sqr in Delphi -> Square -> Quadratzahl

sqrt in Delphi -> Square root

Quelle: http://www.vbforums.com/showthread.p...9-Sqr-And-Sqrt

Grüße
Klaus

Ahhh dann ist sqr definitiv schon mal falsch.
Was ist mit LN?

Danke!

gruss

Sherlock 20. Mär 2019 07:36

AW: Logarithmus Log zu Delphi
 
Welcher Logarithmus ist hier erwünscht? Das Log im VB-Beispiel ist gemäß Doku der natürliche (also Basis e). Der Delphi Log ist der dekadische (Basis 10). Korrekt wäre System.Ln.

Sherlock

Klaus01 20. Mär 2019 07:36

AW: Logarithmus Log zu Delphi
 
Zitat:

Zitat von EWeiss (Beitrag 1428124)
Was ist mit LN?

Danke!

gruss

..sollte passen.

https://docs.microsoft.com/en-us/dot...ystem.math.log

In Delphi code, Ln returns the natural logarithm (Ln(e) = 1) of the real-type expression X.



Grüße
Klaus

EWeiss 20. Mär 2019 07:40

AW: Logarithmus Log zu Delphi
 
Zitat:

Zitat von Sherlock (Beitrag 1428125)
Welcher Logarithmus ist hier erwünscht? Das Log im VB-Beispiel ist gemäß Doku der natürliche (also Basis e). Der Delphi Log ist der dekadische (Basis 10). Korrekt wäre System.Ln.

Sherlock

Jo und den verwende ich System.LN. Danke.
Leider habe ich trotzdem das Problem mit -NAN obwohl ich schon den Überlauf prüfe.

Delphi-Quellcode:
 function LimitedSingleValue(doubleVal: double): single;
 begin
   if doubleVal > MaxSingle then
     result := MaxSingle
   else if doubleVal < MinSingle then
     result := MinSingle
   else
     result := doubleVal;
 end;
Schlage mich damit jetzt schon ein paar Tage mit rum. ;)
Also wenn an doubleVal der wert -NAN ankommt dann kracht es trotzdem.

Zitat:

..sollte passen.
Danke Klaus.

gruss

Klaus01 20. Mär 2019 07:54

AW: Logarithmus Log zu Delphi
 
.. du könntest zusätzlich auf isNAN testen.

Grüße
Klaus


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:45 Uhr.
Seite 1 von 3  1 23      

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