 
     fprintf(stdout, "Matrix size is %d\n",size);
 
-    double *h_a, *h_b, *h_c, *h_c1;
-    double *d_a, *d_b, *d_c;
+    floatType_t *h_a, *h_b, *h_c, *h_c1;
+    floatType_t *d_a, *d_b, *d_c;
  
-    size_t numbytes = (size_t ) size * (size_t ) size * sizeof( double );
-
-    h_a = (double *) malloc( numbytes );
+    size_t numbytes = (size_t ) size * (size_t ) size * sizeof( floatType_t );
+
+    h_a = (floatType_t *) malloc( numbytes );
     if( h_a == NULL )
     {
       fprintf(stderr,"Error in host malloc\n");
       return 911;
     }
 
-    h_b = (double *) malloc( numbytes );
+    h_b = (floatType_t *) malloc( numbytes );
     if( h_b == NULL )
     {
       fprintf(stderr,"Error in host malloc\n");
       return 911;
     }
 
-    h_c = (double *) malloc( numbytes );
+    h_c = (floatType_t *) malloc( numbytes );
     if( h_c == NULL )
     {
       fprintf(stderr,"Error in host malloc\n");
       return 911;
     }
 
-	h_c1 = (double *) malloc( numbytes );
+	h_c1 = (floatType_t *) malloc( numbytes );
     if( h_c1 == NULL )
     {
       fprintf(stderr,"Error in host malloc\n");


/* shared memory arrays for A and B */

	__shared__ double as[ TBX ][ BK+1 ];
	__shared__ double bs[ BK ][ TBY+1 ];
	
/* space for C to be held in registers */

	double c_tmp[ NX ][ NY ] ;

	/* zero the temp C array */


#define NX 4  // = TBX/TX == number of iterations to do TBX work with TX blocks
#define NY 4  // = TBY/TY == number of iterations to do TBY work with TY blocks

__global__ void GPU_shmem2(const int m, floatType_t const * const a, 
     floatType_t const * const b, floatType_t *c )
{

/* setup some constants for later use */
