diff --git a/testing/chameleon_ztesting.c b/testing/chameleon_ztesting.c
index 29568d0cc130ff561a2fcad73f55926787046aaf..84c3244e270f057a14d3693d47dcf35b5d568d16 100644
--- a/testing/chameleon_ztesting.c
+++ b/testing/chameleon_ztesting.c
@@ -627,7 +627,7 @@ int main (int argc, char **argv) {
     nowarmup  = parameters_getvalue_int( "nowarmup" );
     profile   = parameters_getvalue_int( "profile"  );
     forcegpu  = parameters_getvalue_int( "forcegpu" );
-    api       = parameters_getvalue_int( "api" );
+    api       = parameters_getvalue_int( "api"      );
 
     rc = CHAMELEON_Init( ncores, ngpus );
 
diff --git a/testing/testing_zcheck.c b/testing/testing_zcheck.c
index b5dc2a3356a3c8cca6eadd7b27b031e455c861f3..d7d9aff0687586c59d82c0dd0ab67737e07e0fc5 100644
--- a/testing/testing_zcheck.c
+++ b/testing/testing_zcheck.c
@@ -172,6 +172,9 @@ int check_znorm_std( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_norm
     /* Compares the norms */
     result = fabs( norm_cham - norm_lapack ) / ( norm_lapack * eps );
 
+    run_arg_add_double( args, "||A||", norm_cham );
+    run_arg_add_double( args, "||B||", norm_lapack );
+
     switch(norm_type) {
     case ChamInfNorm:
         /* Sum order on the line can differ */
@@ -187,15 +190,20 @@ int check_znorm_std( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_norm
         break;
     case ChamMaxNorm:
     default:
+#if defined(PRECISION_z) || defined(PRECISION_c)
+        /* Add a factor two to macth different implementation of cabs */
+        result = result / 2;
+#else
         /* result should be perfectly equal */
+#endif
         ;
     }
 
+    run_arg_add_double( args, "||R||", result );
     info_solution = ( result < 1 ) ? 0 : 1;
 
     free(work);
 
-    (void)args;
     return info_solution;
 }
 
@@ -625,7 +633,7 @@ int check_zsymm_std( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_side
         An = M;
     }
     else {
-        normTypeA = '0';
+        normTypeA = 'O';
         normTypeB = 'I';
         An = N;
     }
@@ -1349,6 +1357,33 @@ int check_zxxtrf( run_arg_list_t *args, cham_mtxtype_t mtxtype, cham_uplo_t uplo
     return info_global;
 }
 
+int check_zxxtrf_std( run_arg_list_t *args, cham_mtxtype_t mtxtype, 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 );
+
+    CHAMELEON_Desc_Create(
+        &descA,  (void*)(-mtxfmt), ChamComplexDouble, nb, nb, nb * nb, LDA, N, 0, 0, M, N, P, Q );
+    CHAMELEON_Desc_Create(
+        &descLU, (void*)(-mtxfmt), ChamComplexDouble, nb, nb, nb * nb, LDA, N, 0, 0, M, N, P, Q );
+
+    CHAMELEON_zLap2Desc( uplo, A,  LDA, descA  );
+    CHAMELEON_zLap2Desc( uplo, LU, LDA, descLU );
+
+    info_global = check_zxxtrf( args, mtxtype, uplo, descA, descLU );
+
+    CHAMELEON_Desc_Destroy( &descA  );
+    CHAMELEON_Desc_Destroy( &descLU );
+
+    (void)args;
+    return info_global;
+}
+
 /**
  ********************************************************************************
  *
@@ -1418,6 +1453,12 @@ int check_zsolve( run_arg_list_t *args, cham_mtxtype_t mtxtype, cham_trans_t tra
     Rnorm = CHAMELEON_zlange_Tile( ChamOneNorm, descB );
     result = Rnorm / ( Anorm * Xnorm * chameleon_max( M, N ) * eps );
 
+    run_arg_add_double( args, "||A||", Anorm );
+    run_arg_add_double( args, "||X||", Xnorm );
+    run_arg_add_double( args, "||B||", Bnorm );
+    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) ) {
         info_local = 1;
     }
@@ -1437,6 +1478,37 @@ int check_zsolve( run_arg_list_t *args, cham_mtxtype_t mtxtype, cham_trans_t tra
     return info_global;
 }
 
+int check_zsolve_std( run_arg_list_t *args, cham_mtxtype_t mtxtype, 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 );
+
+    CHAMELEON_Desc_Create(
+        &descA, (void*)(-mtxfmt), ChamComplexDouble, nb, nb, nb * nb, LDA, N,    0, 0, N, N,    P, Q );
+    CHAMELEON_Desc_Create(
+        &descB, (void*)(-mtxfmt), ChamComplexDouble, nb, nb, nb * nb, LDB, NRHS, 0, 0, N, NRHS, P, Q );
+    CHAMELEON_Desc_Create(
+        &descX, (void*)(-mtxfmt), ChamComplexDouble, nb, nb, nb * nb, LDB, NRHS, 0, 0, N, NRHS, P, Q );
+
+    CHAMELEON_zLap2Desc( uplo, A, LDA, descA );
+    CHAMELEON_zLap2Desc( uplo, B, LDB, descB );
+    CHAMELEON_zLap2Desc( uplo, X, LDB, descX );
+
+    info_global = check_zsolve( args, mtxtype, trans, uplo, descA, descX, descB );
+
+    CHAMELEON_Desc_Destroy( &descA );
+    CHAMELEON_Desc_Destroy( &descB );
+    CHAMELEON_Desc_Destroy( &descX );
+
+    (void)args;
+    return info_global;
+}
+
 /**
  ********************************************************************************
  *
@@ -1591,6 +1663,33 @@ int check_ztrtri( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_uplo_t
     return info_global;
 }
 
+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;
+    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 );
+
+    CHAMELEON_Desc_Create(
+        &descA0, (void*)(-mtxfmt), ChamComplexDouble, nb, nb, nb * nb, LDA, N, 0, 0, N, N, P, Q );
+    CHAMELEON_Desc_Create(
+        &descAi, (void*)(-mtxfmt), ChamComplexDouble, nb, nb, nb * nb, LDA, N, 0, 0, N, N, P, Q );
+
+    CHAMELEON_zLap2Desc( uplo, A0, LDA, descA0 );
+    CHAMELEON_zLap2Desc( uplo, Ai, LDA, descAi );
+
+    info_global = check_ztrtri( args, matrix_type, uplo, diag, descA0, descAi );
+
+    CHAMELEON_Desc_Destroy( &descA0 );
+    CHAMELEON_Desc_Destroy( &descAi );
+
+    (void)args;
+    return info_global;
+}
+
 int check_zortho( run_arg_list_t *args, CHAM_desc_t *descQ )
 {
     int info_local, info_global;
diff --git a/testing/testing_zcheck.h b/testing/testing_zcheck.h
index f34ca857919e3aa14d8595e6daeddc83408596ae..aa247db116f4f77d70cf7b56669d6a82f991f8a7 100644
--- a/testing/testing_zcheck.h
+++ b/testing/testing_zcheck.h
@@ -62,10 +62,15 @@ static inline int check_ztrmm         ( run_arg_list_t *args, int check_func, ch
                                         CHAMELEON_Complex64_t alpha, CHAM_desc_t *descA, CHAM_desc_t *descB, CHAM_desc_t *descBref ) { return 0; }
 static inline int check_zlauum        ( run_arg_list_t *args, cham_uplo_t uplo, CHAM_desc_t *descA1, CHAM_desc_t *descA2 ) { return 0; }
 static inline int check_zxxtrf        ( run_arg_list_t *args, cham_mtxtype_t mtxtype, cham_uplo_t uplo, CHAM_desc_t *descA1, CHAM_desc_t *descA2 ) { return 0; }
+static inline int check_zxxtrf_std    ( run_arg_list_t *args, cham_mtxtype_t mtxtype, cham_uplo_t uplo, int M, int N, CHAMELEON_Complex64_t *A, CHAMELEON_Complex64_t *LU, int LDA ) { return 0; }
 static inline 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 ) { return 0; }
+static inline int check_zsolve_std    ( run_arg_list_t *args, cham_mtxtype_t mtxtype, 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 ) { return 0; }
 static inline 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 ) { return 0; }
+static inline 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 ) { return 0; }
 
 /* Using QR factorization */
 static inline int check_zortho        ( run_arg_list_t *args, CHAM_desc_t *descQ ) { return 0; }
@@ -113,10 +118,15 @@ int check_ztrmm         ( run_arg_list_t *args, int check_func, cham_side_t side
                           CHAMELEON_Complex64_t alpha, CHAM_desc_t *descA, CHAM_desc_t *descB, CHAM_desc_t *descBref );
 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_zxxtrf_std    ( run_arg_list_t *args, cham_mtxtype_t mtxtype, cham_uplo_t uplo, int M, int N, CHAMELEON_Complex64_t *A, CHAMELEON_Complex64_t *LU, int LDA );
 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_zsolve_std    ( run_arg_list_t *args, cham_mtxtype_t mtxtype, 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 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 );
+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 );
 
 /* Using QR factorization */
 int check_zortho        ( run_arg_list_t *args, CHAM_desc_t *descQ );
