 
 void statevec_controlledPhaseShift(QubitRegister qureg, const int idQubit1, const int idQubit2, REAL angle)
 {
-    QuESTAssert(idQubit1 >= 0 && idQubit1 < qureg.numQubitsInStateVec, 1, __func__);
-	QuESTAssert(idQubit2 >= 0 && idQubit2 < qureg.numQubitsInStateVec, 2, __func__);
-	QuESTAssert(idQubit1 != idQubit2, 3, __func__);
-	
 	REAL cosAngle = cos(angle);
 	REAL sinAngle = sin(angle);
 	

}

void statevec_multiControlledPhaseShift(QubitRegister qureg, int *controlQubits, int numControlQubits, REAL angle)
{
    QuESTAssert(numControlQubits > 0 && numControlQubits <= qureg.numQubitsInStateVec, 4, __func__);
	
	REAL cosAngle = cos(angle);
	REAL sinAngle = sin(angle);

    long long int mask=0;
    for (int i=0; i<numControlQubits; i++) 
		mask = mask | (1LL<<controlQubits[i]);
	
    QuESTAssert(mask >=0 && mask <= (1LL<<qureg.numQubitsInStateVec)-1, 2, __func__);
	
	int threadsPerCUDABlock, CUDABlocks;
    threadsPerCUDABlock = 128;
    CUDABlocks = ceil((REAL)(qureg.numAmpsPerChunk)/threadsPerCUDABlock);


void statevec_sigmaX(QubitRegister qureg, const int targetQubit) 
{
    int threadsPerCUDABlock, CUDABlocks;
    threadsPerCUDABlock = 128;
    CUDABlocks = ceil((REAL)(qureg.numAmpsPerChunk>>1)/threadsPerCUDABlock);
