diff options
| author | JF Barraud <jf.barraud@gmail.com> | 2009-03-09 01:47:39 +0000 |
|---|---|---|
| committer | jfbarraud <jfbarraud@users.sourceforge.net> | 2009-03-09 01:47:39 +0000 |
| commit | fffb14c92df4ff0efb9271708984c75ca12b30d6 (patch) | |
| tree | 04a75637990939efdd4da28826357ff214bafc22 /src/2geom/poly-dk-solve.cpp | |
| parent | part of bug #339660; can not use Add/Rename dialog to create layer with no pr... (diff) | |
| download | inkscape-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.cpp | 67 |
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 : |
