|
2 | 2 | Support Python's numbers abstract base class
|
3 | 3 |
|
4 | 4 | .. SEEALSO:: :pep:`3141` for more information about :class:`numbers`.
|
| 5 | +
|
| 6 | +TESTS:: |
| 7 | +
|
| 8 | + sage: import numbers |
| 9 | + sage: isinstance(5, numbers.Integral) |
| 10 | + True |
| 11 | + sage: isinstance(5, numbers.Number) |
| 12 | + True |
| 13 | + sage: isinstance(5/1, numbers.Integral) |
| 14 | + False |
| 15 | + sage: isinstance(22/7, numbers.Rational) |
| 16 | + True |
| 17 | + sage: isinstance(1.3, numbers.Real) |
| 18 | + True |
| 19 | + sage: isinstance(CC(1.3), numbers.Real) |
| 20 | + False |
| 21 | + sage: isinstance(CC(1.3 + I), numbers.Complex) |
| 22 | + True |
| 23 | + sage: isinstance(RDF(1.3), numbers.Real) |
| 24 | + True |
| 25 | + sage: isinstance(CDF(1.3, 4), numbers.Complex) |
| 26 | + True |
| 27 | + sage: isinstance(AA(sqrt(2)), numbers.Real) # needs sage.rings.number_field sage.symbolic |
| 28 | + True |
| 29 | + sage: isinstance(QQbar(I), numbers.Complex) # needs sage.rings.number_field |
| 30 | + True |
| 31 | +
|
| 32 | +This doesn't work with symbolic expressions at all:: |
| 33 | +
|
| 34 | + sage: isinstance(pi, numbers.Real) # needs sage.symbolic |
| 35 | + False |
| 36 | + sage: isinstance(I, numbers.Complex) # needs sage.rings.number_field |
| 37 | + False |
| 38 | + sage: isinstance(sqrt(2), numbers.Real) # needs sage.rings.number_field sage.symbolic |
| 39 | + False |
| 40 | +
|
| 41 | +Because we do this, NumPy's ``isscalar()`` recognizes Sage types:: |
| 42 | +
|
| 43 | + sage: from numpy import isscalar # needs numpy |
| 44 | + sage: isscalar(3.141) # needs numpy |
| 45 | + True |
| 46 | + sage: isscalar(4/17) # needs numpy |
| 47 | + True |
5 | 48 | """
|
6 | 49 |
|
7 | 50 | #*****************************************************************************
|
|
13 | 56 | # (at your option) any later version.
|
14 | 57 | # http://www.gnu.org/licenses/
|
15 | 58 | #*****************************************************************************
|
16 |
| - |
17 |
| - |
18 |
| -def register_sage_classes(): |
19 |
| - """ |
20 |
| - Register all relevant Sage classes in the :class:`numbers` |
21 |
| - hierarchy. |
22 |
| -
|
23 |
| - EXAMPLES:: |
24 |
| -
|
25 |
| - sage: import numbers |
26 |
| - sage: isinstance(5, numbers.Integral) |
27 |
| - True |
28 |
| - sage: isinstance(5, numbers.Number) |
29 |
| - True |
30 |
| - sage: isinstance(5/1, numbers.Integral) |
31 |
| - False |
32 |
| - sage: isinstance(22/7, numbers.Rational) |
33 |
| - True |
34 |
| - sage: isinstance(1.3, numbers.Real) |
35 |
| - True |
36 |
| - sage: isinstance(CC(1.3), numbers.Real) |
37 |
| - False |
38 |
| - sage: isinstance(CC(1.3 + I), numbers.Complex) |
39 |
| - True |
40 |
| - sage: isinstance(RDF(1.3), numbers.Real) |
41 |
| - True |
42 |
| - sage: isinstance(CDF(1.3, 4), numbers.Complex) |
43 |
| - True |
44 |
| - sage: isinstance(AA(sqrt(2)), numbers.Real) # needs sage.rings.number_field sage.symbolic |
45 |
| - True |
46 |
| - sage: isinstance(QQbar(I), numbers.Complex) # needs sage.rings.number_field |
47 |
| - True |
48 |
| -
|
49 |
| - This doesn't work with symbolic expressions at all:: |
50 |
| -
|
51 |
| - sage: isinstance(pi, numbers.Real) # needs sage.symbolic |
52 |
| - False |
53 |
| - sage: isinstance(I, numbers.Complex) # needs sage.rings.number_field |
54 |
| - False |
55 |
| - sage: isinstance(sqrt(2), numbers.Real) # needs sage.rings.number_field sage.symbolic |
56 |
| - False |
57 |
| -
|
58 |
| - Because we do this, NumPy's ``isscalar()`` recognizes Sage types:: |
59 |
| -
|
60 |
| - sage: from numpy import isscalar # needs numpy |
61 |
| - sage: isscalar(3.141) # needs numpy |
62 |
| - True |
63 |
| - sage: isscalar(4/17) # needs numpy |
64 |
| - True |
65 |
| - """ |
66 |
| - from sage.misc.superseded import deprecation |
67 |
| - deprecation(32641, "register_sage_classes is a deprecated no-op") |
0 commit comments