d909c714b8eebe16123d1f4275725f5a8d767b51
[alexxy/gromacs.git] / src / gmxlib / gmx_blas / dscal.c
1 #include "gmx_blas.h"
2
3 void 
4 F77_FUNC(dscal,DSCAL)(int  *    n__,
5                       double *   fact__,
6                       double *   dx,
7                       int    *   incx__)
8 {
9     int nincx,i;
10
11     int n = *n__;
12     double fact = *fact__;
13     int incx = *incx__;
14     
15     if(n<=0 || incx<=0)
16         return;
17     
18     if(incx==1) {
19         /* Unrool factor 5 */
20         for(i=0;i<(n-5);i+=5) {
21             dx[i]   *= fact;
22             dx[i+1] *= fact;
23             dx[i+2] *= fact;
24             dx[i+3] *= fact;
25             dx[i+4] *= fact;
26         }    
27         /* continue with current value of i */
28         for(;i<n;i++)
29             dx[i]   *= fact;
30         
31         return;
32     } else {
33         /* inc != 1 */
34         nincx = n * (incx);
35         for (i=0;i<nincx;i+=incx)
36             dx[i] *= fact;
37         
38         return;
39     } 
40     
41 }