diff --git a/testing/testing_zlantr.c b/testing/testing_zlantr.c
index fcbb174b39f84da2ba143b9185ad5001cb9c47ac..a34a841ed2b1461c82dd96e2fc427ff5c6f29ee4 100644
--- a/testing/testing_zlantr.c
+++ b/testing/testing_zlantr.c
@@ -177,7 +177,7 @@ testing_t   test_zlantr;
 const char *zlantr_params[] = { "mtxfmt", "nb", "norm", "uplo",  "diag",
                                 "m",      "n",  "lda",  "seedA", NULL };
 const char *zlantr_output[] = { NULL };
-const char *zlantr_outchk[] = { "RETURN", NULL };
+const char *zlantr_outchk[] = { "||A||", "||B||", "||R||", "RETURN", NULL };
 
 /**
  * @brief Testing registration function
diff --git a/testing/testing_zpoinv.c b/testing/testing_zpoinv.c
index db8d2f93967704c917d6ed5d370b771427937ba1..e6fcd3f3ed6e37babcdd0412dc778eadfa26755a 100644
--- a/testing/testing_zpoinv.c
+++ b/testing/testing_zpoinv.c
@@ -122,7 +122,7 @@ testing_zpoinv_std( run_arg_list_t *args, int check )
         CHAMELEON_Complex64_t *A0 = malloc( LDA * N * sizeof(CHAMELEON_Complex64_t) );
         CHAMELEON_zplghe( (double)N, uplo, N, A0, LDA, seedA );
 
-        // hres += check_ztrtri( args, ChamHermitian, uplo, ChamNonUnit, descA0, descA );
+        hres += check_ztrtri_std( args, ChamHermitian, uplo, ChamNonUnit, N, A0, A, LDA );
 
         free( A0 );
     }
diff --git a/testing/testing_zposv.c b/testing/testing_zposv.c
index be1aead9410979e1a725178fb67e29685fe20c5f..89eaf2c77ac7fc6ae42acea0eb4c48c608cd6ec3 100644
--- a/testing/testing_zposv.c
+++ b/testing/testing_zposv.c
@@ -142,22 +142,22 @@ testing_zposv_std( run_arg_list_t *args, int check )
 
     /* Checks the factorisation and residue */
     if ( check ) {
-        CHAMELEON_Complex64_t *A0 = malloc( LDA*N*sizeof(CHAMELEON_Complex64_t) );
-        CHAMELEON_Complex64_t *X0  = malloc( LDB*NRHS*sizeof(CHAMELEON_Complex64_t) );
+        CHAMELEON_Complex64_t *A0 = malloc( LDA*N*   sizeof(CHAMELEON_Complex64_t) );
+        CHAMELEON_Complex64_t *B  = malloc( LDB*NRHS*sizeof(CHAMELEON_Complex64_t) );
 
         /* Check the factorization */
         CHAMELEON_zplghe( (double)N, uplo, N, A0, LDA, seedA );
 
-        // hres += check_zxxtrf( args, ChamHermitian, uplo, descA0, descA );
+        hres += check_zxxtrf_std( args, ChamHermitian, uplo, N, NRHS, A0, A, LDA );
 
         /* Check the solve */
-        CHAMELEON_zplrnt( N, NRHS, X0, LDB, seedB );
+        CHAMELEON_zplrnt( N, NRHS, B, LDB, seedB );
 
         CHAMELEON_zplghe( (double)N, uplo, N, A0, LDA, seedA );
-        // hres += check_zsolve( args, ChamHermitian, ChamNoTrans, uplo, descA0, descX, descB );
+        hres += check_zsolve_std( args, ChamHermitian, ChamNoTrans, uplo, N, NRHS, A0, LDA, X, B, LDB );
 
         free( A0 );
-        free( X0 );
+        free( B );
     }
 
     free( A );
