diff options
author | MITSUNARI Shigeo <herumi@nifty.com> | 2018-06-10 08:53:30 +0800 |
---|---|---|
committer | MITSUNARI Shigeo <herumi@nifty.com> | 2018-06-10 08:53:30 +0800 |
commit | 72997120a49fcae13065f56b4e29b5173fe16e5c (patch) | |
tree | 00f6c1a6f32bb72cae9822daa283d2ca2f72860c | |
parent | 55e7cdec8325e993800ffb448b74a90690f9d324 (diff) | |
download | tangerine-mcl-72997120a49fcae13065f56b4e29b5173fe16e5c.tar.gz tangerine-mcl-72997120a49fcae13065f56b4e29b5173fe16e5c.tar.zst tangerine-mcl-72997120a49fcae13065f56b4e29b5173fe16e5c.zip |
remove Array in LagrangeInterpolation
-rw-r--r-- | include/mcl/lagrange.hpp | 22 |
1 files changed, 7 insertions, 15 deletions
diff --git a/include/mcl/lagrange.hpp b/include/mcl/lagrange.hpp index ff4717a..7c02188 100644 --- a/include/mcl/lagrange.hpp +++ b/include/mcl/lagrange.hpp @@ -6,8 +6,6 @@ @license modified new BSD license http://opensource.org/licenses/BSD-3-Clause */ -#include <mcl/array.hpp> - namespace mcl { /* @@ -25,9 +23,6 @@ void LagrangeInterpolation(bool *pb, G& out, const F *S, const G *vec, size_t k) *pb = false; return; } - mcl::Array<F> delta; - *pb = delta.resize(k); - if (!*pb) return; F a = S[0]; for (size_t i = 1; i < k; i++) { a *= S[i]; @@ -36,6 +31,11 @@ void LagrangeInterpolation(bool *pb, G& out, const F *S, const G *vec, size_t k) *pb = false; return; } + /* + f(0) = sum_i f(S[i]) delta_{i,S}(0) + */ + G r; + r.clear(); for (size_t i = 0; i < k; i++) { F b = S[i]; for (size_t j = 0; j < k; j++) { @@ -48,16 +48,8 @@ void LagrangeInterpolation(bool *pb, G& out, const F *S, const G *vec, size_t k) b *= v; } } - delta[i] = a / b; - } - - /* - f(0) = sum_i f(S[i]) delta_{i,S}(0) - */ - G r, t; - r.clear(); - for (size_t i = 0; i < delta.size(); i++) { - G::mul(t, vec[i], delta[i]); + G t; + G::mul(t, vec[i], a / b); r += t; } out = r; |