本文整理汇总了C++中polynomial::fp方法的典型用法代码示例。如果您正苦于以下问题:C++ polynomial::fp方法的具体用法?C++ polynomial::fp怎么用?C++ polynomial::fp使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类polynomial
的用法示例。
在下文中一共展示了polynomial::fp方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: sturm_functions
void sturm_functions(std::vector< polynomial<data__> > &sturm_fun, const polynomial<data__> &f)
{
size_t i, n;
// resize the Sturm function vector
n=f.degree()+1;
sturm_fun.resize(n);
polynomial<data__> *ptemp(f.fp()), pjunk;
// initialize the Sturm functions
sturm_fun[0]=f;
ptemp=f.fp();
sturm_fun[1]=*ptemp;
delete ptemp;
// build the Sturm functions
sturm_fun[0].divide(std::abs(sturm_fun[0].coefficient(sturm_fun[0].degree())));
sturm_fun[1].divide(std::abs(sturm_fun[1].coefficient(sturm_fun[1].degree())));
for (i=2; i<n; ++i)
{
if (sturm_fun[i-1].degree()>0)
{
data__ small_no, max_c(0);
typename polynomial<data__>::coefficient_type c;
sturm_fun[i-1].get_coefficients(c);
for (typename polynomial<data__>::index_type j=0; j<=sturm_fun[i-1].degree(); ++j)
{
if (std::abs(c(j))>max_c)
max_c=std::abs(c(j));
}
small_no=max_c*std::sqrt(std::numeric_limits<data__>::epsilon());
pjunk.divide(sturm_fun[i], sturm_fun[i-2], sturm_fun[i-1]);
sturm_fun[i].negative();
if (std::abs(sturm_fun[i].coefficient(sturm_fun[i].degree()))>small_no)
sturm_fun[i].divide(std::abs(sturm_fun[i].coefficient(sturm_fun[i].degree())));
sturm_fun[i].adjust_zero(small_no);
}
else
{
sturm_fun[i]=0;
}
}
}