libdecnumber für AVR compilieren

Gast
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
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
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
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...
Gast
ldn schrieb:
> Was für ein Problem lösen die DecFloats dann? Ohne Problem hätten sie
> imho eher weniger Daseinsberechtigung
Der Benutzer kann '0.3' eingeben und kriegt auch rundungsfrei wieder 
'0.3' heraus, und nicht '0.299999999999' oder sowas...

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 11 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.