DEUTSCHE VERSION |
|
Links | | | Forums | | | Comments | | | Report news |
Chat | | | Polls | | | Newsticker | | | Archive |
amiga-news.de Forum > Programmierung > double prüfen auf NaN | [ - Search - New posts - Register - Login - ] |
-1- | [ - Post reply - ] |
2004-02-26, 20:37 h Inferno Posts: 157 User |
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 [ - Answer - Quote - Direct link - ] |
2004-02-27, 02:55 h AchimStegemann Posts: 112 User |
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 [ - Answer - Quote - Direct link - ] |
2004-02-27, 09:35 h Inferno Posts: 157 User |
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. [ - Answer - Quote - Direct link - ] |
2004-02-27, 09:49 h gni Posts: 1106 User |
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) [ - Answer - Quote - Direct link - ] |
2004-02-27, 09:52 h gni Posts: 1106 User |
Zitat:Für IEEE stimmt das. Ansonsten nimm <math.h> und isnan(). Fertig. [ - Answer - Quote - Direct link - ] |
2004-02-27, 13:47 h Inferno Posts: 157 User |
Hallo gni, wie gesagt, um isnan zu verwenden, muß ich die gcclibnix mit einbinden. Das wollte ich vermeiden. Gruß, Inf [ - Answer - Quote - Direct link - ] |
2004-02-27, 14:17 h gni Posts: 1106 User |
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. [ - Answer - Quote - Direct link - ] |
2004-02-27, 21:20 h Inferno Posts: 157 User |
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. [ - Answer - Quote - Direct link - ] |
2004-02-28, 08:43 h Solar Posts: 3680 User |
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.ä.). [ - Answer - Quote - Direct link - ] |
2004-02-28, 10:56 h Goos Posts: 69 User |
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 [ - Answer - Quote - Direct link - ] |
-1- | [ - Post reply - ] |
amiga-news.de Forum > Programmierung > double prüfen auf NaN | [ - Search - New posts - Register - Login - ] |
Masthead |
Privacy policy |
Netiquette |
Advertising |
Contact
Copyright © 1998-2024 by amiga-news.de - all rights reserved. |