biod.pnpi.spb.ru
/
alexxy
/
gromacs.git
/ blob
commit
grep
author
committer
pickaxe
?
search:
re
74f227e0f99b6709ffec5b624177de379c4f60e9
[alexxy/gromacs.git]
/
src
/
gmxlib
/
gmx_blas
/
daxpy.c
1
#include "gmx_blas.h"
2
3
4
void
5
F77_FUNC(daxpy,DAXPY)(int * n_arg,
6
double * da_arg,
7
double * dx,
8
int * incx_arg,
9
double * dy,
10
int * incy_arg)
11
{
12
int i,ix,iy;
13
int n=*n_arg;
14
double da=*da_arg;
15
int incx = *incx_arg;
16
int incy = *incy_arg;
17
18
if (n<=0)
19
return;
20
21
if(incx!=1 || incy!=1) {
22
ix = 0;
23
iy = 0;
24
if(incx<0)
25
ix = (1-n)*incx;
26
if(incy<0)
27
iy = (1-n)*incy;
28
29
for(i=0;i<n;i++,ix+=incx,iy+=incy)
30
dy[iy] += da*dx[ix];
31
32
return;
33
34
} else {
35
36
/* unroll */
37
38
for(i=0;i<(n-4);i+=4) {
39
dy[i] += da*dx[i];
40
dy[i+1] += da*dx[i+1];
41
dy[i+2] += da*dx[i+2];
42
dy[i+3] += da*dx[i+3];
43
}
44
/* continue with current value of i */
45
for(;i<n;i++)
46
dy[i] += da*dx[i];
47
}
48
}