Changeset 1bf317 in git
- Timestamp:
- Jan 27, 2000, 5:53:50 PM (24 years ago)
- Branches:
- (u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
- Children:
- df542e1981a3253e3b5f545b729d46864eeda8f4
- Parents:
- cffe626538ef0cfae838530fcc27c99e394e0b7f
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/grammar.y
rcffe626 r1bf317 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: grammar.y,v 1.7 8 2000-01-11 17:51:14Singular Exp $ */4 /* $Id: grammar.y,v 1.79 2000-01-27 16:53:45 Singular Exp $ */ 5 5 /* 6 6 * ABSTRACT: SINGULAR shell grammatik … … 173 173 %token <i> DIFF_CMD 174 174 %token <i> DIM_CMD 175 %token <i> DIVISION_CMD 175 176 %token <i> ELIMINATION_CMD 176 177 %token <i> E_CMD -
Singular/ideals.cc
rcffe626 r1bf317 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: ideals.cc,v 1.8 3 2000-01-13 14:40:24 siebertExp $ */4 /* $Id: ideals.cc,v 1.84 2000-01-27 16:53:46 Singular Exp $ */ 5 5 /* 6 6 * ABSTRACT - all basic methods to manipulate ideals … … 1363 1363 int curr_syz_limit=rGetCurrSyzLimit(); 1364 1364 if (curr_syz_limit>0) 1365 for (ii=0;ii<IDELEMS(h1);ii++) 1365 for (ii=0;ii<IDELEMS(h1);ii++) 1366 1366 { 1367 1367 if (h1->m[ii]!=NULL) … … 1400 1400 for (j=0; j<IDELEMS(s_h3); j++) 1401 1401 { 1402 if (s_h3->m[j] != NULL) 1402 if (s_h3->m[j] != NULL) 1403 1403 { 1404 1404 if (pMinComp(s_h3->m[j],syz_ring) > k) … … 1416 1416 return s_h3; 1417 1417 } 1418 1418 1419 1419 ideal e = idInit(IDELEMS(s_h3), s_h3->rank); 1420 1420 … … 1432 1432 } 1433 1433 } 1434 1434 1435 1435 idSkipZeroes(s_h3); 1436 1436 idSkipZeroes(e); 1437 1438 if (deg != NULL 1437 1438 if (deg != NULL 1439 1439 && (!isMonomial) 1440 1440 && (!TEST_OPT_NOTREGULARITY) … … 1541 1541 rChangeCurrRing(orig_ring,TRUE); 1542 1542 } 1543 1543 1544 1544 idDelete((ideal*)ma); 1545 1545 *ma = mpNew(j,i); … … 1609 1609 * of mod 1610 1610 */ 1611 ideal idLiftNonStB (ideal mod, ideal submod,ideal * rest, BOOLEAN goodShape, 1612 BOOLEAN divide,BOOLEAN lift1) 1613 { 1614 return idLift(mod, submod, rest, goodShape, FALSE); 1615 } 1616 1617 1618 ideal idLift (ideal mod, ideal submod,ideal * rest, BOOLEAN goodShape, 1619 BOOLEAN isSB,BOOLEAN divide,BOOLEAN lift1) 1620 { 1621 int lsmod =idRankFreeModule(submod), i, j, k; 1611 1612 ideal idLift (ideal mod, ideal submod,ideal * rest, BOOLEAN goodShape, 1613 BOOLEAN isSB,BOOLEAN divide,matrix * unit) 1614 { 1615 int lsmod =idRankFreeModule(submod), i, j, k; 1622 1616 int comps_to_add=0; 1623 1617 poly p; 1624 1618 1625 1619 if (idIs0(mod)) 1620 { 1621 if (unit!=NULL) 1622 { 1623 *unit=mpNew(1,1); 1624 MATELEM(*unit,1,1)=pOne(); 1625 } 1626 if (rest!=NULL) 1627 { 1628 *rest=idInit(1,mod->rank); 1629 } 1626 1630 return idInit(1,mod->rank); 1627 //#define NEW_LIFT 1628 //#define TEST_LIFT 1629 #ifdef TEST_LIFT 1630 //divide=TRUE; 1631 Print("The module is:\n"); 1632 idPrint(mod); 1633 Print("The submodule is:\n"); 1634 idPrint(submod); 1635 #endif 1636 #ifdef NEW_LIFT 1637 if (lift1) 1631 } 1632 if (unit!=NULL) 1638 1633 { 1639 1634 comps_to_add = IDELEMS(submod); 1640 while ((comps_to_add>0) && (submod->m[comps_to_add-1]==NULL)) 1635 while ((comps_to_add>0) && (submod->m[comps_to_add-1]==NULL)) 1641 1636 comps_to_add--; 1642 1637 } 1643 #endif1644 1638 k=idRankFreeModule(mod); 1645 1639 if ((k!=0) && (lsmod==0)) lsmod=1; … … 1688 1682 } 1689 1683 } 1690 #ifdef NEW_LIFT 1691 if (lift1) 1684 if (unit!=NULL) 1692 1685 { 1693 1686 for(j = 0;j<comps_to_add;j++) … … 1704 1697 } 1705 1698 } 1706 #endif1707 1699 ideal s_result = kNF(s_h3,currQuotient,s_temp,k); 1708 1700 s_result->rank = s_h3->rank; … … 1754 1746 } 1755 1747 } 1756 #ifdef TEST_LIFT1757 Print("The lift is:\n");1758 idPrint(s_result);1759 Print("The rest is:\n");1760 if (s_rest!=NULL) idPrint(s_rest);1761 #endif1762 1748 if(syz_ring!=orig_ring) 1763 1749 { … … 1772 1758 else 1773 1759 idDelete(&s_rest); 1760 if (unit!=NULL) 1761 { 1762 *unit=mpNew(comps_to_add,comps_to_add); 1763 int i; 1764 int comps=k+comps_to_add; 1765 for(i=0;i<IDELEMS(s_result);i++) 1766 { 1767 poly p=s_result->m[i]; 1768 poly q=NULL; 1769 while(p!=NULL) 1770 { 1771 if(pGetComp(p)<=comps) 1772 { 1773 pSetComp(p,0); 1774 if (q!=NULL) 1775 { 1776 pNext(q)=pNext(p); 1777 } 1778 else 1779 { 1780 if(p!=s_result->m[i]) 1781 PrintS("wrong q\n"); 1782 pIter(s_result->m[i]); 1783 } 1784 pNext(p)=NULL; 1785 MATELEM(*unit,i+1,i+1)=pAdd(MATELEM(*unit,i+1,i+1),p); 1786 if(q!=NULL) p=pNext(q); 1787 else p=s_result->m[i]; 1788 } 1789 else 1790 { 1791 q=p; 1792 pIter(p); 1793 } 1794 } 1795 } 1796 } 1774 1797 return s_result; 1775 1798 } … … 2368 2391 } 2369 2392 if (p!=NULL) 2370 { 2393 { 2371 2394 if (k>=size) 2372 2395 { … … 2958 2981 rSetSyzComp(length); 2959 2982 ideal s_temp; 2960 2983 2961 2984 if (syz_ring != orig_ring) 2962 2985 { … … 2967 2990 s_temp = temp; 2968 2991 } 2969 2992 2970 2993 idTest(s_temp); 2971 2994 ideal s_temp1 = kStd(s_temp,currQuotient,testHomog,&w,NULL,length); … … 3219 3242 while ((i<IDELEMS(arg)) && (generator<0)) 3220 3243 { 3221 for (j=rk_arg;j>=0;j--) 3244 for (j=rk_arg;j>=0;j--) 3222 3245 (*componentIsUsed)[j]=0; 3223 3246 p = arg->m[i]; 3224 3247 while (p!=NULL) 3225 { 3248 { 3226 3249 j = pGetComp(p); 3227 3250 if ((*componentIsUsed)[j]==0) -
Singular/ideals.h
rcffe626 r1bf317 4 4 * Computer Algebra System SINGULAR * 5 5 ****************************************/ 6 /* $Id: ideals.h,v 1. 19 2000-01-13 14:40:23 siebertExp $ */6 /* $Id: ideals.h,v 1.20 2000-01-27 16:53:47 Singular Exp $ */ 7 7 /* 8 8 * ABSTRACT - all basic methods to manipulate ideals … … 84 84 85 85 //ideal idSyzygies (ideal h1, tHomog h,intvec **w); 86 ideal idSyzygies (ideal h1, tHomog h,intvec **w, BOOLEAN setSyzComp=TRUE, 86 ideal idSyzygies (ideal h1, tHomog h,intvec **w, BOOLEAN setSyzComp=TRUE, 87 87 BOOLEAN setRegularity=FALSE, int *deg = NULL); 88 88 ideal idLiftStd (ideal h1, matrix *m, tHomog h=testHomog); … … 90 90 ideal idLift (ideal mod, ideal sumod,ideal * rest=NULL, 91 91 BOOLEAN goodShape=FALSE, BOOLEAN isSB=TRUE,BOOLEAN divide=FALSE, 92 BOOLEAN lift1=FALSE); 93 ideal idLiftNonStB (ideal mod, ideal submod,ideal * rest=NULL, 94 BOOLEAN goodShape=FALSE,BOOLEAN divide=FALSE, 95 BOOLEAN lift1=FALSE); 92 matrix *unit=NULL); 96 93 97 94 intvec * idMWLift(ideal mod,intvec * weights); -
Singular/iparith.cc
rcffe626 r1bf317 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: iparith.cc,v 1.20 0 2000-01-13 14:18:58 siebertExp $ */4 /* $Id: iparith.cc,v 1.201 2000-01-27 16:53:47 Singular Exp $ */ 5 5 6 6 /* … … 149 149 { "dim", 0, DIM_CMD , CMD_1}, 150 150 { "div", 0, INTDIV_CMD , MULDIV_OP}, 151 { "division", 0, DIVISION_CMD , CMD_2}, 151 152 #ifdef DRING 152 153 { "dring", 0, DRING_CMD , DRING_CMD}, … … 1482 1483 return FALSE; 1483 1484 } 1485 static BOOLEAN jjDIVISION(leftv res, leftv u, leftv v) 1486 { 1487 ideal ui=(ideal)u->Data(); 1488 int ul= IDELEMS(ui); 1489 ideal vi=(ideal)v->Data(); 1490 int vl= IDELEMS(vi); 1491 ideal R; matrix U; 1492 ideal m = idLift(ui,vi,&R, FALSE,hasFlag(u,FLAG_STD),FALSE,&U); 1493 matrix T = idModule2formatedMatrix(m,ul,vl); 1494 lists L=(lists)AllocSizeOf(slists); 1495 L->Init(3); 1496 L->m[0].rtyp=MATRIX_CMD; 1497 L->m[0].data=(void *)T; 1498 L->m[1].rtyp=MATRIX_CMD; 1499 L->m[1].data=(void *)U; 1500 L->m[2].rtyp=u->Typ(); 1501 L->m[2].data=(void *)R; 1502 res->data=(char *)L; 1503 return FALSE; 1504 } 1484 1505 static BOOLEAN jjEXTGCD_I(leftv res, leftv u, leftv v) 1485 1506 { … … 1725 1746 int ul= IDELEMS((ideal)u->Data()); 1726 1747 int vl= IDELEMS((ideal)v->Data()); 1727 //if (currRing->OrdSgn==-1) ul += vl; //to add if NEW_LIFT defined 1728 if (hasFlag(u,FLAG_STD)) 1729 { 1730 m = idLift((ideal)u->Data(),(ideal)v->Data()); 1731 res->data = (char *)idModule2formatedMatrix(m,ul,vl); 1732 } 1733 else 1734 { 1735 // matrix ma=mpNew(1,1); 1736 // ideal mo=idLiftStd((ideal)u->CopyD(),currQuotient,&ma,testHomog); 1737 // m = idLift(mo,(ideal)v->Data()); 1738 // matrix r=idModule2formatedMatrix(m, IDELEMS(mo),vl); 1739 // idDelete(&mo); 1740 // // idDelete(&m); already done by idModule2formatedMatrix 1741 // res->data=(char *)mpMult(ma,r); 1742 // idDelete((ideal *)&ma); 1743 // idDelete((ideal *)&r); 1744 m = idLiftNonStB((ideal)u->Data(),(ideal)v->Data()); 1745 res->data = (char *)idModule2formatedMatrix(m,ul,vl); 1746 } 1748 m = idLift((ideal)u->Data(),(ideal)v->Data(),NULL,FALSE,hasFlag(u,FLAG_STD)); 1749 res->data = (char *)idModule2formatedMatrix(m,ul,vl); 1747 1750 return FALSE; 1748 1751 } … … 2160 2163 ,{jjWRONG2, EQUAL_EQUAL, 0, IDEAL_CMD, IDEAL_CMD PROFILER} 2161 2164 ,{jjWRONG2, EQUAL_EQUAL, 0, MODUL_CMD, MODUL_CMD PROFILER} 2165 ,{jjWRONG2, EQUAL_EQUAL, 0, IDEAL_CMD, MODUL_CMD PROFILER} 2166 ,{jjWRONG2, EQUAL_EQUAL, 0, MODUL_CMD, IDEAL_CMD PROFILER} 2162 2167 ,{jjEQUAL_I, NOTEQUAL, INT_CMD, INT_CMD, INT_CMD PROFILER} 2163 2168 ,{jjEQUAL_N, NOTEQUAL, INT_CMD, NUMBER_CMD, NUMBER_CMD PROFILER} … … 2170 2175 ,{jjWRONG2, NOTEQUAL, 0, IDEAL_CMD, IDEAL_CMD PROFILER} 2171 2176 ,{jjWRONG2, NOTEQUAL, 0, MODUL_CMD, MODUL_CMD PROFILER} 2177 ,{jjWRONG2, NOTEQUAL, 0, IDEAL_CMD, MODUL_CMD PROFILER} 2178 ,{jjWRONG2, NOTEQUAL, 0, MODUL_CMD, IDEAL_CMD PROFILER} 2172 2179 ,{jjDOTDOT, DOTDOT, INTVEC_CMD, INT_CMD, INT_CMD PROFILER} 2173 2180 ,{jjINDEX_I, '[', INT_CMD, INTVEC_CMD, INT_CMD PROFILER} … … 2208 2215 ,{jjDIM2, DIM_CMD, INT_CMD, IDEAL_CMD, IDEAL_CMD PROFILER} 2209 2216 ,{jjDIM2, DIM_CMD, INT_CMD, MODUL_CMD, IDEAL_CMD PROFILER} 2217 ,{jjDIVISION, DIVISION_CMD, LIST_CMD, IDEAL_CMD, IDEAL_CMD PROFILER} 2218 ,{jjDIVISION, DIVISION_CMD, LIST_CMD, MODUL_CMD, MODUL_CMD PROFILER} 2210 2219 ,{jjELIMIN, ELIMINATION_CMD,IDEAL_CMD, IDEAL_CMD, POLY_CMD PROFILER} 2211 2220 ,{jjELIMIN, ELIMINATION_CMD,MODUL_CMD, MODUL_CMD, POLY_CMD PROFILER} … … 4183 4192 static BOOLEAN jjLIFT3(leftv res, leftv u, leftv v, leftv w) 4184 4193 { 4185 int sw=(int)w->Data(); 4186 if (sw==0) 4187 { 4188 return jjLIFT(res,u,v); 4189 } 4190 else 4191 { 4192 ideal m; 4193 ideal ui=(ideal)u->Data(); 4194 ideal vi=(ideal)v->Data(); 4195 int ul= IDELEMS(ui); 4196 int vl= IDELEMS(vi); 4197 m = idLiftNonStB(ui,vi, sw); 4198 res->data = (char *)idModule2formatedMatrix(m,ul,vl); 4199 } 4194 if (w->rtyp!=IDHDL) return TRUE; 4195 int ul= IDELEMS((ideal)u->Data()); 4196 int vl= IDELEMS((ideal)v->Data()); 4197 ideal m 4198 = idLift((ideal)u->Data(),(ideal)v->Data(),NULL,FALSE,hasFlag(u,FLAG_STD), 4199 FALSE, (matrix *)(&(IDMATRIX((idhdl)(w->data))))); 4200 res->data = (char *)idModule2formatedMatrix(m,ul,vl); 4200 4201 return FALSE; 4201 4202 } … … 4328 4329 ,{jjRES3, MRES_CMD, NONE, MODUL_CMD, INT_CMD, ANY_TYPE } 4329 4330 #endif 4330 ,{jjLIFT3, LIFT_CMD, MATRIX_CMD, IDEAL_CMD, IDEAL_CMD, INT_CMD } 4331 ,{jjLIFT3, LIFT_CMD, MATRIX_CMD, IDEAL_CMD, IDEAL_CMD, MATRIX_CMD } 4332 ,{jjLIFT3, LIFT_CMD, MATRIX_CMD, MODUL_CMD, MODUL_CMD, MATRIX_CMD } 4331 4333 ,{jjPREIMAGE, PREIMAGE_CMD, IDEAL_CMD, RING_CMD, ANY_TYPE, ANY_TYPE } 4332 4334 ,{jjPREIMAGE, PREIMAGE_CMD, IDEAL_CMD, QRING_CMD, ANY_TYPE, ANY_TYPE }
Note: See TracChangeset
for help on using the changeset viewer.