From b7d689d1f8c584c15aa0e17cd1f33457b3d038c5 Mon Sep 17 00:00:00 2001
From: Raphael Boucherie <raphael.boucherie@inria.fr>
Date: Wed, 7 Jun 2017 18:35:00 +0200
Subject: [PATCH] updated header

---
 compute/pzgelqf_param.c          | 51 ++++++++++++++------------------
 compute/pzgeqrf_param.c          | 11 ++-----
 compute/pzunglq_param.c          | 36 +++++++++-------------
 compute/pzungqr_param.c          | 14 +++------
 compute/pzunmlq_param.c          | 17 +++++------
 compute/pzunmqr_param.c          |  3 +-
 compute/zgelqf_param.c           | 17 +++++------
 compute/zgelqs_param.c           | 29 ++++++++++--------
 compute/zgels_param.c            | 26 +++++++++-------
 compute/zgeqrf_param.c           | 12 ++------
 compute/zgeqrs_param.c           | 15 ++++------
 compute/zunglq_param.c           | 17 +++++------
 compute/zungqr_param.c           | 14 +++------
 compute/zunmlq_param.c           | 21 +++++++------
 compute/zunmqr_param.c           | 22 +++++++-------
 testing/testing_zgels_hqr.c      | 16 ++++------
 testing/testing_zgels_systolic.c | 29 +++++++++---------
 timing/time_zgeqrf_hqr.c         | 22 ++++++++------
 18 files changed, 165 insertions(+), 207 deletions(-)

diff --git a/compute/pzgelqf_param.c b/compute/pzgelqf_param.c
index 476ce30d4..d85123145 100644
--- a/compute/pzgelqf_param.c
+++ b/compute/pzgelqf_param.c
@@ -15,15 +15,10 @@
  *  MORSE is a software package provided by Univ. of Tennessee,
  *  Univ. of California Berkeley and Univ. of Colorado Denver
  *
- * @version 2.5.0
- * @author Jakub Kurzak
- * @author Hatem Ltaief
- * @author Dulceneia Becker
+ * @version 0.0.0
  * @author Mathieu Faverge
- * @author Emmanuel Agullo
- * @author Cedric Castagnede
  * @author Raphael Boucherie
- * @date 2010-11-15
+ * @date 2017-05-17
  * @precisions normal z -> s d c
  *
  **/
@@ -54,7 +49,7 @@ void morse_pzgelqf_param( const libhqr_tree_t *qrtree, MORSE_desc_t *A, MORSE_de
     int k, m, n, i, p;
     int K;
     int ldak, ldam, ldap;
-    int tempkmin, tempkm, tempnn, tempmm;
+    int tempkmin, tempkm, tempnn, tempmm, temppn;
     int ib;
     int *tiles;
 
@@ -108,33 +103,33 @@ void morse_pzgelqf_param( const libhqr_tree_t *qrtree, MORSE_desc_t *A, MORSE_de
     /* The number of the factorization */
     for (k = 0; k < K; k++) {
         RUNTIME_iteration_push(morse, k);
-        tempkm = k == A->mt-1 ? A->m-k*A->mb : A->mb;
 
+        tempkm = k == A->mt-1 ? A->m-k*A->mb : A->mb;
+        ldak = BLKLDD(A, k);
         /* The number of geqrt to apply */
         for (i = 0; i < qrtree->getnbgeqrf(qrtree, k); i++) {
-            n = qrtree->getm(qrtree, k, i);
-            tempnn = n == A->nt-1 ? A->n-n*A->nb : A->nb;
-            tempkmin = chameleon_min(tempnn, tempkm);
-            ldak = BLKLDD(A, k);
+            p = qrtree->getm(qrtree, k, i);
+            temppn = p == A->nt-1 ? A->n-p*A->nb : A->nb;
+            tempkmin = chameleon_min(tempkm, temppn);
 
             MORSE_TASK_zgelqt(
                 &options,
-                tempkm, tempnn, ib, TS->nb,
-                A( k, n), ldak,
-                TS(k, n), TS->mb);
-            if ( k < (A->nt-1) ) {
+                tempkm, temppn, ib, TS->nb,
+                A( k, p), ldak,
+                TS(k, p), TS->mb);
+            if ( k < (A->mt-1) ) {
 #if defined(CHAMELEON_COPY_DIAG)
                 MORSE_TASK_zlacpy(
                     &options,
-                    MorseUpper, tempkm, tempnn, A->nb,
-                    A(k, n), ldak,
-                    D(k, n), ldak );
+                    MorseUpper, tempkm, temppn, A->nb,
+                    A(k, p), ldak,
+                    D(k, p), ldak );
 #if defined(CHAMELEON_USE_CUDA)
                 MORSE_TASK_zlaset(
                     &options,
-                    MorseLower, tempkm, tempnn,
+                    MorseLower, tempkm, temppn,
                     0., 1.,
-                    D(k, n), ldak );
+                    D(k, p), ldak );
 #endif
 #endif
             }
@@ -144,10 +139,10 @@ void morse_pzgelqf_param( const libhqr_tree_t *qrtree, MORSE_desc_t *A, MORSE_de
                 MORSE_TASK_zunmlq(
                     &options,
                     MorseRight, MorseConjTrans,
-                    tempmm, tempnn, tempkmin, ib, TS->nb,
-                    D( k, n), ldak,
-                    TS(k, n), TS->mb,
-                    A( m, n), ldam);
+                    tempmm, temppn, tempkmin, ib, TS->nb,
+                    D( k, p), ldak,
+                    TS(k, p), TS->mb,
+                    A( m, p), ldam);
             }
         }
 
