Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Complexe avec fonction réelle

11 réponses
Avatar
Eric Levenez
Je viens de voir que l'on peut utiliser des flottants complexes avec les
fonctions réelles (non complexes). Est-ce un comportement normalisé
(utilisation du module ou de la partie réelle) ?

float complex z;
float x;

x = sinf(z);

--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.

1 réponse

1 2
Avatar
Eric Levenez
Le 27/01/08 15:57, dans ,
« Kojak » a écrit :

Juste pour vérifier, j'ai rajouté ici cette ligne :

y = cosf((double)x);

Et j'obtiens bien le bon comportement avec gcc-4.3.0

"
float.c: In function Œmain¹:
float.c:7: attention : conversion to Œfloat¹ from Œdouble¹ may alter its value
"

mais pas avec les version antérieurs. Il semble donc, que cela soit
un bug récurrent de gcc pré-4.3.0.


C'est ce qu'il me semblait.

J'ai testé sous Mac OS X/PPC avec gcc-3.3 (qui, accessoirement, ne
reconnais pas -Wextra) et gcc-4.0.1 puis sous Linux/x86_64 avec gcc
version 4.1.3, 4.2.3 et 4.3.0.


Merci d'avoir vérifié :-)

Bref, il te reste toujours la possibilité de compiler/installer la
version 4.3.0 pour contrôler ton code, quitte à compiler au final
sous la version native. AMHA, cela devrait être plus sûr que de
hacker furieusement ton code à coup de "grep" et consorts (enfin,
tout dépend du volume de code à traiter).


Je n'ai pas envie d'installer une version non officielle de gcc (selon
Apple) sur mon Mac...

J'ai toute une partie de mon code qui utilise des floats (et pas des
doubles), et là il est facile de grepper pour voir si il n'y a pas des
cos qui traînent à la place de cosf (par exemple). Idem pour les fonctions
complexes. J'ai vérifié tous les messages retournés avec "-Wconversion".
Donc normalement tout va bien.

--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.

1 2