Page 1 sur 1

rem modulaire

Publié : mer. déc. 08, 2010 10:03 pm
par frederic han
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?

Re: rem modulaire

Publié : ven. déc. 10, 2010 2:41 pm
par parisse
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)

Re: rem modulaire

Publié : lun. déc. 13, 2010 10:09 am
par parisse
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.

Re: rem modulaire

Publié : lun. déc. 13, 2010 7:28 pm
par frederic han
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

Re: rem modulaire

Publié : lun. déc. 13, 2010 9:12 pm
par parisse
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.

Re: rem modulaire

Publié : mar. déc. 14, 2010 10:10 am
par parisse
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.

Re: rem modulaire

Publié : mar. déc. 14, 2010 11:22 am
par parisse
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.

Re: rem modulaire

Publié : mer. déc. 15, 2010 12:55 pm
par frederic han
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

Re: rem modulaire

Publié : mer. déc. 15, 2010 4:15 pm
par parisse
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)){
...

Re: rem modulaire

Publié : mer. déc. 15, 2010 7:31 pm
par frederic han
Cette fois ca a l'air de bien marcher. :lol:

Fred