J'écris une bibliothèque de polynômes et j'ai
quelques problèmes avec l'opérateur exposant (^).
J'ai écrit toutes les surcharges nécessaires et
ceci par, exemple, compile:
Polynome P = (X^3) - 6 * (X^2) + 9 * X - 4;
Par contre, ceci ne compile pas:
Polynome P = X^3 - 6 * X^2 + 9 * X - 4;
Par ailleurs X^2 - 1 compile et donne X.
Je n'ai donc pas la bonne priorité.
J'écris une bibliothèque de polynômes et j'ai quelques problèmes avec l'opérateur exposant (^). J'ai écrit toutes les surcharges nécessaires et ceci par, exemple, compile: Polynome P = (X^3) - 6 * (X^2) + 9 * X - 4; Par contre, ceci ne compile pas: Polynome P = X^3 - 6 * X^2 + 9 * X - 4; Par ailleurs X^2 - 1 compile et donne X. Je n'ai donc pas la bonne priorité.
Y a-t-il moyen d'arranger ça ?
Non. Ni de changer la priorite, ni de faire en sorte que X ^ 2-1 ait une interpretation differente de X^1.
Avant de regretter cet etat de chose, je voudrais signaler qu'il y a eu au moins un langage ou on pouvait ajouter des operateurs infixes, leur donner la priorite qu'on voulait et meme modifier la priorite des operateurs existants: Algol 68. Le resultat de cette experience est que c'est une tres mauvaise idee (au moins l'ajout de nouveaux operateurs a n'importe quel priorite et surtout la modification de la priorite des operateurs existants).
^ est l'operateur ou exclusif en C++ et en general utiliser les operateurs pour quelque chose de tres different de ce qu'ils font sur les types de base (utiliser ^ pour la difference symetrique d'ensemble ne me gene absolument pas) est quelque chose a considerer avec precaution. Le cas d'une bibliotheque de polynome est un des cas ou ce serait a mon avis admissible sans grande contestation s'il n'y avais mauvaise priorite qui tends a faire pencher la balance de l'autre cote.
A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
"Etienne Rousee" <etienne@rousee.org> writes:
Bonsoir,
J'écris une bibliothèque de polynômes et j'ai
quelques problèmes avec l'opérateur exposant (^).
J'ai écrit toutes les surcharges nécessaires et
ceci par, exemple, compile:
Polynome P = (X^3) - 6 * (X^2) + 9 * X - 4;
Par contre, ceci ne compile pas:
Polynome P = X^3 - 6 * X^2 + 9 * X - 4;
Par ailleurs X^2 - 1 compile et donne X.
Je n'ai donc pas la bonne priorité.
Y a-t-il moyen d'arranger ça ?
Non. Ni de changer la priorite, ni de faire en sorte que X ^ 2-1 ait
une interpretation differente de X^1.
Avant de regretter cet etat de chose, je voudrais signaler qu'il y a
eu au moins un langage ou on pouvait ajouter des operateurs infixes,
leur donner la priorite qu'on voulait et meme modifier la priorite des
operateurs existants: Algol 68. Le resultat de cette experience est
que c'est une tres mauvaise idee (au moins l'ajout de nouveaux
operateurs a n'importe quel priorite et surtout la modification de la
priorite des operateurs existants).
^ est l'operateur ou exclusif en C++ et en general utiliser les
operateurs pour quelque chose de tres different de ce qu'ils font sur
les types de base (utiliser ^ pour la difference symetrique d'ensemble
ne me gene absolument pas) est quelque chose a considerer avec
precaution. Le cas d'une bibliotheque de polynome est un des cas ou
ce serait a mon avis admissible sans grande contestation s'il n'y
avais mauvaise priorite qui tends a faire pencher la balance de
l'autre cote.
A+
--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org
J'écris une bibliothèque de polynômes et j'ai quelques problèmes avec l'opérateur exposant (^). J'ai écrit toutes les surcharges nécessaires et ceci par, exemple, compile: Polynome P = (X^3) - 6 * (X^2) + 9 * X - 4; Par contre, ceci ne compile pas: Polynome P = X^3 - 6 * X^2 + 9 * X - 4; Par ailleurs X^2 - 1 compile et donne X. Je n'ai donc pas la bonne priorité.
Y a-t-il moyen d'arranger ça ?
Non. Ni de changer la priorite, ni de faire en sorte que X ^ 2-1 ait une interpretation differente de X^1.
Avant de regretter cet etat de chose, je voudrais signaler qu'il y a eu au moins un langage ou on pouvait ajouter des operateurs infixes, leur donner la priorite qu'on voulait et meme modifier la priorite des operateurs existants: Algol 68. Le resultat de cette experience est que c'est une tres mauvaise idee (au moins l'ajout de nouveaux operateurs a n'importe quel priorite et surtout la modification de la priorite des operateurs existants).
^ est l'operateur ou exclusif en C++ et en general utiliser les operateurs pour quelque chose de tres different de ce qu'ils font sur les types de base (utiliser ^ pour la difference symetrique d'ensemble ne me gene absolument pas) est quelque chose a considerer avec precaution. Le cas d'une bibliotheque de polynome est un des cas ou ce serait a mon avis admissible sans grande contestation s'il n'y avais mauvaise priorite qui tends a faire pencher la balance de l'autre cote.
A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Etienne Rousee
"Jean-Marc Bourguet" a écrit ...
"Etienne Rousee" writes:
Bonsoir,
J'écris une bibliothèque de polynômes et j'ai quelques problèmes avec l'opérateur exposant (^). J'ai écrit toutes les surcharges nécessaires et ceci par, exemple, compile: Polynome P = (X^3) - 6 * (X^2) + 9 * X - 4; Par contre, ceci ne compile pas: Polynome P = X^3 - 6 * X^2 + 9 * X - 4; Par ailleurs X^2 - 1 compile et donne X. Je n'ai donc pas la bonne priorité.
Y a-t-il moyen d'arranger ça ?
Non. Ni de changer la priorite, ni de faire en sorte que X ^ 2-1 ait une interpretation differente de X^1.
Dommage.
Il n'y aurait pas un autre opérateur caché que je pourrais détourner du droit chemin ?
Je ne suis sûrement pas le premier à écrire une telle bibliothèque. Comment font les autres ?
--
Etienne
"Jean-Marc Bourguet" <jm@bourguet.org> a écrit ...
"Etienne Rousee" <etienne@rousee.org> writes:
Bonsoir,
J'écris une bibliothèque de polynômes et j'ai
quelques problèmes avec l'opérateur exposant (^).
J'ai écrit toutes les surcharges nécessaires et
ceci par, exemple, compile:
Polynome P = (X^3) - 6 * (X^2) + 9 * X - 4;
Par contre, ceci ne compile pas:
Polynome P = X^3 - 6 * X^2 + 9 * X - 4;
Par ailleurs X^2 - 1 compile et donne X.
Je n'ai donc pas la bonne priorité.
Y a-t-il moyen d'arranger ça ?
Non. Ni de changer la priorite, ni de faire en
sorte que X ^ 2-1 ait une interpretation
differente de X^1.
Dommage.
Il n'y aurait pas un autre opérateur caché
que je pourrais détourner du droit chemin ?
Je ne suis sûrement pas le premier à écrire
une telle bibliothèque. Comment font les autres ?
J'écris une bibliothèque de polynômes et j'ai quelques problèmes avec l'opérateur exposant (^). J'ai écrit toutes les surcharges nécessaires et ceci par, exemple, compile: Polynome P = (X^3) - 6 * (X^2) + 9 * X - 4; Par contre, ceci ne compile pas: Polynome P = X^3 - 6 * X^2 + 9 * X - 4; Par ailleurs X^2 - 1 compile et donne X. Je n'ai donc pas la bonne priorité.
Y a-t-il moyen d'arranger ça ?
Non. Ni de changer la priorite, ni de faire en sorte que X ^ 2-1 ait une interpretation differente de X^1.
Dommage.
Il n'y aurait pas un autre opérateur caché que je pourrais détourner du droit chemin ?
Je ne suis sûrement pas le premier à écrire une telle bibliothèque. Comment font les autres ?
--
Etienne
Fabien LE LEZ
On 19 Dec 2005 08:50:45 +0100, Jean-Marc Bourguet :
Le cas d'une bibliotheque de polynome est un des cas ou ce serait a mon avis admissible sans grande contestation
Voire... a^b signifie-t-il "a exposant b" ou "le PPCM de a et b" ?
On 19 Dec 2005 08:50:45 +0100, Jean-Marc Bourguet <jm@bourguet.org>:
Le cas d'une bibliotheque de polynome est un des cas ou
ce serait a mon avis admissible sans grande contestation
Voire... a^b signifie-t-il "a exposant b" ou "le PPCM de a et b" ?
On 19 Dec 2005 08:50:45 +0100, Jean-Marc Bourguet :
Le cas d'une bibliotheque de polynome est un des cas ou ce serait a mon avis admissible sans grande contestation
Voire... a^b signifie-t-il "a exposant b" ou "le PPCM de a et b" ?
Cyrille
Dommage.
Il n'y aurait pas un autre opérateur caché que je pourrais détourner du droit chemin ?
Il te faudrait, si j'ai bien compris, un opérateur binaire plus prioritaire que +, -, *, /, mais moins que (). D'après la table en bas de http://www.cplusplus.com/doc/tutorial/operators.html il n'y a que .* et ->* qui fassent l'affaire, mais ils font partie des rares qui ne peuvent pas être surchargés. :) Ceci dit, [] pourrait faire l'affaire...
Je ne suis sûrement pas le premier à écrire une telle bibliothèque. Comment font les autres ?
Je ne sais pas ce que font les autres, mais on peut imaginer: Polynome P = X[2] - 1 Polynome P = X_2 - 1 (avec X_N définit pour les N les plus courants) Polynome P = X<2>::value - 1 avec des template mais ça devient cryptique. Polynome P = pow(X, 2) - 1
-- Hopp Schweiz! Forza Korea! Go Togo!
Dommage.
Il n'y aurait pas un autre opérateur caché
que je pourrais détourner du droit chemin ?
Il te faudrait, si j'ai bien compris, un opérateur binaire plus
prioritaire que +, -, *, /, mais moins que ().
D'après la table en bas de
http://www.cplusplus.com/doc/tutorial/operators.html
il n'y a que .* et ->* qui fassent l'affaire, mais ils font partie des
rares qui ne peuvent pas être surchargés. :)
Ceci dit, [] pourrait faire l'affaire...
Je ne suis sûrement pas le premier à écrire
une telle bibliothèque. Comment font les autres ?
Je ne sais pas ce que font les autres, mais on peut imaginer:
Polynome P = X[2] - 1
Polynome P = X_2 - 1 (avec X_N définit pour les N les plus courants)
Polynome P = X<2>::value - 1 avec des template mais ça devient cryptique.
Polynome P = pow(X, 2) - 1
Il n'y aurait pas un autre opérateur caché que je pourrais détourner du droit chemin ?
Il te faudrait, si j'ai bien compris, un opérateur binaire plus prioritaire que +, -, *, /, mais moins que (). D'après la table en bas de http://www.cplusplus.com/doc/tutorial/operators.html il n'y a que .* et ->* qui fassent l'affaire, mais ils font partie des rares qui ne peuvent pas être surchargés. :) Ceci dit, [] pourrait faire l'affaire...
Je ne suis sûrement pas le premier à écrire une telle bibliothèque. Comment font les autres ?
Je ne sais pas ce que font les autres, mais on peut imaginer: Polynome P = X[2] - 1 Polynome P = X_2 - 1 (avec X_N définit pour les N les plus courants) Polynome P = X<2>::value - 1 avec des template mais ça devient cryptique. Polynome P = pow(X, 2) - 1
-- Hopp Schweiz! Forza Korea! Go Togo!
Etienne Rousee
"Fabien LE LEZ" a écrit ...
On 19 Dec 2005 08:50:45 +0100, Jean-Marc Bourguet :
Le cas d'une bibliotheque de polynome est un des cas ou ce serait a mon avis admissible sans grande contestation
Voire... a^b signifie-t-il "a exposant b" ou "le PPCM de a et b" ?
En maths, on utilise a^b pour le pgcd et le même à l'envers (un peu comme un v) pour le ppcm, mais ils sont là aussi prioritaires par rapport à + et -, et même * et /. Il est quand même plus courant en maths d'écrire pgcd(a,b) et ppcm(a,b). C'est d'ailleurs la notation utilisée en lycée, probablement parce que ^ est la puissance sur les calculatrices.
--
Etienne
"Fabien LE LEZ" <gramster@gramster.com> a écrit ...
On 19 Dec 2005 08:50:45 +0100, Jean-Marc Bourguet <jm@bourguet.org>:
Le cas d'une bibliotheque de polynome est un des cas ou
ce serait a mon avis admissible sans grande contestation
Voire... a^b signifie-t-il "a exposant b" ou "le PPCM de a et b" ?
En maths, on utilise a^b pour le pgcd et le même à l'envers
(un peu comme un v) pour le ppcm, mais ils sont là aussi
prioritaires par rapport à + et -, et même * et /.
Il est quand même plus courant en maths d'écrire pgcd(a,b)
et ppcm(a,b). C'est d'ailleurs la notation utilisée en lycée,
probablement parce que ^ est la puissance sur les
calculatrices.
On 19 Dec 2005 08:50:45 +0100, Jean-Marc Bourguet :
Le cas d'une bibliotheque de polynome est un des cas ou ce serait a mon avis admissible sans grande contestation
Voire... a^b signifie-t-il "a exposant b" ou "le PPCM de a et b" ?
En maths, on utilise a^b pour le pgcd et le même à l'envers (un peu comme un v) pour le ppcm, mais ils sont là aussi prioritaires par rapport à + et -, et même * et /. Il est quand même plus courant en maths d'écrire pgcd(a,b) et ppcm(a,b). C'est d'ailleurs la notation utilisée en lycée, probablement parce que ^ est la puissance sur les calculatrices.
--
Etienne
Marc Boyer
Le 19-12-2005, Etienne Rousee a écrit :
"Fabien LE LEZ" a écrit ...
On 19 Dec 2005 08:50:45 +0100, Jean-Marc Bourguet :
Le cas d'une bibliotheque de polynome est un des cas ou ce serait a mon avis admissible sans grande contestation
Voire... a^b signifie-t-il "a exposant b" ou "le PPCM de a et b" ?
En maths, on utilise a^b pour le pgcd et le même à l'envers (un peu comme un v) pour le ppcm, mais ils sont là aussi prioritaires par rapport à + et -, et même * et /.
C'est le type de notation qui dépend pas mal du contexte. En algèbre de Boole, / c'est 'et', et '/' signifie 'ou'. Dans le dioïde que je manipule actuellement, / c'est min et /, c'est max. Et par chance, dans le langage que j'utilise, on peut définir ses propres opérateurs.
Il est quand même plus courant en maths d'écrire pgcd(a,b) et ppcm(a,b). C'est d'ailleurs la notation utilisée en lycée, probablement parce que ^ est la puissance sur les calculatrices.
Et puis aussi parce que ^, c'est l'exposant en LaTeX, et que je pense qu'une vaste majorité des mathématiciens actuels écrivent leurs papiers en LaTeX.
Marc Boyer -- Entre le fort et le faible, c'est la liberte qui opprime et le droit qui libere. Henri Lacordaire, Dominicain
Le 19-12-2005, Etienne Rousee <etienne@rousee.org> a écrit :
"Fabien LE LEZ" <gramster@gramster.com> a écrit ...
On 19 Dec 2005 08:50:45 +0100, Jean-Marc Bourguet <jm@bourguet.org>:
Le cas d'une bibliotheque de polynome est un des cas ou
ce serait a mon avis admissible sans grande contestation
Voire... a^b signifie-t-il "a exposant b" ou "le PPCM de a et b" ?
En maths, on utilise a^b pour le pgcd et le même à l'envers
(un peu comme un v) pour le ppcm, mais ils sont là aussi
prioritaires par rapport à + et -, et même * et /.
C'est le type de notation qui dépend pas mal du contexte.
En algèbre de Boole, / c'est 'et', et '/' signifie 'ou'.
Dans le dioïde que je manipule actuellement, / c'est
min et /, c'est max.
Et par chance, dans le langage que j'utilise, on
peut définir ses propres opérateurs.
Il est quand même plus courant en maths d'écrire pgcd(a,b)
et ppcm(a,b). C'est d'ailleurs la notation utilisée en lycée,
probablement parce que ^ est la puissance sur les
calculatrices.
Et puis aussi parce que ^, c'est l'exposant en LaTeX,
et que je pense qu'une vaste majorité des mathématiciens
actuels écrivent leurs papiers en LaTeX.
Marc Boyer
--
Entre le fort et le faible, c'est la liberte qui opprime et le droit
qui libere. Henri Lacordaire, Dominicain
On 19 Dec 2005 08:50:45 +0100, Jean-Marc Bourguet :
Le cas d'une bibliotheque de polynome est un des cas ou ce serait a mon avis admissible sans grande contestation
Voire... a^b signifie-t-il "a exposant b" ou "le PPCM de a et b" ?
En maths, on utilise a^b pour le pgcd et le même à l'envers (un peu comme un v) pour le ppcm, mais ils sont là aussi prioritaires par rapport à + et -, et même * et /.
C'est le type de notation qui dépend pas mal du contexte. En algèbre de Boole, / c'est 'et', et '/' signifie 'ou'. Dans le dioïde que je manipule actuellement, / c'est min et /, c'est max. Et par chance, dans le langage que j'utilise, on peut définir ses propres opérateurs.
Il est quand même plus courant en maths d'écrire pgcd(a,b) et ppcm(a,b). C'est d'ailleurs la notation utilisée en lycée, probablement parce que ^ est la puissance sur les calculatrices.
Et puis aussi parce que ^, c'est l'exposant en LaTeX, et que je pense qu'une vaste majorité des mathématiciens actuels écrivent leurs papiers en LaTeX.
Marc Boyer -- Entre le fort et le faible, c'est la liberte qui opprime et le droit qui libere. Henri Lacordaire, Dominicain
Fabien LE LEZ
On Mon, 19 Dec 2005 10:11:12 +0100, Cyrille :
Ceci dit, [] pourrait faire l'affaire...
Mieux vaut lui garder la signification d'origine, puisqu'un polynôme est un tableau.
On Mon, 19 Dec 2005 10:11:12 +0100, Cyrille <cyrille@frsf.invalid>:
Ceci dit, [] pourrait faire l'affaire...
Mieux vaut lui garder la signification d'origine, puisqu'un polynôme
est un tableau.
Mieux vaut lui garder la signification d'origine, puisqu'un polynôme est un tableau.
Etienne Rousee
"Fabien LE LEZ" a écrit ...
On Mon, 19 Dec 2005 10:11:12 +0100, Cyrille :
Ceci dit, [] pourrait faire l'affaire...
Mieux vaut lui garder la signification d'origine, puisqu'un polynôme est un tableau.
J'ai pris un deque de monomes, mais c'est vrai, il y a la surcharge de l'opérateur []. Bon, je crois que je vais garder ^ et mettre des parenthèses un peu partout. D'un autre côté, ces parenthèses ne sont nécessaires ni dans le parser, ni dans l'affichage.
--
Etienne
"Fabien LE LEZ" <gramster@gramster.com> a écrit ...
On Mon, 19 Dec 2005 10:11:12 +0100, Cyrille <cyrille@frsf.invalid>:
Ceci dit, [] pourrait faire l'affaire...
Mieux vaut lui garder la signification d'origine, puisqu'un polynôme
est un tableau.
J'ai pris un deque de monomes, mais c'est vrai, il y a
la surcharge de l'opérateur [].
Bon, je crois que je vais garder ^ et mettre des
parenthèses un peu partout.
D'un autre côté, ces parenthèses ne sont nécessaires
ni dans le parser, ni dans l'affichage.
Mieux vaut lui garder la signification d'origine, puisqu'un polynôme est un tableau.
J'ai pris un deque de monomes, mais c'est vrai, il y a la surcharge de l'opérateur []. Bon, je crois que je vais garder ^ et mettre des parenthèses un peu partout. D'un autre côté, ces parenthèses ne sont nécessaires ni dans le parser, ni dans l'affichage.
--
Etienne
Fabien LE LEZ
On Mon, 19 Dec 2005 11:31:12 +0100, "Etienne Rousee" :
Bon, je crois que je vais garder ^ et mettre des parenthèses un peu partout.
... et si jamais tu oublies une parenthèse, tu auras un bug bien pénible.
On Mon, 19 Dec 2005 11:31:12 +0100, "Etienne Rousee"
<etienne@rousee.org>:
Bon, je crois que je vais garder ^ et mettre des
parenthèses un peu partout.
... et si jamais tu oublies une parenthèse, tu auras un bug bien
pénible.