Changeset dd5534 in git for Singular/iparith.cc


Ignore:
Timestamp:
Mar 15, 2011, 3:45:13 PM (12 years ago)
Author:
Frank Seelisch <seelisch@…>
Branches:
(u'spielwiese', '91fdef05f09f54b8d58d92a472e9c4a43aa4656f')
Children:
91b031a4e88cb480f4ba993bf5904694c62d9b34
Parents:
c4dab43d69dd36ed09ba07d4e771236f8a7bcc39
Message:
fixed dim of ideal and sum of ideals over rings (with Anne)

git-svn-id: file:///usr/local/Singular/svn/trunk@13973 2c84dea3-7e68-4137-9b89-c4e89433aadc
File:
1 edited

Legend:

Unmodified
Added
Removed
  • Singular/iparith.cc

    rc4dab4 rdd5534  
    2727#include <kernel/longtrans.h>
    2828#include <kernel/ideals.h>
     29#include <kernel/prCopy.h>
    2930#include <kernel/matpol.h>
    3031#include <kernel/kstd1.h>
     
    17591760{
    17601761  assumeStdFlag(v);
     1762#ifdef HAVE_RINGS
     1763  if (rField_is_Ring(currRing))
     1764  {
     1765    ring origR = currRing;
     1766    ring tempR = rCopy(origR);
     1767    tempR->ringtype = 0; tempR->ch = 0;
     1768    rComplete(tempR);
     1769    ideal vid = (ideal)v->Data();
     1770    int i = idPosConstant(vid);
     1771    if ((i != -1) && (nIsUnit(pGetCoeff(vid->m[i]))))
     1772    { /* ideal v contains unit; dim = -1 */
     1773      res->data = (char *)-1;
     1774      return FALSE;
     1775    }
     1776    rChangeCurrRing(tempR);
     1777    ideal vv = idrCopyR(vid, origR, currRing);
     1778    ideal ww = idrCopyR((ideal)w->Data(), origR, currRing);
     1779    /* drop degree zero generator from vv (if any) */
     1780    if (i != -1) pDelete(&vv->m[i]);
     1781    long d = (long)scDimInt(vv, ww);   
     1782    if (rField_is_Ring_Z(origR) && (i == -1)) d++;
     1783    res->data = (char *)d;
     1784    idDelete(&vv); idDelete(&ww);
     1785    rChangeCurrRing(origR);
     1786    rDelete(tempR);
     1787    return FALSE;
     1788  }
     1789#endif
    17611790  if(currQuotient==NULL)
    17621791    res->data = (char *)((long)scDimInt((ideal)(v->Data()),(ideal)w->Data()));
     
    35993628{
    36003629  assumeStdFlag(v);
     3630#ifdef HAVE_RINGS
     3631  if (rField_is_Ring(currRing))
     3632  {
     3633    ring origR = currRing;
     3634    ring tempR = rCopy(origR);
     3635    tempR->ringtype = 0; tempR->ch = 0;
     3636    rComplete(tempR);
     3637    ideal vid = (ideal)v->Data();
     3638    int i = idPosConstant(vid);
     3639    if ((i != -1) && (nIsUnit(pGetCoeff(vid->m[i]))))
     3640    { /* ideal v contains unit; dim = -1 */
     3641      res->data = (char *)-1;
     3642      return FALSE;
     3643    }
     3644    rChangeCurrRing(tempR); rComplete(tempR);
     3645    ideal vv = idrCopyR(vid, origR, currRing);
     3646    /* drop degree zero generator from vv (if any) */
     3647    if (i != -1) pDelete(&vv->m[i]);
     3648    long d = (long)scDimInt(vv, currQuotient);   
     3649    if (rField_is_Ring_Z(origR) && (i == -1)) d++;
     3650    res->data = (char *)d;
     3651    idDelete(&vv);
     3652    rChangeCurrRing(origR);
     3653    rDelete(tempR);
     3654    return FALSE;
     3655  }
     3656#endif
    36013657  res->data = (char *)(long)scDimInt((ideal)(v->Data()),currQuotient);
    36023658  return FALSE;
Note: See TracChangeset for help on using the changeset viewer.