Dans un code Fortran, j'ai un tableau a
avec des valeurs allant uniformément de 0.0
à 1.2
et je cherche l'indice de la valeur qui est la plus proche de 1.0
.Quelles sont les méthodes pour trouver l'élément d'un tableau contenant une valeur réelle spécifique?
Il ne semble pas y avoir de intrinsics de le faire en Fortran, donc je fait une solution de contournement hacky avec MINLOC: (notez que temp
est la même forme que a
)
do i=1,n
temp(i) = 1.0 - a(i)
end do
loc = 0 !note that loc is an integer array, declared as 'loc(1)'
index_1 = minloc(abs(temp(:))) !this is the index of a closest to 1.0
Cela semble faire l'astuce.
Je suis intéressé par d'autres méthodes pour y parvenir, ont donc quelques questions:
- Comment fonctionne MINLOC?
- Y a-t-il d'autres routines pour y arriver directement (c'est-à-dire sans avoir à faire un second tableau)?
- Comment cela est-il géré dans d'autres langues?
Merci.
EDIT: je l'ai déjà lié à this article, citant motivation partielle de trouver des alternatives à MINLOC
, mais ont retiré comme certains commentateurs ont souligné qu'il est un peu hors de propos. L'inclure a semblé nuire à mon but qui est de trouver des alternatives à cette méthode.
Cet article de blog semble vraiment me comparer des pommes et des oranges. Les méthodes comparées font vraiment des choses différentes. Bien sûr, le premier sera le plus rapide s'il recherche une correspondance exacte et quitte tôt. Mais cela ne fonctionnera pas s'il n'y a pas de correspondance exacte. – skagedal
Hm, merci d'avoir signalé cela, je vais éditer ma question. – Makkasu