diff --git a/compute/pzplghe.c b/compute/pzplghe.c
index 26fa75c031c2b85b57ae60b972c87d3f934f9a90..e1d73ad6bbe78e3999cbc1358bbe6775d441a6bd 100644
--- a/compute/pzplghe.c
+++ b/compute/pzplghe.c
@@ -75,6 +75,7 @@ void chameleon_pzplghe( double bump, cham_uplo_t uplo, CHAM_desc_t *A,
                     A->m, m*A->mb, n*A->nb, seed );
             }
         }
+        break;
 
     case ChamUpperLower:
     default:
diff --git a/compute/pzplgsy.c b/compute/pzplgsy.c
index cddda67a55e03239b06ab91726bb23ef8546268c..73f05ceaf0764f15f64b248bee1765ab8468bb59 100644
--- a/compute/pzplgsy.c
+++ b/compute/pzplgsy.c
@@ -75,6 +75,7 @@ void chameleon_pzplgsy( CHAMELEON_Complex64_t bump, cham_uplo_t uplo, CHAM_desc_
                     A->m, m*A->mb, n*A->nb, seed );
             }
         }
+        break;
 
     case ChamUpperLower:
     default:
diff --git a/compute/zheevd.c b/compute/zheevd.c
index f794669c146c5cdbcd8768d5cb5b4bf9c7457be7..9c12a00ba366d4a6080e403a995258701ebdb07b 100644
--- a/compute/zheevd.c
+++ b/compute/zheevd.c
@@ -437,6 +437,8 @@ int CHAMELEON_zheevd_Tile_Async( cham_job_t jobz, cham_uplo_t uplo,
     V = malloc( N * N * sizeof(CHAMELEON_Complex64_t) );
     if (V == NULL) {
         chameleon_error("CHAMELEON_zheevd_Tile_Async", "malloc(V) failed");
+        free(E);
+        free(Q2);
         free(V);
         return CHAMELEON_ERR_OUT_OF_RESOURCES;
     }
diff --git a/compute/ztile.c b/compute/ztile.c
index 00c63cc16fdfdfc2b02a34170eb65b6c70e685d8..580f520d6c247265be34d6207a2e38e04a7ac795 100644
--- a/compute/ztile.c
+++ b/compute/ztile.c
@@ -75,9 +75,14 @@ int CHAMELEON_zLapack_to_Tile( CHAMELEON_Complex64_t *Af77, int LDA, CHAM_desc_t
     }
 
     /* Create the B descriptor to handle the Lapack format matrix */
-    CHAMELEON_Desc_Create_User( &B, Af77, ChamComplexDouble, A->mb, A->nb, A->bsiz,
-                                LDA, A->n, 0, 0, A->m, A->n, 1, 1,
-                                chameleon_getaddr_cm, chameleon_getblkldd_cm, NULL );
+    status = CHAMELEON_Desc_Create_User( &B, Af77, ChamComplexDouble, A->mb, A->nb, A->bsiz,
+                                         LDA, A->n, 0, 0, A->m, A->n, 1, 1,
+                                         chameleon_getaddr_cm, chameleon_getblkldd_cm, NULL );
+    if ( status != CHAMELEON_SUCCESS ) {
+        chameleon_error("CHAMELEON_zTile_to_Lapack", "Failed to create the descriptor");
+        return status;
+    }
+
 
     /* Start the computation */
     chameleon_sequence_create( chamctxt, &sequence );
@@ -151,9 +156,13 @@ int CHAMELEON_zTile_to_Lapack( CHAM_desc_t *A, CHAMELEON_Complex64_t *Af77, int
     }
 
     /* Create the B descriptor to handle the Lapack format matrix */
-    CHAMELEON_Desc_Create_User( &B, Af77, ChamComplexDouble, A->mb, A->nb, A->bsiz,
-                                LDA, A->n, 0, 0, A->m, A->n, 1, 1,
-                                chameleon_getaddr_cm, chameleon_getblkldd_cm, NULL );
+    status = CHAMELEON_Desc_Create_User( &B, Af77, ChamComplexDouble, A->mb, A->nb, A->bsiz,
+                                         LDA, A->n, 0, 0, A->m, A->n, 1, 1,
+                                         chameleon_getaddr_cm, chameleon_getblkldd_cm, NULL );
+    if ( status != CHAMELEON_SUCCESS ) {
+        chameleon_error("CHAMELEON_zTile_to_Lapack", "Failed to create the descriptor");
+        return status;
+    }
 
     /* Start the computation */
     chameleon_sequence_create( chamctxt, &sequence );
diff --git a/control/descriptor.c b/control/descriptor.c
index 52584a44646b9fd1305876708626cc7423b8d9f4..3df1e6766a307741a76f806bec4b5042de487224 100644
--- a/control/descriptor.c
+++ b/control/descriptor.c
@@ -559,8 +559,6 @@ int CHAMELEON_Desc_Create_User( CHAM_desc_t **descptr, void *mat, cham_flttype_t
     CHAM_desc_t *desc;
     int status;
 
-    *descptr = NULL;
-
     chamctxt = chameleon_context_self();
     if (chamctxt == NULL) {
         chameleon_error("CHAMELEON_Desc_Create_User", "CHAMELEON not initialized");
diff --git a/control/workspace.c b/control/workspace.c
index c7b010c3e604689fd1547a0917cf8ac1e3645f45..52fb945ab041d03441f1081a22a83cb6094c2bdb 100644
--- a/control/workspace.c
+++ b/control/workspace.c
@@ -71,8 +71,8 @@ int chameleon_alloc_ibnb_tile(int M, int N, cham_tasktype_t func, int type, CHAM
         NT *= 2;
     }
 
-    lm = IB * MT;
-    ln = NB * NT;
+    lm = (int64_t)IB * (int64_t)MT;
+    ln = (int64_t)NB * (int64_t)NT;
 
     return CHAMELEON_Desc_Create( desc, CHAMELEON_MAT_ALLOC_TILE, type, IB, NB, IB*NB,
                                   lm, ln, 0, 0, lm, ln, p, q );
@@ -109,8 +109,8 @@ int chameleon_alloc_ipiv(int M, int N, cham_tasktype_t func, int type, CHAM_desc
     NT = (N%NB==0) ? (N/NB) : ((N/NB)+1);
     MT = (M%NB==0) ? (M/NB) : ((M/NB)+1);
 
-    lm = IB * MT;
-    ln = NB * NT;
+    lm = (int64_t)IB * (int64_t)MT;
+    ln = (int64_t)NB * (int64_t)NT;
 
     size = (size_t)(chameleon_min(MT, NT) * NB * NT * sizeof(int));
     if (size == 0) {
diff --git a/coreblas/compute/core_zlatro.c b/coreblas/compute/core_zlatro.c
index eb276e3732470a8c9004153d314f109087aa8cd9..e86b2b17c9584af4c1d2a58f37b6f32f1a01e161 100644
--- a/coreblas/compute/core_zlatro.c
+++ b/coreblas/compute/core_zlatro.c
@@ -117,7 +117,9 @@ int CORE_zlatro(cham_uplo_t uplo, cham_trans_t trans,
         CORE_zlacpy(uplo, M, N, A, LDA, B, LDB);
     }
     else {
-        if (trans == ChamConjTrans) {
+#if defined(PRECISION_z) || defined(PRECISION_c)
+        if (trans == ChamConjTrans)
+        {
             if(uplo == ChamUpper) {
                 for(j=0; j<N; j++)
                     for(i=0; i<chameleon_min(j+1,M); i++)
@@ -134,7 +136,9 @@ int CORE_zlatro(cham_uplo_t uplo, cham_trans_t trans,
                         B[j+i*LDB] = conj(A[i+j*LDA]);
             }
         }
-        else {
+        else
+#endif
+        {
             if(uplo==ChamUpper) {
                 for(j=0;j<N;j++)
                     for(i=0;i<chameleon_min(j+1,M);i++)
diff --git a/coreblas/compute/core_ztile.c b/coreblas/compute/core_ztile.c
index def292605dddc3090255e8f1dd559f044ddd3bfc..a1ff2c1839f2e05fde45ee546b2b71b6b2800144 100644
--- a/coreblas/compute/core_ztile.c
+++ b/coreblas/compute/core_ztile.c
@@ -783,8 +783,8 @@ TCORE_zunmlq( cham_side_t            side,
               cham_trans_t           trans,
               int                    M,
               int                    N,
-              int                    IB,
               int                    K,
+              int                    IB,
               const CHAM_tile_t *    V,
               const CHAM_tile_t *    T,
               CHAM_tile_t *          C,
@@ -795,7 +795,7 @@ TCORE_zunmlq( cham_side_t            side,
     assert( T->format & CHAMELEON_TILE_FULLRANK );
     assert( C->format & CHAMELEON_TILE_FULLRANK );
     return CORE_zunmlq(
-        side, trans, M, N, IB, K, V->mat, V->ld, T->mat, T->ld, C->mat, C->ld, WORK, LDWORK );
+        side, trans, M, N, K, IB, V->mat, V->ld, T->mat, T->ld, C->mat, C->ld, WORK, LDWORK );
 }
 
 int
diff --git a/hqr b/hqr
index 621a15b8241717f9e8eb5774eadcb6b6d394e99a..c05aef8974161f46281170232fbe604f3fe2a68d 160000
--- a/hqr
+++ b/hqr
@@ -1 +1 @@
-Subproject commit 621a15b8241717f9e8eb5774eadcb6b6d394e99a
+Subproject commit c05aef8974161f46281170232fbe604f3fe2a68d
diff --git a/new-testing/testing_zcheck.c b/new-testing/testing_zcheck.c
index 52fc9f396d5b2945a961a89fcf20dc27e560d51e..d2f33920eee681d4a84140c4e62a522e7ca9abc3 100644
--- a/new-testing/testing_zcheck.c
+++ b/new-testing/testing_zcheck.c
@@ -87,13 +87,13 @@ int check_zmatrices( run_arg_list_t *args, cham_uplo_t uplo, CHAM_desc_t *descA,
         }
         else {
             Anorm = LAPACKE_zlantr_work( LAPACK_COL_MAJOR, 'M', chameleon_lapack_const(uplo), 'N',
-                                         M, N, B, LDA, work );
+                                         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 residue's norm */
+        /* Computes the residual's norm */
         if ( uplo == ChamUpperLower ) {
             Rnorm = LAPACKE_zlange_work( LAPACK_COL_MAJOR, 'M', M, N, B, LDA, work );
         }
@@ -608,20 +608,26 @@ int check_zsymm( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_side_t s
     CHAMELEON_Complex64_t mzone = -1.0;
 
     if ( side == ChamLeft ) {
+#if defined(PRECISION_z) || defined(PRECISION_c)
         if ( matrix_type == ChamHermitian ) {
             Anorm = CHAMELEON_zlanhe_Tile(ChamInfNorm, uplo, descA);
         }
-        else {
+        else
+#endif
+        {
             Anorm = CHAMELEON_zlansy_Tile(ChamInfNorm, uplo, descA);
         }
         Bnorm = CHAMELEON_zlange_Tile(ChamOneNorm, descB);
         LDA = M;
         An  = M;
     } else {
+#if defined(PRECISION_z) || defined(PRECISION_c)
         if ( matrix_type == ChamHermitian ) {
             Anorm = CHAMELEON_zlanhe_Tile(ChamOneNorm, uplo, descA);
         }
-        else {
+        else
+#endif
+        {
             Anorm = CHAMELEON_zlansy_Tile(ChamOneNorm, uplo, descA);
         }
         Bnorm = CHAMELEON_zlange_Tile(ChamInfNorm, descB);
@@ -650,12 +656,15 @@ int check_zsymm( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_side_t s
         double eps = LAPACKE_dlamch_work('e');
 
         /* Makes the multiplication with the core function */
+#if defined(PRECISION_z) || defined(PRECISION_c)
         if ( matrix_type == ChamHermitian ) {
             cblas_zhemm( CblasColMajor, (CBLAS_SIDE)side, (CBLAS_UPLO)uplo,
                          M, N, CBLAS_SADDR(alpha),
                          A, LDA, B, LDB, CBLAS_SADDR(beta), Cref, LDC );
         }
-        else {
+        else
+#endif
+        {
             cblas_zsymm( CblasColMajor, (CBLAS_SIDE)side, (CBLAS_UPLO)uplo,
                          M, N, CBLAS_SADDR(alpha),
                          A, LDA, B, LDB, CBLAS_SADDR(beta), Cref, LDC );
@@ -764,11 +773,14 @@ int check_zsyrk( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_uplo_t u
     }
 
     /* Computes the norms for comparing */
+#if defined(PRECISION_z) || defined(PRECISION_c)
     if ( matrix_type == ChamHermitian ) {
         Crefnorm  = CHAMELEON_zlanhe_Tile( ChamInfNorm, uplo, descCref );
         Cchamnorm = CHAMELEON_zlanhe_Tile( ChamInfNorm, uplo, descC    );
     }
-    else {
+    else
+#endif
+    {
         Crefnorm  = CHAMELEON_zlansy_Tile( ChamInfNorm, uplo, descCref );
         Cchamnorm = CHAMELEON_zlansy_Tile( ChamInfNorm, uplo, descC    );
     }
@@ -796,6 +808,7 @@ int check_zsyrk( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_uplo_t u
         double *work = malloc(sizeof(double)*N);
 
         /* Makes the multiplication with the core function */
+#if defined(PRECISION_z) || defined(PRECISION_c)
         if ( matrix_type == ChamHermitian ) {
             if ( descB == NULL ) {
                 cblas_zherk( CblasColMajor, (CBLAS_UPLO)uplo, (CBLAS_TRANSPOSE)trans,
@@ -807,8 +820,12 @@ int check_zsyrk( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_uplo_t u
                               N, K, CBLAS_SADDR(alpha), A, LDA, B, LDA, creal(beta), Cref, LDC );
                 ABnorm = 2. * Anorm * Bnorm;
             }
+
+            Clapacknorm = LAPACKE_zlanhe_work( LAPACK_COL_MAJOR, 'I', chameleon_lapack_const(uplo), N, Cref, LDC, work );
         }
-        else {
+        else
+#endif
+        {
             if ( descB == NULL ) {
                 cblas_zsyrk( CblasColMajor, (CBLAS_UPLO)uplo, (CBLAS_TRANSPOSE)trans,
                              N, K, CBLAS_SADDR(alpha), A, LDA, CBLAS_SADDR(beta), Cref, LDC );
@@ -819,22 +836,22 @@ int check_zsyrk( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_uplo_t u
                               N, K, CBLAS_SADDR(alpha), A, LDA, B, LDA, CBLAS_SADDR(beta), Cref, LDC );
                 ABnorm = 2. * Anorm * Bnorm;
             }
-        }
-        if ( matrix_type == ChamHermitian ) {
-            Clapacknorm = LAPACKE_zlanhe_work( LAPACK_COL_MAJOR, 'I', chameleon_lapack_const(uplo), N, Cref, LDC, work );
-        }
-        else {
+
             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 );
 
         /* Computes the norm with the core function's result */
+#if defined(PRECISION_z) || defined(PRECISION_c)
         if ( matrix_type == ChamHermitian ) {
             Rnorm = LAPACKE_zlanhe_work( LAPACK_COL_MAJOR, 'M', chameleon_lapack_const(uplo), N, Cref, LDC, NULL );
         }
-        else {
+        else
+#endif
+        {
             Rnorm = LAPACKE_zlansy_work( LAPACK_COL_MAJOR, 'M', chameleon_lapack_const(uplo), N, Cref, LDC, NULL );
         }
         result = Rnorm / ((ABnorm + Crefnorm) * K * eps);