Changeset 12f6ce0 in git for libpolys/polys/ext_fields
- Timestamp:
- Aug 22, 2013, 3:35:23 PM (11 years ago)
- Branches:
- (u'spielwiese', '2a584933abf2a2d3082034c7586d38bb6de1a30a')
- Children:
- 5d258e90f0942cca8fc2fed57ff1d4c5ecdbc20a
- Parents:
- 2e4ee2b73c0c10b254963f2c5bb24ce6688d1f5b
- git-author:
- Janko Boehm <boehm@mathematik.uni-kl.de>2013-08-22 15:35:23+02:00
- git-committer:
- Janko Boehm <boehm@mathematik.uni-kl.de>2013-09-03 19:36:11+02:00
- Location:
- libpolys/polys/ext_fields
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
libpolys/polys/ext_fields/transext.cc
r2e4ee2b r12f6ce0 33 33 * TODO: the description above needs a major update!!! 34 34 */ 35 36 37 38 39 35 40 #define TRANSEXT_PRIVATES 36 41 … … 67 72 #define ADD_COMPLEXITY 1 /**< complexity increase due to + and - */ 68 73 #define MULT_COMPLEXITY 2 /**< complexity increase due to * and / */ 74 #define DIFF_COMPLEXITY 2 /**< complexity increase due to * and / */ 69 75 #define BOUND_COMPLEXITY 10 /**< maximum complexity of a number */ 70 76 … … 740 746 */ 741 747 } 748 749 number ntDiff(number a, number d, const coeffs cf) 750 { 751 ntTest(a); 752 ntTest(d); 753 754 fraction t = (fraction) d; 755 if (!DENIS1(t)) 756 { 757 WerrorS("expected differentiation by a variable"); 758 return a; 759 } 760 int k=p_Var(NUM(t),ntRing); 761 if (k==0) 762 { 763 WerrorS("expected differentiation by a variable"); 764 return a; 765 } 766 767 if (IS0(a)) return ntCopy(a, cf); 768 769 fraction fa = (fraction)a; 770 771 poly g = p_Copy(NUM(fa), ntRing); 772 poly f = p_Copy(DEN(fa), ntRing); 773 poly dg =p_Diff(g,k,ntRing); 774 775 if (DENIS1(fa)) { 776 777 fraction result = (fraction)omAlloc0Bin(fractionObjectBin); 778 NUM(result) = dg; 779 DEN(result) = NULL; 780 COM(result) = COM(fa); 781 return (number)result; 782 } 783 784 poly df =p_Diff(f,k,ntRing); 785 fraction result = (fraction)omAlloc0Bin(fractionObjectBin); 786 poly fg = p_Mult_q(p_Copy(f,ntRing),dg,ntRing); 787 poly gf = p_Neg(p_Mult_q(g,df,ntRing),ntRing); 788 NUM(result) = p_Add_q(fg,gf,ntRing); 789 DEN(result) = p_Mult_q(p_Copy(f,ntRing), f, ntRing); 790 COM(result) = COM(fa) + COM(fa) + DIFF_COMPLEXITY; 791 heuristicGcdCancellation((number)result, cf); 792 793 return (number)result; 794 } 795 742 796 743 797 number ntAdd(number a, number b, const coeffs cf) -
libpolys/polys/ext_fields/transext.h
r2e4ee2b r12f6ce0 98 98 BOOLEAN ntInitChar(coeffs cf, void* infoStruct); 99 99 100 number ntDiff(number a, number d, const coeffs cf); 101 100 102 /* Private hidden interface 101 103 BOOLEAN ntGreaterZero(number a, const coeffs cf);
Note: See TracChangeset
for help on using the changeset viewer.