OVH Cloud OVH Cloud

1.0/0.0

17 réponses
Avatar
Laurent Deniau
Existe-t-il un truc (un cast ou je ne sais quoi) permettant d'eviter les
warnings du compilateur (independament du compilateur) tout en ayant la valeur
1.0/0.0 calculee a la compilation? J'ai essaye de decomposer le calcul via une
variable locale, mais il reconnait la division par 0.0 tot ou tard... Mon but
est biensur d'obtenir inf (en C89).

a+, ld.

--
[ Laurent Deniau -- Scientific Computing & Data Analysis ]
[ CERN -- European Center for Nuclear Research ]
[ Laurent.Deniau@cern.ch - http://cern.ch/Laurent.Deniau ]
[ -- One becomes old when dreams become regrets -- ]

7 réponses

1 2
Avatar
Jean-Marc
"Gabriel Dos Reis" a écrit:
"Jean-Marc" writes:
| Par contre, la valeur 0.0 a t-elle un signe ? Gcc me dit oui:

Oui. Grace à IEEE-754, qui a inventé +0.0 et -0.0.


Grâce ? Pourquoi a t-on donné un signe à 0.0 ?
J'ai parcouru la Faq (14.x) et n'y ai rien vu à ce sujet.

Merci.

A
+
Jean-Marc
Gcc 2.81 68k

Avatar
Gabriel Dos Reis
"Jean-Marc" writes:

| "Gabriel Dos Reis" a écrit:
| > "Jean-Marc" writes:
| > | Par contre, la valeur 0.0 a t-elle un signe ? Gcc me dit oui:
| >
| > Oui. Grace à IEEE-754, qui a inventé +0.0 et -0.0.
|
| Grâce ?

C'est ma façon polie de dire les choses...

| Pourquoi a t-on donné un signe à 0.0 ?

parce qu'ils le pouvaient :-)

En LIA-1 (Language Independent Arithmetic, Part I), il n'y a pas de
zéro signé.

| J'ai parcouru la Faq (14.x) et n'y ai rien vu à ce sujet.

Il faudrait probablement l'étendre.

-- Gaby
Avatar
Jean-Marc
"Gabriel Dos Reis" a écrit:
"Jean-Marc" writes:
| Pourquoi a t-on donné un signe à 0.0 ?

parce qu'ils le pouvaient :-)


Pourquoi faire simple lorsqu'on peut faire compliqué ;)

Merci.

A
+
Jean-Marc

Avatar
Jean-Marc
"Vincent Lefevre" a écrit:
Jean-Marc écrit:
Pourquoi a t-on donné un signe à 0.0 ?


Parce qu'ils ont choisi d'avoir des infinis signés, et qu'un zéro
signé évite d'avoir quelque chose de bancal quand on divise par 0
(qui peut provenir d'un underflow). Ceci dit, leur choix est
mauvais, car le +0.0 est privilégié pour 0.0 - 0.0. Pour avoir un
truc qui tienne au niveau des signes, il aurait fallu un vrai 0 et
3 epsilons (un positif, un négatif et un neutre).


Merci pour ces précisions.

A
+
Jean-Marc


Avatar
Emmanuel Delahaye
In 'fr.comp.lang.c', Gabriel Dos Reis wrote:

Éric Lévénez writes:

| Affiche "Inf" avec GCC et pas de warning.

Cela dépend du niveau de warning et d'optimisation que tu spécifies.

-- Gaby


Borland C 3.1 :

D:CLCLLEVENEZ>bc proj.prj
+INF

DEV-C++ (gcc 3.2.x)

Compilateur: Default compiler
Building Makefile: "D:Dev-CppTest1Makefile.win"
Exécution de make...
make.exe -f "D:Dev-CppTest1Makefile.win" all
gcc.exe -c main.c -o main.o -I"C:/DEV-CPP/include" -DDEVCPP -DTEST -W -Wall
-O3 -stdÉ9 -ansi -fmessage-length=0

main.c: In function `main':
main.c:6: warning: division: function singularity

gcc.exe main.o -o "Test1.exe" -L"C:/DEV-CPP/lib"

Exécution terminée
Compilation OK

1.#INF
Appuyez sur une touche pour continuer . . .

--
-ed- [remove YOURBRA before answering me]
The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html
<blank line>
FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/

Avatar
Gabriel Dos Reis
Emmanuel Delahaye writes:

| In 'fr.comp.lang.c', Gabriel Dos Reis wrote:
|
| > Éric Lévénez writes:
| >
| >| Affiche "Inf" avec GCC et pas de warning.
| >
| > Cela dépend du niveau de warning et d'optimisation que tu spécifies.
| >
| > -- Gaby
|
| Borland C 3.1 :
|
| D:CLCLLEVENEZ>bc proj.prj
| +INF
|
| DEV-C++ (gcc 3.2.x)
|
| Compilateur: Default compiler
| Building Makefile: "D:Dev-CppTest1Makefile.win"
| Exécution de make...
| make.exe -f "D:Dev-CppTest1Makefile.win" all
| gcc.exe -c main.c -o main.o -I"C:/DEV-CPP/include" -DDEVCPP -DTEST -W -Wall
| -O3 -stdÉ9 -ansi -fmessage-length=0
|
| main.c: In function `main':
| main.c:6: warning: division: function singularity

Il y a bien un changement entre 3.2.x et 3.3.x. Le premier a un
fonctionnement cohérent (donne les warnings de manières cohérentes),
le second est plus lunatique (donne les warnings selon l'appelation).

(aussi, tu devrais éviter le mélange des genres, -ansi et -stdÉ9).
.

-- Gaby
Avatar
Emmanuel Delahaye
In 'fr.comp.lang.c', Gabriel Dos Reis
wrote:

(aussi, tu devrais éviter le mélange des genres, -ansi et -stdÉ9).


Ok.

--
-ed- [remove YOURBRA before answering me]
The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html
<blank line>
FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/

1 2