Changeset bf38a4 in git


Ignore:
Timestamp:
Aug 12, 2011, 4:34:17 PM (13 years ago)
Author:
Hans Schoenemann <hannes@…>
Branches:
(u'spielwiese', 'd28bb9fd81d9b3c28434941de2792173765710d2')
Children:
33e249b0536a97f2ce55d8d4301209e30d449476
Parents:
e92b071a14e237753ca43c8b8faad5e5199cd077
git-author:
Hans Schoenemann <hannes@mathematik.uni-kl.de>2011-08-12 16:34:17+02:00
git-committer:
Mohamed Barakat <mohamed.barakat@rwth-aachen.de>2011-11-09 13:22:41+01:00
Message:
on the way to fix iparith.cc
Location:
Singular
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • Singular/iparith.cc

    re92b07 rbf38a4  
    472472  if (e>=0)
    473473  {
    474     nlPower(n,e,(number*)&res->data);
     474    n_Power(n,e,(number*)&res->data,coeffs_BIGINT);
    475475  }
    476476  else
     
    642642static BOOLEAN jjPLUS_BI(leftv res, leftv u, leftv v)
    643643{
    644   res->data = (char *)(nlAdd((number)u->Data(), (number)v->Data()));
     644  res->data = (char *)(n_Add((number)u->Data(), (number)v->Data(),coeffs_BIGINT));
    645645  return jjPLUSMINUS_Gen(res,u,v);
    646646}
     
    669669{
    670670  matrix A=(matrix)u->Data(); matrix B=(matrix)v->Data();
    671   res->data = (char *)(mpAdd(A , B));
     671  res->data = (char *)(mp_Add(A , B, currRing));
    672672  if (res->data==NULL)
    673673  {
     
    681681{
    682682  matrix m=(matrix)u->Data();
    683   matrix p= mpInitP(m->nrows,m->ncols,(poly)(v->CopyD(POLY_CMD)));
     683  matrix p= mp_InitP(m->nrows,m->ncols,(poly)(v->CopyD(POLY_CMD)),currRing);
    684684  if (iiOp=='+')
    685     res->data = (char *)mpAdd(m , p);
     685    res->data = (char *)mp_Add(m , p,currRing);
    686686  else
    687     res->data = (char *)mpSub(m , p);
     687    res->data = (char *)mp_Sub(m , p,currRing);
    688688  idDelete((ideal *)&p);
    689689  return jjPLUSMINUS_Gen(res,u,v);
     
    726726static BOOLEAN jjMINUS_BI(leftv res, leftv u, leftv v)
    727727{
    728   res->data = (char *)(nlSub((number)u->Data(), (number)v->Data()));
     728  res->data = (char *)(n_Sub((number)u->Data(), (number)v->Data(),coeffs_BIGINT));
    729729  return jjPLUSMINUS_Gen(res,u,v);
    730730}
     
    752752{
    753753  matrix A=(matrix)u->Data(); matrix B=(matrix)v->Data();
    754   res->data = (char *)(mpSub(A , B));
     754  res->data = (char *)(mp_Sub(A , B, currRing));
    755755  if (res->data==NULL)
    756756  {
     
    776776static BOOLEAN jjTIMES_BI(leftv res, leftv u, leftv v)
    777777{
    778   res->data = (char *)(nlMult( (number)u->Data(), (number)v->Data()));
     778  res->data = (char *)(n_Mult( (number)u->Data(), (number)v->Data(),coeffs_BIGINT));
    779779  if ((v->next!=NULL) || (u->next!=NULL))
    780780    return jjOP_REST(res,u,v);
     
    848848{
    849849  res->data = (char *)idMult((ideal)u->Data(),(ideal)v->Data());
    850   idNormalize((ideal)res->data);
     850  id_Normalize((ideal)res->data,currRing);
    851851  if ((v->next!=NULL) || (u->next!=NULL))
    852852    return jjOP_REST(res,u,v);
     
    867867static BOOLEAN jjTIMES_MA_BI1(leftv res, leftv u, leftv v)
    868868{
    869   number n=nInit_bigint((number)v->Data());
     869  number n=n_Init_bigint((number)v->Data(),coeffs_BIGINT,currRing->cf);
    870870  poly p=pNSet(n);
    871   ideal I= (ideal)mpMultP((matrix)u->CopyD(MATRIX_CMD),p);
     871  ideal I= (ideal)mp_MultP((matrix)u->CopyD(MATRIX_CMD),p,currRing);
    872872  res->data = (char *)I;
    873873  return FALSE;
     
    881881  poly p=(poly)v->CopyD(POLY_CMD);
    882882  int r=pMaxComp(p);/* recompute the rank for the case ideal*vector*/
    883   ideal I= (ideal)mpMultP((matrix)u->CopyD(MATRIX_CMD),p);
     883  ideal I= (ideal)mp_MultP((matrix)u->CopyD(MATRIX_CMD),p,currRing);
    884884  if (r>0) I->rank=r;
    885   idNormalize(I);
     885  id_Normalize(I,currRing);
    886886  res->data = (char *)I;
    887887  return FALSE;
     
    891891  poly p=(poly)u->CopyD(POLY_CMD);
    892892  int r=pMaxComp(p);/* recompute the rank for the case ideal*vector*/
    893   ideal I= (ideal)pMultMp(p,(matrix)v->CopyD(MATRIX_CMD));
     893  ideal I= (ideal)pMultMp(p,(matrix)v->CopyD(MATRIX_CMD),currRing);
    894894  if (r>0) I->rank=r;
    895   idNormalize(I);
     895  id_Normalize(I,currRing);
    896896  res->data = (char *)I;
    897897  return FALSE;
     
    901901  number n=(number)v->CopyD(NUMBER_CMD);
    902902  poly p=pNSet(n);
    903   res->data = (char *)mpMultP((matrix)u->CopyD(MATRIX_CMD),p);
    904   idNormalize((ideal)res->data);
     903  res->data = (char *)mp_MultP((matrix)u->CopyD(MATRIX_CMD),p,currRing);
     904  id_Normalize((ideal)res->data,currRing);
    905905  return FALSE;
    906906}
     
    911911static BOOLEAN jjTIMES_MA_I1(leftv res, leftv u, leftv v)
    912912{
    913   res->data = (char *)mpMultI((matrix)u->CopyD(MATRIX_CMD),(int)(long)v->Data());
    914   idNormalize((ideal)res->data);
     913  res->data = (char *)mp_MultI((matrix)u->CopyD(MATRIX_CMD),(int)(long)v->Data(),currRing);
     914  id_Normalize((ideal)res->data,currRing);
    915915  return FALSE;
    916916}
     
    922922{
    923923  matrix A=(matrix)u->Data(); matrix B=(matrix)v->Data();
    924   res->data = (char *)mpMult(A,B);
     924  res->data = (char *)mp_Mult(A,B,currRing);
    925925  if (res->data==NULL)
    926926  {
     
    929929     return TRUE;
    930930  }
    931   idNormalize((ideal)res->data);
     931  id_Normalize((ideal)res->data,currRing);
    932932  if ((v->next!=NULL) || (u->next!=NULL))
    933933    return jjOP_REST(res,u,v);
     
    936936static BOOLEAN jjGE_BI(leftv res, leftv u, leftv v)
    937937{
    938   number h=nlSub((number)u->Data(),(number)v->Data());
    939   res->data = (char *) (nlGreaterZero(h)||(nlIsZero(h)));
    940   nlDelete(&h,NULL);
     938  number h=n_Sub((number)u->Data(),(number)v->Data(),coeffs_BIGINT);
     939  res->data = (char *) (n_GreaterZero(h,coeffs_BIGINT)||(n_IsZero(h,coeffs_BIGINT)));
     940  n_Delete(&h,coeffs_BIGINT);
    941941  return FALSE;
    942942}
     
    954954static BOOLEAN jjGT_BI(leftv res, leftv u, leftv v)
    955955{
    956   number h=nlSub((number)u->Data(),(number)v->Data());
    957   res->data = (char *) (nlGreaterZero(h)&&(!nlIsZero(h)));
    958   nlDelete(&h,NULL);
     956  number h=n_Sub((number)u->Data(),(number)v->Data(),coeffs_BIGINT);
     957  res->data = (char *) (n_GreaterZero(h,coeffs_BIGINT)&&(!n_IsZero(h,coeffs_BIGINT)));
     958  n_Delete(&h,coeffs_BIGINT);
    959959  return FALSE;
    960960}
     
    10261026{
    10271027  number q=(number)v->Data();
    1028   if (nlIsZero(q))
     1028  if (n_IsZero(q,coeffs_BIGINT))
    10291029  {
    10301030    WerrorS(ii_div_by_0);
    10311031    return TRUE;
    10321032  }
    1033   q = nlIntDiv((number)u->Data(),q);
    1034   nlNormalize(q);
     1033  q = n_IntDiv((number)u->Data(),q,coeffs_BIGINT);
     1034  n_Normalize(q,coeffs_BIGINT);
    10351035  res->data = (char *)q;
    10361036  return FALSE;
     
    10631063    return FALSE;
    10641064  }
    1065   if ((pNext(q)!=NULL) && (!rField_is_Ring()))
     1065  if ((pNext(q)!=NULL) && (!rField_is_Ring(currRing)))
    10661066  { /* This means that q != 0 consists of at least two terms.
    10671067       Moreover, currRing is over a field. */
     
    10701070    {
    10711071      res->data=(void*)(singclap_pdivide(p /*(poly)(u->Data())*/ ,
    1072                                          q /*(poly)(v->Data())*/ ));
     1072                                         q /*(poly)(v->Data())*/ ,currRing));
    10731073    }
    10741074    else
     
    10961096        if (I->m[i]!=NULL)
    10971097        {
    1098           h=singclap_pdivide(I->m[i],q);
     1098          h=singclap_pdivide(I->m[i],q,currRing);
    10991099          pSetCompP(h,i+1);
    11001100          p=pAdd(p,h);
     
    11131113       or that currRing is over a coefficient ring. */
    11141114#ifdef HAVE_RINGS
    1115     if (!rField_is_Domain())
     1115    if (!rField_is_Domain(currRing))
    11161116    {
    11171117      WerrorS("division only defined over coefficient domains");
     
    11501150      #ifdef HAVE_FACTORY
    11511151        MATELEM(mm,i,j) = singclap_pdivide( MATELEM(m,i,j) ,
    1152                                            q /*(poly)(v->Data())*/ );
     1152                                           q /*(poly)(v->Data())*/, currRing );
    11531153#else /* HAVE_FACTORY */
    11541154        WerrorS("division only by a monomial");
     
    11601160    }
    11611161  }
    1162   idNormalize((ideal)mm);
     1162  id_Normalize((ideal)mm,currRing);
    11631163  res->data=(char *)mm;
    11641164  return FALSE;
     
    11661166static BOOLEAN jjEQUAL_BI(leftv res, leftv u, leftv v)
    11671167{
    1168   res->data = (char *)((long)nlEqual((number)u->Data(),(number)v->Data()));
     1168  res->data = (char *)((long)n_Equal((number)u->Data(),(number)v->Data(),coeffs_BIGINT));
    11691169  jjEQUAL_REST(res,u,v);
    11701170  return FALSE;
     
    11781178static BOOLEAN jjEQUAL_Ma(leftv res, leftv u, leftv v)
    11791179{
    1180   res->data = (char *)((long)mpEqual((matrix)u->Data(),(matrix)v->Data()));
     1180  res->data = (char *)((long)mp_Equal((matrix)u->Data(),(matrix)v->Data(),currRing));
    11811181  jjEQUAL_REST(res,u,v);
    11821182  return FALSE;
     
    15191519  for(i=rl-1;i>=0;i--)
    15201520  {
    1521     q[i]=nlInit((*p)[i], NULL);
    1522     x[i]=nlInit((*c)[i], NULL);
    1523   }
    1524   number n=nlChineseRemainder(x,q,rl);
     1521    q[i]=n_Init((*p)[i], coeffs_BIGINT);
     1522    x[i]=n_Init((*c)[i], coeffs_BIGINT);
     1523  }
     1524  number n=n_ChineseRemainder(x,q,rl,coeffs_BIGINT);
    15251525  for(i=rl-1;i>=0;i--)
    15261526  {
    1527     nlDelete(&(q[i]),NULL);
    1528     nlDelete(&(x[i]),NULL);
     1527    n_Delete(&(q[i]),coeffs_BIGINT);
     1528    n_Delete(&(x[i]),coeffs_BIGINT);
    15291529  }
    15301530  omFree(x); omFree(q);
     
    15991599static BOOLEAN jjCHINREM_ID(leftv res, leftv u, leftv v)
    16001600{
    1601   if ((currRing==NULL) || rField_is_Q())
     1601  if ((currRing==NULL) || rField_is_Q(currRing))
    16021602  {
    16031603    lists c=(lists)u->CopyD(); // list of ideal
     
    16351635      for(i=rl-1;i>=0;i--)
    16361636      {
    1637         q[i]=nlInit((*p)[i], currRing);
     1637        q[i]=n_Init((*p)[i], currRing->cf);
    16381638      }
    16391639    }
     
    16441644        if (pl->m[i].Typ()==INT_CMD)
    16451645        {
    1646           q[i]=nlInit((int)(long)pl->m[i].Data(),currRing);
     1646          q[i]=n_Init((int)(long)pl->m[i].Data(),currRing->cf);
    16471647        }
    16481648        else if (pl->m[i].Typ()==BIGINT_CMD)
    16491649        {
    1650           q[i]=nlCopy((number)(pl->m[i].Data()));
     1650          q[i]=n_Copy((number)(pl->m[i].Data()),coeffs_BIGINT);
    16511651        }
    16521652        else
     
    16551655          for(i++;i<rl;i++)
    16561656          {
    1657             nlDelete(&(q[i]),currRing);
     1657            n_Delete(&(q[i]),currRing->cf);
    16581658          }
    16591659          omFree(x); // delete c
     
    16631663      }
    16641664    }
    1665     result=idChineseRemainder(x,q,rl);
     1665    result=id_ChineseRemainder(x,q,rl,currRing);
    16661666    for(i=rl-1;i>=0;i--)
    16671667    {
    1668       nlDelete(&(q[i]),currRing);
     1668      n_Delete(&(q[i]),coeffs_BIGINT);
    16691669    }
    16701670    omFree(q);
     
    16801680  poly p=(poly)v->Data();
    16811681  if ((p==NULL)||(pNext(p)!=NULL)) return TRUE;
    1682   res->data=(char *)mpCoeffProc((poly)u->Data(),p /*(poly)v->Data()*/);
     1682  res->data=(char *)mp_CoeffProc((poly)u->Data(),p /*(poly)v->Data()*/,currRing);
    16831683  return FALSE;
    16841684}
     
    16911691    return TRUE;
    16921692  }
    1693   res->data=(char *)mpCoeffs((ideal)u->CopyD(),i);
     1693  res->data=(char *)mp_Coeffs((ideal)u->CopyD(),i,currRing);
    16941694  return FALSE;
    16951695}
     
    17151715static BOOLEAN jjDEG_M_IV(leftv res, leftv u, leftv v)
    17161716{
    1717   short *iv=iv2array((intvec *)v->Data());
     1717  short *iv=iv2array((intvec *)v->Data(),currRing);
    17181718  ideal I=(ideal)u->Data();
    17191719  int d=-1;
     
    17291729  if (p!=NULL)
    17301730  {
    1731     short *iv=iv2array((intvec *)v->Data());
     1731    short *iv=iv2array((intvec *)v->Data(),currRing);
    17321732    int d=(int)pDegW(p,iv);
    17331733    omFreeSize((ADDRESS)iv,(currRing->N+1)*sizeof(short));
     
    17731773    ring origR = currRing;
    17741774    ring tempR = rCopy(origR);
    1775     tempR->ringtype = 0; tempR->ch = 0;
     1775    coeffs new_cf=nInitChar(n_Q,NULL);
     1776    nKillChar(tempR->cf);
     1777    tempR->cf=new_cf;
    17761778    rComplete(tempR);
    17771779    ideal vid = (ideal)v->Data();
    17781780    int i = idPosConstant(vid);
    1779     if ((i != -1) && (nIsUnit(pGetCoeff(vid->m[i]))))
     1781    if ((i != -1) && (n_IsUnit(pGetCoeff(vid->m[i]),currRing->cf)))
    17801782    { /* ideal v contains unit; dim = -1 */
    17811783      res->data = (char *)-1;
     
    19121914{
    19131915  poly r,pa,pb;
    1914   BOOLEAN ret=singclap_extgcd((poly)u->Data(),(poly)v->Data(),r,pa,pb);
     1916  BOOLEAN ret=singclap_extgcd((poly)u->Data(),(poly)v->Data(),r,pa,pb,currRing);
    19151917  if (ret) return TRUE;
    19161918  lists L=(lists)omAllocBin(slists_bin);
     
    19331935  if ((sw<0)||(sw>2)) fac_sw=1;
    19341936  singclap_factorize_retry=0;
    1935   ideal f=singclap_factorize((poly)(u->CopyD()), &v, fac_sw);
     1937  ideal f=singclap_factorize((poly)(u->CopyD()), &v, fac_sw,currRing);
    19361938  if (f==NULL)
    19371939    return TRUE;
     
    19982000static BOOLEAN jjFAREY_BI(leftv res, leftv u, leftv v)
    19992001{
    2000   if (rField_is_Q())
     2002  if (rField_is_Q(currRing))
    20012003  {
    20022004    number uu=(number)u->Data();
    20032005    number vv=(number)v->Data();
    2004     res->data=(char *)nlFarey(uu,vv);
     2006    res->data=(char *)n_Farey(uu,vv,currRing->cf);
    20052007    return FALSE;
    20062008  }
     
    20092011static BOOLEAN jjFAREY_ID(leftv res, leftv u, leftv v)
    20102012{
    2011   if (rField_is_Q())
     2013  if (rField_is_Q(currRing))
    20122014  {
    20132015    ideal uu=(ideal)u->Data();
    20142016    number vv=(number)v->Data();
    2015     res->data=(void*)idFarey(uu,vv);
     2017    res->data=(void*)id_Farey(uu,vv,currRing);
    20162018    res->rtyp=u->Typ();
    20172019    return FALSE;
     
    20332035    BOOLEAN bo;
    20342036    //if (!nSetMap(rInternalChar(r),r->parameter,rPar(r),r->minpoly))
    2035     if ((nMap=nSetMap(r))==NULL)
    2036     {
    2037       if (rEqual(r,currRing))
    2038       {
    2039         nMap=nCopy;
    2040       }
    2041       else
     2037    if ((nMap=n_SetMap(r->cf,currRing->cf))==NULL)
     2038    {
    20422039      // Allow imap/fetch to be make an exception only for:
    20432040      if ( (rField_is_Q_a(r) &&  // Q(a..) -> Q(a..) || Q || Zp || Zp(a)
    2044             (rField_is_Q() || rField_is_Q_a() ||
    2045              (rField_is_Zp() || rField_is_Zp_a())))
     2041            (rField_is_Q(currRing) || rField_is_Q_a(currRing) ||
     2042             (rField_is_Zp(currRing) || rField_is_Zp_a(currRing))))
    20462043           ||
    20472044           (rField_is_Zp_a(r) &&  // Zp(a..) -> Zp(a..) || Zp
    2048             (rField_is_Zp(currRing, rInternalChar(r)) ||
    2049              rField_is_Zp_a(currRing, rInternalChar(r)))) )
     2045            (rField_is_Zp(currRing, r->cf->ch) ||
     2046             rField_is_Zp_a(currRing, r->cf->ch))) )
    20502047      {
    20512048        par_perm_size=rPar(r);
    2052         BITSET save_test=test;
    2053         if ((r->minpoly != NULL) || (r->minideal != NULL))
    2054           naSetChar(rInternalChar(r),r);
    2055         else naSetChar(rInternalChar(r),r);
    2056         nSetChar(currRing);
    2057         test=save_test;
    20582049      }
    20592050      else
     
    20702061      if (iiOp==IMAP_CMD)
    20712062      {
    2072         maFindPerm(r->names,       r->N,       rParameter(r),        r->P,
    2073                    currRing->names,currRing->N,rParameter(currRing), currRing->P,
    2074                    perm,par_perm, currRing->ch);
     2063        int r_par=0;
     2064        char ** r_par_names=NULL;
     2065        if (r->cf->extRing!=NULL)
     2066        {
     2067          r_par=r->cf->extRing->N;
     2068          r_par_names=r->cf->extRing->names;
     2069        }
     2070        int c_par=0;
     2071        char ** c_par_names=NULL;
     2072        if (currRing->cf->extRing!=NULL)
     2073        {
     2074          c_par=currRing->cf->extRing->N;
     2075          c_par_names=currRing->cf->extRing->names;
     2076        }
     2077        maFindPerm(r->names,       r->N,       r_par_names, r_par,
     2078                   currRing->names,currRing->N,c_par_names, c_par,
     2079                   perm,par_perm, currRing->cf->type);
    20752080      }
    20762081      else
     
    21602165  number a=(number) u->Data();
    21612166  number b=(number) v->Data();
    2162   if (nlIsZero(a))
    2163   {
    2164     if (nlIsZero(b)) res->data=(char *)nlInit(1, NULL);
    2165     else             res->data=(char *)nlCopy(b);
     2167  if (n_IsZero(a,coeffs_BIGINT))
     2168  {
     2169    if (n_IsZero(b,coeffs_BIGINT)) res->data=(char *)n_Init(1,coeffs_BIGINT);
     2170    else                           res->data=(char *)n_Copy(b,coeffs_BIGINT);
    21662171  }
    21672172  else
    21682173  {
    2169     if (nlIsZero(b))  res->data=(char *)nlCopy(a);
    2170     else res->data=(char *)nlGcd(a, b, NULL);
     2174    if (n_IsZero(b,coeffs_BIGINT))  res->data=(char *)n_Copy(a,coeffs_BIGINT);
     2175    else res->data=(char *)n_Gcd(a, b, coeffs_BIGINT);
    21712176  }
    21722177  return FALSE;
     
    21922197{
    21932198  res->data=(void *)singclap_gcd((poly)(u->CopyD(POLY_CMD)),
    2194                                  (poly)(v->CopyD(POLY_CMD)));
     2199                                 (poly)(v->CopyD(POLY_CMD)),currRing);
    21952200  return FALSE;
    21962201}
     
    22032208    ring origR = currRing;
    22042209    ring tempR = rCopy(origR);
    2205     tempR->ringtype = 0; tempR->ch = 0;
     2210    coeffs new_cf=nInitChar(n_Q,NULL);
     2211    nKillChar(tempR->cf);
     2212    tempR->cf=new_cf;
    22062213    rComplete(tempR);
    22072214    ideal uid = (ideal)u->Data();
     
    22852292    deg=p_Totaldegree;
    22862293   else
    2287     deg=pFDeg;
     2294    deg=currRing->pFDeg;
    22882295  poly p=pOne(); pSetExp(p,i,1); pSetm(p);
    22892296  int d=deg(p,currRing);
     
    23002307  intvec *vw=(intvec*)u->Data();
    23012308  ideal v_id=(ideal)v->Data();
    2302   pFDegProc save_FDeg=pFDeg;
    2303   pLDegProc save_LDeg=pLDeg;
     2309  pFDegProc save_FDeg=currRing->pFDeg;
     2310  pLDegProc save_LDeg=currRing->pLDeg;
    23042311  BOOLEAN save_pLexOrder=pLexOrder;
    23052312  pLexOrder=FALSE;
    23062313  kHomW=vw;
    23072314  kModW=w;
    2308   pSetDegProcs(kHomModDeg);
     2315  pSetDegProcs(currRing,kHomModDeg);
    23092316  res->data=(void *)(long)idHomModule(v_id,currQuotient,&w);
    23102317  pLexOrder=save_pLexOrder;
    23112318  kHomW=NULL;
    23122319  kModW=NULL;
    2313   pRestoreDegProcs(save_FDeg,save_LDeg);
     2320  pRestoreDegProcs(currRing,save_FDeg,save_LDeg);
    23142321  if (w!=NULL) delete w;
    23152322  return FALSE;
     
    23612368static BOOLEAN jjKoszul(leftv res, leftv u, leftv v)
    23622369{
    2363   return mpKoszul(res, u,v);
     2370  return mpKoszul(res, u,v,NULL);
    23642371}
    23652372static BOOLEAN jjKoszul_Id(leftv res, leftv u, leftv v)
     
    24572464{
    24582465  number q=(number)v->Data();
    2459   if (nlIsZero(q))
     2466  if (n_IsZero(q,coeffs_BIGINT))
    24602467  {
    24612468    WerrorS(ii_div_by_0);
    24622469    return TRUE;
    24632470  }
    2464   res->data =(char *) nlIntMod((number)u->Data(),q);
     2471  res->data =(char *) n_IntMod((number)u->Data(),q,coeffs_BIGINT);
    24652472  return FALSE;
    24662473}
     
    24732480    return TRUE;
    24742481  }
    2475   res->data =(char *) nIntMod((number)u->Data(),q);
     2482  res->data =(char *) n_IntMod((number)u->Data(),q,currRing->cf);
    24762483  return FALSE;
    24772484}
     
    25812588  if (iiOp==NCALGEBRA_CMD)
    25822589  {
    2583     return nc_CallPlural(NULL,NULL,(poly)a->Data(),(poly)b->Data(),currRing);
     2590    return nc_CallPlural(NULL,NULL,(poly)a->Data(),(poly)b->Data(),currRing,false,true,false,currRing);
    25842591  }
    25852592  else
    25862593  {
    25872594    ring r=rCopy(currRing);
    2588     BOOLEAN result=nc_CallPlural(NULL,NULL,(poly)a->Data(),(poly)b->Data(),r);
     2595    BOOLEAN result=nc_CallPlural(NULL,NULL,(poly)a->Data(),(poly)b->Data(),r,false,true,false,currRing);
    25892596    res->data=r;
    25902597    if (r->qideal!=NULL) res->rtyp=QRING_CMD;
     
    26022609  if (iiOp==NCALGEBRA_CMD)
    26032610  {
    2604     return nc_CallPlural(NULL,(matrix)b->Data(),(poly)a->Data(),NULL,currRing);
     2611    return nc_CallPlural(NULL,(matrix)b->Data(),(poly)a->Data(),NULL,currRing,false,true,false,currRing);
    26052612  }
    26062613  else
    26072614  {
    26082615    ring r=rCopy(currRing);
    2609     BOOLEAN result=nc_CallPlural(NULL,(matrix)b->Data(),(poly)a->Data(),NULL,r);
     2616    BOOLEAN result=nc_CallPlural(NULL,(matrix)b->Data(),(poly)a->Data(),NULL,r,false,true,false,currRing);
    26102617    res->data=r;
    26112618    if (r->qideal!=NULL) res->rtyp=QRING_CMD;
     
    26232630  if (iiOp==NCALGEBRA_CMD)
    26242631  {
    2625     return nc_CallPlural((matrix)a->Data(),NULL,NULL,(poly)b->Data(),currRing);
     2632    return nc_CallPlural((matrix)a->Data(),NULL,NULL,(poly)b->Data(),currRing,false,true,false,currRing);
    26262633  }
    26272634  else
    26282635  {
    26292636    ring r=rCopy(currRing);
    2630     BOOLEAN result=nc_CallPlural((matrix)a->Data(),NULL,NULL,(poly)b->Data(),r);
     2637    BOOLEAN result=nc_CallPlural((matrix)a->Data(),NULL,NULL,(poly)b->Data(),r,false,true,false,currRing);
    26312638    res->data=r;
    26322639    if (r->qideal!=NULL) res->rtyp=QRING_CMD;
     
    26442651  if (iiOp==NCALGEBRA_CMD)
    26452652  {
    2646     return nc_CallPlural((matrix)a->Data(),(matrix)b->Data(),NULL,NULL,currRing);
     2653    return nc_CallPlural((matrix)a->Data(),(matrix)b->Data(),NULL,NULL,currRing,false,true,false,currRing);
    26472654  }
    26482655  else
    26492656  {
    26502657    ring r=rCopy(currRing);
    2651     BOOLEAN result=nc_CallPlural((matrix)a->Data(),(matrix)b->Data(),NULL,NULL,r);
     2658    BOOLEAN result=nc_CallPlural((matrix)a->Data(),(matrix)b->Data(),NULL,NULL,r,false,true,false,currRing);
    26522659    res->data=r;
    26532660    if (r->qideal!=NULL) res->rtyp=QRING_CMD;
     
    27062713      {
    27072714        poly    q = (poly)IDDATA(w);
    2708         res->data = pOppose(r,q);
     2715        res->data = pOppose(r,q,currRing);
    27092716        res->rtyp = argtype;
    27102717        break;
     
    27142721      {
    27152722        ideal   Q = (ideal)IDDATA(w);
    2716         res->data = idOppose(r,Q);
     2723        res->data = idOppose(r,Q,currRing);
    27172724        res->rtyp = argtype;
    27182725        break;
     
    27232730        rChangeCurrRing(r);
    27242731        matrix  m = (matrix)IDDATA(w);
    2725         ideal   Q = idMatrix2Module(mpCopy(m));
     2732        ideal   Q = idMatrix2Module(mp_Copy(m,currRing));
    27262733        rChangeCurrRing(save);
    2727         ideal   S = idOppose(r,Q);
     2734        ideal   S = idOppose(r,Q,currRing);
    27282735        id_Delete(&Q, r);
    27292736        res->data = idModule2Matrix(S);
     
    30473054
    30483055  if ((u->Typ() == BIGINT_CMD) ||
    3049      ((u->Typ() == NUMBER_CMD) && rField_is_Q()))
     3056     ((u->Typ() == NUMBER_CMD) && rField_is_Q(currRing)))
    30503057  {
    30513058    temp = (number)u->Data();
    3052     n1 = nlCopy(temp);
     3059    n1 = n_Copy(temp,coeffs_BIGINT);
    30533060  }
    30543061  else if (u->Typ() == INT_CMD)
    30553062  {
    30563063    i = (int)(long)u->Data();
    3057     n1 = nlInit(i, NULL);
     3064    n1 = n_Init(i, coeffs_BIGINT);
    30583065  }
    30593066  else
     
    30643071
    30653072  if ((v->Typ() == BIGINT_CMD) ||
    3066      ((v->Typ() == NUMBER_CMD) && rField_is_Q()))
     3073     ((v->Typ() == NUMBER_CMD) && rField_is_Q(currRing)))
    30673074  {
    30683075    temp = (number)v->Data();
    3069     n2 = nlCopy(temp);
     3076    n2 = n_Copy(temp,coeffs_BIGINT);
    30703077  }
    30713078  else if (v->Typ() == INT_CMD)
    30723079  {
    30733080    i = (int)(long)v->Data();
    3074     n2 = nlInit(i, NULL);
     3081    n2 = n_Init(i, coeffs_BIGINT);
    30753082  }
    30763083  else
     
    30813088
    30823089  lists l = primeFactorisation(n1, n2);
    3083   nlDelete(&n1, NULL); nlDelete(&n2, NULL);
     3090  n_Delete(&n1, coeffs_BIGINT); n_Delete(&n2, coeffs_BIGINT);
    30843091  res->data = (char*)l;
    30853092  return FALSE;
     
    33613368static BOOLEAN jjWEDGE(leftv res, leftv u, leftv v)
    33623369{
    3363   res->data = (char *)mpWedge((matrix)u->Data(),(int)(long)v->Data());
     3370  res->data = (char *)mp_Wedge((matrix)u->Data(),(int)(long)v->Data(),currRing);
    33643371  return FALSE;
    33653372}
     
    34093416{
    34103417  number n=(number)u->CopyD(BIGINT_CMD);
    3411   n=nlNeg(n);
     3418  n=n_Neg(n,coeffs_BIGINT);
    34123419  res->data = (char *)n;
    34133420  return FALSE;
     
    34333440{
    34343441  poly m1=pISet(-1);
    3435   res->data = (char *)mpMultP((matrix)u->CopyD(MATRIX_CMD),m1);
     3442  res->data = (char *)mp_MultP((matrix)u->CopyD(MATRIX_CMD),m1,currRing);
    34363443  return FALSE;
    34373444}
     
    34723479static BOOLEAN jjBI2N(leftv res, leftv u)
    34733480{
    3474   if (rField_is_Q())
    3475   {
    3476     res->data=u->CopyD();
    3477     return FALSE;
    3478   }
     3481  BOOLEAN bo=FALSE;
     3482  number n=(number)u->CopyD();
     3483  nMapFunc nMap=n_SetMap(coeffs_BIGINT,currRing->cf);
     3484  if (nMap!=NULL)
     3485    res->data=nMap(n,coeffs_BIGINT,currRing->cf);
    34793486  else
    34803487  {
    3481     BOOLEAN bo=FALSE;
    3482     number n=(number)u->CopyD();
    3483     if (rField_is_Zp())
    3484     {
    3485       res->data=(void *)npMap0(n);
    3486     }
    3487     else if (rField_is_Q_a())
    3488     {
    3489       res->data=(void *)naMap00(n);
    3490     }
    3491     else if (rField_is_Zp_a())
    3492     {
    3493       res->data=(void *)naMap0P(n);
    3494     }
    3495 #ifdef HAVE_RINGS
    3496     else if (rField_is_Ring_Z())
    3497     {
    3498       res->data=(void *)nrzMapQ(n);
    3499     }
    3500     else if (rField_is_Ring_ModN())
    3501     {
    3502       res->data=(void *)nrnMapQ(n);
    3503     }
    3504     else if (rField_is_Ring_PtoM())
    3505     {
    3506       res->data=(void *)nrnMapQ(n);
    3507     }
    3508     else if (rField_is_Ring_2toM())
    3509     {
    3510       res->data=(void *)nr2mMapQ(n);
    3511     }
    3512 #endif
    3513     else
    3514     {
    3515       WerrorS("cannot convert bigint to this field");
    3516       bo=TRUE;
    3517     }
    3518     nlDelete(&n,NULL);
    3519     return bo;
    3520   }
     3488    WerrorS("cannot convert bigint to this field");
     3489    bo=TRUE;
     3490  }
     3491  n_Delete(&n,coeffs_BIGINT);
     3492  return bo;
    35213493}
    35223494static BOOLEAN jjBI2P(leftv res, leftv u)
     
    35643536static BOOLEAN jjCOUNT_BI(leftv res, leftv v)
    35653537{
    3566   res->data = (char *)(long)nlSize((number)v->Data());
     3538  res->data = (char *)(long)n_Size((number)v->Data(),coeffs_BIGINT);
    35673539  return FALSE;
    35683540}
     
    35933565  ring r=(ring)v->Data();
    35943566  int elems=-1;
    3595   if (rField_is_Zp(r)||rField_is_GF(r)) elems=rInternalChar(r);
     3567  if (rField_is_Zp(r)||rField_is_GF(r)) elems=r->cf->ch;
    35963568  else if (rField_is_Zp_a(r) && (r->minpoly!=NULL))
    35973569  {
    35983570#ifdef HAVE_FACTORY
    35993571    extern int ipower ( int b, int n ); /* factory/cf_util */
    3600     elems=ipower(ABS(rInternalChar(r)),naParDeg(r->minpoly));
     3572    elems=ipower(r->cf->ch,naParDeg(r->minpoly));
    36013573#else
    3602     elems=(int)pow(ABS((double) rInternalChar(r)),(double)naParDeg(r->minpoly));
     3574    elems=(int)pow((double) r->cf->ch,(double)naParDeg(r->minpoly));
    36033575#endif
    36043576  }
     
    36783650  if (smCheckDet((ideal)m,m->cols(),TRUE))
    36793651  {
    3680     ideal I=idMatrix2Module(mpCopy(m));
     3652    ideal I=idMatrix2Module(mp_Copy(m,currRing));
    36813653    p=smCallDet(I);
    36823654    idDelete(&I);
     
    42114183  if ((long)i == d)
    42124184  {
    4213     return nlInit(i, NULL);
     4185    return n_Init(i, coeffs_BIGINT);
    42144186  }
    42154187  else
     
    42284200}
    42294201#else
    4230 #define jjLONG2N(D) nlInit((int)D, NULL)
     4202#define jjLONG2N(D) n_Init((int)D, coeffs_BIGINT)
    42314203#endif
    42324204static BOOLEAN jjPFAC1(leftv res, leftv v)
     
    43344306{
    43354307  number n,i; i=(number)v->Data();
    4336   if (rField_is_Zp())
    4337   {
    4338     n=nlInit(npInt(i,currRing),NULL);
    4339   }
    4340   else if (rField_is_Q()) n=nlBigInt(i);
     4308  if (rField_is_Zp(currRing))
     4309  {
     4310    n=n_Init(n_Int(i,currRing->cf),coeffs_BIGINT);
     4311  }
     4312  else if (rField_is_Q(currRing)) n=nlBigInt(i);
    43414313#ifdef HAVE_RINGS
    4342   else if (rField_is_Ring_Z() || rField_is_Ring_ModN() || rField_is_Ring_PtoM()) n=nlMapGMP(i);
    4343   else if (rField_is_Ring_2toM()) n=nlInit((unsigned long) i,NULL);
     4314  else if (rField_is_Ring_Z(currRing) || rField_is_Ring_ModN(currRing) || rField_is_Ring_PtoM(currRing)) n=nlMapGMP(i);
     4315  else if (rField_is_Ring_2toM(currRing)) n=n_Init((unsigned long) i,coeffs_BIGINT);
    43444316#endif
    43454317  else goto err;
     
    44204392{
    44214393  poly p=(poly)v->Data();
    4422   if (p==NULL) { res->data=(char *)nlInit(0,NULL); return FALSE; }
     4394  if (p==NULL) { res->data=(char *)n_Init(0,coeffs_BIGINT); return FALSE; }
    44234395  if ((pNext(p)!=NULL)|| (!pIsConstant(p)))
    44244396  {
     
    44304402  if (rField_is_Zp())
    44314403  {
    4432     n=nlInit(npInt(i,currRing), NULL);
    4433   }
    4434   else if (rField_is_Q()) n=nlBigInt(i);
     4404    n=n_Init(npInt(i,currRing), coeffs_BIGINT);
     4405  }
     4406  else if (rField_is_Q(currRing)) n=nlBigInt(i);
    44354407#ifdef HAVE_RINGS
    44364408  else if (rField_is_Ring_Z() || rField_is_Ring_ModN() || rField_is_Ring_PtoM())
    44374409    n=nlMapGMP(i);
    44384410  else if (rField_is_Ring_2toM())
    4439     n=nlInit((unsigned long) i, NULL);
     4411    n=n_Init((unsigned long) i, coeffs_BIGINT);
    44404412#endif
    44414413  else goto err;
     
    51435115{
    51445116  number n=(number)u->Data();
    5145   res->data=(char *)(long)nlInt(n,NULL /*dummy for nlInt*/);
     5117  res->data=(char *)(long)n_Int(n,coeffs_BIGINT );
    51465118  return FALSE;
    51475119}
     
    56365608    return TRUE;
    56375609  }
    5638   res->data = (char *)pSeries((int)(long)w->Data(),(poly)u->CopyD(),(poly)v->CopyD());
     5610  res->data = (char *)p_Series((int)(long)w->Data(),(poly)u->CopyD(),(poly)v->CopyD(),NULL,currRing);
    56395611  return FALSE;
    56405612}
     
    64816453      {
    64826454        number b=(number)h->Data();
    6483         number n=nInit_bigint(b);
     6455        number n=n_Init_bigint(b,coeffs_BIGINT,currRing->cf);
    64846456        if (!nIsZero(n))
    64856457        {
     
    68206792    res->rtyp=u1->Typ();
    68216793    res->data=(char*)idSeries((int)(long)u3->Data(),idCopy((ideal)u1->Data()),
    6822                               mpCopy((matrix)u2->Data()),(intvec*)u4->Data());
     6794                              mp_Copy((matrix)u2->Data()),(intvec*)u4->Data(),currRing);
    68236795    return FALSE;
    68246796  }
     
    69506922    res->rtyp=IDEAL_CMD;
    69516923    res->data=(char*)redNF(idCopy((ideal)u3->Data()),idCopy((ideal)u1->Data()),
    6952                            mpCopy((matrix)u2->Data()),(int)(long)u4->Data());
     6924                           mp_Copy((matrix)u2->Data()),(int)(long)u4->Data(),currRing);
    69536925    return FALSE;
    69546926  }
     
    69926964    res->rtyp=IDEAL_CMD;
    69936965    res->data=(char*)redNF(idCopy((ideal)u3->Data()),idCopy((ideal)u1->Data()),
    6994                            mpCopy((matrix)u2->Data()),
    6995                            (int)(long)u4->Data(),(intvec*)u5->Data());
     6966                           mp_Copy((matrix)u2->Data()),
     6967                           (int)(long)u4->Data(),(intvec*)u5->Data(),currRing);
    69966968    return FALSE;
    69976969  }
  • Singular/ipshell.h

    re92b07 rbf38a4  
    209209void   rKill(idhdl h);
    210210void   rKill(ring r);
    211 
    212 #endif
    213 
     211lists scIndIndset(ideal S, BOOLEAN all, ideal Q);
     212BOOLEAN mpKoszul(leftv res,leftv c/*ip*/, leftv b/*in*/, leftv id);
     213
     214#endif
     215
Note: See TracChangeset for help on using the changeset viewer.