diff --git a/Polynomial/include/CGAL/Polynomial/polynomial_functions.h b/Polynomial/include/CGAL/Polynomial/polynomial_functions.h index 76e4ebc97bd..608a5e9cf80 100644 --- a/Polynomial/include/CGAL/Polynomial/polynomial_functions.h +++ b/Polynomial/include/CGAL/Polynomial/polynomial_functions.h @@ -171,7 +171,38 @@ substitute_xy( return sub; } +//! coefficient aij of xiyj +template < class NT > +NT coefficient(const CGAL::Polynomial< CGAL::Polynomial< NT > > &p, + int i, int j) { + typedef CGAL::Polynomial_traits_d< + CGAL::Polynomial< CGAL::Polynomial< NT > > > PT_2; + CGAL_precondition(2 == PT_2::d); + typename PT_2::Get_innermost_coefficient coefficient; + CGAL::Exponent_vector ev; + ev.push_back(i); + ev.push_back(j); + return coefficient(p, ev); +} + +//! coefficient aijk of xiyjzk +template < class NT > +NT coefficient( + const CGAL::Polynomial < CGAL::Polynomial< CGAL::Polynomial< NT > > > + &p, + int i, int j, int k) { + + typedef CGAL::Polynomial_traits_d< + CGAL::Polynomial< CGAL::Polynomial< CGAL::Polynomial< NT > > > > PT_3; + CGAL_precondition(3 == PT_3::d); + typename PT_3::Get_innermost_coefficient coefficient; + CGAL::Exponent_vector ev; + ev.push_back(i); + ev.push_back(j); + ev.push_back(k); + return coefficient(p, ev); +} CGAL_END_NAMESPACE