@@ -29,6 +29,8 @@ TH_EXTERNC void sgeqrf_(int *m, int *n, float *a, int *lda, float *tau, float *w
2929TH_EXTERNC void dgeqrf_ (int * m , int * n , double * a , int * lda , double * tau , double * work , int * lwork , int * info );
3030TH_EXTERNC void sorgqr_ (int * m , int * n , int * k , float * a , int * lda , float * tau , float * work , int * lwork , int * info );
3131TH_EXTERNC void dorgqr_ (int * m , int * n , int * k , double * a , int * lda , double * tau , double * work , int * lwork , int * info );
32+ TH_EXTERNC void sormqr_ (char * side , char * trans , int * m , int * n , int * k , float * a , int * lda , float * tau , float * c , int * ldc , float * work , int * lwork , int * info );
33+ TH_EXTERNC void dormqr_ (char * side , char * trans , int * m , int * n , int * k , double * a , int * lda , double * tau , double * c , int * ldc , double * work , int * lwork , int * info );
3234
3335
3436/* Compute the solution to a real system of linear equations A * X = B */
@@ -218,5 +220,19 @@ void THLapack_(orgqr)(int m, int n, int k, real *a, int lda, real *tau, real *wo
218220#endif
219221}
220222
223+ /* Multiply Q with a matrix using the output of geqrf */
224+ void THLapack_ (ormqr )(char side , char trans , int m , int n , int k , real * a , int lda , real * tau , real * c , int ldc , real * work , int lwork , int * info )
225+ {
226+ #ifdef USE_LAPACK
227+ #if defined(TH_REAL_IS_DOUBLE )
228+ dormqr_ (& side , & trans , & m , & n , & k , a , & lda , tau , c , & ldc , work , & lwork , info );
229+ #else
230+ sormqr_ (& side , & trans , & m , & n , & k , a , & lda , tau , c , & ldc , work , & lwork , info );
231+ #endif
232+ #else
233+ THError ("ormqr: Lapack library not found in compile time\n" );
234+ #endif
235+ }
236+
221237
222238#endif
0 commit comments