Changeset 7c2bdef in git


Ignore:
Timestamp:
May 20, 2014, 4:41:29 PM (9 years ago)
Author:
Martin Lee <martinlee84@…>
Branches:
(u'spielwiese', '8e0ad00ce244dfd0756200662572aef8402f13d5')
Children:
cf66047707326b9a2dcd5b0dc16e826e8063a233
Parents:
d0bf7c4ac3e3b6b83feb550488644eae0d452f83
git-author:
Martin Lee <martinlee84@web.de>2014-05-20 16:41:29+02:00
git-committer:
Martin Lee <martinlee84@web.de>2014-05-21 15:06:58+02:00
Message:
fix: bug in subst
File:
1 edited

Legend:

Unmodified
Added
Removed
  • factory/facAlgFuncUtil.cc

    rd0bf7c r7c2bdef  
    123123  CFListIterator j= b;
    124124  CanonicalForm result= f, tmp, powj;
    125   for (CFListIterator i= a; i.hasItem() && j.hasItem(); i++, j++)
    126   {
    127     if (!isFunctionField)
    128       result= result (j.getItem(), i.getItem().mvar());
    129     else
    130     {
    131       tmp= j.getItem();
    132       j++;
    133       powj= power (j.getItem(), degree (result, i.getItem().mvar()));
    134       result= evaluate (result, tmp, j.getItem(), powj, i.getItem().mvar());
    135 
    136       if (fdivides (powj, result, tmp))
    137         result= tmp;
    138 
    139       result /= vcontent (result, Variable (i.getItem().level() + 1));
     125  CFListIterator i= a;
     126  int length= a.length();
     127  int count= 0;
     128  for (; i.hasItem() && j.hasItem(); i++, j++, count++)
     129  {
     130    if (length - count == 2)
     131    {
     132      if (!isFunctionField)
     133      {
     134        result= result (b.getLast(), a.getLast().mvar());
     135        result= result (j.getItem(), i.getItem().mvar());
     136        break;
     137      }
     138      else
     139      {
     140        tmp= b.getLast();
     141        j++;
     142        j++;
     143        powj= power (tmp, degree (result, a.getLast().mvar()));
     144        result= evaluate (result, j.getItem(), tmp, powj, a.getLast().mvar());
     145
     146        if (fdivides (powj, result, tmp))
     147          result= tmp;
     148
     149        result /= vcontent (result, Variable (a.getLast().level() + 1));
     150        j--;
     151        j--;
     152        tmp= j.getItem();
     153        j++;
     154        powj= power (j.getItem(), degree (result, i.getItem().mvar()));
     155        result= evaluate (result, tmp, j.getItem(), powj, i.getItem().mvar());
     156
     157        if (fdivides (powj, result, tmp))
     158          result= tmp;
     159
     160        result /= vcontent (result, Variable (i.getItem().level() + 1));
     161        break;
     162      }
     163    }
     164    else
     165    {
     166      if (!isFunctionField)
     167        result= result (j.getItem(), i.getItem().mvar());
     168      else
     169      {
     170        tmp= j.getItem();
     171        j++;
     172        powj= power (j.getItem(), degree (result, i.getItem().mvar()));
     173        result= evaluate (result, tmp, j.getItem(), powj, i.getItem().mvar());
     174
     175        if (fdivides (powj, result, tmp))
     176          result= tmp;
     177
     178        result /= vcontent (result, Variable (i.getItem().level() + 1));
     179      }
    140180    }
    141181  }
Note: See TracChangeset for help on using the changeset viewer.