Ticket #9880: trac_9880-fix_doctests_symbolic.patch

File trac_9880-fix_doctests_symbolic.patch, 36.4 KB (added by vbraun, 10 years ago)

Initial patch

  • sage/symbolic/expression.pyx

    # HG changeset patch
    # User Volker Braun <vbraun@stp.dias.ie>
    # Date 1308366050 25200
    # Node ID 09e050bd0205abca596f37cee59ccd4adeed063c
    # Parent  6242c8cc814d4175932995072e0ed6f3d7b31735
    Trac #9880: Fix doctests in expression.pyx and random_tests.py
    
    diff --git a/sage/symbolic/expression.pyx b/sage/symbolic/expression.pyx
    a b  
    1515::
    1616
    1717    sage: eqn^2
    18     (x - 1)^4 <= (x^2 - 2*x + 3)^2
     18    (x - 1)^4 <= (-x^2 + 2*x - 3)^2
    1919    sage: eqn.expand()
    2020    x^2 - 2*x + 1 <= x^2 - 2*x + 3
    2121
     
    7878    sage: var('a,b,c')
    7979    (a, b, c)
    8080    sage: expand((u + v + a + b + c)^2)
    81     a^2 + 2*a*b + 2*a*c + 2*a*u + 2*a*v + b^2 + 2*b*c + 2*b*u + 2*b*v + c^2 + 2*c*u + 2*c*v + u^2 + 2*u*v + v^2
     81    a^2 + b^2 + 2*a*b + c^2 + 2*a*c + 2*b*c + u^2 + 2*a*u + 2*b*u + 2*c*u + v^2 + 2*a*v + 2*b*v + 2*c*v + 2*u*v
    8282
    8383TESTS:
    8484
     
    108108    sage: t*u
    109109    1
    110110    sage: t + u
    111     e^sqrt(x) + e^(-sqrt(x))
     111    e^(-sqrt(x)) + e^sqrt(x)
    112112    sage: t
    113113    e^sqrt(x)
    114114
     
    207207
    208208        OUTPUT:
    209209
    210         The python object corresponding to this expression, assuming
    211         this expression is a single numerical value. Otherwise, a
    212         TypeError is raised.
     210        The Python object corresponding to this expression, assuming
     211        this expression is a single numerical value or an infinity
     212        representable in Python. Otherwise, a ``TypeError`` is raised.
    213213
    214214        EXAMPLES::
    215215       
     
    233233            sage: SR(I*oo).pyobject()
    234234            Traceback (most recent call last):
    235235            ...
    236             ValueError: Python infinity cannot have complex phase.
     236            TypeError: Python infinity cannot have complex phase.
    237237        """
    238238        cdef GConstant* c
    239239        if is_a_constant(self._gobj):
     
    328328            sage: t = 2*x*y^z+3
    329329            sage: u = loads(dumps(t)) # indirect doctest
    330330            sage: u
    331             2*y^z*x + 3
     331            2*x*y^z + 3
    332332            sage: bool(t == u)
    333333            True
    334334            sage: u.subs(x=z)
     
    370370       
    371371        EXAMPLES::
    372372       
    373             sage: (1+x)._dbgprint()
     373            sage: (1+x)._dbgprint()   # random output
    374374            x + 1
    375375        """
    376376        self._gobj.dbgprint();
     
    557557        EXAMPLES::
    558558       
    559559            sage: gap(e + pi^2 + x^3)
    560             pi^2 + x^3 + e
     560            x^3 + pi^2 + e
    561561        """
    562562        return '"%s"'%repr(self)
    563563
     
    569569        EXAMPLES::
    570570       
    571571            sage: singular(e + pi^2 + x^3)
    572             pi^2 + x^3 + e
     572            x^3 + pi^2 + e
    573573        """
    574574        return '"%s"'%repr(self)
    575575
     
    585585            sage: x = var('x')                     
    586586            sage: f = sin(cos(x^2) + log(x))
    587587            sage: f._magma_init_(magma)
    588             '"sin(log(x) + cos(x^2))"'
     588            '"sin(cos(x^2) + log(x))"'
    589589            sage: magma(f)                         # optional - magma
    590590            sin(log(x) + cos(x^2))
    591591            sage: magma(f).Type()                  # optional - magma
     
    604604            sage: latex(y + 3*(x^(-1)))
    605605            y + \frac{3}{x}
    606606            sage: latex(x^(y+z^(1/y)))
    607             x^{z^{\left(\frac{1}{y}\right)} + y}
     607            x^{y + z^{\left(\frac{1}{y}\right)}}
    608608            sage: latex(1/sqrt(x+y))
    609609            \frac{1}{\sqrt{x + y}}
    610610            sage: latex(sin(x*(z+y)^x))
    611             \sin\left({\left(y + z\right)}^{x} x\right)
     611            \sin\left(x {\left(y + z\right)}^{x}\right)
    612612            sage: latex(3/2*(x+y)/z/y)
    613613            \frac{3 \, {\left(x + y\right)}}{2 \, y z}
    614614            sage: latex((2^(x^y)))
     
    618618            sage: latex((x*y).conjugate())
    619619            \overline{x} \overline{y}
    620620            sage: latex(x*(1/(x^2)+sqrt(x^7)))
    621             {\left(\sqrt{x^{7}} + \frac{1}{x^{2}}\right)} x
     621            x {\left(\sqrt{x^{7}} + \frac{1}{x^{2}}\right)}
    622622
    623623        Check spacing of coefficients of mul expressions (#3202)::
    624624
     
    631631            sage: latex((n+A/B)^(n+1))
    632632            {\left(n + \frac{A}{B}\right)}^{n + 1}
    633633            sage: latex((A*B)^n)
    634             {\left(A B\right)}^{n}
     634            \left(A B\right)^{n}
    635635            sage: latex((A*B)^(n-1))
    636             {\left(A B\right)}^{n - 1}
     636            \left(A B\right)^{n - 1}
    637637
    638638        Powers where the base or exponent is a Python object::
    639639       
     
    644644            sage: latex((2/3)^(2/3))
    645645            \left(\frac{2}{3}\right)^{\frac{2}{3}}
    646646            sage: latex((-x)^(1/4))
    647             {\left(-x\right)}^{\frac{1}{4}}
     647            \left(-x\right)^{\frac{1}{4}}
    648648            sage: k.<a> = GF(9)
    649649            sage: latex(SR(a+1)^x)
    650650            \left(a + 1\right)^{x}
     
    683683            sage: latex((x+2)*(x+1)/(x^3+1))
    684684            \frac{{\left(x + 1\right)} {\left(x + 2\right)}}{x^{3} + 1}
    685685            sage: latex((x+2)/(x^3+1)/(x+1))
    686             \frac{x + 2}{{\left(x + 1\right)} {\left(x^{3} + 1\right)}}
     686            \frac{x + 2}{{\left(x^{3} + 1\right)} {\left(x + 1\right)}}
    687687
    688688        Check that the sign is correct (#9086)::
    689689
     
    11991199            sage: x^3 -y == y + x
    12001200            x^3 - y == x + y
    12011201            sage: x^3 - y^10 >= y + x^10
    1202             x^3 - y^10 >= x^10 + y
     1202            -y^10 + x^3 >= x^10 + y
    12031203            sage: x^2 > x
    12041204            x^2 > x
    12051205        """
     
    12791279            sage: v,c = var('v,c')
    12801280            sage: assume(c != 0)
    12811281            sage: integral((1+v^2/c^2)^3/(1-v^2/c^2)^(3/2),v)
    1282             -75/8*sqrt(c^2)*arcsin(sqrt(c^2)*v/c^2) - 17/8*v^3/(sqrt(-v^2/c^2 + 1)*c^2) - 1/4*v^5/(sqrt(-v^2/c^2 + 1)*c^4) + 83/8*v/sqrt(-v^2/c^2 + 1)
     1282            -75/8*sqrt(c^2)*arcsin(sqrt(c^2)*v/c^2) - 1/4*v^5/(c^4*sqrt(-v^2/c^2 + 1)) - 17/8*v^3/(c^2*sqrt(-v^2/c^2 + 1)) + 83/8*v/sqrt(-v^2/c^2 + 1)
    12831283            sage: forget()
    12841284        """
    12851285        from sage.symbolic.assumptions import _assumptions
     
    22082208            sage: nsr(oo) - nsr(oo)
    22092209            Traceback (most recent call last):
    22102210            ...
    2211             RuntimeError: indeterminate expression: Infinity - Infinity encountered.
     2211            RuntimeError: indeterminate expression: infinity - infinity encountered.
    22122212            sage: nsr(-oo) - nsr(-oo)
    22132213            Traceback (most recent call last):
    22142214            ...
    2215             RuntimeError: indeterminate expression: Infinity - Infinity encountered.
     2215            RuntimeError: indeterminate expression: infinity - infinity encountered.
    22162216
    22172217            sage: nsr(unsigned_infinity) + nsr(oo)
    22182218            Traceback (most recent call last):
    22192219            ...
    2220             RuntimeError: indeterminate expression: unsigned_infinity + x where x is Infinity, -Infinity or unsigned infinity encountered.
     2220            RuntimeError: indeterminate expression: unsigned_infinity +- infinity encountered.
    22212221            sage: nsr(unsigned_infinity) - nsr(oo)
    22222222            Traceback (most recent call last):
    22232223            ...
    2224             RuntimeError: indeterminate expression: unsigned_infinity + x where x is Infinity, -Infinity or unsigned infinity encountered.
     2224            RuntimeError: indeterminate expression: unsigned_infinity +- infinity encountered.
    22252225            sage: nsr(oo) + nsr(unsigned_infinity)
    22262226            Traceback (most recent call last):
    22272227            ...
    2228             RuntimeError: indeterminate expression: unsigned_infinity + x where x is Infinity, -Infinity or unsigned infinity encountered.
     2228            RuntimeError: indeterminate expression: unsigned_infinity +- infinity encountered.
    22292229            sage: nsr(oo) - nsr(unsigned_infinity)
    22302230            Traceback (most recent call last):
    22312231            ...
    2232             RuntimeError: indeterminate expression: unsigned_infinity + x where x is Infinity, -Infinity or unsigned infinity encountered.
     2232            RuntimeError: indeterminate expression: unsigned_infinity +- infinity encountered.
    22332233            sage: nsr(unsigned_infinity) + nsr(unsigned_infinity)
    2234             Traceback (most recent call last):
    2235             ...
    2236             RuntimeError: indeterminate expression: unsigned_infinity + x where x is Infinity, -Infinity or unsigned infinity encountered.
    2237 
    2238 
     2234            Infinity
    22392235        """
    22402236        cdef GEx x
    22412237        cdef Expression _right = <Expression>right
     
    23912387        ::
    23922388
    23932389            sage: x*oo
    2394             +Infinity
    2395             sage: -x*oo
    2396             -Infinity
     2390            Traceback (most recent call last):
     2391            ...
     2392            ArithmeticError: indeterminate expression: infinity * f(x) encountered.
    23972393            sage: x*unsigned_infinity
    23982394            Traceback (most recent call last):
    23992395            ...
     
    24662462            sage: x/oo
    24672463            0
    24682464            sage: oo/x
    2469             +Infinity
     2465            Traceback (most recent call last):
     2466            ...
     2467            RuntimeError: indeterminate expression: infinity * f(x) encountered.
    24702468
    24712469            sage: SR(oo)/SR(oo)
    24722470            Traceback (most recent call last):
    24732471            ...
    2474             RuntimeError: indeterminate expression: 0*infinity encountered.
     2472            RuntimeError: indeterminate expression: 0 * infinity encountered.
    24752473
    24762474            sage: SR(-oo)/SR(oo)
    24772475            Traceback (most recent call last):
    24782476            ...
    2479             RuntimeError: indeterminate expression: 0*infinity encountered.
     2477            RuntimeError: indeterminate expression: 0 * infinity encountered.
    24802478
    24812479            sage: SR(oo)/SR(-oo)
    24822480            Traceback (most recent call last):
    24832481            ...
    2484             RuntimeError: indeterminate expression: 0*infinity encountered.
     2482            RuntimeError: indeterminate expression: 0 * infinity encountered.
    24852483
    24862484            sage: SR(oo)/SR(unsigned_infinity)
    24872485            Traceback (most recent call last):
    24882486            ...
    2489             RuntimeError: indeterminate expression: 0*infinity encountered.
     2487            RuntimeError: indeterminate expression: 0 * infinity encountered.
    24902488
    24912489            sage: SR(unsigned_infinity)/SR(oo)
    24922490            Traceback (most recent call last):
    24932491            ...
    2494             RuntimeError: indeterminate expression: 0*infinity encountered.
     2492            RuntimeError: indeterminate expression: 0 * infinity encountered.
    24952493
    24962494            sage: SR(0)/SR(oo)
    24972495            0
     
    26132611            sage: a = sqrt(3)
    26142612            sage: b = x^2+1
    26152613            sage: a.__cmp__(b)   # indirect doctest
    2616             -1
     2614            1
    26172615        """
    26182616        return print_order_compare((<Expression>right)._gobj, left._gobj)
    26192617
     
    27182716            sage: x^oo
    27192717            Traceback (most recent call last):
    27202718            ...
    2721             RuntimeError: power::eval(): pow(x, Infinity) for non numeric x is not defined.
     2719            RuntimeError: power::eval(): pow(f(x), infinity) is not defined.
    27222720            sage: SR(oo)^2
    27232721            +Infinity
    27242722            sage: SR(-oo)^2
     
    28312829            (x, y)
    28322830            sage: u = (sin(x) + cos(y))*(cos(x) - sin(y))
    28332831            sage: derivative(u,x,y)
    2834             sin(x)*sin(y) - cos(x)*cos(y)           
     2832            -cos(x)*cos(y) + sin(x)*sin(y)
    28352833            sage: f = ((x^2+1)/(x^2-1))^(1/4)
    28362834            sage: g = derivative(f, x); g # this is a complex expression
    28372835            1/2*(x/(x^2 - 1) - (x^2 + 1)*x/(x^2 - 1)^2)/((x^2 + 1)/(x^2 - 1))^(3/4)
     
    28432841            sage: y = var('y')
    28442842            sage: f = y^(sin(x))
    28452843            sage: derivative(f, x)
    2846             y^sin(x)*log(y)*cos(x)
     2844            y^sin(x)*cos(x)*log(y)
    28472845       
    28482846        ::
    28492847       
     
    28612859       
    28622860            sage: g = 1/(sqrt((x^2-1)*(x+5)^6))
    28632861            sage: derivative(g, x)
    2864             -((x + 5)^6*x + 3*(x + 5)^5*(x^2 - 1))/((x + 5)^6*(x^2 - 1))^(3/2)
     2862            -((x + 5)^6*x + 3*(x^2 - 1)*(x + 5)^5)/((x^2 - 1)*(x + 5)^6)^(3/2)
    28652863
    28662864        TESTS::
    28672865       
     
    30353033            sage: g = f.series(x==1, 4); g
    30363034            (-sin(y) - 1) + (-2*sin(y) - 2)*(x - 1) + (-sin(y) + 3)*(x - 1)^2 + 1*(x - 1)^3
    30373035            sage: h = g.truncate(); h
    3038             -(sin(y) - 3)*(x - 1)^2 + (x - 1)^3 - 2*(sin(y) + 1)*(x - 1) - sin(y) - 1
     3036            (x - 1)^3 - (x - 1)^2*(-sin(y) - 3) - 2*(x - 1)*(-2*sin(y) + 1) - sin(y) - 1
    30393037            sage: h.expand()
    30403038            x^3 - x^2*sin(y) - 5*x + 3
    30413039
     
    30453043            sage: f.series(x,7)
    30463044            1*x^(-1) + (-1/6)*x + 1/120*x^3 + (-1/5040)*x^5 + Order(x^7)
    30473045            sage: f.series(x==1,3)
    3048             (sin(1)) + (-2*sin(1) + cos(1))*(x - 1) + (5/2*sin(1) - 2*cos(1))*(x - 1)^2 + Order((x - 1)^3)
     3046            (sin(1)) + (cos(1) - 2*sin(1))*(x - 1) + (-2*cos(1) + 5/2*sin(1))*(x - 1)^2 + Order((x - 1)^3)
    30493047            sage: f.series(x==1,3).truncate().expand()
    3050             5/2*x^2*sin(1) - 2*x^2*cos(1) - 7*x*sin(1) + 5*x*cos(1) + 11/2*sin(1) - 3*cos(1)
     3048            -2*x^2*cos(1) + 5/2*x^2*sin(1) + 5*x*cos(1) - 7*x*sin(1) - 3*cos(1) + 11/2*sin(1)
    30513049
    30523050        Following the GiNaC tutorial, we use John Machin's amazing
    30533051        formula `\pi = 16 \tan^{-1}(1/5) - 4 \tan^{-1}(1/239)` to compute
     
    30983096            sage: var('a, x, z')
    30993097            (a, x, z)
    31003098            sage: taylor(a*log(z), z, 2, 3)
    3101             1/24*(z - 2)^3*a - 1/8*(z - 2)^2*a + 1/2*(z - 2)*a + a*log(2)
     3099            1/24*a*(z - 2)^3 - 1/8*a*(z - 2)^2 + 1/2*a*(z - 2) + a*log(2)
    31023100
    31033101        ::
    31043102
     
    31343132        Ticket #7472 fixed (Taylor polynomial in more variables) ::
    31353133 
    31363134            sage: x,y=var('x y'); taylor(x*y^3,(x,1),(y,1),4)
    3137             (y - 1)^3*(x - 1) + (y - 1)^3 + 3*(y - 1)^2*(x - 1) + 3*(y - 1)^2 + 3*(y - 1)*(x - 1) + x + 3*y - 3
     3135            (x - 1)*(y - 1)^3 + (y - 1)^3 + 3*(x - 1)*(y - 1)^2 + 3*(y - 1)^2 + 3*(x - 1)*(y - 1) + x + 3*y - 3
    31383136            sage: expand(_)
    31393137            x*y^3
    31403138
     
    31793177            sage: f.series(x,7).truncate()
    31803178            -1/5040*x^5 + 1/120*x^3 - 1/6*x + 1/x
    31813179            sage: f.series(x==1,3).truncate().expand()
    3182             5/2*x^2*sin(1) - 2*x^2*cos(1) - 7*x*sin(1) + 5*x*cos(1) + 11/2*sin(1) - 3*cos(1)
     3180            -2*x^2*cos(1) + 5/2*x^2*sin(1) + 5*x*cos(1) - 7*x*sin(1) - 3*cos(1) + 11/2*sin(1)
    31833181        """
    31843182        if not is_a_series(self._gobj):
    31853183            return self
     
    32023200            sage: x,y = var('x,y')
    32033201            sage: a = (x-y)^5
    32043202            sage: a.expand()
    3205             x^5 - 5*x^4*y + 10*x^3*y^2 - 10*x^2*y^3 + 5*x*y^4 - y^5
     3203            x^5 - y^5 + 5*x*y^4 - 10*x^2*y^3 + 10*x^3*y^2 - 5*x^4*y
    32063204            sage: expand(a)
    3207             x^5 - 5*x^4*y + 10*x^3*y^2 - 10*x^2*y^3 + 5*x*y^4 - y^5
     3205            x^5 - y^5 + 5*x*y^4 - 10*x^2*y^3 + 10*x^3*y^2 - 5*x^4*y
    32083206           
    32093207        We expand some other expressions::
    32103208       
    32113209            sage: expand((x-1)^3/(y-1))
    32123210            x^3/(y - 1) - 3*x^2/(y - 1) + 3*x/(y - 1) - 1/(y - 1)
    32133211            sage: expand((x+sin((x+y)^2))^2)
    3214             x^2 + 2*x*sin((x + y)^2) + sin((x + y)^2)^2
     3212            x^2 + sin((x + y)^2)^2 + 2*x*sin((x + y)^2)
    32153213
    32163214        We can expand individual sides of a relation::
    32173215
     
    32283226            sage: var('x,y')
    32293227            (x, y)
    32303228            sage: ((x + (2/3)*y)^3).expand()
    3231             x^3 + 2*x^2*y + 4/3*x*y^2 + 8/27*y^3
     3229            x^3 + 8/27*y^3 + 4/3*x*y^2 + 2*x^2*y
    32323230            sage: expand( (x*sin(x) - cos(y)/x)^2 )
    3233             x^2*sin(x)^2 - 2*sin(x)*cos(y) + cos(y)^2/x^2
     3231            x^2*sin(x)^2 - 2*cos(y)*sin(x) + cos(y)^2/x^2
    32343232            sage: f = (x-y)*(x+y); f
    32353233            (x - y)*(x + y)
    32363234            sage: f.expand()
     
    32893287        EXAMPLES::
    32903288       
    32913289            sage: sin(5*x).expand_trig()
    3292             sin(x)^5 - 10*sin(x)^3*cos(x)^2 + 5*sin(x)*cos(x)^4
     3290            sin(x)^5 - 10*cos(x)^2*sin(x)^3 + 5*cos(x)^4*sin(x)
    32933291            sage: cos(2*x + var('y')).expand_trig()
    3294             -sin(2*x)*sin(y) + cos(2*x)*cos(y)
     3292            cos(2*x)*cos(y) - sin(2*x)*sin(y)
    32953293       
    32963294        We illustrate various options to this function::
    32973295       
    32983296            sage: f = sin(sin(3*cos(2*x))*x)
    32993297            sage: f.expand_trig()
    3300             sin(-(sin(cos(2*x))^3 - 3*sin(cos(2*x))*cos(cos(2*x))^2)*x)
     3298            sin(-(sin(cos(2*x))^3 - 3*cos(cos(2*x))^2*sin(cos(2*x)))*x)
    33013299            sage: f.expand_trig(full=True)
    3302             sin(((sin(sin(x)^2)*cos(cos(x)^2) - sin(cos(x)^2)*cos(sin(x)^2))^3 - 3*(sin(sin(x)^2)*cos(cos(x)^2) - sin(cos(x)^2)*cos(sin(x)^2))*(sin(sin(x)^2)*sin(cos(x)^2) + cos(sin(x)^2)*cos(cos(x)^2))^2)*x)
     3300            sin(-((cos(sin(x)^2)*sin(cos(x)^2) - cos(cos(x)^2)*sin(sin(x)^2))^3 - 3*(cos(cos(x)^2)*cos(sin(x)^2) + sin(cos(x)^2)*sin(sin(x)^2))^2*(cos(sin(x)^2)*sin(cos(x)^2) - cos(cos(x)^2)*sin(sin(x)^2)))*x)
    33033301            sage: sin(2*x).expand_trig(times=False)
    33043302            sin(2*x)
    33053303            sage: sin(2*x).expand_trig(times=True)
    3306             2*sin(x)*cos(x)
     3304            2*cos(x)*sin(x)
    33073305            sage: sin(2 + x).expand_trig(plus=False)
    33083306            sin(x + 2)
    33093307            sage: sin(2 + x).expand_trig(plus=True)
    3310             sin(2)*cos(x) + sin(x)*cos(2)
     3308            cos(x)*sin(2) + cos(2)*sin(x)
    33113309            sage: sin(x/2).expand_trig(half_angles=False)
    33123310            sin(1/2*x)
    33133311            sage: sin(x/2).expand_trig(half_angles=True)
    3314             1/2*sqrt(-cos(x) + 1)*sqrt(2)*(-1)^floor(1/2*x/pi)
     3312            1/2*sqrt(2)*(-1)^floor(1/2*x/pi)*sqrt(-cos(x) + 1)
    33153313
    33163314        ALIASES:
    33173315
     
    33523350            sage: y=var('y')
    33533351            sage: f=sin(x)*cos(x)^3+sin(y)^2
    33543352            sage: f.reduce_trig()
    3355             1/4*sin(2*x) + 1/8*sin(4*x) - 1/2*cos(2*y) + 1/2
     3353            -1/2*cos(2*y) + 1/4*sin(2*x) + 1/8*sin(4*x) + 1/2
    33563354
    33573355        To reduce only the expressions involving x we use optional parameter::
    33583356
     
    34133411            {$0: x + y}
    34143412            sage: t = ((a+b)*(a+c)).match((a+w0)*(a+w1))
    34153413            sage: t[w0], t[w1]
    3416             (b, c)
     3414            (c, b)
    34173415            sage: ((a+b)*(a+c)).match((w0+b)*(w0+c))
    34183416            {$0: a}
    3419             sage: print ((a+b)*(a+c)).match((w0+w1)*(w0+w2))    # surprising?
    3420             None
     3417            sage: print ((a+b)*(a+c)).match((w0+w1)*(w0+w2))
     3418            {$2: b, $0: a, $1: c}
    34213419            sage: t = (a*(x+y)+a*z+b).match(a*w0+w1)
    34223420            sage: t[w0], t[w1]
    3423             (x + y, a*z + b)
     3421            (z, a*(x + y) + b)
    34243422            sage: print (a+b+c+d+e+f).match(c)
    34253423            None
    34263424            sage: (a+b+c+d+e+f).has(c)
     
    35863584            (x + y)^3 + b^2 + c
    35873585
    35883586            sage: t.subs({w0^2: w0^3})
    3589             (x + y)^3 + a^3 + b^3
     3587            a^3 + b^3 + (x + y)^3
    35903588
    35913589            # substitute with a relational expression
    35923590            sage: t.subs(w0^2 == w0^3)
    3593             (x + y)^3 + a^3 + b^3
     3591            a^3 + b^3 + (x + y)^3
    35943592
    35953593            sage: t.subs(w0==w0^2)
    35963594            (x^2 + y^2)^18 + a^16 + b^16           
     
    36303628            sage: (x/y).subs(y=oo)
    36313629            0
    36323630            sage: (x/y).subs(x=oo)
    3633             +Infinity
    3634             sage: (x*y).subs(x=oo)
    3635             +Infinity
     3631            Traceback (most recent call last):
     3632            ...
     3633            RuntimeError: indeterminate expression: infinity * f(x) encountered.
    36363634            sage: (x^y).subs(x=oo)
    36373635            Traceback (most recent call last):
    36383636            ...
    3639             RuntimeError: power::eval(): pow(Infinity, x) for non numeric x is not defined.
     3637            RuntimeError: power::eval(): pow(Infinity, f(x)) is not defined.
    36403638            sage: (x^y).subs(y=oo)
    36413639            Traceback (most recent call last):
    36423640            ...
    3643             RuntimeError: power::eval(): pow(x, Infinity) for non numeric x is not defined.
     3641            RuntimeError: power::eval(): pow(f(x), infinity) is not defined.
    36443642            sage: (x+y).subs(x=oo)
    36453643            +Infinity
    36463644            sage: (x-y).subs(y=oo)
     
    36953693            (x, y, z, a, b, c, d, e, f)
    36963694            sage: w0 = SR.wild(0); w1 = SR.wild(1)
    36973695            sage: (a^2 + b^2 + (x+y)^2)._subs_expr(w0^2 == w0^3)
    3698             (x + y)^3 + a^3 + b^3
     3696            a^3 + b^3 + (x + y)^3
    36993697            sage: (a^4 + b^4 + (x+y)^4)._subs_expr(w0^2 == w0^3)
    3700             (x + y)^4 + a^4 + b^4
     3698            a^4 + b^4 + (x + y)^4
    37013699            sage: (a^2 + b^4 + (x+y)^4)._subs_expr(w0^2 == w0^3)
    3702             (x + y)^4 + a^3 + b^4
     3700            b^4 + (x + y)^4 + a^3
    37033701            sage: ((a+b+c)^2)._subs_expr(a+b == x)
    37043702            (a + b + c)^2
    37053703            sage: ((a+b+c)^2)._subs_expr(a+b+w0 == x+w0)
     
    37233721            sage: (sin(x)^2 + cos(x)^2)._subs_expr(sin(w0)^2+cos(w0)^2==1)
    37243722            1
    37253723            sage: (1 + sin(x)^2 + cos(x)^2)._subs_expr(sin(w0)^2+cos(w0)^2==1)
    3726             sin(x)^2 + cos(x)^2 + 1
     3724            cos(x)^2 + sin(x)^2 + 1
    37273725            sage: (17*x + sin(x)^2 + cos(x)^2)._subs_expr(w1 + sin(w0)^2+cos(w0)^2 == w1 + 1)
    37283726            17*x + 1
    37293727            sage: ((x-1)*(sin(x)^2 + cos(x)^2)^2)._subs_expr(sin(w0)^2+cos(w0)^2 == 1)
     
    37703768            x^4 + x
    37713769            sage: f = cos(x^2) + sin(x^2)
    37723770            sage: f.subs_expr(x^2 == x)
    3773             sin(x) + cos(x)
     3771            cos(x) + sin(x)
    37743772       
    37753773        ::
    37763774       
    37773775            sage: f(x,y,t) = cos(x) + sin(y) + x^2 + y^2 + t
    37783776            sage: f.subs_expr(y^2 == t)
    3779             (x, y, t) |--> x^2 + 2*t + sin(y) + cos(x)
     3777            (x, y, t) |--> x^2 + 2*t + cos(x) + sin(y)
    37803778       
    37813779        The following seems really weird, but it *is* what Maple does::
    37823780       
    37833781            sage: f.subs_expr(x^2 + y^2 == t)
    3784             (x, y, t) |--> x^2 + y^2 + t + sin(y) + cos(x)
     3782            (x, y, t) |--> x^2 + y^2 + t + cos(x) + sin(y)
    37853783            sage: maple.eval('subs(x^2 + y^2 = t, cos(x) + sin(y) + x^2 + y^2 + t)')          # optional requires maple
    37863784            'cos(x)+sin(y)+x^2+y^2+t'
    37873785            sage: maxima.quit()
     
    38303828            sage: var('x,y,z')
    38313829            (x, y, z)
    38323830            sage: (x+y)(x=z^2, y=x^y)
    3833             x^y + z^2
     3831            z^2 + x^y
    38343832        """
    38353833        return self._parent._call_element_(self, *args, **kwds)
    38363834
     
    39683966            sage: var('a,b,c,x,y')
    39693967            (a, b, c, x, y)
    39703968            sage: (a^2 + b^2 + (x+y)^2).operands()
    3971             [(x + y)^2, a^2, b^2]
     3969            [a^2, b^2, (x + y)^2]
    39723970            sage: (a^2).operands()
    39733971            [a, 2]
    39743972            sage: (a*b^2*c).operands()
     
    43744372            sage: x.add(x, hold=True)
    43754373            x + x
    43764374            sage: x.add(x, (2+x), hold=True)
    4377             x + x + (x + 2)
     4375            (x + 2) + x + x
    43784376            sage: x.add(x, (2+x), x, hold=True)
    4379             x + x + (x + 2) + x
     4377            (x + 2) + x + x + x
    43804378            sage: x.add(x, (2+x), x, 2*x, hold=True)
    4381             x + x + (x + 2) + x + 2*x
     4379            (x + 2) + 2*x + x + x + x
    43824380
    43834381        To then evaluate again, we currently must use Maxima via
    43844382        :meth:`simplify`::
     
    44074405            sage: x.mul(x, hold=True)
    44084406            x*x
    44094407            sage: x.mul(x, (2+x), hold=True)
    4410             x*x*(x + 2)
     4408            (x + 2)*x*x
    44114409            sage: x.mul(x, (2+x), x, hold=True)
    4412             x*x*(x + 2)*x
     4410            (x + 2)*x*x*x
    44134411            sage: x.mul(x, (2+x), x, 2*x, hold=True)
    4414             x*x*(x + 2)*x*(2*x)
     4412            (2*x)*(x + 2)*x*x*x
    44154413
    44164414        To then evaluate again, we currently must use Maxima via
    44174415        :meth:`simplify`::
     
    44714469            sage: f.coefficient(sin(x*y))
    44724470            x^3 + 2/x
    44734471            sage: f.collect(sin(x*y))
    4474             (x^3 + 2/x)*sin(x*y) + a*x + x*y + x/y + 100
     4472            a*x + x*y + (x^3 + 2/x)*sin(x*y) + x/y + 100
    44754473
    44764474            sage: var('a, x, y, z')
    44774475            (a, x, y, z)
     
    46584656            sage: bool(p.poly(a) == (x-a*sqrt(2))^2 + x + 1)
    46594657            True           
    46604658            sage: p.poly(x)
    4661             -(2*sqrt(2)*a - 1)*x + 2*a^2 + x^2 + 1
     4659            2*a^2 + x^2 - (-2*sqrt(2)*a - 1)*x + 1
    46624660        """
    46634661        from sage.symbolic.ring import SR
    46644662        f = self._maxima_()
     
    48044802            sage: R = SR[x]
    48054803            sage: a = R(sqrt(2) + x^3 + y)
    48064804            sage: a
    4807             y + sqrt(2) + x^3
     4805            x^3 + y + sqrt(2)
    48084806            sage: type(a)
    48094807            <class 'sage.rings.polynomial.polynomial_element_generic.Polynomial_generic_dense_field'>
    48104808            sage: a.degree()
     
    49584956            (x, y, z)
    49594957            sage: f = 4*x*y + x*z + 20*y^2 + 21*y*z + 4*z^2 + x^2*y^2*z^2
    49604958            sage: f.collect(x)
    4961             x^2*y^2*z^2 + (4*y + z)*x + 20*y^2 + 21*y*z + 4*z^2
     4959            x^2*y^2*z^2 + 20*y^2 + x*(4*y + z) + 4*z^2 + 21*y*z
    49624960            sage: f.collect(y)
    4963             (x^2*z^2 + 20)*y^2 + (4*x + 21*z)*y + x*z + 4*z^2
     4961            (x^2*z^2 + 20)*y^2 + (4*x + 21*z)*y + 4*z^2 + x*z
    49644962            sage: f.collect(z)
    4965             (x^2*y^2 + 4)*z^2 + (x + 21*y)*z + 4*x*y + 20*y^2
     4963            (x^2*y^2 + 4)*z^2 + 20*y^2 + 4*x*y + (x + 21*y)*z
    49664964        """
    49674965        cdef Expression s0 = self.coerce_in(s)
    49684966        cdef GEx x
     
    52955293            (a, b)
    52965294            sage: f = log(a + b*I)
    52975295            sage: f.imag_part()
    5298             arctan2(real_part(b) + imag_part(a), real_part(a) - imag_part(b))
     5296            arctan2(imag_part(a) + real_part(b), -imag_part(b) + real_part(a))
    52995297
    53005298        Using the ``hold`` parameter it is possible to prevent automatic
    53015299        evaluation::
     
    57725770            sage: SR(1).arctan2(CDF(0,1))
    57735771            arctan2(1, 1.0*I)
    57745772
     5773            sage: arctan2(0,oo)                       
     5774            0
    57755775            sage: SR(oo).arctan2(oo)
    5776             Traceback (most recent call last):
    5777             ...
    5778             RuntimeError: arctan2_eval(): arctan2(infinity, infinity) encountered
     5776            1/4*pi
    57795777            sage: SR(oo).arctan2(0)
    5780             0
     5778            1/2*pi
    57815779            sage: SR(-oo).arctan2(0)
     5780            -1/2*pi
     5781            sage: SR(-oo).arctan2(-2)
    57825782            pi
    5783             sage: SR(-oo).arctan2(-2)
    5784             -pi
    57855783            sage: SR(unsigned_infinity).arctan2(2)
    57865784            Traceback (most recent call last):
    57875785            ...
    5788             RuntimeError: arctan2_eval(): arctan2(unsigned_infinity, x) encountered
     5786            RuntimeError: arctan2_eval(): arctan2(x, unsigned_infinity) encountered
    57895787            sage: SR(2).arctan2(oo)
    57905788            1/2*pi
    57915789            sage: SR(2).arctan2(-oo)
     
    57935791            sage: SR(2).arctan2(SR(unsigned_infinity))
    57945792            Traceback (most recent call last):
    57955793            ...
    5796             RuntimeError: arctan2_eval(): arctan2(x, unsigned_infinity) encountered
     5794            RuntimeError: arctan2_eval(): arctan2(unsigned_infinity, x) encountered
    57975795        """
    57985796        cdef Expression nexp = self.coerce_in(x)
    57995797        return new_Expression_from_GEx(self._parent,
     
    63156313            sage: x.factorial()
    63166314            factorial(x)
    63176315            sage: (x^2+y^3).factorial()
    6318             factorial(x^2 + y^3)
     6316            factorial(y^3 + x^2)
    63196317
    63206318        To prevent automatic evaluation use the ``hold`` argument::
    63216319
     
    66366634            sage: x, y, z, theta = var('x, y, z, theta')
    66376635            sage: f = (sqrt(x) + sqrt(y) + sqrt(z))/(x^10 - y^10 - sqrt(theta))
    66386636            sage: f.denominator()
    6639             sqrt(theta) - x^10 + y^10
     6637            x^10 - y^10 - sqrt(theta)
    66406638
    66416639            sage: y = var('y')
    66426640            sage: g = x + y/(x + 2); g
     
    68026800        EXAMPLES::
    68036801       
    68046802            sage: f = sin(x)^2 + cos(x)^2; f
    6805             sin(x)^2 + cos(x)^2
     6803            cos(x)^2 + sin(x)^2
    68066804            sage: f.simplify()
    6807             sin(x)^2 + cos(x)^2
     6805            cos(x)^2 + sin(x)^2
    68086806            sage: f.simplify_trig()
    68096807            1
    68106808            sage: h = sin(x)*csc(x)
     
    68186816
    68196817            sage: f=tan(3*x)
    68206818            sage: f.simplify_trig()
    6821             (4*cos(x)^2 - 1)*sin(x)/(4*cos(x)^3 - 3*cos(x))
     6819            -(4*cos(x)^2 - 1)*sin(x)/(-4*cos(x)^3 + 3*cos(x))
    68226820            sage: f.simplify_trig(False)           
    68236821            sin(3*x)/cos(3*x)
    68246822       
     
    68996897            sage: y = var('y')
    69006898            sage: g = (x^(y/2) + 1)^2*(x^(y/2) - 1)^2/(x^y - 1)
    69016899            sage: g.simplify_rational(algorithm='simple')
    6902             -(2*x^y - x^(2*y) - 1)/(x^y - 1)
     6900            (x^(2*y) - 2*x^y + 1)/(x^y - 1)
    69036901            sage: g.simplify_rational()
    69046902            x^y - 1
    69056903
     
    69106908            sage: f.simplify_rational()
    69116909            (2*x^2 + 5*x + 4)/(x^3 + 5*x^2 + 8*x + 4)
    69126910            sage: f.simplify_rational(algorithm='noexpand')
    6913             ((x + 1)*x + (x + 2)^2)/((x + 1)*(x + 2)^2)
    6914 
     6911            ((x + 2)^2 + (x + 1)*x)/((x + 1)*(x + 2)^2)
    69156912        """
    69166913        self_m = self._maxima_()
    69176914        if algorithm == 'full':
     
    69626959        ::
    69636960
    69646961            sage: f = binomial(n, k)*factorial(k)*factorial(n-k); f
    6965             factorial(-k + n)*factorial(k)*binomial(n, k)
     6962            binomial(n, k)*factorial(-k + n)*factorial(k)
    69666963            sage: f.simplify_factorial()
    69676964            factorial(n)
    69686965       
     
    71177114
    71187115            sage: f = log(x)+log(y)-1/3*log((x+1))
    71197116            sage: f.simplify_log()
    7120             -1/3*log(x + 1) + log(x*y)
     7117            log(x*y) - 1/3*log(x + 1)
    71217118
    71227119            sage: f.simplify_log('ratios')
    71237120            log(x*y/(x + 1)^(1/3))
     
    72997296       
    73007297            sage: x,y,z = var('x, y, z')
    73017298            sage: (x^3-y^3).factor()
    7302             (x - y)*(x^2 + x*y + y^2)
     7299            (x^2 + y^2 + x*y)*(x - y)
    73037300            sage: factor(-8*y - 4*x + z^2*(2*y + x))
    7304             (z - 2)*(z + 2)*(x + 2*y)
     7301            (x + 2*y)*(z - 2)*(z + 2)
    73057302            sage: f = -1 - 2*x - x^2 + y^2 + 2*x*y^2 + x^2*y^2
    73067303            sage: F = factor(f/(36*(1 + 2*y + y^2)), dontfactor=[x]); F
    7307             1/36*(y - 1)*(x^2 + 2*x + 1)/(y + 1)
     7304            1/36*(x^2 + 2*x + 1)*(y - 1)/(y + 1)
    73087305
    73097306        If you are factoring a polynomial with rational coefficients (and
    73107307        dontfactor is empty) the factorization is done using Singular
     
    73147311            sage: var('x,y')
    73157312            (x, y)
    73167313            sage: (x^99 + y^99).factor()
    7317             (x + y)*(x^2 - x*y + y^2)*(x^6 - x^3*y^3 + y^6)*...
     7314            (x^60 + y^60 + x^3*y^57 - x^9*y^51 - x^12*y^48 + x^18*y^42
     7315            + x^21*y^39 - x^27*y^33 - x^30*y^30 - x^33*y^27 + x^39*y^21
     7316            + x^42*y^18 - x^48*y^12 - x^51*y^9 + x^57*y^3)*(x^20 + y^20
     7317            + x*y^19 - x^3*y^17 - x^4*y^16 + x^6*y^14 + x^7*y^13 - x^9*y^11
     7318            - x^10*y^10 - x^11*y^9 + x^13*y^7 + x^14*y^6 - x^16*y^4
     7319            - x^17*y^3 + x^19*y)*(x^10 + y^10 - x*y^9 + x^2*y^8 - x^3*y^7
     7320            + x^4*y^6 - x^5*y^5 + x^6*y^4 - x^7*y^3 + x^8*y^2 - x^9*y)*(x^6
     7321            + y^6 - x^3*y^3)*(x^2 + y^2 - x*y)*(x + y)
    73187322        """
    73197323        from sage.calculus.calculus import symbolic_expression_from_maxima_string, symbolic_expression_from_string
    73207324        if len(dontfactor) > 0:
     
    73557359            (x, y, z)
    73567360            sage: f = x^3-y^3
    73577361            sage: f.factor()
    7358             (x - y)*(x^2 + x*y + y^2)
     7362            (x^2 + y^2 + x*y)*(x - y)
    73597363       
    73607364        Notice that the -1 factor is separated out::
    73617365       
    73627366            sage: f.factor_list()
    7363             [(x - y, 1), (x^2 + x*y + y^2, 1)]
     7367            [(x^2 + y^2 + x*y, 1), (x - y, 1)]
    73647368       
    73657369        We factor a fairly straightforward expression::
    73667370       
    73677371            sage: factor(-8*y - 4*x + z^2*(2*y + x)).factor_list()
    7368             [(z - 2, 1), (z + 2, 1), (x + 2*y, 1)]
     7372            [(x + 2*y, 1), (z - 2, 1), (z + 2, 1)]
    73697373
    73707374        A more complicated example::
    73717375       
     
    73737377            (x, u, v)
    73747378            sage: f = expand((2*u*v^2-v^2-4*u^3)^2 * (-u)^3 * (x-sin(x))^3)
    73757379            sage: f.factor()
    7376             -(x - sin(x))^3*(4*u^3 - 2*u*v^2 + v^2)^2*u^3
     7380            (-4*u^3 + 2*u*v^2 - v^2)^2*u^3*(-x + sin(x))^3
    73777381            sage: g = f.factor_list(); g                     
    7378             [(x - sin(x), 3), (4*u^3 - 2*u*v^2 + v^2, 2), (u, 3), (-1, 1)]
     7382            [(4*u^3 - 2*u*v^2 + v^2, 2), (u, 3), (x - sin(x), 3), (-1, 1)]
    73797383
    73807384        This function also works for quotients::
    73817385       
     
    73837387            sage: g = f/(36*(1 + 2*y + y^2)); g
    73847388            1/36*(x^2*y^2 + 2*x*y^2 - x^2 + y^2 - 2*x - 1)/(y^2 + 2*y + 1)
    73857389            sage: g.factor(dontfactor=[x])
    7386             1/36*(y - 1)*(x^2 + 2*x + 1)/(y + 1)
     7390            1/36*(x^2 + 2*x + 1)*(y - 1)/(y + 1)
    73877391            sage: g.factor_list(dontfactor=[x])
    7388             [(y - 1, 1), (y + 1, -1), (x^2 + 2*x + 1, 1), (1/36, 1)]
     7392            [(x^2 + 2*x + 1, 1), (y - 1, 1), (y + 1, -1), (1/36, 1)]
    73897393                   
    73907394        This example also illustrates that the exponents do not have to be
    73917395        integers::
     
    74087412        EXAMPLES::
    74097413       
    74107414            sage: g = factor(x^3 - 1); g
    7411             (x - 1)*(x^2 + x + 1)
     7415            (x^2 + x + 1)*(x - 1)
    74127416            sage: v = g._factor_list(); v
    7413             [(x - 1, 1), (x^2 + x + 1, 1)]
     7417            [(x^2 + x + 1, 1), (x - 1, 1)]
    74147418            sage: type(v)
    74157419            <type 'list'>
    74167420        """
     
    75537557        A complicated example::
    75547558       
    75557559            sage: f = expand((x^2 - 1)^3*(x^2 + 1)*(x-a)); f
    7556             -a*x^8 + x^9 + 2*a*x^6 - 2*x^7 - 2*a*x^2 + 2*x^3 + a - x
     7560            x^9 - a*x^8 - 2*x^7 + 2*a*x^6 + 2*x^3 - 2*a*x^2 + a - x
    75577561       
    75587562        The default variable is `a`, since it is the first in
    75597563        alphabetical order::
     
    75927596            sage: var('a,b,c,x')
    75937597            (a, b, c, x)
    75947598            sage: (a*x^2 + b*x + c).roots(x)
    7595             [(-1/2*(b + sqrt(-4*a*c + b^2))/a, 1), (-1/2*(b - sqrt(-4*a*c + b^2))/a, 1)]
     7599            [(-1/2*(b + sqrt(b^2 - 4*a*c))/a, 1), (-1/2*(b - sqrt(b^2 - 4*a*c))/a, 1)]
    75967600
    75977601        By default, all the roots are required to be explicit rather than
    75987602        implicit. To get implicit roots, pass ``explicit_solutions=False``
     
    76067610            ...
    76077611            RuntimeError: no explicit roots found
    76087612            sage: f.roots(explicit_solutions=False)
    7609             [((2^(8/9) - 2^(1/9) + x^(8/9) - x^(1/9))/(2^(8/9) - 2^(1/9)), 1)]
     7613            [((2^(8/9) + x^(8/9) - 2^(1/9) - x^(1/9))/(2^(8/9) - 2^(1/9)), 1)]
    76107614
    76117615        Another example, but involving a degree 5 poly whose roots don't
    76127616        get computed explicitly::
     
    76527656            (f6, f5, f4, x)
    76537657            sage: e=15*f6*x^2 + 5*f5*x + f4
    76547658            sage: res = e.roots(x); res
    7655             [(-1/30*(sqrt(-12*f4*f6 + 5*f5^2)*sqrt(5) + 5*f5)/f6, 1), (1/30*(sqrt(-12*f4*f6 + 5*f5^2)*sqrt(5) - 5*f5)/f6, 1)]
     7659            [(-1/30*(sqrt(5)*sqrt(5*f5^2 - 12*f4*f6) + 5*f5)/f6, 1),
     7660             (1/30*(sqrt(5)*sqrt(5*f5^2 - 12*f4*f6) - 5*f5)/f6, 1)]
    76567661            sage: e.subs(x=res[0][0]).is_zero()
    76577662            True
    76587663        """
     
    84568461        ::
    84578462
    84588463            sage: (k * binomial(n, k)).sum(k, 1, n)
    8459             n*2^(n - 1)
     8464            2^(n - 1)*n
    84608465
    84618466        ::
    84628467
     
    86748679            sage: f*(-2/3)
    86758680            -2/3*x - 2 < -2/3*y + 4/3
    86768681            sage: f*(-pi)
    8677             -(x + 3)*pi < -(y - 2)*pi
     8682            -pi*(x + 3) < -pi*(y - 2)
    86788683
    86798684        Since the direction of the inequality never changes when doing
    86808685        arithmetic with equations, you can multiply or divide the
  • sage/symbolic/random_tests.py

    diff --git a/sage/symbolic/random_tests.py b/sage/symbolic/random_tests.py
    a b  
    261261        sage: from sage.symbolic.random_tests import *
    262262        sage: set_random_seed(2)
    263263        sage: random_expr(50, nvars=3, coeff_generator=CDF.random_element)
    264         (euler_gamma - v3^(-e) + (v2 - factorial(-e/v2))^(((2.85879036573 - 1.18163393202*I)*v2 + (2.85879036573 - 1.18163393202*I)*v3)*pi - 0.247786879678 + 0.931826724898*I)*arccsc((0.891138386848 - 0.0936820840629*I)/v1) - (0.553423153995 - 0.5481180572*I)*v3 + 0.149683576515 - 0.155746451854*I)*v1 + arccsch(pi + e)*elliptic_f(khinchin*v2, 1.4656989704 + 0.863754357069*I)
     264        (euler_gamma + (v2 - factorial(-e/v2))^(pi*((2.85879036573 - 1.18163393202*I)*v2 + (2.85879036573 - 1.18163393202*I)*v3) - 0.247786879678 + 0.931826724898*I)*arccsc((0.891138386848 - 0.0936820840629*I)/v1) - (0.553423153995 - 0.5481180572*I)*v3 - v3^(-e) + 0.149683576515 - 0.155746451854*I)*v1 + arccsch(pi + e)*elliptic_f(khinchin*v2, 1.4656989704 + 0.863754357069*I)
    265265        sage: random_expr(5, verbose=True)
    266266        About to apply dirac_delta to [1]
    267267        About to apply arccsch to [0]
     
    334334        sage: for i,j in CartesianProduct(range(0,3),range(0,3)):
    335335        ...       cmp[i,j] = x[i].__cmp__(x[j])
    336336        sage: cmp
    337         [ 0  1  1]
    338         [-1  0 -1]
    339         [-1  1  0]
     337        [ 0 -1 -1]
     338        [ 1  0 -1]
     339        [ 1  1  0]
    340340    """
    341341    from sage.matrix.constructor import matrix
    342342    from sage.combinat.cartesian_product import CartesianProduct