From b47ab4bf6d999c9e8b4d59e4ed28acd9fd184463 Mon Sep 17 00:00:00 2001
From: Mathieu Faverge <mathieu.faverge@inria.fr>
Date: Fri, 15 Nov 2019 21:08:25 +0100
Subject: [PATCH] Add args parameter to all check functions to be able to
 easily add output in the future Add norms output to QR functions, A,
 A-fact(A), and Id-QQ' Remove debug printf

---
 new-testing/parameters.c         |  8 -----
 new-testing/testing_zauxiliary.c |  1 +
 new-testing/testing_zcheck.c     | 59 ++++++++++++++++++--------------
 new-testing/testing_zcheck.h     | 41 ++++++++++------------
 new-testing/testing_zgeadd.c     |  2 +-
 new-testing/testing_zgelqf.c     |  6 ++--
 new-testing/testing_zgelqf_hqr.c |  6 ++--
 new-testing/testing_zgelqs.c     |  2 +-
 new-testing/testing_zgels.c      |  2 +-
 new-testing/testing_zgels_hqr.c  |  2 +-
 new-testing/testing_zgemm.c      |  2 +-
 new-testing/testing_zgeqrf.c     |  6 ++--
 new-testing/testing_zgeqrf_hqr.c |  6 ++--
 new-testing/testing_zgeqrs.c     |  2 +-
 new-testing/testing_zgesv.c      |  2 +-
 new-testing/testing_zgetrs.c     |  2 +-
 new-testing/testing_zhemm.c      |  2 +-
 new-testing/testing_zher2k.c     |  2 +-
 new-testing/testing_zherk.c      |  2 +-
 new-testing/testing_zlacpy.c     |  2 +-
 new-testing/testing_zlange.c     |  2 +-
 new-testing/testing_zlanhe.c     |  2 +-
 new-testing/testing_zlansy.c     |  2 +-
 new-testing/testing_zlantr.c     |  2 +-
 new-testing/testing_zlascal.c    |  2 +-
 new-testing/testing_zlauum.c     |  2 +-
 new-testing/testing_zposv.c      |  2 +-
 new-testing/testing_zpotri.c     |  2 +-
 new-testing/testing_zpotrs.c     |  2 +-
 new-testing/testing_zsymm.c      |  2 +-
 new-testing/testing_zsyr2k.c     |  2 +-
 new-testing/testing_zsyrk.c      |  2 +-
 new-testing/testing_zsysv.c      |  2 +-
 new-testing/testing_zsytrs.c     |  2 +-
 new-testing/testing_ztradd.c     |  2 +-
 new-testing/testing_ztrmm.c      |  2 +-
 new-testing/testing_ztrsm.c      |  2 +-
 new-testing/testing_ztrtri.c     |  2 +-
 new-testing/testing_zunglq.c     |  2 +-
 new-testing/testing_zunglq_hqr.c |  2 +-
 new-testing/testing_zungqr.c     |  2 +-
 new-testing/testing_zungqr_hqr.c |  2 +-
 new-testing/testing_zunmlq.c     |  2 +-
 new-testing/testing_zunmlq_hqr.c |  2 +-
 new-testing/testing_zunmqr.c     |  2 +-
 new-testing/testing_zunmqr_hqr.c |  2 +-
 new-testing/values.c             | 11 ------
 47 files changed, 102 insertions(+), 118 deletions(-)

diff --git a/new-testing/parameters.c b/new-testing/parameters.c
index c1d437223..5e8e1ff2e 100644
--- a/new-testing/parameters.c
+++ b/new-testing/parameters.c
@@ -79,8 +79,6 @@ parameters_read_list( parameter_t *param,
         current  = current->next;
     }
 
-    fprintf( stderr, "%s (list): ", param->name );
-
     token = strtok_r( str, delim, &saveptr );
     while ( token != NULL ) {
         assert( current == NULL );
@@ -105,7 +103,6 @@ parameters_read_list( parameter_t *param,
         token = strtok_r( NULL, delim, &saveptr );
     }
 
-    fprintf( stderr, "\n" );
     free( str );
 }
 
@@ -183,14 +180,12 @@ parameters_read_intrange( parameter_t *param,
         current  = current->next;
     }
 
