Changeset 86fcc0 in git


Ignore:
Timestamp:
Nov 4, 2009, 6:59:51 PM (14 years ago)
Author:
Hans Schönemann <hannes@…>
Branches:
(u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
Children:
3580b7115f22b137b32322afb07cb8febdf9e80c
Parents:
c84406c7f927d46cedeb1e94024cd843f319713f
Message:
*hannes: bigint extended

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

Legend:

Unmodified
Added
Removed
  • Singular/iparith.cc

    rc84406 r86fcc0  
    17981798{
    17991799  lists c=(lists)u->CopyD(); // list of ideal
    1800   intvec* p=(intvec*)v->Data();
    1801   int rl=p->length();
     1800  lists pl=NULL;
     1801  intvec *p=NULL;
     1802  if (v->Typ()==LIST_CMD) pl=(lists)v->Data();
     1803  else                    p=(intvec*)v->Data();
     1804  int rl=c->nr+1;
    18021805  poly r=NULL,h;
    18031806  ideal result;
    18041807  ideal *x=(ideal *)omAlloc(rl*sizeof(ideal));
    18051808  int i;
     1809  int return_type=c->m[0].Typ();
     1810  if ((return_type!=IDEAL_CMD)
     1811  && (return_type!=MODUL_CMD)
     1812  && (return_type!=MATRIX_CMD))
     1813  {
     1814    WerrorS("ideal/module/matrix expected");
     1815    omFree(x); // delete c
     1816    return TRUE;
     1817  }
    18061818  for(i=rl-1;i>=0;i--)
    18071819  {
    1808     if (c->m[i].Typ()!=IDEAL_CMD)
    1809     {
    1810       Werror("ideal expected at pos %d",i+1);
     1820    if (c->m[i].Typ()!=return_type)
     1821    {
     1822      Werror("%s expected at pos %d",Tok2Cmdname(return_type),i+1);
    18111823      omFree(x); // delete c
    18121824      return TRUE;
     
    18151827  }
    18161828  number *q=(number *)omAlloc(rl*sizeof(number));
    1817   for(i=rl-1;i>=0;i--)
    1818   {
    1819     q[i]=nlInit((*p)[i], currRing);
     1829  if (p!=NULL)
     1830  {
     1831    for(i=rl-1;i>=0;i--)
     1832    {
     1833      q[i]=nlInit((*p)[i], currRing);
     1834    }
     1835  }
     1836  else
     1837  {
     1838    for(i=rl-1;i>=0;i--)
     1839    {
     1840      if (pl->m[i].Typ()!=BIGINT_CMD)
     1841      {
     1842        Werror("bigint expected at pos %d",i+1);
     1843        omFree(x); // delete c
     1844        omFree(q); // delete pl
     1845        return TRUE;
     1846      }
     1847      q[i]=(number)(pl->m[i].Data());
     1848    }
    18201849  }
    18211850  result=idChineseRemainder(x,q,rl);
    1822   for(i=rl-1;i>=0;i--)
    1823   {
    1824     nlDelete(&(q[i]),currRing);
     1851  if (p!=NULL)
     1852  {
     1853    for(i=rl-1;i>=0;i--)
     1854    {
     1855      nlDelete(&(q[i]),currRing);
     1856    }
    18251857  }
    18261858  omFree(q);
    18271859  res->data=(char *)result;
     1860  res->rtyp=return_type;
    18281861  return FALSE;
    18291862}
     
    33983431,{jjCHINREM_BI,CHINREM_CMD,    BIGINT_CMD,     INTVEC_CMD, INTVEC_CMD, ALLOW_PLURAL |ALLOW_RING}
    33993432//,{jjCHINREM_P, CHINREM_CMD,    POLY_CMD,       LIST_CMD,   INTVEC_CMD, ALLOW_PLURAL}
    3400 ,{jjCHINREM_ID,CHINREM_CMD,    IDEAL_CMD,      LIST_CMD,   INTVEC_CMD, ALLOW_PLURAL |NO_RING}
     3433,{jjCHINREM_ID,CHINREM_CMD,    IDEAL_CMD/*set by p*/,LIST_CMD,INTVEC_CMD, ALLOW_PLURAL |NO_RING}
     3434,{jjCHINREM_ID,CHINREM_CMD,    IDEAL_CMD/*set by p*/,LIST_CMD,LIST_CMD, ALLOW_PLURAL |NO_RING}
    34013435,{jjCOEF,      COEF_CMD,       MATRIX_CMD,     POLY_CMD,   POLY_CMD, ALLOW_PLURAL |ALLOW_RING}
    34023436,{jjCOEFFS_Id, COEFFS_CMD,     MATRIX_CMD,     IDEAL_CMD,  POLY_CMD, ALLOW_PLURAL |ALLOW_RING}
Note: See TracChangeset for help on using the changeset viewer.