Changeset 1d92bf in git for Singular/extra.cc
- Timestamp:
- May 8, 2012, 2:51:57 PM (11 years ago)
- Branches:
- (u'spielwiese', 'd0474371d8c5d8068ab70bfb42719c97936b18a6')
- Children:
- fefaa8ebeb7a4ac9c586d3f248d03e8578febd79
- Parents:
- e699d86f1d122e6f33ebbdf5cd73abd7985274e2
- git-author:
- Martin Lee <martinlee84@web.de>2012-05-08 14:51:57+02:00
- git-committer:
- Martin Lee <martinlee84@web.de>2012-05-11 11:06:45+02:00
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/extra.cc
re699d8 r1d92bf 117 117 #ifdef HAVE_SPECTRUM 118 118 #include <kernel/spectrum.h> 119 #endif120 121 #ifdef HAVE_BIFAC122 #include <bifac.h>123 119 #endif 124 120 … … 3482 3478 } 3483 3479 else 3484 /*==================== bifac =================*/3485 #ifdef HAVE_BIFAC3486 if (strcmp(sys_cmd, "bifac")==0)3487 {3488 if (h->Typ()!=POLY_CMD)3489 {3490 WerrorS("`system(\"bifac\",<poly>) expected");3491 return TRUE;3492 }3493 if (!rField_is_Q(currRing))3494 {3495 WerrorS("coeff field must be Q");3496 return TRUE;3497 }3498 BIFAC B;3499 CFFList C;3500 int sw_rat=isOn(SW_RATIONAL);3501 On(SW_RATIONAL);3502 CanonicalForm F( convSingPClapP((poly)(h->Data()), currRing));3503 B.bifac(F, 1);3504 CFFList L=B.getFactors();3505 // construct the ring ==============================================3506 int i;3507 int lev=ExtensionLevel();3508 char **names=(char**)omAlloc0(lev*sizeof(char_ptr));3509 for(i=1;i<=lev; i++)3510 {3511 StringSetS("");3512 names[i-1]=omStrDup(StringAppend("a(%d)",i));3513 }3514 ring alg_ring=rDefault(0,lev,names);3515 ring new_ring=rCopy0(currRing); // all variable names, ordering etc.3516 new_ring->P=lev;3517 new_ring->parameter=names;3518 new_ring->extRing=alg_ring;3519 new_ring->ch=1; // WTF!!??? :(3520 rComplete(new_ring,TRUE);3521 // set the mipo ===============================================3522 ring save_currRing=currRing; idhdl save_currRingHdl=currRingHdl;3523 rChangeCurrRing(alg_ring);3524 ideal mipo_id=idInit(lev,1);3525 for (i=lev; i>0;i--)3526 {3527 CanonicalForm Mipo=getMipo(Variable(-i),Variable(i));3528 mipo_id->m[i-1]=convClapPSingP(Mipo);3529 }3530 idShow(mipo_id);3531 alg_ring->qideal=mipo_id;3532 rChangeCurrRing(new_ring);3533 for (i=lev-1; i>=0;i--)3534 {3535 poly p=pOne();3536 lnumber n=(lnumber)pGetCoeff(p);3537 // no need to delete nac 13538 n->z=(napoly)mipo_id->m[i];3539 mipo_id->m[i]=p;3540 }3541 new_ring->qideal=id_Copy(alg_ring->qideal,new_ring);3542 // convert factors =============================================3543 ideal fac_id=idInit(L.length(),1);3544 CFFListIterator J=L;3545 i=0;3546 intvec *v = new intvec( L.length() );3547 for ( ; J.hasItem(); J++,i++ )3548 {3549 fac_id->m[i]=convClapAPSingAP( J.getItem().factor() );3550 (*v)[i]=J.getItem().exp();3551 }3552 idhdl hh=enterid("factors",0,LIST_CMD,&(currRing->idroot),FALSE);3553 lists LL=(lists)omAllocBin( slists_bin);3554 LL->Init(2);3555 LL->m[0].rtyp=IDEAL_CMD;3556 LL->m[0].data=(char *)fac_id;3557 LL->m[1].rtyp=INTVEC_CMD;3558 LL->m[1].data=(char *)v;3559 IDDATA(hh)=(char *)LL;3560 3561 rChangeCurrRing(save_currRing);3562 currRingHdl=save_currRingHdl;3563 if (!sw_rat) Off(SW_RATIONAL);3564 3565 res->data=new_ring;3566 res->rtyp=RING_CMD;3567 return FALSE;3568 }3569 else3570 #endif3571 3480 /*==================== gcd-varianten =================*/ 3572 3481 #ifdef HAVE_FACTORY
Note: See TracChangeset
for help on using the changeset viewer.