biod.pnpi.spb.ru
/
alexxy
/
gromacs.git
/ blob
commit
grep
author
committer
pickaxe
?
search:
re
c368d68158342c7d1604d3155a11ed9c62c015fe
[alexxy/gromacs.git]
/
src
/
gmxlib
/
gmx_blas
/
dswap.c
1
#include "gmx_blas.h"
2
3
void
4
F77_FUNC(dswap,DSWAP)(int *n__,
5
double *dx,
6
int *incx__,
7
double *dy,
8
int *incy__)
9
{
10
int i,ix,iy;
11
double d1,d2,d3;
12
13
int n = *n__;
14
int incx = *incx__;
15
int incy = *incy__;
16
17
if(n<=0)
18
return;
19
20
if(incx==1 && incy==1) {
21
for(i=0;i<(n-3);i+=3) {
22
d1 = dx[i];
23
d2 = dx[i+1];
24
d3 = dx[i+2];
25
dx[i] = dy[i];
26
dx[i+1] = dy[i+1];
27
dx[i+2] = dy[i+2];
28
dy[i] = d1;
29
dy[i+1] = d2;
30
dy[i+2] = d3;
31
}
32
/* continue with last i value */
33
for(;i<n;i++) {
34
d1 = dx[i];
35
dx[i] = dy[i];
36
dy[i] = d1;
37
}
38
39
} else {
40
ix = 0;
41
iy = 0;
42
if(incx<0)
43
ix = incx * (1 - n);
44
if(incy<0)
45
iy = incy * (1 - n);
46
47
for(i=0;i<n;i++,ix+=incx,iy+=incy) {
48
d1 = dx[ix];
49
dx[ix] = dy[iy];
50
dy[iy] = d1;
51
}
52
}
53
return;
54
}
55