Ticket #9880: trac_9880-fix_doctests_symbolic.take2.rebased-5.9.patch

File trac_9880-fix_doctests_symbolic.take2.rebased-5.9.patch, 25.8 KB (added by burcin, 8 years ago)
  • sage/symbolic/expression.pyx

    # HG changeset patch
    # User Volker Braun <vbraun@stp.dias.ie>
    # Date 1308366050 25200
    # Node ID 2e244ed82263ad4c616f67d41ac20b5dfcf33cb0
    # Parent  c170907c5514354976c7c5fea3bfe779b9bf375b
    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
     
    365365            sage: t = 2*x*y^z+3
    366366            sage: u = loads(dumps(t)) # indirect doctest
    367367            sage: u
    368             2*y^z*x + 3
     368            2*x*y^z + 3
    369369            sage: bool(t == u)
    370370            True
    371371            sage: u.subs(x=z)
     
    567567        EXAMPLES::
    568568       
    569569            sage: gap(e + pi^2 + x^3)
    570             pi^2 + x^3 + e
     570            x^3 + pi^2 + e
    571571        """
    572572        return '"%s"'%repr(self)
    573573
     
    579579        EXAMPLES::
    580580       
    581581            sage: singular(e + pi^2 + x^3)
    582             pi^2 + x^3 + e
     582            x^3 + pi^2 + e
    583583        """
    584584        return '"%s"'%repr(self)
    585585
     
    595595            sage: x = var('x')                     
    596596            sage: f = sin(cos(x^2) + log(x))
    597597            sage: f._magma_init_(magma)
    598             '"sin(log(x) + cos(x^2))"'
     598            '"sin(cos(x^2) + log(x))"'
    599599            sage: magma(f)                         # optional - magma
    600600            sin(log(x) + cos(x^2))
    601601            sage: magma(f).Type()                  # optional - magma
     
    614614            sage: latex(y + 3*(x^(-1)))
    615615            y + \frac{3}{x}
    616616            sage: latex(x^(y+z^(1/y)))
    617             x^{z^{\left(\frac{1}{y}\right)} + y}
     617            x^{y + z^{\left(\frac{1}{y}\right)}}
    618618            sage: latex(1/sqrt(x+y))
    619619            \frac{1}{\sqrt{x + y}}
    620620            sage: latex(sin(x*(z+y)^x))
    621             \sin\left({\left(y + z\right)}^{x} x\right)
     621            \sin\left(x {\left(y + z\right)}^{x}\right)
    622622            sage: latex(3/2*(x+y)/z/y)
    623623            \frac{3 \, {\left(x + y\right)}}{2 \, y z}
    624624            sage: latex((2^(x^y)))
     
    628628            sage: latex((x*y).conjugate())
    629629            \overline{x} \overline{y}
    630630            sage: latex(x*(1/(x^2)+sqrt(x^7)))
    631             {\left(\sqrt{x^{7}} + \frac{1}{x^{2}}\right)} x
     631            x {\left(\sqrt{x^{7}} + \frac{1}{x^{2}}\right)}
    632632
    633633        Check spacing of coefficients of mul expressions (#3202)::
    634634
     
    693693            sage: latex((x+2)*(x+1)/(x^3+1))
    694694            \frac{{\left(x + 1\right)} {\left(x + 2\right)}}{x^{3} + 1}
    695695            sage: latex((x+2)/(x^3+1)/(x+1))
    696             \frac{x + 2}{{\left(x + 1\right)} {\left(x^{3} + 1\right)}}
     696            \frac{x + 2}{{\left(x^{3} + 1\right)} {\left(x + 1\right)}}
    697697
    698698        Check that the sign is correct (#9086)::
    699699
     
    12741274            sage: x^3 -y == y + x
    12751275            x^3 - y == x + y
    12761276            sage: x^3 - y^10 >= y + x^10
    1277             x^3 - y^10 >= x^10 + y
     1277            -y^10 + x^3 >= x^10 + y
    12781278            sage: x^2 > x
    12791279            x^2 > x
    12801280
     
    14291429            sage: v,c = var('v,c')
    14301430            sage: assume(c != 0)
    14311431            sage: integral((1+v^2/c^2)^3/(1-v^2/c^2)^(3/2),v)
    1432             -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) - 75/8*arcsin(v/(c^2*sqrt(c^(-2))))/sqrt(c^(-2))
     1432            -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) - 75/8*arcsin(v/(c^2*sqrt(c^(-2))))/sqrt(c^(-2))
    14331433            sage: forget()
    14341434        """
    14351435        from sage.symbolic.assumptions import _assumptions
     
    28322832            sage: a = sqrt(3)
    28332833            sage: b = x^2+1
    28342834            sage: a.__cmp__(b)   # indirect doctest
    2835             -1
     2835            1
    28362836        """
    28372837        return print_order_compare(left._gobj, (<Expression>right)._gobj)
    28382838
     
    30763076            (x, y)
    30773077            sage: u = (sin(x) + cos(y))*(cos(x) - sin(y))
    30783078            sage: derivative(u,x,y)
    3079             sin(x)*sin(y) - cos(x)*cos(y)           
     3079            -cos(x)*cos(y) + sin(x)*sin(y)
    30803080            sage: f = ((x^2+1)/(x^2-1))^(1/4)
    30813081            sage: g = derivative(f, x); g # this is a complex expression
    30823082            1/2*(x/(x^2 - 1) - (x^2 + 1)*x/(x^2 - 1)^2)/((x^2 + 1)/(x^2 - 1))^(3/4)
     
    30883088            sage: y = var('y')
    30893089            sage: f = y^(sin(x))
    30903090            sage: derivative(f, x)
    3091             y^sin(x)*log(y)*cos(x)
     3091            y^sin(x)*cos(x)*log(y)
    30923092       
    30933093        ::
    30943094       
     
    31063106       
    31073107            sage: g = 1/(sqrt((x^2-1)*(x+5)^6))
    31083108            sage: derivative(g, x)
    3109             -((x + 5)^6*x + 3*(x + 5)^5*(x^2 - 1))/((x + 5)^6*(x^2 - 1))^(3/2)
     3109            -((x + 5)^6*x + 3*(x^2 - 1)*(x + 5)^5)/((x^2 - 1)*(x + 5)^6)^(3/2)
    31103110
    31113111        TESTS::
    31123112       
     
    32803280            sage: g = f.series(x==1, 4); g
    32813281            (-sin(y) - 1) + (-2*sin(y) - 2)*(x - 1) + (-sin(y) + 3)*(x - 1)^2 + 1*(x - 1)^3
    32823282            sage: h = g.truncate(); h
    3283             -(sin(y) - 3)*(x - 1)^2 + (x - 1)^3 - 2*(sin(y) + 1)*(x - 1) - sin(y) - 1
     3283            (x - 1)^3 - (x - 1)^2*(-sin(y) - 3) - 2*(x - 1)*(-2*sin(y) + 1) - sin(y) - 1
    32843284            sage: h.expand()
    32853285            x^3 - x^2*sin(y) - 5*x + 3
    32863286
     
    32903290            sage: f.series(x,7)
    32913291            1*x^(-1) + (-1/6)*x + 1/120*x^3 + (-1/5040)*x^5 + Order(x^7)
    32923292            sage: f.series(x==1,3)
    3293             (sin(1)) + (-2*sin(1) + cos(1))*(x - 1) + (5/2*sin(1) - 2*cos(1))*(x - 1)^2 + Order((x - 1)^3)
     3293            (sin(1)) + (cos(1) - 2*sin(1))*(x - 1) + (-2*cos(1) + 5/2*sin(1))*(x - 1)^2 + Order((x - 1)^3)
    32943294            sage: f.series(x==1,3).truncate().expand()
    3295             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)
     3295            -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)
    32963296
    32973297        Following the GiNaC tutorial, we use John Machin's amazing
    32983298        formula `\pi = 16 \tan^{-1}(1/5) - 4 \tan^{-1}(1/239)` to compute
     
    33433343            sage: var('a, x, z')
    33443344            (a, x, z)
    33453345            sage: taylor(a*log(z), z, 2, 3)
    3346             1/24*(z - 2)^3*a - 1/8*(z - 2)^2*a + 1/2*(z - 2)*a + a*log(2)
     3346            1/24*a*(z - 2)^3 - 1/8*a*(z - 2)^2 + 1/2*a*(z - 2) + a*log(2)
    33473347
    33483348        ::
    33493349
     
    33803380        Check that ticket #7472 is fixed (Taylor polynomial in more variables)::
    33813381 
    33823382            sage: x,y=var('x y'); taylor(x*y^3,(x,1),(y,1),4)
    3383             (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
     3383            (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
    33843384            sage: expand(_)
    33853385            x*y^3
    33863386
     
    34253425            sage: f.series(x,7).truncate()
    34263426            -1/5040*x^5 + 1/120*x^3 - 1/6*x + 1/x
    34273427            sage: f.series(x==1,3).truncate().expand()
    3428             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)
     3428            -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)
    34293429        """
    34303430        if not is_a_series(self._gobj):
    34313431            return self
     
    34483448            sage: x,y = var('x,y')
    34493449            sage: a = (x-y)^5
    34503450            sage: a.expand()
    3451             x^5 - 5*x^4*y + 10*x^3*y^2 - 10*x^2*y^3 + 5*x*y^4 - y^5
     3451            x^5 - y^5 + 5*x*y^4 - 10*x^2*y^3 + 10*x^3*y^2 - 5*x^4*y
    34523452            sage: expand(a)
    3453             x^5 - 5*x^4*y + 10*x^3*y^2 - 10*x^2*y^3 + 5*x*y^4 - y^5
     3453            x^5 - y^5 + 5*x*y^4 - 10*x^2*y^3 + 10*x^3*y^2 - 5*x^4*y
    34543454           
    34553455        We expand some other expressions::
    34563456       
    34573457            sage: expand((x-1)^3/(y-1))
    34583458            x^3/(y - 1) - 3*x^2/(y - 1) + 3*x/(y - 1) - 1/(y - 1)
    34593459            sage: expand((x+sin((x+y)^2))^2)
    3460             x^2 + 2*x*sin((x + y)^2) + sin((x + y)^2)^2
     3460            x^2 + sin((x + y)^2)^2 + 2*x*sin((x + y)^2)
    34613461
    34623462        We can expand individual sides of a relation::
    34633463
     
    34743474            sage: var('x,y')
    34753475            (x, y)
    34763476            sage: ((x + (2/3)*y)^3).expand()
    3477             x^3 + 2*x^2*y + 4/3*x*y^2 + 8/27*y^3
     3477            x^3 + 8/27*y^3 + 4/3*x*y^2 + 2*x^2*y
    34783478            sage: expand( (x*sin(x) - cos(y)/x)^2 )
    3479             x^2*sin(x)^2 - 2*sin(x)*cos(y) + cos(y)^2/x^2
     3479            x^2*sin(x)^2 - 2*cos(y)*sin(x) + cos(y)^2/x^2
    34803480            sage: f = (x-y)*(x+y); f
    34813481            (x - y)*(x + y)
    34823482            sage: f.expand()
     
    35353535        EXAMPLES::
    35363536       
    35373537            sage: sin(5*x).expand_trig()
    3538             sin(x)^5 - 10*sin(x)^3*cos(x)^2 + 5*sin(x)*cos(x)^4
     3538            sin(x)^5 - 10*cos(x)^2*sin(x)^3 + 5*cos(x)^4*sin(x)
    35393539            sage: cos(2*x + var('y')).expand_trig()
    3540             -sin(2*x)*sin(y) + cos(2*x)*cos(y)
     3540            cos(2*x)*cos(y) - sin(2*x)*sin(y)
    35413541       
    35423542        We illustrate various options to this function::
    35433543       
    35443544            sage: f = sin(sin(3*cos(2*x))*x)
    35453545            sage: f.expand_trig()
    3546             sin(-(sin(cos(2*x))^3 - 3*sin(cos(2*x))*cos(cos(2*x))^2)*x)
     3546            sin(-(sin(cos(2*x))^3 - 3*cos(cos(2*x))^2*sin(cos(2*x)))*x)
    35473547            sage: f.expand_trig(full=True)
    3548             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)
     3548            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)
    35493549            sage: sin(2*x).expand_trig(times=False)
    35503550            sin(2*x)
    35513551            sage: sin(2*x).expand_trig(times=True)
    3552             2*sin(x)*cos(x)
     3552            2*cos(x)*sin(x)
    35533553            sage: sin(2 + x).expand_trig(plus=False)
    35543554            sin(x + 2)
    35553555            sage: sin(2 + x).expand_trig(plus=True)
    3556             sin(2)*cos(x) + sin(x)*cos(2)
     3556            cos(x)*sin(2) + cos(2)*sin(x)
    35573557            sage: sin(x/2).expand_trig(half_angles=False)
    35583558            sin(1/2*x)
    35593559            sage: sin(x/2).expand_trig(half_angles=True)
     
    35983598            sage: y=var('y')
    35993599            sage: f=sin(x)*cos(x)^3+sin(y)^2
    36003600            sage: f.reduce_trig()
    3601             1/4*sin(2*x) + 1/8*sin(4*x) - 1/2*cos(2*y) + 1/2
     3601            -1/2*cos(2*y) + 1/4*sin(2*x) + 1/8*sin(4*x) + 1/2
    36023602
    36033603        To reduce only the expressions involving x we use optional parameter::
    36043604
     
    36593659            {$0: x + y}
    36603660            sage: t = ((a+b)*(a+c)).match((a+w0)*(a+w1))
    36613661            sage: t[w0], t[w1]
    3662             (b, c)
     3662            (c, b)
    36633663            sage: ((a+b)*(a+c)).match((w0+b)*(w0+c))
    36643664            {$0: a}
    36653665            sage: print ((a+b)*(a+c)).match((w0+w1)*(w0+w2))    # surprising?
    3666             None
     3666            {$2: b, $0: a, $1: c}
    36673667            sage: t = (a*(x+y)+a*z+b).match(a*w0+w1)
    36683668            sage: t[w0], t[w1]
    3669             (x + y, a*z + b)
     3669            (z, a*(x + y) + b)
    36703670            sage: print (a+b+c+d+f+g).match(c)
    36713671            None
    36723672            sage: (a+b+c+d+f+g).has(c)
     
    38233823            (x + y)^3 + b^2 + c
    38243824
    38253825            sage: t.subs({w0^2: w0^3})
    3826             (x + y)^3 + a^3 + b^3
     3826            a^3 + b^3 + (x + y)^3
    38273827
    38283828            # substitute with a relational expression
    38293829            sage: t.subs(w0^2 == w0^3)
    3830             (x + y)^3 + a^3 + b^3
     3830            a^3 + b^3 + (x + y)^3
    38313831
    38323832            sage: t.subs(w0==w0^2)
    38333833            (x^2 + y^2)^18 + a^16 + b^16           
     
    39453945            (x, y, z, a, b, c, d, f)
    39463946            sage: w0 = SR.wild(0); w1 = SR.wild(1)
    39473947            sage: (a^2 + b^2 + (x+y)^2)._subs_expr(w0^2 == w0^3)
    3948             (x + y)^3 + a^3 + b^3
     3948            a^3 + b^3 + (x + y)^3
    39493949            sage: (a^4 + b^4 + (x+y)^4)._subs_expr(w0^2 == w0^3)
    3950             (x + y)^4 + a^4 + b^4
     3950            a^4 + b^4 + (x + y)^4
    39513951            sage: (a^2 + b^4 + (x+y)^4)._subs_expr(w0^2 == w0^3)
    3952             (x + y)^4 + a^3 + b^4
     3952            b^4 + (x + y)^4 + a^3
    39533953            sage: ((a+b+c)^2)._subs_expr(a+b == x)
    39543954            (a + b + c)^2
    39553955            sage: ((a+b+c)^2)._subs_expr(a+b+w0 == x+w0)
     
    39733973            sage: (sin(x)^2 + cos(x)^2)._subs_expr(sin(w0)^2+cos(w0)^2==1)
    39743974            1
    39753975            sage: (1 + sin(x)^2 + cos(x)^2)._subs_expr(sin(w0)^2+cos(w0)^2==1)
    3976             sin(x)^2 + cos(x)^2 + 1
     3976            cos(x)^2 + sin(x)^2 + 1
    39773977            sage: (17*x + sin(x)^2 + cos(x)^2)._subs_expr(w1 + sin(w0)^2+cos(w0)^2 == w1 + 1)
    39783978            17*x + 1
    39793979            sage: ((x-1)*(sin(x)^2 + cos(x)^2)^2)._subs_expr(sin(w0)^2+cos(w0)^2 == 1)
     
    40204020            x^4 + x
    40214021            sage: f = cos(x^2) + sin(x^2)
    40224022            sage: f.subs_expr(x^2 == x)
    4023             sin(x) + cos(x)
     4023            cos(x) + sin(x)
    40244024       
    40254025        ::
    40264026       
    40274027            sage: f(x,y,t) = cos(x) + sin(y) + x^2 + y^2 + t
    40284028            sage: f.subs_expr(y^2 == t)
    4029             (x, y, t) |--> x^2 + 2*t + sin(y) + cos(x)
     4029            (x, y, t) |--> x^2 + 2*t + cos(x) + sin(y)
    40304030       
    40314031        The following seems really weird, but it *is* what Maple does::
    40324032       
    40334033            sage: f.subs_expr(x^2 + y^2 == t)
    4034             (x, y, t) |--> x^2 + y^2 + t + sin(y) + cos(x)
     4034            (x, y, t) |--> x^2 + y^2 + t + cos(x) + sin(y)
    40354035            sage: maple.eval('subs(x^2 + y^2 = t, cos(x) + sin(y) + x^2 + y^2 + t)')          # optional - maple
    40364036            'cos(x)+sin(y)+x^2+y^2+t'
    40374037            sage: maxima.quit()
     
    40804080            sage: var('x,y,z')
    40814081            (x, y, z)
    40824082            sage: (x+y)(x=z^2, y=x^y)
    4083             x^y + z^2
     4083            z^2 + x^y
    40844084        """
    40854085        return self._parent._call_element_(self, *args, **kwds)
    40864086
     
    42184218            sage: var('a,b,c,x,y')
    42194219            (a, b, c, x, y)
    42204220            sage: (a^2 + b^2 + (x+y)^2).operands()
    4221             [(x + y)^2, a^2, b^2]
     4221            [a^2, b^2, (x + y)^2]
    42224222            sage: (a^2).operands()
    42234223            [a, 2]
    42244224            sage: (a*b^2*c).operands()
     
    46514651            sage: x.add(x, hold=True)
    46524652            x + x
    46534653            sage: x.add(x, (2+x), hold=True)
    4654             x + x + (x + 2)
     4654            (x + 2) + x + x
    46554655            sage: x.add(x, (2+x), x, hold=True)
    4656             x + x + (x + 2) + x
     4656            (x + 2) + x + x + x
    46574657            sage: x.add(x, (2+x), x, 2*x, hold=True)
    4658             x + x + (x + 2) + x + 2*x
     4658            (x + 2) + 2*x + x + x + x
    46594659
    46604660        To then evaluate again, we currently must use Maxima via
    46614661        :meth:`simplify`::
     
    46844684            sage: x.mul(x, hold=True)
    46854685            x*x
    46864686            sage: x.mul(x, (2+x), hold=True)
    4687             x*x*(x + 2)
     4687            (x + 2)*x*x
    46884688            sage: x.mul(x, (2+x), x, hold=True)
    4689             x*x*(x + 2)*x
     4689            (x + 2)*x*x*x
    46904690            sage: x.mul(x, (2+x), x, 2*x, hold=True)
    4691             x*x*(x + 2)*x*(2*x)
     4691            (2*x)*(x + 2)*x*x*x
    46924692
    46934693        To then evaluate again, we currently must use Maxima via
    46944694        :meth:`simplify`::
     
    47484748            sage: f.coefficient(sin(x*y))
    47494749            x^3 + 2/x
    47504750            sage: f.collect(sin(x*y))
    4751             (x^3 + 2/x)*sin(x*y) + a*x + x*y + x/y + 100
     4751            a*x + x*y + (x^3 + 2/x)*sin(x*y) + x/y + 100
    47524752
    47534753            sage: var('a, x, y, z')
    47544754            (a, x, y, z)
     
    49354935            sage: bool(p.poly(a) == (x-a*sqrt(2))^2 + x + 1)
    49364936            True           
    49374937            sage: p.poly(x)
    4938             -(2*sqrt(2)*a - 1)*x + 2*a^2 + x^2 + 1
     4938            2*a^2 + x^2 - (-2*sqrt(2)*a - 1)*x + 1
    49394939        """
    49404940        from sage.symbolic.ring import SR
    49414941        f = self._maxima_()
     
    50815081            sage: R = SR[x]
    50825082            sage: a = R(sqrt(2) + x^3 + y)
    50835083            sage: a
    5084             y + sqrt(2) + x^3
     5084            x^3 + y + sqrt(2)
    50855085            sage: type(a)
    50865086            <class 'sage.rings.polynomial.polynomial_element_generic.Polynomial_generic_dense_field'>
    50875087            sage: a.degree()
     
    53065306            sage: x,y,z = var('x,y,z')
    53075307            sage: f = 4*x*y + x*z + 20*y^2 + 21*y*z + 4*z^2 + x^2*y^2*z^2
    53085308            sage: f.collect(x)
    5309             x^2*y^2*z^2 + (4*y + z)*x + 20*y^2 + 21*y*z + 4*z^2
     5309            x^2*y^2*z^2 + 20*y^2 + x*(4*y + z) + 4*z^2 + 21*y*z
    53105310
    53115311        Here we do the same thing for `y` and `z`; however, note that
    53125312        we don't factor the `y^{2}` and `z^{2}` terms before
    53135313        collecting coefficients::
    53145314
    53155315            sage: f.collect(y)
    5316             (x^2*z^2 + 20)*y^2 + (4*x + 21*z)*y + x*z + 4*z^2
     5316            (x^2*z^2 + 20)*y^2 + (4*x + 21*z)*y + 4*z^2 + x*z
    53175317            sage: f.collect(z)
    5318             (x^2*y^2 + 4)*z^2 + (x + 21*y)*z + 4*x*y + 20*y^2
     5318            (x^2*y^2 + 4)*z^2 + 20*y^2 + 4*x*y + (x + 21*y)*z
    53195319
    53205320        Sometimes, we do have to call :meth:`expand()` on the
    53215321        expression first to achieve the desired result::
     
    57055705            (a, b)
    57065706            sage: f = log(a + b*I)
    57075707            sage: f.imag_part()
    5708             arctan2(real_part(b) + imag_part(a), real_part(a) - imag_part(b))
     5708            arctan2(imag_part(a) + real_part(b), -imag_part(b) + real_part(a))
    57095709
    57105710        Using the ``hold`` parameter it is possible to prevent automatic
    57115711        evaluation::
     
    67306730            sage: x.factorial()
    67316731            factorial(x)
    67326732            sage: (x^2+y^3).factorial()
    6733             factorial(x^2 + y^3)
     6733            factorial(y^3 + x^2)
    67346734
    67356735        To prevent automatic evaluation use the ``hold`` argument::
    67366736
     
    75487548        EXAMPLES::
    75497549       
    75507550            sage: f = sin(x)^2 + cos(x)^2; f
    7551             sin(x)^2 + cos(x)^2
     7551            cos(x)^2 + sin(x)^2
    75527552            sage: f.simplify()
    7553             sin(x)^2 + cos(x)^2
     7553            cos(x)^2 + sin(x)^2
    75547554            sage: f.simplify_trig()
    75557555            1
    75567556            sage: h = sin(x)*csc(x)
     
    75647564
    75657565            sage: f=tan(3*x)
    75667566            sage: f.simplify_trig()
    7567             (4*cos(x)^2 - 1)*sin(x)/(4*cos(x)^3 - 3*cos(x))
     7567            -(4*cos(x)^2 - 1)*sin(x)/(-4*cos(x)^3 + 3*cos(x))
    75687568            sage: f.simplify_trig(False)           
    75697569            sin(3*x)/cos(3*x)
    75707570       
     
    76457645            sage: y = var('y')
    76467646            sage: g = (x^(y/2) + 1)^2*(x^(y/2) - 1)^2/(x^y - 1)
    76477647            sage: g.simplify_rational(algorithm='simple')
    7648             -(2*x^y - x^(2*y) - 1)/(x^y - 1)
     7648            (x^(2*y) - 2*x^y + 1)/(x^y - 1)
    76497649            sage: g.simplify_rational()
    76507650            x^y - 1
    76517651
     
    76567656            sage: f.simplify_rational()
    76577657            (2*x^2 + 5*x + 4)/(x^3 + 5*x^2 + 8*x + 4)
    76587658            sage: f.simplify_rational(algorithm='noexpand')
    7659             ((x + 1)*x + (x + 2)^2)/((x + 1)*(x + 2)^2)
    7660 
     7659            ((x + 2)^2 + (x + 1)*x)/((x + 1)*(x + 2)^2)
    76617660        """
    76627661        self_m = self._maxima_()
    76637662        if algorithm == 'full':
     
    77097708        ::
    77107709
    77117710            sage: f = binomial(n, k)*factorial(k)*factorial(n-k); f
    7712             factorial(-k + n)*factorial(k)*binomial(n, k)
     7711            binomial(n, k)*factorial(-k + n)*factorial(k)
    77137712            sage: f.simplify_factorial()
    77147713            factorial(n)
    77157714       
     
    79027901
    79037902            sage: f = log(x)+log(y)-1/3*log((x+1))
    79047903            sage: f.simplify_log()
    7905             -1/3*log(x + 1) + log(x*y)
     7904            log(x*y) - 1/3*log(x + 1)
    79067905
    79077906            sage: f.simplify_log('ratios')
    79087907            log(x*y/(x + 1)^(1/3))
     
    81178116       
    81188117            sage: x,y,z = var('x, y, z')
    81198118            sage: (x^3-y^3).factor()
    8120             (x - y)*(x^2 + x*y + y^2)
     8119            (x^2 + y^2 + x*y)*(x - y)
    81218120            sage: factor(-8*y - 4*x + z^2*(2*y + x))
    8122             (z - 2)*(z + 2)*(x + 2*y)
     8121            (x + 2*y)*(z - 2)*(z + 2)
    81238122            sage: f = -1 - 2*x - x^2 + y^2 + 2*x*y^2 + x^2*y^2
    81248123            sage: F = factor(f/(36*(1 + 2*y + y^2)), dontfactor=[x]); F
    8125             1/36*(y - 1)*(x^2 + 2*x + 1)/(y + 1)
     8124            1/36*(x^2 + 2*x + 1)*(y - 1)/(y + 1)
    81268125
    81278126        If you are factoring a polynomial with rational coefficients (and
    81288127        dontfactor is empty) the factorization is done using Singular
     
    81328131            sage: var('x,y')
    81338132            (x, y)
    81348133            sage: (x^99 + y^99).factor()
    8135             (x + y)*(x^2 - x*y + y^2)*(x^6 - x^3*y^3 + y^6)*...
     8134            (x^60 + y^60 + x^3*y^57 - x^9*y^51 - x^12*y^48 + x^18*y^42
     8135            + x^21*y^39 - x^27*y^33 - x^30*y^30 - x^33*y^27 + x^39*y^21
     8136            + x^42*y^18 - x^48*y^12 - x^51*y^9 + x^57*y^3)*(x^20 + y^20
     8137            + x*y^19 - x^3*y^17 - x^4*y^16 + x^6*y^14 + x^7*y^13 - x^9*y^11
     8138            - x^10*y^10 - x^11*y^9 + x^13*y^7 + x^14*y^6 - x^16*y^4
     8139            - x^17*y^3 + x^19*y)*(x^10 + y^10 - x*y^9 + x^2*y^8 - x^3*y^7
     8140            + 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
     8141            + y^6 - x^3*y^3)*(x^2 + y^2 - x*y)*(x + y)
    81368142        """
    81378143        from sage.calculus.calculus import symbolic_expression_from_maxima_string, symbolic_expression_from_string
    81388144        if len(dontfactor) > 0:
     
    81738179            (x, y, z)
    81748180            sage: f = x^3-y^3
    81758181            sage: f.factor()
    8176             (x - y)*(x^2 + x*y + y^2)
     8182            (x^2 + y^2 + x*y)*(x - y)
    81778183       
    81788184        Notice that the -1 factor is separated out::
    81798185       
    81808186            sage: f.factor_list()
    8181             [(x - y, 1), (x^2 + x*y + y^2, 1)]
     8187            [(x^2 + y^2 + x*y, 1), (x - y, 1)]
    81828188       
    81838189        We factor a fairly straightforward expression::
    81848190       
    81858191            sage: factor(-8*y - 4*x + z^2*(2*y + x)).factor_list()
    8186             [(z - 2, 1), (z + 2, 1), (x + 2*y, 1)]
     8192            [(x + 2*y, 1), (z - 2, 1), (z + 2, 1)]
    81878193
    81888194        A more complicated example::
    81898195       
     
    81918197            (x, u, v)
    81928198            sage: f = expand((2*u*v^2-v^2-4*u^3)^2 * (-u)^3 * (x-sin(x))^3)
    81938199            sage: f.factor()
    8194             -(x - sin(x))^3*(4*u^3 - 2*u*v^2 + v^2)^2*u^3
     8200            (-4*u^3 + 2*u*v^2 - v^2)^2*u^3*(-x + sin(x))^3
    81958201            sage: g = f.factor_list(); g                     
    8196             [(x - sin(x), 3), (4*u^3 - 2*u*v^2 + v^2, 2), (u, 3), (-1, 1)]
     8202            [(4*u^3 - 2*u*v^2 + v^2, 2), (u, 3), (x - sin(x), 3), (-1, 1)]
    81978203
    81988204        This function also works for quotients::
    81998205       
     
    82018207            sage: g = f/(36*(1 + 2*y + y^2)); g
    82028208            1/36*(x^2*y^2 + 2*x*y^2 - x^2 + y^2 - 2*x - 1)/(y^2 + 2*y + 1)
    82038209            sage: g.factor(dontfactor=[x])
    8204             1/36*(y - 1)*(x^2 + 2*x + 1)/(y + 1)
     8210            1/36*(x^2 + 2*x + 1)*(y - 1)/(y + 1)
    82058211            sage: g.factor_list(dontfactor=[x])
    8206             [(y - 1, 1), (y + 1, -1), (x^2 + 2*x + 1, 1), (1/36, 1)]
     8212            [(x^2 + 2*x + 1, 1), (y - 1, 1), (y + 1, -1), (1/36, 1)]
    82078213                   
    82088214        This example also illustrates that the exponents do not have to be
    82098215        integers::
     
    82268232        EXAMPLES::
    82278233       
    82288234            sage: g = factor(x^3 - 1); g
    8229             (x - 1)*(x^2 + x + 1)
     8235            (x^2 + x + 1)*(x - 1)
    82308236            sage: v = g._factor_list(); v
    8231             [(x - 1, 1), (x^2 + x + 1, 1)]
     8237            [(x^2 + x + 1, 1), (x - 1, 1)]
    82328238            sage: type(v)
    82338239            <type 'list'>
    82348240        """
     
    83728378        A complicated example::
    83738379       
    83748380            sage: f = expand((x^2 - 1)^3*(x^2 + 1)*(x-a)); f
    8375             -a*x^8 + x^9 + 2*a*x^6 - 2*x^7 - 2*a*x^2 + 2*x^3 + a - x
     8381            x^9 - a*x^8 - 2*x^7 + 2*a*x^6 + 2*x^3 - 2*a*x^2 + a - x
    83768382       
    83778383        The default variable is `a`, since it is the first in
    83788384        alphabetical order::
     
    84118417            sage: var('a,b,c,x')
    84128418            (a, b, c, x)
    84138419            sage: (a*x^2 + b*x + c).roots(x)
    8414             [(-1/2*(b + sqrt(-4*a*c + b^2))/a, 1), (-1/2*(b - sqrt(-4*a*c + b^2))/a, 1)]
     8420            [(-1/2*(b + sqrt(b^2 - 4*a*c))/a, 1), (-1/2*(b - sqrt(b^2 - 4*a*c))/a, 1)]
    84158421
    84168422        By default, all the roots are required to be explicit rather than
    84178423        implicit. To get implicit roots, pass ``explicit_solutions=False``
     
    84258431            ...
    84268432            RuntimeError: no explicit roots found
    84278433            sage: f.roots(explicit_solutions=False)
    8428             [((2^(8/9) - 2^(1/9) + x^(8/9) - x^(1/9))/(2^(8/9) - 2^(1/9)), 1)]
     8434            [((2^(8/9) + x^(8/9) - 2^(1/9) - x^(1/9))/(2^(8/9) - 2^(1/9)), 1)]
    84298435
    84308436        Another example, but involving a degree 5 poly whose roots don't
    84318437        get computed explicitly::
     
    92999305        ::
    93009306
    93019307            sage: (k * binomial(n, k)).sum(k, 1, n)
    9302             n*2^(n - 1)
     9308            2^(n - 1)*n
    93039309
    93049310        ::
    93059311
     
    95689574            sage: f*(-2/3)
    95699575            -2/3*x - 2 < -2/3*y + 4/3
    95709576            sage: f*(-pi)
    9571             -(x + 3)*pi < -(y - 2)*pi
     9577            -pi*(x + 3) < -pi*(y - 2)
    95729578
    95739579        Since the direction of the inequality never changes when doing
    95749580        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  
    339339        sage: for i,j in CartesianProduct(range(0,3),range(0,3)):
    340340        ...       cmp[i,j] = x[i].__cmp__(x[j])
    341341        sage: cmp
    342         [ 0  1  1]
    343         [-1  0 -1]
    344         [-1  1  0]
     342        [ 0 -1 -1]
     343        [ 1  0 -1]
     344        [ 1  1  0]
    345345    """
    346346    from sage.matrix.constructor import matrix
    347347    from sage.combinat.cartesian_product import CartesianProduct