1
subroutine dlslv(a,na,n,b,nb,m,w,rcond,ierr,job)
3
c ce sous programme effectue:
4
c la factorisation lu de la matrice a si job=0
5
c la resolution du systeme a*x=b si job=1
6
c la resolution du systeme x*a=b si job=2
7
c l'inversion de a si job=3
10
c subroutine dlslv(a,na,n,b,nb,m,w,rcond,ierr,job)
11
c a:tableau de taille na*n contenant la matrice a
12
c apres execution a contient la factorisation lu
13
c na:dimensionnement de a dans le programme appelant
14
c n:dimensions de la matrice a
15
c b:tableau de taille nb*m contenant la matrice b et le resultat x
16
c nb:dimensionnement de b dans le programme appelant
17
c m:nombre de colonnes de b si job=1 ;ou nombre de ligne si job=2
18
c w:tableau de travail de taille n+adr(n,1)
19
c rcond:reel contenant le conditionnement inverse de a
20
c ierr:indicateur de deroulement
23
c ierr=-1 rcond negligeable
25
c si a et w n'ont pas ete modifies on peut reentrer dans le
26
c sous programme avec une nouvelle matrice b (job=-1 ou job=-2)
28
c!sous programmes appeles
29
c dgeco dgesl dgedi (linpack)
35
double precision a(na,n),b(*),w(*),rcond,dt(2)
46
call dgeco(a,na,n,w,rcond,w(k1))
47
if(rcond.eq.0.0d+0) goto 70
48
if(rcond+1.0d+0.eq.1.0d+0) ierr=-1
52
20 if(abs(job).eq.2) goto 40
55
call dgesl(a,na,n,w,b(jb),0)
60
call dcopy(n,b(j),nb,w(k1),1)
61
call dgesl(a,na,n,w,w(k1),1)
62
call dcopy(n,w(k1),1,b(j),nb)
65
60 call dgedi(a,na,n,w,dt,w(k1),1)