Changeset e11614 in git
- Timestamp:
- Mar 10, 2021, 8:00:52 PM (3 years ago)
- Branches:
- (u'fieker-DuVal', '117eb8c30fc9e991c4decca4832b1d19036c4c65')(u'spielwiese', '98550b669234b32be762076c32b3be2c35188ac4')
- Children:
- 081b792212e031bf0548c6607026c0100ee49bd6
- Parents:
- cb0364d75bce40ce8de602323894845b3695cbb5f7951d3b3bfea118917f4155803e30bac0dc2b16
- Files:
-
- 1 added
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
.gitignore
rf7951d re11614 79 79 /Singular/feOptGen 80 80 /Singular/gftables 81 /Singular/libparse 81 82 /Singular/mpsr_Tok.xx 82 83 /Singular/ndbm.dl_og -
Makefile.am
rcb0364 re11614 13 13 install-data-local: 14 14 if test -e $(srcdir)/doc/doc.tbz2; then\ 15 (cat ${top_srcdir}/doc/doc.tbz2| (cd $(DESTDIR)$(datadir)/singular; tar jxf -));\15 (cat ${top_srcdir}/doc/doc.tbz2| (cd $(DESTDIR)$(datadir)/singular; tar -jx --no-same-owner -f -));\ 16 16 mkdir $(DESTDIR)$(datadir)/info;\ 17 17 mkdir $(DESTDIR)$(datadir)/doc;\ -
Singular/fglm.cc
rcb0364 re11614 348 348 } 349 349 350 ideal fglmQuot( ideal first, poly second ) 351 { 352 FglmState state = FglmOk; 353 354 ideal sourceIdeal = first; 355 poly quot = second; 356 ideal destIdeal = NULL; 357 358 state = fglmIdealcheck( sourceIdeal ); 359 if ( state == FglmOk ) 360 { 361 if ( quot == NULL ) state= FglmPolyIsZero; 362 else if ( pIsConstant( quot ) ) state= FglmPolyIsOne; 363 } 364 365 if ( state == FglmOk ) 366 { 367 if ( fglmquot( sourceIdeal, quot, destIdeal ) == FALSE ) 368 state= FglmNotReduced; 369 } 370 371 switch (state) 372 { 373 case FglmOk: 374 break; 375 case FglmHasOne: 376 destIdeal= idInit(1,1); 377 (destIdeal->m)[0]= pOne(); 378 state= FglmOk; 379 break; 380 case FglmNotZeroDim: 381 WerrorS( "The ideal has to be 0-dimensional" ); 382 destIdeal= idInit(1,1); 383 break; 384 case FglmNotReduced: 385 WerrorS( "The poly has to be reduced" ); 386 destIdeal= idInit(1,1); 387 break; 388 case FglmPolyIsOne: 389 int k; 390 destIdeal= idInit( IDELEMS(sourceIdeal), 1 ); 391 for ( k= IDELEMS( sourceIdeal )-1; k >=0; k-- ) 392 (destIdeal->m)[k]= pCopy( (sourceIdeal->m)[k] ); 393 state= FglmOk; 394 break; 395 case FglmPolyIsZero: 396 destIdeal= idInit(1,1); 397 (destIdeal->m)[0]= pOne(); 398 state= FglmOk; 399 break; 400 default: 401 destIdeal= idInit(1,1); 402 } 403 404 return destIdeal; 405 } 406 350 407 // fglmQuotProc: Calculate I:f with FGLM methods. 351 408 // Checks the input-data, and calls fglmquot (see fglmzero.cc). … … 415 472 } // fglmQuotProt 416 473 417 // The main function for finduni(). 418 // Checks the input-data, and calls FindUnivariateWrapper (see fglmzero.cc). 419 // Returns an ideal containing the univariate Polynomials or 0 if an error 420 // has occoured. 421 BOOLEAN 422 findUniProc( leftv result, leftv first ) 474 ideal findUni( ideal first ) 423 475 { 424 476 ideal sourceIdeal; … … 426 478 FglmState state; 427 479 428 sourceIdeal = (ideal)first->Data(); 429 430 assumeStdFlag( first ); 480 sourceIdeal = first; 481 431 482 state= fglmIdealcheck( sourceIdeal ); 432 483 if ( state == FglmOk ) … … 470 521 break; 471 522 case FglmNotZeroDim: 523 WerrorS( "The ideal has to be 0-dimensional" ); 524 destIdeal= idInit(1,1); 525 break; 526 case FglmNotReduced: 527 Werror( "The ideal has to be reduced" ); 528 destIdeal= idInit(1,1); 529 break; 530 default: 531 destIdeal= idInit(1,1); 532 } 533 534 return destIdeal; 535 } 536 // The main function for finduni(). 537 // Checks the input-data, and calls FindUnivariateWrapper (see fglmzero.cc). 538 // Returns an ideal containing the univariate Polynomials or 0 if an error 539 // has occoured. 540 BOOLEAN 541 findUniProc( leftv result, leftv first ) 542 { 543 ideal sourceIdeal; 544 ideal destIdeal = NULL; 545 FglmState state; 546 547 sourceIdeal = (ideal)first->Data(); 548 549 assumeStdFlag( first ); 550 state= fglmIdealcheck( sourceIdeal ); 551 if ( state == FglmOk ) 552 { 553 // check for special cases: if the input contains 554 // univariate polys, try to reduce the problem 555 int i,k; 556 int count=0; 557 BOOLEAN * purePowers = (BOOLEAN *)omAlloc0( currRing->N*sizeof( BOOLEAN ) ); 558 for ( k= IDELEMS( sourceIdeal ) - 1; k >= 0; k-- ) 559 { 560 if((i=pIsUnivariate(sourceIdeal->m[k]))>0) 561 { 562 if (purePowers[i-1]==0) 563 { 564 purePowers[i-1]=k; 565 count++; 566 if (count==currRing->N) break; 567 } 568 } 569 } 570 if (count==currRing->N) 571 { 572 destIdeal=idInit(currRing->N,1); 573 for(k=currRing->N-1; k>=0; k--) destIdeal->m[k]=pCopy(sourceIdeal->m[purePowers[k]]); 574 } 575 omFreeSize((ADDRESS)purePowers, currRing->N*sizeof( BOOLEAN ) ); 576 if (destIdeal!=NULL) 577 state = FglmOk; 578 else if ( FindUnivariateWrapper( sourceIdeal, destIdeal ) == FALSE ) 579 state = FglmNotReduced; 580 } 581 switch (state) 582 { 583 case FglmOk: 584 break; 585 case FglmHasOne: 586 destIdeal= idInit(1,1); 587 (destIdeal->m)[0]= pOne(); 588 state= FglmOk; 589 break; 590 case FglmNotZeroDim: 472 591 Werror( "The ideal %s has to be 0-dimensional", first->Name() ); 473 592 destIdeal= NULL; -
Singular/fglm.h
rcb0364 re11614 24 24 // Returns TRUE if an error occoured. 25 25 BOOLEAN fglmQuotProc( leftv result, leftv first, leftv second ); 26 ideal fglmQuot( ideal first, poly second ); 26 27 27 28 // FindUnivariatePolys (test) … … 30 31 // wrapper for FindUnivariatePolys (test) 31 32 BOOLEAN findUniProc( leftv result, leftv first); 33 ideal findUni( ideal first ); 32 34 33 35 // homogeneous FGLM -
Singular/iparith.cc
rcb0364 re11614 3003 3003 res->data = (char *)idQuot((ideal)u->Data(),(ideal)v->Data(), 3004 3004 hasFlag(u,FLAG_STD),u->Typ()==v->Typ()); 3005 id_DelMultiples((ideal)(res->data),currRing);3006 3005 if (TEST_OPT_RETURN_SB) setFlag(res,FLAG_STD); 3007 3006 return FALSE; -
configure.ac
rf7951d re11614 1 1 AC_INIT([singular], [4.2.0], [singular@mathematik.uni-kl.de]) 2 3 AC_SUBST([VERSION_DATE], 2021) 2 4 AC_DEFINE([VERSION_DATE],["Dec 2020"],[release date]) 3 5 … … 326 328 AC_CONFIG_FILES([desktop/Makefile desktop/Singular.desktop desktop/Singular-manual.desktop]) 327 329 330 AC_CHECK_PROGS([MAKEINFO], [makeinfo]) 331 AC_CHECK_PROGS([TEXI2PDF], [texi2pdf]) 332 AC_CHECK_PROGS([TEXINDEX], [texindex]) 333 AC_CHECK_PROGS([DVIPS], [dvips]) 334 AC_CONFIG_FILES([doc/Makefile]) 335 AC_CONFIG_FILES([doc/version.texi]) 336 AC_CONFIG_LINKS([doc/pyobject.doc:doc/pyobject.${enable_pyobject_module}.doc 337 doc/cones.doc:doc/cones.yes.doc]) 338 328 339 AC_OUTPUT -
doc/Makefile.in
rcb0364 re11614 76 76 # File sets 77 77 # 78 STANDALONE_TEXI_FILES = COPYING.texi INSTALL_unix.texi NEWS.texi \ 79 README_download.texi README_ftp.texi \ 80 README_distribution.texi README_src.texi \ 81 INSTALL_win.texi 78 STANDALONE_TEXI_FILES = COPYING.texi NEWS.texi lib2doc.texi 82 79 83 80 DOC2TEX_FILES = cones.tex countedref.tex decodegb.tex \ -
doc/version.texi.in
rf7951d re11614 1 1 @c DO not edit this file. 2 2 3 @set VERSION @ SINGULAR_VERSION@3 @set VERSION @PACKAGE_VERSION@ 4 4 @set VERSION_DATE @VERSION_DATE@ 5 @set SHORT_VERSION @ SINGULAR_SHORT_VERSION@5 @set SHORT_VERSION @VERSION@ -
kernel/ideals.cc
rcb0364 re11614 696 696 } 697 697 698 /*2699 * compute the syzygies of h1 in R/quot,700 * weights of components are in w701 * if setRegularity, return the regularity in deg702 * do not change h1, w703 */704 ideal idSyzygies (ideal h1, tHomog h,intvec **w, BOOLEAN setSyzComp,705 BOOLEAN setRegularity, int *deg, GbVariant alg)706 {707 ideal s_h1;708 int j, k, length=0,reg;709 BOOLEAN isMonomial=TRUE;710 int ii, idElemens_h1;711 712 assume(h1 != NULL);713 714 idElemens_h1=IDELEMS(h1);715 #ifdef PDEBUG716 for(ii=0;ii<idElemens_h1 /*IDELEMS(h1)*/;ii++) pTest(h1->m[ii]);717 #endif718 if (idIs0(h1))719 {720 ideal result=idFreeModule(idElemens_h1/*IDELEMS(h1)*/);721 return result;722 }723 int slength=(int)id_RankFreeModule(h1,currRing);724 k=si_max(1,slength /*id_RankFreeModule(h1)*/);725 726 assume(currRing != NULL);727 ring orig_ring=currRing;728 ring syz_ring=rAssure_SyzComp(orig_ring,TRUE);729 if (setSyzComp) rSetSyzComp(k,syz_ring);730 731 if (orig_ring != syz_ring)732 {733 rChangeCurrRing(syz_ring);734 s_h1=idrCopyR_NoSort(h1,orig_ring,syz_ring);735 }736 else737 {738 s_h1 = h1;739 }740 741 idTest(s_h1);742 743 BITSET save_opt;744 SI_SAVE_OPT1(save_opt);745 si_opt_1|=Sy_bit(OPT_REDTAIL_SYZ);746 747 ideal s_h3=idPrepare(s_h1,NULL,h,k,w,alg); // main (syz) GB computation748 749 SI_RESTORE_OPT1(save_opt);750 751 if (s_h3==NULL)752 {753 if (orig_ring != syz_ring)754 {755 rChangeCurrRing(orig_ring);756 rDelete(syz_ring);757 }758 return idFreeModule( idElemens_h1 /*IDELEMS(h1)*/);759 }760 761 if (orig_ring != syz_ring)762 {763 idDelete(&s_h1);764 for (j=0; j<IDELEMS(s_h3); j++)765 {766 if (s_h3->m[j] != NULL)767 {768 if (p_MinComp(s_h3->m[j],syz_ring) > k)769 p_Shift(&s_h3->m[j], -k,syz_ring);770 else771 p_Delete(&s_h3->m[j],syz_ring);772 }773 }774 idSkipZeroes(s_h3);775 s_h3->rank -= k;776 rChangeCurrRing(orig_ring);777 s_h3 = idrMoveR_NoSort(s_h3, syz_ring, orig_ring);778 rDelete(syz_ring);779 #ifdef HAVE_PLURAL780 if (rIsPluralRing(orig_ring))781 {782 id_DelMultiples(s_h3,orig_ring);783 idSkipZeroes(s_h3);784 }785 #endif786 idTest(s_h3);787 return s_h3;788 }789 790 ideal e = idInit(IDELEMS(s_h3), s_h3->rank);791 792 for (j=IDELEMS(s_h3)-1; j>=0; j--)793 {794 if (s_h3->m[j] != NULL)795 {796 if (p_MinComp(s_h3->m[j],syz_ring) <= k)797 {798 e->m[j] = s_h3->m[j];799 isMonomial=isMonomial && (pNext(s_h3->m[j])==NULL);800 p_Delete(&pNext(s_h3->m[j]),syz_ring);801 s_h3->m[j] = NULL;802 }803 }804 }805 806 idSkipZeroes(s_h3);807 idSkipZeroes(e);808 809 if ((deg != NULL)810 && (!isMonomial)811 && (!TEST_OPT_NOTREGULARITY)812 && (setRegularity)813 && (h==isHomog)814 && (!rIsPluralRing(currRing))815 && (!rField_is_Ring(currRing))816 )817 {818 assume(orig_ring==syz_ring);819 ring dp_C_ring = rAssure_dp_C(syz_ring); // will do rChangeCurrRing later820 if (dp_C_ring != syz_ring)821 {822 rChangeCurrRing(dp_C_ring);823 e = idrMoveR_NoSort(e, syz_ring, dp_C_ring);824 }825 resolvente res = sySchreyerResolvente(e,-1,&length,TRUE, TRUE);826 intvec * dummy = syBetti(res,length,®, *w);827 *deg = reg+2;828 delete dummy;829 for (j=0;j<length;j++)830 {831 if (res[j]!=NULL) idDelete(&(res[j]));832 }833 omFreeSize((ADDRESS)res,length*sizeof(ideal));834 idDelete(&e);835 if (dp_C_ring != orig_ring)836 {837 rChangeCurrRing(orig_ring);838 rDelete(dp_C_ring);839 }840 }841 else842 {843 idDelete(&e);844 }845 assume(orig_ring==currRing);846 idTest(s_h3);847 if (currRing->qideal != NULL)848 {849 ideal ts_h3=kStd(s_h3,currRing->qideal,h,w);850 idDelete(&s_h3);851 s_h3 = ts_h3;852 }853 return s_h3;854 }855 856 698 ideal idExtractG_T_S(ideal s_h3,matrix *T,ideal *S,long syzComp, 857 699 int h1_size,BOOLEAN inputIsIdeal,const ring oring, const ring sring) … … 955 797 (*S)->m[i] = prMoveR_NoSort((*S)->m[i], sring,oring); 956 798 } 799 } 800 return s_h3; 801 } 802 803 /*2 804 * compute the syzygies of h1 in R/quot, 805 * weights of components are in w 806 * if setRegularity, return the regularity in deg 807 * do not change h1, w 808 */ 809 ideal idSyzygies (ideal h1, tHomog h,intvec **w, BOOLEAN setSyzComp, 810 BOOLEAN setRegularity, int *deg, GbVariant alg) 811 { 812 ideal s_h1; 813 int j, k, length=0,reg; 814 BOOLEAN isMonomial=TRUE; 815 int ii, idElemens_h1; 816 817 assume(h1 != NULL); 818 819 idElemens_h1=IDELEMS(h1); 820 #ifdef PDEBUG 821 for(ii=0;ii<idElemens_h1 /*IDELEMS(h1)*/;ii++) pTest(h1->m[ii]); 822 #endif 823 if (idIs0(h1)) 824 { 825 ideal result=idFreeModule(idElemens_h1/*IDELEMS(h1)*/); 826 return result; 827 } 828 int slength=(int)id_RankFreeModule(h1,currRing); 829 k=si_max(1,slength /*id_RankFreeModule(h1)*/); 830 831 assume(currRing != NULL); 832 ring orig_ring=currRing; 833 ring syz_ring=rAssure_SyzComp(orig_ring,TRUE); 834 if (setSyzComp) rSetSyzComp(k,syz_ring); 835 836 if (orig_ring != syz_ring) 837 { 838 rChangeCurrRing(syz_ring); 839 s_h1=idrCopyR_NoSort(h1,orig_ring,syz_ring); 840 } 841 else 842 { 843 s_h1 = h1; 844 } 845 846 idTest(s_h1); 847 848 BITSET save_opt; 849 SI_SAVE_OPT1(save_opt); 850 si_opt_1|=Sy_bit(OPT_REDTAIL_SYZ); 851 852 ideal s_h3=idPrepare(s_h1,NULL,h,k,w,alg); // main (syz) GB computation 853 854 SI_RESTORE_OPT1(save_opt); 855 856 if (orig_ring != syz_ring) 857 { 858 idDelete(&s_h1); 859 for (j=0; j<IDELEMS(s_h3); j++) 860 { 861 if (s_h3->m[j] != NULL) 862 { 863 if (p_MinComp(s_h3->m[j],syz_ring) > k) 864 p_Shift(&s_h3->m[j], -k,syz_ring); 865 else 866 p_Delete(&s_h3->m[j],syz_ring); 867 } 868 } 869 idSkipZeroes(s_h3); 870 s_h3->rank -= k; 871 rChangeCurrRing(orig_ring); 872 s_h3 = idrMoveR_NoSort(s_h3, syz_ring, orig_ring); 873 rDelete(syz_ring); 874 #ifdef HAVE_PLURAL 875 if (rIsPluralRing(orig_ring)) 876 { 877 id_DelMultiples(s_h3,orig_ring); 878 idSkipZeroes(s_h3); 879 } 880 #endif 881 idTest(s_h3); 882 return s_h3; 883 } 884 885 ideal e = idInit(IDELEMS(s_h3), s_h3->rank); 886 887 for (j=IDELEMS(s_h3)-1; j>=0; j--) 888 { 889 if (s_h3->m[j] != NULL) 890 { 891 if (p_MinComp(s_h3->m[j],syz_ring) <= k) 892 { 893 e->m[j] = s_h3->m[j]; 894 isMonomial=isMonomial && (pNext(s_h3->m[j])==NULL); 895 p_Delete(&pNext(s_h3->m[j]),syz_ring); 896 s_h3->m[j] = NULL; 897 } 898 } 899 } 900 901 idSkipZeroes(s_h3); 902 idSkipZeroes(e); 903 904 if ((deg != NULL) 905 && (!isMonomial) 906 && (!TEST_OPT_NOTREGULARITY) 907 && (setRegularity) 908 && (h==isHomog) 909 && (!rIsPluralRing(currRing)) 910 && (!rField_is_Ring(currRing)) 911 ) 912 { 913 assume(orig_ring==syz_ring); 914 ring dp_C_ring = rAssure_dp_C(syz_ring); // will do rChangeCurrRing later 915 if (dp_C_ring != syz_ring) 916 { 917 rChangeCurrRing(dp_C_ring); 918 e = idrMoveR_NoSort(e, syz_ring, dp_C_ring); 919 } 920 resolvente res = sySchreyerResolvente(e,-1,&length,TRUE, TRUE); 921 intvec * dummy = syBetti(res,length,®, *w); 922 *deg = reg+2; 923 delete dummy; 924 for (j=0;j<length;j++) 925 { 926 if (res[j]!=NULL) idDelete(&(res[j])); 927 } 928 omFreeSize((ADDRESS)res,length*sizeof(ideal)); 929 idDelete(&e); 930 if (dp_C_ring != orig_ring) 931 { 932 rChangeCurrRing(orig_ring); 933 rDelete(dp_C_ring); 934 } 935 } 936 else 937 { 938 idDelete(&e); 939 } 940 assume(orig_ring==currRing); 941 idTest(s_h3); 942 if (currRing->qideal != NULL) 943 { 944 ideal ts_h3=kStd(s_h3,currRing->qideal,h,w); 945 idDelete(&s_h3); 946 s_h3 = ts_h3; 957 947 } 958 948 return s_h3; … … 2392 2382 if (T!=NULL) idDelete((ideal*)T); 2393 2383 2394 int i, rk,flength=0,slength,length;2384 int i,flength=0,slength,length; 2395 2385 poly p,q; 2396 2386 … … 2430 2420 //Print("weights:");wtmp->show(1);PrintLn(); 2431 2421 } 2432 rk = IDELEMS(h2);2433 2422 ideal s_temp1; 2434 2423 ring orig_ring=currRing;
Note: See TracChangeset
for help on using the changeset viewer.