[GH-ISSUE #193] [ App CALCULS ] ajout du modulo #70

Open
opened 2026-05-06 13:15:07 +02:00 by BreizhHardware · 9 comments

Originally created by @fmOOmf on GitHub (Mar 29, 2022).
Original GitHub issue: https://github.com/UpsilonNumworks/Upsilon/issues/193

Bonjour à toute l'équipe

J'ai peut être mal cherché mais je n'ai pas trouvé la fonction modulo dans l'application Calculs.
Il existe la fonction REM pour les entiers mais elle n'accepte pas les réels.
Or en particulier pour la trigonométrie, il peut être très utile de trouver l'angle "à 2 pi près".
Exemple : -5 pi/3 donne pi/3.

Suggestion : introduire la fonction mod (modulo) qui accepte les nombres reels.
Syntaxe proposée:
mod(x, y) calculerait x modulo y au sens mathématique.
mod(x, y, p) permettrait de choisir l'intervalle du résultat.
Le 3e paramètre p permettrait d'indiquer que l'on souhaite :

  • le résultat dans [ 0 y [ (p=0 : valeur par défaut)
  • le résultat dans ] -y/2 y/2 ] (p=1).

Ex1 : pour avoir le modulo sur [ 0 2pi [ :
mod( -7pi/3 , 2pi, 0) => 5pi/3
Ou
mod( -7pi/3 , 2pi) => 5pi/3

Ex2 : Pour avoir le résultat entre ] -pi. pi ] (choix par défaut de Upsilon pour le calcul des arguments complexes)
mod( -7pi/3 , 2pi , 1) => - pi/3

Nb :
si x et y sont des entiers avec (x > y), alors
mod(x, y) = rem(x, y)

Originally created by @fmOOmf on GitHub (Mar 29, 2022). Original GitHub issue: https://github.com/UpsilonNumworks/Upsilon/issues/193 Bonjour à toute l'équipe J'ai peut être mal cherché mais je n'ai pas trouvé la fonction modulo dans l'application `Calculs.` Il existe la fonction REM pour les entiers mais elle n'accepte pas les réels. Or en particulier pour la trigonométrie, il peut être très utile de trouver l'angle "à 2 pi près". Exemple : -5 pi/3 donne pi/3. Suggestion : introduire la fonction mod (modulo) qui accepte les nombres reels. Syntaxe proposée: ` mod(x, y)` calculerait x modulo y au sens mathématique. `mod(x, y, p)` permettrait de choisir l'intervalle du résultat. Le 3e paramètre p permettrait d'indiquer que l'on souhaite : - le résultat dans `[ 0 y [ ` (p=0 : valeur par défaut) - le résultat dans `] -y/2 y/2 ]` (p=1). Ex1 : pour avoir le modulo sur [ 0 2pi [ : `mod( -7pi/3 , 2pi, 0)` => 5pi/3 Ou `mod( -7pi/3 , 2pi)` => 5pi/3 Ex2 : Pour avoir le résultat entre ] -pi. pi ] (choix par défaut de Upsilon pour le calcul des arguments complexes) `mod( -7pi/3 , 2pi , 1)` => - pi/3 Nb : si x et y sont des entiers avec (x > y), alors mod(x, y) = rem(x, y)
Author
Owner

@Lauryy06 commented on GitHub (Apr 15, 2022):

Le modulo en lui même ne doit pas être compliqué à implémenter (même s'il ne pourra pas simplifier des expressions comprenant des inconnues), mais je ne comprends pas vraiment le troisième paramètre. Il ne peut prendre comme valeur que 0 ou 1 ?

<!-- gh-comment-id:1100320739 --> @Lauryy06 commented on GitHub (Apr 15, 2022): Le modulo en lui même ne doit pas être compliqué à implémenter (même s'il ne pourra pas simplifier des expressions comprenant des inconnues), mais je ne comprends pas vraiment le troisième paramètre. Il ne peut prendre comme valeur que 0 ou 1 ?
Author
Owner

@fmOOmf commented on GitHub (Apr 16, 2022):

Bonjour
oui, c'est ça.
Ma proposition (mais vous pouvez faire différemment) :

  • si p = 0, alors la fonction se comporte comme le modulo mathématique.
    C'est la valeur par défaut (p=0 s'il n'est pas passé en paramètre).
  • Si p = 1, alors, on a le fonctionnement qui permet de trouver l'angle comme le fait la fonction argument de Upsilon.

!! Attentions aux bornes des intervalles du résultat (inclus/exclus).

Si vous trouvez une syntaxe plus simple pour les élèves, n'hésitez pas !
:-)

<!-- gh-comment-id:1100599809 --> @fmOOmf commented on GitHub (Apr 16, 2022): Bonjour oui, c'est ça. Ma proposition (mais vous pouvez faire différemment) : - si p = 0, alors la fonction se comporte comme le modulo mathématique. C'est la valeur par défaut (p=0 s'il n'est pas passé en paramètre). - Si p = 1, alors, on a le fonctionnement qui permet de trouver l'angle comme le fait la fonction argument de Upsilon. !! Attentions aux bornes des intervalles du résultat (inclus/exclus). Si vous trouvez une syntaxe plus simple pour les élèves, n'hésitez pas ! :-)
Author
Owner

@fmOOmf commented on GitHub (Apr 16, 2022):

PS :
Le challenge sera de conserver des fractions de pi quand on sera en radians
Ex : 15pi/4 devra donner 7pi/4 pour p=0 et -pi/4 pour p=1
Après vous pouvez imaginer des résultats complemetaires comme pour cos et sin ...

<!-- gh-comment-id:1100601975 --> @fmOOmf commented on GitHub (Apr 16, 2022): PS : Le challenge sera de conserver des fractions de pi quand on sera en radians Ex : 15pi/4 devra donner 7pi/4 pour p=0 et -pi/4 pour p=1 Après vous pouvez imaginer des résultats complemetaires comme pour cos et sin ...
Author
Owner

@Lauryy06 commented on GitHub (Apr 16, 2022):

Je pense que c'est n'est pas très intuitif. A mon avis deux fonctions différentes, un modulo classique et un modulo "mesure principale" qui fonctionne dans ]−π;π] seraient plus adaptées.

