1
C/MEMBR ADD NAME=DMPTLD,SSI=0
3
subroutine dmptld(pm1,d1,ld1,pm2,d2,m,n)
5
c cette routine determine la matrice polynomiale :
6
c z**n*pm(1/z)' ou n est le degre maximum des elements de pm
7
c et z la variable formelle. pm a coefficients reels
10
c subroutine dmptld(pm1,d1,ld1,pm2,d2,m,n)
11
c double precision pm1(*),pm2(*)
12
c integer d1(*),d2(n,m),m,n,iw(n)
14
c pm1 : tableau reel contenant les coefficients des polynomes,
15
c le coefficient de degre k du polynome pm1(i,j) est range
16
c dans pm1( d1(i + (j-1)*ld1 + k) )
17
c pm1 doit etre de taille au moins d1(ld1*n+1)-d1(1)
18
c d1 : tableau entier de taille ld1*n+1, si k=i+(j-1)*ld1 alors
19
c d1(k)) contient l'adresse dans pm1 du coeff de degre 0
20
c du polynome pm1(i,j). Le degre du polynome pm1(i,j) vaut:
22
c ld1 : entier definissant le rangement dans d1
24
c pm2,d2 : definitions similaires a celles de pm1,d1, ld2
25
c est suppose egal a n
26
c m : nombre de ligne de la matrice pm1
27
c n : nombre de colonne de matrice pm1
31
double precision pm1(*),pm2(*),norm,dasum
32
integer d1(*),d2(*),m,n
34
c determination du degre maxi
43
norm=dasum(n1-1,pm1(l1),1)
45
if(abs(pm1(l1+n1-1))+norm.le.norm) goto 10
61
if(n1.lt.nmax) call dset(nmax-n1,0.0d+0,pm2(l2),1)
62
call dcopy(n1,pm1(d1(i1)),1,pm2(l2+nmax-n1),-1)