C++ tanh function liefert andere Ergebnisse als FPC tanh function [gelöst]

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1496
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: C++ tanh function liefert andere Ergebnisse als FPC tanh function

Beitrag von corpsman »

@winni. @Niesl

Jetzt bin ich schon ein wenig verwirrt.
1. bin ich ein derartiges anfahren aus diesem Forum nicht gewöhnt (oder auf meine alten Tage zu empfindlich)
2. bin ich mir keiner Schuld bewusst.
Ich hab hier ein Projekt an dem ich arbeite und eine Esoterische Frage gehabt entsprechend auch esoterische antworten erwartet und bekommen, danke.

Der eigentliche Bug war dass ich ein Array aufsteigend anstatt absteigend sortiert hatte, falls ihr das meintet ?
Durch die Abweichungen der Tanh funktion wurde das aber verdeckt bzw. konnte ich es so nicht sehen. Wie ich den Fehler letztendes gefunden habe habe ich in meinem Post beschrieben und auch dass dazu eine Toleranz von 0.0015 notwendig war. Bezogen auf den Thread sehe ich hier keine Frage offen.

Zum Schluß habe ich Werbung für das Stuttgarter Lazarustreffen gemacht, auch hier kann ich kein Vergehen erkennen. Im Gegenteil wer am Treffen leider nicht teilnehmen kann, kann jederzeit die Protokolle von Linkat einsehen (diese postet er in der Regel immer nach dem Treffen) und bei interesse dort dann nach hacken..


Ich hoffe es sind nun keine weiteren Fragen offen, wenn Doch gerne via PN (falls nicht tanh bezogen) auf mich zu kommen.
--
Just try it

PascalDragon
Beiträge: 825
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: C++ tanh function liefert andere Ergebnisse als FPC tanh function

Beitrag von PascalDragon »

Niesi hat geschrieben:
Mi 30. Nov 2022, 11:05
Zweitens ist tanh eine mathematische Funktion, die immer ein eindeutiges Resultat liefert. Die darf auch in Gaensefuesschen nicht abweichen - so etwas schmerzt. Die Ungenauigkeiten sind sicher Rundungsfehler, schon mit einer einfachen tan-Funktion kann es da erhebliche Abweichungen geben.
Jain. Aus mathematischer Sicht hast du zwar recht: tanh liefert für den gleichen Eingabewert immer den gleichen Ausgabewert zurück. Aus Informatikersicht ist das aber nicht unbedingt der Fall: tanh ist in der Math Unit deklariert mit dem Typ Float was (in dieser Unit) dem Fließkommatyp mit der höchsten Genauigkeit entspricht, das heißt Extended auf allen X86 Systemen (i8086, i386, x86_64) mit Ausnahme von Win64 und Double auf allen anderen Plattformen und x86_64-win64. Wenn du nun also auf z.B. i386-win32 und x86_64-win64 den gleichen Wert reingibst, kann es trotzdem sein, dass du leicht unterschiedliche Werte herauskommen, da des Ergebnis unterschiedliche Genauigkeit auf beiden Plattformen hat.

Und zum Beispiel C++ setzt auf Windows standardmäßig Double ein, während FPC eben den Fließkommatyp mit der höchsten Genauigkeit bevorzugt (was je nach Plattform Extended sein kann).
FPC Compiler Entwickler

Benutzeravatar
Niesi
Lazarusforum e. V.
Beiträge: 331
Registriert: So 26. Jun 2016, 19:44
OS, Lazarus, FPC: Linux Mint Cinnamon (Windows wenn notwendig), Lazarus 3.0 FPC 3.3.1

Re: C++ tanh function liefert andere Ergebnisse als FPC tanh function

Beitrag von Niesi »

@PascalDragon
Wenn du nun also auf z.B. i386-win32 und x86_64-win64 den gleichen Wert reingibst, kann es trotzdem sein, dass du leicht unterschiedliche Werte herauskommen, da des Ergebnis unterschiedliche Genauigkeit auf beiden Plattformen hat.
Exakt - genau das meinte ich mit Rundungsfehler. Du hast diese Abweichungen auch mit einer tan-Funktion. Das ist aber wichtiges Grundwissen, sonst kann es passieren, dass lange Fehler gesucht werden, die im eigentlichen Sinne gar keine sind ... :lol:

Aber vielleicht mache ich hier in Baoding im kommenden Jahr mal ein Lazarustreffen, da kann ich das dann genauer zeigen ...
Wissen ist das einzige Gut, das sich vermehrt, wenn es geteilt wird ...

Benutzeravatar
Niesi
Lazarusforum e. V.
Beiträge: 331
Registriert: So 26. Jun 2016, 19:44
OS, Lazarus, FPC: Linux Mint Cinnamon (Windows wenn notwendig), Lazarus 3.0 FPC 3.3.1

Re: C++ tanh function liefert andere Ergebnisse als FPC tanh function

Beitrag von Niesi »

Winni hat geschrieben:
Mi 30. Nov 2022, 18:31
Niesi hat geschrieben:
Mi 30. Nov 2022, 11:05
Warum neuronale Netze die Verwendung der tanh-Funktion bedingen verstehe ich nicht, waere ueber ein Erlaeterung aber froh ...

Beste Gruesse
Harald
Hi!

Kurzer komprimierter Rundschlag:

https://artemoppermann.com/de/aktivierungsfunktionen/


Winni

Danke, das liest sich gut ...
Wissen ist das einzige Gut, das sich vermehrt, wenn es geteilt wird ...

Antworten