<!-- gh-comment-id:1100641263 --> @Lauryy06 commented on GitHub (Apr 16, 2022): Je pense que c'est n'est pas très intuitif. A mon avis deux fonctions différentes, un modulo classique et un modulo "mesure principale" qui fonctionne dans ]−π;π] seraient plus adaptées.
Author
Owner

@fmOOmf commented on GitHub (Apr 16, 2022):

Oui, ce sera sans doute plus simple. Y a plus qu'à trouver les noms.
:-)

<!-- gh-comment-id:1100647534 --> @fmOOmf commented on GitHub (Apr 16, 2022): Oui, ce sera sans doute plus simple. Y a plus qu'à trouver les noms. :-)
Author
Owner

@Overengined commented on GitHub (Mar 24, 2023):

On pourrait les appeler "modulo trigonométrique" et "modulo standard" ?


We could call it "trigonetrical modulo" and "standard modulo" ?

<!-- gh-comment-id:1482373357 --> @Overengined commented on GitHub (Mar 24, 2023): On pourrait les appeler "modulo trigonométrique" et "modulo standard" ? ------ We could call it "trigonetrical modulo" and "standard modulo" ?
Author
Owner

@fmOOmf commented on GitHub (Apr 3, 2023):

Projetons-nous dans la peau du lycéen type. Qu'est-ce qui est le plus intuitif ?
mod(a,b) donne le résultat dans [0 b[.
Il fait mod(18,10) ça donne 8
Il fait mod (-7pi/3,2pi) ça donne 5pi/3
mod pour modulo, ça semble intuitif => Go mod pour le modulo standard selon moi.

Maintenant, quel nom pour la mesure principale de l'angle :

  • mp (mesure principale) ?
  • modt (modulo trigo comme tu le proposes)
  • modp (modulo principal) ?

L'avantage de modp ou modt c'est qu'on peut ré-utiliser la commande mod et la transformer en ajoutant une seule lettre ... et que par ordre alphabetique, il sera juste après mod.
J'ai un faible pour modp parce que le p rappelle bien "principal" de "mesure principale".

<!-- gh-comment-id:1494408375 --> @fmOOmf commented on GitHub (Apr 3, 2023): Projetons-nous dans la peau du lycéen type. Qu'est-ce qui est le plus intuitif ? **mod(a,b) donne le résultat dans [0 b[**. Il fait mod(18,10) ça donne 8 Il fait mod (-7pi/3,2pi) ça donne 5pi/3 mod pour modulo, ça semble intuitif => Go **mod** pour le modulo standard selon moi. Maintenant, quel nom pour la mesure principale de l'angle : - mp (mesure principale) ? - modt (modulo trigo comme tu le proposes) - modp (modulo principal) ? L'avantage de modp ou modt c'est qu'on peut ré-utiliser la commande mod et la transformer en ajoutant une seule lettre ... et que par ordre alphabetique, il sera juste après mod. J'ai un faible pour modp parce que le p rappelle bien "principal" de "mesure principale".
Author
Owner

@Overengined commented on GitHub (Apr 3, 2023):

J’aime l’idée de mettre mod() pour la fonction la plus susceptible d’être utilisée, c’est du bon design.
En revanche mettons nous de nouveau dans la peau d’un lycéen type comme tu le suggère avec beaucoup de perspicacité: je pense qu’il serait plus intéressant d’avoir le « t » de « trigonométrie » dans ma fonction, comme ça , paniqué dans un DS, suant à grosse goute et envisageant sérieusement le seppuku (oui bon j’exagère un peu, mais vous avez l’image), je saurais d’instinct à quoi j’ai affaire.

<!-- gh-comment-id:1494731536 --> @Overengined commented on GitHub (Apr 3, 2023): J’aime l’idée de mettre mod() pour la fonction la plus susceptible d’être utilisée, c’est du bon design. En revanche mettons nous de nouveau dans la peau d’un lycéen type comme tu le suggère avec beaucoup de perspicacité: je pense qu’il serait plus intéressant d’avoir le « t » de « trigonométrie » dans ma fonction, comme ça , paniqué dans un DS, suant à grosse goute et envisageant sérieusement le seppuku (oui bon j’exagère un peu, mais vous avez l’image), je saurais d’instinct à quoi j’ai affaire.
Author
Owner

@fmOOmf commented on GitHub (Apr 4, 2023):

Hello.
Je plussoie alors.
mod(a,b) : donnerait le résultat dans [0 b[.
modt(a) : donnerait le résultat dans ] -pi pi]

Avis aux courageux développeurs :-)

<!-- gh-comment-id:1495453738 --> @fmOOmf commented on GitHub (Apr 4, 2023): Hello. Je plussoie alors. mod(a,b) : donnerait le résultat dans [0 b[. modt(a) : donnerait le résultat dans ] -pi pi] Avis aux courageux développeurs :-)
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/Upsilon#70
No description provided.