   dim3 dimBlock(block_size[0], block_size[1]);
   dim3 dimGrid(grid_size[0], grid_size[1]);
   
-
   // real part first
   checkCudaErrors(cudaMemcpy( v_ext_d, v_ext_real, sizeof(float) * nprod, cudaMemcpyHostToDevice));
 

  v_dab_d = init_sparse_matrix_csr_gpu_float(v_dab_vals, v_dab_rowPtr, 
                  v_dab_col_ind, v_dab_shape[0], v_dab_shape[1], v_dab_nnz, v_dab_indptr_size);

  checkCudaErrors(cusparseCreate(&handle_cuparse));
  checkCudaErrors(cublasCreate(&handle_cublas));


        cc_da_d.m, cc_da_d.n, cc_da_d.nnz, &alpha,
        cc_da_d.descr, cc_da_d.data, cc_da_d.RowPtr, cc_da_d.ColInd, 
        v_ext_d, &beta, vdp_d));
  
  checkCudaErrors(cusparseScsrmv(handle_cuparse, CUSPARSE_OPERATION_TRANSPOSE,
        v_dab_d.m, v_dab_d.n, v_dab_d.nnz, &alpha,
        v_dab_d.descr, v_dab_d.data, v_dab_d.RowPtr, v_dab_d.ColInd, 
