rem modulaire

Bugs

Modérateur : xcasadmin

Répondre
frederic han
Messages : 1139
Inscription : dim. mai 20, 2007 7:09 am
Localisation : Paris
Contact :

rem modulaire

Message par frederic han » mer. déc. 08, 2010 10:03 pm

Salut j'ai quelques remarques sur le modulaire:

P:=(2*x^2+1)%7

alors

rem(x^(2^15),P) fait planter mon xcas (32 bits 0.9.1)
(avec les tres grandes valeurs on voit bien que ca n'est pas evalue, mais

rem(x^(2^16),P) donne toujours 1
alors que par powmod on trouve 2.

powmod(x,2^16,7,P%0,x)

powmod attend vraiment des coeff entiers, on doit mettre ce %0, il y a t'il un equivalent pour les objets modulaire?

Fred


y a t'il un powmod pour des poly modulaires?

parisse
Messages : 5894
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: rem modulaire

Message par parisse » ven. déc. 10, 2010 2:41 pm

salut,

je n'ai pas de réponse satisfaisante à te donner pour le moment. Je pense que le mieux serait de modifier powmod pour accepter un polynôme à coefficients modulaires en 3ème argument, ce qui donnerait
powmod(x,2^16,P)

parisse
Messages : 5894
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: rem modulaire

Message par parisse » lun. déc. 13, 2010 10:09 am

je viens de modifier le source, en fait c'etait simple

Code : Tout sélectionner

diff usual.cc usual.cc~
3025,3029c3025,3026
<       m=findmod(m);
<       if (is_zero(m)){
<       // find m inside a
<       m=findmod(a);
<       }
---
>       // find m inside a
>       m=findmod(a);
comme ca il accepte powmod(x,2^16,P) si P a des coeffs modulaires.

frederic han
Messages : 1139
Inscription : dim. mai 20, 2007 7:09 am
Localisation : Paris
Contact :

Re: rem modulaire

Message par frederic han » lun. déc. 13, 2010 7:28 pm

Oui ca marche. Merci.

en revanche il ne veut pas d'une autre variable que x en argument suivant:

Ex: powmod(y,2^(2^5),Q%7,y)

J'ai aussi remarque cela:

P%7 fonctionne bien comme P % 7
en revanche

p:=7;
P%p donne une erreur de syntaxe il veut P % p

plus genant:

P%nextprime(10^3) plante xcas il faut faire: P % nextprime(10^3)

Fred

parisse
Messages : 5894
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: rem modulaire

Message par parisse » lun. déc. 13, 2010 9:12 pm

Je regarde demain pour la variable. Par contre pour le % je ne peux plus changer, en fait % peut s'utiliser dans un nom de symbole/commande s'il commence par un caractère alphabétique mais pas numérique, et c'est pour ça que l'espace est obligatoire sauf avant un nombre, il faudra quand même que je regarde pourquoi ça plante.

parisse
Messages : 5894
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: rem modulaire

Message par parisse » mar. déc. 14, 2010 10:10 am

Pour la variable, ca donne

Code : Tout sélectionner

...
    bool modafter=false;
    p=unmod(m);
    m=findmod(m);
    if (is_zero(m)){
      // find m inside a
      m=findmod(a);
    }
    modafter=!is_zero(m);
    a=unmod(a);
    if (modafter && s>3)
      var=v[3];
    if (!modafter && s>3){
      p=v[3];
      if (is_integer(p)){
	p=v[2]; m=v[3]; 
      }
    }
    if (s>=5)
      var=v[4];
...
Pas eu de plantage pour P%nextprime(10^3), juste une erreur de syntaxe. Par contre, j'ai alors un segfault quand je quitte xcas, mais pas tracable par gdb.

parisse
Messages : 5894
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: rem modulaire

Message par parisse » mar. déc. 14, 2010 11:22 am

Apparamment, c'est la fonction fl_ask de FLTK qui n'aime pas le % dans le message d'erreur, je viens de le supprimer et ca n'a plus l'air de planter. J'update le source.

frederic han
Messages : 1139
Inscription : dim. mai 20, 2007 7:09 am
Localisation : Paris
Contact :

Re: rem modulaire

Message par frederic han » mer. déc. 15, 2010 12:55 pm

Salut,

J'ai l'impression que la modif de powmod a un effet de bord lorsque P n'est pas unitaire:

P:=(x^5-3)
powmod(x,6,7,P,x) fonctionne
mais avec P:=2*(x^5-3) ca donne: Not invertible Error: Bad Argument Value

alors que powmod(x,6,P % 7) fonctionne

Fred

parisse
Messages : 5894
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: rem modulaire

Message par parisse » mer. déc. 15, 2010 4:15 pm

En effet, il faut rajouter m=v[2] ligne 3033 de usual.cc

Code : Tout sélectionner

...
    if (!modafter && s>3){
      m=v[2];
      p=v[3];
      if (is_integer(p)){
...

frederic han
Messages : 1139
Inscription : dim. mai 20, 2007 7:09 am
Localisation : Paris
Contact :

Re: rem modulaire

Message par frederic han » mer. déc. 15, 2010 7:31 pm

Cette fois ca a l'air de bien marcher. :lol:

Fred

Répondre