1 #include "../gmx_blas.h"
2 
3 void
F77_FUNC(dcopy,DCOPY)4 F77_FUNC(dcopy,DCOPY)(int *n__,
5                       double *dx,
6                       int *incx__,
7                       double *dy,
8                       int *incy__)
9 {
10     int i,ix,iy;
11 
12     int n= *n__;
13     int incx = *incx__;
14     int incy = *incy__;
15 
16 
17     if(incx!=1 || incy!=1) {
18         ix = 0;
19         iy = 0;
20         if(incx<0)
21             ix = (1-n)*(incx);
22         if(incy<0)
23             iy = (1-n)*(incy);
24 
25         for(i=0;i<n;i++,ix+=incx,iy+=incy)
26             dy[iy] = dx[ix];
27 
28         return;
29 
30     } else {
31 
32         /* unroll */
33 
34         for(i=0;i<(n-8);i+=8) {
35             dy[i]   = dx[i];
36             dy[i+1] = dx[i+1];
37             dy[i+2] = dx[i+2];
38             dy[i+3] = dx[i+3];
39             dy[i+4] = dx[i+4];
40             dy[i+5] = dx[i+5];
41             dy[i+6] = dx[i+6];
42             dy[i+7] = dx[i+7];
43         }
44         /* continue with current value of i */
45         for(;i<n;i++)
46             dy[i] = dx[i];
47     }
48 }
49