libdecnumber für AVR compilieren

Gast #4296591
Lesenswert?
• ▲
▼
libdecnumber ist ein interne GCC-Bibliothek die beim Bauen von GCC 
mitgebaut wird, wenn man GCC mit Decimal-Float Unterstützung kompiliert.

Ob du dir einen GCC für AVR mit Decimal-Float Unterstützung kompilieren 
kannst? Keine Ahnung, ich habe das nicht ausprobiert. Decimal-Float ist 
eher ein Nischen-Zahlenformat. So richtig notwendig ist es nicht - wenn 
man programmieren kann. Es wird gerne für Kosmetik eingesetzt, um schöne 
Zahlen darstellen zu können, gerundet wird natürlich trotzdem. Nur ist 
man diese Art von Rundung eher gewohnt.

Es gibt ein paar Anwendungen, wo einem Decimal-Floats das Geschäft 
erleichtert. Die hat man nicht selten mit BCD oder ints programiert. 
Geht auch - wenn man weiß was man tut.

Was du garantiert nicht mit Decimal-Floats auf AVRs bekommst ist 
Geschwindigkeit. Floating-Point ist auf AVRs mangels 
Hardware-Unterstützung schon langsam. Decimal-Floats werden nicht besser 
sein.
Gast #4298509
Lesenswert?
• ▲
▼
ich habe ein bisschen weiter gesucht und entdeckt (wie Jan gesagt hatte) 
dass der GCC dezmal-floats seit 4.2 anbietet (siehe 1.).
Also schnell mal _Decimal64 a; ausprobiert und:
1
Error    decimal floating point not supported for this target
war ja klar...
Weiß jemand ob man das dem AVR-GCC irgendwie beibringen kann, oder ist 
das gar nicht möglich (fehlender support oder ähnliches)

aber vielen dank schon mal

PS: Geschwindigkeit brauche ich nicht, der AVR wartet sowieso 
größtenteils auf menschliche Eingaben, und der Mensch wird einige ms 
(das dürfte die Gößenordnung sein, denke ich) nicht mal merken.
Und ich dachte das decimal-fp die Ungenauigkeiten von binary-fp umgeht, 
oder liege ich da falsch?

1. https://gcc.gnu.org/onlinedocs/gcc/Decimal-Float.html
#4298656
Lesenswert?
• ▲
▼
ldn schrieb:

> Und ich dachte das decimal-fp die Ungenauigkeiten von binary-fp umgeht,
> oder liege ich da falsch?
>
> 1. https://gcc.gnu.org/onlinedocs/gcc/Decimal-Float.html
1
The decimal floating types are _Decimal32, _Decimal64, and _Decimal128. They use a radix of ten, unlike the floating types float, double, and long
2
double whose radix is not specified by the C standard but is usually two.

Nicht wirklich.
Decimal Float leiden im Prinzip unter genau den gleichen Problemen wie 
Floating Point Zahlen, die auf dem 2-er System aufgebaut sind: Sind die 
Stellen der Basis aufgebraucht, dann verlierst du Information. Es ist 
die immer gleiche alte Leier: so wie ein Notizbuch nur endlich viele 
Seiten zum reinschreiben hat, so hat auch ein 'normaler' Datentyp nur 
endlich viele Bits. Wenn die alle aufgebraucht sind, dann musst du 
irgendeinen Tod sterben.
Gast #4298663
Lesenswert?
• ▲
▼
Was bringt dann die Basis 10? Irgendwie verstehe ich grad nchts mehr...
Habe ich dann mehr Stellen? Eigentlich müssten es ja weniger sein, weil 
man 4bit pro Ziffer braucht.

Mglw. bin ich aber auch komplett auf dem Holzweg, dann dürft ihr mich 
bitte zurückschubsen...

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.