3 #include "gromacs/utility/real.h"
4 #include "../gmx_blas.h"
7 F77_FUNC(dtrmv,DTRMV)(const char *uplo,
16 int a_dim1, a_offset, i__1, i__2;
18 int i__, j, ix, jx, kx, info;
27 a_offset = 1 + a_dim1;
37 nounit = (*diag=='n' || *diag=='N');
40 kx = 1 - (n - 1) * incx;
45 if (*trans=='N' || *trans=='n') {
47 if (*uplo=='U' || *uplo=='u') {
50 for (j = 1; j <= i__1; ++j) {
51 if (fabs(x[j])>GMX_DOUBLE_MIN) {
54 for (i__ = 1; i__ <= i__2; ++i__) {
55 x[i__] += temp * a[i__ + j * a_dim1];
58 x[j] *= a[j + j * a_dim1];
65 for (j = 1; j <= i__1; ++j) {
66 if (fabs(x[jx])>GMX_DOUBLE_MIN) {
70 for (i__ = 1; i__ <= i__2; ++i__) {
71 x[ix] += temp * a[i__ + j * a_dim1];
75 x[jx] *= a[j + j * a_dim1];
83 for (j = n; j >= 1; --j) {
84 if (fabs(x[j])>GMX_DOUBLE_MIN) {
87 for (i__ = n; i__ >= i__1; --i__) {
88 x[i__] += temp * a[i__ + j * a_dim1];
91 x[j] *= a[j + j * a_dim1];
98 for (j = n; j >= 1; --j) {
99 if (fabs(x[jx])>GMX_DOUBLE_MIN) {
103 for (i__ = n; i__ >= i__1; --i__) {
104 x[ix] += temp * a[i__ + j * a_dim1];
108 x[jx] *= a[j + j * a_dim1];
117 if (*uplo=='U' || *uplo=='u') {
119 for (j = n; j >= 1; --j) {
122 temp *= a[j + j * a_dim1];
124 for (i__ = j - 1; i__ >= 1; --i__) {
125 temp += a[i__ + j * a_dim1] * x[i__];
130 jx = kx + (n - 1) * incx;
131 for (j = n; j >= 1; --j) {
135 temp *= a[j + j * a_dim1];
137 for (i__ = j - 1; i__ >= 1; --i__) {
139 temp += a[i__ + j * a_dim1] * x[ix];
148 for (j = 1; j <= i__1; ++j) {
151 temp *= a[j + j * a_dim1];
154 for (i__ = j + 1; i__ <= i__2; ++i__) {
155 temp += a[i__ + j * a_dim1] * x[i__];
162 for (j = 1; j <= i__1; ++j) {
166 temp *= a[j + j * a_dim1];
169 for (i__ = j + 1; i__ <= i__2; ++i__) {
171 temp += a[i__ + j * a_dim1] * x[ix];