16-Bit Fließkommazahl?

Alles rund um die Software-Entwicklung: Programme, Skripte, Projekte etc.
Antworten
Benutzeravatar
Epfi
Admiral
Turtleboard Veteran
Turtleboard Veteran
Beiträge: 10520
Registriert: 08.03.2004, 11:02
Wohnort: Haus, das Verrückte macht
Kontaktdaten:

16-Bit Fließkommazahl?

Ungelesener Beitrag von Epfi » 01.10.2009, 16:05

Moin!

Sitze gerade mit Visual C++ Studio Express 2008 (Windows 7, x64) ein bisschen am Programmieren und bräuchte zum Nachvollziehen numerischer Ungenaugikeiten eines Microcontrollers mal eben eine 16-Bit Fließkommazahl. float ist bei mir dummerweise schon 4 Byte groß, double und long double beide 8 byte.

Jeopardy-Style-Frage: Mit diesem Datentyp erzeugt man in C eine 16-Bit Fließkommazahl.

EDIT: Gibt es überhaupt 16-Bit Fließkommazahlen?
Zuletzt geändert von Epfi am 01.10.2009, 16:59, insgesamt 1-mal geändert.
hartware.net - *** ****** ***, ** ************ **** **** *********** ****.

Benutzeravatar
PatkIllA
Admiral
Turtleboard Veteran
Turtleboard Veteran
Beiträge: 14630
Registriert: 08.03.2004, 11:07
Wohnort: Dortmund

Re: 16-Bit Fließkommazahl?

Ungelesener Beitrag von PatkIllA » 01.10.2009, 18:11

Ich kenne das als Partial Precision bei der Shaderprogrammierung. Habe selbst aber auch immer nur float benutzt.

Benutzeravatar
Epfi
Admiral
Turtleboard Veteran
Turtleboard Veteran
Beiträge: 10520
Registriert: 08.03.2004, 11:02
Wohnort: Haus, das Verrückte macht
Kontaktdaten:

Re: 16-Bit Fließkommazahl?

Ungelesener Beitrag von Epfi » 02.10.2009, 09:13

Hmm, das scheint es aber wohl auch nur bei Shadern zu geben...

Andere Frage: Kann C/C++ Festkommazahlen?
hartware.net - *** ****** ***, ** ************ **** **** *********** ****.

Benutzeravatar
Viprex
Vice Admiral
Turtleboard Veteran
Turtleboard Veteran
Beiträge: 4590
Registriert: 08.03.2004, 18:33
Wohnort: Hohenlockstedt
Kontaktdaten:

Re: 16-Bit Fließkommazahl?

Ungelesener Beitrag von Viprex » 02.10.2009, 09:43

Kannst du dir eine Fließkommzahl selber bauen? Ich weiß, dass ist sehr umständlich, da du nicht nur den Zahlencontainer brauchst, sondern auch die Operationen darauf :) Du müsstest händisch alle anderen Zahlen Operationskompatibel zu einem Datentyp gestalten :)
Zuletzt geändert von Viprex am 02.10.2009, 11:14, insgesamt 1-mal geändert.
Nachts essen ist der Hit!
Kommt gleich neben tagsüber essen :)

Benutzeravatar
Epfi
Admiral
Turtleboard Veteran
Turtleboard Veteran
Beiträge: 10520
Registriert: 08.03.2004, 11:02
Wohnort: Haus, das Verrückte macht
Kontaktdaten:

Re: 16-Bit Fließkommazahl?

Ungelesener Beitrag von Epfi » 02.10.2009, 10:06

Ne, danke - ich hab einmal auf nem Microcontroller nen 64-Bit-Zahlentyp (int + float) gebaut, das reicht für mein restliches Leben ;) Da geht es schneller, wenn ich mir nen 16-Bit Controller kaufe und es einfach direkt ausprobiere ;)

Fixpoint in C wäre da schon interessanter...
hartware.net - *** ****** ***, ** ************ **** **** *********** ****.

daPope
Lt. Commander
Turtleboard Veteran
Turtleboard Veteran
Beiträge: 134
Registriert: 11.03.2004, 21:47
Wohnort: Jever
Kontaktdaten:

Re: 16-Bit Fließkommazahl?

Ungelesener Beitrag von daPope » 02.10.2009, 19:26

Bevor du was auf dem Steckbrett zusammensteckst oder den Lötkolben anwirfst: Simulier und ggf. debug das ganze doch einfach.

Benutzeravatar
Lynx
Captain
Beiträge: 699
Registriert: 18.03.2004, 07:48

Re: 16-Bit Fließkommazahl?

Ungelesener Beitrag von Lynx » 02.10.2009, 20:11

Nativ arbeiten meines Wissens keine aktuellen CPUs mit 16bit Fließkommazahlen, nur GPUs.
Es gibt eine IEEE spezifikation für 16bit Fließkommazahlen, allerdings werden die weder in C noch C++ als solche untertützt, da eben wie gesagt keine CPU dieses Format direkt verarbeiten kann.

