Moved linear algebra sources to C++
[gromacs/AngularHB.git] / src / gromacs / linearalgebra / gmx_lapack / dlarf.cpp
blobc263000a35a04e23d4622cd52001307406a090ef
1 #include <cctype>
2 #include <cmath>
4 #include "../gmx_blas.h"
5 #include "../gmx_lapack.h"
7 #include "gromacs/utility/real.h"
9 void
10 F77_FUNC(dlarf,DLARF)(const char *side,
11 int *m,
12 int *n,
13 double *v,
14 int *incv,
15 double *tau,
16 double *c,
17 int *ldc,
18 double *work)
20 const char ch=std::toupper(*side);
21 double one = 1.0;
22 double zero = 0.0;
23 double minustau = -(*tau);
24 int i1 = 1;
27 if(ch=='L') {
28 if(std::abs(*tau)>GMX_DOUBLE_MIN) {
29 F77_FUNC(dgemv,DGEMV)("T",m,n,&one,c,ldc,v,incv,&zero,work,&i1);
30 F77_FUNC(dger,DGER)(m,n,&minustau,v,incv,work,&i1,c,ldc);
32 } else {
33 if(std::abs(*tau)>GMX_DOUBLE_MIN) {
34 F77_FUNC(dgemv,DGEMV)("N",m,n,&one,c,ldc,v,incv,&zero,work,&i1);
35 F77_FUNC(dger,DGER)(m,n,&minustau,work,&i1,v,incv,c,ldc);
38 return;