[updated 30.Oct.1998]
SUBROUTINE BMVC (NBLIGM,NULAPL,IPLAGL,NBCOLM,NULAPU,IPLAGU
& ,ITYSYM,TYMATR,MCMATR,MCL,MCU,TYVECT,MCVECT
& ,TYRESU,MCRESU,RST,CST)
Auteur : D.Martin (Avril 1993)
Derniere modification : D.Martin le 9 Avril 1993
Produit MxV d'une matrice M stockee 'BiMorse' par un vecteur
ATTENTION : Le vecteur resultat n'est pas initialise a zero dans ce s.p.
** Arguments d'entree ***
NBLIGM nombre de lignes de la matrice
NULAPL tableau des numeros de derniere plage de chaque ligne
IPLAGE numeros de 1ere colonne de chaque plage et longueurs cumulees
NBCOLM nombre de colonnes de la matrice
NULAPU tableau des numeros de derniere plage de chaque colonne
IPLAGU numeros de 1ere ligne de chaque plage et longueurs cumulees
ITYSYM indicareur de symetrie de la matrice
TYMATR type (reel ou complexe) de la matrice
MCMATR adresse de la diagonale de la matrice dans le super-tableau ad hoc
MCL adresse de la partie triangulaire inferieure de la matrice
MCU adresse de la partie triangulaire superieure de la matrice
TYVECT type (reel ou complexe) du vecteur operande
MCVECT adresse du vecteur operande
TYRESU type (reel ou complexe) du vecteur resultat
MCRESU adresse du vecteur resultat
RST,CST super-tableau considere reel ou complexe
CHARACTER*(*) TYMATR,TYVECT,TYRESU
INTEGER NBLIGM,NBCOLM,NULAPL(*),IPLAGL(*),NULAPU(*),IPLAGU(*)
& ,ITYSYM,MCMATR,MCL,MCU,MCVECT,MCRESU
REAL RST(*)
COMPLEX CST(*)
INTEGER INDSYM
CALL BMLVC (NBLIGM,NULAPL,IPLAGL,TYMATR,MCL
& ,TYVECT,MCVECT,TYRESU,MCRESU,RST,CST)
IF (ITYSYM.EQ.INDSYM (' ')) THEN
CALL DVC (MIN(NBLIGM,NBCOLM),TYMATR,MCMATR
& ,TYVECT,MCVECT,TYRESU,MCRESU,RST,CST)
CALL BMUVC (NBCOLM,NULAPU,IPLAGU,TYMATR,MCU
& ,TYVECT,MCVECT,TYRESU,MCRESU,RST,CST)
ELSEIF (ITYSYM.EQ.INDSYM ('SYMETRIQUE')) THEN
CALL DVC (NBLIGM,TYMATR,MCMATR
& ,TYVECT,MCVECT,TYRESU,MCRESU,RST,CST)
CALL BMUVC (NBLIGM,NULAPL,IPLAGL,TYMATR,MCL
& ,TYVECT,MCVECT,TYRESU,MCRESU,RST,CST)
ELSEIF (ITYSYM.EQ.INDSYM ('AUTOADJOINTE')) THEN
CALL DVC (NBLIGM,TYMATR,MCMATR
& ,TYVECT,MCVECT,TYRESU,MCRESU,RST,CST)
CALL BMALVC (NBLIGM,NULAPL,IPLAGL,TYMATR,MCL
& ,TYVECT,MCVECT,TYRESU,MCRESU,RST,CST)
ELSEIF (ITYSYM.EQ.INDSYM ('ANTISYMETRIQUE')) THEN
CALL TMDANT (NBLIGM,TYVECT,MCVECT,RST,CST
& ,TYVECT,MCVECT,RST,CST)
CALL BMUVC (NBLIGM,NULAPL,IPLAGL,TYMATR,MCL
& ,TYVECT,MCVECT,TYRESU,MCRESU,RST,CST)
CALL TMDANT (NBLIGM,TYVECT,MCVECT,RST,CST
& ,TYVECT,MCVECT,RST,CST)
ELSEIF (ITYSYM.EQ.INDSYM ('ANTIADJOINTE')) THEN
CALL TMDANT (NBLIGM,TYVECT,MCVECT,RST,CST
& ,TYVECT,MCVECT,RST,CST)
CALL BMALVC (NBLIGM,NULAPL,IPLAGL,TYMATR,MCL
& ,TYVECT,MCVECT,TYRESU,MCRESU,RST,CST)
CALL TMDANT (NBLIGM,TYVECT,MCVECT,RST,CST
& ,TYVECT,MCVECT,RST,CST)
ENDIF
END !BmVc
bmvc est appelé dans (3 procédures)