 	  thrust::copy(inputVec.begin(), inputVec.end(), input.begin());
 	  forward();
 
-	  Float sumValOrig = 0;
+	  float sumValOrig = 0;
 	  for (size_t i = 0; i < valSize; ++i) {
 		  sumValOrig += val_[i];
 	  }


	  std::vector<float> numericalGrad(inputSize);
	  for (size_t i = 0; i < numericalGrad.size(); ++i) {
		  numericalGrad[i] = (adjVec[i] * (newVal[i] - sumValOrig) / delta);
		  numericalGrad[i] += prevCalcGrad[i];
	  }

	  // set grad results
	  thrust::copy(numericalGrad.begin(), numericalGrad.end(), grad.begin());

	  UTIL_THROW_IF2(valSize != GetTotalSize(adj_.shape()),
			  	  "valSize != adjSize :" << valSize << "!=" << GetTotalSize(adj_.shape()));

	  cerr	<< "inputSize=grad=" << Debug(input.shape())<< "=" << inputSize << " "
			<< "valSize=adj_=" << Debug(val_.shape()) << "=" << valSize
			<< endl;

	  //cerr << "input=" << input.Debug() << endl;
	  cerr << "adj_=" << adj_.Debug() << endl;

	  std::vector<float> origGrad(inputSize);
	  thrust::copy(grad.begin(), grad.end(), origGrad.begin());
