Skip to content

Commit

Permalink
Merge pull request #35 from J-Hizzle/hotfix-getBinPosition
Browse files Browse the repository at this point in the history
hotfixed getBinPosition assertion
  • Loading branch information
XzzX authored Feb 18, 2025
2 parents 5fc3cb0 + a059fd4 commit f66ee2f
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 12 deletions.
11 changes: 11 additions & 0 deletions mrmd/data/MultiHistogram.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,17 @@ namespace mrmd
{
namespace data
{

ScalarView::HostMirror MultiHistogram::createGrid() const
{
ScalarView::HostMirror grid("grid", numBins);
for (idx_t i = 0; i < numBins; ++i)
{
grid[i] = getBinPosition(i);
}
return grid;
}

MultiHistogram& MultiHistogram::operator+=(const MultiHistogram& rhs)
{
if (numBins != rhs.numBins) exit(EXIT_FAILURE);
Expand Down
16 changes: 4 additions & 12 deletions mrmd/data/MultiHistogram.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -56,29 +56,21 @@ struct MultiHistogram
*/
KOKKOS_INLINE_FUNCTION idx_t getBin(const real_t& val) const
{
auto bin = idx_c((val - min) * inverseBinSize);
auto bin = idx_c(std::floor((val - min) * inverseBinSize));
if (bin < 0) bin = -1;
if (bin >= numBins) bin = -1;
return bin;
}

KOKKOS_INLINE_FUNCTION real_t getBinPosition(idx_t binIdx) const
{
assert(binIdx < 0);
assert(binIdx >= numBins);
assert(binIdx >= 0);
assert(binIdx < numBins);
auto binPosition = min + (real_c(binIdx) + 0.5_r) * binSize;
return binPosition;
}

ScalarView::HostMirror createGrid() const
{
ScalarView::HostMirror grid("grid", numBins);
for (idx_t i = 0; i < numBins; ++i)
{
grid[i] = getBinPosition(i);
}
return grid;
}
ScalarView::HostMirror createGrid() const;

const real_t min;
const real_t max;
Expand Down
16 changes: 16 additions & 0 deletions mrmd/data/MultiHistogram.test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,22 @@ namespace mrmd
namespace data
{

TEST(MultiHistogram, getBin)
{
MultiHistogram histogram("histogram", 0_r, 10_r, 10, 2);
EXPECT_EQ(histogram.getBin(-0.5_r), -1);
EXPECT_EQ(histogram.getBin(0.5_r), 0);
EXPECT_EQ(histogram.getBin(5.5_r), 5);
EXPECT_EQ(histogram.getBin(10.5_r), -1);
}

TEST(MultiHistogram, getBinPosition)
{
MultiHistogram histogram("histogram", 0_r, 10_r, 10, 2);
EXPECT_FLOAT_EQ(histogram.getBinPosition(0), 0.5_r);
EXPECT_FLOAT_EQ(histogram.getBinPosition(5), 5.5_r);
}

TEST(MultiHistogram, scale)
{
MultiHistogram histogram("histogram", 0_r, 10_r, 11, 2);
Expand Down

0 comments on commit f66ee2f

Please sign in to comment.