3 #include "types/simple.h"
4 #include "../gmx_lapack.h"
7 F77_FUNC(dlasr,DLASR)(const char *side,
17 /* System generated locals */
18 int a_dim1, a_offset, i__1, i__2;
28 a_offset = 1 + a_dim1;
34 if (*m == 0 || *n == 0) {
37 if (*side=='L' || *side=='l') {
39 if (*pivot=='V' || *pivot=='v') {
40 if (*direct=='F' || *direct=='f') {
42 for (j = 1; j <= i__1; ++j) {
45 if (fabs(ctemp-1.0)>GMX_DOUBLE_EPS || fabs(stemp)>GMX_DOUBLE_MIN) {
47 for (i__ = 1; i__ <= i__2; ++i__) {
48 temp = a[j + 1 + i__ * a_dim1];
49 a[j + 1 + i__ * a_dim1] = ctemp * temp - stemp *
51 a[j + i__ * a_dim1] = stemp * temp + ctemp * a[j
56 } else if (*direct=='B' || *direct=='b') {
57 for (j = *m - 1; j >= 1; --j) {
60 if (fabs(ctemp-1.0)>GMX_DOUBLE_EPS || fabs(stemp)>GMX_DOUBLE_MIN) {
62 for (i__ = 1; i__ <= i__1; ++i__) {
63 temp = a[j + 1 + i__ * a_dim1];
64 a[j + 1 + i__ * a_dim1] = ctemp * temp - stemp *
66 a[j + i__ * a_dim1] = stemp * temp + ctemp * a[j
72 } else if (*pivot=='T' || *pivot=='t') {
73 if (*direct=='F' || *direct=='f') {
75 for (j = 2; j <= i__1; ++j) {
78 if (fabs(ctemp-1.0)>GMX_DOUBLE_EPS || fabs(stemp)>GMX_DOUBLE_MIN) {
80 for (i__ = 1; i__ <= i__2; ++i__) {
81 temp = a[j + i__ * a_dim1];
82 a[j + i__ * a_dim1] = ctemp * temp - stemp * a[
84 a[i__ * a_dim1 + 1] = stemp * temp + ctemp * a[
89 } else if (*direct=='B' || *direct=='b') {
90 for (j = *m; j >= 2; --j) {
93 if (fabs(ctemp-1.0)>GMX_DOUBLE_EPS || fabs(stemp)>GMX_DOUBLE_MIN) {
95 for (i__ = 1; i__ <= i__1; ++i__) {
96 temp = a[j + i__ * a_dim1];
97 a[j + i__ * a_dim1] = ctemp * temp - stemp * a[
99 a[i__ * a_dim1 + 1] = stemp * temp + ctemp * a[
105 } else if (*pivot=='B' || *pivot=='b') {
106 if (*direct=='F' || *direct=='f') {
108 for (j = 1; j <= i__1; ++j) {
111 if (fabs(ctemp-1.0)>GMX_DOUBLE_EPS || fabs(stemp)>GMX_DOUBLE_MIN) {
113 for (i__ = 1; i__ <= i__2; ++i__) {
114 temp = a[j + i__ * a_dim1];
115 a[j + i__ * a_dim1] = stemp * a[*m + i__ * a_dim1]
117 a[*m + i__ * a_dim1] = ctemp * a[*m + i__ *
118 a_dim1] - stemp * temp;
122 } else if (*direct=='B' || *direct=='b') {
123 for (j = *m - 1; j >= 1; --j) {
126 if (fabs(ctemp-1.0)>GMX_DOUBLE_EPS || fabs(stemp)>GMX_DOUBLE_MIN) {
128 for (i__ = 1; i__ <= i__1; ++i__) {
129 temp = a[j + i__ * a_dim1];
130 a[j + i__ * a_dim1] = stemp * a[*m + i__ * a_dim1]
132 a[*m + i__ * a_dim1] = ctemp * a[*m + i__ *
133 a_dim1] - stemp * temp;
139 } else if (*side=='R' || *side=='r') {
141 if (*pivot=='V' || *pivot=='v') {
142 if (*direct=='F' || *direct=='f') {
144 for (j = 1; j <= i__1; ++j) {
147 if (fabs(ctemp-1.0)>GMX_DOUBLE_EPS || fabs(stemp)>GMX_DOUBLE_MIN) {
149 for (i__ = 1; i__ <= i__2; ++i__) {
150 temp = a[i__ + (j + 1) * a_dim1];
151 a[i__ + (j + 1) * a_dim1] = ctemp * temp - stemp *
153 a[i__ + j * a_dim1] = stemp * temp + ctemp * a[
158 } else if (*direct=='B' || *direct=='b') {
159 for (j = *n - 1; j >= 1; --j) {
162 if (fabs(ctemp-1.0)>GMX_DOUBLE_EPS || fabs(stemp)>GMX_DOUBLE_MIN) {
164 for (i__ = 1; i__ <= i__1; ++i__) {
165 temp = a[i__ + (j + 1) * a_dim1];
166 a[i__ + (j + 1) * a_dim1] = ctemp * temp - stemp *
168 a[i__ + j * a_dim1] = stemp * temp + ctemp * a[
174 } else if (*pivot=='T' || *pivot=='t') {
175 if (*direct=='F' || *direct=='f') {
177 for (j = 2; j <= i__1; ++j) {
180 if (fabs(ctemp-1.0)>GMX_DOUBLE_EPS || fabs(stemp)>GMX_DOUBLE_MIN) {
182 for (i__ = 1; i__ <= i__2; ++i__) {
183 temp = a[i__ + j * a_dim1];
184 a[i__ + j * a_dim1] = ctemp * temp - stemp * a[
186 a[i__ + a_dim1] = stemp * temp + ctemp * a[i__ +
191 } else if (*direct=='B' || *direct=='b') {
192 for (j = *n; j >= 2; --j) {
195 if (fabs(ctemp-1.0)>GMX_DOUBLE_EPS || fabs(stemp)>GMX_DOUBLE_MIN) {
197 for (i__ = 1; i__ <= i__1; ++i__) {
198 temp = a[i__ + j * a_dim1];
199 a[i__ + j * a_dim1] = ctemp * temp - stemp * a[
201 a[i__ + a_dim1] = stemp * temp + ctemp * a[i__ +
207 } else if (*pivot=='B' || *pivot=='b') {
208 if (*direct=='F' || *direct=='f') {
210 for (j = 1; j <= i__1; ++j) {
213 if (fabs(ctemp-1.0)>GMX_DOUBLE_EPS || fabs(stemp)>GMX_DOUBLE_MIN) {
215 for (i__ = 1; i__ <= i__2; ++i__) {
216 temp = a[i__ + j * a_dim1];
217 a[i__ + j * a_dim1] = stemp * a[i__ + *n * a_dim1]
219 a[i__ + *n * a_dim1] = ctemp * a[i__ + *n *
220 a_dim1] - stemp * temp;
224 } else if (*direct=='B' || *direct=='b') {
225 for (j = *n - 1; j >= 1; --j) {
228 if (fabs(ctemp-1.0)>GMX_DOUBLE_EPS || fabs(stemp)>GMX_DOUBLE_MIN) {
230 for (i__ = 1; i__ <= i__1; ++i__) {
231 temp = a[i__ + j * a_dim1];
232 a[i__ + j * a_dim1] = stemp * a[i__ + *n * a_dim1]
234 a[i__ + *n * a_dim1] = ctemp * a[i__ + *n *
235 a_dim1] - stemp * temp;