π
<-

Nombres flottants & librairie statique

C, C++, ASM...

Nombres flottants & librairie statique

Unread postby Lepzulnag » 06 May 2014, 15:12

Bonjour à tous,

le problème des nombres flottants en programmation ndless est depuis longtemps connu : je ne m'étendrai pas sur le sujet mais ils sont tout simplement inutilisables, ce qui rend impossible l'utilisation de toutes librairies qui demandent en argument de leur fonction un float ou un double (dans mon cas, c'est la librairie SDL_rotozoom, que j'aimerais utiliser).

Cependant je remarquais que SDL_primitives, qui permet d'afficher des graphiques complexes à l'écran, marchait correctement (lignes diagonales, ellipses, polygones, etc...). Or si je ne me trompe pas, des floats (ou double) sont utilisés pour l'affichage de ces figures, non ?

Je me suis alors dit que j'allais créer une librairie sans utiliser le compilateur ndless, qui convertit des floats en int et réciproquement, de telle sorte qu'en programmant avec ndless je n'ai a utilisé que des int.
Le problème, c'est que la librairie statique que j'ai créé contient des fichiers .o de type "MS Windows COFF Intel 80386 object file", alors que ne sont reconnus par le compilateur ndless que des fichiers de type "ELF 32-bit LSB...". Dois-je mettre une option particulière lorsque je compile afin d'obtenir le bon type de fichiers objets ?

Je compile avec MingW et gcc, et voici mon makefile, il est tout simple :

Code: Select all
SOURCES = $(wildcard *.c)
EXEC = testIntConvertor.exe
OBJECTS = $(SOURCES:.c=.o)

CC = gcc
CFLAGS = -Wall
LIBS = -lmingw32

all: $(EXEC)

$(EXEC): $(OBJECTS)
   $(CC) $(CFLAGS) -o $@ $^ $(LIBS)

.c.o:
   $(CC) $(CFLAGS) -c $< -o $@ $(TARGET)
   
clean:
   rm -rf *.o
User avatar
Lepzulnag
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Level up: 78.5%
 
Posts: 151
Joined: 02 Aug 2012, 21:15
Location: Bretagne
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: M2 Maths

Re: Nombres flottants & librairie statique

Unread postby Levak » 06 May 2014, 16:23

Je ne saurais répondre à ta question, cependant, j'aimerais revenir sur ce point :

le problème des nombres flottants en programmation ndless est depuis longtemps connu : je ne m'étendrai pas sur le sujet mais ils sont tout simplement inutilisables, ce qui rend impossible l'utilisation de toutes librairies qui demandent en argument de leur fonction un float ou un double (dans mon cas, c'est la librairie SDL_rotozoom, que j'aimerais utiliser).

Non, c'est simplement les nombres flottants passés à des syscalls, ce qui représente presque qu'exclusivement *printf.
Responsable design/graphique de TI-Planet
I do not get mad at people, I just want them to learn the way I learnt.
ImageTNOC [topic][DL]
nClock [topic][DL]
HideManager [topic][DL]
ZLock [topic][DL]
Theme Editor [topic][DL]
Mes programmes
User avatar
LevakAdmin
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 98.9%
 
Posts: 6414
Images: 22
Joined: 27 Nov 2008, 00:00
Location: 0x1AACC355
Gender: Male
Calculator(s):
MyCalcs profile
Class: BAC+5: Epita (ING3)

Re: Nombres flottants & librairie statique

Unread postby Lepzulnag » 06 May 2014, 17:02

Mmh dans ce cas je ne comprends pas pourquoi les fonctions rotozoom n'ont eu aucun effet. Ca doit être une erreur de ma part, je vais aller re-tester cela en profondeur, et tiens au courant.

Merci :)
User avatar
Lepzulnag
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Level up: 78.5%
 
Posts: 151
Joined: 02 Aug 2012, 21:15
Location: Bretagne
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: M2 Maths

Re: Nombres flottants & librairie statique

Unread postby Levak » 06 May 2014, 17:11

Lepzulnag wrote:Ca doit être une erreur de ma part, je vais aller re-tester cela en profondeur, et tiens au courant.

Pour debugguer des flottants, utilise une technique stupide mais efficace :
Code: Select all
#define QUOTE_X(X) #X
#define QUOTE(X) QUOTE_X(X)
#define FLOAT_DIGITS 5
#define FLOAT_POWER 100000
#define FF "%d.%0" QUOTE(FLOAT_DIGITS) "d"
#define FLOAT(X) ((int)(X)), (int)(((X) - (int)(X)) * FLOAT_POWER)

...

printf("MyFloat : " FF "\n", FLOAT(42.42f));
Responsable design/graphique de TI-Planet
I do not get mad at people, I just want them to learn the way I learnt.
ImageTNOC [topic][DL]
nClock [topic][DL]
HideManager [topic][DL]
ZLock [topic][DL]
Theme Editor [topic][DL]
Mes programmes
User avatar
LevakAdmin
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 98.9%
 
Posts: 6414
Images: 22
Joined: 27 Nov 2008, 00:00
Location: 0x1AACC355
Gender: Male
Calculator(s):
MyCalcs profile
Class: BAC+5: Epita (ING3)

Re: Nombres flottants & librairie statique

Unread postby Lepzulnag » 06 May 2014, 17:27

Joli le code pour tester les floats, merci ;)
Sinon c'est bien moi qui avait fait n'importe quoi, les fonctions de rotozoom marchent parfaitement bien.

Topic résolu donc, sauf si quelqu'un sait répondre à ma question sur les types de .o et la façon dont les générer. Bien que le problème ne se pose plus pour moi et pour le moment, peut-être qu'un jour il redeviendra d'actualité.
User avatar
Lepzulnag
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Level up: 78.5%
 
Posts: 151
Joined: 02 Aug 2012, 21:15
Location: Bretagne
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: M2 Maths

Re: Nombres flottants & librairie statique

Unread postby Levak » 06 May 2014, 17:38

Lepzulnag wrote:Joli le code pour tester les floats, merci ;)

J'ai édité 5 ou 6 fois, la dernière étant en ayant finalement testé avec gcc.
Responsable design/graphique de TI-Planet
I do not get mad at people, I just want them to learn the way I learnt.
ImageTNOC [topic][DL]
nClock [topic][DL]
HideManager [topic][DL]
ZLock [topic][DL]
Theme Editor [topic][DL]
Mes programmes
User avatar
LevakAdmin
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 98.9%
 
Posts: 6414
Images: 22
Joined: 27 Nov 2008, 00:00
Location: 0x1AACC355
Gender: Male
Calculator(s):
MyCalcs profile
Class: BAC+5: Epita (ING3)


Return to Native: Ndless, Linux, ...

Who is online

Users browsing this forum: ClaudeBot [spider] and 5 guests

-
Search
-
Social TI-Planet
-
Featured topics
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
1234
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...
Donate
Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
1520 utilisateurs:
>1507 invités
>7 membres
>6 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)