π
<-

Nombres flottants & librairie statique

C, C++, ASM...

Nombres flottants & librairie statique

Messagede 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

Messagede 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

Messagede 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

Messagede 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

Messagede 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

Messagede 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 4 invités

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
Ndless for CX 4.5.5 / CX II 6.2.0
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 !
12345
-
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.
4797 utilisateurs:
>4771 invités
>17 membres
>9 robots
Record simultané (sur 6 mois):
43991 utilisateurs (le 10/09/2025)
-
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)