Validate strings converted to numbers in mdp files
[gromacs/AngularHB.git] / src / gromacs / linearalgebra / gmx_lapack / dorm2l.c
blobda1ac9797d143016d5f2884ed339daa7f556e2cc
1 #include "../gmx_lapack.h"
3 void
4 F77_FUNC(dorm2l,DORM2L)(const char *side,
5 const char *trans,
6 int *m,
7 int *n,
8 int *k,
9 double *a,
10 int *lda,
11 double *tau,
12 double *c__,
13 int *ldc,
14 double *work,
15 int *info)
17 int a_dim1, a_offset, c_dim1, c_offset, i__1, i__2;
18 int c__1 = 1;
20 int i__, i1, i2, i3, mi, ni, nq;
21 double aii;
22 int left;
23 int notran;
25 a_dim1 = *lda;
26 a_offset = 1 + a_dim1;
27 a -= a_offset;
28 --tau;
29 c_dim1 = *ldc;
30 c_offset = 1 + c_dim1;
31 c__ -= c_offset;
32 --work;
34 /* Function Body */
35 *info = 0;
36 left = (*side=='L' || *side=='l');
37 notran = (*trans=='N' || *trans=='n');
39 if (left) {
40 nq = *m;
41 } else {
42 nq = *n;
44 if (*info != 0) {
45 i__1 = -(*info);
46 return;
49 if (*m == 0 || *n == 0 || *k == 0) {
50 return;
53 if ((left && notran) || (! left && ! notran)) {
54 i1 = 1;
55 i2 = *k;
56 i3 = 1;
57 } else {
58 i1 = *k;
59 i2 = 1;
60 i3 = -1;
63 if (left) {
64 ni = *n;
65 } else {
66 mi = *m;
69 i__1 = i2;
70 i__2 = i3;
71 for (i__ = i1; i__2 < 0 ? i__ >= i__1 : i__ <= i__1; i__ += i__2) {
72 if (left) {
74 mi = *m - *k + i__;
75 } else {
77 ni = *n - *k + i__;
80 aii = a[nq - *k + i__ + i__ * a_dim1];
81 a[nq - *k + i__ + i__ * a_dim1] = 1.;
82 F77_FUNC(dlarf,DLARF)(side, &mi, &ni, &a[i__ * a_dim1 + 1], &c__1, &tau[i__], &c__[
83 c_offset], ldc, &work[1]);
84 a[nq - *k + i__ + i__ * a_dim1] = aii;
86 return;