Allerdings ist es schon möglich einen 16bit Fließkomma Datentyp in C++ zu implementieren, und es gibt sowas auch: OpenEXR benutzt den sog. "Half" Datentyp recht intensiv und hat extra eine Teil-Bibliothek mit der man ihn in C++ fast wie normale floats benutzen kann. Recht feine Sache wenn man Speicherplatz sparen muß, hab ich schon benutzt.

Allerdings fürcht ich wird dir das nicht viel helfen um Ungenauigkeiten von 16bit Hardware zu simulieren, denn für Operationen wird es zwangsläufig in 32bit zurückgewandelt, und wenn du's auf ner x86 CPU dann nicht mit SSE- sondern "normalen" (im 32bit Modus zumindest) x87-Befehlen ausführst wird intern dann sowieso wieder mit 80bit gerechnet, von daher bräuchtest du schon einen speziellen Hardware Emulator...

daPope
Lt. Commander
Turtleboard Veteran
Turtleboard Veteran
Beiträge: 134
Registriert: 11.03.2004, 21:47
Wohnort: Jever
Kontaktdaten:

Re: 16-Bit Fließkommazahl?

Ungelesener Beitrag von daPope » 02.10.2009, 20:57

Um welchen Mikrocontroller geht es denn überhaupt? Auf den zweiten Blick kommt mir ein float mit 16 bit irgendwie seltsam unbekannt vor.

Benutzeravatar
Epfi
Admiral
Turtleboard Veteran
Turtleboard Veteran
Beiträge: 10520
Registriert: 08.03.2004, 11:02
Wohnort: Haus, das Verrückte macht
Kontaktdaten:

Re: 16-Bit Fließkommazahl?

Ungelesener Beitrag von Epfi » 05.10.2009, 10:08

@pope: genau das ist doch der Zweck der Übung ;) Ich habe eine fertig Hardwareplattform hier rumstehen - um die zu testen muss ich aber ans Drehstromnetz und auf der anderen Seite an +/-350V Gleichspannung. Um mir das zu ersparen tippe ich das alles nochmal in C zusammen.
Die Hardware-Version läuft aktuell auf nem 32-Bit Infineon-Controller. Die 16-Bit-Geschichte wäre nur für einen hypothetischen Soft Core auf einem FPGA gewesen - mittlerweile hat sich aber herausgestellt, dass das auf jeden Fall nicht stattfinden kann - ist viel zu ungenau.
hartware.net - *** ****** ***, ** ************ **** **** *********** ****.

daPope
Lt. Commander
Turtleboard Veteran
Turtleboard Veteran
Beiträge: 134
Registriert: 11.03.2004, 21:47
Wohnort: Jever
Kontaktdaten:

Re: 16-Bit Fließkommazahl?

Ungelesener Beitrag von daPope » 05.10.2009, 19:18

Na wenn's eh "nur" ein Softcore in VHDL gewesen wäre, wieso war dann eine Testbench keine Option? Habe selbst zwar noch nie einen Softcore in einem FPGA verwendet, aber irgendwie kann man im Simulator doch sicher die Ausgangpins des µC als Signale abgreifen (wie bei jedem anderen IPCore) und im Scope verfolgen was passiert. Vorausgesetzt man bekommt das Rechenergebnis auf die I/Os des µC, aber das sollte über eine Union in C kein Ding sein.

Benutzeravatar
Epfi
Admiral
Turtleboard Veteran
Turtleboard Veteran
Beiträge: 10520
Registriert: 08.03.2004, 11:02
Wohnort: Haus, das Verrückte macht
Kontaktdaten:

Re: 16-Bit Fließkommazahl?

Ungelesener Beitrag von Epfi » 06.10.2009, 09:17

Der FPGA ist Zukunftsmusik - das Ding existiert noch nicht. Es ging mir darum, Ungenauigkeitsprobleme beim Lösen eines DGL-Systems zu untersuchen - eigentlich erstmal nur 64-Bit vs. 32-Bit und weil ich schon dabei war wollte ich die möglicherweise irgendwann mal eintretenden 16-Bit auch gleich erschlagen...
hartware.net - *** ****** ***, ** ************ **** **** *********** ****.

Benutzeravatar
quadpumped
Vice Admiral
Beiträge: 4737
Registriert: 16.03.2004, 15:15
Wohnort: 53773 Hennef

Re: 16-Bit Fließkommazahl?

Ungelesener Beitrag von quadpumped » 09.10.2009, 13:24

C/C++ hat keine 16-bit Fließkommazahlen

Benutzeravatar
Epfi
Admiral
Turtleboard Veteran
Turtleboard Veteran
Beiträge: 10520
Registriert: 08.03.2004, 11:02
Wohnort: Haus, das Verrückte macht
Kontaktdaten:

Re: 16-Bit Fließkommazahl?

Ungelesener Beitrag von Epfi » 09.10.2009, 13:31

Das ist doch mal ne klare Antwort ;) Danke!
hartware.net - *** ****** ***, ** ************ **** **** *********** ****.

Antworten