#include #include #include #include #include #include #include #include #include #ifdef CGAL_POLYNOMIAL_USE_GSL #include #endif typedef CGAL_POLYNOMIAL_NS::Polynomial Pd; typedef CGAL_POLYNOMIAL_NS::Root_stack_default_traits Ddt; typedef CGAL_POLYNOMIAL_NS::Polynomial Polynomial_double; typedef CGAL_POLYNOMIAL_NS::Polynomial Polynomial_ft; template void solve(K k, P p, double lb, double ub, const char *name){ typename CGAL::POLYNOMIAL::Polynomial_converter pc; typename K::Function f= pc(p); typename K::Root rlb(lb), rub(ub); typename K::Root_container rc= k.root_container_object(f, rlb, rub); std::cout << name <<"(" << f << "): "; for (typename K::Root_container::iterator it= rc.begin(); it != rc.end(); ++it){ std::cout << *it << " "; } std::cout << std::endl << std::endl; } int main(int , char **) { std::cout << "Enter a polynomial like 1+2*x+3*x^2\n"; while (true) { typedef CGAL_POLYNOMIAL_NS::Numeric_root_stack NRE; typedef CGAL_POLYNOMIAL_NS::Kernel K; K k; K::Function input; std::cout << "polynomial >> " << std::flush; std::cin >> input; if (!std::cin) break; std::cout << "lower bound on roots >> " << std::flush; double lb; std::cin >> lb; if (!std::cin) break; std::cout << "upper bound on roots >> " << std::flush; double ub; std::cin >> ub; if (!std::cin) break; solve(k, input, lb, ub, "Turkowski"); #ifdef CGAL_POLYNOMIAL_USE_GSL { typedef CGAL_POLYNOMIAL_NS::Numeric_root_stack NRE; typedef CGAL_POLYNOMIAL_NS::Kernel K; K k; solve(k, input, lb, ub, "GSL"); } #endif #ifdef CGAL_USE_TNT { typedef CGAL_POLYNOMIAL_NS::Numeric_root_stack NRE; typedef CGAL_POLYNOMIAL_NS::Kernel K; K k; solve(k, input, lb, ub, "JAMA"); } #endif #ifdef CGAL_POLYNOMIAL_USE_GSL { typedef CGAL_POLYNOMIAL_NS::Numeric_root_stack NRE; typedef CGAL_POLYNOMIAL_NS::Kernel K; K k; solve(k, intput, "CleanGSL"); } #endif #ifdef CGAL_USE_TNT { typedef CGAL_POLYNOMIAL_NS::Numeric_root_stack NRE; typedef CGAL_POLYNOMIAL_NS::Kernel K; K k; solve(k, input, lb, ub, "CleanTNT"); } #endif { typedef CGAL_POLYNOMIAL_NS::Numeric_root_stack NRE; typedef CGAL_POLYNOMIAL_NS::Kernel K; K k; solve(k, input, lb, ub, "CleanTurk"); } { typedef CGAL_POLYNOMIAL_NS::Sturm_root_stack_traits RET; typedef CGAL_POLYNOMIAL_NS::Sturm_root_stack RE; typedef CGAL_POLYNOMIAL_NS::Kernel K; K k; solve(k, input, lb, ub, "Sturm"); } }; return EXIT_SUCCESS; }