Changeset 08d98a in git
- Timestamp:
- Sep 14, 2011, 8:18:59 PM (12 years ago)
- Branches:
- (u'jengelh-datetime', 'ceac47cbc86fe4a15902392bdbb9bd2ae0ea02c6')(u'spielwiese', '0604212ebb110535022efecad887940825b97c3f')
- Children:
- 35e86e4b8846ae589996e378f75e28b2aa48605e
- Parents:
- 0edcce0373257644bc23c5efa79fa53fc1b7cb96
- git-author:
- Oleksandr Motsak <motsak@mathematik.uni-kl.de>2011-09-14 20:18:59+02:00
- git-committer:
- Mohamed Barakat <mohamed.barakat@rwth-aachen.de>2011-11-09 16:12:50+01:00
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/ipassign.cc
r0edcce r08d98a 13 13 #include <ctype.h> 14 14 15 #define TRANSEXT_PRIVATES 16 17 #include <polys/ext_fields/transext.h> 18 15 19 #include <kernel/mod2.h> 16 #include <Singular/tok.h> 20 #include <omalloc/omalloc.h> 21 17 22 #include <misc/options.h> 18 #include <Singular/ipid.h>19 #include <Singular/idrec.h>20 23 #include <misc/intvec.h> 21 #include <omalloc/omalloc.h> 24 25 #include <coeffs/coeffs.h> 26 #include <coeffs/numbers.h> 27 #include <coeffs/longrat.h> 28 29 30 #include <polys/ext_fields/algext.h> 31 32 #include <polys/monomials/ring.h> 33 #include <polys/matpol.h> 34 #include <polys/monomials/maps.h> 35 #include <polys/nc/nc.h> 36 #include <polys/nc/sca.h> 37 22 38 #include <kernel/febase.h> 23 39 #include <kernel/polys.h> 24 40 #include <kernel/ideals.h> 25 #include <polys/matpol.h>26 41 #include <kernel/kstd1.h> 27 42 #include <kernel/timer.h> 28 #include <polys/monomials/ring.h>29 #include <Singular/subexpr.h>30 #include <Singular/lists.h>31 #include <coeffs/numbers.h>32 //#include <polys/ext_fields/longalg.h>33 43 #include <kernel/stairc.h> 34 #include <polys/monomials/maps.h>35 44 #include <kernel/syz.h> 45 36 46 //#include "weight.h" 37 #include <Singular/ipconv.h> 38 #include <Singular/attrib.h> 39 #include <Singular/silink.h> 40 #include <Singular/ipshell.h> 41 #include <polys/nc/sca.h> 42 #include <Singular/blackbox.h> 47 #include "tok.h" 48 #include "ipid.h" 49 #include "idrec.h" 50 #include "subexpr.h" 51 #include "lists.h" 52 #include "ipconv.h" 53 #include "attrib.h" 54 #include "silink.h" 55 #include "ipshell.h" 56 #include "blackbox.h" 57 58 43 59 44 60 /*=================== proc =================*/ … … 161 177 static BOOLEAN jjMINPOLY(leftv res, leftv a) 162 178 { 163 if (getCoeffType(currRing->cf)!=n_transExt) 164 { 165 WerrorS("no minpoly allowed"); 166 return TRUE; 167 } 168 number p=(number)a->CopyD(NUMBER_CMD); 169 if (nIsZero(p)) 179 if ( !nCoeff_is_transExt(currRing->cf) ) 180 { 181 WerrorS("no minpoly allowed over non-transcendental ground field"); 182 return TRUE; 183 } 184 185 if ( currRing->idroot != NULL ) 186 { 187 WerrorS("no minpoly allowed if there are local objects belonging to the basering"); 188 return TRUE; 189 } 190 191 number p = (number)a->CopyD(NUMBER_CMD); 192 193 if (n_IsZero(p, currRing->cf)) 170 194 { 171 195 WerrorS("cannot set minpoly to 0"); 172 196 return TRUE; 173 197 } 198 199 assume (currRing->idroot==NULL); 200 201 // remove all object currently in the ring 202 while(currRing->idroot!=NULL) 203 { 204 killhdl2(currRing->idroot,&(currRing->idroot),currRing); 205 } 206 207 n_Normalize(p, currRing->cf); 208 209 AlgExtInfo A; 210 211 A.r = currRing->cf->extRing; // Use the same ground field! 212 A.i = idInit(1,1); 213 214 assume( DEN((fractionObject *)(p)) == NULL ); // minpoly must be a poly...!? 215 216 A.i->m[0] = NUM((fractionObject *)p); 217 218 #ifndef NDEBUG 219 PrintS("\nTrying to conver the currRing into an algebraic field: "); 220 PrintS("Ground poly. ring: \n"); 221 rWrite( A.r ); 222 PrintS("\nGiven MinPOLY: "); 223 p_Write( A.i->m[0], A.r ); 224 #endif 225 226 NUM((fractionObject *)p) = NULL; n_Delete(&p, currRing->cf); 227 228 coeffs new_cf = nInitChar(n_algExt, &A); 229 230 if (new_cf==NULL) 231 { 232 Werror("Could not construct the alg. extension: llegal minpoly?"); 233 // cleanup A: TODO 234 return TRUE; 235 } 174 236 else 175 237 { 176 // remove all object currently in the ring 177 while(currRing->idroot!=NULL) 178 { 179 killhdl2(currRing->idroot,&(currRing->idroot),currRing); 180 } 181 nNormalize(p); 182 typedef struct { ring r; ideal i; } AlgExtInfo; 183 struct fractionObject 184 { 185 poly numerator; 186 poly denominator; 187 int complexity; 188 }; 189 typedef struct fractionObject * fraction; 190 191 AlgExtInfo A; 192 A.r=currRing->cf->extRing; 193 A.r->ref++; 194 A.i=idInit(1,1); 195 A.i->m[0]=((fraction)p)->numerator; 196 ((fraction)p)->numerator=NULL; 197 n_Delete(&p,currRing->cf); 198 coeffs new_cf=nInitChar(n_algExt,&A); 199 if (new_cf==NULL) 200 { 201 Werror("llegal minpoly"); 202 // cleanup A: TODO 203 return TRUE; 204 } 205 else 206 { 207 nKillChar(currRing->cf); 208 currRing->cf=new_cf; 209 } 210 } 238 nKillChar(currRing->cf); currRing->cf=new_cf; 239 } 240 211 241 return FALSE; 212 242 } … … 696 726 #define IPASSIGN 697 727 #define D(A) A 698 #include <Singular/table.h>728 #include "table.h" 699 729 /*=================== operations ============================*/ 700 730 /*2
Note: See TracChangeset
for help on using the changeset viewer.