Changeset c45564 in git


Ignore:
Timestamp:
May 28, 2020, 3:59:45 PM (3 years ago)
Author:
Hans Schoenemann <hannes@…>
Branches:
(u'spielwiese', '8e0ad00ce244dfd0756200662572aef8402f13d5')
Children:
0d9fc0cf670c06a6a5fa2528276fe4efc95a2820
Parents:
d2ead71f26dd6534952a6986bca121c8aff5f2ed
Message:
add: jjsetMinpoly
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • Singular/ipassign.cc

    rd2ead71 rc45564  
    171171  }
    172172}
    173 static BOOLEAN jjMINPOLY(leftv, leftv a)
    174 {
    175   if( !nCoeff_is_transExt(currRing->cf) && (currRing->idroot == NULL) && n_IsZero((number)a->Data(), currRing->cf) )
    176   {
    177 #ifndef SING_NDEBUG
    178     WarnS("Set minpoly over non-transcendental ground field to 0?!");
    179     Warn("in >>%s<<",my_yylinebuf);
    180 #endif
     173BOOLEAN jjSetMinpoly(ring r, number a, BOOLEAN modify)
     174{
     175  if( !nCoeff_is_transExt(r->cf) && (r->idroot == NULL) && n_IsZero(a, r->cf) )
     176  {
    181177    return FALSE;
    182178  }
    183179
    184180
    185   if ( !nCoeff_is_transExt(currRing->cf) )
    186   {
    187     WarnS("Trying to set minpoly over non-transcendental ground field...");
    188     if(!nCoeff_is_algExt(currRing->cf) )
     181  if ( !nCoeff_is_transExt(r->cf) )
     182  {
     183    if(!nCoeff_is_algExt(r->cf) )
    189184    {
    190185      WerrorS("cannot set minpoly for these coeffients");
     
    192187    }
    193188  }
    194   if ((rVar(currRing->cf->extRing)!=1)
    195   && !n_IsZero((number)a->Data(), currRing->cf) )
     189  if ((rVar(r->cf->extRing)!=1)
     190  && !n_IsZero(a, r->cf) )
    196191  {
    197192    WerrorS("only univarite minpoly allowed");
     
    200195
    201196  BOOLEAN redefine_from_algext=FALSE;
    202   if ( currRing->idroot != NULL )
    203   {
    204     redefine_from_algext=(currRing->cf->extRing->qideal!=NULL);
    205 //    return TRUE;
    206 #ifndef SING_NDEBUG
    207     idhdl p = currRing->idroot;
    208 
    209     WarnS("no minpoly allowed if there are local objects belonging to the basering: ");
    210 
    211     while(p != NULL)
    212     {
    213       PrintS(p->String(TRUE)); Print("(%s)\n",IDID(p));
    214       p = p->next;
    215     }
    216 #endif
    217   }
    218 
    219 //  assume (currRing->idroot==NULL);
    220 
    221   number p = (number)a->CopyD(NUMBER_CMD);
    222   n_Normalize(p, currRing->cf);
    223 
    224   if (n_IsZero(p, currRing->cf))
    225   {
    226     n_Delete(&p, currRing->cf);
    227     if( nCoeff_is_transExt(currRing->cf) )
    228     {
    229 #ifndef SING_NDEBUG
    230       WarnS("minpoly is already 0...");
    231 #endif
     197  if ( r->idroot != NULL )
     198  {
     199    redefine_from_algext=(r->cf->extRing->qideal!=NULL);
     200  }
     201
     202//  assume (r->idroot==NULL);
     203
     204  number p = n_Copy(a,r->cf);
     205  n_Normalize(p, r->cf);
     206
     207  if (n_IsZero(p, r->cf))
     208  {
     209    n_Delete(&p, r->cf);
     210    if( nCoeff_is_transExt(r->cf) )
     211    {
    232212      return FALSE;
    233213    }
     
    235215    return TRUE;
    236216  }
    237 
     217  if (!modify) r=rCopy(r);
    238218  // remove all object currently in the ring
    239   while(currRing->idroot!=NULL)
     219  while(r->idroot!=NULL)
    240220  {
    241221#ifndef SING_NDEBUG
    242     Warn("killing a local object due to minpoly change: %s", IDID(currRing->idroot));
     222    Warn("killing a local object due to minpoly change: %s", IDID(r->idroot));
    243223#endif
    244     killhdl2(currRing->idroot,&(currRing->idroot),currRing);
     224    killhdl2(r->idroot,&(r->idroot),r);
    245225  }
    246226
    247227  AlgExtInfo A;
    248228
    249   A.r = rCopy(currRing->cf->extRing); // Copy  ground field!
     229  A.r = rCopy(r->cf->extRing); // Copy  ground field!
    250230  // if minpoly was already set:
    251   if( currRing->cf->extRing->qideal != NULL ) id_Delete(&(A.r->qideal),A.r);
     231  if( r->cf->extRing->qideal != NULL ) id_Delete(&(A.r->qideal),A.r);
    252232  ideal q = idInit(1,1);
    253233  if ((p==NULL) ||(NUM((fraction)p)==NULL))
     
    256236    // cleanup A: TODO
    257237    rDelete( A.r );
     238    if (!modify) rDelete(r);
    258239    return TRUE;
    259240  }
     
    261242  {
    262243    poly n=DEN((fraction)(p));
    263     if(!p_IsConstantPoly(n,currRing->cf->extRing))
     244    if(!p_IsConstantPoly(n,r->cf->extRing))
    264245    {
    265246      WarnS("denominator must be constant - ignoring it");
    266247    }
    267     p_Delete(&n,currRing->cf->extRing);
     248    p_Delete(&n,r->cf->extRing);
    268249    DEN((fraction)(p))=NULL;
    269250  }
     
    273254  A.r->qideal = q;
    274255
    275 #if 0
    276   PrintS("\nTrying to conver the currRing into an algebraic field: ");
    277   PrintS("Ground poly. ring: \n");
    278   rWrite( A.r );
    279   PrintS("\nGiven MinPOLY: ");
    280   p_Write( A.i->m[0], A.r );
    281 #endif
    282 
    283   // :(
    284 //  NUM((fractionObject *)p) = NULL; // makes 0/ NULL fraction - which should not happen!
    285 //  n_Delete(&p, currRing->cf); // doesn't expect 0/ NULL :(
    286256  if (!redefine_from_algext)
    287257  {
     
    297267    // cleanup A: TODO
    298268    rDelete( A.r );
     269    if (!modify) rDelete(r);
    299270    return TRUE;
    300271  }
    301272  else
    302273  {
    303     nKillChar(currRing->cf); currRing->cf=new_cf;
    304   }
    305   return FALSE;
     274    nKillChar(r->cf); r->cf=new_cf;
     275  }
     276  return FALSE;
     277}
     278static BOOLEAN jjMINPOLY(leftv, leftv a)
     279{
     280  return jjSetMinpoly(currRing,(number)a->Data(),TRUE);
    306281}
    307282
  • Singular/ipshell.h

    rd2ead71 rc45564  
    171171/* Assigments : */
    172172BOOLEAN iiAssign(leftv left, leftv right, BOOLEAN toplevel=TRUE);
     173BOOLEAN jjSetMinpoly(ring r, number a, BOOLEAN modify);
    173174
    174175typedef BOOLEAN (*proci)(leftv,leftv,Subexpr);
  • Tst/Short/bug_minpoly.res.gz.uu

    rd2ead71 rc45564  
    11begin 640 bug_minpoly.res.gz
    2 M'XL("*%C15@``V)U9U]M:6YP;VQY+G)E<P!54,M.PS`0O.<K1A6'M#(N`0H2
    3 M48V$N%1"7-I[FSB;8"FL*]L!PM?CT)*6TSYF9G=GUYOGU2N`3.%E]81)\$&V
    4 MIISDR?J(7"O$YM:P">DT3X8(I5!VS?;=\-ZVO63ZE#X48=3<*(SYK80SW,`O
    5 MKT3Z)7KQ+0I1"CT5U?ZT9:%PG+9$EB?S.68S;%P_*(.%I_"'PWZ0`UN^#*Y@
    6 MKXDKXE"T:)SMN$)MJ*VDE$F<^@A=,-OP3U];A_!&GJ`MU9'.P1_(Y%S$K-:=
    7 M<U3!,&)94A00#H>VA@F+!^S.CMV-)N[.;-_+W[<-;^E\FDWSB^0'ZE0]`6P!
    8 "````
     2M'XL(")B?SUX"`V)U9U]M:6YP;VQY+G)E<P!-3\%JPD`0O><K'N(A@64Q;:U@
     3M<`OB12B]V+LFZT07TEG9G=#:K^]:;>II9MZ;F??>YGVU?@-0&KRNEQA)%-VY
     4M9E1EFQOS8)#`K6,G>5%EEPICT/2'[8?CD^_.FNE31ZEEN'DT&/HGC>#X@+B8
     5MJ/Q+G=6WJE6C;*'VIW^5J<'MVP)EE27D!;9F]H)(\L>A]0%RI$BPGMK6$4N\
     6M+E,(B?/6]B'0'HZ1QH;2`>$JTCDF3.?8W0GM!@//=Y9G^C?R)5(?\[*HQMD/
     7(N41"_B@!````
    98`
    109end
  • Tst/Short/bug_minpoly.stat

    rd2ead71 rc45564  
    1 1 >> tst_memory_0 :: 1480942444:4100, 64 bit:4.1.0:x86_64-Linux:nepomuck:107200
    2 1 >> tst_memory_1 :: 1480942444:4100, 64 bit:4.1.0:x86_64-Linux:nepomuck:2228224
    3 1 >> tst_memory_2 :: 1480942444:4100, 64 bit:4.1.0:x86_64-Linux:nepomuck:2228224
    4 1 >> tst_timer_1 :: 1480942444:4100, 64 bit:4.1.0:x86_64-Linux:nepomuck:0
     11 >> tst_memory_0 :: 1590665113:4132, 64 bit:4.1.3:x86_64-Linux:nepomuck:85216
     21 >> tst_memory_1 :: 1590665113:4132, 64 bit:4.1.3:x86_64-Linux:nepomuck:2150192
     31 >> tst_memory_2 :: 1590665113:4132, 64 bit:4.1.3:x86_64-Linux:nepomuck:2191296
     41 >> tst_timer_1 :: 1590665113:4132, 64 bit:4.1.3:x86_64-Linux:nepomuck:4
  • Tst/Short/bug_minpoly2.res.gz.uu

    rd2ead71 rc45564  
    11begin 640 bug_minpoly2.res.gz
    2 M'XL(""6*8UD"`V)U9U]M:6YP;VQY,BYR97,`75!-:\)`$+WG5SQ"#QM)5MQ6
    3 M;0GNH?0BB!?M65:SAH5T5G8G;?/OFXB-I:<9YO&^9K=_6V\!S#0VZU>D'%DV
    4 M[IB6R>Z&*(W^>'#D6&1E,DQHC6-;'SX<77S3*4GV2T8V/)(>-<;]22(XJA%6
    5 M8IZ;+/_.J\M=?JYQDUD95:@[L+@F2@?JOT1+C>`]^_-[GZ43BS[5=(K)!/O0
    6 M#4;L$2W_RL)_V@#R5'`P%$^6*DML&M3!MU3A[&Q322D380J5C2;/?QJ\R.L+
    7 2AH9M%+.L?$A^`+"]93,X`0``
     2M'XL(")6?SUX"`V)U9U]M:6YP;VQY,BYR97,`78Y!"X)`$(7O^RL&Z;`+NN"6
     3M5HASB"Y"=+'.LF+)@NV*KI3_/A71Z#3#O'GO?>GMG%P!P$>X)"=P;&MYI7(G
     4M(NFL"(3AF"FM+&41&2<@0MZ5V4OIVE2]X/KQYJV5=C%M$99]QZ%1NH0FIH$K
     5MF?MQBWJ-#Q#FF%@*3ZQ".!$YH_6/:(_0&&/-\SZP]#0<J*CT!%L>#C_M1S[A
     61CW1=2WT6;<@7E0-\A?0`````
    87`
    98end
  • Tst/Short/bug_minpoly2.stat

    rd2ead71 rc45564  
    1 1 >> tst_memory_0 :: 1499695653:4103, 64 bit:4.1.0:x86_64-Linux:nepomuck:167984
    2 1 >> tst_memory_1 :: 1499695653:4103, 64 bit:4.1.0:x86_64-Linux:nepomuck:2215936
    3 1 >> tst_memory_2 :: 1499695653:4103, 64 bit:4.1.0:x86_64-Linux:nepomuck:2215936
    4 1 >> tst_timer_1 :: 1499695653:4103, 64 bit:4.1.0:x86_64-Linux:nepomuck:2
     11 >> tst_memory_0 :: 1590665109:4132, 64 bit:4.1.3:x86_64-Linux:nepomuck:174624
     21 >> tst_memory_1 :: 1590665109:4132, 64 bit:4.1.3:x86_64-Linux:nepomuck:2183168
     31 >> tst_memory_2 :: 1590665109:4132, 64 bit:4.1.3:x86_64-Linux:nepomuck:2281488
     41 >> tst_timer_1 :: 1590665109:4132, 64 bit:4.1.3:x86_64-Linux:nepomuck:6
  • Tst/Short/bug_misc.res.gz.uu

    rd2ead71 rc45564  
    11begin 640 bug_misc.res.gz
    2 M'XL("(@?N%X"`V)U9U]M:7-C+G)E<P#56-UOXC@0?^>O&*WN(2PA31P2H!6<
    3 MU+V'6ZG:E^Z][.FV&Q(#UA&;LYV6\-??.-]0VNNM1-4BM3CC\7S\_)NQP^W7
    4 MWSY_`0!O#C>?K^&#5MK9L,6'J]YM-4/F@,([QIFV^E<]\PWS.2RRU5W*5.QP
    5 M^N`H'>EF@3^'9CQRX.("M'2"J0O#,WP:3X$#6REB6+:1AW-\,OX?(G4)7_ZX
    6 MN8&$2KJ$AS6+UZC.N&9\!?A%)8\VH+3,8IU)VL-%B`*/4@IP"33=ZKPP;R;,
    7 M=S%S/*'S+:K#T8HZFG$'EDD#RV1R7EBFI:<UA67&8\T$5Z#RO5TFK6BL;?@G
    8 M$YI1KD%23)Y#A$!$/(ED`HM(4515FD8)B"5.K2BG,BIP4U0#6U:K;J^!*2-R
    9 M:M^>ZX#8&I=6K=)O-L=#PDEC1,Y\XKJ^;>WLW-[W[63;ZI`6,L]W(!5)MJ&0
    10 MSC`!BR4TVEB[06[O!OM^Q_!H#I'6DBVL%*5F>,G4[;5=;@^F7<M^%ZE8M>)[
    11 M&K?>@CFD5[WT3^^OV>XCIFR1_K`<>/U!7DOVE:19AHQ3.BD<W_W?M1U^>,B/
    12 M(C]@LV:?VHS[=C4D@[V=^]WDIW-@6*.%;W^P(_E@MQ_D>Y00E.3^(!_5NL1M
    13 M@&)/`%5KXEZ]*)#J,>]$1$@GHM)_&8N?F_#($(7#?#38Y1@GV3?+_(/@N*B>
    14 M,DU5HS,JT68-VJ7]NZ[]1X:#%F82(LRSFOT=1NV#.I4NL\BXD\H@+_/8MWA.
    15 M7HRGV:7G_9I2:#W[[BG/03/MO=2SWZDHWZ])MO9F1?&U_A#9:HK,=JW85$5=
    16 M@\5`6&O/7A-TBDWFXT=L!0E=X@F!=9V"]81N0WD?RZ5HPD7!>+9K@XO_>JX]
    17 MW-N[<I0;V:X->GQ0W2=YX4]JLV4MOMCVM`5GY#8=>CP]2X<^:-,CKW*7&^B2
    18 M+%U@R\:A@@>FUY`ROA6;O-$F3M4[\6\&EFM'?<RITSE'6#[5(E2(OI.AU\Z-
    19 MCN=(O7U?2_]:%*V]5A+W5`(7?*AEQ%5,>8*L16ZLI,AX`DM&-XGC.#T\;7Z%
    20 M3R+;)*BM(<:CICA/B],GVJP<H#M-N<(#X;(V/INYY3HJI9`@XCB32"+D+.#C
    21 M@BZ%I%`&OF&<8O"7\.,X^A]-:L%[3BUX-K6P0\YQ2\[P%<@Y>0DYP2IN67B]
    22 MHK)"&B'$RU9*4R'SINA'TP/R!M^#BKKE/OD>"<Q%@O'[:,,2B!3$ZTA&,1X^
    23 M3&D6FUN(0?U@BZ"X0YAUF:*)\[@;&6?6*;=-7($[/XR+',3U2E&1XZB\@ZA(
    24 M\/I!D4=(D8.8+',Q6%%I(Z;]@_">,7IB46L?FY>Y=QKUPE0LZ'+)8G-8(L.^
    25 M?;NP#$OZ9HHC&[&$,='[2"J\>'M&6GT6&Q'_;=YM4"YD4O(RV78TVL\EF"N]
    26 M,L/="1.D:^)3$RFV4BXH8BQG;8,-@J?P(3^##WF$3_B?^+P-=,9--[[JN8UT
    27 MTF#6E4Z?P,S^&<SL1YB%Q]7]1KI.Z+W%KA.2M]=U0O^\72<<O9>N$YZYOX3O
    28 GI+^$)_M+.#ES)^F\)8SQ+<'\-F9^_LH4OLQ?_=+[%T.P<%Y1$P``
     2M'XL(".2?SUX"`V)U9U]M:7-C+G)E<P#56$MOXS80OOM7#!8]R+&L2)0EOV`7
     3MR/;0!8*]I+ULT<W*$FT3M427I!+)O[Y#O>TX:;J`TZP`6]1P.(]/,Q]IW_WV
     4MRZ?/`.`LX?;3#7Q04ED[MOHP[]U5,V0)*+QG"5-&?][3=U@N895N[F,F0RNA
     5MCY94@6H6N$MHQB,+KJ]!"<N;VC"\P-5X\BS8"Q["NHW<7^*3]O\8R!E\_OWV
     6M%B(JZ!H>MRS<HCI+%$LV@#<JDF`'4HDT5*F@/5R$*"1!3`%F0..]R@OS>D+?
     7MBYG3"97O41U.5M31C#NP3!I8)I/+PC(M/6TIK-,D5(PG$F1^,,ND)0V5"7^G
     8M7#&:*!`4DT\@0""")`I$!*M`4E25B@81\#5.;6A"15#@)JD"MJY6W=T`DUID
     9MU;X=VP*^URZ-6J7?O!P'"TYH(V+A$MMV32,S<_/0-Z-]JT-:R!S7@IA'Z8Y"
     10MO,`$#!;18&=D@]S,!H=^Q_!H"8%2@JV,&*5Z.&/R[L8L7P^F7<M^Y3'?M.('
     11M&K;>O"7$\U[\A_/G(KO"E`W2'Y8#IS_(:\FADC3+L.*DB@K']_]U;:<^'*R/
     12M(C]@B^8]M1GWS6I(!@<S=[O)3Y?`L$<+W^X@(_D@.PSR`TH(2G)WD(]J76(W
     13M0+%G@*HU\5V]*I#J,>]$1$@GHM)_&8N;Z_#($(7#?#3(<HR3')IE[E%P":^>
     14M4D5EHS,JT68-VJ7]^Z[])X:]%F;B(\R+NOH[%77PZE2ZE47&G50&>9G'H<5S
     15M\FH\]5MZV:]NA=:S:Y_S[#73SFL]NYV.<MVZR+;.HFB^UA\B6TV11=:*=5?4
     16M/5@,N+%US"U!IT@R5U=(!1%=XPZ!?1V#\8QN4_(NMDM!PD7#.*9M@HU?/=L<
     17M'LRL'.5:EK5!CX^Z^VQ=N)/:;-F+K[8];<$9V0U#CZ<78>@CFAXYE;M<0Q>E
     18M\0HI&X<2'IG:0LR2/=_EC3:Q*N[$SP(,VPSZF%.'.4?8/M4B5`B^DJ'3SHU.
     19MY\B\ASO%S_"1I[L($JX@Q&VBV`N+G2/8;2R@F:*)1#*?U:L7"[M<1X7@`G@8
     20MI@(+`.L-\'%%UUQ0*)WN6$+1\0R^G7K^UH3E_5]A>2^&Y7>*8MP6A?\&13%Y
     21M35&`49QN\%A#BYI0'-($NQ!B&G.1-\TVFAX5C??5JTJF[%S7(9[>P%GR$.Q8
     22M!(&$<!N(($329U*Q4._^&O6-X&@?UHSN(@N*O5NO2R6-K*<LH)T9Y]PV<7GV
     23M\C@N<A37&T5%3J-RCJ(BWML'19X@18YB,O2&O*'"1$S[1^&]8/3,HM8^DH8^
     24M[VGUPE3(Z7K-0KU)885]^7)MZ"KIZZD$JY$*G>A#("0>>!TMK:[5CH=_Z=\4
     25M*.<B*NLRVG<TVFL&^B@M]3`[8X)T37QL(D4*2SA%C,6B)3;/>PX?\CWXD"?X
     26M^/^*S_M`9]PPZ;QG-]))@UE7.GT&,_-[,#.?8.:?=O<[81W?>8^LXY/WQSJ^
     27M>UG6\4<_"NOX%^87_P?A%_\LO_B3"S-)YW0^QM.Y_D]*_^V42OP1/?^I]P\`
     28'$ZDNR1(`````
    2929`
    3030end
  • Tst/Short/bug_misc.stat

    rd2ead71 rc45564  
    1 1 >> tst_memory_0 :: 1589125000:4131, 64 bit:4.1.3:x86_64-Linux:nepomuck:217224
    2 1 >> tst_memory_1 :: 1589125000:4131, 64 bit:4.1.3:x86_64-Linux:nepomuck:2278208
    3 1 >> tst_memory_2 :: 1589125000:4131, 64 bit:4.1.3:x86_64-Linux:nepomuck:2319312
    4 1 >> tst_timer_1 :: 1589125000:4131, 64 bit:4.1.3:x86_64-Linux:nepomuck:4
     11 >> tst_memory_0 :: 1590665188:4132, 64 bit:4.1.3:x86_64-Linux:nepomuck:217232
     21 >> tst_memory_1 :: 1590665188:4132, 64 bit:4.1.3:x86_64-Linux:nepomuck:2278216
     31 >> tst_memory_2 :: 1590665188:4132, 64 bit:4.1.3:x86_64-Linux:nepomuck:2319312
     41 >> tst_timer_1 :: 1590665188:4132, 64 bit:4.1.3:x86_64-Linux:nepomuck:5
Note: See TracChangeset for help on using the changeset viewer.