 		int ndata = Daug.GetNdata();
 		h_logdens.resize(ndata);
 		d_logdens = h_logdens;
-
-		decay_rate = 2.0 / 3.0;
 
 		// place array size constant memory
         CUDA_CHECK_RETURN(cudaMemcpyToSymbol(&c_dim_theta, &dim_theta, sizeof(dim_theta)));

	dim3& nThreads;
	// MCMC sampler parameters
	int current_iter;
	double target_rate;
	double decay_rate;
	thrust::host_vector<int> h_naccept;
	thrust::device_vector<int> d_naccept;
};

			unit_norm += snorm_deviate[j] * snorm_deviate[j];
		}
		unit_norm = sqrt(unit_norm);
		double decay_sequence = 1.0 / pow((double) current_iter, decay_rate);
		double scaled_coef = sqrt(decay_sequence * fabs(metro_ratio - target_rate)) / unit_norm;
		for (int j=0; j<c_pchi; j++) {
			scaled_proposal[j] *= scaled_coef;
		}
		bool downdate = (metro_ratio < target_rate);
		// do rank-1 cholesky update to update the proposal covariance matrix
		CholUpdateR1(cholfact, scaled_proposal, c_pchi, downdate);
	}
