예제 #1
0
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;
    }
}
예제 #2
0
TEST(StandardDev, InvalidType)
{
    ASSERT_THROW(stdev(constant(cdouble(1.0, -1.0), 10)), exception);
}
예제 #3
0
TEST(StandardDev, InvalidDim)
{
    ASSERT_THROW(stdev(array(), 5), exception);
}