| 89 | |
| 90 | template<typename T> |
| 91 | Array<T> qr_inplace(Array<T> &in) { |
| 92 | dim4 iDims = in.dims(); |
| 93 | int M = iDims[0]; |
| 94 | int N = iDims[1]; |
| 95 | |
| 96 | Array<T> t = createEmptyArray<T>(af::dim4(min(M, N), 1, 1, 1)); |
| 97 | |
| 98 | mapped_ptr<T> iPtr = in.getMappedPtr(); |
| 99 | mapped_ptr<T> tPtr = t.getMappedPtr(); |
| 100 | |
| 101 | geqrf_func<T>()(AF_LAPACK_COL_MAJOR, M, N, iPtr.get(), in.strides()[1], |
| 102 | tPtr.get()); |
| 103 | |
| 104 | return t; |
| 105 | } |
| 106 | |
| 107 | #define INSTANTIATE_QR(T) \ |
| 108 | template Array<T> qr_inplace<T>(Array<T> & in); \ |