@@ -170,7 +170,7 @@ testing_t   test_zposv;
 const char *zposv_params[] = { "mtxfmt", "nb",  "uplo",  "n",     "nrhs",
                                "lda",    "ldb", "seedA", "seedB", NULL };
 const char *zposv_output[] = { NULL };
-const char *zposv_outchk[] = { "RETURN", NULL };
+const char *zposv_outchk[] = { "||A||", "||A-fact(A)||", "||X||", "||B||", "||Ax-b||", "||Ax-b||/N/eps/(||A||||x||+||b||", "RETURN", NULL };
 
 /**
  * @brief Testing registration function
diff --git a/testing/testing_zpotrf.c b/testing/testing_zpotrf.c
index a584be5a26a48fe357fbe0efcbb2ffc4d8436d55..6e724d958eed9f40c45e4152a9f4d788504f873e 100644
--- a/testing/testing_zpotrf.c
+++ b/testing/testing_zpotrf.c
@@ -113,7 +113,7 @@ testing_zpotrf_std( run_arg_list_t *args, int check )
         CHAMELEON_Complex64_t *A0 = malloc( LDA * N * sizeof(CHAMELEON_Complex64_t) );
         CHAMELEON_zplghe( (double)N, uplo, N, A0, LDA, seedA );
 
-        // hres += check_zxxtrf( args, ChamHermitian, uplo, A0, A );
+        hres += check_zxxtrf_std( args, ChamHermitian, uplo, N, N, A0, A, LDA );
 
         free( A0 );
     }
diff --git a/testing/testing_zpotri.c b/testing/testing_zpotri.c
index 072a998066dc77f3777acb5b3b9a321433f25aa3..4488cce07a38cda5a56e8251f8b5fb21594dbbe4 100644
--- a/testing/testing_zpotri.c
+++ b/testing/testing_zpotri.c
@@ -121,7 +121,7 @@ testing_zpotri_std( run_arg_list_t *args, int check )
         CHAMELEON_Complex64_t *A0 = malloc( LDA*N*sizeof(CHAMELEON_Complex64_t) );
         CHAMELEON_zplghe( (double)N, uplo, N, A0, LDA, seedA );
 
-        // hres += check_ztrtri( args, ChamHermitian, uplo, ChamNonUnit, descA0, descA );
+        hres += check_ztrtri_std( args, ChamHermitian, uplo, ChamNonUnit, N, A0, A, LDA );
 
         free( A0 );
     }
diff --git a/testing/testing_zpotrs.c b/testing/testing_zpotrs.c
index cb7b2715e201ff9b5f4b596e36fa8b8b26770e58..5d6d95ec62d747bcd8ab0278d0ac794b907cf431 100644
--- a/testing/testing_zpotrs.c
+++ b/testing/testing_zpotrs.c
@@ -117,7 +117,7 @@ testing_zpotrs_std( run_arg_list_t *args, int check )
     CHAMELEON_Set( CHAMELEON_TILE_SIZE, nb );
 
     /* Creates the matrices */
