- vector<numeric> ftilde((vnlst.nops()-1)/2);
- for ( size_t i=0; i<ftilde.size(); ++i ) {
- ex ft = vnlst.op(i*2+1);
- s = syms.begin();
- ++s;
- for ( size_t j=0; j<a.size(); ++j ) {
- ft = ft.subs(*s == a[j]);
- ++s;
+ vector<bool> used_flag((vnlst.nops()-1)/2+1, false);
+ vector<ex> D(factor_count, 1);
+ for ( size_t i=0; i<=factor_count; ++i ) {
+ DCOUTVAR(i);
+ numeric prefac;
+ if ( i == 0 ) {
+ prefac = ex_to<numeric>(ufaclst.op(0));
+ ftilde[0] = ftilde[0] / prefac;
+ vnlst.let_op(0) = vnlst.op(0) / prefac;
+ continue;
+ }
+ else {
+ prefac = ex_to<numeric>(ufaclst.op(2*(i-1)+1).lcoeff(x));
+ }
+ DCOUTVAR(prefac);
+ for ( size_t j=(vnlst.nops()-1)/2+1; j>0; --j ) {
+ DCOUTVAR(j);
+ DCOUTVAR(prefac);
+ DCOUTVAR(ftilde[j-1]);
+ if ( abs(ftilde[j-1]) == 1 ) {
+ used_flag[j-1] = true;
+ continue;