diff --git a/cudablas/compute/cuda_zgemerge.c b/cudablas/compute/cuda_zgemerge.c
index 5d7aa0cb4b7e0027da4151be5cf0eee98f0279d1..9f3f8d134b1695e69ce1537c429ef013cbd945de 100644
--- a/cudablas/compute/cuda_zgemerge.c
+++ b/cudablas/compute/cuda_zgemerge.c
@@ -23,12 +23,13 @@
 int
 CUDA_zgemerge( cham_side_t side, cham_diag_t diag,
                int M, int N,
-               cuDoubleComplex *A, int LDA,
+               const cuDoubleComplex *A, int LDA,
                cuDoubleComplex *B, int LDB,
                CUBLAS_STREAM_PARAM)
 {
     int i;
-    cuDoubleComplex *cola, *colb;
+    const cuDoubleComplex *cola;
+    cuDoubleComplex       *colb;
 
     if (M < 0) {
         return -1;
diff --git a/cudablas/compute/cuda_zgemm.c b/cudablas/compute/cuda_zgemm.c
index ebf104209b20ab1f2a557cd398be0a342a973e9f..7a5900b761ad081181e6b47977e540aa16797b1b 100644
--- a/cudablas/compute/cuda_zgemm.c
+++ b/cudablas/compute/cuda_zgemm.c
@@ -22,10 +22,10 @@
 
 int CUDA_zgemm(cham_trans_t transa, cham_trans_t transb,
                int m, int n, int k,
-               cuDoubleComplex *alpha,
+               const cuDoubleComplex *alpha,
                const cuDoubleComplex *A, int lda,
                const cuDoubleComplex *B, int ldb,
-               cuDoubleComplex *beta,
+               const cuDoubleComplex *beta,
                cuDoubleComplex *C, int ldc,
                CUBLAS_STREAM_PARAM)
 {
diff --git a/cudablas/compute/cuda_zhemm.c b/cudablas/compute/cuda_zhemm.c
index 0a71c08fee4e047293488e3cda871c42b5eaf867..26a470b3414aed3777a23e526ccd8e30febe75b4 100644
--- a/cudablas/compute/cuda_zhemm.c
+++ b/cudablas/compute/cuda_zhemm.c
@@ -22,10 +22,10 @@
 
 int CUDA_zhemm(cham_side_t side, cham_uplo_t uplo,
                int m, int n,
-               cuDoubleComplex *alpha,
+               const cuDoubleComplex *alpha,
                const cuDoubleComplex *A, int lda,
                const cuDoubleComplex *B, int ldb,
-               cuDoubleComplex *beta,
+               const cuDoubleComplex *beta,
                cuDoubleComplex *C, int ldc,
                CUBLAS_STREAM_PARAM)
 {
diff --git a/cudablas/compute/cuda_zher2k.c b/cudablas/compute/cuda_zher2k.c
index b5a8945c75fac27f4df2c54c4eb7fa0a60060c5c..0fd08570d9722bbdcc9a0f419008f343355077a7 100644
--- a/cudablas/compute/cuda_zher2k.c
+++ b/cudablas/compute/cuda_zher2k.c
@@ -22,10 +22,10 @@
 
 int CUDA_zher2k(cham_uplo_t uplo, cham_trans_t trans,
                 int n, int k,
-                cuDoubleComplex *alpha,
+                const cuDoubleComplex *alpha,
                 const cuDoubleComplex *A, int lda,
                 const cuDoubleComplex *B, int ldb,
-                double *beta,
+                const double *beta,
                 cuDoubleComplex *C, int ldc,
                 CUBLAS_STREAM_PARAM)
 {
diff --git a/cudablas/compute/cuda_zherk.c b/cudablas/compute/cuda_zherk.c
index 34674e9ff31a929f52fc7616e2b6d99dff52d32a..cd0d7ff6441932487e13e5ac4fc6ac9f59d3a12a 100644
--- a/cudablas/compute/cuda_zherk.c
+++ b/cudablas/compute/cuda_zherk.c
@@ -22,9 +22,9 @@
 
 int CUDA_zherk( cham_uplo_t uplo, cham_trans_t trans,
                 int n, int k,
-                double *alpha,
+                const double *alpha,
                 const cuDoubleComplex *A, int lda,
-                double *beta,
+                const double *beta,
                 cuDoubleComplex *B, int ldb,
                 CUBLAS_STREAM_PARAM)
 {
diff --git a/cudablas/compute/cuda_zlarfb.c b/cudablas/compute/cuda_zlarfb.c
index 51bbbc14601e1414a1d8607cf07a2c8ab892d7cb..3cc573ff59c813e7f9448ac847684e84de4a3f45 100644
--- a/cudablas/compute/cuda_zlarfb.c
+++ b/cudablas/compute/cuda_zlarfb.c
@@ -42,7 +42,8 @@ CUDA_zlarfb( cham_side_t side, cham_trans_t trans,
     double mzone = -1.0;
 #endif /* defined(PRECISION_z) || defined(PRECISION_c) */
 
-    cham_trans_t transT, uplo, notransV, transV;
+    cham_trans_t transT, notransV, transV;
+    cham_uplo_t  uplo;
 
     /* Check input arguments */
     if ((side != ChamLeft) && (side != ChamRight)) {
diff --git a/cudablas/compute/cuda_zsymm.c b/cudablas/compute/cuda_zsymm.c
index ecf201b2585e129f890a0d544564575ce4c1293f..2ed61af73945442e9586c0c2b5a98fb909aecd2a 100644
--- a/cudablas/compute/cuda_zsymm.c
+++ b/cudablas/compute/cuda_zsymm.c
@@ -20,14 +20,14 @@
  */
 #include "cudablas.h"
 
-int CUDA_zsymm(cham_side_t side, cham_uplo_t uplo,
-               int m, int n,
-               cuDoubleComplex *alpha,
-        const cuDoubleComplex *A, int lda,
-               const cuDoubleComplex *B, int ldb,
-               cuDoubleComplex *beta,
-               cuDoubleComplex *C, int ldc,
-               CUBLAS_STREAM_PARAM)
+int CUDA_zsymm( cham_side_t side, cham_uplo_t uplo,
+                int m, int n,
+                const cuDoubleComplex *alpha,
+                const cuDoubleComplex *A, int lda,
+                const cuDoubleComplex *B, int ldb,
+                const cuDoubleComplex *beta,
+                cuDoubleComplex *C, int ldc,
+                CUBLAS_STREAM_PARAM )
 {
     cublasZsymm(CUBLAS_HANDLE
                 chameleon_cublas_const(side), chameleon_cublas_const(uplo),
diff --git a/cudablas/compute/cuda_zsyr2k.c b/cudablas/compute/cuda_zsyr2k.c
index fb4217d0a09574630dc7f393890547e718fc0840..5c40f1d54fa8034218c9ccd9afd6c409e493186b 100644
--- a/cudablas/compute/cuda_zsyr2k.c
+++ b/cudablas/compute/cuda_zsyr2k.c
@@ -23,10 +23,10 @@
 int CUDA_zsyr2k(
         cham_uplo_t uplo, cham_trans_t trans,
         int n, int k,
-        cuDoubleComplex *alpha,
+        const cuDoubleComplex *alpha,
         const cuDoubleComplex *A, int lda,
         const cuDoubleComplex *B, int ldb,
-        cuDoubleComplex *beta,
+        const cuDoubleComplex *beta,
         cuDoubleComplex *C, int ldc,
         CUBLAS_STREAM_PARAM)
 {
diff --git a/cudablas/compute/cuda_zsyrk.c b/cudablas/compute/cuda_zsyrk.c
index 73a78280606cfea3befcd86e4247fd496bc2867d..b2a61353c747a430b887a661f588f502d713fe79 100644
--- a/cudablas/compute/cuda_zsyrk.c
+++ b/cudablas/compute/cuda_zsyrk.c
@@ -22,9 +22,9 @@
 
 int CUDA_zsyrk(cham_uplo_t uplo, cham_trans_t trans,
                int n, int k,
-               cuDoubleComplex *alpha,
+               const cuDoubleComplex *alpha,
                const cuDoubleComplex *A, int lda,
-               cuDoubleComplex *beta,
+               const cuDoubleComplex *beta,
                cuDoubleComplex *C, int ldc,
                CUBLAS_STREAM_PARAM)
 {
diff --git a/cudablas/compute/cuda_ztrmm.c b/cudablas/compute/cuda_ztrmm.c
index 71d9fa419a102dee69822f1ad0de5bee2ede21dc..a054413e7619e64d215ad4c68c1ef70294394fd5 100644
--- a/cudablas/compute/cuda_ztrmm.c
+++ b/cudablas/compute/cuda_ztrmm.c
@@ -24,7 +24,7 @@ int CUDA_ztrmm(
     cham_side_t side, cham_uplo_t uplo,
     cham_trans_t transa, cham_diag_t diag,
     int m, int n,
-    cuDoubleComplex *alpha,
+    const cuDoubleComplex *alpha,
     const cuDoubleComplex *A, int lda,
     cuDoubleComplex *B, int ldb,
     CUBLAS_STREAM_PARAM)
diff --git a/cudablas/compute/cuda_ztrsm.c b/cudablas/compute/cuda_ztrsm.c
index e2407be7caaf9d12e8d49360e5b96a1239ba883c..5f63d2464c679c239393040f66bb8f5ef3c1df9b 100644
--- a/cudablas/compute/cuda_ztrsm.c
+++ b/cudablas/compute/cuda_ztrsm.c
@@ -23,7 +23,7 @@
 int CUDA_ztrsm(cham_side_t side, cham_uplo_t uplo,
                cham_trans_t transa, cham_diag_t diag,
                int m, int n,
-               cuDoubleComplex *alpha,
+               const cuDoubleComplex *alpha,
                const cuDoubleComplex *A, int lda,
                cuDoubleComplex *B, int ldb,
                CUBLAS_STREAM_PARAM)
diff --git a/cudablas/include/cudablas/cudablas_z.h b/cudablas/include/cudablas/cudablas_z.h
index 49fcab19c46bbdf46c00fbce149b20c86096e279..2d22e33ca04a2215f76b477ca2a90c4b6c4cb96f 100644
--- a/cudablas/include/cudablas/cudablas_z.h
+++ b/cudablas/include/cudablas/cudablas_z.h
@@ -25,21 +25,21 @@
  *  Declarations of cuda kernels - alphabetical order
  */
 int CUDA_zgeadd( cham_trans_t trans, int m, int n, const cuDoubleComplex *alpha, const cuDoubleComplex *A, int lda, const cuDoubleComplex *beta, cuDoubleComplex *B, int ldb, CUBLAS_STREAM_PARAM );
-int CUDA_zgemerge( cham_side_t side, cham_diag_t diag, int M, int N, cuDoubleComplex *A, int LDA, cuDoubleComplex *B, int LDB, CUBLAS_STREAM_PARAM );
-int CUDA_zgemm(  cham_trans_t transa, cham_trans_t transb, int m, int n, int k, cuDoubleComplex *alpha, const cuDoubleComplex *A, int lda, const cuDoubleComplex *B, int ldb, cuDoubleComplex *beta, cuDoubleComplex *C, int ldc, CUBLAS_STREAM_PARAM );
-int CUDA_zhemm(  cham_side_t side, cham_uplo_t uplo, int m, int n, cuDoubleComplex *alpha, const cuDoubleComplex *A, int lda, const cuDoubleComplex *B, int ldb, cuDoubleComplex *beta, cuDoubleComplex *C, int ldc, CUBLAS_STREAM_PARAM );
-int CUDA_zher2k( cham_uplo_t uplo, cham_trans_t trans, int n, int k, cuDoubleComplex *alpha, const cuDoubleComplex *A, int lda, const cuDoubleComplex *B, int ldb, double *beta, cuDoubleComplex *C, int ldc, CUBLAS_STREAM_PARAM );
+int CUDA_zgemerge( cham_side_t side, cham_diag_t diag, int M, int N, const cuDoubleComplex *A, int LDA, cuDoubleComplex *B, int LDB, CUBLAS_STREAM_PARAM );
+int CUDA_zgemm(  cham_trans_t transa, cham_trans_t transb, int m, int n, int k, const cuDoubleComplex *alpha, const cuDoubleComplex *A, int lda, const cuDoubleComplex *B, int ldb, const cuDoubleComplex *beta, cuDoubleComplex *C, int ldc, CUBLAS_STREAM_PARAM );
+int CUDA_zhemm(  cham_side_t side, cham_uplo_t uplo, int m, int n, const cuDoubleComplex *alpha, const cuDoubleComplex *A, int lda, const cuDoubleComplex *B, int ldb, const cuDoubleComplex *beta, cuDoubleComplex *C, int ldc, CUBLAS_STREAM_PARAM );
+int CUDA_zher2k( cham_uplo_t uplo, cham_trans_t trans, int n, int k, const cuDoubleComplex *alpha, const cuDoubleComplex *A, int lda, const cuDoubleComplex *B, int ldb, const double *beta, cuDoubleComplex *C, int ldc, CUBLAS_STREAM_PARAM );
 int CUDA_zherfb( cham_uplo_t uplo, int n, int k, int ib, int nb, const cuDoubleComplex *A, int lda, const cuDoubleComplex *T, int ldt, cuDoubleComplex *C, int ldc, cuDoubleComplex *WORK, int ldwork, CUBLAS_STREAM_PARAM );
-int CUDA_zherk(  cham_uplo_t uplo, cham_trans_t trans, int n, int k, double *alpha, const cuDoubleComplex *A, int lda, double *beta, cuDoubleComplex *B, int ldb, CUBLAS_STREAM_PARAM );
+int CUDA_zherk(  cham_uplo_t uplo, cham_trans_t trans, int n, int k, const double *alpha, const cuDoubleComplex *A, int lda, const double *beta, cuDoubleComplex *B, int ldb, CUBLAS_STREAM_PARAM );
 int CUDA_zlarfb(cham_side_t side, cham_trans_t trans, cham_dir_t direct, cham_store_t storev, int M, int N, int K, const cuDoubleComplex *V, int LDV, const cuDoubleComplex *T, int LDT, cuDoubleComplex *C, int LDC, cuDoubleComplex *WORK, int LDWORK, CUBLAS_STREAM_PARAM );
 int CUDA_zparfb(cham_side_t side, cham_trans_t trans, cham_dir_t direct, cham_store_t storev, int M1, int N1, int M2, int N2, int K, int L, cuDoubleComplex *A1, int LDA1, cuDoubleComplex *A2, int LDA2, const cuDoubleComplex *V, int LDV, const cuDoubleComplex *T, int LDT, cuDoubleComplex *WORK, int LWORK, CUBLAS_STREAM_PARAM );
-int CUDA_zsymm(  cham_side_t side, cham_uplo_t uplo, int m, int n, cuDoubleComplex *alpha, const cuDoubleComplex *A, int lda, const cuDoubleComplex *B, int ldb, cuDoubleComplex *beta, cuDoubleComplex *C, int ldc, CUBLAS_STREAM_PARAM );
-int CUDA_zsyr2k( cham_uplo_t uplo, cham_trans_t trans, int n, int k, cuDoubleComplex *alpha, const cuDoubleComplex *A, int lda, const cuDoubleComplex *B, int ldb, cuDoubleComplex *beta, cuDoubleComplex *C, int ldc, CUBLAS_STREAM_PARAM );
-int CUDA_zsyrk(  cham_uplo_t uplo, cham_trans_t trans, int n, int k, cuDoubleComplex *alpha, const cuDoubleComplex *A, int lda, cuDoubleComplex *beta, cuDoubleComplex *C, int ldc, CUBLAS_STREAM_PARAM );
+int CUDA_zsymm(  cham_side_t side, cham_uplo_t uplo, int m, int n, const cuDoubleComplex *alpha, const cuDoubleComplex *A, int lda, const cuDoubleComplex *B, int ldb, const cuDoubleComplex *beta, cuDoubleComplex *C, int ldc, CUBLAS_STREAM_PARAM );
+int CUDA_zsyr2k( cham_uplo_t uplo, cham_trans_t trans, int n, int k, const cuDoubleComplex *alpha, const cuDoubleComplex *A, int lda, const cuDoubleComplex *B, int ldb, const cuDoubleComplex *beta, cuDoubleComplex *C, int ldc, CUBLAS_STREAM_PARAM );
+int CUDA_zsyrk(  cham_uplo_t uplo, cham_trans_t trans, int n, int k, const cuDoubleComplex *alpha, const cuDoubleComplex *A, int lda, const cuDoubleComplex *beta, cuDoubleComplex *C, int ldc, CUBLAS_STREAM_PARAM );
 int CUDA_ztpmqrt( cham_side_t side, cham_trans_t trans, int M, int N, int K, int L, int IB, const cuDoubleComplex *V, int LDV, const cuDoubleComplex *T, int LDT, cuDoubleComplex *A, int LDA, cuDoubleComplex *B, int LDB, cuDoubleComplex *WORK, int lwork, CUBLAS_STREAM_PARAM );
 int CUDA_ztpmlqt( cham_side_t side, cham_trans_t trans, int M, int N, int K, int L, int IB, const cuDoubleComplex *V, int LDV, const cuDoubleComplex *T, int LDT, cuDoubleComplex *A, int LDA, cuDoubleComplex *B, int LDB, cuDoubleComplex *WORK, int lwork, CUBLAS_STREAM_PARAM );
-int CUDA_ztrmm(  cham_side_t side, cham_uplo_t uplo, cham_trans_t transa, cham_diag_t diag, int m, int n, cuDoubleComplex *alpha, const cuDoubleComplex *A, int lda, cuDoubleComplex *B, int ldb, CUBLAS_STREAM_PARAM );
-int CUDA_ztrsm(  cham_side_t side, cham_uplo_t uplo, cham_trans_t transa, cham_diag_t diag, int m, int n, cuDoubleComplex *alpha, const cuDoubleComplex *A, int lda, cuDoubleComplex *B, int ldb, CUBLAS_STREAM_PARAM );
+int CUDA_ztrmm(  cham_side_t side, cham_uplo_t uplo, cham_trans_t transa, cham_diag_t diag, int m, int n, const cuDoubleComplex *alpha, const cuDoubleComplex *A, int lda, cuDoubleComplex *B, int ldb, CUBLAS_STREAM_PARAM );
+int CUDA_ztrsm(  cham_side_t side, cham_uplo_t uplo, cham_trans_t transa, cham_diag_t diag, int m, int n, const cuDoubleComplex *alpha, const cuDoubleComplex *A, int lda, cuDoubleComplex *B, int ldb, CUBLAS_STREAM_PARAM );
 int CUDA_ztsmlq( cham_side_t side, cham_trans_t trans, int M1, int N1, int M2, int N2, int K, int IB, cuDoubleComplex *A1, int LDA1, cuDoubleComplex *A2, int LDA2, const cuDoubleComplex *V, int LDV, const cuDoubleComplex *T, int LDT, cuDoubleComplex *WORK, int LWORK, CUBLAS_STREAM_PARAM );
 int CUDA_zttmlq( cham_side_t side, cham_trans_t trans, int M1, int N1, int M2, int N2, int K, int IB, cuDoubleComplex *A1, int LDA1, cuDoubleComplex *A2, int LDA2, const cuDoubleComplex *V, int LDV, const cuDoubleComplex *T, int LDT, cuDoubleComplex *WORK, int LWORK, CUBLAS_STREAM_PARAM );
 int CUDA_ztsmqr( cham_side_t side, cham_trans_t trans, int M1, int N1, int M2, int N2, int K, int IB, cuDoubleComplex *A1, int LDA1, cuDoubleComplex *A2, int LDA2, const cuDoubleComplex *V, int LDV, const cuDoubleComplex *T, int LDT, cuDoubleComplex *WORK, int LWORK, CUBLAS_STREAM_PARAM );