1*
2* $Id$
3*
4      subroutine daxpy(n,da,dx,incx,dy,incy)
5c
6c     constant times a vector plus a vector.
7c     uses unrolled loops for increments equal to one.
8c     jack dongarra, linpack, 3/11/78.
9c
10      double precision dx(1),dy(1),da
11      integer i,incx,incy,m,mp1,n
12c
13      if(n.le.0)return
14      if (da .eq. 0.0d0) return
15      if(incx.eq.1.and.incy.eq.1)go to 20
16c
17c     code for unequal increments or equal increments
18c     not equal to 1
19c
20      ix = 1
21      iy = 1
22      if(incx.lt.0)ix = (-n+1)*incx + 1
23      if(incy.lt.0)iy = (-n+1)*incy + 1
24      do 10 i = 1,n
25         dy(iy) = dy(iy) + da*dx(ix)
26         ix = ix + incx
27         iy = iy + incy
28 10   continue
29      return
30c
31c     code for both increments equal to 1
32c
33c
34c     clean-up loop
35c
36 20   m = mod(n,4)
37      if( m .eq. 0 ) go to 40
38      do 30 i = 1,m
39         dy(i) = dy(i) + da*dx(i)
40 30   continue
41      if( n .lt. 4 ) return
42 40   mp1 = m + 1
43      do 50 i = mp1,n,4
44         dy(i) = dy(i) + da*dx(i)
45         dy(i + 1) = dy(i + 1) + da*dx(i + 1)
46         dy(i + 2) = dy(i + 2) + da*dx(i + 2)
47         dy(i + 3) = dy(i + 3) + da*dx(i + 3)
48 50   continue
49      return
50      end
51