35 #ifndef TEMPLATE_LAPACK_ORMQR_HEADER 36 #define TEMPLATE_LAPACK_ORMQR_HEADER 41 const integer *k, Treal *a,
const integer *lda,
const Treal *tau, Treal *
146 integer a_dim1, a_offset, c_dim1, c_offset, i__1, i__2, i__3[2], i__4,
153 integer nbmin, iinfo, i1, i2, i3;
154 integer ib, ic, jc, nb, mi, ni;
160 #define a_ref(a_1,a_2) a[(a_2)*a_dim1 + a_1] 161 #define c___ref(a_1,a_2) c__[(a_2)*c_dim1 + a_1] 165 a_offset = 1 + a_dim1 * 1;
169 c_offset = 1 + c_dim1 * 1;
180 lquery = *lwork == -1;
199 }
else if (*k < 0 || *k > nq) {
205 }
else if (*lwork <
maxMACRO(1,nw) && ! lquery) {
216 i__3[0] = 1, a__1[0] =
side;
217 i__3[1] = 1, a__1[1] = trans;
223 work[1] = (Treal) lwkopt;
236 if (*m == 0 || *n == 0 || *k == 0) {
243 if (nb > 1 && nb < *k) {
246 nb = *lwork / ldwork;
249 i__3[0] = 1, a__1[0] =
side;
250 i__3[1] = 1, a__1[1] = trans;
260 if (nb < nbmin || nb >= *k) {
265 c_offset], ldc, &work[1], &iinfo);
270 if ( ( left && ! notran ) || ( ! left && notran ) ) {
275 i1 = (*k - 1) / nb * nb + 1;
290 for (i__ = i1; i__2 < 0 ? i__ >= i__1 : i__ <= i__1; i__ += i__2) {
292 i__4 = nb, i__5 = *k - i__ + 1;
300 lda, &tau[i__], t, &c__65);
318 a_ref(i__, i__), lda, t, &c__65, &
c___ref(ic, jc), ldc, &
323 work[1] = (Treal) lwkopt;
int integer
Definition: template_blas_common.h:38
integer template_lapack_ilaenv(const integer *ispec, const char *name__, const char *opts, const integer *n1, const integer *n2, const integer *n3, const integer *n4, ftnlen name_len, ftnlen opts_len)
Definition: template_lapack_common.cc:279
char * address
Definition: template_blas_common.h:41
#define maxMACRO(a, b)
Definition: template_blas_common.h:43
#define minMACRO(a, b)
Definition: template_blas_common.h:44
int template_blas_erbla(const char *srname, integer *info)
Definition: template_blas_common.cc:144
int template_lapack_larfb(const char *side, const char *trans, const char *direct, const char *storev, const integer *m, const integer *n, const integer *k, const Treal *v, const integer *ldv, const Treal *t, const integer *ldt, Treal *c__, const integer *ldc, Treal *work, const integer *ldwork)
Definition: template_lapack_larfb.h:40
#define c___ref(a_1, a_2)
void template_blas_s_cat(char *lp, char *rpp[], ftnlen rnp[], ftnlen *np, ftnlen ll)
Definition: template_blas_common.cc:202
int template_lapack_ormqr(char *side, char *trans, const integer *m, const integer *n, const integer *k, Treal *a, const integer *lda, const Treal *tau, Treal *c__, const integer *ldc, Treal *work, const integer *lwork, integer *info)
Definition: template_lapack_ormqr.h:40
int template_lapack_orm2r(const char *side, const char *trans, const integer *m, const integer *n, const integer *k, Treal *a, const integer *lda, const Treal *tau, Treal *c__, const integer *ldc, Treal *work, integer *info)
Definition: template_lapack_orm2r.h:40
bool logical
Definition: template_blas_common.h:39
side
Definition: Matrix.h:73
int ftnlen
Definition: template_blas_common.h:40
logical template_blas_lsame(const char *ca, const char *cb)
Definition: template_blas_common.cc:44
int template_lapack_larft(const char *direct, const char *storev, const integer *n, const integer *k, Treal *v, const integer *ldv, const Treal *tau, Treal *t, const integer *ldt)
Definition: template_lapack_larft.h:40