Télécharger minmax.eso

Retour à la liste

Numérotation des lignes :

  1. C MINMAX SOURCE CB215821 19/06/17 21:15:18 10229
  2. SUBROUTINE MINMAX (IPTR,AMINI,AMAXI)
  3. *
  4. *=============================================================
  5. * IPTR (E/S) POINTEUR SUR UNE LISTE DE REELS
  6. * AMINI (S) MINI DE LA LISTE
  7. * AMAXI (S) MAXI DE LA LISTE
  8. *=============================================================
  9. *
  10. IMPLICIT INTEGER(I-N)
  11. IMPLICIT REAL*8 (A-H,O-Y)
  12.  
  13.  
  14. -INC PPARAM
  15. -INC CCOPTIO
  16. -INC SMLREEL
  17. -INC CCREEL
  18.  
  19. XGPOS = XGRAND
  20. XGNEG =-XGRAND
  21.  
  22. *-----activation
  23. MLREEL=IPTR
  24. SEGACT MLREEL
  25. JG=PROG(/1)
  26.  
  27. *-----initialisation
  28. IDEB = 0
  29. 2 CONTINUE
  30. IDEB = IDEB + 1
  31. IF(IDEB.gt.JG) THEN
  32. WRITE(IOIMP,*) 'le listreel ',IPTR,
  33. & ' n a pas de valeur reelle finie !'
  34. MOTERR(1:8)='EVOLUTIO'
  35. CALL ERREUR(1012)
  36. ENDIF
  37. XI=PROG(IDEB)
  38. IF((XI.LT.0.D0).EQV.(XI.GE.0.D0)) THEN
  39. WRITE(IOIMP,*) IDEB,'eme valeur du listreel',IPTR,'est un NaN!'
  40. GOTO 2
  41. ENDIF
  42. IF(XI.GT.XGPOS) GOTO 2
  43. IF(XI.LT.XGNEG) GOTO 2
  44. AMINI=PROG(IDEB)
  45. AMAXI=PROG(IDEB)
  46.  
  47. *-----on boucle sur les autres valeurs
  48. IFIN=PROG(/1)
  49. IF(IDEB.GE.IFIN) RETURN
  50.  
  51. DO 1 I=IDEB+1,IFIN
  52. XI=PROG(I)
  53. * Verification que les valeurs entrees ne sont pas des NaN
  54. IF((XI.LT.0.D0).EQV.(XI.GE.0.D0)) THEN
  55. WRITE(IOIMP,*) I,'eme valeur du listreel',IPTR,'est un NaN!'
  56. IF(IERPER.GE.3) GOTO 1
  57. MOTERR(1:8)='EVOLUTIO'
  58. CALL ERREUR(1012)
  59. IF(IERR.NE.0) RETURN
  60. GOTO 1
  61. ENDIF
  62. * Si Infini, on ne prend pas en compte pour le min et max
  63. * on prend XSGRAND et pas XGRAND car DESSIN en simple precision
  64. c write(ioimp,*) I,XI,'>',XGPOS,(XI.GE.XGPOS)
  65. c write(ioimp,*) I,XI,'<',XGNEG,(XI.GE.XGNEG)
  66. IF(XI.GE.XGPOS) GOTO 1
  67. IF(XI.LE.XGNEG) GOTO 1
  68. * on realise ici le travail
  69. IF(AMINI.GT.XI) AMINI=XI
  70. IF(AMAXI.LT.XI) AMAXI=XI
  71. 1 CONTINUE
  72.  
  73. END
  74.  
  75.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales