Changeset 8382:63030fe75bbc
- Timestamp:
- 12/11/07 18:31:36 (6 years ago)
- Branch:
- default
- Parents:
- 8381:8af290b3f48d (diff), 7543:7110a20969c8 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent. - Files:
-
- 1 deleted
- 6 edited
-
.hgtags (modified) (1 diff)
-
sage/combinat/combinat.py (modified) (2 diffs)
-
sage/rings/algebraic_real.py (deleted)
-
sage/rings/number_field/number_field_element.pyx (modified) (1 diff)
-
sage/rings/number_field/number_field_element.pyx (modified) (11 diffs)
-
setup.py (modified) (2 diffs)
-
setup.py (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
.hgtags
r8380 r8382 151 151 d36d439bc32c0006b1ba3b1e13e3272ab445f403 2.8.14.rc3 152 152 7db04fcb81ab2504e1a76648c2fcd01b30418b28 2.8.14 153 10ffb2e25cf62efa95179fb7f097904ed1af4a86 2.8.15.alpha0 154 1a7f1fcb0a5c8221c4b2c45ac431e4aa85bbe750 2.8.15.alpha1 155 92dacf17ba7774d65157131d4ce0e5265ea8f8fb 2.8.15.alpha2 156 f45713981d79e0b74adbf002011043f16d8982f3 2.8.15.rc0 157 612d5a72a9e1a9c4eb90a0c746da5a358882b5a0 2.9.15.rc1 158 f70aef4f56461965fbbc68b0945a07f38b3ecf4c 2.8.15 -
sage/combinat/combinat.py
r7485 r8382 193 193 194 194 from sage.interfaces.all import gap, maxima 195 from sage.rings.all import QQ, RR, ZZ, RealField195 from sage.rings.all import QQ, ZZ 196 196 from sage.rings.arith import binomial 197 197 from sage.misc.sage_eval import sage_eval … … 2536 2536 """ 2537 2537 return sage_eval(maxima.eval("bernpoly(x,%s)"%n), {'x':x}) 2538 2539 2540 def rencontres_number(n, k):2541 r"""2542 Returns the Rencontres number D(n,k), the number of permutations of2543 {1, 2,..., n} with k fixed points.2544 2545 EXAMPLES:2546 Because 312 and 231 are the two permutations of {1, 2, 3} with 02547 fixed points, we have:2548 2549 sage: rencontres_number(3,0)2550 22551 2552 More examples:2553 sage: rencontres_number(6,1)2554 2642555 2556 2557 REFERENCES:2558 http://en.wikipedia.org/wiki/Rencontres_number2559 2560 Sequence A008290 in the OEIS.2561 2562 AUTHORS:2563 -- Dan Drake, 2007-11-27: post to sage-devel2564 -- William Stein, 2007-11-27: referee and clean up for inclusion in sage2565 """2566 F = factorial(n - k)2567 # Sufficient precision needed to guarantee the correct result (this is overkill somewhat)2568 R = RealField(10*F.bits() + 53)2569 e = R(1).exp()2570 if (n - k) % 2 == 0:2571 return binomial(n, k) * (F/e).ceil()2572 else:2573 return binomial(n, k) * (F/e).floor()2574 -
sage/rings/number_field/number_field_element.pyx
r7440 r8382 601 601 """ 602 602 return self.number_field().complex_embeddings(prec)[i](self) 603 604 def is_totally_positive(self): 605 """ 606 Returns True if self is positive for all real embeddings of 607 its parent number field. We do nothing at complex places, 608 so e.g. any element of a totally complex number field will return 609 True. 610 611 EXAMPLES: 612 sage: F.<b> = NumberField(x^3-3*x-1) 613 sage: b.is_totally_positive() 614 False 615 sage: (b^2).is_totally_positive() 616 True 617 """ 618 for v in self.number_field().real_embeddings(): 619 if v(self) <= 0: 620 return False 621 return True 603 622 604 623 def is_square(self, root=False): -
sage/rings/number_field/number_field_element.pyx
r8380 r8382 126 126 x = <NumberFieldElement>PY_NEW_SAME_TYPE(self) 127 127 x._parent = self._parent 128 x.__fld_numerator = self.__fld_numerator 129 x.__fld_denominator = self.__fld_denominator 128 130 return x 129 131 … … 176 178 """ 177 179 sage.rings.field_element.FieldElement.__init__(self, parent) 180 if isinstance(parent, number_field.NumberField_relative): 181 self.__fld_numerator, self.__fld_denominator = parent.absolute_polynomial_ntl() 182 else: 183 self.__fld_numerator, self.__fld_denominator = parent.polynomial_ntl() 178 184 179 185 cdef ZZ_c coeff … … 277 283 cdef NumberFieldElement x = <NumberFieldElement>PY_NEW_SAME_TYPE(self) 278 284 x._parent = <ParentWithBase>new_parent 285 x.__fld_numerator, x.__fld_denominator = new_parent.polynomial_ntl() 279 286 x.__denominator = self.__denominator 280 287 cdef ZZX_c result … … 757 764 cdef ZZX_c temp 758 765 cdef ZZ_c temp1 759 cdef ZZ_c parent_den760 cdef ZZX_c parent_num761 self._parent_poly_c_( &parent_num, &parent_den )762 766 x = self._new() 763 767 _sig_on 764 768 # MulMod doesn't handle non-monic polynomials. 765 769 # Therefore, we handle the non-monic case entirely separately. 766 if ZZX_is_monic( & parent_num):770 if ZZX_is_monic( &self.__fld_numerator.x ): 767 771 ZZ_mul(x.__denominator, self.__denominator, _right.__denominator) 768 ZZX_MulMod(x.__numerator, self.__numerator, _right.__numerator, parent_num)772 ZZX_MulMod(x.__numerator, self.__numerator, _right.__numerator, self.__fld_numerator.x) 769 773 else: 770 774 ZZ_mul(x.__denominator, self.__denominator, _right.__denominator) 771 775 ZZX_mul(x.__numerator, self.__numerator, _right.__numerator) 772 if ZZX_deg(x.__numerator) >= ZZX_deg( parent_num):773 ZZX_mul_ZZ( x.__numerator, x.__numerator, parent_den)774 ZZX_mul_ZZ( temp, parent_num, x.__denominator )775 ZZ_power(temp1,ZZX_LeadCoeff(temp),ZZX_deg(x.__numerator)-ZZX_deg( parent_num)+1)776 if ZZX_deg(x.__numerator) >= ZZX_deg(self.__fld_numerator.x): 777 ZZX_mul_ZZ( x.__numerator, x.__numerator, self.__fld_denominator.x ) 778 ZZX_mul_ZZ( temp, self.__fld_numerator.x, x.__denominator ) 779 ZZ_power(temp1,ZZX_LeadCoeff(temp),ZZX_deg(x.__numerator)-ZZX_deg(self.__fld_numerator.x)+1) 776 780 ZZX_PseudoRem(x.__numerator, x.__numerator, temp) 777 ZZ_mul(x.__denominator, x.__denominator, parent_den)781 ZZ_mul(x.__denominator, x.__denominator, self.__fld_denominator.x) 778 782 ZZ_mul(x.__denominator, x.__denominator, temp1) 779 783 _sig_off … … 815 819 cdef ZZX_c inv_num 816 820 cdef ZZ_c inv_den 817 cdef ZZ_c parent_den818 cdef ZZX_c parent_num819 821 cdef ZZX_c temp 820 822 cdef ZZ_c temp1 821 823 if not _right: 822 824 raise ZeroDivisionError, "Number field element division by zero" 823 self._parent_poly_c_( &parent_num, &parent_den )824 825 x = self._new() 825 826 _sig_on 826 827 _right._invert_c_(&inv_num, &inv_den) 827 if ZZX_is_monic( & parent_num):828 if ZZX_is_monic( &self.__fld_numerator.x ): 828 829 ZZ_mul(x.__denominator, self.__denominator, inv_den) 829 ZZX_MulMod(x.__numerator, self.__numerator, inv_num, parent_num)830 ZZX_MulMod(x.__numerator, self.__numerator, inv_num, self.__fld_numerator.x) 830 831 else: 831 832 ZZ_mul(x.__denominator, self.__denominator, inv_den) 832 833 ZZX_mul(x.__numerator, self.__numerator, inv_num) 833 if ZZX_deg(x.__numerator) >= ZZX_deg( parent_num):834 ZZX_mul_ZZ( x.__numerator, x.__numerator, parent_den)835 ZZX_mul_ZZ( temp, parent_num, x.__denominator )836 ZZ_power(temp1,ZZX_LeadCoeff(temp),ZZX_deg(x.__numerator)-ZZX_deg( parent_num)+1)834 if ZZX_deg(x.__numerator) >= ZZX_deg(self.__fld_numerator.x): 835 ZZX_mul_ZZ( x.__numerator, x.__numerator, self.__fld_denominator.x ) 836 ZZX_mul_ZZ( temp, self.__fld_numerator.x, x.__denominator ) 837 ZZ_power(temp1,ZZX_LeadCoeff(temp),ZZX_deg(x.__numerator)-ZZX_deg(self.__fld_numerator.x)+1) 837 838 ZZX_PseudoRem(x.__numerator, x.__numerator, temp) 838 ZZ_mul(x.__denominator, x.__denominator, parent_den)839 ZZ_mul(x.__denominator, x.__denominator, self.__fld_denominator.x) 839 840 ZZ_mul(x.__denominator, x.__denominator, temp1) 840 841 x._reduce_c_() … … 942 943 943 944 cdef void _parent_poly_c_(self, ZZX_c *num, ZZ_c *den): 945 """ 946 I believe this function should be removed since I've put the pointer 947 __fld_numerator and __fld_denominator in the element class. I'm not 948 going to remove it quite yet, but feel free to remove it if you agree 949 with me that it should go. 950 """ 944 951 raise NotImplementedError, "NumberFieldElement subclasses must override _parent_poly_c_()" 945 952 … … 958 965 Check __invert__ for doc-tests that rely on this functionality. 959 966 """ 960 cdef ZZ_c parent_den961 cdef ZZX_c parent_num962 self._parent_poly_c_( &parent_num, &parent_den )963 964 967 cdef ZZX_c t # unneeded except to be there 965 968 cdef ZZX_c a, b 966 ZZX_mul_ZZ( a, self.__numerator, parent_den)967 ZZX_mul_ZZ( b, parent_num, self.__denominator )969 ZZX_mul_ZZ( a, self.__numerator, self.__fld_denominator.x ) 970 ZZX_mul_ZZ( b, self.__fld_numerator.x, self.__denominator ) 968 971 ZZX_XGCD( den[0], num[0], t, a, b, 1 ) 969 ZZX_mul_ZZ( num[0], num[0], parent_den)972 ZZX_mul_ZZ( num[0], num[0], self.__fld_denominator.x ) 970 973 ZZX_mul_ZZ( num[0], num[0], self.__denominator ) 971 974 … … 1648 1651 1649 1652 cdef void _parent_poly_c_(self, ZZX_c *num, ZZ_c *den): 1653 """ 1654 I believe this function should be removed since I've put the pointer 1655 __fld_numerator and __fld_denominator in the element class. I'm not 1656 going to remove it quite yet, but feel free to remove it if you agree 1657 with me that it should go. 1658 """ 1650 1659 cdef ntl_ZZX _num 1651 1660 cdef ntl_ZZ _den … … 1762 1771 1763 1772 cdef void _parent_poly_c_(self, ZZX_c *num, ZZ_c *den): 1773 """ 1774 I believe this function should be removed since I've put the pointer 1775 __fld_numerator and __fld_denominator in the element class. I'm not 1776 going to remove it quite yet, but feel free to remove it if you agree 1777 with me that it should go. 1778 """ 1764 1779 f = self.number_field().absolute_polynomial() 1765 1780 _ntl_poly(f, num, den) … … 1859 1874 """ 1860 1875 cdef OrderElement_absolute x 1861 x = < NumberFieldElement>PY_NEW_SAME_TYPE(self)1876 x = <OrderElement_absolute>PY_NEW_SAME_TYPE(self) 1862 1877 x._parent = self._parent 1863 1878 x._number_field = self._parent.number_field() 1879 x.__fld_numerator = self.__fld_numerator 1880 x.__fld_denominator = self.__fld_denominator 1864 1881 return x 1865 1882 … … 1902 1919 """ 1903 1920 cdef OrderElement_relative x 1904 x = < NumberFieldElement>PY_NEW_SAME_TYPE(self)1921 x = <OrderElement_relative>PY_NEW_SAME_TYPE(self) 1905 1922 x._parent = self._parent 1906 1923 x._number_field = self._parent.number_field() 1924 x.__fld_numerator = self.__fld_numerator 1925 x.__fld_denominator = self.__fld_denominator 1907 1926 return x 1908 1927 -
setup.py
r7472 r8382 778 778 sources = ['sage/rings/number_field/number_field_base.pyx']), \ 779 779 780 Extension('sage.rings.number_field.totallyreal_data', 781 ['sage/rings/number_field/totallyreal_data.pyx'], 782 libraries = ['gmp']), \ 783 780 784 Extension('sage.rings.morphism', 781 sources = ['sage/rings/morphism.pyx']), 785 sources = ['sage/rings/morphism.pyx']), \ 782 786 783 787 Extension('sage.structure.wrapper_parent', … … 1209 1213 1210 1214 data_files = [('dsage/web/static', 1211 ['sage/dsage/web/static/dsage_web.css', 1212 'sage/dsage/web/static/dsage_web.js', 1213 'sage/dsage/web/static/jquery-latest.js', 1214 'sage/dsage/web/static/jquery.tablesorter.pack.js', 1215 'sage/dsage/web/static/index.html'])], 1215 ['sage/dsage/web/static/dsage_web.css', 1216 'sage/dsage/web/static/dsage_web.js', 1217 'sage/dsage/web/static/jquery-latest.js', 1218 'sage/dsage/web/static/jquery.tablesorter.pack.js', 1219 'sage/dsage/web/static/jquery.history.js', 1220 'sage/dsage/web/static/asc.gif', 1221 'sage/dsage/web/static/desc.gif', 1222 'sage/dsage/web/static/bg.gif', 1223 'sage/dsage/README.html']), 1224 ('dsage/web/', 1225 ['sage/dsage/web/index.html'])], 1216 1226 1217 1227 ext_modules = ext_modules, -
setup.py
r8381 r8382 287 287 libsingular = Extension('sage.libs.singular.singular', 288 288 sources = ['sage/libs/singular/singular.pyx'], 289 libraries = [' gmp', 'm', 'readline', 'singular', 'singfac', 'singcf', 'omalloc', 'givaro', 'gmpxx'],289 libraries = ['m', 'readline', 'singular', 'singfac', 'singcf', 'omalloc', 'givaro', 'gmpxx', 'gmp'], 290 290 language="c++", 291 291 include_dirs=[SAGE_ROOT +'/local/include/singular'] … … 363 363 matrix_mpolynomial_dense = Extension('sage.matrix.matrix_mpolynomial_dense', 364 364 ['sage/matrix/matrix_mpolynomial_dense.pyx'], 365 libraries = [' gmp', 'm', 'readline', 'singular', 'singcf', 'singfac', 'omalloc', 'givaro', 'gmpxx'],365 libraries = ['m', 'readline', 'singular', 'singcf', 'singfac', 'omalloc', 'givaro', 'gmpxx', 'gmp'], 366 366 language="c++", 367 367 include_dirs=[SAGE_ROOT +'/local/include/singular']) … … 616 616 Extension('sage.rings.polynomial.multi_polynomial_libsingular', 617 617 sources = ['sage/rings/polynomial/multi_polynomial_libsingular.pyx'], 618 libraries = [' gmp', 'm', 'readline', 'singular', 'singcf', 'singfac', 'omalloc', 'givaro', 'gmpxx'],618 libraries = ['m', 'readline', 'singular', 'singcf', 'singfac', 'omalloc', 'givaro', 'gmpxx', 'gmp'], 619 619 language="c++", 620 620 include_dirs=[SAGE_ROOT +'/local/include/singular']), \ … … 622 622 Extension('sage.rings.polynomial.multi_polynomial_ideal_libsingular', 623 623 sources = ['sage/rings/polynomial/multi_polynomial_ideal_libsingular.pyx'], 624 libraries = [' gmp', 'm', 'readline', 'singular', 'singcf', 'singfac', 'omalloc', 'givaro', 'gmpxx'],624 libraries = ['m', 'readline', 'singular', 'singcf', 'singfac', 'omalloc', 'givaro', 'gmpxx', 'gmp'], 625 625 language="c++", 626 626 include_dirs=[SAGE_ROOT +'/local/include/singular']), \ … … 659 659 Extension('sage.rings.real_mpfi', 660 660 sources = ['sage/rings/real_mpfi.pyx'], 661 libraries = ['mpfi', 'mpfr', 'gmp']), \ 662 663 Extension('sage.rings.complex_interval', 664 sources = ['sage/rings/complex_interval.pyx'], 661 665 libraries = ['mpfi', 'mpfr', 'gmp']), \ 662 666
Note: See TracChangeset
for help on using the changeset viewer.
