Pergunta
Dizer, eu quero uma rotina de parar de uma vez de uma an é encontrado em uma matriz.Como posso fazer isso?
"se (matriz(i) .eq.NA) ..." parece não funcionar.Obrigado,
ATUALIZAÇÃO:
matriz é uma matriz de números em ponto flutuante, por exemplo.,
REAL ::arrya(35)
Solução
Se você está realmente olhando para NaN
s e você tem até uma data compilador, em seguida, o ieee_is_nan()
função deve fazer o truque.Eu acho que você vai precisar para use ieee_arithmetic
ou um dos outros intrínseca IEEE módulos.
Se o seu compilador não é tão nova, ela pode ter o comumente implementado, mas não-padrão isnan()
função.
Outras dicas
Você pergunta não é bem restrita.É array
uma matriz de seqüências de caracteres?exemplo:
character(len=20) :: array(40)
Se este for o caso, você deve ser capaz de fazer:
do i=1,40
if(array(i).eq."NA")then
exit
else
!do something else
endif
enddo
Se esta é uma matriz de números em ponto flutuante (e nao é definido para ser de algum ponto flutuante constante), você pode querer ter cuidado, pois as operações de ponto flutuante são raramente exata e erro de arredondamento pode causar um cálculo que seria matematicamente equivalente para avaliar a diferentes valores.Em outras palavras, a solução para este problema depende realmente de como NA
e array
são declaradas...