Télécharger ddotip.eso

Retour à la liste

Numérotation des lignes :

  1. C DDOTIP SOURCE PV 19/01/30 21:15:04 10089
  2. function ddotip(lon,val1,ind,val2)
  3. * produit scalaire sparse. ind est le tableau de pointeur.
  4. * si lon est negatif, on fait la boucle à l'envers.
  5. IMPLICIT INTEGER(I-N)
  6. IMPLICIT REAL*8 (A-H,O-Z)
  7. dimension val1(*),val2(*),ind(*)
  8. resu1=0.d0
  9. resu2=0.d0
  10. resu3=0.d0
  11. resu4=0.d0
  12. if (lon.gt.0) then
  13. do 10 i=0,lon-4,4
  14. resu1=resu1+val1(i+1)*val2(ind(i+1))
  15. resu2=resu2+val1(i+2)*val2(ind(i+2))
  16. resu3=resu3+val1(i+3)*val2(ind(i+3))
  17. resu4=resu4+val1(i+4)*val2(ind(i+4))
  18. 10 continue
  19. do 20 i=4*(lon/4)+1,lon
  20. resu1=resu1+val1(i)*val2(ind(i))
  21. 20 continue
  22. elseif (lon.lt.0) then
  23. lon=-lon
  24. do 21 i=lon,4*(lon/4)+1,-1
  25. resu1=resu1+val1(i)*val2(ind(i))
  26. 21 continue
  27. do 11 i=4*(lon/4)-4,0,-4
  28. resu1=resu1+val1(i+4)*val2(ind(i+4))
  29. resu2=resu2+val1(i+3)*val2(ind(i+3))
  30. resu3=resu3+val1(i+2)*val2(ind(i+2))
  31. resu4=resu4+val1(i+1)*val2(ind(i+1))
  32. 11 continue
  33. endif
  34. ddotip=resu1+resu2+resu3+resu4
  35. return
  36. end
  37.  
  38.  
  39.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales