C'est pour supporter l'argument axis de numpy.argmin ou numpy.argmax dans pythran. Le commit complet, à peu près autour de la bonne ligne, est là :
https://github.com/serge-sans-paille/pythran/pull/803/files#diff-b20072554ff33a1cd786318f40ff0368R110 (attention, réponse demandant un peu de connaissance de l'API numpy)
Comme le paramètre d'entrée est une expression-tableau de dimension N (paramètre template), et qu'on veut calculer argmin en suivant l'axe axis (paramètre non connu à la compilation), il faut générer les N patrons de boucle possibles suivant la valeur de l'axe.
Petit exemple pour N = 3, on peut vouloir générer (cas du min qui est un peu plus simple, mais c'est l'idée)
[^] # Re: Lisibilité
Posté par serge_sans_paille (site web personnel) . En réponse au journal Jouons avec le ``switch`` et C++17. Évalué à 8.
C'est pour supporter l'argument
axisdenumpy.argminounumpy.argmaxdans pythran. Le commit complet, à peu près autour de la bonne ligne, est là :
(attention, réponse demandant un peu de connaissance de l'API numpy)https://github.com/serge-sans-paille/pythran/pull/803/files#diff-b20072554ff33a1cd786318f40ff0368R110
Comme le paramètre d'entrée est une expression-tableau de dimension
N(paramètre template), et qu'on veut calculerargminen suivant l'axeaxis(paramètre non connu à la compilation), il faut générer les N patrons de boucle possibles suivant la valeur de l'axe.Petit exemple pour N = 3, on peut vouloir générer (cas du min qui est un peu plus simple, mais c'est l'idée)
le code pointé plus haut génère ces différentes boucles quelque soit
N, dans le cas deargmin, en gardant un typage correct.Je ne sais pas si je suis clair :-/