![]() |
ENGLISH VERSION |
|
![]() |
Links | | | Forum | | | Kommentare | | | News melden |
![]() |
Chat | | | Umfragen | | | Newsticker | | | Archiv |
![]() |
amiga-news.de Forum > Programmierung > double prüfen auf NaN | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
-1- | [ - Beitrag schreiben - ] |
26.02.2004, 20:37 Uhr Inferno Posts: 157 Nutzer |
Hallo, Es handelt sich hier um ein Projekt in Storm C 4 für Amiga bzw. gcc für Mac. Ich möchte gerne eine double-Zahl auf NaN prüfen. Wenn ich dazu isnan(value) benutze, muß ich aber die gcclibnix mit einbinden, was ich eigentlich nicht möchte. Gibt es noch 'ne andere, Amiga-spezifisch Funktion, die das gleiche macht, oder muß ich die Bitkombinationen "manuell" überprüfen? Gruß, Inf [ - Antworten - Zitieren - Direktlink - ] |
27.02.2004, 02:55 Uhr AchimStegemann Posts: 112 Nutzer |
ich könnte mich jetzt auch irren.. imho ist der Hex-Wert für NAN 0x7fffffff 0xffffffff (zwei longs). dementsprechend sieht eine isnan-Fkt so aus. BOOL isnan(double value) { BOOL ret=0; long *p=(long *)&value; // zwingt value auf den stack if(p[0]==0x7fffffff && p[1]==0xffffffff) ret=1; return ret; } Gruß Achim [ - Antworten - Zitieren - Direktlink - ] |
27.02.2004, 09:35 Uhr Inferno Posts: 157 Nutzer |
Vielen Dank, habe noch mal recherchiert. NaN sind alle Zahlen, für die gilt (high & 0x7FF00000) == 0x7FF00000 (sprich exponent = 2047) und mantisse <> 0, also high & 0x000FFFFF != 0 oder lo != 0 Gruß, Inf. [ - Antworten - Zitieren - Direktlink - ] |
27.02.2004, 09:49 Uhr gni Posts: 1106 Nutzer |
Zitat:Ich kann nicht sagen ob richtig ist (die Implmentationen, die ich kenne sehen anders aus), aber der Returnwert ist "int". Zudem muß man (und sollte man) diese Funktion nicht selber schreiben, das sie üblicherweise bereits in den Compilerbibliotheken steckt und in <math.h> deklariert wird (zusammen mit isinf) [ - Antworten - Zitieren - Direktlink - ] |
27.02.2004, 09:52 Uhr gni Posts: 1106 Nutzer |
Zitat:Für IEEE stimmt das. Ansonsten nimm <math.h> und isnan(). Fertig. [ - Antworten - Zitieren - Direktlink - ] |
27.02.2004, 13:47 Uhr Inferno Posts: 157 Nutzer |
Hallo gni, wie gesagt, um isnan zu verwenden, muß ich die gcclibnix mit einbinden. Das wollte ich vermeiden. Gruß, Inf [ - Antworten - Zitieren - Direktlink - ] |
27.02.2004, 14:17 Uhr gni Posts: 1106 Nutzer |
Zitat:Ich kann Dein Problem nicht nachvollziehen. Die Benutzung von isnan() als Teil von der Standardbibliotheken sollte keine Schwierigkeiten breiten. Das hat doch mit libnix nichts zu tun. [ - Antworten - Zitieren - Direktlink - ] |
27.02.2004, 21:20 Uhr Inferno Posts: 157 Nutzer |
Hi gni, wenn ich die isnan - Funktion benutze, ohne diese Library mit einzubinden, erhalte ich eine Linker-Fehlermeldung, daß er das Symbol _isnan nicht findet. Die Funktion ist anscheinend nicht in einer der drei Libs (storm.lib, amiga.lib, debug.lib) enthalten. Gruß, Inf. [ - Antworten - Zitieren - Direktlink - ] |
28.02.2004, 08:43 Uhr Solar Posts: 3680 Nutzer |
Kann ich mir eigentlich nicht vorstellen - math.h ist nun einmal Standard. Schau' mal in die StormC-Anleitung, evtl. mußt Du einen speziellen Linker-Befehl zum Einbinden der Mathe-Bibliotheken angeben (-lm o.ä.). [ - Antworten - Zitieren - Direktlink - ] |
28.02.2004, 10:56 Uhr Goos Posts: 69 Nutzer |
Zitat: komisch bei mir funtzt es habe nur storm.lib und amiga.lib dazugelinkt. Sicher das Du das letzte Update von StormC4 drauf hast? Ich kann mich erinnern, dass ich auchmal so ein Problem mit einem anderen Symbol hatte, was er nach dem Update aufeinmal fand. gruss Goos ![]() [ - Antworten - Zitieren - Direktlink - ] |
-1- | [ - Beitrag schreiben - ] |
amiga-news.de Forum > Programmierung > double prüfen auf NaN | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
![]() |
Impressum |
Datenschutzerklärung |
Netiquette |
Werbung |
Kontakt
Copyright © 1998-2025 by amiga-news.de - alle Rechte vorbehalten. |
![]() |