Merge topic 'fix-warnings'

0a4317709 Fix issues of calling __host__ from __device__
dd4d88cd5 Fix warnings about comparing floating point values
cd4b59059 Fix warnings about data type conversion

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Robert Maynard <robert.maynard@kitware.com>
Merge-request: !2146
This commit is contained in:
Kenneth Moreland 2020-06-17 21:23:01 +00:00 committed by Kitware Robot
commit 31feaed0f8
2 changed files with 38 additions and 36 deletions

@ -97,38 +97,38 @@ public:
return result;
}
VTKM_CONT
VTKM_EXEC_CONT
T N() const { return this->n_; }
VTKM_CONT
VTKM_EXEC_CONT
T Min() const { return this->min_; }
VTKM_CONT
VTKM_EXEC_CONT
T Max() const { return this->max_; }
VTKM_CONT
VTKM_EXEC_CONT
T Sum() const { return this->sum_; }
VTKM_CONT
VTKM_EXEC_CONT
T Mean() const { return this->mean_; }
VTKM_CONT
VTKM_EXEC_CONT
T SampleStddev() const { return vtkm::Sqrt(this->SampleVariance()); }
VTKM_CONT
VTKM_EXEC_CONT
T PopulationStddev() const { return vtkm::Sqrt(this->PopulationVariance()); }
VTKM_CONT
VTKM_EXEC_CONT
T SampleVariance() const
{
VTKM_ASSERT(n_ != 1);
return this->M2_ / (this->n_ - 1);
}
VTKM_CONT
VTKM_EXEC_CONT
T PopulationVariance() const { return this->M2_ / this->n_; }
VTKM_CONT
VTKM_EXEC_CONT
T Skewness() const
{
if (this->M2_ == 0)
@ -140,7 +140,7 @@ public:
return vtkm::Sqrt(this->n_) * this->M3_ / vtkm::Pow(this->M2_, T{ 1.5 });
}
VTKM_CONT
VTKM_EXEC_CONT
T Kurtosis() const
{
if (this->M2_ == 0)

@ -19,13 +19,13 @@ void TestSingle()
auto single_array = vtkm::cont::make_ArrayHandle(single);
auto result = vtkm::worklet::DescriptiveStatistics::Run(single_array);
VTKM_TEST_ASSERT(result.N() == 1);
VTKM_TEST_ASSERT(result.Mean() == 42);
VTKM_TEST_ASSERT(result.PopulationVariance() == 0);
VTKM_TEST_ASSERT(test_equal(result.N(), 1));
VTKM_TEST_ASSERT(test_equal(result.Mean(), 42));
VTKM_TEST_ASSERT(test_equal(result.PopulationVariance(), 0));
// A single number does not have skewness nor kurtosis
VTKM_TEST_ASSERT(result.Skewness() == 0);
VTKM_TEST_ASSERT(result.Kurtosis() == 0);
VTKM_TEST_ASSERT(test_equal(result.Skewness(), 0));
VTKM_TEST_ASSERT(test_equal(result.Kurtosis(), 0));
}
void TestConstant()
@ -33,11 +33,11 @@ void TestConstant()
auto constants = vtkm::cont::make_ArrayHandleConstant(1234.f, 10000);
auto result = vtkm::worklet::DescriptiveStatistics::Run(constants);
VTKM_TEST_ASSERT(result.N() == 10000);
VTKM_TEST_ASSERT(result.Sum() == 12340000);
VTKM_TEST_ASSERT(result.PopulationVariance() == 0);
VTKM_TEST_ASSERT(result.Skewness() == 0);
VTKM_TEST_ASSERT(result.Kurtosis() == 0);
VTKM_TEST_ASSERT(test_equal(result.N(), 10000));
VTKM_TEST_ASSERT(test_equal(result.Sum(), 12340000));
VTKM_TEST_ASSERT(test_equal(result.PopulationVariance(), 0));
VTKM_TEST_ASSERT(test_equal(result.Skewness(), 0));
VTKM_TEST_ASSERT(test_equal(result.Kurtosis(), 0));
}
void TestIntegerSequence()
@ -45,11 +45,12 @@ void TestIntegerSequence()
// We only have 23 bits for FloatInt in Float32. This limits N to 11 bits.
constexpr vtkm::Float32 N = 1000;
auto integers = vtkm::cont::ArrayHandleCounting<vtkm::Float32>(0.0f, 1.0f, N);
auto integers =
vtkm::cont::ArrayHandleCounting<vtkm::Float32>(0.0f, 1.0f, static_cast<vtkm::Id>(N));
auto result = vtkm::worklet::DescriptiveStatistics::Run(integers);
VTKM_TEST_ASSERT(result.N() == N);
VTKM_TEST_ASSERT(result.Sum() == N * (N - 1) / 2);
VTKM_TEST_ASSERT(test_equal(result.N(), N));
VTKM_TEST_ASSERT(test_equal(result.Sum(), N * (N - 1) / 2));
VTKM_TEST_ASSERT(test_equal(result.Mean(), (N - 1) / 2));
// Expected values are from Numpy/SciPy
@ -87,10 +88,10 @@ void TestCatastrophicCancellation()
auto arrayOK = vtkm::cont::make_ArrayHandle(okay);
auto resultOK = vtkm::worklet::DescriptiveStatistics::Run(arrayOK);
VTKM_TEST_ASSERT(resultOK.N() == 4);
VTKM_TEST_ASSERT(resultOK.Sum() == 4.0e8 + 40);
VTKM_TEST_ASSERT(resultOK.Min() == 1.0e8 + 4);
VTKM_TEST_ASSERT(resultOK.Max() == 1.0e8 + 16);
VTKM_TEST_ASSERT(test_equal(resultOK.N(), 4));
VTKM_TEST_ASSERT(test_equal(resultOK.Sum(), 4.0e8 + 40));
VTKM_TEST_ASSERT(test_equal(resultOK.Min(), 1.0e8 + 4));
VTKM_TEST_ASSERT(test_equal(resultOK.Max(), 1.0e8 + 16));
VTKM_TEST_ASSERT(test_equal(resultOK.SampleVariance(), 30));
VTKM_TEST_ASSERT(test_equal(resultOK.PopulationVariance(), 22.5));
@ -100,10 +101,10 @@ void TestCatastrophicCancellation()
auto arrayEvil = vtkm::cont::make_ArrayHandle(evil);
auto resultEvil = vtkm::worklet::DescriptiveStatistics::Run(arrayEvil);
VTKM_TEST_ASSERT(resultEvil.N() == 4);
VTKM_TEST_ASSERT(resultEvil.Sum() == 4.0e9 + 40);
VTKM_TEST_ASSERT(resultEvil.Min() == 1.0e9 + 4);
VTKM_TEST_ASSERT(resultEvil.Max() == 1.0e9 + 16);
VTKM_TEST_ASSERT(test_equal(resultEvil.N(), 4));
VTKM_TEST_ASSERT(test_equal(resultEvil.Sum(), 4.0e9 + 40));
VTKM_TEST_ASSERT(test_equal(resultEvil.Min(), 1.0e9 + 4));
VTKM_TEST_ASSERT(test_equal(resultEvil.Max(), 1.0e9 + 16));
VTKM_TEST_ASSERT(test_equal(resultEvil.SampleVariance(), 30));
VTKM_TEST_ASSERT(test_equal(resultEvil.PopulationVariance(), 22.5));
}
@ -220,7 +221,8 @@ void TestMomentsByKey()
{
std::vector<vtkm::UInt32> keys{ 0, 1, 2, 2, 3, 3, 3, 4, 4, 4, 4 };
auto values_array = vtkm::cont::make_ArrayHandleConstant(1.0f, keys.size());
auto values_array =
vtkm::cont::make_ArrayHandleConstant(1.0f, static_cast<vtkm::Id>(keys.size()));
auto keys_array = vtkm::cont::make_ArrayHandle(keys);
auto results = vtkm::worklet::DescriptiveStatistics::Run(keys_array, values_array);
@ -234,9 +236,9 @@ void TestMomentsByKey()
for (vtkm::Id i = 0; i < results.GetNumberOfValues(); ++i)
{
auto result = resultsPortal.Get(i);
VTKM_TEST_ASSERT(result.first == i);
VTKM_TEST_ASSERT(result.second.N() == expected_ns[i]);
VTKM_TEST_ASSERT(result.second.PopulationVariance() == 0);
VTKM_TEST_ASSERT(test_equal(result.first, i));
VTKM_TEST_ASSERT(test_equal(result.second.N(), expected_ns[static_cast<std::size_t>(i)]));
VTKM_TEST_ASSERT(test_equal(result.second.PopulationVariance(), 0));
}
}