diff --git a/testing/testing_zcheck.c b/testing/testing_zcheck.c
index 73afb27bc84a25d82b34a155ebb2df8d59cd5068..69965b76a41635c433abf56b687fe0bccf5d6306 100644
--- a/testing/testing_zcheck.c
+++ b/testing/testing_zcheck.c
@@ -26,7 +26,6 @@
 #include <math.h>
 #include <chameleon.h>
 
-
 #if !defined(CHAMELEON_SIMULATION)
 
 #include <coreblas/cblas.h>
@@ -43,6 +42,89 @@
 #define max( _a_, _b_ ) ( (_a_) > (_b_) ? (_a_) : (_b_) )
 #endif
 
+/**
+ ********************************************************************************
+ *
+ * @ingroup testing
+ *
+ * @brief Compares two matrices by their norms.
+ *
+ *******************************************************************************
+ *
+ * @param[in] uplo
+ *          Whether it is a upper triangular matrix, a lower triangular matrix or a general matrix.
+ *
+ * @param[in] M
+ *          The number of rows of the matrices A and B.
+ *
+ * @param[in] N
+ *          The number of columns of the matrices A and B.
+ *
+ * @param[in] A
+ *          The matrix A.
+ *
+ * @param[in] LDA
+ *          The leading dimension of the matrix A.
+ *
+ * @param[in] B
+ *          The matrix B.
+ *
+ * @param[in] LDB
+ *          The leading dimension of the matrix B.
+ *
+ * @retval 0 successfull comparison
+ *
+ *******************************************************************************
+ */
+int check_zmatrices_std( run_arg_list_t *args, cham_uplo_t uplo, int M, int N, CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_Complex64_t *B, int LDB )
+{
+    int info_solution        = 0;
+    double Anorm, Rnorm, result;
+    double eps               = LAPACKE_dlamch_work('e');
+
+    double *work = (double *)malloc(LDA*N*sizeof(double));
+
+    /* Computes the norms */
+    if ( uplo == ChamUpperLower ) {
+        Anorm = LAPACKE_zlange_work( LAPACK_COL_MAJOR, 'M', M, N, A, LDA, work );
+    }
+    else {
+        Anorm = LAPACKE_zlantr_work( LAPACK_COL_MAJOR, 'M', chameleon_lapack_const(uplo), 'N',
+                                        M, N, A, LDA, work );
+    }
+
+    /* Computes the difference with the core function */
+    CORE_zgeadd( ChamNoTrans, M, N, 1, A, LDA, -1, B, LDA );
+
+    /* Computes the residual's norm */
+    if ( uplo == ChamUpperLower ) {
+        Rnorm = LAPACKE_zlange_work( LAPACK_COL_MAJOR, 'M', M, N, B, LDA, work );
+    }
+    else {
+        Rnorm = LAPACKE_zlantr_work( LAPACK_COL_MAJOR, 'M', chameleon_lapack_const(uplo), 'N',
+                                        M, N, B, LDA, work );
+    }
+    if ( Anorm != 0. ) {
+        result = Rnorm / (Anorm * eps);
+    }
+    else {
+        result = Rnorm;
+    }
+
+    /* Verifies if the result is inside a threshold */
+    if ( isnan(Rnorm) || isinf(Rnorm) || isnan(result) || isinf(result) || (result > 10.0) ) {
+        info_solution = 1;
+    }
+    else {
+        info_solution = 0;
+    }
+
+    free(work);
+
+    (void)args;
+    return info_solution;
+}
+
 /**
  ********************************************************************************
  *
@@ -67,64 +149,26 @@
  */
 int check_zmatrices( run_arg_list_t *args, cham_uplo_t uplo, CHAM_desc_t *descA, CHAM_desc_t *descB )
 {
-    int info_solution = 0;
-    int M = descA->m;
-    int N = descB->n;
-    int LDA = descA->m;
-    int rank = CHAMELEON_Comm_rank();
-    double Anorm, Rnorm, result;
-    double eps = LAPACKE_dlamch_work('e');
+    int info_solution        = 0;
+    int M                    = descA->m;
+    int N                    = descB->n;
+    int LDA                  = M;
+    int LDB                  = M;
+    int rank                 = CHAMELEON_Comm_rank();
     CHAMELEON_Complex64_t *A = NULL;
     CHAMELEON_Complex64_t *B = NULL;
 
     if ( rank == 0 ) {
         A = (CHAMELEON_Complex64_t *)malloc(LDA*N*sizeof(CHAMELEON_Complex64_t));
-        B = (CHAMELEON_Complex64_t *)malloc(LDA*N*sizeof(CHAMELEON_Complex64_t));
+        B = (CHAMELEON_Complex64_t *)malloc(LDB*N*sizeof(CHAMELEON_Complex64_t));
     }
 
     /* Converts the matrices to LAPACK layout in order to compare them on the main process */
     CHAMELEON_zDesc2Lap( uplo, descA, A, LDA );
-    CHAMELEON_zDesc2Lap( uplo, descB, B, LDA );
+    CHAMELEON_zDesc2Lap( uplo, descB, B, LDB );
 
     if ( rank == 0 ) {
-        double *work = (double *)malloc(LDA*N*sizeof(double));
-
-        /* Computes the norms */
-        if ( uplo == ChamUpperLower ) {
-            Anorm = LAPACKE_zlange_work( LAPACK_COL_MAJOR, 'M', M, N, A, LDA, work );
-        }
-        else {
-            Anorm = LAPACKE_zlantr_work( LAPACK_COL_MAJOR, 'M', chameleon_lapack_const(uplo), 'N',
-                                         M, N, A, LDA, work );
-        }
-
-        /* Computes the difference with the core function */
-        CORE_zgeadd( ChamNoTrans, M, N, 1, A, LDA, -1, B, LDA );
-
-        /* Computes the residual's norm */
-        if ( uplo == ChamUpperLower ) {
-            Rnorm = LAPACKE_zlange_work( LAPACK_COL_MAJOR, 'M', M, N, B, LDA, work );
-        }
-        else {
-            Rnorm = LAPACKE_zlantr_work( LAPACK_COL_MAJOR, 'M', chameleon_lapack_const(uplo), 'N',
-                                         M, N, B, LDA, work );
-        }
-        if ( Anorm != 0. ) {
-            result = Rnorm / (Anorm * eps);
-        }
-        else {
-            result = Rnorm;
-        }
-
-        /* Verifies if the result is inside a threshold */
-        if (  isnan(Rnorm) || isinf(Rnorm) || isnan(result) || isinf(result) || (result > 10.0) ) {
-            info_solution = 1;
-        }
-        else {
-            info_solution = 0;
-        }
-
-        free(work);
+        info_solution = check_zmatrices_std( args, uplo, M, N, A, LDA, B, LDB );
         free(A);
         free(B);
     }
@@ -134,7 +178,6 @@ int check_zmatrices( run_arg_list_t *args, cham_uplo_t uplo, CHAM_desc_t *descA,
     MPI_Bcast( &info_solution, 1, MPI_INT, 0, MPI_COMM_WORLD );
 #endif
 
-    (void)args;
     return info_solution;
 }
 
@@ -161,16 +204,16 @@ int check_zmatrices( run_arg_list_t *args, cham_uplo_t uplo, CHAM_desc_t *descA,
  *
  * @param[in] norm_cham
  *          The computed norm.
- * 
+ *
  * @param[in] M
  *          The number of rows of the matrix A.
- * 
+ *
  * @param[in] N
  *          The number of columns of the matrix A.
  *
  * @param[in] A
  *          The matrix A.
- * 
+ *
  * @param[in] LDA
  *          The leading dimension of the matrix A.
  *
@@ -284,12 +327,12 @@ int check_znorm( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_normtype
     int info_solution        = 0;
     int M                    = descA->m;
     int N                    = descA->n;
-    int LDA                  = descA->m;
     int rank                 = CHAMELEON_Comm_rank();
     CHAMELEON_Complex64_t *A = NULL;
+    int LDA                  = M;
 
     if ( rank == 0 ) {
-        A = (CHAMELEON_Complex64_t *)malloc(N*LDA*sizeof(CHAMELEON_Complex64_t));
+        A = (CHAMELEON_Complex64_t *)malloc(LDA*N*sizeof(CHAMELEON_Complex64_t));
     }
 
     /* Converts the matrix to LAPACK layout in order to use the LAPACK norm function */
@@ -303,7 +346,6 @@ int check_znorm( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_normtype
     MPI_Bcast( &info_solution, 1, MPI_INT, 0, MPI_COMM_WORLD );
 #endif
 
-    (void)args;
     return info_solution;
 }
 
@@ -344,20 +386,20 @@ int check_znorm( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_normtype
 int check_zsum ( run_arg_list_t *args, cham_uplo_t uplo, cham_trans_t trans, CHAMELEON_Complex64_t alpha, CHAM_desc_t *descA,
                  CHAMELEON_Complex64_t beta, CHAM_desc_t *descBref, CHAM_desc_t *descBcham )
 {
-    int info_solution = 0;
-    int M = descBref->m;
-    int N = descBref->n;
-    int Am = (trans == ChamNoTrans)? M : N;
-    int An = (trans == ChamNoTrans)? N : M;
-    int LDA = Am;
-    int LDB = M;
-    int rank = CHAMELEON_Comm_rank();
+    int info_solution            = 0;
+    int M                        = descBref->m;
+    int N                        = descBref->n;
+    int Am                       = (trans == ChamNoTrans)? M : N;
+    int An                       = (trans == ChamNoTrans)? N : M;
+    int LDA                      = Am;
+    int LDB                      = M;
+    int rank                     = CHAMELEON_Comm_rank();
     double Anorm, Binitnorm, Rnorm, result;
     CHAMELEON_Complex64_t *A     = NULL;
     CHAMELEON_Complex64_t *Bref  = NULL;
     CHAMELEON_Complex64_t *Bcham = NULL;
     CHAMELEON_Complex64_t  mzone = -1.0;
-    cham_uplo_t uploA = uplo;
+    cham_uplo_t uploA            = uplo;
 
     if ( rank == 0 ) {
         A     = malloc(An*LDA*sizeof(CHAMELEON_Complex64_t));
@@ -455,7 +497,7 @@ int check_zsum ( run_arg_list_t *args, cham_uplo_t uplo, cham_trans_t trans, CHA
  *          The descriptor of the matrix A1.
  *
  * @param[in] descA2
- *          The descriptor of the scaled matrix A1. 
+ *          The descriptor of the scaled matrix A1.
  *
  * @retval 0 successfull comparison
  *
@@ -464,38 +506,42 @@ int check_zsum ( run_arg_list_t *args, cham_uplo_t uplo, cham_trans_t trans, CHA
 int check_zscale( run_arg_list_t *args, cham_uplo_t uplo, CHAMELEON_Complex64_t alpha, CHAM_desc_t *descA1, CHAM_desc_t *descA2 )
 {
     int info_solution;
-    int M = descA1->m;
-    int N = descA1->n;
-    int rank = CHAMELEON_Comm_rank();
-    CHAM_desc_t *descBlas;
-    CHAMELEON_Complex64_t *Ainit = NULL;
+    int M                        = descA1->m;
+    int N                        = descA1->n;
+    int LDA                      = M;
+    int rank                     = CHAMELEON_Comm_rank();
+    CHAMELEON_Complex64_t *A2    = NULL;
+    CHAMELEON_Complex64_t *A1    = NULL;
 
     if ( rank == 0 ) {
-        Ainit = (CHAMELEON_Complex64_t *)malloc(M*N*sizeof(CHAMELEON_Complex64_t));
+        A1 = (CHAMELEON_Complex64_t *)malloc(LDA*N*sizeof(CHAMELEON_Complex64_t));
+        A2 = (CHAMELEON_Complex64_t *)malloc(LDA*N*sizeof(CHAMELEON_Complex64_t));
     }
 
     /* Converts the matrix to LAPACK layout in order to scale with BLAS */
-    CHAMELEON_zDesc2Lap( uplo, descA1, Ainit, M );
+    CHAMELEON_zDesc2Lap( uplo, descA1, A1, LDA );
+    CHAMELEON_zDesc2Lap( uplo, descA2, A2, LDA );
 
     if ( rank == 0 ) {
         /* Scales using core function */
-        CORE_zlascal( uplo, M, N, alpha, Ainit, M );
+        CORE_zlascal( uplo, M, N, alpha, A1, LDA );
     }
 
-    /* Converts back into Chameleon to compare with check_zmatrices */
-    descBlas = CHAMELEON_Desc_CopyOnZero( descA1, NULL );
-    CHAMELEON_zLap2Desc( uplo, Ainit, M, descBlas );
-
     /* Compares the two matrices */
-    info_solution = check_zmatrices( args, uplo, descA2, descBlas );
-
     if ( rank == 0 ) {
-        free( Ainit );
+        info_solution = check_zmatrices_std( args, uplo, M, N, A2, LDA, A1, LDA );
     }
 
-    CHAMELEON_Desc_Destroy( &descBlas );
+    /* Broadcasts the result from the main processus */
+#if defined(CHAMELEON_USE_MPI)
+    MPI_Bcast( &info_solution, 1, MPI_INT, 0, MPI_COMM_WORLD );
+#endif
+
+    if ( rank == 0 ) {
+        free( A1 );
+        free( A2 );
+    }
 
-    (void)args;
     return info_solution;
 }
 
@@ -519,19 +565,19 @@ int check_zscale( run_arg_list_t *args, cham_uplo_t uplo, CHAMELEON_Complex64_t
  *
  * @param[in] M
  *          The number of rows of the matrices A and C.
- * 
+ *
  * @param[in] N
  *          The number of columns of the matrices B and C.
- * 
+ *
  * @param[in] K
  *          The number of columns of the matrix A and the  umber of rows of the matrxi B.
  *
  * @param[in] A
  *          The matrix A.
- * 
+ *
  * @param[in] LDA
  *          The leading dimension of the matrix A.
- * 
+ *
  * @param[in] B
  *          The matrix B.
  *
@@ -546,7 +592,7 @@ int check_zscale( run_arg_list_t *args, cham_uplo_t uplo, CHAMELEON_Complex64_t
  *
  * @param[in] C
  *          The matrix of the computed result alpha*A*B+beta*C.
- * 
+ *
  * @param[in] LDC
  *          The leading dimension of the matrices C and Cref.
  *
@@ -648,40 +694,27 @@ int check_zgemm_std( run_arg_list_t *args, cham_trans_t transA, cham_trans_t tra
 int check_zgemm( run_arg_list_t *args, cham_trans_t transA, cham_trans_t transB, CHAMELEON_Complex64_t alpha, CHAM_desc_t *descA,
                  CHAM_desc_t *descB, CHAMELEON_Complex64_t beta, CHAM_desc_t *descCref, CHAM_desc_t *descC )
 {
-    int An, LDA, Bn, LDB;
     int info_solution           = 0;
     int M                       = descC->m;
     int N                       = descC->n;
     int K                       = (transA != ChamNoTrans)? descA->m : descA->n;
-    int LDC                     = descC->m;
     int rank                    = CHAMELEON_Comm_rank();
     CHAMELEON_Complex64_t *A    = NULL;
     CHAMELEON_Complex64_t *B    = NULL;
     CHAMELEON_Complex64_t *C    = NULL;
     CHAMELEON_Complex64_t *Cref = NULL;
-
-    if ( transA == ChamNoTrans ) {
-        An  = K;
-        LDA = M;
-    } else {
-        An  = M;
-        LDA = K;
-    }
-    if ( transB == ChamNoTrans ) {
-        Bn  = N;
-        LDB = K;
-
-    } else {
-        Bn  = K;
-        LDB = N;
-    }
+    int An                      = ( transA == ChamNoTrans ) ? K : M;
+    int LDA                     = ( transA == ChamNoTrans ) ? M : K;
+    int Bn                      = ( transB == ChamNoTrans ) ? N : K;
+    int LDB                     = ( transB == ChamNoTrans ) ? K : N;
+    int LDC                     = M;
 
     /* Creates the LAPACK version of the matrices */
     if ( rank == 0 ) {
         A    = (CHAMELEON_Complex64_t *)malloc(LDA*An*sizeof(CHAMELEON_Complex64_t));
         B    = (CHAMELEON_Complex64_t *)malloc(LDB*Bn*sizeof(CHAMELEON_Complex64_t));
-        Cref = (CHAMELEON_Complex64_t *)malloc(LDC*N*sizeof(CHAMELEON_Complex64_t));
-        C    = (CHAMELEON_Complex64_t *)malloc(LDC*N*sizeof(CHAMELEON_Complex64_t));
+        Cref = (CHAMELEON_Complex64_t *)malloc(LDC*N *sizeof(CHAMELEON_Complex64_t));
+        C    = (CHAMELEON_Complex64_t *)malloc(LDC*N *sizeof(CHAMELEON_Complex64_t));
     }
 
     CHAMELEON_zDesc2Lap( ChamUpperLower, descA,    A,    LDA );
@@ -704,7 +737,6 @@ int check_zgemm( run_arg_list_t *args, cham_trans_t transA, cham_trans_t transB,
     MPI_Bcast(&info_solution, 1, MPI_INT, 0, MPI_COMM_WORLD);
 #endif
 
-    (void)args;
     return info_solution;
 }
 
@@ -716,31 +748,31 @@ int check_zgemm( run_arg_list_t *args, cham_trans_t transA, cham_trans_t transB,
  * @brief Compares two core function computed symmetric products.
  *
  *******************************************************************************
- * 
+ *
  * @param[in] matrix_type
  *          Whether it is a general, triangular, hermitian or symmetric matrix.
- * 
+ *
  * @param[in] side
  *          Whether the symmetric matrix A appears on the left or right in the operation.
  *
  * @param[in] uplo
  *          Whether it is a upper triangular matrix, a lower triangular matrix or a general matrix.
- * 
+ *
  * @param[in] M
  *          The order of the matrix A and number of rows of the matrices B and C.
- * 
+ *
  * @param[in] N
  *          The number of columns of the matrices B and C.
  *
  * @param[in] alpha
  *          The scalar alpha.
- * 
+ *
  * @param[in] A
  *          The symmetric matrix A.
- * 
+ *
  * @param[in] LDA
  *          The leading dimension of the matrix A.
- * 
+ *
  * @param[in] B
  *          The matrix B.
  *
@@ -755,7 +787,7 @@ int check_zgemm( run_arg_list_t *args, cham_trans_t transA, cham_trans_t transB,
  *
  * @param[in] C
  *          The matrix of the computed result alpha*A*B+beta*C or alpha*B*A+beta*C.
- * 
+ *
  * @param[in] LDC
  *          The leading dimension of the matrices C and Cref.
  *
@@ -856,7 +888,7 @@ int check_zsymm_std( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_side
  *
  * @param[in] matrix_type
  *          Whether it is a general, triangular, hermitian or symmetric matrix.
- * 
+ *
  * @param[in] side
  *          Whether the symmetric matrix A appears on the left or right in the operation.
  *
@@ -892,22 +924,15 @@ int check_zsymm( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_side_t s
     int info_solution = 0;
     int M             = descC->m;
     int N             = descC->n;
-    int LDB           = M;
-    int LDC           = M;
     int rank          = CHAMELEON_Comm_rank();
-    int An, LDA;
     CHAMELEON_Complex64_t *A    = NULL;
     CHAMELEON_Complex64_t *B    = NULL;
     CHAMELEON_Complex64_t *Cref = NULL;
     CHAMELEON_Complex64_t *C    = NULL;
-
-    if ( side == ChamLeft ) {
-        LDA = M;
-        An  = M;
-    } else {
-        LDA = N;
-        An  = N;
-    }
+    int An                      = ( side == ChamLeft )? M : N;
+    int LDA                     = An;
+    int LDB                     = M;
+    int LDC                     = M;
 
     if ( rank == 0 ) {
         A    = ( CHAMELEON_Complex64_t * ) malloc( LDA*An*sizeof( CHAMELEON_Complex64_t ) );
@@ -937,7 +962,6 @@ int check_zsymm( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_side_t s
     MPI_Bcast(&info_solution, 1, MPI_INT, 0, MPI_COMM_WORLD);
 #endif
 
-    (void)args;
     return info_solution;
 }
 
@@ -952,7 +976,7 @@ int check_zsymm( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_side_t s
  *
  * @param[in] matrix_type
  *          Whether it is a general, triangular, hermitian or symmetric matrix.
- * 
+ *
  * @param[in] uplo
  *          Whether it is a upper triangular matrix, a lower triangular matrix or a general matrix.
  *
@@ -961,19 +985,19 @@ int check_zsymm( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_side_t s
  *
  * @param[in] N
  *          The order of the matrix C and number of rows of the matrices A and B.
- * 
+ *
  * @param[in] K
  *          The number of columns of the matrices A and B.
  *
  * @param[in] alpha
  *          The scalar alpha.
- * 
+ *
  * @param[in] A
  *          The matrix A.
- * 
+ *
  * @param[in] LDA
  *          The leading dimension of the matrix A.
- * 
+ *
  * @param[in] B
  *          The matrix B - only used for her2k and syr2k.
  *
@@ -988,7 +1012,7 @@ int check_zsymm( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_side_t s
  *
  * @param[in] C
  *          The symmetric matrix of the computed result.
- * 
+ *
  * @param[in] LDC
  *          The leading dimension of the matrices Cref and C.
  *
@@ -997,7 +1021,7 @@ int check_zsymm( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_side_t s
  *******************************************************************************
  */
 int check_zsyrk_std( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_uplo_t uplo, cham_trans_t trans, int N, int K, CHAMELEON_Complex64_t alpha,
-                     CHAMELEON_Complex64_t *A, CHAMELEON_Complex64_t *B, int LDA, CHAMELEON_Complex64_t beta, CHAMELEON_Complex64_t *Cref,
+                     CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_Complex64_t *B, int LDB, CHAMELEON_Complex64_t beta, CHAMELEON_Complex64_t *Cref,
                      CHAMELEON_Complex64_t *C, int LDC )
 {
     int     info_solution = 0;
@@ -1008,13 +1032,13 @@ int check_zsyrk_std( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_uplo
     if ( trans == ChamNoTrans ) {
         Anorm = LAPACKE_zlange( LAPACK_COL_MAJOR, 'I', N, K, A, LDA );
         if ( B != NULL ) {
-            Bnorm = LAPACKE_zlange( LAPACK_COL_MAJOR, 'I', N, K, B, LDA );
+            Bnorm = LAPACKE_zlange( LAPACK_COL_MAJOR, 'I', N, K, B, LDB );
         }
     }
     else {
         Anorm = LAPACKE_zlange( LAPACK_COL_MAJOR, 'O', K, N, A, LDA );
         if ( B != NULL ) {
-            Bnorm = LAPACKE_zlange( LAPACK_COL_MAJOR, 'O', K, N, B, LDA );
+            Bnorm = LAPACKE_zlange( LAPACK_COL_MAJOR, 'O', K, N, B, LDB );
         }
     }
 
@@ -1044,7 +1068,7 @@ int check_zsyrk_std( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_uplo
         }
         else {
             cblas_zher2k( CblasColMajor, (CBLAS_UPLO)uplo, (CBLAS_TRANSPOSE)trans,
-                            N, K, CBLAS_SADDR(alpha), A, LDA, B, LDA, creal(beta), Cref, LDC );
+                            N, K, CBLAS_SADDR(alpha), A, LDA, B, LDB, creal(beta), Cref, LDC );
             ABnorm = 2. * Anorm * Bnorm;
         }
 
@@ -1060,16 +1084,14 @@ int check_zsyrk_std( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_uplo
         }
         else {
             cblas_zsyr2k( CblasColMajor, (CBLAS_UPLO)uplo, (CBLAS_TRANSPOSE)trans,
-                            N, K, CBLAS_SADDR(alpha), A, LDA, B, LDA, CBLAS_SADDR(beta), Cref, LDC );
+                            N, K, CBLAS_SADDR(alpha), A, LDA, B, LDB, CBLAS_SADDR(beta), Cref, LDC );
             ABnorm = 2. * Anorm * Bnorm;
         }
 
         Clapacknorm = LAPACKE_zlansy_work( LAPACK_COL_MAJOR, 'I', chameleon_lapack_const(uplo), N, Cref, LDC, work );
     }
 
-    CORE_ztradd( uplo, ChamNoTrans, N, N,
-                    -1.,  C,    LDC,
-                    1.,  Cref, LDC );
+    CORE_ztradd( uplo, ChamNoTrans, N, N, -1., C, LDC, 1., Cref, LDC );
 
     /* Computes the norm with the core function's result */
 #if defined(PRECISION_z) || defined(PRECISION_c)
@@ -1082,7 +1104,10 @@ int check_zsyrk_std( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_uplo
         Rnorm = LAPACKE_zlansy_work( LAPACK_COL_MAJOR, 'M', chameleon_lapack_const(uplo), N, Cref, LDC, NULL );
     }
     result = Rnorm / ((ABnorm + Crefnorm) * K * eps);
-
+    run_arg_add_double( args, "||A||", Anorm );
+    run_arg_add_double( args, "||B||", Bnorm );
+    run_arg_add_double( args, "||C||", Crefnorm );
+    run_arg_add_double( args, "||R||", Rnorm );
     /* Verifies if the result is inside a threshold */
     if ( isinf(Clapacknorm) || isinf(Cchamnorm) || isnan(result) || isinf(result) || (result > 10.0) ) {
         info_solution = 1;
@@ -1094,7 +1119,6 @@ int check_zsyrk_std( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_uplo
     free(work);
 
     (void)matrix_type;
-    (void)args;
     return info_solution;
 }
 
@@ -1109,7 +1133,7 @@ int check_zsyrk_std( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_uplo
  *
  * @param[in] matrix_type
  *          Whether it is a general, triangular, hermitian or symmetric matrix.
- * 
+ *
  * @param[in] uplo
  *          Whether it is a upper triangular matrix, a lower triangular matrix or a general matrix.
  *
@@ -1142,9 +1166,9 @@ int check_zsyrk( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_uplo_t u
                  CHAMELEON_Complex64_t alpha, CHAM_desc_t *descA, CHAM_desc_t *descB,
                  CHAMELEON_Complex64_t beta, CHAM_desc_t *descCref, CHAM_desc_t *descC )
 {
-    int LDA, info_solution      = 0;
-    int An, K, N                = descC->n;
-    int LDC                     = N;
+    int info_solution           = 0;
+    int An, Bn, K, N;
+    int LDA, LDB, LDC;
     int rank                    = CHAMELEON_Comm_rank();
     CHAMELEON_Complex64_t *A    = NULL;
     CHAMELEON_Complex64_t *B    = NULL;
@@ -1152,23 +1176,30 @@ int check_zsyrk( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_uplo_t u
     CHAMELEON_Complex64_t *C    = NULL;
 
     if ( trans == ChamNoTrans ) {
+        N   = descA->m;
         K   = descA->n;
-        LDA = N;
         An  = K;
+        Bn  = K;
+        LDA = N;
+        LDB = N;
     }
     else {
+        N   = descA->n;
         K   = descA->m;
-        LDA = K;
         An  = N;
+        Bn  = N;
+        LDA = K;
+        LDB = K;
     }
+    LDC = N;
 
     if ( rank == 0 ) {
-        A    = (CHAMELEON_Complex64_t *)malloc(LDA * An * sizeof(CHAMELEON_Complex64_t));
+        A    = (CHAMELEON_Complex64_t *)malloc( LDA * An * sizeof(CHAMELEON_Complex64_t) );
         if ( descB != NULL ) {
-            B = (CHAMELEON_Complex64_t *)malloc(LDA * An * sizeof(CHAMELEON_Complex64_t));
+            B = (CHAMELEON_Complex64_t *)malloc( LDB * Bn * sizeof(CHAMELEON_Complex64_t) );
         }
-        Cref = (CHAMELEON_Complex64_t *)malloc(LDC * N * sizeof(CHAMELEON_Complex64_t));
-        C    = (CHAMELEON_Complex64_t *)malloc(LDC * N * sizeof(CHAMELEON_Complex64_t));
+        Cref = (CHAMELEON_Complex64_t *)malloc( LDC * N * sizeof(CHAMELEON_Complex64_t) );
+        C    = (CHAMELEON_Complex64_t *)malloc( LDC * N * sizeof(CHAMELEON_Complex64_t) );
     }
 
     /* Creates the LAPACK version of the matrices */
@@ -1176,12 +1207,12 @@ int check_zsyrk( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_uplo_t u
     CHAMELEON_zDesc2Lap( uplo,           descCref, Cref, LDC );
     CHAMELEON_zDesc2Lap( uplo,           descC,    C,    LDC );
     if ( descB != NULL ) {
-        CHAMELEON_zDesc2Lap( ChamUpperLower, descB, B, LDA );
+        CHAMELEON_zDesc2Lap( ChamUpperLower, descB, B, LDB );
     }
 
     if ( rank == 0 ) {
 
-        info_solution = check_zsyrk_std( args, matrix_type, uplo, trans, N, K, alpha, A, B, LDA, beta, Cref, C, LDC );
+        info_solution = check_zsyrk_std( args, matrix_type, uplo, trans, N, K, alpha, A, LDA, B, LDB, beta, Cref, C, LDC );
 
         free(A);
         free(C);
@@ -1196,7 +1227,6 @@ int check_zsyrk( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_uplo_t u
     MPI_Bcast(&info_solution, 1, MPI_INT, 0, MPI_COMM_WORLD);
 #endif
 
-    (void)args;
     return info_solution;
 }
 
@@ -1223,10 +1253,10 @@ int check_zsyrk( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_uplo_t u
  *
  * @param[in] diag
  *          Whether A is a unitary diagonal matrix or not.
- * 
+ *
  * @param[in] M
  *          The number of rows of the matrix B and the order of the matrix A if side is left.
- * 
+ *
  * @param[in] N
  *          The number of columns of the matrix B and the order of the matrix A if side is right.
  *
@@ -1235,7 +1265,7 @@ int check_zsyrk( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_uplo_t u
  *
  * @param[in] A
  *          The matrix A.
- * 
+ *
  * @param[in] LDA
  *          The leading dimension of the matrix A.
  *
@@ -1244,7 +1274,7 @@ int check_zsyrk( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_uplo_t u
  *
  * @param[in] B
  *          The matrix of the computed result.
- * 
+ *
  * @param[in] LDB
  *          The leading dimension of the matrices Bref and B.
  *
@@ -1255,10 +1285,9 @@ int check_zsyrk( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_uplo_t u
 int check_ztrmm_std( run_arg_list_t *args, int check_func, cham_side_t side, cham_uplo_t uplo, cham_trans_t trans, cham_diag_t diag, int M, int N,
                      CHAMELEON_Complex64_t alpha, CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_Complex64_t *Bref, CHAMELEON_Complex64_t *B, int LDB )
 {
-    int info_solution           = 0;
-    int An                      = M;
-    double Anorm, Bnorm, Rnorm, result;
     CHAMELEON_Complex64_t mzone = -1.0;
+    int     info_solution, An;
+    double  Anorm, Bnorm, Rnorm, result;
     char    normTypeA, normTypeB;
     double *work;
     double  eps = LAPACKE_dlamch_work('e');
@@ -1270,8 +1299,7 @@ int check_ztrmm_std( run_arg_list_t *args, int check_func, cham_side_t side, cha
             normTypeA = 'I';
         }
         normTypeB = 'O';
-        An  = M;
-        LDA = M;
+        An = M;
     }
     else {
         normTypeA = 'O';
@@ -1279,8 +1307,7 @@ int check_ztrmm_std( run_arg_list_t *args, int check_func, cham_side_t side, cha
             normTypeA = 'I';
         }
         normTypeB = 'I';
-        An  = N;
-        LDA = N;
+        An = N;
     }
 
     work  = malloc( sizeof(double) * An );
@@ -1289,7 +1316,7 @@ int check_ztrmm_std( run_arg_list_t *args, int check_func, cham_side_t side, cha
                                  An, An, A, LDA, work );
     free( work );
 
-    Bnorm    = LAPACKE_zlange( LAPACK_COL_MAJOR, normTypeB, M, N, B,    LDB );
+    Bnorm = LAPACKE_zlange( LAPACK_COL_MAJOR, normTypeB, M, N, B, LDB );
 
     /* Makes the multiplication with the core function */
     if (check_func == CHECK_TRMM) {
@@ -1366,25 +1393,18 @@ int check_ztrmm( run_arg_list_t *args, int check_func, cham_side_t side, cham_up
     int info_solution           = 0;
     int M                       = descBref->m;
     int N                       = descBref->n;
-    int An, LDA, LDB            = M;
     int rank                    = CHAMELEON_Comm_rank();
     CHAMELEON_Complex64_t *A    = NULL;
     CHAMELEON_Complex64_t *Bref = NULL;
     CHAMELEON_Complex64_t *B    = NULL;
-
-    if ( side == ChamLeft ) {
-        An  = M;
-        LDA = M;
-    }
-    else {
-        An  = N;
-        LDA = N;
-    }
+    int An                      = ( side == ChamLeft )? M : N;
+    int LDA                     = An;
+    int LDB                     = M;
 
     if ( rank == 0 ) {
-        A    = (CHAMELEON_Complex64_t *)malloc(An*LDA*sizeof(CHAMELEON_Complex64_t));
-        Bref = (CHAMELEON_Complex64_t *)malloc(N *LDB*sizeof(CHAMELEON_Complex64_t));
-        B    = (CHAMELEON_Complex64_t *)malloc(N *LDB*sizeof(CHAMELEON_Complex64_t));
+        A    = (CHAMELEON_Complex64_t *)malloc( LDA*An*sizeof(CHAMELEON_Complex64_t) );
+        Bref = (CHAMELEON_Complex64_t *)malloc( LDB*N *sizeof(CHAMELEON_Complex64_t) );
+        B    = (CHAMELEON_Complex64_t *)malloc( LDB*N *sizeof(CHAMELEON_Complex64_t) );
     }
 
     /* Creates the LAPACK version of the matrices */
@@ -1406,7 +1426,6 @@ int check_ztrmm( run_arg_list_t *args, int check_func, cham_side_t side, cham_up
     MPI_Bcast(&info_solution, 1, MPI_INT, 0, MPI_COMM_WORLD);
 #endif
 
-    (void)args;
     return info_solution;
 }
 
@@ -1435,7 +1454,7 @@ int check_ztrmm( run_arg_list_t *args, int check_func, cham_side_t side, cham_up
 int check_zlauum( run_arg_list_t *args, cham_uplo_t uplo, CHAM_desc_t *descA, CHAM_desc_t *descAAt )
 {
     int info_local, info_global;
-    int N = descA->n;
+    int N       = descA->n;
     double eps  = LAPACKE_dlamch_work('e');
     double result, Anorm, AAtnorm, Rnorm;
     CHAM_desc_t *descAt;
@@ -1498,7 +1517,7 @@ int check_zlauum( run_arg_list_t *args, cham_uplo_t uplo, CHAM_desc_t *descA, CH
  *
  * @param[in] matrix_type
  *          Whether it is a general, triangular, hermitian or symmetric matrix.
- * 
+ *
  * @param[in] uplo
  *          Whether it is a upper triangular matrix or a lower triangular matrix.
  *
@@ -1512,12 +1531,11 @@ int check_zlauum( run_arg_list_t *args, cham_uplo_t uplo, CHAM_desc_t *descA, CH
  *
  *******************************************************************************
  */
-int check_zxxtrf( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_uplo_t uplo,
-                  CHAM_desc_t *descA, CHAM_desc_t *descLU )
+int check_zxxtrf( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_uplo_t uplo, CHAM_desc_t *descA, CHAM_desc_t *descLU )
 {
     int info_local, info_global;
-    int M = descA->m;
-    int N = descA->n;
+    int M      = descA->m;
+    int N      = descA->n;
     double Anorm, Rnorm, result;
     double eps = LAPACKE_dlamch_work('e');
 
@@ -1612,7 +1630,6 @@ int check_zxxtrf( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_uplo_t
     info_global = info_local;
 #endif
 
-    (void)args;
     return info_global;
 }
 
@@ -1627,13 +1644,13 @@ int check_zxxtrf( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_uplo_t
  *
  * @param[in] matrix_type
  *          Whether it is a general, triangular, hermitian or symmetric matrix.
- * 
+ *
  * @param[in] uplo
  *          Whether it is a upper triangular matrix or a lower triangular matrix.
- * 
+ *
  * @param[in] M
  *          The number of rows of the matrices A and LU.
- * 
+ *
  * @param[in] N
  *          The number of columns of the matrices A and LU.
  *
@@ -1642,7 +1659,7 @@ int check_zxxtrf( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_uplo_t
  *
  * @param[in] LU
  *          The matrix with the computed factorisation of the matrix A.
- * 
+ *
  * @param[in] LDA
  *          The leading dimension of the matrices A and LU.
  *
@@ -1653,28 +1670,25 @@ int check_zxxtrf( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_uplo_t
 int check_zxxtrf_std( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_uplo_t uplo, int M, int N,
                       CHAMELEON_Complex64_t *A, CHAMELEON_Complex64_t *LU, int LDA )
 {
-    int info_global;
-    CHAM_desc_t *descA, *descLU;
-    int      P      = parameters_getvalue_int( "P" );
-    int      Q      = parameters_compute_q( P );
-    intptr_t mtxfmt = parameters_getvalue_int( "mtxfmt" );
-    int      nb     = run_arg_get_int( args, "nb", 320 );
+    int          info;
+    CHAM_desc_t *descA;
+    CHAM_desc_t *descLU;
+    int          nb = 320;
 
     CHAMELEON_Desc_Create(
-        &descA,  (void*)(-mtxfmt), ChamComplexDouble, nb, nb, nb * nb, LDA, N, 0, 0, M, N, P, Q );
+        &descA,  CHAMELEON_MAT_ALLOC_TILE, ChamComplexDouble, nb, nb, nb * nb, LDA, N, 0, 0, M, N, 1, 1 );
     CHAMELEON_Desc_Create(
-        &descLU, (void*)(-mtxfmt), ChamComplexDouble, nb, nb, nb * nb, LDA, N, 0, 0, M, N, P, Q );
+        &descLU, CHAMELEON_MAT_ALLOC_TILE, ChamComplexDouble, nb, nb, nb * nb, LDA, N, 0, 0, M, N, 1, 1 );
 
-    CHAMELEON_zLap2Desc( uplo, A,  LDA, descA  );
-    CHAMELEON_zLap2Desc( uplo, LU, LDA, descLU );
+    CHAMELEON_zLap2Desc( uplo,           A,  LDA, descA  );
+    CHAMELEON_zLap2Desc( ChamUpperLower, LU, LDA, descLU );
 
-    info_global = check_zxxtrf( args, matrix_type, uplo, descA, descLU );
+    info = check_zxxtrf( args, matrix_type, uplo, descA, descLU );
 
     CHAMELEON_Desc_Destroy( &descA  );
     CHAMELEON_Desc_Destroy( &descLU );
 
-    (void)args;
-    return info_global;
+    return info;
 }
 
 /**
@@ -1688,13 +1702,13 @@ int check_zxxtrf_std( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_upl
  *
  * @param[in] matrix_type
  *          Whether it is a general, triangular, hermitian or symmetric matrix.
- * 
+ *
  * @param[in] trans
  *          Whether the A matrix is non transposed, tranposed or conjugate transposed.
  *
  * @param[in] uplo
  *          Whether it is a upper triangular matrix or a lower triangular matrix.
- * 
+ *
  * @param[in] descA
  *          The descriptor of the symmetric matrix A.
  *
@@ -1712,10 +1726,10 @@ int check_zsolve( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_trans_t
                   CHAM_desc_t *descA, CHAM_desc_t *descX, CHAM_desc_t *descB )
 {
     int info_local, info_global;
-    int M = descA->m;
-    int N = descA->n;
-    double Anorm, Bnorm, Xnorm, Rnorm, result;
-    double eps = LAPACKE_dlamch_work('e');
+    int M                = descA->m;
+    int N                = descA->n;
+    double Anorm, Bnorm, Xnorm, Rnorm, result = 0;
+    double eps           = LAPACKE_dlamch_work('e');
     cham_normtype_t norm = (trans == ChamNoTrans) ? ChamOneNorm : ChamInfNorm;
 
     /* Computes the norms */
@@ -1754,7 +1768,7 @@ int check_zsolve( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_trans_t
     run_arg_add_double( args, "||Ax-b||", Rnorm );
     run_arg_add_double( args, "||Ax-b||/N/eps/(||A||||x||+||b||", result );
 
-    if (  isnan(Xnorm) || isinf(Xnorm) || isnan(result) || isinf(result) || (result > 60.0) ) {
+    if ( isnan(Xnorm) || isinf(Xnorm) || isnan(result) || isinf(result) || (result > 60.0) ) {
         info_local = 1;
     }
     else {
@@ -1768,8 +1782,6 @@ int check_zsolve( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_trans_t
     info_global = info_local;
 #endif
 
-    (void)Bnorm;
-    (void)args;
     return info_global;
 }
 
@@ -1784,22 +1796,22 @@ int check_zsolve( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_trans_t
  *
  * @param[in] matrix_type
  *          Whether it is a general, triangular, hermitian or symmetric matrix.
- * 
+ *
  * @param[in] trans
  *          Whether the A matrix is non transposed, tranposed or conjugate transposed.
  *
  * @param[in] uplo
  *          Whether it is a upper triangular matrix or a lower triangular matrix.
- * 
+ *
  * @param[in] N
  *          The order of the matrix A and the number of rows of the matrices X and B.
- * 
+ *
  * @param[in] NRHS
  *          The number of columns of the matrices X and B.
- * 
+ *
  * @param[in] A
  *          The symmetric matrix A.
- * 
+ *
  * @param[in] LDA
  *          The leading dimenson of the matrix A.
  *
@@ -1808,7 +1820,7 @@ int check_zsolve( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_trans_t
  *
  * @param[inout] B
  *          The matrix B = A*X. On exit, it contains the remainder from A*x-B.
- * 
+ *
  * @param[in] LDB
  *          The leading dimension of the matrices X and B.
  *
@@ -1819,32 +1831,28 @@ int check_zsolve( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_trans_t
 int check_zsolve_std( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_trans_t trans, cham_uplo_t uplo, int N, int NRHS,
                       CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_Complex64_t *X, CHAMELEON_Complex64_t *B, int LDB )
 {
-    int info_global;
-    CHAM_desc_t *descA, *descB, *descX;
-    int      P      = parameters_getvalue_int( "P" );
-    int      Q      = parameters_compute_q( P );
-    intptr_t mtxfmt = parameters_getvalue_int( "mtxfmt" );
-    int      nb     = run_arg_get_int( args, "nb", 320 );
+    int          info;
+    CHAM_desc_t *descA, *descX, *descB;
+    int          nb = 320;
 
     CHAMELEON_Desc_Create(
-        &descA, (void*)(-mtxfmt), ChamComplexDouble, nb, nb, nb * nb, LDA, N,    0, 0, N, N,    P, Q );
+        &descB, CHAMELEON_MAT_ALLOC_TILE, ChamComplexDouble, nb, nb, nb * nb, LDB, NRHS, 0, 0, N, NRHS, 1, 1 );
     CHAMELEON_Desc_Create(
-        &descB, (void*)(-mtxfmt), ChamComplexDouble, nb, nb, nb * nb, LDB, NRHS, 0, 0, N, NRHS, P, Q );
+        &descA, CHAMELEON_MAT_ALLOC_TILE, ChamComplexDouble, nb, nb, nb * nb, LDA, N,    0, 0, N, N,    1, 1 );
     CHAMELEON_Desc_Create(
-        &descX, (void*)(-mtxfmt), ChamComplexDouble, nb, nb, nb * nb, LDB, NRHS, 0, 0, N, NRHS, P, Q );
+        &descX, CHAMELEON_MAT_ALLOC_TILE, ChamComplexDouble, nb, nb, nb * nb, LDB, NRHS, 0, 0, N, NRHS, 1, 1 );
 
-    CHAMELEON_zLap2Desc( uplo, A, LDA, descA );
-    CHAMELEON_zLap2Desc( uplo, B, LDB, descB );
-    CHAMELEON_zLap2Desc( uplo, X, LDB, descX );
+    CHAMELEON_zLap2Desc( uplo,           A, LDA, descA );
+    CHAMELEON_zLap2Desc( ChamUpperLower, B, LDB, descB );
+    CHAMELEON_zLap2Desc( ChamUpperLower, X, LDB, descX );
 
-    info_global = check_zsolve( args, matrix_type, trans, uplo, descA, descX, descB );
+    info = check_zsolve( args, matrix_type, trans, uplo, descA, descX, descB );
 
     CHAMELEON_Desc_Destroy( &descA );
     CHAMELEON_Desc_Destroy( &descB );
     CHAMELEON_Desc_Destroy( &descX );
 
-    (void)args;
-    return info_global;
+    return info;
 }
 
 /**
@@ -1878,12 +1886,12 @@ int check_zsolve_std( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_tra
 int check_ztrtri( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_uplo_t uplo, cham_diag_t diag,
                   CHAM_desc_t *descA0, CHAM_desc_t *descAi )
 {
-    int info_local, info_global;
-    int N = descA0->m;
-    cham_uplo_t uplo_inv;
+    int          info_local, info_global;
+    cham_uplo_t  uplo_inv;
     CHAM_desc_t *descI, *descB = NULL;
-    double Rnorm, Anorm, Ainvnorm, result;
-    double eps = LAPACKE_dlamch_work('e');
+    double       Rnorm, Anorm, Ainvnorm, result;
+    double       eps = LAPACKE_dlamch_work('e');
+    int          N   = descA0->m;
 
     /* Creates an identity matrix */
     descI = CHAMELEON_Desc_Copy( descA0, NULL );
@@ -2018,7 +2026,7 @@ int check_ztrtri( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_uplo_t
  *
  * @param[in] diag
  *          Whether they are unitary diagonal matrices or not.
- * 
+ *
  * @param[in] N
  *          the order of the matrices A0 and Ai.
  *
@@ -2027,7 +2035,7 @@ int check_ztrtri( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_uplo_t
  *
  * @param[in] Ai
  *          The matrix Ai.
- * 
+ *
  * @param[in] LDA
  *          The leading dimension of the matrices A0 and Ai.
  *
@@ -2038,28 +2046,24 @@ int check_ztrtri( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_uplo_t
 int check_ztrtri_std( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_uplo_t uplo, cham_diag_t diag,
                       int N, CHAMELEON_Complex64_t *A0, CHAMELEON_Complex64_t *Ai, int LDA )
 {
-    int info_global;
+    int          info;
     CHAM_desc_t *descA0, *descAi;
-    int      P      = parameters_getvalue_int( "P" );
-    int      Q      = parameters_compute_q( P );
-    intptr_t mtxfmt = parameters_getvalue_int( "mtxfmt" );
-    int      nb     = run_arg_get_int( args, "nb", 320 );
+    int          nb = 320;
 
     CHAMELEON_Desc_Create(
-        &descA0, (void*)(-mtxfmt), ChamComplexDouble, nb, nb, nb * nb, LDA, N, 0, 0, N, N, P, Q );
+        &descA0, CHAMELEON_MAT_ALLOC_TILE, ChamComplexDouble, nb, nb, nb * nb, LDA, N, 0, 0, N, N, 1, 1 );
     CHAMELEON_Desc_Create(
-        &descAi, (void*)(-mtxfmt), ChamComplexDouble, nb, nb, nb * nb, LDA, N, 0, 0, N, N, P, Q );
+        &descAi, CHAMELEON_MAT_ALLOC_TILE, ChamComplexDouble, nb, nb, nb * nb, LDA, N, 0, 0, N, N, 1, 1 );
 
     CHAMELEON_zLap2Desc( uplo, A0, LDA, descA0 );
     CHAMELEON_zLap2Desc( uplo, Ai, LDA, descAi );
 
-    info_global = check_ztrtri( args, matrix_type, uplo, diag, descA0, descAi );
+    info = check_ztrtri( args, matrix_type, uplo, diag, descA0, descAi );
 
     CHAMELEON_Desc_Destroy( &descA0 );
     CHAMELEON_Desc_Destroy( &descAi );
 
-    (void)args;
-    return info_global;
+    return info;
 }
 
 /**
@@ -2081,9 +2085,9 @@ int check_ztrtri_std( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_upl
 int check_zortho( run_arg_list_t *args, CHAM_desc_t *descQ )
 {
     int info_local, info_global;
-    int M = descQ->m;
-    int N = descQ->n;
-    int minMN = chameleon_min(M, N);
+    int M      = descQ->m;
+    int N      = descQ->n;
+    int minMN  = chameleon_min(M, N);
     double result, normR;
     double eps = LAPACKE_dlamch_work('e');
     CHAM_desc_t *descI, *subI;
@@ -2124,7 +2128,6 @@ int check_zortho( run_arg_list_t *args, CHAM_desc_t *descQ )
     info_global = info_local;
 #endif
 
-    (void)args;
     return info_global;
 }
 
@@ -2354,7 +2357,7 @@ int check_zgeqrf( run_arg_list_t *args, CHAM_desc_t *descA, CHAM_desc_t *descAF,
  *
  * @param[in] trans
  *          Whether the matrix Q is transposed, conjugate transposed or not transposed.
- * 
+ *
  * @param[in] descC
  *          The descriptor of the matrix C.
  *
@@ -2390,7 +2393,7 @@ int check_zqc( run_arg_list_t *args, cham_side_t side, cham_trans_t trans,
     Rnorm = CHAMELEON_zlange_Tile( ChamOneNorm, descCC );
     result = Rnorm / ( M * Cnorm * eps );
 
-    if (  isnan(CCnorm) || isinf(CCnorm) || isnan(result) || isinf(result) || (result > 60.0) ) {
+    if ( isnan(CCnorm) || isinf(CCnorm) || isnan(result) || isinf(result) || (result > 60.0) ) {
         info_local = 1;
     }
     else {
@@ -2420,7 +2423,7 @@ int check_zqc( run_arg_list_t *args, cham_side_t side, cham_trans_t trans,
  *
  * @param[in] trans
  *          Whether the matrix A is transposed, conjugate transposed or not transposed.
- * 
+ *
  * @param[in] descA
  *          The descriptor of the matrix A.
  *
@@ -2477,7 +2480,7 @@ int check_zgeqrs( run_arg_list_t *args, cham_trans_t trans, CHAM_desc_t *descA,
         return 0;
     }
 
-    if (  isnan(Rnorm) || isinf(Rnorm) || isnan(result) || isinf(result) || (result > 60.0) ) {
+    if ( isnan(Rnorm) || isinf(Rnorm) || isnan(result) || isinf(result) || (result > 60.0) ) {
         info_local = 1;
     }
     else {
@@ -2506,7 +2509,7 @@ int check_zgeqrs( run_arg_list_t *args, cham_trans_t trans, CHAM_desc_t *descA,
  *
  * @param[in] trans
  *          Whether the matrix A is transposed, conjugate transposed or not transposed.
- * 
+ *
  * @param[in] descA
  *          The descriptor of the matrix A.
  *
@@ -2562,7 +2565,7 @@ int check_zgelqs( run_arg_list_t *args, cham_trans_t trans, CHAM_desc_t *descA,
         CHAMELEON_Desc_Destroy( &descRR );
     }
 
-    if (  isnan(Rnorm) || isinf(Rnorm) || isnan(result) || isinf(result) || (result > 60.0) ) {
+    if ( isnan(Rnorm) || isinf(Rnorm) || isnan(result) || isinf(result) || (result > 60.0) ) {
         info_local = 1;
     }
     else {
@@ -2591,7 +2594,7 @@ int check_zgelqs( run_arg_list_t *args, cham_trans_t trans, CHAM_desc_t *descA,
  *
  * @param[in] trans
  *          Whether the matrix A is transposed, conjugate transposed or not transposed.
- * 
+ *
  * @param[in] descA
  *          The descriptor of the matrix A.
  *
@@ -2690,7 +2693,7 @@ int check_zrankk( run_arg_list_t *args, int K, CHAM_desc_t *descA )
         result = Rnorm / (Anorm * eps);
 
         /* Verifies if the result is inside a threshold */
-        if (  isnan(Rnorm) || isinf(Rnorm) || isnan(result) || isinf(result) || (result > 10.0) ) {
+        if ( isnan(Rnorm) || isinf(Rnorm) || isnan(result) || isinf(result) || (result > 10.0) ) {
             info_solution = 1;
         }
         else {
@@ -2747,7 +2750,7 @@ int check_zrankk( run_arg_list_t *args, int K, CHAM_desc_t *descA )
  *
  *******************************************************************************
  */
-int check_zgepdf_qr( run_arg_list_t *args, CHAM_desc_t *descA1, CHAM_desc_t *descA2, CHAM_desc_t *descQ1, 
+int check_zgepdf_qr( run_arg_list_t *args, CHAM_desc_t *descA1, CHAM_desc_t *descA2, CHAM_desc_t *descQ1,
                      CHAM_desc_t *descQ2, CHAM_desc_t *descAF1 )
 {
     int info_local, info_global;
@@ -2892,7 +2895,6 @@ int check_zxxpd( run_arg_list_t *args,
     info_global = info_local;
 #endif
 
-    (void)args;
     return info_global;
 }
 
diff --git a/testing/testing_zcheck.h b/testing/testing_zcheck.h
index 701ae8b6da4dd53b8cb9433bbfc08ec16603bf06..877cb3c990880e4d79f8dc7bc2bd6812249aa4fc 100644
--- a/testing/testing_zcheck.h
+++ b/testing/testing_zcheck.h
@@ -36,6 +36,7 @@
 
 #if defined(CHAMELEON_SIMULATION)
 
+static inline int check_zmatrices_std ( run_arg_list_t *args, cham_uplo_t uplo, int M, int N, CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_Complex64_t *B, int LDB ) { return 0; }
 static inline int check_zmatrices     ( run_arg_list_t *args, cham_uplo_t uplo, CHAM_desc_t *descA, CHAM_desc_t *descB ) { return 0; }
 static inline int check_znorm_std     ( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_normtype_t norm_type, cham_uplo_t uplo,
                                         cham_diag_t diag, double norm_cham, int M, int N, CHAMELEON_Complex64_t *A, int LDA ) { return 0; }
@@ -52,8 +53,8 @@ static inline int check_zsymm_std     ( run_arg_list_t *args, cham_mtxtype_t mat
                                         CHAMELEON_Complex64_t *B, int LDB, CHAMELEON_Complex64_t beta, CHAMELEON_Complex64_t *Cref, CHAMELEON_Complex64_t *C, int LDC ) { return 0; }
 static inline int check_zsymm         ( run_arg_list_t *args, cham_mtxtype_t mtxtype, cham_side_t side, cham_uplo_t uplo, CHAMELEON_Complex64_t alpha, CHAM_desc_t *descA, CHAM_desc_t *descB,
                                         CHAMELEON_Complex64_t beta, CHAM_desc_t *descCref, CHAM_desc_t *descC ) { return 0; }
-static inline int check_zsyrk_std     ( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_uplo_t uplo, cham_trans_t trans, int N, int K, CHAMELEON_Complex64_t alpha, CHAMELEON_Complex64_t *A,
-                                        CHAMELEON_Complex64_t *B, int LDA, CHAMELEON_Complex64_t beta, CHAMELEON_Complex64_t *Cref, CHAMELEON_Complex64_t *C, int LDC ) { return 0; }
+static inline int check_zsyrk_std     ( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_uplo_t uplo, cham_trans_t trans, int N, int K, CHAMELEON_Complex64_t alpha, CHAMELEON_Complex64_t *A, int LDA,
+                                        CHAMELEON_Complex64_t *B, int LDB, CHAMELEON_Complex64_t beta, CHAMELEON_Complex64_t *Cref, CHAMELEON_Complex64_t *C, int LDC ) { return 0; }
 static inline int check_zsyrk         ( run_arg_list_t *args, cham_mtxtype_t mtxtype, cham_uplo_t uplo, cham_trans_t trans, CHAMELEON_Complex64_t alpha, CHAM_desc_t *descA,
                                         CHAM_desc_t *descB, CHAMELEON_Complex64_t beta, CHAM_desc_t *descCref, CHAM_desc_t *descC ) { return 0; }
 static inline int check_ztrmm_std     ( run_arg_list_t *args, int check_func, cham_side_t side, cham_uplo_t uplo, cham_trans_t trans, cham_diag_t diag, int M, int N, CHAMELEON_Complex64_t alpha,
@@ -92,6 +93,7 @@ static inline int check_zxxpd         ( run_arg_list_t *args,
 
 #else /* !defined(CHAMELEON_SIMULATION) */
 
+int check_zmatrices_std ( run_arg_list_t *args, cham_uplo_t uplo, int M, int N, CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_Complex64_t *B, int LDB );
 int check_zmatrices     ( run_arg_list_t *args, cham_uplo_t uplo, CHAM_desc_t *descA, CHAM_desc_t *descB );
 int check_znorm_std     ( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_normtype_t norm_type, cham_uplo_t uplo,
                           cham_diag_t diag, double norm_cham, int M, int N, CHAMELEON_Complex64_t *A, int LDA );
@@ -108,8 +110,8 @@ int check_zsymm_std     ( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham
                           CHAMELEON_Complex64_t *B, int LDB, CHAMELEON_Complex64_t beta, CHAMELEON_Complex64_t *Cref, CHAMELEON_Complex64_t *C, int LDC );
 int check_zsymm         ( run_arg_list_t *args, cham_mtxtype_t mtxtype, cham_side_t side, cham_uplo_t uplo, CHAMELEON_Complex64_t alpha, CHAM_desc_t *descA, CHAM_desc_t *descB,
                           CHAMELEON_Complex64_t beta, CHAM_desc_t *descCref, CHAM_desc_t *descC );
-int check_zsyrk_std     ( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_uplo_t uplo, cham_trans_t trans, int N, int K, CHAMELEON_Complex64_t alpha, CHAMELEON_Complex64_t *A,
-                          CHAMELEON_Complex64_t *B, int LDA, CHAMELEON_Complex64_t beta, CHAMELEON_Complex64_t *Cref, CHAMELEON_Complex64_t *C, int LDC );
+int check_zsyrk_std     ( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_uplo_t uplo, cham_trans_t trans, int N, int K, CHAMELEON_Complex64_t alpha, CHAMELEON_Complex64_t *A, int LDA,
+                          CHAMELEON_Complex64_t *B, int LDB, CHAMELEON_Complex64_t beta, CHAMELEON_Complex64_t *Cref, CHAMELEON_Complex64_t *C, int LDC );
 int check_zsyrk         ( run_arg_list_t *args, cham_mtxtype_t mtxtype, cham_uplo_t uplo, cham_trans_t trans, CHAMELEON_Complex64_t alpha, CHAM_desc_t *descA,
                           CHAM_desc_t *descB, CHAMELEON_Complex64_t beta, CHAM_desc_t *descCref, CHAM_desc_t *descC );
 int check_ztrmm_std     ( run_arg_list_t *args, int check_func, cham_side_t side, cham_uplo_t uplo, cham_trans_t trans, cham_diag_t diag, int M, int N, CHAMELEON_Complex64_t alpha,