@@ -165,7 +160,7 @@ void morse_pzgelqf_param( const libhqr_tree_t *qrtree, MORSE_desc_t *A, MORSE_de
                 MORSE_TASK_ztslqt(
                     &options,
                     tempkm, tempnn, ib, TS->nb,
-                    A( k, p), ldak,
+                    A( p, n), ldap,
                     A( k, n), ldak,
                     TS(k, n), TS->mb);
 
@@ -176,7 +171,7 @@ void morse_pzgelqf_param( const libhqr_tree_t *qrtree, MORSE_desc_t *A, MORSE_de
                         &options,
                         MorseRight, MorseConjTrans,
                         tempmm, A->nb, tempmm, tempnn, tempkm, ib, TS->nb,
-                        A( m, p), ldam,
+                        A( p, n), ldap,
                         A( m, n), ldam,
                         A( k, n), ldak,
                         TS(k, n), TS->mb);
diff --git a/compute/pzgeqrf_param.c b/compute/pzgeqrf_param.c
index 44fead1c4..89585c408 100644
--- a/compute/pzgeqrf_param.c
+++ b/compute/pzgeqrf_param.c
@@ -15,15 +15,10 @@
  *  MORSE is a software package provided by Univ. of Tennessee,
  *  Univ. of California Berkeley and Univ. of Colorado Denver
  *
- * @version 2.5.0
- * @author Jakub Kurzak
- * @author Hatem Ltaief
- * @author Dulceneia Becker
+ * @version 1.0.0
  * @author Mathieu Faverge
- * @author Emmanuel Agullo
- * @author Cedric Castagnede
  * @author Raphael Boucherie
- * @date 2010-11-15
+ * @date 2017-05-17
  * @precisions normal z -> s d c
  *
  **/
@@ -50,7 +45,7 @@ void morse_pzgeqrf_param( const libhqr_tree_t *qrtree, MORSE_desc_t *A,
     MORSE_option_t options;
     size_t ws_worker = 0;
     size_t ws_host = 0;
-    
+
     int k, m, n, i, p;
     int K;
     int ldap, ldam;
diff --git a/compute/pzunglq_param.c b/compute/pzunglq_param.c
index b9e2a4e7f..4a2e3da00 100644
--- a/compute/pzunglq_param.c
+++ b/compute/pzunglq_param.c
@@ -3,8 +3,7 @@
  * @copyright (c) 2009-2014 The University of Tennessee and The University
  *                          of Tennessee Research Foundation.
  *                          All rights reserved.
- * @copyright (c) 2012-2016 Inria. All rights reserved.
- * @copyright (c) 2012-2014 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved.
+ * @copyright (c) 2012-2017 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved.
  *
  **/
 
@@ -16,14 +15,10 @@
  *  MORSE is a software package provided by Univ. of Tennessee,
  *  Univ. of California Berkeley and Univ. of Colorado Denver
  *
- * @version 2.5.0
- * @comment This file has been automatically generated
- *          from Plasma 2.5.0 for MORSE 1.0.0
- * @author Dulceneia Becker
+ * @version 1.0.0
  * @author Mathieu Faverge
- * @author Emmanuel Agullo
- * @author Cedric Castagnede
- * @date 2011-05-24
+ * @author Raphael Boucherie
+ * @date 2017-05-17
  * @precisions normal z -> s d c
  *
  **/
@@ -34,7 +29,7 @@
 #define TS(m,n) TS,  (m),  (n)
 #define TT(m,n) TT,  (m),  (n)
 #if defined(CHAMELEON_COPY_DIAG)
-#define D(m,n) D, ((n)/BS), 0
+#define D(m,n) D, (m), (n)
 #else
 #define D(m,n) A, (m), (n)
 #endif
@@ -54,7 +49,7 @@ void morse_pzunglq_param(const libhqr_tree_t *qrtree, MORSE_desc_t *A, MORSE_des
 
     int k, m, n, i, p;
     int K;
-    int ldak, ldqp, ldqm;
+    int ldak, ldqm;
     int tempkm, tempkmin, temppn, tempnn, tempmm;
     int ib;
     int *tiles;
@@ -92,16 +87,14 @@ void morse_pzunglq_param(const libhqr_tree_t *qrtree, MORSE_desc_t *A, MORSE_des
 
     RUNTIME_options_ws_alloc( &options, ws_worker, ws_host );
 
-#if defined(CHAMELEON_COPY_DIAG)
-    {
+    K = chameleon_min(A->mt, A->nt);
+
         /* necessary to avoid dependencies between tasks regarding the diag tile */
-        int nblk = ( A->nt + BS -1 ) / BS;
-        D = (MORSE_desc_t*)malloc(sizeof(MORSE_desc_t));
-        morse_zdesc_alloc_diag(*DIAG, A->mb, A->nb, nblk * A->mb, A->nb, 0, 0, nblk * A->mb, A->nb, A->p, A->q);
-    }
+#if defined(CHAMELEON_COPY_DIAG)
+    D = (MORSE_desc_t*)malloc(sizeof(MORSE_desc_t));
+    morse_zdesc_alloc_diag(*D, A->mb, A->nb, K*A->mb, A->nb, 0, 0, K*A->mb, A->nb, A->p, A->q);
 #endif
 
-    K = chameleon_min(A->mt, A->nt);
     for (k = K-1; k >= 0; k--) {
         RUNTIME_iteration_push(morse, k);
 
@@ -116,7 +109,6 @@ void morse_pzunglq_param(const libhqr_tree_t *qrtree, MORSE_desc_t *A, MORSE_des
             p = qrtree->currpiv(qrtree, k, n);
 
             tempnn = n == Q->nt-1 ? Q->n-n*Q->nb : Q->nb;
-            ldqp = BLKLDD(Q, p);
 
             /* TT or TS */
 
@@ -152,14 +144,13 @@ void morse_pzunglq_param(const libhqr_tree_t *qrtree, MORSE_desc_t *A, MORSE_des
         for (i = 0; i < qrtree->getnbgeqrf(qrtree, k); i++) {
             p = qrtree->getm(qrtree, k, i);
 
-            temppn = p == A->mt-1 ? A->m-p*A->mb : A->mb;
+            temppn = p == A->nt-1 ? A->n-p*A->nb : A->nb;
             tempkmin = chameleon_min(tempkm, temppn);
-            ldqp = BLKLDD(Q, p);
 
 #if defined(CHAMELEON_COPY_DIAG)
             MORSE_TASK_zlacpy(
                 &options,
-                MorseUpper, tempkmim, temppn, A->nb,
+                MorseUpper, tempkmin, temppn, A->nb,
                 A(k, p), ldak,
                 D(k, p), ldak );
 #if defined(CHAMELEON_USE_CUDA)
@@ -172,6 +163,7 @@ void morse_pzunglq_param(const libhqr_tree_t *qrtree, MORSE_desc_t *A, MORSE_des
 #endif
             for (m = k; m < Q->mt; m++) {
                 tempmm = m == Q->mt-1 ? Q->m-m*Q->mb : Q->mb;
+                ldqm = BLKLDD(Q, m);
                 MORSE_TASK_zunmlq(
                     &options,
                     MorseRight, MorseNoTrans,
diff --git a/compute/pzungqr_param.c b/compute/pzungqr_param.c
index ef0ecd41f..899e89b41 100644
--- a/compute/pzungqr_param.c
+++ b/compute/pzungqr_param.c
@@ -3,8 +3,7 @@
  * @copyright (c) 2009-2014 The University of Tennessee and The University
  *                          of Tennessee Research Foundation.
  *                          All rights reserved.
- * @copyright (c) 2012-2016 Inria. All rights reserved.
- * @copyright (c) 2012-2014 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved.
+ * @copyright (c) 2012-2017 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved.
  *
  **/
 
@@ -16,15 +15,10 @@
  *  MORSE is a software package provided by Univ. of Tennessee,
  *  Univ. of California Berkeley and Univ. of Colorado Denver
  *
- * @version 2.5.0
- * @comment This file has been automatically generated
- *          from Plasma 2.5.0 for MORSE 1.0.0
- * @author Hatem Ltaief
- * @author Jakub Kurzak
+ * @version 1.0.0
  * @author Mathieu Faverge
- * @author Emmanuel Agullo
- * @author Cedric Castagnede
- * @date 2010-11-15
+ * @author Raphael Boucherie
+ * @date 2017-05-17
  * @precisions normal z -> s d c
  *
  **/
diff --git a/compute/pzunmlq_param.c b/compute/pzunmlq_param.c
index 5c584c680..927dfbe08 100644
--- a/compute/pzunmlq_param.c
+++ b/compute/pzunmlq_param.c
@@ -3,8 +3,7 @@
  * @copyright (c) 2009-2014 The University of Tennessee and The University
  *                          of Tennessee Research Foundation.
  *                          All rights reserved.
- * @copyright (c) 2012-2016 Inria. All rights reserved.
- * @copyright (c) 2012-2014 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved.
+ * @copyright (c) 2012-2017 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved.
  *
  **/
 
@@ -50,8 +49,8 @@ void morse_pzunmlq_param(const libhqr_tree_t *qrtree,
     MORSE_desc_t *D = NULL;
 
     int k, m, n, i, p;
-    int ldan, ldam, ldbm, ldbn, ldak, ldbp;
-    int tempnn, temppn, tempkmin, tempmm, tempkn, tempkm;
+    int ldbm, ldak, ldbp;
+    int tempnn, temppn, tempkmin, tempmm, tempkm;
     int ib, K;
     int *tiles;
 
@@ -241,7 +240,7 @@ void morse_pzunmlq_param(const libhqr_tree_t *qrtree,
 #if defined(CHAMELEON_COPY_DIAG)
                     MORSE_TASK_zlacpy(
                         &options,
-                        MorseUpper, tempkmim, temppn, A->nb,
+                        MorseUpper, tempkmin, temppn, A->nb,
                         A(k, p), ldak,
                         D(k, p), ldak );
 #if defined(CHAMELEON_USE_CUDA)
@@ -321,14 +320,14 @@ void morse_pzunmlq_param(const libhqr_tree_t *qrtree,
                 for (i = 0; i < qrtree->getnbgeqrf(qrtree, k); i++) {
                     p = qrtree->getm(qrtree, k, i);
 
-                    temppn = p == A->mt-1 ? A->m-p*A->mb : A->mb;
+                    temppn = p == A->nt-1 ? A->n-p*A->nb : A->nb;
                     tempkmin = chameleon_min(tempkm, temppn);
                     ldbp = BLKLDD(B, p);
 
 #if defined(CHAMELEON_COPY_DIAG)
                     MORSE_TASK_zlacpy(
                         &options,
-                        MorseUpper, tempkmim, temppn, A->nb,
+                        MorseUpper, tempkmin, temppn, A->nb,
                         A(k, p), ldak,
                         D(k, p), ldak );
 #if defined(CHAMELEON_USE_CUDA)
@@ -371,13 +370,13 @@ void morse_pzunmlq_param(const libhqr_tree_t *qrtree,
 #if defined(CHAMELEON_COPY_DIAG)
                     MORSE_TASK_zlacpy(
                         &options,
-                        MorseUpper, tempkmin, tempkpn, A->nb,
+                        MorseUpper, tempkmin, temppn, A->nb,
                         A(k, p), ldak,
                         D(k, p), ldak );
 #if defined(CHAMELEON_USE_CUDA)
                     MORSE_TASK_zlaset(
                         &options,
-                        MorseLower, tempkmin, tempkpn,
+                        MorseLower, tempkmin, temppn,
                         0., 1.,
                         D(k, p), ldak );
 #endif
diff --git a/compute/pzunmqr_param.c b/compute/pzunmqr_param.c
index 7e2733985..8d7e7ead6 100644
--- a/compute/pzunmqr_param.c
+++ b/compute/pzunmqr_param.c
@@ -3,8 +3,7 @@
  * @copyright (c) 2009-2014 The University of Tennessee and The University
  *                          of Tennessee Research Foundation.
  *                          All rights reserved.
- * @copyright (c) 2012-2016 Inria. All rights reserved.
- * @copyright (c) 2012-2014 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved.
+ * @copyright (c) 2012-2017 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved.
  *
  **/
 
diff --git a/compute/zgelqf_param.c b/compute/zgelqf_param.c
index 92860796c..4b893047a 100644
--- a/compute/zgelqf_param.c
+++ b/compute/zgelqf_param.c
@@ -3,8 +3,7 @@
  * @copyright (c) 2009-2014 The University of Tennessee and The University
  *                          of Tennessee Research Foundation.
  *                          All rights reserved.
- * @copyright (c) 2012-2014 Inria. All rights reserved.
- * @copyright (c) 2012-2014 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved.
+ * @copyright (c) 2012-2017 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved.
  *
  **/
 
@@ -16,15 +15,10 @@
  *  MORSE is a software package provided by Univ. of Tennessee,
  *  Univ. of California Berkeley and Univ. of Colorado Denver
  *
- * @version 2.5.0
- * @comment This file has been automatically generated
- *          from Plasma 2.5.0 for MORSE 1.0.0
- * @author Jakub Kurzak
- * @author Dulceneia Becker
+ * @version 1.0.0
  * @author Mathieu Faverge
- * @author Emmanuel Agullo
- * @author Cedric Castagnede
- * @date 2010-11-15
+ * @author Raphael Boucherie
+ * @date 2017-05-17
  * @precisions normal z -> s d c
  *
  **/
@@ -39,6 +33,9 @@
  *
  *******************************************************************************
  *
+ * @param[in] qrtree
+ *          The tree used for the factorization
+ *
  * @param[in] M
  *          The number of rows of the matrix A. M >= 0.
  *
diff --git a/compute/zgelqs_param.c b/compute/zgelqs_param.c
index 41bbe1842..71550a71b 100644
--- a/compute/zgelqs_param.c
+++ b/compute/zgelqs_param.c
@@ -3,8 +3,7 @@
  * @copyright (c) 2009-2014 The University of Tennessee and The University
  *                          of Tennessee Research Foundation.
  *                          All rights reserved.
- * @copyright (c) 2012-2014 Inria. All rights reserved.
- * @copyright (c) 2012-2014 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved.
+ * @copyright (c) 2012-2017 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved.
  *
  **/
 
@@ -16,20 +15,17 @@
  *  MORSE is a software package provided by Univ. of Tennessee,
  *  Univ. of California Berkeley and Univ. of Colorado Denver
  *
- * @version 2.5.0
- * @comment This file has been automatically generated
- *          from Plasma 2.5.0 for MORSE 1.0.0
- * @author Jakub Kurzak
+ * @version 1.0.0
+ * @author Raphael Boucherie
  * @author Mathieu Faverge
- * @author Emmanuel Agullo
- * @author Cedric Castagnede
- * @date 2010-11-15
+ * @date 2017-05-17
  * @precisions normal z -> s d c
  *
  **/
 #include "control/common.h"
 
-/***************************************************************************//**
+/**
+ *******************************************************************************
  *
  * @ingroup MORSE_Complex64_t
  *
@@ -38,6 +34,9 @@
  *
  *******************************************************************************
  *
+ * @param[in] qrtree
+ *          The tree used for the factorization
+ *
  * @param[in] M
  *          The number of rows of the matrix A. M >= 0.
  *
@@ -53,7 +52,10 @@
  * @param[in] LDA
  *          The leading dimension of the array A. LDA >= M.
  *
- * @param[in] descT
+ * @param[in] descTS
+ *          Auxiliary factorization data, computed by MORSE_zgelqf.
+ *
+ * @param[in] descTT
  *          Auxiliary factorization data, computed by MORSE_zgelqf.
  *
  * @param[in,out] B
@@ -184,7 +186,10 @@ int MORSE_zgelqs_param(const libhqr_tree_t *qrtree, int M, int N, int NRHS,
  * @param[in] A
  *          Details of the LQ factorization of the original matrix A as returned by MORSE_zgelqf.
  *
- * @param[in] T
+ * @param[in] TS
+ *          Auxiliary factorization data, computed by MORSE_zgelqf.
+ *
+ * @param[in] TT
  *          Auxiliary factorization data, computed by MORSE_zgelqf.
  *
  * @param[in,out] B
diff --git a/compute/zgels_param.c b/compute/zgels_param.c
index cd76d61b0..6c3c11da8 100644
--- a/compute/zgels_param.c
+++ b/compute/zgels_param.c
@@ -3,8 +3,7 @@
  * @copyright (c) 2009-2014 The University of Tennessee and The University
  *                          of Tennessee Research Foundation.
  *                          All rights reserved.
- * @copyright (c) 2012-2014 Inria. All rights reserved.
- * @copyright (c) 2012-2014 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved.
+ * @copyright (c) 2012-2017 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved.
  *
  **/
 
@@ -16,14 +15,10 @@
  *  MORSE is a software package provided by Univ. of Tennessee,
  *  Univ. of California Berkeley and Univ. of Colorado Denver
  *
- * @version 2.5.0
- * @comment This file has been automatically generated
- *          from Plasma 2.5.0 for MORSE 1.0.0
- * @author Jakub Kurzak
+ * @version 1.0.0
+ * @author Raphael Boucherie
  * @author Mathieu Faverge
- * @author Emmanuel Agullo
- * @author Cedric Castagnede
- * @date 2010-11-15
+ * @date 2017-05-17
  * @precisions normal z -> s d c
  *
  **/
@@ -50,6 +45,9 @@
  *
  *******************************************************************************
  *
+ * @param[in] qrtree
+ *          The tree used for the factorization
+ *
  * @param[in] trans
  *          Intended usage:
  *          = MorseNoTrans:   the linear system involves A;
@@ -77,7 +75,10 @@
  * @param[in] LDA
  *          The leading dimension of the array A. LDA >= max(1,M).
  *
- * @param[out] descT
+ * @param[out] descTS
+ *          On exit, auxiliary factorization data.
+ *
+ * @param[out] descTT
  *          On exit, auxiliary factorization data.
  *
  * @param[in,out] B
@@ -245,7 +246,10 @@ int MORSE_zgels_param(const libhqr_tree_t *qrtree, MORSE_enum trans, int M, int
  *          if M < N, A is overwritten by details of its LQ factorization as returned by
  *                      MORSE_zgelqf.
  *
- * @param[out] T
+ * @param[out] TS
+ *          On exit, auxiliary factorization data.
+ *
+ * @param[out] TT
  *          On exit, auxiliary factorization data.
  *
  * @param[in,out] B
diff --git a/compute/zgeqrf_param.c b/compute/zgeqrf_param.c
index 4525309bc..49020b8ef 100644
--- a/compute/zgeqrf_param.c
+++ b/compute/zgeqrf_param.c
@@ -3,8 +3,7 @@
  * @copyright (c) 2009-2014 The University of Tennessee and The University
  *                          of Tennessee Research Foundation.
  *                          All rights reserved.
- * @copyright (c) 2012-2014 Inria. All rights reserved.
- * @copyright (c) 2012-2014 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved.
+ * @copyright (c) 2012-2017 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved.
  *
  **/
 
@@ -16,15 +15,10 @@
  *  MORSE is a software package provided by Univ. of Tennessee,
  *  Univ. of California Berkeley and Univ. of Colorado Denver
  *
- * @version 2.5.0
- * @comment This file has been automatically generated
- *          from Plasma 2.5.0 for MORSE 1.0.0
- * @author Jakub Kurzak
+ * @version 1.0.0
  * @author Mathieu Faverge
- * @author Emmanuel Agullo
- * @author Cedric Castagnede
  * @author Raphael Boucherie
- * @date 2010-11-15
+ * @date 2017-05-17
  * @precisions normal z -> s d c
  *
  **/
diff --git a/compute/zgeqrs_param.c b/compute/zgeqrs_param.c
index 1b86b10be..86cf56f69 100644
--- a/compute/zgeqrs_param.c
+++ b/compute/zgeqrs_param.c
@@ -3,8 +3,7 @@
  * @copyright (c) 2009-2014 The University of Tennessee and The University
  *                          of Tennessee Research Foundation.
  *                          All rights reserved.
- * @copyright (c) 2012-2014 Inria. All rights reserved.
- * @copyright (c) 2012-2014 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved.
+ * @copyright (c) 2012-2017 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved.
  *
  **/
 
@@ -16,14 +15,10 @@
  *  MORSE is a software package provided by Univ. of Tennessee,
  *  Univ. of California Berkeley and Univ. of Colorado Denver
  *
- * @version 2.5.0
- * @comment This file has been automatically generated
- *          from Plasma 2.5.0 for MORSE 1.0.0
- * @author Jakub Kurzak
+ * @version 1.0.0
  * @author Mathieu Faverge
- * @author Emmanuel Agullo
- * @author Cedric Castagnede
- * @date 2010-11-15
+ * @author Raphael Boucherie
+ * @date 2017-05-17
  * @precisions normal z -> s d c
  *
  **/
@@ -269,7 +264,7 @@ int MORSE_zgeqrs_param_Tile_Async(const libhqr_tree_t *qrtree,
     MORSE_desc_t *subB;
     MORSE_context_t *morse;
     MORSE_desc_t D;
-    
+
     morse = morse_context_self();
     if (morse == NULL) {
         morse_fatal_error("MORSE_zgeqrs_param_Tile", "MORSE not initialized");
diff --git a/compute/zunglq_param.c b/compute/zunglq_param.c
index 990b51128..24294d56b 100644
--- a/compute/zunglq_param.c
+++ b/compute/zunglq_param.c
@@ -3,8 +3,7 @@
  * @copyright (c) 2009-2014 The University of Tennessee and The University
  *                          of Tennessee Research Foundation.
  *                          All rights reserved.
- * @copyright (c) 2012-2014 Inria. All rights reserved.
- * @copyright (c) 2012-2014 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved.
+ * @copyright (c) 2012-2017 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved.
  *
  **/
 
@@ -16,15 +15,10 @@
  *  MORSE is a software package provided by Univ. of Tennessee,
  *  Univ. of California Berkeley and Univ. of Colorado Denver
  *
- * @version 2.5.0
- * @comment This file has been automatically generated
- *          from Plasma 2.5.0 for MORSE 1.0.0
- * @author Hatem Ltaief
- * @author Jakub Kurzak
+ * @version 1.0.0
  * @author Mathieu Faverge
- * @author Emmanuel Agullo
- * @author Cedric Castagnede
- * @date 2010-11-15
+ * @author Raphael Boucherie
+ * @date 2017-05-17
  * @precisions normal z -> s d c
  *
  **/
@@ -40,6 +34,9 @@
  *
  *******************************************************************************
  *
+ * @param[in] qrtree
+ *          The tree used for the factorization
+ *
  * @param[in] M
  *          The number of rows of the matrix Q. M >= 0.
  *
diff --git a/compute/zungqr_param.c b/compute/zungqr_param.c
index 513c50af4..469c73cd4 100644
--- a/compute/zungqr_param.c
+++ b/compute/zungqr_param.c
@@ -3,8 +3,7 @@
  * @copyright (c) 2009-2014 The University of Tennessee and The University
  *                          of Tennessee Research Foundation.
  *                          All rights reserved.
- * @copyright (c) 2012-2014 Inria. All rights reserved.
- * @copyright (c) 2012-2014 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved.
+ * @copyright (c) 2012-2017 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved.
  *
  **/
 
@@ -16,15 +15,10 @@
  *  MORSE is a software package provided by Univ. of Tennessee,
  *  Univ. of California Berkeley and Univ. of Colorado Denver
  *
- * @version 2.5.0
- * @comment This file has been automatically generated
- *          from Plasma 2.5.0 for MORSE 1.0.0
- * @author Hatem Ltaief
- * @author Jakub Kurzak
+ * @version 1.0.0
  * @author Mathieu Faverge
- * @author Emmanuel Agullo
- * @author Cedric Castagnede
- * @date 2010-11-15
+ * @author Raphael Boucherie
+ * @date 2017-05-17
  * @precisions normal z -> s d c
  *
  **/
diff --git a/compute/zunmlq_param.c b/compute/zunmlq_param.c
index 3c47fa515..d00961827 100644
--- a/compute/zunmlq_param.c
+++ b/compute/zunmlq_param.c
@@ -3,8 +3,7 @@
  * @copyright (c) 2009-2014 The University of Tennessee and The University
  *                          of Tennessee Research Foundation.
  *                          All rights reserved.
- * @copyright (c) 2012-2014 Inria. All rights reserved.
- * @copyright (c) 2012-2014 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved.
+ * @copyright (c) 2012-2017 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved.
  *
  **/
 
@@ -17,15 +16,9 @@
  *  Univ. of California Berkeley and Univ. of Colorado Denver
  *
  * @version 2.5.0
- * @comment This file has been automatically generated
- *          from Plasma 2.5.0 for MORSE 1.0.0
- * @author Hatem Ltaief
- * @author Jakub Kurzak
- * @author Dulceneia Becker
  * @author Mathieu Faverge
- * @author Emmanuel Agullo
- * @author Cedric Castagnede
- * @date 2010-11-15
+ * @author Raphael Boucherie
+ * @date 2017-05-17
  * @precisions normal z -> s d c
  *
  **/
@@ -52,6 +45,9 @@
  *
  *******************************************************************************
  *
+ * @param[in] qrtree
+ *          The tree used for the factorization
+ *
  * @param[in] side
  *          Intended usage:
  *          = MorseLeft:  apply Q or Q**H from the left;
@@ -79,7 +75,10 @@
  * @param[in] LDA
  *          The leading dimension of the array A. LDA >= max(1,K).
  *
- * @param[in] descT
+ * @param[in] descTS
+ *          Auxiliary factorization data, computed by MORSE_zgelqf.
+ *
+ * @param[in] descTT
  *          Auxiliary factorization data, computed by MORSE_zgelqf.
  *
  * @param[in,out] C
diff --git a/compute/zunmqr_param.c b/compute/zunmqr_param.c
index 1e9af1473..a73e7ff4f 100644
--- a/compute/zunmqr_param.c
+++ b/compute/zunmqr_param.c
@@ -3,8 +3,7 @@
  * @copyright (c) 2009-2014 The University of Tennessee and The University
  *                          of Tennessee Research Foundation.
  *                          All rights reserved.
- * @copyright (c) 2012-2014 Inria. All rights reserved.
- * @copyright (c) 2012-2014 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved.
+ * @copyright (c) 2012-2017 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved.
  *
  **/
 
@@ -16,15 +15,10 @@
  *  MORSE is a software package provided by Univ. of Tennessee,
  *  Univ. of California Berkeley and Univ. of Colorado Denver
  *
- * @version 2.5.0
- * @comment This file has been automatically generated
- *          from Plasma 2.5.0 for MORSE 1.0.0
- * @author Hatem Ltaief
- * @author Jakub Kurzak
+ * @version 1.0.0
  * @author Mathieu Faverge
- * @author Emmanuel Agullo
- * @author Cedric Castagnede
- * @date 2010-11-15
+ * @author Raphael Boucherie
+ * @date 2017-05-17
  * @precisions normal z -> s d c
  *
  **/
@@ -51,6 +45,9 @@
  *
  *******************************************************************************
  *
+ * @param[in] qrtree
+ *          The tree used for the factorization
+ *
  * @param[in] side
  *          Intended usage:
  *          = MorseLeft:  apply Q or Q**H from the left;
@@ -81,7 +78,10 @@
  *          If side == MorseLeft,  LDA >= max(1,M).
  *          If side == MorseRight, LDA >= max(1,N).
  *
- * @param[in] descT
+ * @param[in] descTS
+ *          Auxiliary factorization data, computed by MORSE_zgeqrf.
+ *
+ * @param[in] descTT
  *          Auxiliary factorization data, computed by MORSE_zgeqrf.
  *
  * @param[in,out] C
diff --git a/testing/testing_zgels_hqr.c b/testing/testing_zgels_hqr.c
index c1d411a32..f58b51860 100644
--- a/testing/testing_zgels_hqr.c
+++ b/testing/testing_zgels_hqr.c
@@ -3,8 +3,7 @@
  * @copyright (c) 2009-2014 The University of Tennessee and The University
  *                          of Tennessee Research Foundation.
  *                          All rights reserved.
- * @copyright (c) 2012-2014 Inria. All rights reserved.
- * @copyright (c) 2012-2014 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved.
+ * @copyright (c) 2012-2017 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved.
  *
  **/
 
@@ -16,16 +15,10 @@
  *  MORSE is a software package provided by Univ. of Tennessee,
  *  Univ. of California Berkeley and Univ. of Colorado Denver
  *
- * @version 2.5.0
- * @comment This file has been automatically generated
- *          from Plasma 2.5.0 for MORSE 1.0.0
- * @author Bilel Hadri
- * @author Hatem Ltaief
+ * @version 1.0.0
  * @author Mathieu Faverge
- * @author Emmanuel Agullo
- * @author Cedric Castagnede
  * @author Boucherie Raphael
- * @date 2010-11-15
+ * @date 2017-05-17
  * @precisions normal z -> c d s
  *
  **/
@@ -228,8 +221,11 @@ int testing_zgels_hqr(int argc, char **argv)
 
         /* Morse routines */
         MORSE_zgelqf_param(&qrtree, M, N, A2, LDA, TS, TT);
+        //MORSE_zgelqf(M, N, A2, LDA, TS);
         MORSE_zunglq_param(&qrtree, M, N, K, A2, LDA, TS, TT, Q, LDA);
+        //MORSE_zunglq(M, N, K, A2, LDA, TS, Q, LDA);
         MORSE_zgelqs_param(&qrtree, M, N, NRHS, A2, LDA, TS, TT, B2, LDB);
+        //MORSE_zgelqs(M, N, NRHS, A2, LDA, TS, B2, LDB);
 
         /* Check the orthogonality, factorization and the solution */
         info_ortho = check_orthogonality(M, N, LDA, Q, eps);
diff --git a/testing/testing_zgels_systolic.c b/testing/testing_zgels_systolic.c
index d12c490a5..ef9db84d5 100644
--- a/testing/testing_zgels_systolic.c
+++ b/testing/testing_zgels_systolic.c
@@ -3,8 +3,7 @@
  * @copyright (c) 2009-2014 The University of Tennessee and The University
  *                          of Tennessee Research Foundation.
  *                          All rights reserved.
- * @copyright (c) 2012-2014 Inria. All rights reserved.
- * @copyright (c) 2012-2014 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved.
+ * @copyright (c) 2012-2017 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved.
  *
  **/
 
@@ -16,16 +15,10 @@
  *  MORSE is a software package provided by Univ. of Tennessee,
  *  Univ. of California Berkeley and Univ. of Colorado Denver
  *
- * @version 2.5.0
- * @comment This file has been automatically generated
- *          from Plasma 2.5.0 for MORSE 1.0.0
- * @author Bilel Hadri
- * @author Hatem Ltaief
+ * @version 1.0.0
  * @author Mathieu Faverge
- * @author Emmanuel Agullo
- * @author Cedric Castagnede
  * @author Boucherie Raphael
- * @date 2010-11-15
+ * @date 2017-05-17
  * @precisions normal z -> c d s
  *
  **/
@@ -86,7 +79,6 @@ int testing_zgels_systolic(int argc, char **argv)
     int info_ortho, info_solution, info_factorization;
     int LDAxN    = LDA*N;
     int LDBxNRHS = LDB*NRHS;
-    int domino, tsrr, llvl, hlvl, qr_a, qr_p;
 
     MORSE_Complex64_t *A1 = (MORSE_Complex64_t *)malloc(LDA*N*sizeof(MORSE_Complex64_t));
     MORSE_Complex64_t *A2 = (MORSE_Complex64_t *)malloc(LDA*N*sizeof(MORSE_Complex64_t));
@@ -134,6 +126,7 @@ int testing_zgels_systolic(int argc, char **argv)
 
     /* MORSE ZGELS */
     MORSE_zgels_param(&qrtree, MorseNoTrans, M, N, NRHS, A2, LDA, TS, TT, B2, LDB);
+    //MORSE_zgels(MorseNoTrans, M, N, NRHS, A2, LDA, TS, B2, LDB);
 
     /* MORSE ZGELS */
     if (M >= N)
@@ -142,6 +135,8 @@ int testing_zgels_systolic(int argc, char **argv)
     else
         /* Building the economy-size Q */
         MORSE_zunglq_param(&qrtree, M, N, K, A2, LDA, TS, TT, Q, LDA);
+        //MORSE_zunglq(M, N, K, A2, LDA, TS, Q, LDA);
+
 
     printf("\n");
     printf("------ TESTS FOR CHAMELEON ZGELS_SYSTOLIC ROUTINE -------  \n");
@@ -223,8 +218,10 @@ int testing_zgels_systolic(int argc, char **argv)
 
         /* Morse routines */
         MORSE_zgelqf_param(&qrtree, M, N, A2, LDA, TS, TT);
-        MORSE_zunglq_param(&qrtree, M, N, K, A2, LDA, TS, TT, Q, LDA);
-        MORSE_zgelqs_param(&qrtree, M, N, NRHS, A2, LDA, TS, TT, B2, LDB);
+        MORSE_zunglq(M, N, K, A2, LDA, TS, Q, LDA);
+        // MORSE_zunglq_param(&qrtree, M, N, K, A2, LDA, TS, TT, Q, LDA);
+        //MORSE_zgelqs_param(&qrtree, M, N, NRHS, A2, LDA, TS, TT, B2, LDB);
+        MORSE_zgelqs(M, N, NRHS, A2, LDA, TS, B2, LDB);
 
         /* Check the orthogonality, factorization and the solution */
         info_ortho = check_orthogonality(M, N, LDA, Q, eps);
@@ -287,8 +284,10 @@ int testing_zgels_systolic(int argc, char **argv)
 
         MORSE_zgelqf_param(&qrtree, M, N, A2, LDA, TS, TT);
         MORSE_ztrsm(MorseLeft, MorseLower, MorseNoTrans, MorseNonUnit, M, NRHS, 1.0, A2, LDA, B2, LDB);
-        MORSE_zunglq_param(&qrtree, M, N, K, A2, LDA, TS, TT, Q, LDA);
-        MORSE_zunmlq_param(&qrtree, MorseLeft, MorseConjTrans, N, NRHS, M, A2, LDA, TS, TT, B2, LDB);
+        //MORSE_zunglq_param(&qrtree, M, N, K, A2, LDA, TS, TT, Q, LDA);
+        MORSE_zunglq(M, N, K, A2, LDA, TS, Q, LDA);
+        //MORSE_zunmlq_param(&qrtree, MorseLeft, MorseConjTrans, N, NRHS, M, A2, LDA, TS, TT, B2, LDB);
+        MORSE_zunmlq(MorseLeft, MorseConjTrans, N, NRHS, M, A2, LDA, TS, B2, LDB);
     }
 
     /* Check the orthogonality, factorization and the solution */
diff --git a/timing/time_zgeqrf_hqr.c b/timing/time_zgeqrf_hqr.c
index 5c17848b1..a0236f6ec 100644
--- a/timing/time_zgeqrf_hqr.c
+++ b/timing/time_zgeqrf_hqr.c
@@ -3,8 +3,7 @@
  * @copyright (c) 2009-2014 The University of Tennessee and The University
  *                          of Tennessee Research Foundation.
  *                          All rights reserved.
- * @copyright (c) 2012-2014 Inria. All rights reserved.
- * @copyright (c) 2012-2014 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved.
+ * @copyright (c) 2012-2017 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved.
  *
  **/
 
@@ -41,10 +40,13 @@ RunTest(int *iparam, double *dparam, morse_time_t *t_)
     }
 
     /* Allocate Data */
-    PASTE_CODE_ALLOCATE_MATRIX( A, 1, MORSE_Complex64_t, LDA, N );
+    PASTE_CODE_ALLOCATE_MATRIX_TILE( descA, 1, MORSE_Complex64_t, LDA, M, N );
+    PASTE_CODE_ALLOCATE_MATRIX_TILE( descX,  ( check && M == N ), MORSE_Complex64_t, MorseComplexDouble, LDB, M, NRHS );
+    PASTE_CODE_ALLOCATE_MATRIX_TILE( descA0, ( check && M == N ), MORSE_Complex64_t, MorseComplexDouble, LDA, M, N    );
+    PASTE_CODE_ALLOCATE_MATRIX_TILE( descB,  ( check && M == N ), MORSE_Complex64_t, MorseComplexDouble, LDB, M, NRHS );
+
+    MORSE_zplrnt_Tile( descA, 5373 );
 
-    /* Initialize Data */
-    MORSE_zplrnt(M, N, A, LDA, 3456);
 
     /* Allocate Workspace */
     MORSE_Alloc_Workspace_zgels(M, N, &TS, P, Q);
@@ -52,8 +54,10 @@ RunTest(int *iparam, double *dparam, morse_time_t *t_)
     MORSE_Alloc_Workspace_zgels(M, N, &TT, P, Q);
     memset(TT->mat, 0, (TT->llm*TT->lln)*sizeof(MorseComplexDouble));
 
-    /* Save AT in lapack layout for check */
-    PASTE_CODE_ALLOCATE_COPY( Acpy, check, MORSE_Complex64_t, A, LDA, N );
+    /* Save A for check */
+    if (check == 1 && M == N){
+        MORSE_zlacpy_Tile(MorseUpperLower, descA, descA0);
+    }
 
     /* Initialize matrix */
     matrix.mt = TS->mt;
@@ -67,7 +71,7 @@ RunTest(int *iparam, double *dparam, morse_time_t *t_)
                      &matrix, -1, -1, 1, -1, 0, 0);
 
     START_TIMING();
-    MORSE_zgeqrf_param(&qrtree, M, N, A, LDA, TS, TT );
+    MORSE_zgeqrf_param(&qrtree, M, N, descA, LDA, TS, TT );
     STOP_TIMING();
 
     /* Check the solution */
@@ -92,7 +96,7 @@ RunTest(int *iparam, double *dparam, morse_time_t *t_)
     /* Free Workspace */
     MORSE_Dealloc_Workspace( &TS );
     MORSE_Dealloc_Workspace( &TT );
-    free( A );
+    free( descA );
 
     return 0;
 }
-- 
GitLab