 	REAL fou = TS*TH_DIFF/(ds*ds);
 
 	REAL IC[dv];
-	REAL *d_IC[dv], *d_right[dv], *d_left[dv];
+	REAL *d_IC, *d_right, *d_left;
 
 	for (int k = 0; k<dv; k++)
 	{


#include <iostream>
#include <cmath>
#include <ostream>
#include <fstream>
#include <math.h>

	__shared__ REAL sR[32];
	__shared__ REAL sL[32];

	unsigned int gid = blockDim.x * blockIdx.x + threadIdx.x; //Global Thread ID
	unsigned int tid = threadIdx.x;

	temper[tid] = IC[gid];
	__syncthreads();
	int itr = -1;

	for (unsigned int k = 1; k<16; k++)
	{
		int sw = (k & 1);
		int shft = 32*(sw*2-1);

		if (tid <= (32-k-1) && tid >= k)
		{
			temper[tid + (32*sw)] = fo * (IC[tid+shft-1] + IC[tid+shft+1]) + (1-2.*fo) * IC[tid+shft];
		}

		__syncthreads();

		if (sw)
		{
			sL[k+itr] = temper[k-1];
