File: dcopy.f

package info (click to toggle)
x13as 1.1-B39-2
  • links: PTS, VCS
  • area: non-free
  • in suites: bullseye
  • size: 8,700 kB
  • sloc: fortran: 110,641; makefile: 14
file content (46 lines) | stat: -rw-r--r-- 1,412 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
**==dcopy.f    processed by SPAG 4.03F  at 09:47 on  1 Mar 1994
      SUBROUTINE dcopy(N,Dx,Incx,Dy,Incy)
      IMPLICIT NONE
c     ------------------------------------------------------------------
      DOUBLE PRECISION Dx(*),Dy(*)
      INTEGER i,Incx,Incy,ix,iy,m,mp1,N
c     ------------------------------------------------------------------
      IF(N.gt.0)THEN
       IF(Incx.ne.1.or.Incy.ne.1)THEN
        ix=1
        iy=1
        IF(Incx.lt.0)ix=(1-N)*Incx+1
        IF(Incy.lt.0)iy=(1-N)*Incy+1
c     ------------------------------------------------------------------
        DO i=1,N
         Dy(iy)=Dx(ix)
         ix=ix+Incx
         iy=iy+Incy
        END DO
c     ------------------------------------------------------------------
       ELSE
        m=mod(N,7)
c     ------------------------------------------------------------------
        IF(m.ne.0)THEN
         DO i=1,m
          Dy(i)=Dx(i)
         END DO
        END IF
c     ------------------------------------------------------------------
        IF(N.ge.7)THEN
         mp1=m+1
         DO i=mp1,N,7
          Dy(i)=Dx(i)
          Dy(i+1)=Dx(i+1)
          Dy(i+2)=Dx(i+2)
          Dy(i+3)=Dx(i+3)
          Dy(i+4)=Dx(i+4)
          Dy(i+5)=Dx(i+5)
          Dy(i+6)=Dx(i+6)
         END DO
        END IF
       END IF
      END IF
c     ------------------------------------------------------------------
      RETURN
      END