ca91701146ff37aa2a28315183e66e6c5bfc998e
[alexxy/gromacs.git] / src / gmxlib / gmx_blas / sasum.c
1 #include <math.h>
2 #include "gmx_blas.h"
3
4 float
5 F77_FUNC(sasum,SASUM)(int *n__, 
6        float *dx, 
7        int *incx__)
8 {
9     int i__1, i__2;
10     
11     int i__, m, mp1;
12     float dtemp;
13     int nincx;
14     
15     int n = *n__;
16     int incx = *incx__;
17     
18     
19     --dx;
20     
21     dtemp = 0.;
22     if (n <= 0 || incx <= 0) {
23         return 0.0;
24     }
25     if (incx != 1) {
26         nincx = n * incx;
27         i__1 = nincx;
28         i__2 = incx;
29         for (i__ = 1; i__2 < 0 ? i__ >= i__1 : i__ <= i__1; i__ += i__2) {
30             dtemp += fabs(dx[i__]);
31         }
32         return dtemp;
33     }
34     
35     m = n % 6;
36     if (m != 0) {
37         i__2 = m;
38         for (i__ = 1; i__ <= i__2; ++i__) {
39             dtemp += fabs(dx[i__]);
40         }
41         if (n < 6) {
42             return dtemp;
43         }
44     }
45     mp1 = m + 1;
46     i__2 = n;
47     for (i__ = mp1; i__ <= i__2; i__ += 6) {
48         dtemp = dtemp + fabs(dx[i__]) + fabs(dx[i__ + 1]) + 
49         fabs(dx[i__ + 2]) + fabs(dx[i__+ 3]) + fabs(dx[i__ + 4]) +
50         fabs(dx[i__ + 5]);
51     }
52     return dtemp;
53 }
54
55