Bonjour,
La norme ISO C99 dit:
7.12.10.3 The remquo functions
[...]
[#2] The remquo functions compute the same remainder as the
remainder functions. In the object pointed to by quo they store
a value whose sign is the sign of x/y and whose magnitude is
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
congruent modulo 2^n to the magnitude of the integral quotient
of x/y, where n is an implementation-defined integer greater
than or equal to 3.
Mais avec toutes les implémentations testées jusqu'à présent (Linux
(glibc), Mac OS X 10.4.9 et Solaris 10), on obtient, pour certaines
valeurs de (x,y), 0 dans quo bien que x/y soit différent de 0. Est-ce
un bug de ces implémentations, ou bien la norme C parle-t-elle du
signe du 0 entier quelque part (je n'en ai pas l'impression), ou bien
est-ce une interprétation large de la norme (0 étant considéré à la
fois comme positif et négatif ici, mais pas ailleurs[*])?
Bonjour,
La norme ISO C99 dit:
7.12.10.3 The remquo functions
[...]
[#2] The remquo functions compute the same remainder as the
remainder functions. In the object pointed to by quo they store
a value whose sign is the sign of x/y and whose magnitude is
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
congruent modulo 2^n to the magnitude of the integral quotient
of x/y, where n is an implementation-defined integer greater
than or equal to 3.
Mais avec toutes les implémentations testées jusqu'à présent (Linux
(glibc), Mac OS X 10.4.9 et Solaris 10), on obtient, pour certaines
valeurs de (x,y), 0 dans quo bien que x/y soit différent de 0. Est-ce
un bug de ces implémentations, ou bien la norme C parle-t-elle du
signe du 0 entier quelque part (je n'en ai pas l'impression), ou bien
est-ce une interprétation large de la norme (0 étant considéré à la
fois comme positif et négatif ici, mais pas ailleurs[*])?
Bonjour,
La norme ISO C99 dit:
7.12.10.3 The remquo functions
[...]
[#2] The remquo functions compute the same remainder as the
remainder functions. In the object pointed to by quo they store
a value whose sign is the sign of x/y and whose magnitude is
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
congruent modulo 2^n to the magnitude of the integral quotient
of x/y, where n is an implementation-defined integer greater
than or equal to 3.
Mais avec toutes les implémentations testées jusqu'à présent (Linux
(glibc), Mac OS X 10.4.9 et Solaris 10), on obtient, pour certaines
valeurs de (x,y), 0 dans quo bien que x/y soit différent de 0. Est-ce
un bug de ces implémentations, ou bien la norme C parle-t-elle du
signe du 0 entier quelque part (je n'en ai pas l'impression), ou bien
est-ce une interprétation large de la norme (0 étant considéré à la
fois comme positif et négatif ici, mais pas ailleurs[*])?
Je crois que les implémentations sont plus proches de ce qui était désiré
que la formulation -- qui m'a plutôt l'air d'oublier le cas 0 que de le
considérer à la fois comme positif et négatif. Les spécifications sur le
signe et le modulo ne sont à mon sens présentes plus pour spécifier le
comportement quand le quotient entier n'est pas représentable dans un int,
que pour envoyer un quotient entier vers quelque chose de généralement
inutile.
De même, je m'attends à ce que le "quotient entier" ne soit pas floor(x/y)
-- qui me semble être la définition de quoitient entier -- mais plutôt
l'entier le plus proche de la valeur exacte de x/y avec les valeurs paires
utilisées pour trancher les ex-aequo, pour le les deux résultats de la
fonction soient cohérent.
Je crois que les implémentations sont plus proches de ce qui était désiré
que la formulation -- qui m'a plutôt l'air d'oublier le cas 0 que de le
considérer à la fois comme positif et négatif. Les spécifications sur le
signe et le modulo ne sont à mon sens présentes plus pour spécifier le
comportement quand le quotient entier n'est pas représentable dans un int,
que pour envoyer un quotient entier vers quelque chose de généralement
inutile.
De même, je m'attends à ce que le "quotient entier" ne soit pas floor(x/y)
-- qui me semble être la définition de quoitient entier -- mais plutôt
l'entier le plus proche de la valeur exacte de x/y avec les valeurs paires
utilisées pour trancher les ex-aequo, pour le les deux résultats de la
fonction soient cohérent.
Je crois que les implémentations sont plus proches de ce qui était désiré
que la formulation -- qui m'a plutôt l'air d'oublier le cas 0 que de le
considérer à la fois comme positif et négatif. Les spécifications sur le
signe et le modulo ne sont à mon sens présentes plus pour spécifier le
comportement quand le quotient entier n'est pas représentable dans un int,
que pour envoyer un quotient entier vers quelque chose de généralement
inutile.
De même, je m'attends à ce que le "quotient entier" ne soit pas floor(x/y)
-- qui me semble être la définition de quoitient entier -- mais plutôt
l'entier le plus proche de la valeur exacte de x/y avec les valeurs paires
utilisées pour trancher les ex-aequo, pour le les deux résultats de la
fonction soient cohérent.
Bonjour,
La norme ISO C99 dit:
7.12.10.3 The remquo functions
[...]
[#2] The remquo functions compute the same remainder as the
remainder functions. In the object pointed to by quo they store
a value whose sign is the sign of x/y and whose magnitude is
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
congruent modulo 2^n to the magnitude of the integral quotient
of x/y, where n is an implementation-defined integer greater
than or equal to 3.
Mais avec toutes les implémentations testées jusqu'à présent (Linux
(glibc), Mac OS X 10.4.9 et Solaris 10), on obtient, pour certaines
valeurs de (x,y), 0 dans quo bien que x/y soit différent de 0. Est-ce
un bug de ces implémentations, ou bien la norme C parle-t-elle du
signe du 0 entier quelque part (je n'en ai pas l'impression), ou bien
est-ce une interprétation large de la norme (0 étant considéré à la
fois comme positif et négatif ici, mais pas ailleurs[*])?
[*] Cf l'emploi de "nonnegative" dans la norme, qui signifie >= 0
et non > 0.
Bonjour,
La norme ISO C99 dit:
7.12.10.3 The remquo functions
[...]
[#2] The remquo functions compute the same remainder as the
remainder functions. In the object pointed to by quo they store
a value whose sign is the sign of x/y and whose magnitude is
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
congruent modulo 2^n to the magnitude of the integral quotient
of x/y, where n is an implementation-defined integer greater
than or equal to 3.
Mais avec toutes les implémentations testées jusqu'à présent (Linux
(glibc), Mac OS X 10.4.9 et Solaris 10), on obtient, pour certaines
valeurs de (x,y), 0 dans quo bien que x/y soit différent de 0. Est-ce
un bug de ces implémentations, ou bien la norme C parle-t-elle du
signe du 0 entier quelque part (je n'en ai pas l'impression), ou bien
est-ce une interprétation large de la norme (0 étant considéré à la
fois comme positif et négatif ici, mais pas ailleurs[*])?
[*] Cf l'emploi de "nonnegative" dans la norme, qui signifie >= 0
et non > 0.
Bonjour,
La norme ISO C99 dit:
7.12.10.3 The remquo functions
[...]
[#2] The remquo functions compute the same remainder as the
remainder functions. In the object pointed to by quo they store
a value whose sign is the sign of x/y and whose magnitude is
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
congruent modulo 2^n to the magnitude of the integral quotient
of x/y, where n is an implementation-defined integer greater
than or equal to 3.
Mais avec toutes les implémentations testées jusqu'à présent (Linux
(glibc), Mac OS X 10.4.9 et Solaris 10), on obtient, pour certaines
valeurs de (x,y), 0 dans quo bien que x/y soit différent de 0. Est-ce
un bug de ces implémentations, ou bien la norme C parle-t-elle du
signe du 0 entier quelque part (je n'en ai pas l'impression), ou bien
est-ce une interprétation large de la norme (0 étant considéré à la
fois comme positif et négatif ici, mais pas ailleurs[*])?
[*] Cf l'emploi de "nonnegative" dans la norme, qui signifie >= 0
et non > 0.
1)
C'est possible de donner des examples?
(Avec des valeurs)
2)
lcc-win32 implemente aussi remquo. C'est different des autres?
Merci
http://www.cs.virginia.edu/~lcc-win32
1)
C'est possible de donner des examples?
(Avec des valeurs)
2)
lcc-win32 implemente aussi remquo. C'est different des autres?
Merci
http://www.cs.virginia.edu/~lcc-win32
1)
C'est possible de donner des examples?
(Avec des valeurs)
2)
lcc-win32 implemente aussi remquo. C'est different des autres?
Merci
http://www.cs.virginia.edu/~lcc-win32