summaryrefslogtreecommitdiffstats
path: root/src/2geom/poly-dk-solve.cpp
diff options
context:
space:
mode:
authorJF Barraud <jf.barraud@gmail.com>2009-03-09 01:47:39 +0000
committerjfbarraud <jfbarraud@users.sourceforge.net>2009-03-09 01:47:39 +0000
commitfffb14c92df4ff0efb9271708984c75ca12b30d6 (patch)
tree04a75637990939efdd4da28826357ff214bafc22 /src/2geom/poly-dk-solve.cpp
parentpart of bug #339660; can not use Add/Rename dialog to create layer with no pr... (diff)
downloadinkscape-fffb14c92df4ff0efb9271708984c75ca12b30d6.tar.gz
inkscape-fffb14c92df4ff0efb9271708984c75ca12b30d6.zip
2geom update
(bzr r7453)
Diffstat (limited to 'src/2geom/poly-dk-solve.cpp')
-rw-r--r--src/2geom/poly-dk-solve.cpp67
1 files changed, 0 insertions, 67 deletions
diff --git a/src/2geom/poly-dk-solve.cpp b/src/2geom/poly-dk-solve.cpp
deleted file mode 100644
index a328b316c..000000000
--- a/src/2geom/poly-dk-solve.cpp
+++ /dev/null
@@ -1,67 +0,0 @@
-#include <2geom/poly-dk-solve.h>
-#include <iterator>
-
-/*** implementation of the Durand-Kerner method. seems buggy*/
-
-namespace Geom {
-
-std::complex<double> evalu(Poly const & p, std::complex<double> x) {
- std::complex<double> result = 0;
- std::complex<double> xx = 1;
-
- for(unsigned i = 0; i < p.size(); i++) {
- result += p[i]*xx;
- xx *= x;
- }
- return result;
-}
-
-std::vector<std::complex<double> > DK(Poly const & ply, const double tol) {
- std::vector<std::complex<double> > roots;
- const int N = ply.degree();
-
- std::complex<double> b(0.4, 0.9);
- std::complex<double> p = 1;
- for(int i = 0; i < N; i++) {
- roots.push_back(p);
- p *= b;
- }
- assert(roots.size() == ply.degree());
-
- double error = 0;
- int i;
- for( i = 0; i < 30; i++) {
- error = 0;
- for(int r_i = 0; r_i < N; r_i++) {
- std::complex<double> denom = 1;
- std::complex<double> R = roots[r_i];
- for(int d_i = 0; d_i < N; d_i++) {
- if(r_i != d_i)
- denom *= R-roots[d_i];
- }
- assert(norm(denom) != 0);
- std::complex<double> dr = evalu(ply, R)/denom;
- error += norm(dr);
- roots[r_i] = R - dr;
- }
- /*std::copy(roots.begin(), roots.end(), std::ostream_iterator<std::complex<double> >(std::cout, ",\t"));
- std::cout << std::endl;*/
- if(error < tol)
- break;
- }
- //std::cout << error << ", " << i<< std::endl;
- return roots;
-}
-
-} // namespace Geom
-
-/*
- Local Variables:
- mode:c++
- c-file-style:"stroustrup"
- c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
- indent-tabs-mode:nil
- fill-column:99
- End:
-*/
-// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :