void stdevDimTest(string pFileName, dim_t dim=-1) { typedef typename sdOutType<T>::type outType; if (noDoubleTests<T>()) return; if (noDoubleTests<outType>()) return; vector<dim4> numDims; vector<vector<int> > in; vector<vector<float> > tests; readTestsFromFile<int,float>(pFileName, numDims, in, tests); dim4 dims = numDims[0]; vector<T> input(in[0].begin(), in[0].end()); array a(dims, &(input.front())); array b = stdev(a, dim); vector<outType> currGoldBar(tests[0].begin(), tests[0].end()); size_t nElems = currGoldBar.size(); vector<outType> outData(nElems); b.host((void*)outData.data()); for (size_t elIter=0; elIter<nElems; ++elIter) { ASSERT_NEAR(::real(currGoldBar[elIter]), ::real(outData[elIter]), 1.0e-3)<< "at: " << elIter<< endl; ASSERT_NEAR(::imag(currGoldBar[elIter]), ::imag(outData[elIter]), 1.0e-3)<< "at: " << elIter<< endl; } }
TEST(StandardDev, InvalidType) { ASSERT_THROW(stdev(constant(cdouble(1.0, -1.0), 10)), exception); }
TEST(StandardDev, InvalidDim) { ASSERT_THROW(stdev(array(), 5), exception); }