place3
C PLACE3 SOURCE CHAT 05/01/13 02:14:36 5004 ************************************************************************ * * P L A C E 3 * ----------- * * FONCTION: * --------- * * DONNER LA POSITION D'UN REEL DANS UNE LISTE DE REELS ORDONNES * EN ORDRE STRICTEMENT CROISSANT. * LE REEL PEUT NE PAS APPARTENIR A LA LISTE. * * MODULES UTILISES: * ----------------- * IMPLICIT INTEGER(I-N) -INC CCREEL * * PARAMETRES: (E)=ENTREE (S)=SORTIE (+ = CONTENU DANS UN COMMUN) * ----------- * * XLIST (E) LISTE DE REELS EN ORDRE STRICTEMENT CROISSANT. * IL (E) DEBUT DE LA PARTIE UTILE DE "XLIST". * JL (E) FIN DE LA PARTIE UTILE DE "XLIST". * RR (E) REEL A POSITIONNER DANS LA PARTIE (IL,JL) DE "XLIST". * IR (S) POSITION, DANS LA LISTE, DU REEL IMMEDIATEMENT * INFERIEUR (OU EGAL) A "RR". * = (IL-1) SI RR < XLIST(IL) * = JL SI RR > XLIST(JL) * * AR (S) DISTANCE RELATIVE DE "RR" AVEC SON VOISIN DANS LA * LISTE. PLUS PRECISEMENT: * * RR - XLIST(IR) * AR = ----------------------- * XLIST(IR+1) - XLIST(IR) * * XLIST(IL) - RR * OU ----------------------- SI IR=IL-1 * MIN(|XLIST(IL)|,|RR|) * * RR - XLIST(JL) * OU ----------------------- SI IR=JL * MIN(|RR|,|XLIST(JL)|) * * RQ: RR = (1-AR)*XLIST(IR) + AR*XLIST(IR+1) * (SAUF SI "IR" VAUT "(IL-1)" OU "JL"). * INTEGER IL,JL,IR REAL*8 XLIST(*),RR,AR * * VARIABLES: * ---------- * REAL*8 RR1 * * MODE DE FONCTIONNEMENT: * ----------------------- * * L'INDICE "IL" EST SUPPOSE BIEN CHOISI POUR QU'UNE RECHERCHE PAS A * PAS DANS LE SENS DES INDICES CROISSANTS SOIT LA METHODE LA PLUS * RAPIDE POUR POSITIONNER "RR". * * AUTEUR, DATE DE CREATION: * ------------------------- * * PASCAL MANIGOT 24 MARS 1988 * * LANGAGE: * -------- * * FORTRAN77 * ************************************************************************ * IR = JL * DO 100 I=IL,JL IF (XLIST(I) .GT. RR) THEN IR = I - 1 * EXIT GOTO 102 END IF 100 CONTINUE * END DO 102 CONTINUE * IF (IR .EQ. (IL-1) ) THEN RR1 = MIN( ABS(RR),ABS(XLIST(IL)) ) RR1 = MAX(RR1,XPETIT) AR = (XLIST(IL) - RR) / RR1 ELSE IF (IR .EQ. JL) THEN RR1 = MIN( ABS(RR),ABS(XLIST(JL)) ) RR1 = MAX(RR1,XPETIT) AR = (RR - XLIST(JL) ) / RR1 ELSE AR = (RR - XLIST(IR) ) / (XLIST(IR+1) - XLIST(IR) ) END IF * END
© Cast3M 2003 - Tous droits réservés.
Mentions légales