π
<-
Chat plein-écran
[^]

Nombres flottants & librairie statique

C, C++, ASM...

Nombres flottants & librairie statique

Message non lude Lepzulnag » 06 Mai 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: Tout sélectionner
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
Avatar de l’utilisateur
Lepzulnag
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Prochain niv.: 78.5%
 
Messages: 151
Inscription: 02 Aoû 2012, 21:15
Localisation: Bretagne
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: M2 Maths

Re: Nombres flottants & librairie statique

Message non lude Levak » 06 Mai 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
Avatar de l’utilisateur
LevakAdmin
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 98.9%
 
Messages: 6414
Images: 22
Inscription: 27 Nov 2008, 00:00
Localisation: 0x1AACC355
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: BAC+5: Epita (ING3)

Re: Nombres flottants & librairie statique

Message non lude Lepzulnag » 06 Mai 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 :)
Avatar de l’utilisateur
Lepzulnag
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Prochain niv.: 78.5%
 
Messages: 151
Inscription: 02 Aoû 2012, 21:15
Localisation: Bretagne
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: M2 Maths

Re: Nombres flottants & librairie statique

Message non lude Levak » 06 Mai 2014, 17:11

Lepzulnag a écrit: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: Tout sélectionner
#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
Avatar de l’utilisateur
LevakAdmin
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 98.9%
 
Messages: 6414
Images: 22
Inscription: 27 Nov 2008, 00:00
Localisation: 0x1AACC355
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: BAC+5: Epita (ING3)

Re: Nombres flottants & librairie statique

Message non lude Lepzulnag » 06 Mai 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é.
Avatar de l’utilisateur
Lepzulnag
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Prochain niv.: 78.5%
 
Messages: 151
Inscription: 02 Aoû 2012, 21:15
Localisation: Bretagne
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: M2 Maths

Re: Nombres flottants & librairie statique

Message non lude Levak » 06 Mai 2014, 17:38

Lepzulnag a écrit: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
Avatar de l’utilisateur
LevakAdmin
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 98.9%
 
Messages: 6414
Images: 22
Inscription: 27 Nov 2008, 00:00
Localisation: 0x1AACC355
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: BAC+5: Epita (ING3)


Retourner vers Native: Ndless, Linux, ...

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 10 invités

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
Comparaisons des meilleurs prix pour acheter sa calculatrice !
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
Phi NumWorks jailbreak
123
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
Faire un don
Découvrez les avantages d'un compte donateur !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partenaires et pub
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
2199 utilisateurs:
>2170 invités
>25 membres
>4 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Autres sites intéressants
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)