ddotpw
C DDOTPW SOURCE PV090527 25/11/25 21:15:07 12407 * * 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=masqa(idep)-1 * 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,masqa(idep+lon-1)-1 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=masqa(-jm) 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),-masqi(j)) 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.masqa(idep+lon-1)-1) 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,masqa(idep+lon-1) 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=masqa(jm) 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),masqi(jfin)) 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,masqi(jini+1)-idep+1) ifin=min(masqi(jfin+2)-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