Переглянути джерело

math: fix a coding error in the polynomial division.

undefined
Sam Hocevar 10 роки тому
джерело
коміт
bb438b6252
2 змінених файлів з 4 додано та 1 видалено
  1. +1
    -1
      src/lol/math/polynomial.h
  2. +3
    -0
      src/t/math/polynomial.cpp

+ 1
- 1
src/lol/math/polynomial.h Переглянути файл

@@ -286,9 +286,9 @@ struct polynomial
for (int n = remainder.degree() - p.degree(); n >= 0; --n)
{
quotient.set(n, remainder.leading());
remainder.m_coefficients.Pop();
for (int i = 0; i < p.degree(); ++i)
remainder.m_coefficients[n + i] -= remainder.leading() * p[i];
remainder.m_coefficients.Pop();
}

return ret;


+ 3
- 0
src/t/math/polynomial.cpp Переглянути файл

@@ -190,6 +190,9 @@ lolunit_declare_fixture(PolynomialTest)
polynomial<float> p { -4.f, 0.f, -2.f, 1.f };
polynomial<float> q { -3.f, 1.f };

/* p(x) = r(x) q(x) + s(x)
* r(x) = 3 + x + x²
* s(x) = 5 */
auto r = p / q;
lolunit_assert_equal(r.m1.degree(), 2);
lolunit_assert_doubles_equal(r.m1[0], 3.f, 1e-5f);


Завантаження…
Відмінити
Зберегти