Ticket #14858: trac14858.py

File trac14858.py, 2.5 KB (added by eviatarbach, 9 years ago)
Line 
1# HG changeset patch
2# User Eviatar Bach <eviatarbach@gmail.com>
3# Date 1373340728 25200
4# Branch hyper
5# Node ID 1eba0bfa8cecd0e240deeb24b9c61177a35f0f76
6# Parent  c5d9b1672bc133593098c60fad47903ff2bb46e1
7Trac #14858: more robust type checks for arith.py
8
9diff --git a/sage/rings/arith.py b/sage/rings/arith.py
10--- a/sage/rings/arith.py
11+++ b/sage/rings/arith.py
12@@ -4102,7 +4102,19 @@
13         [1, 100000000000000000000, 2688, 8, 1]
14         sage: continued_fraction_list(1 + 10^-20 - e^-100, bits=1000, nterms=5)
15         [1, 100000000000000000000, 2688, 8, 1]
16+
17+    Check that :trac:`14858` is fixed::
18+
19+        sage: continued_fraction_list(3/4) == continued_fraction_list(SR(3/4))
20+        True
21+
22     """
23+    if isinstance(x, sage.symbolic.expression.Expression):
24+        try:
25+            x = x.pyobject()
26+        except TypeError:
27+            pass
28+
29     if isinstance(x, (integer.Integer, int, long)):
30         if partial_convergents:
31             return [x], [(x,1)]
32@@ -4752,12 +4764,19 @@
33         sage: x = ZZ['x'].0
34         sage: falling_factorial(x, 4)
35         x^4 - 6*x^3 + 11*x^2 - 6*x
36-   
37+
38+    Check that :trac:`14858` is fixed::
39+
40+        sage: falling_factorial(-4, SR(2))
41+        20
42+
43     AUTHORS:
44 
45     - Jaap Spies (2006-03-05)
46     """
47-    if isinstance(a, (integer.Integer, int, long)) and a >= 0:
48+    if (isinstance(a, (integer.Integer, int, long)) or
49+        (isinstance(a, sage.symbolic.expression.Expression) and
50+         a.is_integer())) and a >= 0:
51         return misc.prod([(x - i) for i in range(a)])
52     from sage.functions.all import gamma
53     return gamma(x+1) / gamma(x-a+1)
54@@ -4792,7 +4811,7 @@
55     EXAMPLES::
56     
57         sage: rising_factorial(10,3)
58-        1320 
59+        1320
60     
61     ::
62     
63@@ -4823,12 +4842,21 @@
64         sage: x = polygen(ZZ)
65         sage: rising_factorial(x, 4)
66         x^4 + 6*x^3 + 11*x^2 + 6*x
67-   
68+
69+    Check that :trac:`14858` is fixed::
70+
71+        sage: bool(rising_factorial(-4, 2) ==
72+        ....:      rising_factorial(-4, SR(2)) ==
73+        ....:      rising_factorial(SR(-4), SR(2)))
74+        True
75+
76     AUTHORS:
77 
78     - Jaap Spies (2006-03-05)
79     """
80-    if isinstance(a, (integer.Integer, int, long)) and a >= 0:
81+    if (isinstance(a, (integer.Integer, int, long)) or
82+        (isinstance(a, sage.symbolic.expression.Expression) and
83+         a.is_integer())) and a >= 0:
84         return misc.prod([(x + i) for i in range(a)])
85     from sage.functions.all import gamma
86     return gamma(x+a) / gamma(x)