-    fprintf( stderr, "%s (range): ", param->name );
     while ( start <= end ) {
         assert( current == NULL );
         current = calloc( 1, sizeof(vallist_t) );
 
         /* Read the value */
         current->value.ival = start;
-        fprintf( stderr, " %d", start );
 
         /* Insert at the end of the list */
         if ( previous != NULL ) {
@@ -206,7 +201,6 @@ parameters_read_intrange( parameter_t *param,
 
         start += step;
     }
-    fprintf( stderr, "\n" );
 }
 
 /**
@@ -286,7 +280,6 @@ parameters_addvalues( parameter_t *param,
                       const char  *values )
 {
     if ( param->has_arg == 0 ) {
-        fprintf( stderr, "%s: enabled\n", param->name );
         param->value.ival = 1;
     }
     else if ( param->has_arg == 1 ) {
@@ -358,7 +351,6 @@ parameters_read_file( const char  *filename )
             values++;
         }
 
-        //fprintf( stderr, "%s: %s", name, values );
         param = parameters_getbyname( name );
         if ( param == NULL ) {
             fprintf( stderr, "Parameter %s is not know. We skip it\n", name );
diff --git a/new-testing/testing_zauxiliary.c b/new-testing/testing_zauxiliary.c
index 76d69f43e..dacbad271 100644
--- a/new-testing/testing_zauxiliary.c
+++ b/new-testing/testing_zauxiliary.c
@@ -96,6 +96,7 @@ static parameter_t parameters[] = {
     { "||b||",         "Norm of the vector b",                  1008, PARAM_OUTPUT, 2, 12, TestValDouble, {0}, NULL, pread_double, sprint_double },
     { "||x||",         "Norm of the vector x",                  1009, PARAM_OUTPUT, 2, 12, TestValDouble, {0}, NULL, pread_double, sprint_double },
     { "||Ax-b||/N/eps/(||A||||x||+||b||", "",                   1010, PARAM_OUTPUT, 2, 22, TestValDouble, {0}, NULL, pread_double, sprint_double },
+    { "||I-QQ'||",     "Orthonormality of Q",                   1011, PARAM_OUTPUT, 2, 13, TestValDouble, {0}, NULL, pread_double, sprint_double },
 };
 
 #define STR_MAX_LENGTH 256
diff --git a/new-testing/testing_zcheck.c b/new-testing/testing_zcheck.c
index 43fc59187..52fc9f396 100644
--- a/new-testing/testing_zcheck.c
+++ b/new-testing/testing_zcheck.c
@@ -57,7 +57,7 @@
  *
  *******************************************************************************
  */
-int check_zmatrices( cham_uplo_t uplo, CHAM_desc_t *descA, CHAM_desc_t *descB )
+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;
@@ -155,7 +155,7 @@ int check_zmatrices( cham_uplo_t uplo, CHAM_desc_t *descA, CHAM_desc_t *descB )
  *
  *******************************************************************************
  */
-int check_znorm( cham_mtxtype_t matrix_type, cham_normtype_t norm_type, cham_uplo_t uplo,
+int check_znorm( 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, CHAM_desc_t *descA )
 {
     int info_solution = 0;
@@ -271,11 +271,11 @@ int check_znorm( cham_mtxtype_t matrix_type, cham_normtype_t norm_type, cham_upl
  *
  *******************************************************************************
  */
-int check_zsum ( cham_uplo_t uplo, cham_trans_t trans,
+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;
+    int info_solution = 0;
     int M = descBref->m;
     int N = descBref->n;
     int Am = (trans == ChamNoTrans)? M : N;
@@ -390,7 +390,7 @@ int check_zsum ( cham_uplo_t uplo, cham_trans_t trans,
  *
  *******************************************************************************
  */
-int check_zscale( cham_uplo_t uplo, CHAMELEON_Complex64_t alpha, CHAM_desc_t *descA1, CHAM_desc_t *descA2 )
+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;
@@ -416,7 +416,7 @@ int check_zscale( cham_uplo_t uplo, CHAMELEON_Complex64_t alpha, CHAM_desc_t *de
     CHAMELEON_Lapack_to_Tile( Ainit, M, descBlas );
 
     /* Compares the two matrices */
-    info_solution = check_zmatrices( uplo, descA2, descBlas );
+    info_solution = check_zmatrices( args, uplo, descA2, descBlas );
 
     if ( rank == 0 ) {
         free( Ainit );
@@ -464,10 +464,11 @@ int check_zscale( cham_uplo_t uplo, CHAMELEON_Complex64_t alpha, CHAM_desc_t *de
  *
  *******************************************************************************
  */
-int check_zgemm( cham_trans_t transA, cham_trans_t transB, CHAMELEON_Complex64_t alpha, CHAM_desc_t *descA,
+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, info_solution;
+    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;
@@ -518,7 +519,6 @@ int check_zgemm( cham_trans_t transA, cham_trans_t transB, CHAMELEON_Complex64_t
 
     if ( rank == 0 ) {
         double eps = LAPACKE_dlamch_work('e');
-        double *work = (double *)malloc(chameleon_max(M, N)* sizeof(double));
 
         /* Makes the multiplication with the core function */
         cblas_zgemm( CblasColMajor, (CBLAS_TRANSPOSE)transA, (CBLAS_TRANSPOSE)transB, M, N, K,
@@ -538,7 +538,6 @@ int check_zgemm( cham_trans_t transA, cham_trans_t transB, CHAMELEON_Complex64_t
             info_solution = 0;
         }
 
-        free(work);
         free(A);
         free(B);
         free(C);
@@ -590,7 +589,7 @@ int check_zgemm( cham_trans_t transA, cham_trans_t transB, CHAMELEON_Complex64_t
  *
  *******************************************************************************
  */
-int check_zsymm( cham_mtxtype_t matrix_type, cham_side_t side, cham_uplo_t uplo,
+int check_zsymm( run_arg_list_t *args, cham_mtxtype_t matrix_type, 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 )
 {
@@ -730,7 +729,7 @@ int check_zsymm( cham_mtxtype_t matrix_type, cham_side_t side, cham_uplo_t uplo,
  *
  *******************************************************************************
  */
-int check_zsyrk( cham_mtxtype_t matrix_type, cham_uplo_t uplo, cham_trans_t trans,
+int check_zsyrk( run_arg_list_t *args, cham_mtxtype_t matrix_type, 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 )
 {
@@ -908,7 +907,7 @@ int check_zsyrk( cham_mtxtype_t matrix_type, cham_uplo_t uplo, cham_trans_t tran
  *
  *******************************************************************************
  */
-int check_ztrmm( int check_func, cham_side_t side, cham_uplo_t uplo, cham_trans_t trans, cham_diag_t diag,
+int check_ztrmm( run_arg_list_t *args, int check_func, cham_side_t side, cham_uplo_t uplo, cham_trans_t trans, cham_diag_t diag,
                  CHAMELEON_Complex64_t alpha, CHAM_desc_t *descA, CHAM_desc_t *descB, CHAM_desc_t *descBref )
 {
     int info_solution = 0;
@@ -1017,7 +1016,7 @@ int check_ztrmm( int check_func, cham_side_t side, cham_uplo_t uplo, cham_trans_
  *
  *******************************************************************************
  */
-int check_zlauum( cham_uplo_t uplo, CHAM_desc_t *descA, CHAM_desc_t *descAAt )
+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;
@@ -1226,7 +1225,7 @@ int check_zxxtrf( run_arg_list_t *args, cham_mtxtype_t mtxtype, cham_uplo_t uplo
  *
  *******************************************************************************
  */
-int check_zsolve( cham_mtxtype_t mtxtype, cham_trans_t trans, cham_uplo_t uplo,
+int check_zsolve( run_arg_list_t *args, cham_mtxtype_t mtxtype, cham_trans_t trans, cham_uplo_t uplo,
                   CHAM_desc_t *descA, CHAM_desc_t *descX, CHAM_desc_t *descB )
 {
     int info_local, info_global;
@@ -1312,7 +1311,7 @@ int check_zsolve( cham_mtxtype_t mtxtype, cham_trans_t trans, cham_uplo_t uplo,
  *
  *******************************************************************************
  */
-int check_ztrtri( cham_mtxtype_t matrix_type, cham_uplo_t uplo, cham_diag_t diag,
+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;
@@ -1437,7 +1436,7 @@ int check_ztrtri( cham_mtxtype_t matrix_type, cham_uplo_t uplo, cham_diag_t diag
     return info_global;
 }
 
-int check_zortho( CHAM_desc_t *descQ )
+int check_zortho( run_arg_list_t *args, CHAM_desc_t *descQ )
 {
     int info_local, info_global;
     int M = descQ->m;
@@ -1464,6 +1463,8 @@ int check_zortho( CHAM_desc_t *descQ )
     normR = CHAMELEON_zlansy_Tile( ChamOneNorm, ChamUpper, subI );
     result = normR / ( (double)minMN * eps );
 
+    run_arg_add_double( args, "||I-QQ'||", normR );
+
     if ( isnan(result) || isinf(result) || (result > 60.0) ) {
         info_local = 1;
     }
@@ -1507,7 +1508,7 @@ int check_zortho( CHAM_desc_t *descQ )
  *
  *******************************************************************************
  */
-int check_zgelqf( CHAM_desc_t *descA, CHAM_desc_t *descAF, CHAM_desc_t *descQ )
+int check_zgelqf( run_arg_list_t *args, CHAM_desc_t *descA, CHAM_desc_t *descAF, CHAM_desc_t *descQ )
 {
     int info_local, info_global;
     int M = descQ->m;
@@ -1560,6 +1561,9 @@ int check_zgelqf( CHAM_desc_t *descA, CHAM_desc_t *descAF, CHAM_desc_t *descQ )
     Anorm = CHAMELEON_zlange_Tile( ChamOneNorm, descA );
     result = Rnorm / ( (double)N * Anorm * eps );
 
+    run_arg_add_double( args, "||A||", Anorm );
+    run_arg_add_double( args, "||A-fact(A)||", Rnorm );
+
     if ( isnan(result) || isinf(result) || (result > 60.0) ) {
         info_local = 1;
     }
@@ -1600,7 +1604,7 @@ int check_zgelqf( CHAM_desc_t *descA, CHAM_desc_t *descAF, CHAM_desc_t *descQ )
  *
  *******************************************************************************
  */
-int check_zgeqrf( CHAM_desc_t *descA, CHAM_desc_t *descAF, CHAM_desc_t *descQ )
+int check_zgeqrf( run_arg_list_t *args, CHAM_desc_t *descA, CHAM_desc_t *descAF, CHAM_desc_t *descQ )
 {
     int info_local, info_global;
     int M = descQ->m;
@@ -1653,6 +1657,9 @@ int check_zgeqrf( CHAM_desc_t *descA, CHAM_desc_t *descAF, CHAM_desc_t *descQ )
     Anorm = CHAMELEON_zlange_Tile( ChamOneNorm, descA );
     result = Rnorm / ( (double)M * Anorm * eps );
 
+    run_arg_add_double( args, "||A||", Anorm );
+    run_arg_add_double( args, "||A-fact(A)||", Rnorm );
+
     if ( isnan(result) || isinf(result) || (result > 60.0) ) {
         info_local = 1;
     }
@@ -1670,7 +1677,7 @@ int check_zgeqrf( CHAM_desc_t *descA, CHAM_desc_t *descAF, CHAM_desc_t *descQ )
     return info_global;
 }
 
-int check_zqc( cham_side_t side, cham_trans_t trans,
+int check_zqc( run_arg_list_t *args, cham_side_t side, cham_trans_t trans,
                CHAM_desc_t *descC, CHAM_desc_t *descQ, CHAM_desc_t *descCC )
 {
     int info_local, info_global;
@@ -1710,7 +1717,7 @@ int check_zqc( cham_side_t side, cham_trans_t trans,
     return info_global;
 }
 
-int check_zgeqrs( cham_trans_t trans, CHAM_desc_t *descA, double Bnorm, CHAM_desc_t *descR )
+int check_zgeqrs( run_arg_list_t *args, cham_trans_t trans, CHAM_desc_t *descA, double Bnorm, CHAM_desc_t *descR )
 {
     int info_local, info_global, nb;
     int M = descA->m;
@@ -1770,7 +1777,7 @@ int check_zgeqrs( cham_trans_t trans, CHAM_desc_t *descA, double Bnorm, CHAM_des
     return info_global;
 }
 
-int check_zgelqs( cham_trans_t trans, CHAM_desc_t *descA, double Bnorm, CHAM_desc_t *descR )
+int check_zgelqs( run_arg_list_t *args, cham_trans_t trans, CHAM_desc_t *descA, double Bnorm, CHAM_desc_t *descR )
 {
     int info_local, info_global, nb;
     int M = descA->m;
@@ -1830,21 +1837,21 @@ int check_zgelqs( cham_trans_t trans, CHAM_desc_t *descA, double Bnorm, CHAM_des
     return info_global;
 }
 
-int check_zgels( cham_trans_t trans, CHAM_desc_t *descA, CHAM_desc_t *descX, CHAM_desc_t *descB )
+int check_zgels( run_arg_list_t *args, cham_trans_t trans, CHAM_desc_t *descA, CHAM_desc_t *descX, CHAM_desc_t *descB )
 {
     int info_solution;
     int M = descA->m;
     int N = descA->n;
     double Bnorm = CHAMELEON_zlange_Tile( ChamInfNorm, descB );
 
-    info_solution = check_zsolve( ChamGeneral, trans, ChamUpperLower,
+    info_solution = check_zsolve( args, ChamGeneral, trans, ChamUpperLower,
                                   descA, descX, descB );
 
     if ( M >= N ) {
-        info_solution = check_zgeqrs( trans, descA, Bnorm, descB );
+        info_solution = check_zgeqrs( args, trans, descA, Bnorm, descB );
     }
     else {
-        info_solution = check_zgelqs( trans, descA, Bnorm, descB );
+        info_solution = check_zgelqs( args, trans, descA, Bnorm, descB );
     }
 
 #if defined(CHAMELEON_USE_MPI)
diff --git a/new-testing/testing_zcheck.h b/new-testing/testing_zcheck.h
index 08e98f2e3..0afd9af28 100644
--- a/new-testing/testing_zcheck.h
+++ b/new-testing/testing_zcheck.h
@@ -30,40 +30,35 @@
 #define CHECK_TRMM 3
 #define CHECK_TRSM 4
 
-void print_zmatrix      ( int M, int N, CHAMELEON_Complex64_t *A, int LDA );
-void print_zdesc_matrix ( CHAM_desc_t *descA );
-void zsabotage          ( CHAM_desc_t *descA );
-void potri_product      ( cham_uplo_t uplo, CHAM_desc_t *descA1, CHAM_desc_t *descA2 );
-
-int check_zmatrices     ( cham_uplo_t uplo, CHAM_desc_t *descA, CHAM_desc_t *descB );
-int check_znorm         ( cham_mtxtype_t mtxtype, cham_normtype_t norm_type, cham_uplo_t uplo,
+int check_zmatrices     ( run_arg_list_t *args, cham_uplo_t uplo, CHAM_desc_t *descA, CHAM_desc_t *descB );
+int check_znorm         ( run_arg_list_t *args, cham_mtxtype_t mtxtype, cham_normtype_t norm_type, cham_uplo_t uplo,
                           cham_diag_t diag, double norm_cham, CHAM_desc_t *descA );
-int check_zsum          ( cham_uplo_t uplo, cham_trans_t trans, CHAMELEON_Complex64_t alpha, CHAM_desc_t *descA,
+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 check_zscale        ( cham_uplo_t uplo, CHAMELEON_Complex64_t alpha, CHAM_desc_t *descA1, CHAM_desc_t *descA2 );
-int check_zgemm         ( cham_trans_t transA, cham_trans_t transB, CHAMELEON_Complex64_t alpha, CHAM_desc_t *descA,
+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 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 check_zsymm         ( cham_mtxtype_t mtxtype, cham_side_t side, cham_uplo_t uplo, CHAMELEON_Complex64_t alpha, CHAM_desc_t *descA, CHAM_desc_t *descB,
+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         ( cham_mtxtype_t mtxtype, cham_uplo_t uplo, cham_trans_t trans, CHAMELEON_Complex64_t alpha, CHAM_desc_t *descA,
+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         ( int check_func, cham_side_t side, cham_uplo_t uplo, cham_trans_t trans, cham_diag_t diag,
+int check_ztrmm         ( run_arg_list_t *args, int check_func, cham_side_t side, cham_uplo_t uplo, cham_trans_t trans, cham_diag_t diag,
                           CHAMELEON_Complex64_t alpha, CHAM_desc_t *descA, CHAM_desc_t *descB, CHAM_desc_t *descBref );
-int check_zlauum        ( cham_uplo_t uplo, CHAM_desc_t *descA1, CHAM_desc_t *descA2 );
+int check_zlauum        ( run_arg_list_t *args, cham_uplo_t uplo, CHAM_desc_t *descA1, CHAM_desc_t *descA2 );
 int check_zxxtrf        ( run_arg_list_t *args, cham_mtxtype_t mtxtype, cham_uplo_t uplo, CHAM_desc_t *descA1, CHAM_desc_t *descA2 );
-int check_zsolve        ( cham_mtxtype_t mtxtype, cham_trans_t trans, cham_uplo_t uplo,
+int check_zsolve        ( run_arg_list_t *args, cham_mtxtype_t mtxtype, cham_trans_t trans, cham_uplo_t uplo,
                           CHAM_desc_t *descA, CHAM_desc_t *descX, CHAM_desc_t *descB );
-int check_ztrtri        ( cham_mtxtype_t mtxtype, cham_uplo_t uplo, cham_diag_t diag,
+int check_ztrtri        ( run_arg_list_t *args, cham_mtxtype_t mtxtype, cham_uplo_t uplo, cham_diag_t diag,
                           CHAM_desc_t *descA, CHAM_desc_t *descAi );
 
 /* Using QR factorization */
-int check_zortho        ( CHAM_desc_t *descQ );
-int check_zgeqrf        ( CHAM_desc_t *descA, CHAM_desc_t *descAF, CHAM_desc_t *descQ );
-int check_zgelqf        ( CHAM_desc_t *descA, CHAM_desc_t *descAF, CHAM_desc_t *descQ );
-int check_zgels         ( cham_trans_t trans, CHAM_desc_t *descA, CHAM_desc_t *descX, CHAM_desc_t *descB );
-int check_zgeqrs        ( cham_trans_t trans, CHAM_desc_t *descA, double Bnorm, CHAM_desc_t *descR );
-int check_zgelqs        ( cham_trans_t trans, CHAM_desc_t *descA, double Bnorm, CHAM_desc_t *descR );
-int check_zqc           ( cham_side_t side, cham_trans_t trans, CHAM_desc_t *descC, CHAM_desc_t *descQ, CHAM_desc_t *descCC );
+int check_zortho        ( run_arg_list_t *args, CHAM_desc_t *descQ );
+int check_zgeqrf        ( run_arg_list_t *args, CHAM_desc_t *descA, CHAM_desc_t *descAF, CHAM_desc_t *descQ );
+int check_zgelqf        ( run_arg_list_t *args, CHAM_desc_t *descA, CHAM_desc_t *descAF, CHAM_desc_t *descQ );
+int check_zgels         ( run_arg_list_t *args, cham_trans_t trans, CHAM_desc_t *descA, CHAM_desc_t *descX, CHAM_desc_t *descB );
+int check_zgeqrs        ( run_arg_list_t *args, cham_trans_t trans, CHAM_desc_t *descA, double Bnorm, CHAM_desc_t *descR );
+int check_zgelqs        ( run_arg_list_t *args, cham_trans_t trans, CHAM_desc_t *descA, double Bnorm, CHAM_desc_t *descR );
+int check_zqc           ( run_arg_list_t *args, cham_side_t side, cham_trans_t trans, CHAM_desc_t *descC, CHAM_desc_t *descQ, CHAM_desc_t *descCC );
 
 #endif
 
diff --git a/new-testing/testing_zgeadd.c b/new-testing/testing_zgeadd.c
index 3f9cdb749..ac1146858 100644
--- a/new-testing/testing_zgeadd.c
+++ b/new-testing/testing_zgeadd.c
@@ -95,7 +95,7 @@ testing_zgeadd( run_arg_list_t *args, int check )
         CHAM_desc_t *descB0 = CHAMELEON_Desc_Copy( descB, NULL );
         CHAMELEON_zplrnt_Tile( descB0, seedB );
 
-        hres += check_zsum( ChamUpperLower, trans, alpha, descA, beta, descB0, descB );
+        hres += check_zsum( args, ChamUpperLower, trans, alpha, descA, beta, descB0, descB );
 
         CHAMELEON_Desc_Destroy( &descB0 );
     }
diff --git a/new-testing/testing_zgelqf.c b/new-testing/testing_zgelqf.c
index cf1fba3bd..98aea232c 100644
--- a/new-testing/testing_zgelqf.c
+++ b/new-testing/testing_zgelqf.c
@@ -78,8 +78,8 @@ testing_zgelqf( run_arg_list_t *args, int check )
 
         CHAMELEON_zunglq_Tile( descA, descT, descQ );
 
-        hres += check_zgelqf( descA0, descA, descQ );
-        hres += check_zortho( descQ );
+        hres += check_zgelqf( args, descA0, descA, descQ );
+        hres += check_zortho( args, descQ );
 
         CHAMELEON_Desc_Destroy( &descA0 );
         CHAMELEON_Desc_Destroy( &descQ );
@@ -95,7 +95,7 @@ testing_zgelqf( run_arg_list_t *args, int check )
 testing_t   test_zgelqf;
 const char *zgelqf_params[] = { "nb", "ib", "m", "n", "lda", "qra", "seedA", NULL };
 const char *zgelqf_output[] = { NULL };
-const char *zgelqf_outchk[] = { "RETURN", NULL };
+const char *zgelqf_outchk[] = { "||A||", "||I-QQ'||", "||A-fact(A)||", "RETURN", NULL };
 
 /**
  * @brief Testing registration function
diff --git a/new-testing/testing_zgelqf_hqr.c b/new-testing/testing_zgelqf_hqr.c
index 10796b061..b5f81b0f5 100644
--- a/new-testing/testing_zgelqf_hqr.c
+++ b/new-testing/testing_zgelqf_hqr.c
@@ -86,8 +86,8 @@ testing_zgelqf_hqr( run_arg_list_t *args, int check )
 
         CHAMELEON_zunglq_param_Tile( &qrtree, descA, descTS, descTT, descQ );
 
-        hres += check_zgelqf( descA0, descA, descQ );
-        hres += check_zortho( descQ );
+        hres += check_zgelqf( args, descA0, descA, descQ );
+        hres += check_zortho( args, descQ );
 
         CHAMELEON_Desc_Destroy( &descA0 );
         CHAMELEON_Desc_Destroy( &descQ );
@@ -106,7 +106,7 @@ testing_t   test_zgelqf_hqr;
 const char *zgelqf_hqr_params[] = { "nb",  "ib",   "m",    "n",      "lda",   "qra",
                                     "qrp", "llvl", "hlvl", "domino", "seedA", NULL };
 const char *zgelqf_hqr_output[] = { NULL };
-const char *zgelqf_hqr_outchk[] = { "RETURN", NULL };
+const char *zgelqf_hqr_outchk[] = { "||A||", "||I-QQ'||", "||A-fact(A)||", "RETURN", NULL };
 
 /**
  * @brief Testing registration function
diff --git a/new-testing/testing_zgelqs.c b/new-testing/testing_zgelqs.c
index 77e704575..06eb52c43 100644
--- a/new-testing/testing_zgelqs.c
+++ b/new-testing/testing_zgelqs.c
@@ -93,7 +93,7 @@ testing_zgelqs( run_arg_list_t *args, int check )
         CHAMELEON_zplrnt_Tile( descA0, seedA );
         CHAMELEON_zplrnt_Tile( descB, seedB );
 
-        hres += check_zsolve( ChamGeneral, ChamNoTrans, ChamUpperLower, descA0, subX, subB );
+        hres += check_zsolve( args, ChamGeneral, ChamNoTrans, ChamUpperLower, descA0, subX, subB );
 
         free( subB );
         free( subX );
diff --git a/new-testing/testing_zgels.c b/new-testing/testing_zgels.c
index c5f88d3d5..2813ffe34 100644
--- a/new-testing/testing_zgels.c
+++ b/new-testing/testing_zgels.c
@@ -108,7 +108,7 @@ testing_zgels( run_arg_list_t *args, int check )
         }
 
         /* Check the factorization and the residual */
-        hres = check_zgels( trans, descA0, subX, subB );  // A(Ax-B) == 0?
+        hres = check_zgels( args, trans, descA0, subX, subB );
 
         CHAMELEON_Desc_Destroy( &descA0 );
         CHAMELEON_Desc_Destroy( &descB );
diff --git a/new-testing/testing_zgels_hqr.c b/new-testing/testing_zgels_hqr.c
index 9ae361b25..30d9aa670 100644
--- a/new-testing/testing_zgels_hqr.c
+++ b/new-testing/testing_zgels_hqr.c
@@ -114,7 +114,7 @@ testing_zgels_hqr( run_arg_list_t *args, int check )
         }
 
         /* Check the factorization and the residual */
-        hres = check_zgels( trans, descA0, subX, subB );  // A(Ax-B) == 0?
+        hres = check_zgels( args, trans, descA0, subX, subB );
 
         CHAMELEON_Desc_Destroy( &descA0 );
         CHAMELEON_Desc_Destroy( &descB );
diff --git a/new-testing/testing_zgemm.c b/new-testing/testing_zgemm.c
index 8e2aa0f59..fa36780c0 100644
--- a/new-testing/testing_zgemm.c
+++ b/new-testing/testing_zgemm.c
@@ -98,7 +98,7 @@ testing_zgemm( run_arg_list_t *args, int check )
             &descCinit, NULL, ChamComplexDouble, nb, nb, nb * nb, LDC, N, 0, 0, M, N, P, Q );
         CHAMELEON_zplrnt_Tile( descCinit, seedC );
 
-        hres += check_zgemm( transA, transB, alpha, descA, descB, beta, descCinit, descC );
+        hres += check_zgemm( args, transA, transB, alpha, descA, descB, beta, descCinit, descC );
 
         CHAMELEON_Desc_Destroy( &descCinit );
     }
diff --git a/new-testing/testing_zgeqrf.c b/new-testing/testing_zgeqrf.c
index bd2e3a159..ae74dd91c 100644
--- a/new-testing/testing_zgeqrf.c
+++ b/new-testing/testing_zgeqrf.c
@@ -78,8 +78,8 @@ testing_zgeqrf( run_arg_list_t *args, int check )
 
         CHAMELEON_zungqr_Tile( descA, descT, descQ );
 
-        hres += check_zgeqrf( descA0, descA, descQ );
-        hres += check_zortho( descQ );
+        hres += check_zgeqrf( args, descA0, descA, descQ );
+        hres += check_zortho( args, descQ );
 
         CHAMELEON_Desc_Destroy( &descA0 );
         CHAMELEON_Desc_Destroy( &descQ );
@@ -95,7 +95,7 @@ testing_zgeqrf( run_arg_list_t *args, int check )
 testing_t   test_zgeqrf;
 const char *zgeqrf_params[] = { "nb", "ib", "m", "n", "lda", "qra", "seedA", NULL };
 const char *zgeqrf_output[] = { NULL };
-const char *zgeqrf_outchk[] = { "RETURN", NULL };
+const char *zgeqrf_outchk[] = { "||A||", "||I-QQ'||", "||A-fact(A)||", "RETURN", NULL };
 
 /**
  * @brief Testing registration function
diff --git a/new-testing/testing_zgeqrf_hqr.c b/new-testing/testing_zgeqrf_hqr.c
index ffd0a4149..c485a5dcc 100644
--- a/new-testing/testing_zgeqrf_hqr.c
+++ b/new-testing/testing_zgeqrf_hqr.c
@@ -86,8 +86,8 @@ testing_zgeqrf_hqr( run_arg_list_t *args, int check )
 
         CHAMELEON_zungqr_param_Tile( &qrtree, descA, descTS, descTT, descQ );
 
-        hres += check_zgeqrf( descA0, descA, descQ );
-        hres += check_zortho( descQ );
+        hres += check_zgeqrf( args, descA0, descA, descQ );
+        hres += check_zortho( args, descQ );
 
         CHAMELEON_Desc_Destroy( &descA0 );
         CHAMELEON_Desc_Destroy( &descQ );
@@ -106,7 +106,7 @@ testing_t   test_zgeqrf_hqr;
 const char *zgeqrf_hqr_params[] = { "nb",  "ib",   "m",    "n",      "lda",   "qra",
                                     "qrp", "llvl", "hlvl", "domino", "seedA", NULL };
 const char *zgeqrf_hqr_output[] = { NULL };
-const char *zgeqrf_hqr_outchk[] = { "RETURN", NULL };
+const char *zgeqrf_hqr_outchk[] = { "||A||", "||I-QQ'||", "||A-fact(A)||", "RETURN", NULL };
 
 /**
  * @brief Testing registration function
diff --git a/new-testing/testing_zgeqrs.c b/new-testing/testing_zgeqrs.c
index d33730f8f..4af8bfeea 100644
--- a/new-testing/testing_zgeqrs.c
+++ b/new-testing/testing_zgeqrs.c
@@ -93,7 +93,7 @@ testing_zgeqrs( run_arg_list_t *args, int check )
         CHAMELEON_zplrnt_Tile( descA0, seedA );
         CHAMELEON_zplrnt_Tile( descB, seedB );
 
-        hres += check_zsolve( ChamGeneral, ChamNoTrans, ChamUpperLower, descA0, subX, subB );
+        hres += check_zsolve( args, ChamGeneral, ChamNoTrans, ChamUpperLower, descA0, subX, subB );
 
         free( subB );
         free( subX );
diff --git a/new-testing/testing_zgesv.c b/new-testing/testing_zgesv.c
index b429f4014..c97e2f2b2 100644
--- a/new-testing/testing_zgesv.c
+++ b/new-testing/testing_zgesv.c
@@ -82,7 +82,7 @@ testing_zgesv( run_arg_list_t *args, int check )
         CHAMELEON_zplrnt_Tile( descA0, seedA );
         CHAMELEON_zplrnt_Tile( descB, seedB );
 
-        hres += check_zsolve( ChamGeneral, ChamNoTrans, ChamUpperLower, descA0, descX, descB );
+        hres += check_zsolve( args, ChamGeneral, ChamNoTrans, ChamUpperLower, descA0, descX, descB );
 
         CHAMELEON_Desc_Destroy( &descA0 );
         CHAMELEON_Desc_Destroy( &descB );
diff --git a/new-testing/testing_zgetrs.c b/new-testing/testing_zgetrs.c
index 084b61f38..da1a2c03e 100644
--- a/new-testing/testing_zgetrs.c
+++ b/new-testing/testing_zgetrs.c
@@ -72,7 +72,7 @@ testing_zgetrs( run_arg_list_t *args, int check )
         CHAMELEON_zplrnt_Tile( descA0, seedA );
         CHAMELEON_zplrnt_Tile( descB, seedB );
 
-        hres += check_zsolve( ChamGeneral, ChamNoTrans, ChamUpperLower, descA0, descX, descB );
+        hres += check_zsolve( args, ChamGeneral, ChamNoTrans, ChamUpperLower, descA0, descX, descB );
 
         CHAMELEON_Desc_Destroy( &descA0 );
         CHAMELEON_Desc_Destroy( &descB );
diff --git a/new-testing/testing_zhemm.c b/new-testing/testing_zhemm.c
index 291bdc3bd..85daf7c27 100644
--- a/new-testing/testing_zhemm.c
+++ b/new-testing/testing_zhemm.c
@@ -90,7 +90,7 @@ testing_zhemm( run_arg_list_t *args, int check )
         CHAMELEON_zplrnt_Tile( descCinit, seedC );
 
         hres +=
-            check_zsymm( ChamHermitian, side, uplo, alpha, descA, descB, beta, descCinit, descC );
+            check_zsymm( args, ChamHermitian, side, uplo, alpha, descA, descB, beta, descCinit, descC );
 
         CHAMELEON_Desc_Destroy( &descCinit );
     }
diff --git a/new-testing/testing_zher2k.c b/new-testing/testing_zher2k.c
index 2dc6a560c..d1795043d 100644
--- a/new-testing/testing_zher2k.c
+++ b/new-testing/testing_zher2k.c
@@ -92,7 +92,7 @@ testing_zher2k( run_arg_list_t *args, int check )
         CHAMELEON_zplghe_Tile( bump, uplo, descCinit, seedC );
 
         hres +=
-            check_zsyrk( ChamHermitian, uplo, trans, alpha, descA, descB, beta, descCinit, descC );
+            check_zsyrk( args, ChamHermitian, uplo, trans, alpha, descA, descB, beta, descCinit, descC );
 
         CHAMELEON_Desc_Destroy( &descCinit );
     }
diff --git a/new-testing/testing_zherk.c b/new-testing/testing_zherk.c
index b7f650b8b..dc28ac8db 100644
--- a/new-testing/testing_zherk.c
+++ b/new-testing/testing_zherk.c
@@ -88,7 +88,7 @@ testing_zherk( run_arg_list_t *args, int check )
         CHAMELEON_zplghe_Tile( bump, uplo, descCinit, seedC );
 
         hres +=
-            check_zsyrk( ChamHermitian, uplo, trans, alpha, descA, NULL, beta, descCinit, descC );
+            check_zsyrk( args, ChamHermitian, uplo, trans, alpha, descA, NULL, beta, descCinit, descC );
 
         CHAMELEON_Desc_Destroy( &descCinit );
     }
diff --git a/new-testing/testing_zlacpy.c b/new-testing/testing_zlacpy.c
index 4892f2cc5..705ad4e19 100644
--- a/new-testing/testing_zlacpy.c
+++ b/new-testing/testing_zlacpy.c
@@ -94,7 +94,7 @@ testing_zlacpy( run_arg_list_t *args, int check )
 
     /* Checks their differences */
     if ( check ) {
-        hres += check_zmatrices( uplo, descA, descB );
+        hres += check_zmatrices( args, uplo, descA, descB );
     }
 
     CHAMELEON_Desc_Destroy( &descA );
diff --git a/new-testing/testing_zlange.c b/new-testing/testing_zlange.c
index fc2ff6b4e..1839f3e8a 100644
--- a/new-testing/testing_zlange.c
+++ b/new-testing/testing_zlange.c
@@ -86,7 +86,7 @@ testing_zlange( run_arg_list_t *args, int check )
 
     /* Checks the solution */
     if ( check ) {
-        hres = check_znorm( ChamGeneral, norm_type, ChamUpperLower, ChamNonUnit, norm, descA );
+        hres = check_znorm( args, ChamGeneral, norm_type, ChamUpperLower, ChamNonUnit, norm, descA );
     }
 
     CHAMELEON_Desc_Destroy( &descA );
diff --git a/new-testing/testing_zlanhe.c b/new-testing/testing_zlanhe.c
index 8ca447cc8..11cae1848 100644
--- a/new-testing/testing_zlanhe.c
+++ b/new-testing/testing_zlanhe.c
@@ -87,7 +87,7 @@ testing_zlanhe( run_arg_list_t *args, int check )
 
     /* Checks the solution */
     if ( check ) {
-        hres = check_znorm( ChamHermitian, norm_type, uplo, ChamNonUnit, norm, descA );
+        hres = check_znorm( args, ChamHermitian, norm_type, uplo, ChamNonUnit, norm, descA );
     }
 
     CHAMELEON_Desc_Destroy( &descA );
diff --git a/new-testing/testing_zlansy.c b/new-testing/testing_zlansy.c
index b55e0b761..b226ae576 100644
--- a/new-testing/testing_zlansy.c
+++ b/new-testing/testing_zlansy.c
@@ -87,7 +87,7 @@ testing_zlansy( run_arg_list_t *args, int check )
 
     /* Checks the solution */
     if ( check ) {
-        hres = check_znorm( ChamSymmetric, norm_type, uplo, ChamNonUnit, norm, descA );
+        hres = check_znorm( args, ChamSymmetric, norm_type, uplo, ChamNonUnit, norm, descA );
     }
 
     CHAMELEON_Desc_Destroy( &descA );
diff --git a/new-testing/testing_zlantr.c b/new-testing/testing_zlantr.c
index b1d0e2da3..cb8962c96 100644
--- a/new-testing/testing_zlantr.c
+++ b/new-testing/testing_zlantr.c
@@ -87,7 +87,7 @@ testing_zlantr( run_arg_list_t *args, int check )
 
     /* Checks the solution */
     if ( check ) {
-        hres = check_znorm( ChamTriangular, norm_type, uplo, diag, norm, descA );
+        hres = check_znorm( args, ChamTriangular, norm_type, uplo, diag, norm, descA );
     }
 
     CHAMELEON_Desc_Destroy( &descA );
diff --git a/new-testing/testing_zlascal.c b/new-testing/testing_zlascal.c
index 21abe8987..792f8f5d6 100644
--- a/new-testing/testing_zlascal.c
+++ b/new-testing/testing_zlascal.c
@@ -88,7 +88,7 @@ testing_zlascal( run_arg_list_t *args, int check )
             &descAinit, NULL, ChamComplexDouble, nb, nb, nb * nb, LDA, N, 0, 0, M, N, P, Q );
         CHAMELEON_zplrnt_Tile( descAinit, seedA );
 
-        hres += check_zscale( uplo, alpha, descAinit, descA );
+        hres += check_zscale( args, uplo, alpha, descAinit, descA );
 
         CHAMELEON_Desc_Destroy( &descAinit );
     }
diff --git a/new-testing/testing_zlauum.c b/new-testing/testing_zlauum.c
index 4a9b16557..0f92f5f7b 100644
--- a/new-testing/testing_zlauum.c
+++ b/new-testing/testing_zlauum.c
@@ -66,7 +66,7 @@ testing_zlauum( run_arg_list_t *args, int check )
         CHAM_desc_t *descA0 = CHAMELEON_Desc_Copy( descA, NULL );
         CHAMELEON_zplghe_Tile( 0., uplo, descA0, seedA );
 
-        hres += check_zlauum( uplo, descA0, descA );
+        hres += check_zlauum( args, uplo, descA0, descA );
 
         CHAMELEON_Desc_Destroy( &descA0 );
     }
diff --git a/new-testing/testing_zposv.c b/new-testing/testing_zposv.c
index 0e1e47559..10094e322 100644
--- a/new-testing/testing_zposv.c
+++ b/new-testing/testing_zposv.c
@@ -83,7 +83,7 @@ testing_zposv( run_arg_list_t *args, int check )
         CHAMELEON_zplrnt_Tile( descB, seedB );
 
         CHAMELEON_zplghe_Tile( (double)N, uplo, descA0, seedA );
-        hres += check_zsolve( ChamHermitian, ChamNoTrans, uplo, descA0, descX, descB );
+        hres += check_zsolve( args, ChamHermitian, ChamNoTrans, uplo, descA0, descX, descB );
 
         CHAMELEON_Desc_Destroy( &descA0 );
         CHAMELEON_Desc_Destroy( &descB );
diff --git a/new-testing/testing_zpotri.c b/new-testing/testing_zpotri.c
index 1372d0b65..2274b29db 100644
--- a/new-testing/testing_zpotri.c
+++ b/new-testing/testing_zpotri.c
@@ -63,7 +63,7 @@ testing_zpotri( run_arg_list_t *args, int check )
         CHAM_desc_t *descA0 = CHAMELEON_Desc_Copy( descA, NULL );
         CHAMELEON_zplghe_Tile( (double)N, uplo, descA0, seedA );
 
-        hres += check_ztrtri( ChamHermitian, uplo, ChamNonUnit, descA0, descA );
+        hres += check_ztrtri( args, ChamHermitian, uplo, ChamNonUnit, descA0, descA );
 
         CHAMELEON_Desc_Destroy( &descA0 );
     }
diff --git a/new-testing/testing_zpotrs.c b/new-testing/testing_zpotrs.c
index 84936b5fb..ca7c86f57 100644
--- a/new-testing/testing_zpotrs.c
+++ b/new-testing/testing_zpotrs.c
@@ -75,7 +75,7 @@ testing_zpotrs( run_arg_list_t *args, int check )
         CHAMELEON_zplghe_Tile( (double)N, uplo, descA0, seedA );
         CHAMELEON_zplrnt_Tile( descB, seedB );
 
-        hres += check_zsolve( ChamHermitian, ChamNoTrans, uplo, descA0, descX, descB );
+        hres += check_zsolve( args, ChamHermitian, ChamNoTrans, uplo, descA0, descX, descB );
 
         CHAMELEON_Desc_Destroy( &descA0 );
         CHAMELEON_Desc_Destroy( &descB );
diff --git a/new-testing/testing_zsymm.c b/new-testing/testing_zsymm.c
index 2e43fa2f7..70f33ed52 100644
--- a/new-testing/testing_zsymm.c
+++ b/new-testing/testing_zsymm.c
@@ -90,7 +90,7 @@ testing_zsymm( run_arg_list_t *args, int check )
         CHAMELEON_zplrnt_Tile( descCinit, seedC );
 
         hres +=
-            check_zsymm( ChamSymmetric, side, uplo, alpha, descA, descB, beta, descCinit, descC );
+            check_zsymm( args, ChamSymmetric, side, uplo, alpha, descA, descB, beta, descCinit, descC );
 
         CHAMELEON_Desc_Destroy( &descCinit );
     }
diff --git a/new-testing/testing_zsyr2k.c b/new-testing/testing_zsyr2k.c
index 134452e2c..508cd3dc4 100644
--- a/new-testing/testing_zsyr2k.c
+++ b/new-testing/testing_zsyr2k.c
@@ -92,7 +92,7 @@ testing_zsyr2k( run_arg_list_t *args, int check )
         CHAMELEON_zplgsy_Tile( bump, uplo, descCinit, seedC );
 
         hres +=
-            check_zsyrk( ChamSymmetric, uplo, trans, alpha, descA, descB, beta, descCinit, descC );
+            check_zsyrk( args, ChamSymmetric, uplo, trans, alpha, descA, descB, beta, descCinit, descC );
 
         CHAMELEON_Desc_Destroy( &descCinit );
     }
diff --git a/new-testing/testing_zsyrk.c b/new-testing/testing_zsyrk.c
index e236637a8..4c6c8838c 100644
--- a/new-testing/testing_zsyrk.c
+++ b/new-testing/testing_zsyrk.c
@@ -87,7 +87,7 @@ testing_zsyrk( run_arg_list_t *args, int check )
         CHAMELEON_zplgsy_Tile( bump, uplo, descCinit, seedC );
 
         hres +=
-            check_zsyrk( ChamSymmetric, uplo, trans, alpha, descA, NULL, beta, descCinit, descC );
+            check_zsyrk( args, ChamSymmetric, uplo, trans, alpha, descA, NULL, beta, descCinit, descC );
 
         CHAMELEON_Desc_Destroy( &descCinit );
     }
diff --git a/new-testing/testing_zsysv.c b/new-testing/testing_zsysv.c
index e05e45c68..f7358abb0 100644
--- a/new-testing/testing_zsysv.c
+++ b/new-testing/testing_zsysv.c
@@ -83,7 +83,7 @@ testing_zsysv( run_arg_list_t *args, int check )
         CHAMELEON_zplrnt_Tile( descB, seedB );
 
         CHAMELEON_zplgsy_Tile( (double)N, uplo, descA0, seedA );
-        hres += check_zsolve( ChamSymmetric, ChamNoTrans, uplo, descA0, descX, descB );
+        hres += check_zsolve( args, ChamSymmetric, ChamNoTrans, uplo, descA0, descX, descB );
 
         CHAMELEON_Desc_Destroy( &descA0 );
         CHAMELEON_Desc_Destroy( &descB );
diff --git a/new-testing/testing_zsytrs.c b/new-testing/testing_zsytrs.c
index 1bd4cfcdd..0baa575a4 100644
--- a/new-testing/testing_zsytrs.c
+++ b/new-testing/testing_zsytrs.c
@@ -75,7 +75,7 @@ testing_zsytrs( run_arg_list_t *args, int check )
         CHAMELEON_zplgsy_Tile( (double)N, uplo, descA0, seedA );
         CHAMELEON_zplrnt_Tile( descB, seedB );
 
-        hres += check_zsolve( ChamSymmetric, ChamNoTrans, uplo, descA0, descX, descB );
+        hres += check_zsolve( args, ChamSymmetric, ChamNoTrans, uplo, descA0, descX, descB );
 
         CHAMELEON_Desc_Destroy( &descA0 );
         CHAMELEON_Desc_Destroy( &descB );
diff --git a/new-testing/testing_ztradd.c b/new-testing/testing_ztradd.c
index 761a4e0c1..94ca773bf 100644
--- a/new-testing/testing_ztradd.c
+++ b/new-testing/testing_ztradd.c
@@ -130,7 +130,7 @@ testing_ztradd( run_arg_list_t *args, int check )
         else {
             CHAMELEON_zplgsy_Tile( 0., uplo, descB0, seedB );
         }
-        hres += check_zsum( uplo, trans, alpha, descA, beta, descB0, descB );
+        hres += check_zsum( args, uplo, trans, alpha, descA, beta, descB0, descB );
 
         CHAMELEON_Desc_Destroy( &descB0 );
     }
diff --git a/new-testing/testing_ztrmm.c b/new-testing/testing_ztrmm.c
index c14d20ee0..5ce48376c 100644
--- a/new-testing/testing_ztrmm.c
+++ b/new-testing/testing_ztrmm.c
@@ -84,7 +84,7 @@ testing_ztrmm( run_arg_list_t *args, int check )
             &descBinit, NULL, ChamComplexDouble, nb, nb, nb * nb, LDB, Bn, 0, 0, Bm, Bn, P, Q );
         CHAMELEON_zplrnt_Tile( descBinit, seedB );
 
-        hres += check_ztrmm( CHECK_TRMM, side, uplo, trans, diag, alpha, descA, descB, descBinit );
+        hres += check_ztrmm( args, CHECK_TRMM, side, uplo, trans, diag, alpha, descA, descB, descBinit );
 
         CHAMELEON_Desc_Destroy( &descBinit );
     }
diff --git a/new-testing/testing_ztrsm.c b/new-testing/testing_ztrsm.c
index db2e149b5..74bfa7bb6 100644
--- a/new-testing/testing_ztrsm.c
+++ b/new-testing/testing_ztrsm.c
@@ -85,7 +85,7 @@ testing_ztrsm( run_arg_list_t *args, int check )
             &descBinit, NULL, ChamComplexDouble, nb, nb, nb * nb, LDB, Bn, 0, 0, Bm, Bn, P, Q );
         CHAMELEON_zplrnt_Tile( descBinit, seedB );
 
-        hres += check_ztrmm( CHECK_TRSM, side, uplo, trans, diag, alpha, descA, descB, descBinit );
+        hres += check_ztrmm( args, CHECK_TRSM, side, uplo, trans, diag, alpha, descA, descB, descBinit );
 
         CHAMELEON_Desc_Destroy( &descBinit );
     }
diff --git a/new-testing/testing_ztrtri.c b/new-testing/testing_ztrtri.c
index f168221e1..34eb2092a 100644
--- a/new-testing/testing_ztrtri.c
+++ b/new-testing/testing_ztrtri.c
@@ -61,7 +61,7 @@ testing_ztrtri( run_arg_list_t *args, int check )
         CHAM_desc_t *descA0 = CHAMELEON_Desc_Copy( descA, NULL );
         CHAMELEON_zplghe_Tile( (double)N, uplo, descA0, seedA );
 
-        hres += check_ztrtri( ChamTriangular, uplo, diag, descA0, descA );
+        hres += check_ztrtri( args, ChamTriangular, uplo, diag, descA0, descA );
 
         CHAMELEON_Desc_Destroy( &descA0 );
     }
diff --git a/new-testing/testing_zunglq.c b/new-testing/testing_zunglq.c
index d1882ffc1..f821da810 100644
--- a/new-testing/testing_zunglq.c
+++ b/new-testing/testing_zunglq.c
@@ -80,7 +80,7 @@ testing_zunglq( run_arg_list_t *args, int check )
 
     /* Checks the factorisation and orthogonality */
     if ( check ) {
-        hres += check_zortho( descQ );
+        hres += check_zortho( args, descQ );
     }
 
     CHAMELEON_Desc_Destroy( &descA );
diff --git a/new-testing/testing_zunglq_hqr.c b/new-testing/testing_zunglq_hqr.c
index 12109b3b4..7051bcbc9 100644
--- a/new-testing/testing_zunglq_hqr.c
+++ b/new-testing/testing_zunglq_hqr.c
@@ -88,7 +88,7 @@ testing_zunglq_hqr( run_arg_list_t *args, int check )
 
     /* Checks the factorisation and orthogonality */
     if ( check ) {
-        hres += check_zortho( descQ );
+        hres += check_zortho( args, descQ );
     }
 
     CHAMELEON_Desc_Destroy( &descA );
diff --git a/new-testing/testing_zungqr.c b/new-testing/testing_zungqr.c
index d41176458..7d177fcf0 100644
--- a/new-testing/testing_zungqr.c
+++ b/new-testing/testing_zungqr.c
@@ -80,7 +80,7 @@ testing_zungqr( run_arg_list_t *args, int check )
 
     /* Checks the factorisation and orthogonality */
     if ( check ) {
-        hres += check_zortho( descQ );
+        hres += check_zortho( args, descQ );
     }
 
     CHAMELEON_Desc_Destroy( &descA );
diff --git a/new-testing/testing_zungqr_hqr.c b/new-testing/testing_zungqr_hqr.c
index bf89f256e..9735bdf21 100644
--- a/new-testing/testing_zungqr_hqr.c
+++ b/new-testing/testing_zungqr_hqr.c
@@ -88,7 +88,7 @@ testing_zungqr_hqr( run_arg_list_t *args, int check )
 
     /* Checks the factorisation and orthogonality */
     if ( check ) {
-        hres += check_zortho( descQ );
+        hres += check_zortho( args, descQ );
     }
 
     CHAMELEON_Desc_Destroy( &descA );
diff --git a/new-testing/testing_zunmlq.c b/new-testing/testing_zunmlq.c
index 500110f19..25caf0dda 100644
--- a/new-testing/testing_zunmlq.c
+++ b/new-testing/testing_zunmlq.c
@@ -95,7 +95,7 @@ testing_zunmlq( run_arg_list_t *args, int check )
             &descQ, NULL, ChamComplexDouble, nb, nb, nb * nb, An, An, 0, 0, An, An, P, Q );
         CHAMELEON_zunglq_Tile( descA, descT, descQ );
 
-        hres = check_zqc( side, trans, descC0, descQ, descC );
+        hres = check_zqc( args, side, trans, descC0, descQ, descC );
 
         CHAMELEON_Desc_Destroy( &descC0 );
         CHAMELEON_Desc_Destroy( &descQ );
diff --git a/new-testing/testing_zunmlq_hqr.c b/new-testing/testing_zunmlq_hqr.c
index 7214546eb..a3bd3318a 100644
--- a/new-testing/testing_zunmlq_hqr.c
+++ b/new-testing/testing_zunmlq_hqr.c
@@ -103,7 +103,7 @@ testing_zunmlq_hqr( run_arg_list_t *args, int check )
             &descQ, NULL, ChamComplexDouble, nb, nb, nb * nb, An, An, 0, 0, An, An, P, Q );
         CHAMELEON_zunglq_param_Tile( &qrtree, descA, descTS, descTT, descQ );
 
-        hres = check_zqc( side, trans, descC0, descQ, descC );
+        hres = check_zqc( args, side, trans, descC0, descQ, descC );
 
         CHAMELEON_Desc_Destroy( &descC0 );
         CHAMELEON_Desc_Destroy( &descQ );
diff --git a/new-testing/testing_zunmqr.c b/new-testing/testing_zunmqr.c
index 3c9211600..7b4f5304c 100644
--- a/new-testing/testing_zunmqr.c
+++ b/new-testing/testing_zunmqr.c
@@ -95,7 +95,7 @@ testing_zunmqr( run_arg_list_t *args, int check )
             &descQ, NULL, ChamComplexDouble, nb, nb, nb * nb, Am, Am, 0, 0, Am, Am, P, Q );
         CHAMELEON_zungqr_Tile( descA, descT, descQ );
 
-        hres = check_zqc( side, trans, descC0, descQ, descC );
+        hres = check_zqc( args, side, trans, descC0, descQ, descC );
 
         CHAMELEON_Desc_Destroy( &descC0 );
         CHAMELEON_Desc_Destroy( &descQ );
diff --git a/new-testing/testing_zunmqr_hqr.c b/new-testing/testing_zunmqr_hqr.c
index 791cc9d7a..45d4f229f 100644
--- a/new-testing/testing_zunmqr_hqr.c
+++ b/new-testing/testing_zunmqr_hqr.c
@@ -103,7 +103,7 @@ testing_zunmqr_hqr( run_arg_list_t *args, int check )
             &descQ, NULL, ChamComplexDouble, nb, nb, nb * nb, Am, Am, 0, 0, Am, Am, P, Q );
         CHAMELEON_zungqr_param_Tile( &qrtree, descA, descTS, descTT, descQ );
 
-        hres = check_zqc( side, trans, descC0, descQ, descC );
+        hres = check_zqc( args, side, trans, descC0, descQ, descC );
 
         CHAMELEON_Desc_Destroy( &descC0 );
         CHAMELEON_Desc_Destroy( &descQ );
diff --git a/new-testing/values.c b/new-testing/values.c
index 4fe9e6141..c07909703 100644
--- a/new-testing/values.c
+++ b/new-testing/values.c
@@ -27,7 +27,6 @@ val_t pread_int( const char *str )
 {
     val_t val;
     val.ival = atoi( str );
-    fprintf( stderr, " %d", val.ival );
     return val;
 }
 
@@ -41,7 +40,6 @@ val_t pread_float( const char *str )
 {
     val_t val;
     val.sval = strtof( str, NULL );
-    fprintf( stderr, " %e", val.sval );
     return val;
 }
 
@@ -55,7 +53,6 @@ val_t pread_double( const char *str )
 {
     val_t val;
     val.dval = strtod( str, NULL );
-    fprintf( stderr, " %le", val.dval );
     return val;
 }
 
@@ -83,7 +80,6 @@ val_t pread_complex32( const char *str )
         val.cval = nan("NaN");
     }
 
-    fprintf( stderr, " (%le,%le)", crealf(val.cval), cimagf(val.cval) );
     return val;
 }
 
@@ -111,7 +107,6 @@ val_t pread_complex64( const char *str )
         val.zval = nan("NaN");
     }
 
-    fprintf( stderr, " (%le,%le)", crealf(val.zval), cimagf(val.zval) );
     return val;
 }
 
@@ -153,7 +148,6 @@ val_t pread_trans( const char *str )
             val.trans = ChamNoTrans;
         }
     }
-    fprintf( stderr, " %d", val.trans );
     return val;
 }
 
@@ -196,7 +190,6 @@ val_t pread_uplo( const char *str )
             val.uplo = ChamUpperLower;
         }
     }
-    fprintf( stderr, " %d", val.uplo );
     return val;
 }
 
@@ -230,7 +223,6 @@ val_t pread_diag( const char *str )
             val.diag = ChamNonUnit;
         }
     }
-    fprintf( stderr, " %d", val.diag );
     return val;
 }
 
@@ -264,7 +256,6 @@ val_t pread_side( const char *str )
             val.side = ChamLeft;
         }
     }
-    fprintf( stderr, " %d", val.side );
     return val;
 }
 
@@ -314,7 +305,6 @@ val_t pread_norm( const char *str )
             val.ntype = ChamOneNorm;
         }
     }
-    fprintf( stderr, " %d", val.ntype );
     return val;
 }
 
@@ -328,7 +318,6 @@ val_t pread_string( const char *str )
 {
     val_t val;
     val.str = strdup( str );
-    fprintf( stderr, " %s", val.str );
     return val;
 }
 
-- 
GitLab