Index: source/Core/Scalar.cpp =================================================================== --- source/Core/Scalar.cpp +++ source/Core/Scalar.cpp @@ -2266,7 +2266,7 @@ case Scalar::e_float: case Scalar::e_double: case Scalar::e_long_double: - if (b->m_float.isZero()) { + if (!b->m_float.isZero()) { result.m_float = a->m_float / b->m_float; return result; } Index: unittests/Core/ScalarTest.cpp =================================================================== --- unittests/Core/ScalarTest.cpp +++ unittests/Core/ScalarTest.cpp @@ -132,3 +132,11 @@ EXPECT_EQ(std::to_string(std::numeric_limits::max()), ScalarGetValue(std::numeric_limits::max())); } + +TEST(ScalarTest, Division) { + Scalar lhs(5.0); + Scalar rhs(2.0); + Scalar r = lhs / rhs; + EXPECT_TRUE(r.IsValid()); + EXPECT_EQ(r, Scalar(2.5)); +}