subroutine promal (ama,xp,yp,zp,xr,yr,zr,ier) c* c*********************************************************************** c* c* "Copyright [c] CNES 98 - tous droits reserves" c* ********************************************** c* c*PRO MAGLIB c* c*VER 99.03.31 - V 1.0 c*VER 01.06.05 - V 2.0 c*VER 03.01.06 - V 2.1 c* c*AUT spec. CNES - JC KOSIK - janvier 1991 c*AUT port. CISI c* c*ROL Theme : Calculs mathematiques c*ROL Calcul du produit d'une matrice colonne (3) par c*ROL une matrice carree (3,3). c* c*PAR ama (I) : matrice (3,3) multiplicatrice c* c*PAR xp (I) : composante en x de la matrice colonne multiplicande c*PAR yp (I) : composante en y de la matrice colonne multiplicande c*PAR zp (I) : composante en z de la matrice colonne multiplicande c* c*PAR xr (O) : composante en x de la matrice resultat c*PAR yr (O) : composante en y de la matrice resultat c*PAR zr (O) : composante en z de la matrice resultat c* c*PAR ier (O) : code de retour c* c*NOT ier : sans objet c* c*NOT le produit de matrices s'effectue dans l'ordre suivant : c*NOT t t c*NOT (xr, yr, zr) = [ ama ] * (xp, yp, zp) c* c*NOT Pour une utilisation homogene dans de nombreux sous programmes c*NOT les elements (xp,yp,zp) et (xr,yr,zr) correspondent aux 3 emes c*NOT colonnes de matrices de travail carrees d'ordre 2. c* c*INF utilise : sans objet c* c*HST version 1.0 - 99.03.31 - creation de la maglib au CDPP c*HST version 2.0 - 01.06.05 - correction de commentaires de code c*HST version 2.1 - 03.01.06 - corrections en compilation avec g77 c* c*********************************************************************** c* implicit none c c --------------------------------- c*FON Declaration identificateur rcs_id c --------------------------------- c character rcs_id*100 c c -------------------------- c*FON Declaration des parametres c -------------------------- c double precision ama(3,3) double precision xp, yp, zp double precision xr, yr, zr integer ier c c --------------------------------- c*FON Declaration des variables locales c --------------------------------- c integer i,k c*LOC i,k : indices de boucles c double precision xma(3),yma(3) c*LOC Variables de travail intermediaires c SAVE c c --------------------------------- c*FON Affectation identificateur rcs_id c --------------------------------- c data rcs_id /" >$Id$"/ c c ****************** c Debut de programme c ****************** c ier = 0 c xma(1) = xp xma(2) = yp xma(3) = zp c do 10 i = 1, 3 yma(i) = 0.d0 do 20 k = 1, 3 yma(i) = yma(i) + ama(i,k) * xma(k) 20 continue 10 continue c xr = yma(1) yr = yma(2) zr = yma(3) c c **************** c Fin de programme c **************** c return end