Changeset 4f80bb in git
- Timestamp:
- Sep 17, 2010, 2:57:28 PM (13 years ago)
- Branches:
- (u'spielwiese', '8d54773d6c9e2f1d2593a28bc68b7eeab54ed529')
- Children:
- dce1e3bbf2389a71a367d500df527054c5d4459f
- Parents:
- 8e7db4cc8c23b1a45ca71f3217a02819e04d9c84
- Location:
- Singular
- Files:
-
- 4 added
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/Makefile.in
r8e7db4 r4f80bb 184 184 Minor.cc \ 185 185 MinorProcessor.cc \ 186 MinorInterface.cc 186 MinorInterface.cc \ 187 Fan.cc \ 188 Cone.cc 187 189 188 190 # stuff for MP -
Singular/iparith.cc
r8e7db4 r4f80bb 72 72 #include <Singular/ipshell.h> 73 73 #include <kernel/mpr_inout.h> 74 #include <Singular/Fan.h> 75 #include <Singular/Cone.h> 74 76 75 77 #include <kernel/timer.h> … … 214 216 { // name-string alias tokval toktype 215 217 { "$INVALID$", 0, -1, 0}, 218 #ifdef HAVE_FANS 219 { "addadj", 0, ADDADJ_CMD, CMD_M}, 220 { "addmaxcone", 0, ADDMCONE_CMD, CMD_2}, 221 { "adj", 0, ADJACENCY_CMD, CMD_13}, 222 #endif /* HAVE_FANS */ 216 223 { "alias", 0, ALIAS_CMD , PARAMETER}, 217 224 { "and", 0, '&' , LOGIC_OP}, … … 233 240 { "coef", 0, COEF_CMD , CMD_M}, 234 241 { "coeffs", 0, COEFFS_CMD , CMD_23}, 242 #ifdef HAVE_FANS 243 { "cone", 0, CONE_CMD, ROOT_DECL}, 244 #endif /* HAVE_FANS */ 235 245 { "continue", 0, CONTINUE_CMD , CONTINUE_CMD}, 236 246 { "contract", 0, CONTRACT_CMD , CMD_2}, … … 242 252 { "degree", 0, DEGREE_CMD , CMD_1}, 243 253 { "delete", 0, DELETE_CMD , CMD_2}, 254 #ifdef HAVE_FANS 255 { "delmaxcone", 0, DELMCONE_CMD, CMD_12}, 256 #endif /* HAVE_FANS */ 244 257 { "det", 0, DET_CMD , CMD_1}, 245 258 { "diff", 0, DIFF_CMD , CMD_2}, … … 260 273 { "export", 0, EXPORT_CMD , EXPORT_CMD}, 261 274 { "exportto", 0, EXPORTTO_CMD , CMD_2}, 275 #ifdef HAVE_FANS 276 { "facetnormals",0, FACETNS_CMD, CMD_1}, 277 #endif /* HAVE_FANS */ 262 278 { "factorize", 0, FAC_CMD , CMD_12}, 279 #ifdef HAVE_FANS 280 { "fan", 0, FAN_CMD, ROOT_DECL}, 281 #endif /* HAVE_FANS */ 263 282 { "farey", 0, FAREY_CMD , CMD_2}, 264 283 { "fetch", 0, FETCH_CMD , CMD_2}, … … 273 292 { "gen", 0, E_CMD , CMD_1}, 274 293 { "getdump", 0, GETDUMP_CMD, CMD_1}, 294 #ifdef HAVE_FANS 295 { "getprop", 0, GETPROP_CMD, CMD_2}, 296 #endif /* HAVE_FANS */ 275 297 { "gcd", 0, GCD_CMD , CMD_2}, 276 298 { "GCD", 2, GCD_CMD , CMD_2}, … … 313 335 { "liftstd", 0, LIFTSTD_CMD , CMD_23}, 314 336 { "link", 0, LINK_CMD , ROOT_DECL}, 337 #ifdef HAVE_FANS 338 { "linspace", 0, LINSPACE_CMD, CMD_1}, 339 #endif /* HAVE_FANS */ 315 340 { "listvar", 0, LISTVAR_CMD , LISTVAR_CMD}, 316 341 { "list", 0, LIST_CMD , ROOT_DECL_LIST}, … … 323 348 { "matrix", 0, MATRIX_CMD , MATRIX_CMD}, 324 349 { "maxideal", 0, MAXID_CMD , CMD_1}, 350 #ifdef HAVE_FANS 351 { "maxcone", 0, MAXCONE_CMD, CMD_12}, 352 { "maxrays", 0, MAXRAYS_CMD, CMD_1}, 353 #endif /* HAVE_FANS */ 325 354 { "memory", 0, MEMORY_CMD , CMD_1}, 326 355 { "minbase", 0, MINBASE_CMD , CMD_1}, … … 395 424 { "ringlist", 0, RINGLIST_CMD , CMD_1}, 396 425 { "rvar", 0, IS_RINGVAR , CMD_1}, 426 #ifdef HAVE_FANS 427 { "setprop", 0, SETPROP_CMD, CMD_3}, 428 #endif /* HAVE_FANS */ 397 429 { "setring", 0, SETRING_CMD , SETRING_CMD}, 398 430 { "simplex", 0, SIMPLEX_CMD, CMD_M}, … … 3412 3444 return FALSE; 3413 3445 } 3446 #ifdef HAVE_FANS 3447 static BOOLEAN jjADDMCONE1(leftv res, leftv u, leftv v) 3448 { 3449 /* method for adding a maximal cone in the given fan; 3450 valid parametrizations: (fan, cone), 3451 Errors will be invoked in the following cases: 3452 - the cone has been generated in the context of a 3453 fan which is different from the given one */ 3454 Fan* f = (Fan*)u->Data(); 3455 Cone* c = (Cone*)v->Data(); 3456 if (! f->addMaxCone(c)) 3457 { 3458 WerrorS("cone references a fan which is different from the 1st argument"); 3459 return TRUE; 3460 } 3461 else return FALSE; 3462 } 3463 static BOOLEAN jjADDMCONE2(leftv res, leftv u, leftv v) 3464 { 3465 /* method for adding numerous maximal cones in the given fan; 3466 valid parametrizations: (fan, list), 3467 where the list entries are expected to be cones; 3468 Errors will be invoked in the following cases: 3469 - one of the cones has been generated in the context 3470 of a fan which is different from the given one */ 3471 Fan* f = (Fan*)u->Data(); 3472 lists L = (lists)v->Data(); 3473 int index = f->addMaxCones(L); 3474 if (index != 0) 3475 { 3476 Werror("cone at position %d references a fan which %s", 3477 index, "is different from the 1st argument"); 3478 return TRUE; 3479 } 3480 else return FALSE; 3481 } 3482 static BOOLEAN jjDELMCONE2(leftv res, leftv u, leftv v) 3483 { 3484 /* method for deleting a maximal cone from the given fan; 3485 valid parametrizations: (fan, int), 3486 Errors will be invoked in the following cases: 3487 - the given index is out of range [1..m], where m is 3488 the number of maximal cones in the given fan */ 3489 Fan* f = (Fan*)u->Data(); 3490 int index = (int)(long)v->Data(); 3491 if (! f->deleteMaxCone(index)) 3492 { 3493 Werror("cone index %d out of range [1..%d]; no cone deleted", 3494 index, f->getMaxCones()->nr + 1); 3495 return TRUE; 3496 } 3497 else return FALSE; 3498 } 3499 static BOOLEAN jjDELMCONE3(leftv res, leftv u, leftv v) 3500 { 3501 /* method for deleting numerous maximal cones from the 3502 given fan; 3503 valid parametrizations: (fan, intvec), 3504 Errors will be invoked in the following cases: 3505 - one of the given indices is out of range [1..m], 3506 where m is the number of maximal cones in the given 3507 fan; 3508 The method does not check that the given indices are 3509 mutually distinct. */ 3510 Fan* f = (Fan*)u->Data(); 3511 intvec* indices = (intvec*)v->Data(); 3512 int result = f->deleteMaxCones(indices); 3513 if (result != 0) 3514 { 3515 Werror("cone index %d at position %d out of range [1..%d]; %s", 3516 (*indices)[result - 1], result, f->getMaxCones()->nr + 1, 3517 "no cone deleted"); 3518 return TRUE; 3519 } 3520 else return FALSE; 3521 } 3522 static BOOLEAN jjMAXCONE2(leftv res, leftv u, leftv v) 3523 { 3524 /* method for retrieving a maximal cone of the given fan; 3525 valid parametrizations: (fan, int), 3526 Errors will be invoked in the following cases: 3527 - maximal cones not yet set in the fan, 3528 - maximal cone index invalid; 3529 The method returns an object of type cone. */ 3530 Fan* f = (Fan*)u->Data(); 3531 int index = (int)(long)v->Data(); 3532 lists maxCones = f->getMaxCones(); 3533 if (maxCones == NULL) 3534 { 3535 WerrorS("no maximal cones set in the given fan"); 3536 return TRUE; 3537 } 3538 else if ((index < 1) || (maxCones->nr + 1 < index)) 3539 { 3540 Werror("invalid cone index %d", index); 3541 return TRUE; 3542 } 3543 res->data = (char*)new Cone(*(Cone*)(maxCones->m[index - 1].data)); 3544 return FALSE; 3545 } 3546 static BOOLEAN jjGETPROP1(leftv res, leftv u, leftv v) 3547 { 3548 /* method for retrieving fan properties; 3549 valid parametrizations: (fan, string), 3550 Errors will be invoked in the following cases: 3551 - fan has so far only been instantiated by "fan f;", 3552 - string is neither of 'ambientdim', 'dim', 'complete', 3553 'simplicial', 'pure' */ 3554 Fan* f = (Fan*)u->Data(); 3555 char* prop = (char*)v->Data(); 3556 int result; 3557 3558 if (f->getLinSpace() == NULL) 3559 { 3560 WerrorS("the given fan has no properties yet (freshly instantiated)"); 3561 return TRUE; 3562 } 3563 3564 if (strcmp(prop, "ambientdim") == 0) 3565 result = f->getAmbientDim(); 3566 else if (strcmp(prop, "dim") == 0) 3567 result = f->getDim(); 3568 else if (strcmp(prop, "complete") == 0) 3569 result = f->getComplete(); 3570 else if (strcmp(prop, "simplicial") == 0) 3571 result = f->getSimplicial(); 3572 else if (strcmp(prop, "pure") == 0) 3573 result = f->getPure(); 3574 else 3575 { 3576 Werror("unexpected fan property '%s'", prop); 3577 return TRUE; 3578 } 3579 3580 res->data = (void*)result; 3581 return FALSE; 3582 } 3583 static BOOLEAN jjGETPROP2(leftv res, leftv u, leftv v) 3584 { 3585 /* method for retrieving cone properties; 3586 valid parametrizations: (cone, string), 3587 Errors will be invoked in the following cases: 3588 - cone has so far only been instantiated by "cone c;", 3589 - string is not 'dim' */ 3590 Cone* c = (Cone*)u->Data(); 3591 char* prop = (char*)v->Data(); 3592 int result; 3593 3594 if (c->getFan() == NULL) 3595 { 3596 WerrorS("the given cone has no properties yet (freshly instantiated)"); 3597 return TRUE; 3598 } 3599 3600 if (strcmp(prop, "dim") == 0) 3601 result = c->getDim(); 3602 else 3603 { 3604 Werror("unexpected cone property '%s'", prop); 3605 return TRUE; 3606 } 3607 3608 res->data = (void*)result; 3609 return FALSE; 3610 } 3611 #endif /* HAVE_FANS */ 3414 3612 static BOOLEAN jjVARSTR2(leftv res, leftv u, leftv v) 3415 3613 { … … 3803 4001 ,{jjVARSTR2, VARSTR_CMD, STRING_CMD, QRING_CMD, INT_CMD, ALLOW_PLURAL |ALLOW_RING} 3804 4002 ,{jjWEDGE, WEDGE_CMD, MATRIX_CMD, MATRIX_CMD, INT_CMD, NO_PLURAL |ALLOW_RING} 4003 #ifdef HAVE_FANS 4004 ,{jjADDMCONE1, ADDMCONE_CMD, NONE, FAN_CMD, CONE_CMD, ALLOW_PLURAL | ALLOW_RING} 4005 ,{jjADDMCONE2, ADDMCONE_CMD, NONE, FAN_CMD, LIST_CMD, ALLOW_PLURAL | ALLOW_RING} 4006 ,{jjDELMCONE2, DELMCONE_CMD, NONE, FAN_CMD, INT_CMD, ALLOW_PLURAL | ALLOW_RING} 4007 ,{jjDELMCONE3, DELMCONE_CMD, NONE, FAN_CMD, INTVEC_CMD, ALLOW_PLURAL | ALLOW_RING} 4008 ,{jjMAXCONE2, MAXCONE_CMD, CONE_CMD, FAN_CMD, INT_CMD, ALLOW_PLURAL |ALLOW_RING} 4009 ,{jjGETPROP1, GETPROP_CMD, INT_CMD, FAN_CMD, STRING_CMD, ALLOW_PLURAL |ALLOW_RING} 4010 ,{jjGETPROP2, GETPROP_CMD, INT_CMD, CONE_CMD, STRING_CMD, ALLOW_PLURAL |ALLOW_RING} 4011 #endif /* HAVE_FANS */ 3805 4012 ,{NULL, 0, 0, 0, 0, NO_PLURAL |NO_RING} 3806 4013 }; … … 5057 5264 switch ((int)(long)v->data) 5058 5265 { 5059 case INT_CMD: res->data=omStrDup("int"); break; 5060 case POLY_CMD: res->data=omStrDup("poly"); break; 5061 case VECTOR_CMD: res->data=omStrDup("vector"); break; 5062 case STRING_CMD: res->data=omStrDup("string"); break; 5063 case INTVEC_CMD: res->data=omStrDup("intvec"); break; 5064 case IDEAL_CMD: res->data=omStrDup("ideal"); break; 5065 case MATRIX_CMD: res->data=omStrDup("matrix"); break; 5066 case MODUL_CMD: res->data=omStrDup("module"); break; 5067 case MAP_CMD: res->data=omStrDup("map"); break; 5068 case PROC_CMD: res->data=omStrDup("proc"); break; 5069 case RING_CMD: res->data=omStrDup("ring"); break; 5070 case QRING_CMD: res->data=omStrDup("qring"); break; 5071 case INTMAT_CMD: res->data=omStrDup("intmat"); break; 5072 case NUMBER_CMD: res->data=omStrDup("number"); break; 5073 case BIGINT_CMD: res->data=omStrDup("bigint"); break; 5074 case LIST_CMD: res->data=omStrDup("list"); break; 5075 case PACKAGE_CMD: res->data=omStrDup("package"); break; 5076 case LINK_CMD: res->data=omStrDup("link"); break; 5077 case RESOLUTION_CMD:res->data=omStrDup("resolution");break; 5266 case INT_CMD: res->data=omStrDup("int"); break; 5267 case POLY_CMD: res->data=omStrDup("poly"); break; 5268 case VECTOR_CMD: res->data=omStrDup("vector"); break; 5269 case STRING_CMD: res->data=omStrDup("string"); break; 5270 case INTVEC_CMD: res->data=omStrDup("intvec"); break; 5271 case IDEAL_CMD: res->data=omStrDup("ideal"); break; 5272 case MATRIX_CMD: res->data=omStrDup("matrix"); break; 5273 case MODUL_CMD: res->data=omStrDup("module"); break; 5274 case MAP_CMD: res->data=omStrDup("map"); break; 5275 case PROC_CMD: res->data=omStrDup("proc"); break; 5276 case RING_CMD: res->data=omStrDup("ring"); break; 5277 case QRING_CMD: res->data=omStrDup("qring"); break; 5278 case INTMAT_CMD: res->data=omStrDup("intmat"); break; 5279 case NUMBER_CMD: res->data=omStrDup("number"); break; 5280 case BIGINT_CMD: res->data=omStrDup("bigint"); break; 5281 case LIST_CMD: res->data=omStrDup("list"); break; 5282 case PACKAGE_CMD: res->data=omStrDup("package"); break; 5283 case LINK_CMD: res->data=omStrDup("link"); break; 5284 case RESOLUTION_CMD: res->data=omStrDup("resolution");break; 5285 #ifdef HAVE_FANS 5286 case FAN_CMD: res->data=omStrDup("fan");break; 5287 case CONE_CMD: res->data=omStrDup("cone");break; 5288 #endif /* HAVE_FANS */ 5078 5289 case DEF_CMD: 5079 case NONE: res->data=omStrDup("none"); break;5080 default: res->data=omStrDup("?unknown type?");5290 case NONE: res->data=omStrDup("none"); break; 5291 default: res->data=omStrDup("?unknown type?"); 5081 5292 } 5082 5293 return FALSE; … … 5127 5338 return FALSE; 5128 5339 } 5129 5340 #ifdef HAVE_FANS 5341 static BOOLEAN jjDELMCONE1(leftv res, leftv v) 5342 { 5343 /* method for deleting all maximal cones of the given fan; 5344 valid parametrizations: (fan) */ 5345 Fan* f = (Fan*)v->Data(); 5346 f->deleteMaxCones(NULL); 5347 return FALSE; 5348 } 5349 static BOOLEAN jjMAXRAYS1(leftv res, leftv v) 5350 { 5351 /* method for retrieving all maximal rays of the given fan; 5352 valid parametrizations: (fan), 5353 If there are no maximal rays, the method returns a 1x1 5354 matrix with entry 0. Otherwise the returned matrix contains 5355 the maximal rays as column vectors. */ 5356 Fan* f = (Fan*)v->Data(); 5357 intvec* result = NULL; 5358 if (f->getMaxRays() == NULL) 5359 /* return a 1x1 matrix with sole entry zero */ 5360 result = new intvec(1, 1, 0); 5361 else 5362 result = ivCopy(f->getMaxRays()); 5363 res->data = (char*)result; 5364 return FALSE; 5365 } 5366 static BOOLEAN jjMAXRAYS2(leftv res, leftv v) 5367 { 5368 /* method for retrieving all maximal rays of the given cone; 5369 valid parametrizations: (cone), 5370 If there are no maximal rays, the method returns a 1x1 5371 matrix with entry 0. Otherwise the returned matrix contains 5372 the maximal rays as column vectors. */ 5373 Cone* c = (Cone*)v->Data(); 5374 intvec* result = NULL; 5375 if (c->getRays() == NULL) 5376 /* return a 1x1 matrix with sole entry zero */ 5377 result = new intvec(1, 1, 0); 5378 else 5379 { 5380 intvec* indices = c->getRays(); 5381 intvec* maxRays = c->getFan()->getMaxRays(); 5382 result = new intvec(maxRays->rows(), indices->length(), 0); 5383 for (int c = 1; c <= indices->length(); c++) 5384 for (int r = 1; r <= maxRays->rows(); r++) 5385 { 5386 IMATELEM(*result, r, c) = IMATELEM(*maxRays, r, (*indices)[c - 1]); 5387 } 5388 } 5389 res->data = (char*)result; 5390 return FALSE; 5391 } 5392 static BOOLEAN jjFACETNS1(leftv res, leftv v) 5393 { 5394 /* method for retrieving the facet normals of the given fan; 5395 valid parametrizations: (fan), 5396 If there are no facet normals, a 1x1 matrix with entry 0 5397 is returned; otherwise a matrix the columns of which are 5398 the facet normals of the given fan. */ 5399 Fan* f = (Fan*)v->Data(); 5400 intvec* result = NULL; 5401 if (f->getFacetNs() == NULL) 5402 /* return a 1x1 matrix with sole entry zero */ 5403 result = new intvec(1, 1, 0); 5404 else 5405 result = ivCopy(f->getFacetNs()); 5406 res->data = (char*)result; 5407 return FALSE; 5408 } 5409 static BOOLEAN jjFACETNS2(leftv res, leftv v) 5410 { 5411 /* method for retrieving the facet normals of the given cone; 5412 valid parametrizations: (fan), 5413 If there are no facet normals, a 1x1 matrix with entry 0 5414 is returned; otherwise a matrix the columns of which are 5415 the facet normals of the given cone. */ 5416 Cone* c = (Cone*)v->Data(); 5417 intvec* result = NULL; 5418 if (c->getFacetNs() == NULL) 5419 /* return a 1x1 matrix with sole entry zero */ 5420 result = new intvec(1, 1, 0); 5421 else 5422 { 5423 intvec* indices = c->getFacetNs(); 5424 intvec* facetNs = c->getFan()->getFacetNs(); 5425 result = new intvec(facetNs->rows(), indices->length(), 0); 5426 for (int c = 1; c <= indices->length(); c++) 5427 for (int r = 1; r <= facetNs->rows(); r++) 5428 { 5429 IMATELEM(*result, r, c) = IMATELEM(*facetNs, r, (*indices)[c - 1]); 5430 } 5431 } 5432 res->data = (char*)result; 5433 return FALSE; 5434 } 5435 static BOOLEAN jjLINSPACE(leftv res, leftv v) 5436 { 5437 /* method for retrieving the lineality space of the given fan; 5438 valid parametrizations: (fan) */ 5439 Fan* f = (Fan*)v->Data(); 5440 intvec* result = ivCopy(f->getLinSpace()); 5441 res->data = (char*)result; 5442 return FALSE; 5443 } 5444 static BOOLEAN jjMAXCONE1(leftv res, leftv v) 5445 { 5446 /* method for retrieving all maximal cones of the given fan; 5447 valid parametrizations: (fan), 5448 Errors will be invoked in the following cases: 5449 - maximal cones not yet set in the fan; 5450 The method returns a list of cone objects. */ 5451 Fan* f = (Fan*)v->Data(); 5452 lists maxCones = lCopy(f->getMaxCones()); 5453 if (maxCones == NULL) 5454 { 5455 WerrorS("no maximal cones set in the given fan"); 5456 return TRUE; 5457 } 5458 res->data = (char*)maxCones; 5459 return FALSE; 5460 } 5461 static BOOLEAN jjADJACENCY1(leftv res, leftv v) 5462 { 5463 /* method for retrieving the adjacency matrix of the given fan; 5464 valid parametrizations: (fan), 5465 Errors will be invoked in the following cases: 5466 - no maximal cone has been defined yet in the given fan; 5467 The matrix entries have the following meaning: 5468 _[i, j] = 0: the maximal cones with indices i and j are 5469 not adjacent, 5470 = 1: they are adjacent, and the intersection facet 5471 has been stored in the given fan, 5472 = -1: they are adjacent but there is no intersection 5473 facet available */ 5474 Fan* f = (Fan*)v->Data(); 5475 if (f->getMaxCones()->nr + 1 < 1) 5476 { 5477 WerrorS("no maximal cones defined yet"); 5478 return TRUE; 5479 } 5480 intvec* adjacencyMatrix = f->getAdjacency(); 5481 res->data = (char*)adjacencyMatrix; 5482 return FALSE; 5483 } 5484 #endif /* HAVE_FANS */ 5130 5485 static BOOLEAN jjLOAD1(leftv res, leftv v) 5131 5486 { … … 5671 6026 ,{jjLOAD1, LOAD_CMD, NONE, STRING_CMD , ALLOW_PLURAL |ALLOW_RING} 5672 6027 ,{loNewtonP, NEWTONPOLY_CMD, IDEAL_CMD, IDEAL_CMD , ALLOW_PLURAL |ALLOW_RING} 6028 #ifdef HAVE_FANS 6029 ,{jjDELMCONE1, DELMCONE_CMD, NONE, FAN_CMD , ALLOW_PLURAL |ALLOW_RING} 6030 ,{jjMAXRAYS1, MAXRAYS_CMD, INTMAT_CMD, FAN_CMD , ALLOW_PLURAL |ALLOW_RING} 6031 ,{jjMAXRAYS2, MAXRAYS_CMD, INTMAT_CMD, CONE_CMD , ALLOW_PLURAL |ALLOW_RING} 6032 ,{jjFACETNS1, FACETNS_CMD, INTMAT_CMD, FAN_CMD , ALLOW_PLURAL |ALLOW_RING} 6033 ,{jjFACETNS2, FACETNS_CMD, INTMAT_CMD, CONE_CMD , ALLOW_PLURAL |ALLOW_RING} 6034 ,{jjLINSPACE, LINSPACE_CMD, INTMAT_CMD, FAN_CMD , ALLOW_PLURAL |ALLOW_RING} 6035 ,{jjMAXCONE1, MAXCONE_CMD, LIST_CMD, FAN_CMD , ALLOW_PLURAL |ALLOW_RING} 6036 ,{jjADJACENCY1, ADJACENCY_CMD, INTMAT_CMD, FAN_CMD , ALLOW_PLURAL |ALLOW_RING} 6037 #endif /* HAVE_FANS */ 5673 6038 ,{NULL, 0, 0, 0 , NO_PLURAL |NO_RING} 5674 6039 }; … … 6683 7048 return FALSE; 6684 7049 } 7050 #ifdef HAVE_FANS 7051 static BOOLEAN jjSETPROP1(leftv res, leftv u, leftv v, leftv w) 7052 { 7053 /* method for setting fan properties; 7054 valid parametrizations: (fan, string, int), 7055 Errors will be invoked in the following cases: 7056 - string is neither of 'dim', 'complete', 'simplicial', 7057 and 'pure'; 7058 A value 0 means that the property is not fulfilled. 7059 1 means it is. -1 means that the answer is unknown. 7060 Any value other than 0 and 1 will be converted to -1; 7061 except for dim: Here, only negative values will be converted 7062 to -1. */ 7063 Fan* f = (Fan*)u->Data(); 7064 char* prop = (char*)v->Data(); 7065 int value = (int)(long)w->Data(); 7066 7067 if (strcmp(prop, "ambientdim") == 0) 7068 { 7069 Werror("ambient dimension of a fan cannot be set (implicitely given)"); 7070 return TRUE; 7071 } 7072 else if (strcmp(prop, "dim") == 0) 7073 f->setDim(value); 7074 else if (strcmp(prop, "complete") == 0) 7075 f->setComplete(value); 7076 else if (strcmp(prop, "simplicial") == 0) 7077 f->setSimplicial(value); 7078 else if (strcmp(prop, "pure") == 0) 7079 f->setPure(value); 7080 else 7081 { 7082 Werror("unexpected fan property '%s'", prop); 7083 return TRUE; 7084 } 7085 7086 return FALSE; 7087 } 7088 static BOOLEAN jjSETPROP2(leftv res, leftv u, leftv v, leftv w) 7089 { 7090 /* method for setting cone properties; 7091 valid parametrizations: (fan, string, int), 7092 Errors will be invoked in the following cases: 7093 - string is not 'dim'; 7094 Any negative value will be converted to -1 signaling 7095 that the dim is unknown. */ 7096 Cone* c = (Cone*)u->Data(); 7097 char* prop = (char*)v->Data(); 7098 int value = (int)(long)w->Data(); 7099 7100 if (strcmp(prop, "dim") == 0) 7101 c->setDim(value); 7102 else 7103 { 7104 Werror("unexpected cone property '%s'", prop); 7105 return TRUE; 7106 } 7107 7108 return FALSE; 7109 } 7110 static BOOLEAN jjADJACENCY2(leftv res, leftv u, leftv v, leftv w) 7111 { 7112 /* method for retrieving the adjacency information concerning 7113 two maximal cones of the given fan; 7114 valid parametrizations: (fan, int, int), 7115 Errors will be invoked in the following cases: 7116 - a maximal cone index is out of range [1..m], 7117 where m is the number of maximal cones in the given fan, 7118 - the two specified maximal cones are not adjacent, 7119 - the two specified maximal cones are adjacent but the 7120 intersection facet has not been stored in the fan */ 7121 Fan* f = (Fan*)u->Data(); 7122 int maxCone1 = (int)(long)v->Data(); 7123 int maxCone2 = (int)(long)w->Data(); 7124 int nMaxCones = f->getMaxCones()->nr + 1; 7125 if ((maxCone1 < 1) || (nMaxCones < maxCone1)) 7126 { 7127 Werror("1st index %d out of range [1..%d]", 7128 maxCone1, nMaxCones); 7129 return TRUE; 7130 } 7131 if ((maxCone2 < 1) || (nMaxCones < maxCone2)) 7132 { 7133 Werror("2nd index %d out of range [1..%d]", 7134 maxCone2, nMaxCones); 7135 return TRUE; 7136 } 7137 Cone* result = (Cone*)f->getAdjacencyFacet(maxCone1, maxCone2); 7138 if (result->isNoAdj()) 7139 { 7140 WerrorS("specified cones are not adjacent"); 7141 return TRUE; 7142 } 7143 if (result->isNoFacet()) 7144 { 7145 Werror("specified cones are adjacent, %s", 7146 "but there is no facet information available"); 7147 return TRUE; 7148 } 7149 res->data = (char*)result; 7150 return FALSE; 7151 } 7152 #endif /* HAVE_FANS */ 6685 7153 static BOOLEAN jjSTD_HILB_W(leftv res, leftv u, leftv v, leftv w) 6686 7154 { … … 6824 7292 ,{nuLagSolve, LAGSOLVE_CMD,LIST_CMD, POLY_CMD, INT_CMD, INT_CMD , NO_PLURAL |NO_RING} 6825 7293 ,{nuVanderSys, VANDER_CMD, POLY_CMD, IDEAL_CMD, IDEAL_CMD, INT_CMD , NO_PLURAL |NO_RING} 7294 #ifdef HAVE_FANS 7295 ,{jjSETPROP1, SETPROP_CMD,NONE, FAN_CMD, STRING_CMD, INT_CMD , NO_PLURAL |NO_RING} 7296 ,{jjSETPROP2, SETPROP_CMD,NONE, CONE_CMD, STRING_CMD, INT_CMD , NO_PLURAL |NO_RING} 7297 ,{jjADJACENCY2, ADJACENCY_CMD,CONE_CMD, FAN_CMD, INT_CMD, INT_CMD , NO_PLURAL |NO_RING} 7298 #endif /* HAVE_FANS */ 6826 7299 ,{NULL, 0, 0, 0, 0, 0 , NO_PLURAL |NO_RING} 6827 7300 }; … … 7306 7779 return FALSE; 7307 7780 } 7781 #ifdef HAVE_FANS 7782 static BOOLEAN jjADDADJ(leftv res, leftv v) 7783 { 7784 /* method for adding one or more adjacencies between pairs of 7785 maximal cones of the given fan; 7786 valid parametrizations: (fan, int, int, cone), 7787 (fan, int, int, 0), or 7788 (fan, intvec, intvec, list), 7789 where in the latter case, the list entries must either be 7790 of type Cone* or the integer zero; 7791 Errors will be invoked in the following cases: 7792 - we have none of the above parametrizations, 7793 - intvecs and list have different lengths, 7794 - int's resp. intvec entries are out of range [1..m], where 7795 m is the number of maximal cones in the given fan, 7796 - int's are equal resp. intvec entries at same positions 7797 are equal */ 7798 if ((v == NULL) || (v->next == NULL) || 7799 (v->next->next == NULL) || (v->next->next->next == NULL) || 7800 (v->next->next->next->next != NULL)) 7801 { 7802 WerrorS("expected exactly four arguments as input"); 7803 return TRUE; 7804 } 7805 Fan* f = NULL; 7806 int i; intvec* iv; 7807 int j; intvec* jv; 7808 Cone* c = NULL; lists L; 7809 leftv x = v; bool listCase = false; 7810 if (x->Typ() == FAN_CMD) 7811 f = (Fan*)x->Data(); 7812 else 7813 { 7814 WerrorS("expected fan as 1st argument"); 7815 return TRUE; 7816 } 7817 x = x->next; 7818 if (x->Typ() == INT_CMD) 7819 i = (int)(long)x->Data(); 7820 else if (x->Typ() == INTVEC_CMD) 7821 { 7822 iv = (intvec*)x->Data(); listCase = true; 7823 } 7824 else 7825 { 7826 WerrorS("expected int or intvec as 2nd argument"); 7827 return TRUE; 7828 } 7829 x = x->next; 7830 if (listCase) 7831 { 7832 if ((x->Typ() != INTVEC_CMD) || ((x->next->Typ() != LIST_CMD))) 7833 { 7834 Werror("expected (fan, int, int, cone/0) %s", 7835 "or (fan, intvec, intvec, list)"); 7836 return TRUE; 7837 } 7838 else jv = (intvec*)x->Data(); 7839 x = x->next; 7840 L = (lists)x->Data(); 7841 } 7842 else 7843 { 7844 if ((x->Typ() != INT_CMD) || 7845 ((x->next->Typ() != CONE_CMD) && (x->next->Typ() != INT_CMD))) 7846 { 7847 Werror("expected (fan, int, int, cone/0) %s", 7848 "or (fan, intvec, intvec, list)"); 7849 return TRUE; 7850 } 7851 else j = (int)(long)x->Data(); 7852 x = x->next; 7853 if ((x->Typ() == INT_CMD) && ((int)(long)x->Data() != 0)) 7854 { 7855 WerrorS("expected (fan, int, int, cone/0)"); 7856 return TRUE; 7857 } 7858 if (x->Typ() != INT_CMD) c = (Cone*)x->Data(); 7859 } 7860 int n = f->getMaxCones()->nr + 1; 7861 if (!listCase) 7862 { 7863 if ((i < 1) || (n < i)) 7864 { Werror("2nd argument %d out of range [1..%d]", i, n); } 7865 if ((j < 1) || (n < j)) 7866 { Werror("3rd argument %d out of range [1..%d]", j, n); } 7867 if (i == j) 7868 { WerrorS("2nd and 3rd argument are equal"); } 7869 f->addAdjacency(i, j, c); 7870 } 7871 else 7872 { 7873 if (iv->length() != jv->length()) 7874 WerrorS("2nd and 3rd argument have different lengths"); 7875 if (iv->length() != L->nr + 1) 7876 WerrorS("2nd and 4th argument have different lengths"); 7877 for (i = 0; i < iv->length(); i++) 7878 { 7879 if (((*iv)[i] < 1) || (n < (*iv)[i])) 7880 Werror("index %d at position %d in 2nd argument out of range [1..%d]", 7881 (*iv)[i], i + 1, n); 7882 } 7883 for (j = 0; j < jv->length(); j++) 7884 { 7885 if (((*jv)[j] < 1) || (n < (*jv)[j])) 7886 Werror("index %d at position %d in 3rd argument out of range [1..%d]", 7887 (*jv)[j], j + 1, n); 7888 if ((*iv)[j] == (*jv)[j]) 7889 Werror("indices in 2nd and 3rd argument at position %d equal", j + 1); 7890 } 7891 for (i = 0; i < L->nr + 1; i++) 7892 { 7893 if ((L->m[i].Typ() != CONE_CMD) && 7894 ((L->m[i].Typ() != INT_CMD) || ((int)(long)L->m[i].Data() != 0))) 7895 Werror("entry at position %d in 4th argument neither cone nor int 0", 7896 i + 1); 7897 } 7898 f->addAdjacencies(iv, jv, L); 7899 } 7900 return FALSE; 7901 } 7902 #endif /* HAVE_FANS */ 7308 7903 static BOOLEAN jjINTVEC_PL(leftv res, leftv v) 7309 7904 { … … 7818 8413 ,{jjCALL3ARG, STD_CMD, IDEAL_CMD, 3 , NO_PLURAL |ALLOW_RING} 7819 8414 ,{jjSTD_HILB_WP, STD_CMD, IDEAL_CMD, 4 , NO_PLURAL |ALLOW_RING} 8415 #ifdef HAVE_FANS 8416 ,{jjADDADJ, ADDADJ_CMD, NONE, -2 , NO_PLURAL |NO_RING} 8417 #endif /* HAVE_FANS */ 7820 8418 ,{NULL, 0, 0, 0 , NO_PLURAL |NO_RING} 7821 8419 }; -
Singular/ipassign.cc
r8e7db4 r4f80bb 40 40 #include <Singular/ipshell.h> 41 41 #include <kernel/sca.h> 42 #include <Singular/Fan.h> 43 #include <Singular/Cone.h> 42 44 43 45 /*=================== proc =================*/ … … 319 321 return FALSE; 320 322 } 323 #ifdef HAVE_FANS 324 static BOOLEAN jiA_FAN(leftv res, leftv a, Subexpr e) 325 { 326 if (e != NULL) 327 { 328 WerrorS("unexpectedly encountered subexpression in jiA_FAN"); 329 return TRUE; 330 } 331 if (res->data!=NULL) 332 { 333 Fan* fff = (Fan*)res->data; 334 res->data = NULL; 335 delete fff; 336 } 337 Fan* fff = (Fan*)a->CopyD(FAN_CMD); 338 res->data=(void*)fff; 339 return FALSE; 340 } 341 static BOOLEAN jiA_CONE(leftv res, leftv a, Subexpr e) 342 { 343 if (e != NULL) 344 { 345 WerrorS("unexpectedly encountered subexpression in jiA_CONE"); 346 return TRUE; 347 } 348 if (res->data!=NULL) 349 { 350 Cone* ccc = (Cone*)res->data; 351 res->data = NULL; 352 delete ccc; 353 } 354 Cone* ccc = (Cone*)a->CopyD(CONE_CMD); 355 res->data=(void*)ccc; 356 return FALSE; 357 } 358 #endif /* HAVE_FANS */ 321 359 static BOOLEAN jiA_POLY(leftv res, leftv a,Subexpr e) 322 360 { … … 697 735 ,{jiA_LINK, LINK_CMD, STRING_CMD } 698 736 ,{jiA_LINK, LINK_CMD, LINK_CMD } 737 #ifdef HAVE_FANS 738 ,{jiA_FAN, FAN_CMD, FAN_CMD } 739 ,{jiA_CONE, CONE_CMD, CONE_CMD } 740 #endif /* HAVE_FANS */ 699 741 ,{jiA_PACKAGE, PACKAGE_CMD, PACKAGE_CMD } 700 742 ,{NULL, 0, 0 } … … 1346 1388 return b; 1347 1389 } 1390 #ifdef HAVE_FANS 1391 BOOLEAN jjAssignFan(leftv l, leftv r) 1392 { 1393 /* method for generating a fan; 1394 valid parametrizations: (intmat or 0, intmat or 0, intmat or 0), 1395 The intmat's capture the maximal rays, facet normals and the 1396 lineality space of the new fan. 1397 Any of the arguments may be the int 0. But either the 1st or 1398 2nd argument must be an intmat, thus not both simultaneously 1399 the int 0. 1400 Errors will be invoked in the following cases: 1401 - 1st and 2nd argument simultaneously the int 0, 1402 - numbers of rows in 1st, 2nd, and/or 3rd argument intmat 1403 disagree */ 1404 intvec* maxRays = NULL; /* maximal rays */ 1405 intvec* facetNs = NULL; /* facet normals */ 1406 intvec* linSpace = NULL; /* lineality space */ 1407 1408 leftv x = r; 1409 if (x->Typ() == INTMAT_CMD) maxRays = (intvec*)x->Data(); 1410 else if ((x->Typ() != INT_CMD) || 1411 ((x->Typ() == INT_CMD) && ((int)(long)x->Data() != 0))) 1412 { 1413 WerrorS("expected '0' or an intmat as 1st argument"); 1414 return TRUE; 1415 } 1416 x = x->next; 1417 if (x->Typ() == INTMAT_CMD) facetNs = (intvec*)x->Data(); 1418 else if ((x->Typ() != INT_CMD) || 1419 ((x->Typ() == INT_CMD) && ((int)(long)x->Data() != 0))) 1420 { 1421 WerrorS("expected '0' or an intmat as 2nd argument"); 1422 return TRUE; 1423 } 1424 if ((maxRays == NULL) && (facetNs == NULL)) 1425 { 1426 WerrorS("expected 1st or 2nd argument to be a valid intmat"); 1427 return TRUE; 1428 } 1429 x = x->next; 1430 if (x->Typ() == INTMAT_CMD) linSpace = (intvec*)x->Data(); 1431 else if ((x->Typ() != INT_CMD) || 1432 ((x->Typ() == INT_CMD) && ((int)(long)x->Data() != 0))) 1433 { 1434 WerrorS("expected '0' or an intmat as 3rd argument"); 1435 return TRUE; 1436 } 1437 if ((maxRays != NULL) && (facetNs != NULL) && 1438 (maxRays->rows() != facetNs->rows())) 1439 { 1440 WerrorS("vector space dims do not agree (1st vs. 2nd argument)"); 1441 return TRUE; 1442 } 1443 if ((maxRays != NULL) && (linSpace != NULL) && 1444 (maxRays->rows() != linSpace->rows())) 1445 { 1446 WerrorS("vector space dims do not agree (1st vs. 3rd argument)"); 1447 return TRUE; 1448 } 1449 if ((facetNs != NULL) && (linSpace != NULL) && 1450 (facetNs->rows() != linSpace->rows())) 1451 { 1452 WerrorS("vector space dims do not agree (2nd vs. 3rd argument)"); 1453 return TRUE; 1454 } 1455 1456 if (IDDATA((idhdl)l->data) != NULL) 1457 { 1458 Fan* fff = (Fan*)IDDATA((idhdl)l->data); 1459 delete fff; 1460 } 1461 Fan* fff = new Fan(maxRays, facetNs, linSpace); 1462 IDDATA((idhdl)l->data) = (char*)fff; 1463 return FALSE; 1464 } 1465 BOOLEAN jjAssignCone(leftv l, leftv r) 1466 { 1467 /* method for generating a cone; 1468 valid parametrizations: (fan, intvec or 0, intvec or 0), 1469 The intvec's capture indices of the maximal rays resp. 1470 facet normals of the given fan. 1471 2nd and 3rd argument may be the int 0, but not simultaneously. 1472 Errors will be invoked in the following cases: 1473 - 2nd and 3rd argument simultaneously the int 0, 1474 - invalid index for maximal row or facet normal */ 1475 Fan* fff = NULL; /* the Fan where maximal rays and/or 1476 facet normals are stored */ 1477 intvec* maxRays = NULL; /* indices of maximal rays */ 1478 intvec* facetNs = NULL; /* indices of facet normals */ 1479 1480 leftv x = r; 1481 if (x->Typ() != FAN_CMD) 1482 { 1483 WerrorS("expected a fan as 1st argument"); 1484 return TRUE; 1485 } 1486 else 1487 { 1488 fff = (Fan*)x->Data(); 1489 } 1490 x = x->next; 1491 if (x->Typ() == INTVEC_CMD) maxRays = (intvec*)x->Data(); 1492 else if ((x->Typ() != INT_CMD) || 1493 ((x->Typ() == INT_CMD) && ((int)(long)x->Data() != 0))) 1494 { 1495 WerrorS("expected '0' or an intvec as 2nd argument"); 1496 return TRUE; 1497 } 1498 x = x->next; 1499 if (x->Typ() == INTVEC_CMD) facetNs = (intvec*)x->Data(); 1500 else if ((x->Typ() != INT_CMD) || 1501 ((x->Typ() == INT_CMD) && ((int)(long)x->Data() != 0))) 1502 { 1503 WerrorS("expected '0' or an intvec as 3rd argument"); 1504 return TRUE; 1505 } 1506 if ((maxRays == NULL) && (facetNs == NULL)) 1507 { 1508 WerrorS("expected 2nd or 3rd argument to be a valid intvec"); 1509 return TRUE; 1510 } 1511 1512 int check = Cone::checkConeData(fff, maxRays, facetNs); 1513 if (check > 0) 1514 { 1515 Werror("invalid index %d for maximal ray at position %d", 1516 (int)(long)((*maxRays)[check - 1]), check); 1517 return TRUE; 1518 } 1519 else if (check < 0) 1520 { 1521 char h[150]; 1522 sprintf(h, "invalid index %d for facet normal at position %d", 1523 (int)(long)((*facetNs)[-check - 1]), -check); 1524 WerrorS(h); 1525 return TRUE; 1526 } 1527 1528 if (IDDATA((idhdl)l->data) != NULL) 1529 { 1530 Cone* ccc = (Cone*)IDDATA((idhdl)l->data); 1531 delete ccc; 1532 } 1533 Cone* ccc = new Cone(fff, maxRays, facetNs); 1534 IDDATA((idhdl)l->data) = (char*)ccc; 1535 return FALSE; 1536 } 1537 #endif /* HAVE_FANS */ 1348 1538 BOOLEAN iiAssign(leftv l, leftv r) 1349 1539 { … … 1466 1656 } 1467 1657 } 1658 #ifdef HAVE_FANS 1659 else if ((lt == FAN_CMD) && (rl == 3)) 1660 { 1661 return jjAssignFan(l, r); 1662 } 1663 else if ((lt == CONE_CMD) && (rl == 3)) 1664 { 1665 return jjAssignCone(l, r); 1666 } 1667 #endif /* HAVE_FANS */ 1468 1668 if (rt==NONE) rt=r->Typ(); 1469 1669 } -
Singular/ipid.cc
r8e7db4 r4f80bb 29 29 #include <kernel/syz.h> 30 30 #include <Singular/ipid.h> 31 #include <Singular/Fan.h> 32 #include <Singular/Cone.h> 31 33 32 34 #ifdef HAVE_DYNAMIC_LOADING … … 464 466 syKillComputation((syStrategy)IDDATA(h),r); 465 467 } 468 #ifdef HAVE_FANS 469 // fan ------------------------------------------------------------- 470 else if (IDTYP(h) == FAN_CMD) 471 { 472 Fan* fff = (Fan*)IDDATA(h); 473 delete fff; 474 IDDATA(h) = NULL; 475 } 476 // cone ------------------------------------------------------------ 477 else if (IDTYP(h) == CONE_CMD) 478 { 479 Cone* ccc = (Cone*)IDDATA(h); 480 delete ccc; 481 IDDATA(h) = NULL; 482 } 483 #endif /* HAVE_FANS */ 466 484 #ifdef TEST 467 485 else if ((IDTYP(h)!= INT_CMD) -
Singular/misc_ip.h
r8e7db4 r4f80bb 25 25 #define MISC_H 26 26 27 #include < si_gmp.h>27 #include <kernel/si_gmp.h> 28 28 #include <kernel/structs.h> 29 29 -
Singular/subexpr.cc
r8e7db4 r4f80bb 38 38 #include <Singular/attrib.h> 39 39 #include <Singular/subexpr.h> 40 #include <Singular/Fan.h> 41 #include <Singular/Cone.h> 40 42 41 43 omBin sSubexpr_bin = omGetSpecBin(sizeof(_ssubexpr)); … … 153 155 ::Print("%d",(int)(long)d); 154 156 break; 157 #ifdef HAVE_FANS 158 case CONE_CMD: 159 case FAN_CMD: 160 PrintNSpaces(spaces); 161 { 162 char *s = String(); 163 ::PrintS(s); 164 omFree(s); 165 } 166 break; 167 #endif /* HAVE_FANS */ 155 168 case PROC_CMD: 156 169 { … … 490 503 return d; 491 504 } 505 #ifdef HAVE_FANS 506 case FAN_CMD: 507 { 508 Fan* fff = (Fan*)d; 509 Fan* ggg = new Fan(*fff); 510 return ggg; 511 } 512 case CONE_CMD: 513 { 514 Cone* ccc = (Cone*)d; 515 Cone* ggg = new Cone(*ccc); 516 return ggg; 517 } 518 #endif /* HAVE_FANS */ 492 519 case RESOLUTION_CMD: 493 520 return (void*)syCopy((syStrategy)d); … … 776 803 } 777 804 return s; 778 805 #ifdef HAVE_FANS 806 case FAN_CMD: 807 { 808 Fan* fff = (Fan*)d; 809 s = fff->toString(); 810 char* ns = (char*) omAlloc(strlen(s) + 10); 811 sprintf(ns, "%s", s); 812 omCheckAddr(ns); 813 omFree(s); 814 return ns; 815 } 816 case CONE_CMD: 817 { 818 Cone* ccc = (Cone*)d; 819 s = ccc->toString(); 820 char* ns = (char*) omAlloc(strlen(s) + 10); 821 sprintf(ns, "%s", s); 822 omCheckAddr(ns); 823 omFree(s); 824 return ns; 825 } 826 #endif /* HAVE_FANS */ 779 827 case RESOLUTION_CMD: 780 828 { -
Singular/tok.h
r8e7db4 r4f80bb 43 43 ALIAS_CMD = UMINUS + 15, 44 44 ATTRIB_CMD, 45 #ifdef HAVE_FANS 46 ADDADJ_CMD, 47 ADDMCONE_CMD, 48 ADJACENCY_CMD, 49 #endif /* HAVE_FANS */ 45 50 BAREISS_CMD, 46 51 BIGINT_CMD, … … 52 57 CLOSE_CMD, 53 58 COLS_CMD, 59 #ifdef HAVE_FANS 60 CONE_CMD, 61 #endif /* HAVE_FANS */ 54 62 CONTENT_CMD, 55 63 COUNT_CMD, … … 58 66 DEFINED_CMD, 59 67 DELETE_CMD, 68 #ifdef HAVE_FANS 69 DELMCONE_CMD, 70 #endif /* HAVE_FANS */ 60 71 DET_CMD, 61 72 DUMP_CMD, … … 67 78 EXTGCD_CMD, 68 79 FAC_CMD, 80 #ifdef HAVE_FANS 81 FACETNS_CMD, 82 FAN_CMD, 83 #endif /* HAVE_FANS */ 69 84 FIND_CMD, 70 85 FACSTD_CMD, … … 75 90 GCD_CMD, 76 91 GETDUMP_CMD, 92 #ifdef HAVE_FANS 93 GETPROP_CMD, 94 #endif /* HAVE_FANS */ 77 95 HIGHCORNER_CMD, 78 96 HRES_CMD, … … 92 110 LAGSOLVE_CMD, 93 111 LINK_CMD, 112 #ifdef HAVE_FANS 113 LINSPACE_CMD, 114 #endif /* HAVE_FANS */ 94 115 LIST_CMD, 95 116 LOAD_CMD, … … 98 119 LUI_CMD, 99 120 LUS_CMD, 121 #ifdef HAVE_FANS 122 MAXCONE_CMD, 123 MAXRAYS_CMD, 124 #endif /* HAVE_FANS */ 100 125 MEMORY_CMD, 101 126 MONITOR_CMD, … … 129 154 RINGLIST_CMD, 130 155 ROWS_CMD, 156 #ifdef HAVE_FANS 157 SETPROP_CMD, 158 #endif /* HAVE_FANS */ 131 159 SIMPLEX_CMD, 132 160 SLIM_GB_CMD,
Note: See TracChangeset
for help on using the changeset viewer.