4 #include "gromacs/utility/real.h"
6 #include "../gmx_blas.h"
9 F77_FUNC(dgemv,DGEMV)(const char *trans,
21 const char ch=toupper(*trans);
28 double alpha = *alpha__;
29 double beta = *beta__;
34 if(n<=0 || m<=0 || (fabs(alpha)<GMX_DOUBLE_MIN && fabs(beta-1.0)<GMX_DOUBLE_EPS))
48 kx = 1 - (lenx -1)*(incx);
53 ky = 1 - (leny -1)*(incy);
55 if(fabs(beta-1.0)>GMX_DOUBLE_EPS) {
57 if(fabs(beta)<GMX_DOUBLE_MIN)
66 if(fabs(beta)<GMX_DOUBLE_MIN)
67 for(i=0;i<leny;i++,iy+=incy)
70 for(i=0;i<leny;i++,iy+=incy)
75 if(fabs(alpha)<GMX_DOUBLE_MIN)
81 for(j=1;j<=n;j++,jx+=incx)
82 if(fabs(x[jx-1])>GMX_DOUBLE_MIN) {
83 temp = alpha * x[jx-1];
85 y[i-1] += temp * a[(j-1)*(lda)+(i-1)];
88 /* non-unit y incr. */
89 for(j=1;j<=n;j++,jx+=incx)
90 if(fabs(x[jx-1])>GMX_DOUBLE_MIN) {
91 temp = alpha * x[jx-1];
93 for(i=1;i<=m;i++,iy+=incy)
94 y[iy-1] += temp * a[(j-1)*(lda)+(i-1)];
101 for(j=1;j<=n;j++,jy+=incy) {
104 temp += a[(j-1)*(lda)+(i-1)] * x[i-1];
105 y[jy-1] += alpha * temp;
108 /* non-unit y incr. */
109 for(j=1;j<=n;j++,jy+=incy) {
112 for(i=1;i<=m;i++,ix+=incx)
113 temp += a[(j-1)*(lda)+(i-1)] * x[ix-1];
114 y[jy-1] += alpha * temp;