Changeset 311d099 in git


Ignore:
Timestamp:
Feb 1, 2021, 2:11:17 PM (2 years ago)
Author:
Hans Schoenemann <hannes@…>
Branches:
(u'jengelh-datetime', 'ceac47cbc86fe4a15902392bdbb9bd2ae0ea02c6')(u'spielwiese', 'a657104b677b4c461d018cbf3204d72d34ad66a9')
Children:
fc73643642b01f9111d972d15b22bae89ec11d36
Parents:
4218c13e2434358d0a056b78d0a40377a11bcdb1
Message:
rework jjSetMinpoly
Location:
Singular
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • Singular/ipassign.cc

    r4218c1 r311d099  
    171171  }
    172172}
    173 ring jjSetMinpoly(ring r, number a)
    174 {
    175   if ( !nCoeff_is_transExt(r->cf) )
    176   {
    177     if(!nCoeff_is_algExt(r->cf) )
     173// change the coeff cf=K[x] (of type n_transExt) to K[x]/a
     174// return NULL in error case
     175coeffs jjSetMinpoly(coeffs cf, number a)
     176{
     177  if ( !nCoeff_is_transExt(cf) )
     178  {
     179    if(!nCoeff_is_algExt(cf) )
    178180    {
    179181      WerrorS("cannot set minpoly for these coeffients");
     
    181183    }
    182184  }
    183   if (rVar(r->cf->extRing)!=1)
    184   {
    185     WerrorS("only univarite minpoly allowed");
     185  if (rVar(cf->extRing)!=1)
     186  {
     187    WerrorS("only univariate minpoly allowed");
    186188    return NULL;
    187189  }
    188190
    189   assume (r->idroot==NULL);
    190 
    191   number p = n_Copy(a,r->cf);
    192   n_Normalize(p, r->cf);
    193 
    194   if (n_IsZero(p, r->cf))
    195   {
    196     n_Delete(&p, r->cf);
    197     if( nCoeff_is_transExt(r->cf) )
    198     {
    199       return r;
    200     }
    201     WarnS("cannot set minpoly to 0 / alg. extension?");
    202     return NULL;
    203   }
    204   r=rCopy(r);
    205   // remove all object currently in the ring
     191  number p = n_Copy(a,cf);
     192  n_Normalize(p, cf);
     193
     194  if (n_IsZero(p, cf))
     195  {
     196    n_Delete(&p, cf);
     197    return cf;
     198  }
    206199
    207200  AlgExtInfo A;
    208201
    209   A.r = rCopy(r->cf->extRing); // Copy  ground field!
     202  A.r = rCopy(cf->extRing); // Copy  ground field!
    210203  // if minpoly was already set:
    211   if( r->cf->extRing->qideal != NULL ) id_Delete(&(A.r->qideal),A.r);
     204  if( cf->extRing->qideal != NULL ) id_Delete(&(A.r->qideal),A.r);
    212205  ideal q = idInit(1,1);
    213206  if ((p==NULL) ||(NUM((fraction)p)==NULL))
     
    216209    // cleanup A: TODO
    217210    rDelete( A.r );
    218     rDelete(r);
    219211    return NULL;
    220212  }
     
    222214  {
    223215    poly n=DEN((fraction)(p));
    224     if(!p_IsConstant(n,r->cf->extRing))
     216    if(!p_IsConstant(n,cf->extRing))
    225217    {
    226218      WarnS("denominator must be constant - ignoring it");
    227219    }
    228     p_Delete(&n,r->cf->extRing);
     220    p_Delete(&n,cf->extRing);
    229221    DEN((fraction)(p))=NULL;
    230222  }
     
    240232  if (new_cf==NULL)
    241233  {
    242     WerrorS("Could not construct the alg. extension: llegal minpoly?");
     234    WerrorS("Could not construct the alg. extension: illegal minpoly?");
    243235    // cleanup A: TODO
    244236    rDelete( A.r );
    245     rDelete(r);
    246237    return NULL;
    247238  }
    248   else
    249   {
    250     nKillChar(r->cf); r->cf=new_cf;
    251   }
    252   return r;
     239  return new_cf;
    253240}
    254241
  • Singular/ipshell.h

    r4218c1 r311d099  
    171171/* Assigments : */
    172172BOOLEAN iiAssign(leftv left, leftv right, BOOLEAN toplevel=TRUE);
    173 ring jjSetMinpoly(ring r, number a);
     173coeffs jjSetMinpoly(coeffs cf, number a);
    174174
    175175typedef BOOLEAN (*proci)(leftv,leftv,Subexpr);
Note: See TracChangeset for help on using the changeset viewer.