aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMITSUNARI Shigeo <herumi@nifty.com>2018-06-10 08:53:30 +0800
committerMITSUNARI Shigeo <herumi@nifty.com>2018-06-10 08:53:30 +0800
commit72997120a49fcae13065f56b4e29b5173fe16e5c (patch)
tree00f6c1a6f32bb72cae9822daa283d2ca2f72860c
parent55e7cdec8325e993800ffb448b74a90690f9d324 (diff)
downloadtangerine-mcl-72997120a49fcae13065f56b4e29b5173fe16e5c.tar.gz
tangerine-mcl-72997120a49fcae13065f56b4e29b5173fe16e5c.tar.zst
tangerine-mcl-72997120a49fcae13065f56b4e29b5173fe16e5c.zip
remove Array in LagrangeInterpolation
-rw-r--r--include/mcl/lagrange.hpp22
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;