Avatar billede qw_freak Nybegynder
09. september 2010 - 09:00 Der er 10 kommentarer og
1 løsning

en C-compiler uden floating point???

Hey jeg påtænker mig at benytte denne C-compiler til at programmerere på en Propeller microcontroller, men den har bl.a. ikke floating point understøttelse.

Er der nogen der kan fortælle mig hvad det vil kunne komme til at betyde for mig?? Samt om der er andre ting ved denne compiler jeg skal være opmærksom på???

Det jeg skal laver er et display med touch hvor man kan ændre variabler ved at trække fingeren henover displayet, som så vil få indvirkning på et output fra en DAC...

c - compiler http://www.imagecraft.com/devtools_Propeller.html

Microcontroller: http://www.parallax.com/tabid/407/Default.aspx
Avatar billede arne_v Ekspert
09. september 2010 - 14:08 #1
Hvis compileren ikke understøtter FP (formentligt fordi processoren ikke understøtter FP og man ikke har fundet det umagen værd med et langsomt emulerings bibliotek), så kan du ikke bruge FP!

:-)

Er det et problem at du ikke kan bruge float og double?
Avatar billede qw_freak Nybegynder
09. september 2010 - 20:15 #2
Problemet er at jeg ikke er erfaren nok til at afgøre om det er noget der kommer til at have nogen betydning for vores projekt!

Og jo, processoren understøtter FP, men det gør C-compileren ikke endnu! der er heller ikke endnu en debugger, så jeg prøver at finde ud af hvad vi har med at gøre da det er en processor som det firma vi skal lave projekt for vil have at vi bruger...
Avatar billede arne_v Ekspert
09. september 2010 - 20:32 #3
Der er faktisk ikke så mange apps der har brug for FP.

Skal app lave beregninger på tal målt med usikkerhed?
Avatar billede qw_freak Nybegynder
09. september 2010 - 20:57 #4
Ja, der kommer værdier ind i  systemet fra en justerbare modstande som skal videre beregnes.
Avatar billede arne_v Ekspert
10. september 2010 - 00:11 #5
Hvis de beregninger skal vær emed decimaler, så får du fornøjelsen af at regne med int og implied decimal!
Avatar billede qw_freak Nybegynder
10. september 2010 - 11:28 #6
Så det er ikke sådan at jeg får fejlberegninger ved at bruge en int som indeholder et kommatal??

implied decimal, er det hvor man forudbestemmer at alle tal har eksempelvis 4 decimaler, som så er nul hvis ikke det er et decimaltal alligevel?
Avatar billede arne_v Ekspert
11. september 2010 - 03:07 #7
ikke hvis du gør det rigtigt

:-)

ja
Avatar billede arne_v Ekspert
11. september 2010 - 03:59 #8
Til inspiration:

#include <stdio.h>

typedef struct
{
    int val;
    int impldeci;
} FIXP;

#define MAX(i,j) ((i>=j)?(i):(j))

static int POW10[] = { 1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000 };

FIXP init(int val, int impldeci)
{
    FIXP res;
    res.val = val;
    res.impldeci = impldeci;
    return res;
}

FIXP add(FIXP v1, FIXP v2)
{
    FIXP res;
    int d;
    d = MAX(v1.impldeci, v2.impldeci);
    res.val = v1.val * POW10[MAX(d - v1.impldeci,0)] + v2.val * POW10[MAX(d - v2.impldeci,0)];
    res.impldeci = d;
    return res;
}

FIXP mul(FIXP v1, FIXP v2)
{
    FIXP res;
    res.val = v1.val * v2.val;
    res.impldeci = v1.impldeci + v2.impldeci;
    return res;
}

FIXP div(FIXP v1, FIXP v2)
{
    FIXP res;
    int d;
    d = MAX(v1.impldeci, v2.impldeci);
    res.val = v1.val * POW10[MAX(d - v1.impldeci,0)] / v2.val;
    res.impldeci = d - v2.impldeci;
    return res;
}

void print(FIXP v)
{
    printf("%d.%0*d\n", v.val / POW10[v.impldeci], v.impldeci, v.val % POW10[v.impldeci]);
}

int main()
{
    double a, b, c, d, x;
    FIXP a2, b2, c2, d2, x2;
    a = 1.58;
    b = 0.3;
    c = 0.5;
    d = 2;
    x = (a + b) * c / d;
    printf("%f\n", x);
    a2 = init(158, 2);
    b2 = init(3, 1);
    c2 = init(5, 1);
    d2 = init(2, 0);
    x2 = div(mul(add(a2, b2), c2), d2);
    print(x2);
    return 0;
}
Avatar billede arne_v Ekspert
11. september 2010 - 03:59 #9
Du bør unit teste ovenstående grundigt, fordi der kan sagtens være fejl.
Avatar billede qw_freak Nybegynder
13. september 2010 - 16:20 #10
tak for det, vil du poste et svar så du kan få dine point? :)
Avatar billede arne_v Ekspert
13. september 2010 - 16:28 #11
kommer her
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester