Changeset a5bbb5 in git for Singular/iparith.cc
- Timestamp:
- Jan 9, 2017, 2:02:30 PM (7 years ago)
- Branches:
- (u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
- Children:
- b8b76ef3092b3162aa763b4c5b7705ceab2203fa
- Parents:
- a418d9fffbccc54b2388850e64bfc084cd0e61dcd29e550951bb89f260d4afb0da084c6a1a83e101
- git-author:
- Hans Schoenemann <hannes@mathematik.uni-kl.de>2017-01-09 14:02:30+01:00
- git-committer:
- GitHub <noreply@github.com>2017-01-09 14:02:30+01:00
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/iparith.cc
rd29e550 ra5bbb5 24 24 #include <misc/prime.h> 25 25 26 #include <polys/prCopy.h>27 26 #include <polys/matpol.h> 28 27 #include <polys/monomials/maps.h> … … 1871 1870 if (rField_is_Ring(currRing)) 1872 1871 { 1873 //ring origR = currRing;1874 //ring tempR = rCopy(origR);1875 //coeffs new_cf=nInitChar(n_Q,NULL);1876 //nKillChar(tempR->cf);1877 //tempR->cf=new_cf;1878 //rComplete(tempR);1879 1872 ideal vid = (ideal)v->Data(); 1880 1873 int i = idPosConstant(vid); … … 1884 1877 return FALSE; 1885 1878 } 1886 //rChangeCurrRing(tempR);1887 //ideal vv = idrCopyR(vid, origR, currRing);1888 1879 ideal vv = id_Copy(vid, currRing); 1889 //ideal ww = idrCopyR((ideal)w->Data(), origR, currRing);1890 1880 ideal ww = id_Copy((ideal)w->Data(), currRing); 1891 1881 /* drop degree zero generator from vv (if any) */ … … 1895 1885 res->data = (char *)d; 1896 1886 idDelete(&vv); idDelete(&ww); 1897 //rChangeCurrRing(origR);1898 //rDelete(tempR);1899 1887 return FALSE; 1900 1888 } … … 2309 2297 if (rField_is_Ring_Z(currRing)) 2310 2298 { 2311 ring origR = currRing;2312 ring tempR = rCopy(origR);2313 coeffs new_cf=nInitChar(n_Q,NULL);2314 nKillChar(tempR->cf);2315 tempR->cf=new_cf;2316 rComplete(tempR);2317 ideal uid = (ideal)u->Data();2318 rChangeCurrRing(tempR);2319 ideal uu = idrCopyR(uid, origR, currRing);2320 sleftv uuAsLeftv; memset(&uuAsLeftv, 0, sizeof(uuAsLeftv));2321 uuAsLeftv.rtyp = IDEAL_CMD;2322 uuAsLeftv.data = uu; uuAsLeftv.next = NULL;2323 if (hasFlag(u, FLAG_STD)) setFlag(&uuAsLeftv,FLAG_STD);2324 assumeStdFlag(&uuAsLeftv);2325 2299 PrintS("// NOTE: computation of Hilbert series etc. is being\n"); 2326 2300 PrintS("// performed for generic fibre, that is, over Q\n"); 2327 intvec *module_w=(intvec*)atGet(&uuAsLeftv,"isHomog",INTVEC_CMD);2328 intvec *iv=hFirstSeries(uu,module_w,currRing->qideal);2329 int returnWithTrue = 1;2330 switch((int)(long)v->Data())2331 {2332 case 1:2333 res->data=(void *)iv;2334 returnWithTrue = 0;2335 case 2:2336 res->data=(void *)hSecondSeries(iv);2337 delete iv;2338 returnWithTrue = 0;2339 }2340 if (returnWithTrue)2341 {2342 WerrorS(feNotImplemented);2343 delete iv;2344 }2345 idDelete(&uu);2346 rChangeCurrRing(origR);2347 rDelete(tempR);2348 if (returnWithTrue) return TRUE; else return FALSE;2349 2301 } 2350 2302 #endif … … 3768 3720 { 3769 3721 SPrintStart(); 3722 #ifdef HAVE_RINGS 3770 3723 if (rField_is_Ring_Z(currRing)) 3771 3724 { 3772 ring origR = currRing;3773 ring tempR = rCopy(origR);3774 coeffs new_cf=nInitChar(n_Q,NULL);3775 nKillChar(tempR->cf);3776 tempR->cf=new_cf;3777 rComplete(tempR);3778 ideal vid = (ideal)v->Data();3779 rChangeCurrRing(tempR);3780 ideal vv = idrCopyR(vid, origR, currRing);3781 sleftv vvAsLeftv; memset(&vvAsLeftv, 0, sizeof(vvAsLeftv));3782 vvAsLeftv.rtyp = IDEAL_CMD;3783 vvAsLeftv.data = vv; vvAsLeftv.next = NULL;3784 if (hasFlag(v, FLAG_STD)) setFlag(&vvAsLeftv,FLAG_STD);3785 assumeStdFlag(&vvAsLeftv);3786 3725 PrintS("// NOTE: computation of degree is being performed for\n"); 3787 3726 PrintS("// generic fibre, that is, over Q\n"); 3788 intvec *module_w=(intvec*)atGet(&vvAsLeftv,"isHomog",INTVEC_CMD); 3789 scDegree(vv,module_w,currRing->qideal); 3790 idDelete(&vv); 3791 rChangeCurrRing(origR); 3792 rDelete(tempR); 3793 } 3727 } 3728 #endif 3794 3729 assumeStdFlag(v); 3795 3730 intvec *module_w=(intvec*)atGet(v,"isHomog",INTVEC_CMD); … … 3918 3853 Warn("dim(%s) may be wrong because the mixed monomial ordering",v->Name()); 3919 3854 } 3855 #ifdef HAVE_RINGS 3920 3856 if (rField_is_Ring(currRing)) 3921 3857 { … … 3982 3918 return FALSE; 3983 3919 } 3920 #endif 3984 3921 res->data = (char *)(long)scDimInt((ideal)(v->Data()),currRing->qideal); 3985 3922 return FALSE; … … 4146 4083 static BOOLEAN jjHILBERT(leftv, leftv v) 4147 4084 { 4085 #ifdef HAVE_RINGS 4148 4086 if (rField_is_Ring_Z(currRing)) 4149 4087 { 4150 ring origR = currRing;4151 ring tempR = rCopy(origR);4152 coeffs new_cf=nInitChar(n_Q,NULL);4153 nKillChar(tempR->cf);4154 tempR->cf=new_cf;4155 rComplete(tempR);4156 ideal vid = (ideal)v->Data();4157 rChangeCurrRing(tempR);4158 ideal vv = idrCopyR(vid, origR, currRing);4159 sleftv vvAsLeftv; memset(&vvAsLeftv, 0, sizeof(vvAsLeftv));4160 vvAsLeftv.rtyp = IDEAL_CMD;4161 vvAsLeftv.data = vv; vvAsLeftv.next = NULL;4162 if (hasFlag(v, FLAG_STD)) setFlag(&vvAsLeftv,FLAG_STD);4163 assumeStdFlag(&vvAsLeftv);4164 4088 PrintS("// NOTE: computation of Hilbert series etc. is being\n"); 4165 4089 PrintS("// performed for generic fibre, that is, over Q\n"); 4166 intvec *module_w=(intvec*)atGet(&vvAsLeftv,"isHomog",INTVEC_CMD); 4167 //scHilbertPoly(vv,currRing->qideal); 4168 hLookSeries(vv,module_w,currRing->qideal); 4169 idDelete(&vv); 4170 rChangeCurrRing(origR); 4171 rDelete(tempR); 4172 return FALSE; 4173 } 4090 } 4091 #endif 4174 4092 assumeStdFlag(v); 4175 4093 intvec *module_w=(intvec*)atGet(v,"isHomog",INTVEC_CMD); … … 4180 4098 static BOOLEAN jjHILBERT_IV(leftv res, leftv v) 4181 4099 { 4100 #ifdef HAVE_RINGS 4182 4101 if (rField_is_Ring_Z(currRing)) 4183 4102 { … … 4185 4104 PrintS("// performed for generic fibre, that is, over Q\n"); 4186 4105 } 4106 #endif 4187 4107 res->data=(void *)hSecondSeries((intvec *)v->Data()); 4188 4108 return FALSE; … … 4293 4213 { 4294 4214 ideal result=kInterRed((ideal)(v->Data()), currRing->qideal); 4215 #ifdef HAVE_RINGS 4295 4216 if(rField_is_Ring(currRing)) 4296 Warn("interred: this command is experimental over the integers"); 4217 WarnS("interred: this command is experimental over the integers"); 4218 #endif 4297 4219 if (TEST_OPT_PROT) { PrintLn(); mflush(); } 4298 4220 res->data = result; … … 5782 5704 return TRUE; 5783 5705 } 5706 #ifdef HAVE_RINGS 5784 5707 if (rField_is_Ring_Z(currRing)) 5785 5708 { 5786 ring origR = currRing;5787 ring tempR = rCopy(origR);5788 coeffs new_cf=nInitChar(n_Q,NULL);5789 nKillChar(tempR->cf);5790 tempR->cf=new_cf;5791 rComplete(tempR);5792 ideal uid = (ideal)u->Data();5793 rChangeCurrRing(tempR);5794 ideal uu = idrCopyR(uid, origR, currRing);5795 sleftv uuAsLeftv; memset(&uuAsLeftv, 0, sizeof(uuAsLeftv));5796 uuAsLeftv.rtyp = IDEAL_CMD;5797 uuAsLeftv.data = uu; uuAsLeftv.next = NULL;5798 if (hasFlag(u, FLAG_STD)) setFlag(&uuAsLeftv,FLAG_STD);5799 assumeStdFlag(&uuAsLeftv);5800 5709 PrintS("// NOTE: computation of Hilbert series etc. is being\n"); 5801 5710 PrintS("// performed for generic fibre, that is, over Q\n"); 5802 intvec *module_w=(intvec*)atGet(&uuAsLeftv,"isHomog",INTVEC_CMD); 5803 intvec *iv=hFirstSeries(uu,module_w,currRing->qideal,wdegree); 5804 int returnWithTrue = 1; 5805 switch((int)(long)v->Data()) 5806 { 5807 case 1: 5808 res->data=(void *)iv; 5809 returnWithTrue = 0; 5810 case 2: 5811 res->data=(void *)hSecondSeries(iv); 5812 delete iv; 5813 returnWithTrue = 0; 5814 } 5815 if (returnWithTrue) 5816 { 5817 WerrorS(feNotImplemented); 5818 delete iv; 5819 } 5820 idDelete(&uu); 5821 rChangeCurrRing(origR); 5822 rDelete(tempR); 5823 if (returnWithTrue) return TRUE; else return FALSE; 5824 } 5711 } 5712 #endif 5825 5713 assumeStdFlag(u); 5826 5714 intvec *module_w=(intvec *)atGet(u,"isHomog",INTVEC_CMD); … … 5836 5724 return FALSE; 5837 5725 } 5726 delete iv; 5838 5727 WerrorS(feNotImplemented); 5839 delete iv;5840 5728 return TRUE; 5841 5729 } … … 5923 5811 (matrix)v->CopyD()); 5924 5812 return FALSE; 5925 }5926 static BOOLEAN currRingIsOverIntegralDomain ()5927 {5928 /* true for fields and Z, false otherwise */5929 if (rField_is_Ring_PtoM(currRing)) return FALSE;5930 if (rField_is_Ring_2toM(currRing)) return FALSE;5931 if (rField_is_Ring_ModN(currRing)) return FALSE;5932 return TRUE;5933 5813 } 5934 5814 static BOOLEAN jjMINOR_M(leftv res, leftv v) … … 6094 5974 } 6095 5975 if ((!noAlgorithm) && (strcmp(algorithm, "Bareiss") == 0) 6096 && (! currRingIsOverIntegralDomain()))5976 && (!rField_is_Domain(currRing))) 6097 5977 { 6098 5978 Werror("Bareiss algorithm not defined over coefficient rings %s", … … 9161 9041 } 9162 9042 #endif 9043 #ifdef HAVE_RINGS 9163 9044 if (rField_is_Ring(currRing)) 9164 9045 { … … 9181 9062 } 9182 9063 } 9064 #endif 9183 9065 return FALSE; 9184 9066 }
Note: See TracChangeset
for help on using the changeset viewer.