Changeset b6b3d3 in git
- Timestamp:
- Feb 12, 2015, 11:53:35 AM (9 years ago)
- Branches:
- (u'fieker-DuVal', '117eb8c30fc9e991c4decca4832b1d19036c4c65')(u'spielwiese', 'd08f5f0bb3329b8ca19f23b74cb1473686415c3a')
- Children:
- 9b46beddf45e066826f54f9c45475d22b6acfa15
- Parents:
- ba68419b3ac117ee2dadc0972c99d83101aa359be5fd095e7959549d6a23e7b4b88e0c4e818f0586
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/dyn_modules/gfanlib/bbfan.cc
rba6841 rb6b3d3 127 127 int rr = iv->rows(); 128 128 bigintmat* ivCopy = new bigintmat(rr, cc, coeffs_BIGINT); 129 number temp1 = n_Init(1,coeffs_BIGINT); 129 130 for (int r = 1; r <= rr; r++) 130 131 for (int c = 1; c <= cc; c++) 131 132 { 132 number temp1 = n_Init(1,coeffs_BIGINT);133 133 number temp2 = n_Sub(IMATELEM(*iv, r, c),temp1,coeffs_BIGINT); 134 134 ivCopy->set(r,c,temp2); 135 n_Delete(&temp1,coeffs_BIGINT);136 135 n_Delete(&temp2,coeffs_BIGINT); 137 136 } 137 n_Delete(&temp1,coeffs_BIGINT); 138 138 gfan::ZMatrix* zm = bigintmatToZMatrix(ivCopy); 139 139 gfan::IntMatrix im = gfan::IntMatrix(gfan::ZToIntMatrix(*zm)); … … 463 463 } 464 464 465 BOOLEAN coneContaining(leftv res, leftv args)466 {467 leftv u=args;468 if ((u != NULL) && (u->Typ() == fanID))469 {470 leftv v=u->next;471 if ((v != NULL) && ((v->Typ() == BIGINTMAT_CMD) || (v->Typ() == INTVEC_CMD)))472 {473 gfan::ZFan* zf = (gfan::ZFan*)u->Data();474 gfan::ZVector* point;475 if (v->Typ() == INTVEC_CMD)476 {477 intvec* w0 = (intvec*) v->Data();478 bigintmat* w1 = iv2bim(w0,coeffs_BIGINT);479 w1->inpTranspose();480 point = bigintmatToZVector(*w1);481 delete w1;482 }483 else484 {485 bigintmat* w1 = (bigintmat*) v->Data();486 point = bigintmatToZVector(*w1);487 }488 lists L = (lists)omAllocBin(slists_bin);489 res->rtyp = LIST_CMD;490 res->data = (void*) L;491 delete point;492 return FALSE;493 }494 }495 WerrorS("coneContaining: unexpected parameters");496 return TRUE;497 }465 // BOOLEAN coneContaining(leftv res, leftv args) 466 // { 467 // leftv u=args; 468 // if ((u != NULL) && (u->Typ() == fanID)) 469 // { 470 // leftv v=u->next; 471 // if ((v != NULL) && ((v->Typ() == BIGINTMAT_CMD) || (v->Typ() == INTVEC_CMD))) 472 // { 473 // gfan::ZFan* zf = (gfan::ZFan*)u->Data(); 474 // gfan::ZVector* point; 475 // if (v->Typ() == INTVEC_CMD) 476 // { 477 // intvec* w0 = (intvec*) v->Data(); 478 // bigintmat* w1 = iv2bim(w0,coeffs_BIGINT); 479 // w1->inpTranspose(); 480 // point = bigintmatToZVector(*w1); 481 // delete w1; 482 // } 483 // else 484 // { 485 // bigintmat* w1 = (bigintmat*) v->Data(); 486 // point = bigintmatToZVector(*w1); 487 // } 488 // lists L = (lists)omAllocBin(slists_bin); 489 // res->rtyp = LIST_CMD; 490 // res->data = (void*) L; 491 // delete point; 492 // return FALSE; 493 // } 494 // } 495 // WerrorS("coneContaining: unexpected parameters"); 496 // return TRUE; 497 // } 498 498 499 499 BOOLEAN removeCone(leftv res, leftv args) -
Singular/dyn_modules/gfanlib/tropical.cc
rba6841 rb6b3d3 67 67 68 68 69 gfan::ZCone lowerHomogeneitySpace(ideal I, ring r) 70 { 71 int n = rVar(r); 72 poly g; 73 int* leadexpv = (int*) omAlloc((n+1)*sizeof(int)); 74 int* tailexpv = (int*) omAlloc((n+1)*sizeof(int)); 75 gfan::ZVector leadexpw = gfan::ZVector(n); 76 gfan::ZVector tailexpw = gfan::ZVector(n); 77 gfan::ZMatrix equations = gfan::ZMatrix(0,n); 78 for (int i=0; i<IDELEMS(I); i++) 79 { 80 g = (poly) I->m[i]; 81 if (g) 82 { 83 p_GetExpV(g,leadexpv,r); 84 leadexpw = intStar2ZVector(n,leadexpv); 85 pIter(g); 86 while (g) 87 { 88 p_GetExpV(g,tailexpv,r); 89 tailexpw = intStar2ZVector(n,tailexpv); 90 equations.appendRow(leadexpw-tailexpw); 91 pIter(g); 92 } 93 } 94 } 95 gfan::ZMatrix inequalities = gfan::ZMatrix(0,n); 96 gfan::ZVector lowerHalfSpaceCondition = gfan::ZVector(n); 97 lowerHalfSpaceCondition[0] = -1; 98 inequalities.appendRow(lowerHalfSpaceCondition); 99 100 omFreeSize(leadexpv,(n+1)*sizeof(int)); 101 omFreeSize(tailexpv,(n+1)*sizeof(int)); 102 return gfan::ZCone(inequalities,equations); 103 } 104 105 106 BOOLEAN lowerHomogeneitySpace(leftv res, leftv args) 107 { 108 leftv u = args; 109 if ((u != NULL) && (u->Typ() == IDEAL_CMD)) 110 { 111 leftv v = u->next; 112 if (v == NULL) 113 { 114 ideal I = (ideal) u->Data(); 115 res->rtyp = coneID; 116 res->data = (void*) new gfan::ZCone(lowerHomogeneitySpace(I,currRing)); 117 return FALSE; 118 } 119 } 120 WerrorS("lowerHomogeneitySpace: unexpected parameters"); 121 return TRUE; 122 } 123 124 69 125 gfan::ZCone groebnerCone(const ideal I, const ring r, const gfan::ZVector &w) 70 126 { … … 268 324 p->iiAddCproc("","maximalGroebnerCone",FALSE,maximalGroebnerCone); 269 325 p->iiAddCproc("","homogeneitySpace",FALSE,homogeneitySpace); 326 p->iiAddCproc("","lowerHomogeneitySpace",FALSE,lowerHomogeneitySpace); 270 327 p->iiAddCproc("","initial",FALSE,initial); 271 328 // p->iiAddCproc("","tropicalNeighbours",FALSE,tropicalNeighbours); -
Singular/dyn_modules/gfanlib/tropicalStrategy.cc
rba6841 rb6b3d3 174 174 s->wvhdl[0] = (int*) omAlloc(n*sizeof(int)); 175 175 s->wvhdl[0][0] = 1; 176 for (int i=1; i<n; i++) 177 s->wvhdl[0][i] = -(r->wvhdl[0][i-1]); 176 if (r->order[0] == ringorder_dp) 177 { 178 for (int i=1; i<n; i++) 179 s->wvhdl[0][i] = -1; 180 } 181 else if (r->order[0] == ringorder_ds) 182 { 183 for (int i=1; i<n; i++) 184 s->wvhdl[0][i] = 1; 185 } 186 else if (r->order[0] == ringorder_ws) 187 { 188 for (int i=1; i<n; i++) 189 s->wvhdl[0][i] = r->wvhdl[0][i-1]; 190 } 191 else 192 { 193 for (int i=1; i<n; i++) 194 s->wvhdl[0][i] = -r->wvhdl[0][i-1]; 195 } 178 196 s->order[1] = ringorder_C; 179 197 … … 182 200 return s; 183 201 } 184 185 #if 0 /*unused*/186 static ring writeOrderingAsWP(ring r)187 {188 assume(r->order[0]==ringorder_wp || r->order[0]==ringorder_dp);189 if (r->order[0]==ringorder_dp)190 {191 ring s = rCopy0(r,FALSE,TRUE);192 rComplete(s);193 rTest(s);194 return s;195 }196 return rCopy(r);197 }198 #endif199 202 200 203 static ideal constructStartingIdeal(ideal originalIdeal, ring originalRing, number uniformizingParameter, ring startingRing) … … 222 225 omFreeSize(shiftByOne,(n+1)*sizeof(int)); 223 226 224 ring origin = currRing; 225 rChangeCurrRing(startingRing); 226 ideal startingIdeal = kNF(pt,startingRing->qideal,J); 227 rChangeCurrRing(origin); 227 // ring origin = currRing; 228 // rChangeCurrRing(startingRing); 229 // ideal startingIdeal = kNF(pt,startingRing->qideal,J); 230 // rChangeCurrRing(origin); 231 ideal startingIdeal = J; J = NULL; 228 232 assume(startingIdeal->m[k]==NULL); 229 233 startingIdeal->m[k] = pt->m[0]; … … 867 871 originalIdeal(NULL), 868 872 expectedDimension(NULL), 869 linealitySpace(gfan::ZCone()), // to come, see below870 startingRing(NULL), // to come, see below871 startingIdeal(NULL), // to come, see below872 uniformizingParameter(NULL), // to come, see below873 shortcutRing(NULL), // to come, see below873 linealitySpace(gfan::ZCone()), 874 startingRing(NULL), 875 startingIdeal(NULL), 876 uniformizingParameter(NULL), 877 shortcutRing(NULL), 874 878 onlyLowerHalfSpace(false) 875 879 { -
Singular/dyn_modules/gfanlib/tropicalVariety.cc
rba6841 rb6b3d3 89 89 { 90 90 setOptionRedSB(); 91 ideal stdI;92 if (!hasFlag(u,FLAG_STD))93 stdI = gfanlib_kStd_wrapper(I,currRing);94 else95 stdI = id_Copy(I,currRing);91 // ideal stdI; 92 // if (!hasFlag(u,FLAG_STD)) 93 // stdI = gfanlib_kStd_wrapper(I,currRing); 94 // else 95 // stdI = id_Copy(I,currRing); 96 96 tropicalStrategy currentStrategy(I,currRing); 97 97 gfan::ZFan* tropI = tropicalVariety(currentStrategy); … … 99 99 res->data = (char*) tropI; 100 100 undoSetOptionRedSB(); 101 id_Delete(&stdI,currRing);101 // id_Delete(&stdI,currRing); 102 102 return FALSE; 103 103 } … … 105 105 { 106 106 number p = (number) v->Data(); 107 ideal stdI;108 if (!hasFlag(u,FLAG_STD))109 stdI = gfanlib_kStd_wrapper(I,currRing);110 else111 stdI = id_Copy(I,currRing);112 tropicalStrategy currentStrategy(stdI,p,currRing);113 //tropicalStrategy currentStrategy(I,p,currRing);107 // ideal stdI; 108 // if (!hasFlag(u,FLAG_STD)) 109 // stdI = gfanlib_kStd_wrapper(I,currRing); 110 // else 111 // stdI = id_Copy(I,currRing); 112 // tropicalStrategy currentStrategy(stdI,p,currRing); 113 tropicalStrategy currentStrategy(I,p,currRing); 114 114 gfan::ZFan* tropI = tropicalVariety(currentStrategy); 115 115 res->rtyp = fanID; 116 116 res->data = (char*) tropI; 117 id_Delete(&stdI,currRing);117 // id_Delete(&stdI,currRing); 118 118 return FALSE; 119 119 } -
gfanlib/gfanlib_zcone.cpp
rba6841 rb6b3d3 23 23 #include <setoper.h> 24 24 #include <cdd.h> 25 #endif 26 #endif 25 #endif //HAVE_CDDLIB_SETOPER_H 26 #endif //HAVE_CDD_SETOPER_H 27 27 28 28 namespace gfan{
Note: See TracChangeset
for help on using the changeset viewer.