Changeset 20704f in git
- Timestamp:
- Jul 16, 2008, 5:04:26 PM (16 years ago)
- Branches:
- (u'spielwiese', '5b153614cbc72bfa198d75b1e9e33dab2645d9fe')
- Children:
- c1d47bdcefc50f4b2ba5826503224f9a3e801948
- Parents:
- 2cba12d26c43550c249f3071faaa809d5347e1c3
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/ipshell.cc
r2cba12d r20704f 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: ipshell.cc,v 1.18 7 2008-07-16 12:41:32wienand Exp $ */4 /* $Id: ipshell.cc,v 1.188 2008-07-16 15:04:26 wienand Exp $ */ 5 5 /* 6 6 * ABSTRACT: … … 1614 1614 lists L=(lists)omAlloc0Bin(slists_bin); 1615 1615 if (rField_is_Ring_Z(R)) L->Init(1); 1616 else L->Init(2);1616 else L->Init(2); 1617 1617 h->rtyp=LIST_CMD; 1618 1618 h->data=(void *)L; … … 1851 1851 // ---------------------------------------- 1852 1852 } 1853 1854 #ifdef HAVE_RINGS 1855 void 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 1853 1917 ring rCompose(const lists L) 1854 1918 { … … 2059 2123 { 2060 2124 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 2061 2132 if (LL->nr<3) 2062 2133 rComposeC(LL,R); /* R, long_R, long_C */ … … 4492 4563 #ifdef HAVE_RINGS 4493 4564 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; 4496 4566 unsigned int ringflagb = 1; 4497 4567 #endif … … 4536 4606 else if ((pn->name != NULL) && (strcmp(pn->name, "integer") == 0)) 4537 4607 { 4608 ringflaga = (int_number) omAlloc(sizeof(MP_INT)); 4609 mpz_init_set_si(ringflaga, 0); 4538 4610 if ((pn->next!=NULL) && (pn->next->Typ()==INT_CMD)) 4539 4611 { -
kernel/longrat.cc
r2cba12d r20704f 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: longrat.cc,v 1.3 5 2008-07-16 14:40:58 SingularExp $ */4 /* $Id: longrat.cc,v 1.36 2008-07-16 15:04:26 wienand Exp $ */ 5 5 /* 6 6 * ABSTRACT: computation with long rational numbers (Hubert Grassmann) … … 126 126 #endif 127 127 mpz_init_set(&z->z,(MP_INT*) from); 128 mpz_init_set_ui(&z->n,1);128 //mpz_init_set_ui(&z->n,1); 129 129 z->s = 3; 130 nlNormalize(z); 130 131 return z; 131 132 } … … 141 142 #endif 142 143 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); 144 145 z->s = 3; 146 nlNormalize(z); 145 147 return z; 146 148 } -
kernel/ring.cc
r2cba12d r20704f 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: ring.cc,v 1.9 7 2008-07-16 12:41:33wienand Exp $ */4 /* $Id: ring.cc,v 1.98 2008-07-16 15:04:26 wienand Exp $ */ 5 5 6 6 /* … … 284 284 #endif 285 285 #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); 287 287 #endif 288 288 #ifdef HAVE_RINGMODN … … 514 514 } 515 515 #ifdef HAVE_RINGS 516 omFree((ADDRESS) r->ringflaga); 516 if (r->ringflaga != NULL) 517 omFree((ADDRESS) r->ringflaga); 517 518 #endif 518 519 omFreeBin(r, ip_sring_bin); -
kernel/rmodulon.cc
r2cba12d r20704f 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: rmodulon.cc,v 1. 29 2008-07-16 12:41:33wienand Exp $ */4 /* $Id: rmodulon.cc,v 1.30 2008-07-16 15:04:26 wienand Exp $ */ 5 5 /* 6 6 * ABSTRACT: numbers modulo n … … 27 27 int_number nrnMinusOne = NULL; 28 28 unsigned long nrnExponent = 0; 29 int_number nrnBase = NULL;30 29 31 30 /* … … 460 459 void nrnSetExp(int m, ring r) 461 460 { 462 if ((nrn Base != 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 464 463 nrnExponent = r->ringflagb; 465 464 if (nrnModul == NULL) … … 470 469 mpz_init(nrnMinusOne); 471 470 } 472 mpz_set(nrnModul, nrnBase);471 mpz_set(nrnModul, r->ringflaga); 473 472 mpz_pow_ui(nrnModul, nrnModul, nrnExponent); 474 473 mpz_sub_ui(nrnMinusOne, nrnModul, 1);
Note: See TracChangeset
for help on using the changeset viewer.