Changeset 20704f in git


Ignore:
Timestamp:
Jul 16, 2008, 5:04:26 PM (16 years ago)
Author:
Oliver Wienand <wienand@…>
Branches:
(u'spielwiese', '5b153614cbc72bfa198d75b1e9e33dab2645d9fe')
Children:
c1d47bdcefc50f4b2ba5826503224f9a3e801948
Parents:
2cba12d26c43550c249f3071faaa809d5347e1c3
Message:
Ringlist für Ringe ;)


git-svn-id: file:///usr/local/Singular/svn/trunk@10877 2c84dea3-7e68-4137-9b89-c4e89433aadc
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • Singular/ipshell.cc

    r2cba12d r20704f  
    22*  Computer Algebra System SINGULAR     *
    33****************************************/
    4 /* $Id: ipshell.cc,v 1.187 2008-07-16 12:41:32 wienand Exp $ */
     4/* $Id: ipshell.cc,v 1.188 2008-07-16 15:04:26 wienand Exp $ */
    55/*
    66* ABSTRACT:
     
    16141614  lists L=(lists)omAlloc0Bin(slists_bin);
    16151615  if (rField_is_Ring_Z(R)) L->Init(1);
    1616   else                L->Init(2);
     1616  else                     L->Init(2);
    16171617  h->rtyp=LIST_CMD;
    16181618  h->data=(void *)L;
     
    18511851  // ----------------------------------------
    18521852}
     1853
     1854#ifdef HAVE_RINGS
     1855void rComposeRing(lists L, ring R)
     1856/* field is R or C */
     1857{
     1858  // ----------------------------------------
     1859  // 0: string: integer
     1860  // no further entries --> Z
     1861  R->ringflaga = (int_number) omAlloc(sizeof(MP_INT));
     1862  if (L->nr == 0)
     1863  {
     1864    mpz_init_set_ui(R->ringflaga,0);
     1865    R->ringflagb = 1;
     1866  }
     1867  // ----------------------------------------
     1868  // 1:
     1869  else
     1870  {
     1871    if (L->m[1].rtyp!=LIST_CMD) Werror("invald data, expecting list of two numbers");
     1872    lists LL=(lists)L->m[1].data;
     1873    number ringflaga = (number) LL->m[0].data;
     1874    mpz_init(R->ringflaga);
     1875    nlGMP(ringflaga, (number) R->ringflaga);
     1876    R->ringflagb = (unsigned long) LL->m[1].data;
     1877  }
     1878  // ----------------------------------------
     1879  if ((mpz_cmp_ui(R->ringflaga, 1) == 0) && (mpz_cmp_ui(R->ringflaga, 0) < 0))
     1880  {
     1881    Werror("Wrong ground ring specification (module is 1)");
     1882    return;
     1883  }
     1884  if (R->ringflagb < 1)
     1885  {
     1886    Werror("Wrong ground ring specification (exponent smaller than 1");
     1887    return;
     1888  }
     1889  // module is 0 ---> integers
     1890  if (mpz_cmp_ui(R->ringflaga, 0) == 0)
     1891  {
     1892    R->ch = 0;
     1893    R->ringtype = 4;
     1894  }
     1895  // we have an exponent
     1896  else if (R->ringflagb > 1)
     1897  {
     1898    R->ch = R->ringflagb;
     1899    if ((mpz_cmp_ui(R->ringflaga, 2) == 0) && (R->ringflagb + 2 <= 8*sizeof(NATNUMBER)))
     1900    {
     1901      R->ringtype = 1;       // Use Z/2^ch
     1902    }
     1903    else
     1904    {
     1905      R->ringtype = 3;
     1906    }
     1907  }
     1908  // just a module m > 1
     1909  else
     1910  {
     1911    R->ringtype = 2;
     1912    R->ch = mpz_get_ui(R->ringflaga);
     1913  }
     1914}
     1915#endif
     1916
    18531917ring rCompose(const lists  L)
    18541918{
     
    20592123  {
    20602124    lists LL=(lists)L->m[0].Data();
     2125#ifdef HAVE_RINGS
     2126    if (LL->m[0].Typ() == STRING_CMD)
     2127    {
     2128      rComposeRing(LL,R); /* Ring */
     2129    }
     2130    else
     2131#endif
    20612132    if (LL->nr<3)
    20622133      rComposeC(LL,R); /* R, long_R, long_C */
     
    44924563#ifdef HAVE_RINGS
    44934564  unsigned int ringtype = 0;
    4494   int_number ringflaga = (int_number) omAlloc(sizeof(MP_INT));
    4495   mpz_init_set_si(ringflaga, 0);
     4565  int_number ringflaga = NULL;
    44964566  unsigned int ringflagb = 1;
    44974567#endif
     
    45364606  else if ((pn->name != NULL) && (strcmp(pn->name, "integer") == 0))
    45374607  {
     4608    ringflaga = (int_number) omAlloc(sizeof(MP_INT));
     4609    mpz_init_set_si(ringflaga, 0);
    45384610    if ((pn->next!=NULL) && (pn->next->Typ()==INT_CMD))
    45394611    {
  • kernel/longrat.cc

    r2cba12d r20704f  
    22*  Computer Algebra System SINGULAR     *
    33****************************************/
    4 /* $Id: longrat.cc,v 1.35 2008-07-16 14:40:58 Singular Exp $ */
     4/* $Id: longrat.cc,v 1.36 2008-07-16 15:04:26 wienand Exp $ */
    55/*
    66* ABSTRACT: computation with long rational numbers (Hubert Grassmann)
     
    126126#endif
    127127  mpz_init_set(&z->z,(MP_INT*) from);
    128   mpz_init_set_ui(&z->n,1);
     128  //mpz_init_set_ui(&z->n,1);
    129129  z->s = 3;
     130  nlNormalize(z);
    130131  return z;
    131132}
     
    141142#endif
    142143  mpz_init_set_ui(&z->z,(unsigned long) from);
    143   mpz_init_set_ui(&z->n,1);
     144  //mpz_init_set_ui(&z->n,1);
    144145  z->s = 3;
     146  nlNormalize(z);
    145147  return z;
    146148}
  • kernel/ring.cc

    r2cba12d r20704f  
    22*  Computer Algebra System SINGULAR     *
    33****************************************/
    4 /* $Id: ring.cc,v 1.97 2008-07-16 12:41:33 wienand Exp $ */
     4/* $Id: ring.cc,v 1.98 2008-07-16 15:04:26 wienand Exp $ */
    55
    66/*
     
    284284#endif
    285285#ifdef HAVE_RING2TOM
    286     if (rField_is_Ring_2toM(r)) Print("Z/2^%s\n", s);
     286    if (rField_is_Ring_2toM(r)) Print("Z/2^%lu\n", r->ringflagb);
    287287#endif
    288288#ifdef HAVE_RINGMODN
     
    514514  }
    515515#ifdef HAVE_RINGS
    516   omFree((ADDRESS) r->ringflaga);
     516  if (r->ringflaga != NULL)
     517    omFree((ADDRESS) r->ringflaga);
    517518#endif
    518519  omFreeBin(r, ip_sring_bin);
  • kernel/rmodulon.cc

    r2cba12d r20704f  
    22*  Computer Algebra System SINGULAR     *
    33****************************************/
    4 /* $Id: rmodulon.cc,v 1.29 2008-07-16 12:41:33 wienand Exp $ */
     4/* $Id: rmodulon.cc,v 1.30 2008-07-16 15:04:26 wienand Exp $ */
    55/*
    66* ABSTRACT: numbers modulo n
     
    2727int_number nrnMinusOne = NULL;
    2828unsigned long nrnExponent = 0;
    29 int_number nrnBase = NULL;
    3029
    3130/*
     
    460459void nrnSetExp(int m, ring r)
    461460{
    462   if ((nrnBase != NULL) && (mpz_cmp(nrnBase, r->ringflaga) == 0) && (nrnExponent == r->ringflagb)) return;
    463   nrnBase = r->ringflaga;
     461  if ((nrnModul != NULL) && (mpz_cmp(nrnModul, r->ringflaga) == 0) && (nrnExponent == r->ringflagb)) return;
     462
    464463  nrnExponent = r->ringflagb;
    465464  if (nrnModul == NULL)
     
    470469    mpz_init(nrnMinusOne);
    471470  }
    472   mpz_set(nrnModul, nrnBase);
     471  mpz_set(nrnModul, r->ringflaga);
    473472  mpz_pow_ui(nrnModul, nrnModul, nrnExponent);
    474473  mpz_sub_ui(nrnMinusOne, nrnModul, 1);
Note: See TracChangeset for help on using the changeset viewer.