Forum: Mikrocontroller und Digitale Elektronik simple floating-point lib für 8 Bit Controller


von Markus (Gast)


Lesenswert?

Hallo Leute,

ich wollte mal fragen ob jemand von euch eine "floating point" lib 
kennt, die im Hintergrund auf byte / int arrays aufbaut und keine 
Hardware-FPU benötigt.

Ich entwickle gerade für einen etwas speziellen Softcore ein Programm, 
welches floating point benötigt.

Ich erwarte nicht, dass ich wirklich den Datentyp "float" im Programm 
verwenden kann, das kann von mir aus auch irgendein struct sein, aber 
ich muss damit addieren, subtrahieren, multiplizieren, dividieren und 
vergleichen können.

Wenn da jemand eine library kennt, die man einfach einbinden kann in das 
C Programm wäre ich wirklich sehr sehr dankbar!

Gruß

von Peter II (Gast)


Lesenswert?

bei einem 8bit Atmel braucht man dafür auch keine lib, das macht der GCC 
von selber. (bzw. die toolchain)

von Markus (Gast)


Lesenswert?

Ich weiß dass es beim AVR geht, nur kann ich diese Toolchain für die 
Plattform, die ich nutze nicht benutzen, deshalb brauch ich das als 
blanke library zum einbinden.

von Samuel C. (dragonsam)


Lesenswert?

Dann wäre es wohl ziemlich nützlich, wenn du mal damit rausrücken 
würdest, um welche Plattform es geht.

von Axel S. (a-za-z0-9)


Lesenswert?

Markus schrieb:
> Ich weiß dass es beim AVR geht, nur kann ich diese Toolchain für die
> Plattform, die ich nutze nicht benutzen

Und warum ist die Information, um welche Plattform es geht, geheim?

> deshalb brauch ich das als blanke library zum einbinden.

http://lmgt fy.com/?q=floating+point+library+C

Gleich 3 der ersten 4 Treffer sehen gut aus.

: Bearbeitet durch User
von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Peter II schrieb:
> bei einem 8bit Atmel braucht man dafür auch keine lib, das macht der GCC
> von selber.

Genau.  Und verwendet dafür die libgcc und die libc.

von Chris S. (schris)


Lesenswert?

#ifndef FIXPT_H
#define FIXPT_H
typedef  int     fix;
typedef  unsigned int  ufix;
#define FBITS    8


#define  TO_FIX(x)  ((fix)((x)*(1<<FBITS)))
#define  FIX_TO_SHORT(x)    ((short)((x)>>FBITS))
#define  FIX_TO_INT(x)    ((int)((x)>>FBITS))
#define  FIX_TO_DBL(x)  (((double)(x))/(1<<FBITS))
#define  MUL_2FIX(x, y)  (((x)*(y))>>FBITS)
#define  DIV_2FIX(x, y)  (((x)<<FBITS)/(y))
#define  FIX_TRUNC(x)    ((x)&(~((1<<FBITS)-1)))
#endif

von Guido Hub (Gast)


Lesenswert?


Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.