63Fermer65
PolluxLe 18/05/2008 à 20:43
PpHd (./63) :
Pollux (./62) :
Ben l'incohérence c'est que si tu prends la position "on va faire absolument tous les calculs mod p, sauf bien sûr pour les exposants où ça n'aurait pas de sens", alors c'est parfaitement logique modulo 3 de réduire sqrt(4) en sqrt(1) = 1
Oui (Au passage, la position est "je considère l'expression dans Z/pZ(x,...z)"

Et c'est même un peu plus gros que ça, puisque tu considères que f(42) est équivalent à x ou z, et puis évidemment tu rajoutes l'exponentiation et tout.
Pollux (./62) :
C'est radicalement différent de la position "ah non surtout pas on ne peut pas simplifier sqrt(4) en sqrt(1), parce que ce sont deux entiers différents", qui considère d'abord les entiers puis prend la classe mod p de cet entier, et s'apparente donc plus à rem() qu'à mod().

Mais ce n'est pas cette position là. Dans 4^n, on ne sait pas si n est complexe, donc on ne fait rien (4^I % 3, je ne sais pas trop ce que ca pourrait donner).

Euh je veux bien que tu t'inquiètes des puissances complexes dans R, mais modulo p ? C'est possible que a^I puisse avoir un sens modulo p ? (si a!=1)
Pour les rationnels, le problème est le choix de la racine dans Z/pZ. Je n'ai pas trouvé un moyen de spécifier quelle racine retourner à 4^(1/2) % 3 (J'ai pas passé beaucoup de temps non plus). Ensuite, tu pourras me dire qu'à l'heure actuelle, ce n'est pas très consistant. Je suis d'accord c'est connu, et c'est dans la TODO list. Le même problème survient sans modulo dans 1^(1/8) par exemple. Je dois retourner 1 ou la racine 8-ième de l'unité ?

Ben le cas où tu prends la racine de 1 est justement le cas le plus simple : la racine la "mieux" est 1 -- de même que dans R, on prend les racines positives parce qu'elles sont "mieux". Donc pour 4^n, t'as pas trop de questions à te poser parce que 1^n = 1.


Enfin bon, toujours est-il que j'aime pas trop l'idée qu'on prend une expression dans C et puis tout d'un coup on lui colle un opérateur mod() qui lui change complètement la sémantique, ce qui fait que le résultat changera selon qu'on fait une évaluation partielle ou pas avant l'appel à mod(). Bref...