ddotpw
C DDOTPW SOURCE PV090527 23/01/09 21:15:04 11549 * * produit scalaire utilisant imasq pour savoir quand operer * IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) -INC CCHOLE logical nul dimension val1(*),val2(*),imasq(*) if (lon.le.0) then return endif pt=0.d0 jini=idep/masdim * write (6,*) ' entree dans ddotpw ',idep,lon 5 continue * write (6,*) ' apres 5 dans ddotpw',jini,imasq(jini+1) jinii=jini nul=.false. *** if (imasq(jini+1).lt.0) jini=-imasq(jini+1)/masdim+1 6 continue j=jini do 10 j=jini,(idep+lon-1)/masdim jm=imasq(j+1) if (jm.gt.0) goto 20 if (jm.eq.0) goto 10 * write (6,*) ' acc 1 ',jini,-imasq(j+1)/masdim+1 jinio=-jm/masdim+1 if (jinio.gt.j+jacc) then ** if (j-jini.gt.100) write (6,*) ' rien trouve 2 jini ',jini,j jini=jinio goto 6 endif 10 continue ** if (j-jini.gt.100) write (6,*) ' rien trouve jini ',jini,j nul=.true. 20 continue nmasq=min(imasq(j-1+1),-(j-1)*masdim) do jj=jinii,j-1 if (imasq(jj+1).le.nmasq) goto 22 imasq(jj+1)=nmasq enddo 22 continue * tous les masques nuls if (nul) goto 100 jini=j jfines=jini+1 jfin=jfines if (jfines.gt.(idep+lon-1)/masdim) goto 32 * write (6,*) ' apres 21 dans ddotpw ',j,imasq(jfines+1) *** if (imasq(jfines+1).gt.1) jfines=imasq(jfines+1)/masdim+1 31 continue jfin=jfines do 30 jfin=jfines,(idep+lon-1)/masdim jm=imasq(jfin+1) if (jm.le.0) goto 40 if (jm.eq.1) goto 30 * write (6,*) ' acc 2 ',idep,jfines,imasq(jfin+1)/masdim+1 jfineo=jm/masdim+1 if (jfineo.gt.jfin+jacc) then jfines=jfineo goto 31 endif 30 continue ** if (jfin-jfines.gt.10) write (6,*) 'rien trouve jfin ', ** > jfin,jfines 40 continue nmasq=max(imasq(jfin-1+1),(jfin-1)*masdim) do jj=j,jfin-1 if (imasq(jj+1).ge.nmasq) goto 33 imasq(jj+1)=nmasq enddo 33 continue 32 continue jfin=jfin-1 ideb=max(1,jini*masdim-idep+1) ifin=min((jfin+1)*masdim-idep,lon) * write (6,*) ' ddotpw ideb ifin lon ',ideb,ifin,lon,jini,jfines, * > jfin ** do i=ideb,ifin ** pt=pt+val1(i)*val2(i) ** enddo lonl=ifin-ideb+1 if (lonl.gt.0) then nbo=nbo+lonl if (indeb.gt.ifin+100000) write (6,*) ' ddotpw indeb ifin ', > ideb,ifin endif if (ifin.ge.lon) goto 100 jini=jfin+1 goto 5 100 continue ddotpw=pt return end
© Cast3M 2003 - Tous droits réservés.
Mentions légales