- Timestamp:
- Oct 27, 2020, 2:08:01 PM (3 years ago)
- Branches:
- (u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
- Children:
- 6c0138c673567884c6a0476d4496df51b0d7c049
- Parents:
- ba9e24e67185c12eb7966da1c68fcef2d90666d0
- Location:
- factory
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
factory/FLINTconvert.cc
rba9e24 r9bdba5 711 711 } 712 712 713 static void convFlint_RecPP ( const CanonicalForm & f, ulong * exp, fmpz_mpoly_t result, fmpz_mpoly_ctx_t ctx, int N ) 714 { 715 // assume f!=0 716 if ( ! f.inBaseDomain() ) 717 { 718 int l = f.level(); 719 for ( CFIterator i = f; i.hasTerms(); i++ ) 720 { 721 exp[N-l] = i.exp(); 722 convFlint_RecPP( i.coeff(), exp, result, ctx, N ); 723 } 724 exp[N-l] = 0; 725 } 726 else 727 { 728 fmpz_t c; 729 fmpz_init(c); 730 convertCF2Fmpz(c,f); 731 fmpz_mpoly_push_term_fmpz_ui(result,c,exp,ctx); 732 fmpz_clear(c); 733 } 734 } 735 713 736 void convFactoryPFlintMP ( const CanonicalForm & f, nmod_mpoly_t res, nmod_mpoly_ctx_t ctx, int N ) 714 737 { … … 733 756 } 734 757 758 void convFactoryPFlintMP ( const CanonicalForm & f, fmpz_mpoly_t res, fmpz_mpoly_ctx_t ctx, int N ) 759 { 760 if (f.isZero()) return; 761 ulong * exp = (ulong*)Alloc(N*sizeof(ulong)); 762 memset(exp,0,N*sizeof(ulong)); 763 convFlint_RecPP( f, exp, res, ctx, N ); 764 //fmpz_mpoly_reduce(res,ctx); 765 Free(exp,N*sizeof(ulong)); 766 } 767 735 768 CanonicalForm convFlintMPFactoryP(nmod_mpoly_t f, nmod_mpoly_ctx_t ctx, int N) 736 769 { … … 772 805 } 773 806 fmpq_clear(c); 807 Free(exp,N*sizeof(ulong)); 808 return result; 809 } 810 811 CanonicalForm convFlintMPFactoryP(fmpz_mpoly_t f, fmpz_mpoly_ctx_t ctx, int N) 812 { 813 CanonicalForm result; 814 int d=fmpz_mpoly_length(f,ctx)-1; 815 ulong* exp=(ulong*)Alloc(N*sizeof(ulong)); 816 fmpz_t c; 817 fmpz_init(c); 818 for(int i=d; i>=0; i--) 819 { 820 fmpz_mpoly_get_term_coeff_fmpz(c,f,i,ctx); 821 fmpz_mpoly_get_term_exp_ui(exp,f,i,ctx); 822 CanonicalForm term=convertFmpz2CF(c); 823 for ( int i = 0; i <N; i++ ) 824 { 825 if (exp[i]!=0) term*=CanonicalForm( Variable( N-i ), exp[i] ); 826 } 827 result+=term; 828 } 829 fmpz_clear(c); 774 830 Free(exp,N*sizeof(ulong)); 775 831 return result; -
factory/FLINTconvert.h
rba9e24 r9bdba5 275 275 void convFactoryPFlintMP ( const CanonicalForm & f, nmod_mpoly_t res, nmod_mpoly_ctx_t ctx, int N ); 276 276 void convFactoryPFlintMP ( const CanonicalForm & f, fmpq_mpoly_t res, fmpq_mpoly_ctx_t ctx, int N ); 277 void convFactoryPFlintMP ( const CanonicalForm & f, fmpz_mpoly_t res, fmpz_mpoly_ctx_t ctx, int N ); 277 278 CanonicalForm convFlintMPFactoryP(nmod_mpoly_t f, nmod_mpoly_ctx_t ctx, int N); 278 279 CanonicalForm convFlintMPFactoryP(fmpq_mpoly_t f, fmpq_mpoly_ctx_t ctx, int N); 279 #endif 280 #endif 281 #endif 280 CanonicalForm convFlintMPFactoryP(fmpz_mpoly_t f, fmpz_mpoly_ctx_t ctx, int N); 281 #endif 282 #endif 283 #endif
Note: See TracChangeset
for help on using the changeset viewer.