C OPLREE SOURCE GOUNAND 11/04/21 21:15:27 6946 SUBROUTINE OPLREE(IPO1,ICALC, IPO2) IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) ************************************************************************ * * O P L R E E * ----------- * * FONCTION: * --------- * * EFFECTUE DIVERSES OP{RATIONS SUR UNE LISTE DE R{ELS. * * MODULES UTILISES: * ----------------- * -INC CCOPTIO -INC CCREEL -INC SMLREEL * * PARAMETRES: (E)=ENTREE (S)=SORTIE (+ = CONTENU DANS UN COMMUN) * ----------- * * IPO1 (E) POINTEUR SUR UN LISTREEL. * ICALC (E) NUM{RO DU TYPE DE CALCUL: * = 1 COSINUS. * = 2 SINUS. * = 7 EXPONENTIELLE. * = 8 LOGARITHME. * = 9 VALEUR ABSOLUE. * =10 COSINUS HYPERBOLIQUE * =11 SINUS HYPERBOLIQUE * =12 TANGENTE HYPERBOLIQUE * =13 FONCTION D'ERREUR ERF * IPO2 (S) POINTEUR SUR LE LISTREEL R{SULTAT. * = 0 , SI OP{RATION IMPOSSIBLE. * * AUTEUR, DATE DE CREATION: * ------------------------- * * LIONEL VIVAN 12 AVRIL 1988 * P. MANIGOT 05/09/88 AJOUT DE "EXP" ET "LOG". * L. VIVAN 18/07/90 AJOUT DE "SIN" ET "COS". * * LANGAGE: * -------- * * ESOPE + FORTRAN77 * ************************************************************************ * MLREEL = IPO1 SEGACT MLREEL LDIM = PROG(/1) JG = LDIM SEGINI MLREE1 IPO2 = MLREE1 * IF (ICALC.EQ.1) THEN DO 10 I = 1,LDIM XX = MLREEL.PROG(I) MLREE1.PROG(I) = COS(XX * XPI / 180.D0) 10 CONTINUE * END DO ELSE IF (ICALC.EQ.2) THEN DO 20 I = 1,LDIM XX = MLREEL.PROG(I) MLREE1.PROG(I) = SIN(XX * XPI / 180.D0) 20 CONTINUE * END DO ELSE IF (ICALC.EQ.7) THEN DO 70 I = 1,LDIM XX = MLREEL.PROG(I) MLREE1.PROG(I) = EXP(XX) 70 CONTINUE * END DO ELSE IF (ICALC.EQ.8) THEN DO 80 I = 1,LDIM XX = MLREEL.PROG(I) IF (XX.GT.0.D0) THEN MLREE1.PROG(I) = LOG(XX) ELSE CALL ERREUR (36) *+* NUMERO D'ERREUR PAS FIGNOLE. IPO2 = 0 RETURN END IF 80 CONTINUE * END DO ELSE IF (ICALC.EQ.9) THEN DO 90 I = 1,LDIM XX = MLREEL.PROG(I) MLREE1.PROG(I) = ABS(XX) 90 CONTINUE * END DO ELSE IF (ICALC.EQ.10) THEN DO 100 I = 1,LDIM XX = MLREEL.PROG(I) MLREE1.PROG(I) = COSH(XX) 100 CONTINUE * END DO ELSE IF (ICALC.EQ.11) THEN DO 110 I = 1,LDIM XX = MLREEL.PROG(I) MLREE1.PROG(I) = SINH(XX) 110 CONTINUE * END DO ELSE IF (ICALC.EQ.12) THEN DO 120 I = 1,LDIM XX = MLREEL.PROG(I) MLREE1.PROG(I) = TANH(XX) 120 CONTINUE * END DO ELSE IF (ICALC.EQ.13) THEN DO 130 I = 1,LDIM XX = MLREEL.PROG(I) YY = ERGAUS(XX) MLREE1.PROG(I) = YY 130 CONTINUE * END DO ELSE * EN FAIT, CE CAS NE PEUT PAS ARRIVER EN DEHORS DE LA PERIODE * DE TEST. IPO2 = 0 ENDIF * SEGDES,MLREE1,MLREEL * END