Changeset 8e865c in git
- Timestamp:
- Mar 8, 2010, 10:04:20 AM (13 years ago)
- Branches:
- (u'spielwiese', '0d6b7fcd9813a1ca1ed4220cfa2b104b97a0a003')
- Children:
- 12603fcdf508bfbd1d4ad1125836e1a42d5c77b0
- Parents:
- 231da194e531aacb54bc0117d0f14014350c9ec0
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/LIB/primdec.lib
r231da1 r8e865c 50 50 LIB "triang.lib"; 51 51 LIB "absfact.lib"; 52 LIB "ring.lib";53 52 /////////////////////////////////////////////////////////////////////////////// 54 53 // … … 2337 2336 { 2338 2337 ERROR( 2339 " //Not implemented for this ordering, please change to global ordering."2338 "Not implemented for this ordering, please change to global ordering." 2340 2339 ); 2341 2340 } … … 2443 2442 { 2444 2443 ERROR( 2445 " //Not implemented for this ordering, please change to global ordering."2444 "Not implemented for this ordering, please change to global ordering." 2446 2445 ); 2447 2446 } … … 3710 3709 if((reduce(f,std(h))!=0)||(reduce(diff(f,var(i)),std(h))!=0)) 3711 3710 { 3712 ERROR(" FEHLER INGCD");3711 ERROR("ERROR in GCD"); 3713 3712 } 3714 3713 poly g1=lift(h,f)[1][1]; // f/h … … 3844 3843 { 3845 3844 ERROR( 3846 " //Not implemented for this ordering, please change to global ordering."3845 "Not implemented for this ordering, please change to global ordering." 3847 3846 ); 3848 3847 } … … 4351 4350 if((choose<0) or (choose>3)) 4352 4351 { 4353 ERROR(" ERROR:<int> must be 0 or 1 or 2 or 3");4352 ERROR("<int> must be 0 or 1 or 2 or 3"); 4354 4353 } 4355 4354 option(notWarnSB); … … 5101 5100 /////////////////////////////////////////////////////////////////////////////// 5102 5101 5103 proc primdecGTZ(ideal i , list #)5102 proc primdecGTZ(ideal i) 5104 5103 "USAGE: primdecGTZ(i); i ideal 5105 5104 RETURN: a list pr of primary ideals and their associated primes: … … 5108 5107 pr[i][2] the i-th prime component. 5109 5108 @end format 5110 NOTE: - Algorithm of Gianni/Trager/Zacharias. 5111 - Designed for characteristic 0, works also in char k > 0, if it 5112 terminates (may result in an infinite loop in small characteristic!) 5113 - For local orderings, the result is considered in the localization 5114 of the polynomial ring, not in the power series ring 5115 - For local and mixed orderings, the decomposition in the 5116 corresponding global ring is returned if the string 'global' 5117 is specified as second argument 5109 NOTE: Algorithm of Gianni/Trager/Zacharias. 5110 Designed for characteristic 0, works also in char k > 0, if it 5111 terminates (may result in an infinite loop in small characteristic!) 5118 5112 EXAMPLE: example primdecGTZ; shows an example 5119 5113 " 5120 5114 { 5121 if(size(#)>0)5122 {5123 int keep_comp=1;5124 }5125 5115 if(attrib(basering,"global")!=1) 5126 5116 { 5127 // algorithms only work in global case! 5128 // pass to appropriate global ring 5129 def r=basering; 5130 def s=changeord("dp"); 5131 setring s; 5132 ideal i=imap(r,i); 5133 // decompose and go back 5134 list li=primdecGTZ(i); 5135 setring r; 5136 def li=imap(s,li); 5137 // clean up 5138 if(!defined(keep_comp)) 5139 { 5140 for(int k=size(li);k>=1;k--) 5141 { 5142 if(mindeg(std(lead(li[k][2]))[1])==0) 5143 { 5144 // 1 contained in ideal, i.e. component does not meet origin in local ordering 5145 li=delete(li,k); 5146 } 5147 } 5148 } 5149 return(li); 5117 ERROR( 5118 "Not implemented for this ordering, please change to global ordering." 5119 ); 5150 5120 } 5151 5152 5121 if(minpoly!=0) 5153 5122 { 5154 5123 return(algeDeco(i,0)); 5155 5124 ERROR( 5156 " //Not implemented yet for algebraic extensions.Simulate the ring extension by adding the minpoly to the ideal"5125 "Not implemented yet for algebraic extensions.Simulate the ring extension by adding the minpoly to the ideal" 5157 5126 ); 5158 5127 } … … 5169 5138 } 5170 5139 /////////////////////////////////////////////////////////////////////////////// 5171 proc absPrimdecGTZ(ideal I , list #)5140 proc absPrimdecGTZ(ideal I) 5172 5141 "USAGE: absPrimdecGTZ(I); I ideal 5173 5142 ASSUME: Ground field has characteristic 0. 5174 RETURN: a ring containing two lists: @code{absolute_primes} ,the absolute5175 prime components of I , and @code{primary_decomp},the output of5176 @code{primdecGTZ(I)} .5143 RETURN: a ring containing two lists: @code{absolute_primes} (the absolute 5144 prime components of I) and @code{primary_decomp} (the output of 5145 @code{primdecGTZ(I)}). 5177 5146 The list absolute_primes has to be interpreted as follows: 5178 5147 each entry describes a class of conjugated absolute primes, … … 5184 5153 polynomial of a minimal finite field extension over which the 5185 5154 absolute prime component is defined. 5186 For local orderings, the result is considered in the localization5187 of the polynomial ring, not in the power series ring.5188 For local and mixed orderings, the decomposition in the5189 corresponding global ring is returned if the string 'global'5190 is specified as second argument5191 5155 NOTE: Algorithm of Gianni/Trager/Zacharias combined with the 5192 5156 @code{absFactorize} command. … … 5201 5165 } 5202 5166 5203 if(size(#)>0)5204 {5205 int keep_comp=1;5206 }5207 5208 5167 if(attrib(basering,"global")!=1) 5209 5168 { 5210 // algorithm automatically passes to the global case 5211 // hence prepare to go back to an appropriate new ring 5212 def r=basering; 5213 ideal max_of_r=maxideal(1); 5214 def s=changeord("dp"); 5215 setring s; 5216 def I=imap(r,I); 5217 def S=absPrimdecGTZ(I); 5218 setring S; 5219 ring r1=char(basering),var(nvars(r)+1),dp; 5220 def rS=r+r1; 5221 // move objects to appropriate ring and clean up 5222 setring rS; 5223 def max_of_r=imap(r,max_of_r); 5224 attrib(max_of_r,"isSB",1); 5225 def absolute_primes=imap(S,absolute_primes); 5226 def primary_decomp=imap(S,primary_decomp); 5227 if(!defined(keep_comp)) 5228 { 5229 ideal tempid; 5230 for(int k=size(absolute_primes);k>=1;k--) 5231 { 5232 tempid=absolute_primes[k][1]; 5233 tempid[1]=0; // ignore minimal polynomial 5234 if(size(reduce(lead(tempid),max_of_r))!=0) 5235 { 5236 // 1 contained in ideal, i.e. component does not meet origin in local ordering 5237 absolute_primes=delete(absolute_primes,k); 5238 } 5239 } 5240 for(k=size(primary_decomp);k>=1;k--) 5241 { 5242 if(mindeg(std(lead(primary_decomp[k][2]))[1])==0) 5243 { 5244 // 1 contained in ideal, i.e. component does not meet origin in local ordering 5245 primary_decomp=delete(primary_decomp,k); 5246 } 5247 } 5248 kill tempid; 5249 } 5250 export(primary_decomp); 5251 export(absolute_primes); 5252 return(rS); 5169 ERROR( 5170 "Not implemented for this ordering, please change to global ordering." 5171 ); 5253 5172 } 5254 5173 if(minpoly!=0) … … 5256 5175 //return(algeDeco(i,0)); 5257 5176 ERROR( 5258 " //Not implemented yet for algebraic extensions.Simulate the ring extension by adding the minpoly to the ideal"5177 "Not implemented yet for algebraic extensions.Simulate the ring extension by adding the minpoly to the ideal" 5259 5178 ); 5260 5179 } … … 5315 5234 primary_decomp[i]=list(L[i][1],L[i][2]); 5316 5235 } 5236 for(ii=1;ii<=size(absolute_primes);ii++) 5237 { 5238 absolute_primes[ii][1]=interred(absolute_primes[ii][1]); 5239 } 5317 5240 export(primary_decomp); 5318 5241 export(absolute_primes); 5319 5242 setring R; 5320 dbprint( printlevel-voice+3," 5321 // 'absPrimdecGTZ' created a ring, in which two lists absolute_primes (the 5322 // absolute prime components) and primary_decomp (the primary and prime 5323 // components over the current basering) are stored. 5324 // To access the list of absolute prime components, type (if the name S was 5325 // assigned to the return value): 5326 setring S; absolute_primes; "); 5327 5243 dbprint( printlevel-voice+3," 5244 // def S = absPrimdecGTZ(i); creates a ring, 5245 // which comes with two lists: 5246 // absolute_primes -- the absolute prime components, 5247 // and primary_decomp -- the primary and prime 5248 // components over the current basering). 5249 // Type setring S; absolute_primes; 5250 // to access the data. 5251 "); 5328 5252 return(Rz); 5329 5253 } … … 5355 5279 if c=3, minAssGTZ and facstd are used. 5356 5280 @end format 5357 For local orderings, the result is considered in the localization5358 of the polynomial ring, not in the power series ring.5359 For local and mixed orderings, the decomposition in the5360 corresponding global ring is returned if the string 'global'5361 is specified as third argument5362 5281 EXAMPLE: example primdecSY; shows an example 5363 5282 " 5364 5283 { 5365 if(size(#)>1)5366 {5367 int keep_comp=1;5368 }5369 5284 if(attrib(basering,"global")!=1) 5370 5285 { 5371 // algorithms only work in global case! 5372 // pass to appropriate global ring 5373 def r=basering; 5374 def s=changeord("dp"); 5375 setring s; 5376 ideal i=imap(r,i); 5377 // decompose and go back 5378 list li=primdecSY(i); 5379 setring r; 5380 def li=imap(s,li); 5381 // clean up 5382 if(!defined(keep_comp)) 5383 { 5384 for(int k=size(li);k>=1;k--) 5385 { 5386 if(mindeg(std(lead(li[k][2]))[1])==0) 5387 { 5388 // 1 contained in ideal, i.e. component does not meet origin in local ordering 5389 li=delete(li,k); 5390 } 5391 } 5392 } 5393 return(li); 5286 ERROR( 5287 "Not implemented for this ordering, please change to global ordering." 5288 ); 5394 5289 } 5395 5290 i=simplify(i,2); … … 5399 5294 return(list(L)); 5400 5295 } 5401 5402 5296 if(minpoly!=0) 5403 5297 { 5404 5298 return(algeDeco(i,1)); 5405 5299 } 5406 if (size(#) !=0)5300 if (size(#)==1) 5407 5301 { return(prim_dec(i,#[1])); } 5408 5302 else … … 5428 5322 5429 5323 RETURN: a list, the minimal associated prime ideals of I. 5430 NOTE: - Designed for characteristic 0, works also in char k > 0 based 5431 on an algorithm of Yokoyama 5432 - For local orderings, the result is considered in the localization 5433 of the polynomial ring, not in the power series ring 5434 - For local and mixed orderings, the decomposition in the 5435 corresponding global ring is returned if the string 'global' 5436 is specified as second argument 5324 NOTE: Designed for characteristic 0, works also in char k > 0 based 5325 on an algorithm of Yokoyama 5437 5326 EXAMPLE: example minAssGTZ; shows an example 5438 5327 " 5439 5328 { 5440 if(size(#)>0)5441 {5442 int keep_comp=1;5443 }5444 5445 if(attrib(basering,"global")!=1)5446 {5447 // algorithms only work in global case!5448 // pass to appropriate global ring5449 def r=basering;5450 def s=changeord("dp");5451 setring s;5452 ideal i=imap(r,i);5453 // decompose and go back5454 list li=minAssGTZ(i);5455 setring r;5456 def li=imap(s,li);5457 // clean up5458 if(!defined(keep_comp))5459 {5460 for(int k=size(li);k>=1;k--)5461 {5462 if(mindeg(std(lead(li[k]))[1])==0)5463 {5464 // 1 contained in ideal, i.e. component does not meet origin in local ordering5465 li=delete(li,k);5466 }5467 }5468 }5469 return(li);5470 }5471 5472 5329 int j; 5473 5330 string algorithm; … … 5509 5366 } 5510 5367 5368 if(attrib(basering,"global")!=1) 5369 { 5370 ERROR( 5371 "Not implemented for this ordering, please change to global ordering." 5372 ); 5373 } 5511 5374 if(minpoly!=0) 5512 5375 { … … 5534 5397 Otherwise, the system tries to find an optimal ordering, 5535 5398 which in some cases may considerably speed up the algorithm. @* 5536 For local orderings, the result is considered in the localization5537 of the polynomial ring, not in the power series ring5538 For local and mixed orderings, the decomposition in the5539 corresponding global ring is returned if the string 'global'5540 is specified as third argument5541 5399 EXAMPLE: example minAssChar; shows an example 5542 5400 " 5543 5401 { 5544 if(size(#)>1)5545 {5546 int keep_comp=1;5547 }5548 5402 if(attrib(basering,"global")!=1) 5549 5403 { 5550 // algorithms only work in global case! 5551 // pass to appropriate global ring 5552 def r=basering; 5553 def s=changeord("dp"); 5554 setring s; 5555 ideal i=imap(r,i); 5556 // decompose and go back 5557 list li=minAssChar(i); 5558 setring r; 5559 def li=imap(s,li); 5560 // clean up 5561 if(!defined(keep_comp)) 5562 { 5563 for(int k=size(li);k>=1;k--) 5564 { 5565 if(mindeg(std(lead(li[k]))[1])==0) 5566 { 5567 // 1 contained in ideal, i.e. component does not meet origin in local ordering 5568 li=delete(li,k); 5569 } 5570 } 5571 } 5572 return(li); 5404 ERROR( 5405 "Not implemented for this ordering, please change to global ordering." 5406 ); 5573 5407 } 5574 if (size(#) >0)5408 if (size(#)==1) 5575 5409 { return(min_ass_prim_charsets(i,#[1])); } 5576 5410 else … … 5598 5432 { 5599 5433 ERROR( 5600 " //Not implemented for this ordering, please change to global ordering."5434 "Not implemented for this ordering, please change to global ordering." 5601 5435 ); 5602 5436 } … … 5632 5466 if(attrib(basering,"global")!=1) 5633 5467 { 5634 // algorithms only work in global case! 5635 // pass to appropriate global ring 5636 def r=basering; 5637 def s=changeord("dp"); 5638 setring s; 5639 ideal i=imap(r,i); 5640 // compute radical and go back 5641 def j=radical(i); 5642 setring r; 5643 def j=imap(s,j); 5644 return(j); 5468 ERROR( 5469 "Not implemented for this ordering, please change to global ordering." 5470 ); 5645 5471 } 5646 5472 if(size(i) == 0){return(ideal(0));} … … 6411 6237 { 6412 6238 ERROR( 6413 " //Not implemented for this ordering, please change to global ordering."6239 "Not implemented for this ordering, please change to global ordering." 6414 6240 ); 6415 6241 } … … 6459 6285 { 6460 6286 ERROR( 6461 " //Not implemented for this ordering, please change to global ordering."6287 "Not implemented for this ordering, please change to global ordering." 6462 6288 ); 6463 6289 } … … 6527 6353 { 6528 6354 ERROR( 6529 " //Not implemented for this ordering, please change to global ordering."6355 "Not implemented for this ordering, please change to global ordering." 6530 6356 ); 6531 6357 } -
Tst/Short/bug_46.res.gz.uu
r231da1 r8e865c 1 1 begin 640 bug_46.res.gz 2 M'XL("(32%$<``V)U9U\T-BYR97,`[5?!;N,V$+W[*XA%@75,R>$,*8JJ86%1 3 M%"@"+(HBSJE%&M"2D@CUVH&D;.Q\?8>T)4M.TBYZV%YBP!`]?!R^(1^?Z,75 4 MSQ>_,L8@99\O?F(?FKJ9KLKEA]EH<>C!E%'PIER7S?AL-G)/EJ9L^7AWH_1T 5 M73Q-Z\8V'5RF[/R<%56UJ5BY9G99_U:57_(B^^7J]PZDIOO9'O9=)S-&*:O* 6 M]1VKJKD(QMM@%SR?!?G#$:!35N:%7;%ROD4.P0[YCA[/DC\C?^9P1,8IRXM; 7 M=GDY'Q`9EU3)B'A^'(0_LJPJ;%/DS'H&@:O@Z;[,[EGSM&&KLFYJ5]%F]=@4 8 M-XY\4;-Q<U^X5&V<^3C+-E\>-NMBW=1GS*YS'[75[H9FHAX_JHUU_3[/<2#; 9 M?"TJYH#98U51A"UM73ABE+(J6-ULJB*?ND%7&V:SK*AK#W=$V>;V;4H!:W8/ 10 M!1N7MQZ_MM2[8$^V]H74=7FWID5H-KZW*IK':LV^VM5C<?;CB!T^=='X75K, 11 M3I=DQKKU-VF'N[R<G>)&?\"U3]@^Z7-#[;E5(:"5W,1H,8P$:,M!1`JP0^'U 12 M/(1D&YH=?PYM%Y;7\T@(LPMI=.+&2K1<":4[A+J>`YA$;;F5(4$X0&1L*!4* 13 M3P4[*FK4_GB%G]8T@T03T20Q*FV((<0:!0PHJFTHY0N*(+1&"J.CX#CH*$+B 14 MH`V:/M%$)W(;NI5P*,J$8'F'&E*5;U+%_5(ZI@831>N1G-*$:!L"O.`98PP[ 15 M/[^4-!I04IE)'">#U111K+>^%H?BM+B)#5O4@&0KBR1E?Y6KE=-$&P.1=K(! 16 MF!X<P!F`#99!%N0#"P!L+>!B[J8,ELB7],@DSY!G/0L`N;>`Q8D#7+P[P/=P 17 M`%#I/^'>=(!/V9^*1SBAI^0HA'8MY%)%1E"3]`A:RH&&S<1R5),ES\)/V>"T 18 MQ5I3/'2Y0IGX3"$8'5.+5"]4U)=S9`QE.@&#!`\64KQ4]5LNX6N@9+X&$(AM 19 M$5K%VE>A9$3N,RA#N3+4:V5HK4%3W*?3AUQ&@"N##IV19F!RL?.UMI`#/$RB 20 M0R$=_)M,Q%42)FI?24PG>Y\--<3)?CL2F8AXN!\8T>PJ?J42%!(,4,=^?T-0 21 ML*\&E/([3?PB(4]<1L:D!QL>--&.H3T11NZ7H!WSFN=`=/"<15`=S4'W3"?^ 22 M5],QQWM'3F3/94"SGKL63O)@&;JV]&URZ7/EOI/\.#PY7$;>[R+_AQ.AZ-U% 23 MNDU!NOA^LRG)@TK[,L]/M3W)N!-C7[M(4I=>UETTHI-.!]T+5YYH%CMRV+XG 24 M>YI%>=0LJKYFZ:8\T"M&_7MRL-T=>_3K+\5W*7X?*<;_[:5H^\+;GJ@&WKZM 25 D]H?M^F)]F:-E:'HB2Z;^'Z#[F_=8C^%L]L/H;__@,0(W#@`` 2 M'XL("'&]E$L``V)U9U\T-BYR97,`[5?;;N,V$'WW5Q"+?4A,R2:'%$6M8:$H 3 M"A0!BJ*(\]3"#:A+-T*]=B`IC>VO[Y"Z6'+B3=KG&#!$#\_,'))G1O3J[J>; 4 M7PDA/":_W/Q(/M55/=L4R:?%9-7.0$S0>%]LB_KJ>C&Q3Q+')'GZ>B_5;)L_ 5 MSZK:U#U<Q&0^)WE9[DI2;(E)JM_*XEN6IS_?_=Z#Y*S)]MA,G64,8E(6VZ^D 6 M+)?,N]I[!^]X[66/)X"*29'E9D.*Y1XH]PY`#_@X"GH$>J3\A`QCDN5_D=O; 7 MY8C(58$KF2!/.[DB2_)BEJ1E;NJ\(L9Q\2SX^:%('TBZ^X;FYZ)^(/7SCFR* 8 MJJZ^V&F,L=L\U?F]715"?)_4#WEO)LYLW1]WVWQ;5RZFV69NPI2'>\R.DYU? 9 M:^T1N86?O,GNG[QTP/2I+-%"$E/EENOUS"+O#H\YJ?+:[>1J<<YN83'UCI@T 10 MS:O*Q<E,;6:3?NMTW+O?WBY>N/_!UU\F".N>^+G'\=)(GX,15(=@P`\85X9R 11 M%D@./0K62SRD_J=8+P/&],%'K\CZ"#!4,JEZA%PO.=>1W%,C?(10S@-M?"&! 12 M.0K04Y"3[L<KO)3"#`)T@$E"D$HC,QXJ8'Q(+5*1./IV"9%E(P1P0X72H(>, 13 M.5,*Q(&"960IJ2``I#3"R2;:_F*T,7-QD3DT.VJ):X@D;D]TQAJW.%0-;2$0 14 MAML5&1J%831D'4+(#P,0"'T&DFVHO5N915$7RN]0(\J=5J*8_%UL-E8HG8VS 15 MF/1C/FLKVA:T\1(O];)127/H2OIF:5-Z"=`$'ZF@*=!T4-)<-"6].JOHFX^* 16 M?J.BN8R_ZWZIHG](_Y0T@"D^!07&E!T!%3+0#(<H):Z$&(HQ'5<WUIB2T\2W 17 M`7P1.7<4J`IQY'/.9#"47Z"UGIHS,!?<@9E@+U5XJ>0=<0SFB',&T#%7,E2. 18 MNA0!MI(1]]#VEFE*G9-J/:+`Y<=2T$*KX=J44EQ-DS%<,QZ^`I==]'9U+=QO 19 MH_LG^+OZ@EV>'\EF>2&69Q,-%`^CYF`B$;%0C-N$"/$H4[\]3BYYN\/8@47# 20 M.6!BU#2`":XYKK'Q\3L?=)9.#/Z9C^SSF/?D>:VC\*#M*"NO/)6^&K24\,V6 21 MHD^WA`S)SH6'6>=V!-/,2WP[%FZ,'7DN[7>:G=RC]NKP<7/XCWT&V.#FT.\G 22 MX`WSW2U'M`(;2C?#HAG)TA7I`".M+:'"*;*W!NNEG!IGI>),;M"3@^X%-I`; 23 MB)/<0`[EAE?2D=0@&%Y(O?WA-*->?UM]J.A-%87_[VUEAIK9GQTXOWP]'+H= 24 AACI[&:-CJ`?ZB&;N7Y+]*_147?'KQ>?)OT@;@-);#0`` 26 25 ` 27 26 end -
Tst/Short/bug_46.stat
r231da1 r8e865c 1 1 >> tst_memory_0 :: 1 192546949:2007101112:3-0-3:ix86-Linux:nepomuck:4094402 1 >> tst_memory_1 :: 1 192546949:2007101112:3-0-3:ix86-Linux:nepomuck:9650283 1 >> tst_memory_2 :: 1 192546949:2007101112:3-0-3:ix86-Linux:nepomuck:9650284 1 >> tst_timer_1 :: 1 192546949:2007101112:3-0-3:ix86-Linux:nepomuck:951 1 >> tst_memory_0 :: 1268039025:3110-2010030517:3-1-1:ix86-Linux:nepomuck:346280 2 1 >> tst_memory_1 :: 1268039025:3110-2010030517:3-1-1:ix86-Linux:nepomuck:892928 3 1 >> tst_memory_2 :: 1268039025:3110-2010030517:3-1-1:ix86-Linux:nepomuck:991232 4 1 >> tst_timer_1 :: 1268039025:3110-2010030517:3-1-1:ix86-Linux:nepomuck:40
Note: See TracChangeset
for help on using the changeset viewer.