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