Changeset 0aaff9 in git
- Timestamp:
- Feb 22, 2021, 6:56:41 PM (3 years ago)
- Branches:
- (u'spielwiese', '5b153614cbc72bfa198d75b1e9e33dab2645d9fe')
- Children:
- 2d0b446076a13e01d8341c20186f907b41259873
- Parents:
- b1d05db4b7eb9b213112ad9f8d89f45fd8513c79
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/iparith.cc
rb1d05d r0aaff9 6715 6715 id_Delete((ideal *)&I,currRing); 6716 6716 res->data = (char *)m; 6717 return FALSE; 6718 } 6719 static BOOLEAN jjMODULO3(leftv res, leftv u, leftv v, leftv w) 6720 { 6721 if (w->rtyp!=IDHDL) return TRUE; /* idhdhl required */ 6722 intvec *w_u=(intvec *)atGet(u,"isHomog",INTVEC_CMD); 6723 tHomog hom=testHomog; 6724 if (w_u!=NULL) 6725 { 6726 w_u=ivCopy(w_u); 6727 hom=isHomog; 6728 } 6729 intvec *w_v=(intvec *)atGet(v,"isHomog",INTVEC_CMD); 6730 if (w_v!=NULL) 6731 { 6732 w_v=ivCopy(w_v); 6733 hom=isHomog; 6734 } 6735 if ((w_u!=NULL) && (w_v==NULL)) 6736 w_v=ivCopy(w_u); 6737 if ((w_v!=NULL) && (w_u==NULL)) 6738 w_u=ivCopy(w_v); 6739 ideal u_id=(ideal)u->Data(); 6740 ideal v_id=(ideal)v->Data(); 6741 if (w_u!=NULL) 6742 { 6743 if ((*w_u).compare((w_v))!=0) 6744 { 6745 WarnS("incompatible weights"); 6746 delete w_u; w_u=NULL; 6747 hom=testHomog; 6748 } 6749 else 6750 { 6751 if ((!idTestHomModule(u_id,currRing->qideal,w_v)) 6752 || (!idTestHomModule(v_id,currRing->qideal,w_v))) 6753 { 6754 WarnS("wrong weights"); 6755 delete w_u; w_u=NULL; 6756 hom=testHomog; 6757 } 6758 } 6759 } 6760 idhdl h=(idhdl)w->data; 6761 res->data = (char *)idModulo(u_id,v_id ,hom,&w_u, &(h->data.umatrix)); 6762 if (w_u!=NULL) 6763 { 6764 atSet(res,omStrDup("isHomog"),w_u,INTVEC_CMD); 6765 } 6766 delete w_v; 6767 //if (TEST_OPT_RETURN_SB) setFlag(res,FLAG_STD); 6717 6768 return FALSE; 6718 6769 } -
Singular/iparith.inc
rb1d05d r0aaff9 687 687 // operation: matrix (module, int, int) -> matrix 688 688 // operation: matrix (matrix, int, int) -> matrix 689 // operation: modulo (ideal, ideal, matrix) -> module 690 // operation: modulo (module, module, matrix) -> module 689 691 // operation: smatrix (module, int, int) -> smatrix 690 692 // operation: smatrix (smatrix, int, int) -> smatrix … … 1485 1487 iiArithAddCmd("mod", 0, 37, '/', 124); 1486 1488 iiArithAddCmd("module", 0, 278, 313, 125); 1487 iiArithAddCmd("modulo", 0, 451, CMD_2 , 126);1489 iiArithAddCmd("modulo", 0, 451, CMD_23, 126); 1488 1490 iiArithAddCmd("monitor", 0, 452, CMD_12, 127); 1489 1491 iiArithAddCmd("monomial", 0, 292, CMD_1, 128); -
Singular/table.h
rb1d05d r0aaff9 850 850 ,{D(jjMATRIX_Mo), MATRIX_CMD, MATRIX_CMD, MODUL_CMD, INT_CMD, INT_CMD, ALLOW_NC |ALLOW_RING} 851 851 ,{D(jjMATRIX_Ma), MATRIX_CMD, MATRIX_CMD, MATRIX_CMD, INT_CMD, INT_CMD, ALLOW_NC |ALLOW_RING} 852 ,{D(jjMODULO3), MODULO_CMD, MODUL_CMD, IDEAL_CMD, IDEAL_CMD, MATRIX_CMD, ALLOW_NC |ALLOW_RING} 853 ,{D(jjMODULO3), MODULO_CMD, MODUL_CMD, MODUL_CMD, MODUL_CMD, MATRIX_CMD, ALLOW_NC |ALLOW_RING} 852 854 ,{D(jjSMATRIX_Mo), SMATRIX_CMD,SMATRIX_CMD,MODUL_CMD, INT_CMD, INT_CMD, ALLOW_NC |ALLOW_RING} 853 855 ,{D(jjSMATRIX_Mo), SMATRIX_CMD,SMATRIX_CMD,SMATRIX_CMD,INT_CMD, INT_CMD, ALLOW_NC |ALLOW_RING} … … 1114 1116 { "mod", 0, '%' , MULDIV_OP}, 1115 1117 { "module", 0, MODUL_CMD , RING_DECL_LIST}, 1116 { "modulo", 0, MODULO_CMD , CMD_2 },1118 { "modulo", 0, MODULO_CMD , CMD_23}, 1117 1119 { "monitor", 0, MONITOR_CMD , CMD_12}, 1118 1120 { "monomial", 0, MONOM_CMD , CMD_1}, -
kernel/ideals.cc
rb1d05d r0aaff9 2284 2284 */ 2285 2285 //ideal idModulo (ideal h2,ideal h1) 2286 ideal idModulo (ideal h2,ideal h1, tHomog hom, intvec ** w )2286 ideal idModulo (ideal h2,ideal h1, tHomog hom, intvec ** w, matrix *T) 2287 2287 { 2288 2288 intvec *wtmp=NULL; 2289 if (T!=NULL) idDelete((ideal*)T); 2289 2290 2290 2291 int i,k,rk,flength=0,slength,length; … … 2405 2406 2406 2407 idTest(s_temp); 2407 unsigned save_opt ;2408 unsigned save_opt,save_opt2; 2408 2409 SI_SAVE_OPT1(save_opt); 2410 SI_SAVE_OPT2(save_opt2); 2409 2411 si_opt_1 |= Sy_bit(OPT_REDTAIL_SYZ); 2410 2412 ideal s_temp1 = kStd(s_temp,currRing->qideal,hom,&wtmp,NULL,length); 2411 2413 SI_RESTORE_OPT1(save_opt); 2414 SI_RESTORE_OPT2(save_opt2); 2412 2415 2413 2416 //if (wtmp!=NULL) Print("output weights:");wtmp->show(1);PrintLn(); … … 2421 2424 if (wtmp!=NULL) delete wtmp; 2422 2425 2423 for (i=0;i<IDELEMS(s_temp1);i++) 2424 { 2425 if ((s_temp1->m[i]!=NULL) 2426 && (((int)pGetComp(s_temp1->m[i]))<=length)) 2427 { 2428 p_Delete(&(s_temp1->m[i]),currRing); 2429 } 2430 else 2431 { 2432 p_Shift(&(s_temp1->m[i]),-length,currRing); 2426 if (T==NULL) 2427 { 2428 for (i=0;i<IDELEMS(s_temp1);i++) 2429 { 2430 if (s_temp1->m[i]!=NULL) 2431 { 2432 if (((int)pGetComp(s_temp1->m[i]))<=length) 2433 { 2434 p_Delete(&(s_temp1->m[i]),currRing); 2435 } 2436 else 2437 { 2438 p_Shift(&(s_temp1->m[i]),-length,currRing); 2439 } 2440 } 2441 } 2442 } 2443 else 2444 { 2445 *T=mpNew(IDELEMS(s_temp1),IDELEMS(h2)); 2446 for (i=0;i<IDELEMS(s_temp1);i++) 2447 { 2448 if (s_temp1->m[i]!=NULL) 2449 { 2450 if (((int)pGetComp(s_temp1->m[i]))<=length) 2451 { 2452 do 2453 { 2454 p_LmDelete(&(s_temp1->m[i]),currRing); 2455 } while((int)pGetComp(s_temp1->m[i])<=length); 2456 poly q = prMoveR( s_temp1->m[i], syz_ring,orig_ring); 2457 s_temp1->m[i] = NULL; 2458 if (q!=NULL) 2459 { 2460 q=pReverse(q); 2461 do 2462 { 2463 poly p = q; 2464 long t=pGetComp(p); 2465 pIter(q); 2466 pNext(p) = NULL; 2467 pSetComp(p,0); 2468 pSetmComp(p); 2469 MATELEM(*T,(int)t-length,i) = pAdd(MATELEM(*T,(int)t-k,i),p); 2470 } while (q != NULL); 2471 } 2472 } 2473 else 2474 { 2475 p_Shift(&(s_temp1->m[i]),-length,currRing); 2476 } 2477 } 2433 2478 } 2434 2479 } -
kernel/ideals.h
rb1d05d r0aaff9 189 189 } 190 190 191 ideal idModulo (ideal h1,ideal h2, tHomog h=testHomog, intvec ** w=NULL );191 ideal idModulo (ideal h1,ideal h2, tHomog h=testHomog, intvec ** w=NULL, matrix *T=NULL); 192 192 matrix idCoeffOfKBase(ideal arg, ideal kbase, poly how); 193 193
Note: See TracChangeset
for help on using the changeset viewer.