• # Permutation sans variable intermédiaire

    Posté par (site web personnel) . En réponse au message Permutation "sure" de pointeurs en Fortran. Évalué à 1. Dernière modification le 10 janvier 2014 à 14:21.

    Je n'y connais absolument rien en Fortran, donc ce qui va suivre est peut-être, voire probablement, totalement inapplicable.

    Le fait est qu'il y a moyen de permuter deux entiers sans passer par un troisième, avec l'opérateur XOR. En reprenant l'exemple en question, à la sauce C (^ étant l'opérateur XOR bit à bit) :

     p2 = p1 ^ p2;
     p1 = p2 ^ p1;
     p2 = p1 ^ p2;
    

    Suite à une recherche rapide sur le Web, Il semblerait que gfortran ai une opérateur XOR bit à bit ('IEOR', d'après ce que j'ai trouvé). Évidemment, cela ne suffit pas, car, s'il n'est pas possible d'appliquer cet opérateur directement sur des pointeurs (ce qui ne m'étonnerait pas outre mesure), il faut réussir à 'convertir' des pointeurs en entiers (sous condition que ces derniers ai la bonne taille) et vice-versa...

    Zelbinium: pour la génération qui crée, pas celle qui scrolle...