-    A = malloc( LDA*N*sizeof(CHAMELEON_Complex64_t) );
+    A = malloc( LDA*N*   sizeof(CHAMELEON_Complex64_t) );
     X = malloc( LDB*NRHS*sizeof(CHAMELEON_Complex64_t) );
 
     /* Fills the matrix with random values */
@@ -135,16 +135,16 @@ testing_zpotrs_std( run_arg_list_t *args, int check )
 
     /* Checks the factorisation and residue */
     if ( check ) {
-        CHAMELEON_Complex64_t *A0 = malloc( LDA*N*sizeof(CHAMELEON_Complex64_t) );
-        CHAMELEON_Complex64_t *X0  = malloc( LDB*NRHS*sizeof(CHAMELEON_Complex64_t) );
+        CHAMELEON_Complex64_t *A0 = malloc( LDA*N*   sizeof(CHAMELEON_Complex64_t) );
+        CHAMELEON_Complex64_t *B  = malloc( LDB*NRHS*sizeof(CHAMELEON_Complex64_t) );
 
         CHAMELEON_zplghe( (double)N, uplo, N, A0, LDA, seedA );
-        CHAMELEON_zplrnt( N, NRHS, X0, LDB, seedB );
+        CHAMELEON_zplrnt( N, NRHS, B, LDB, seedB );
 
-        // hres += check_zsolve( args, ChamHermitian, ChamNoTrans, uplo, descA0, descX, descB );
+        hres += check_zsolve_std( args, ChamHermitian, ChamNoTrans, uplo, N, NRHS, A0, LDA, X, B, LDB );
 
         free( A0 );
-        free( X0 );
+        free( B );
     }
 
     free( A );