Ticket #9880: trac_9880-fix_doctests_symbolic.take2.rebased-5.5.rc0.patch

File trac_9880-fix_doctests_symbolic.take2.rebased-5.5.rc0.patch, 25.6 KB (added by burcin, 9 years ago)
  • sage/symbolic/expression.pyx

    # HG changeset patch
    # User Volker Braun <vbraun@stp.dias.ie>
    # Date 1308366050 25200
    # Node ID a2c98344304083277ed8b550baf9a74988f3fbdb
    # Parent  5ff645bc343e48e6221f766c258d7ee372da007a
    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
     
    28782878            sage: a = sqrt(3)
    28792879            sage: b = x^2+1
    28802880            sage: a.__cmp__(b)   # indirect doctest
    2881             -1
     2881            1
    28822882        """
    28832883        return print_order_compare(left._gobj, (<Expression>right)._gobj)
    28842884
     
    31223122            (x, y)
    31233123            sage: u = (sin(x) + cos(y))*(cos(x) - sin(y))
    31243124            sage: derivative(u,x,y)
    3125             sin(x)*sin(y) - cos(x)*cos(y)           
     3125            -cos(x)*cos(y) + sin(x)*sin(y)
    31263126            sage: f = ((x^2+1)/(x^2-1))^(1/4)
    31273127            sage: g = derivative(f, x); g # this is a complex expression
    31283128            1/2*(x/(x^2 - 1) - (x^2 + 1)*x/(x^2 - 1)^2)/((x^2 + 1)/(x^2 - 1))^(3/4)
     
    31343134            sage: y = var('y')
    31353135            sage: f = y^(sin(x))
    31363136            sage: derivative(f, x)
    3137             y^sin(x)*log(y)*cos(x)
     3137            y^sin(x)*cos(x)*log(y)
    31383138       
    31393139        ::
    31403140       
     
    31523152       
    31533153            sage: g = 1/(sqrt((x^2-1)*(x+5)^6))
    31543154            sage: derivative(g, x)
    3155             -((x + 5)^6*x + 3*(x + 5)^5*(x^2 - 1))/((x + 5)^6*(x^2 - 1))^(3/2)
     3155            -((x + 5)^6*x + 3*(x^2 - 1)*(x + 5)^5)/((x^2 - 1)*(x + 5)^6)^(3/2)
    31563156
    31573157        TESTS::
    31583158       
     
    33263326            sage: g = f.series(x==1, 4); g
    33273327            (-sin(y) - 1) + (-2*sin(y) - 2)*(x - 1) + (-sin(y) + 3)*(x - 1)^2 + 1*(x - 1)^3
    33283328            sage: h = g.truncate(); h
    3329             -(sin(y) - 3)*(x - 1)^2 + (x - 1)^3 - 2*(sin(y) + 1)*(x - 1) - sin(y) - 1
     3329            (x - 1)^3 - (x - 1)^2*(-sin(y) - 3) - 2*(x - 1)*(-2*sin(y) + 1) - sin(y) - 1
    33303330            sage: h.expand()
    33313331            x^3 - x^2*sin(y) - 5*x + 3
    33323332
     
    33363336            sage: f.series(x,7)
    33373337            1*x^(-1) + (-1/6)*x + 1/120*x^3 + (-1/5040)*x^5 + Order(x^7)
    33383338            sage: f.series(x==1,3)
    3339             (sin(1)) + (-2*sin(1) + cos(1))*(x - 1) + (5/2*sin(1) - 2*cos(1))*(x - 1)^2 + Order((x - 1)^3)
     3339            (sin(1)) + (cos(1) - 2*sin(1))*(x - 1) + (-2*cos(1) + 5/2*sin(1))*(x - 1)^2 + Order((x - 1)^3)
    33403340            sage: f.series(x==1,3).truncate().expand()
    3341             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)
     3341            -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)
    33423342
    33433343        Following the GiNaC tutorial, we use John Machin's amazing
    33443344        formula `\pi = 16 \tan^{-1}(1/5) - 4 \tan^{-1}(1/239)` to compute
     
    33893389            sage: var('a, x, z')
    33903390            (a, x, z)
    33913391            sage: taylor(a*log(z), z, 2, 3)
    3392             1/24*(z - 2)^3*a - 1/8*(z - 2)^2*a + 1/2*(z - 2)*a + a*log(2)
     3392            1/24*a*(z - 2)^3 - 1/8*a*(z - 2)^2 + 1/2*a*(z - 2) + a*log(2)
    33933393
    33943394        ::
    33953395
     
    34263426        Check that ticket #7472 is fixed (Taylor polynomial in more variables)::
    34273427 
    34283428            sage: x,y=var('x y'); taylor(x*y^3,(x,1),(y,1),4)
    3429             (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
     3429            (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
    34303430            sage: expand(_)
    34313431            x*y^3
    34323432
     
    34713471            sage: f.series(x,7).truncate()
    34723472            -1/5040*x^5 + 1/120*x^3 - 1/6*x + 1/x
    34733473            sage: f.series(x==1,3).truncate().expand()
    3474             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)
     3474            -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)
    34753475        """
    34763476        if not is_a_series(self._gobj):
    34773477            return self
     
    34943494            sage: x,y = var('x,y')
    34953495            sage: a = (x-y)^5
    34963496            sage: a.expand()
    3497             x^5 - 5*x^4*y + 10*x^3*y^2 - 10*x^2*y^3 + 5*x*y^4 - y^5
     3497            x^5 - y^5 + 5*x*y^4 - 10*x^2*y^3 + 10*x^3*y^2 - 5*x^4*y
    34983498            sage: expand(a)
    3499             x^5 - 5*x^4*y + 10*x^3*y^2 - 10*x^2*y^3 + 5*x*y^4 - y^5
     3499            x^5 - y^5 + 5*x*y^4 - 10*x^2*y^3 + 10*x^3*y^2 - 5*x^4*y
    35003500           
    35013501        We expand some other expressions::
    35023502       
    35033503            sage: expand((x-1)^3/(y-1))
    35043504            x^3/(y - 1) - 3*x^2/(y - 1) + 3*x/(y - 1) - 1/(y - 1)
    35053505            sage: expand((x+sin((x+y)^2))^2)
    3506             x^2 + 2*x*sin((x + y)^2) + sin((x + y)^2)^2
     3506            x^2 + sin((x + y)^2)^2 + 2*x*sin((x + y)^2)
    35073507
    35083508        We can expand individual sides of a relation::
    35093509
     
    35203520            sage: var('x,y')
    35213521            (x, y)
    35223522            sage: ((x + (2/3)*y)^3).expand()
    3523             x^3 + 2*x^2*y + 4/3*x*y^2 + 8/27*y^3
     3523            x^3 + 8/27*y^3 + 4/3*x*y^2 + 2*x^2*y
    35243524            sage: expand( (x*sin(x) - cos(y)/x)^2 )
    3525             x^2*sin(x)^2 - 2*sin(x)*cos(y) + cos(y)^2/x^2
     3525            x^2*sin(x)^2 - 2*cos(y)*sin(x) + cos(y)^2/x^2
    35263526            sage: f = (x-y)*(x+y); f
    35273527            (x - y)*(x + y)
    35283528            sage: f.expand()
     
    35813581        EXAMPLES::
    35823582       
    35833583            sage: sin(5*x).expand_trig()
    3584             sin(x)^5 - 10*sin(x)^3*cos(x)^2 + 5*sin(x)*cos(x)^4
     3584            sin(x)^5 - 10*cos(x)^2*sin(x)^3 + 5*cos(x)^4*sin(x)
    35853585            sage: cos(2*x + var('y')).expand_trig()
    3586             -sin(2*x)*sin(y) + cos(2*x)*cos(y)
     3586            cos(2*x)*cos(y) - sin(2*x)*sin(y)
    35873587       
    35883588        We illustrate various options to this function::
    35893589       
    35903590            sage: f = sin(sin(3*cos(2*x))*x)
    35913591            sage: f.expand_trig()
    3592             sin(-(sin(cos(2*x))^3 - 3*sin(cos(2*x))*cos(cos(2*x))^2)*x)
     3592            sin(-(sin(cos(2*x))^3 - 3*cos(cos(2*x))^2*sin(cos(2*x)))*x)
    35933593            sage: f.expand_trig(full=True)
    3594             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)
     3594            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)
    35953595            sage: sin(2*x).expand_trig(times=False)
    35963596            sin(2*x)
    35973597            sage: sin(2*x).expand_trig(times=True)
    3598             2*sin(x)*cos(x)
     3598            2*cos(x)*sin(x)
    35993599            sage: sin(2 + x).expand_trig(plus=False)
    36003600            sin(x + 2)
    36013601            sage: sin(2 + x).expand_trig(plus=True)
    3602             sin(2)*cos(x) + sin(x)*cos(2)
     3602            cos(x)*sin(2) + cos(2)*sin(x)
    36033603            sage: sin(x/2).expand_trig(half_angles=False)
    36043604            sin(1/2*x)
    36053605            sage: sin(x/2).expand_trig(half_angles=True)
     
    36443644            sage: y=var('y')
    36453645            sage: f=sin(x)*cos(x)^3+sin(y)^2
    36463646            sage: f.reduce_trig()
    3647             1/4*sin(2*x) + 1/8*sin(4*x) - 1/2*cos(2*y) + 1/2
     3647            -1/2*cos(2*y) + 1/4*sin(2*x) + 1/8*sin(4*x) + 1/2
    36483648
    36493649        To reduce only the expressions involving x we use optional parameter::
    36503650
     
    37053705            {$0: x + y}
    37063706            sage: t = ((a+b)*(a+c)).match((a+w0)*(a+w1))
    37073707            sage: t[w0], t[w1]
    3708             (b, c)
     3708            (c, b)
    37093709            sage: ((a+b)*(a+c)).match((w0+b)*(w0+c))
    37103710            {$0: a}
    3711             sage: print ((a+b)*(a+c)).match((w0+w1)*(w0+w2))    # surprising?
    3712             None
     3711            sage: print ((a+b)*(a+c)).match((w0+w1)*(w0+w2))
     3712            {$2: b, $0: a, $1: c}
    37133713            sage: t = (a*(x+y)+a*z+b).match(a*w0+w1)
    37143714            sage: t[w0], t[w1]
    3715             (x + y, a*z + b)
     3715            (z, a*(x + y) + b)
    37163716            sage: print (a+b+c+d+e+f).match(c)
    37173717            None
    37183718            sage: (a+b+c+d+e+f).has(c)
     
    38693869            (x + y)^3 + b^2 + c
    38703870
    38713871            sage: t.subs({w0^2: w0^3})
    3872             (x + y)^3 + a^3 + b^3
     3872            a^3 + b^3 + (x + y)^3
    38733873
    38743874            # substitute with a relational expression
    38753875            sage: t.subs(w0^2 == w0^3)
    3876             (x + y)^3 + a^3 + b^3
     3876            a^3 + b^3 + (x + y)^3
    38773877
    38783878            sage: t.subs(w0==w0^2)
    38793879            (x^2 + y^2)^18 + a^16 + b^16           
     
    39913991            (x, y, z, a, b, c, d, e, f)
    39923992            sage: w0 = SR.wild(0); w1 = SR.wild(1)
    39933993            sage: (a^2 + b^2 + (x+y)^2)._subs_expr(w0^2 == w0^3)
    3994             (x + y)^3 + a^3 + b^3
     3994            a^3 + b^3 + (x + y)^3
    39953995            sage: (a^4 + b^4 + (x+y)^4)._subs_expr(w0^2 == w0^3)
    3996             (x + y)^4 + a^4 + b^4
     3996            a^4 + b^4 + (x + y)^4
    39973997            sage: (a^2 + b^4 + (x+y)^4)._subs_expr(w0^2 == w0^3)
    3998             (x + y)^4 + a^3 + b^4
     3998            b^4 + (x + y)^4 + a^3
    39993999            sage: ((a+b+c)^2)._subs_expr(a+b == x)
    40004000            (a + b + c)^2
    40014001            sage: ((a+b+c)^2)._subs_expr(a+b+w0 == x+w0)
     
    40194019            sage: (sin(x)^2 + cos(x)^2)._subs_expr(sin(w0)^2+cos(w0)^2==1)
    40204020            1
    40214021            sage: (1 + sin(x)^2 + cos(x)^2)._subs_expr(sin(w0)^2+cos(w0)^2==1)
    4022             sin(x)^2 + cos(x)^2 + 1
     4022            cos(x)^2 + sin(x)^2 + 1
    40234023            sage: (17*x + sin(x)^2 + cos(x)^2)._subs_expr(w1 + sin(w0)^2+cos(w0)^2 == w1 + 1)
    40244024            17*x + 1
    40254025            sage: ((x-1)*(sin(x)^2 + cos(x)^2)^2)._subs_expr(sin(w0)^2+cos(w0)^2 == 1)
     
    40664066            x^4 + x
    40674067            sage: f = cos(x^2) + sin(x^2)
    40684068            sage: f.subs_expr(x^2 == x)
    4069             sin(x) + cos(x)
     4069            cos(x) + sin(x)
    40704070       
    40714071        ::
    40724072       
    40734073            sage: f(x,y,t) = cos(x) + sin(y) + x^2 + y^2 + t
    40744074            sage: f.subs_expr(y^2 == t)
    4075             (x, y, t) |--> x^2 + 2*t + sin(y) + cos(x)
     4075            (x, y, t) |--> x^2 + 2*t + cos(x) + sin(y)
    40764076       
    40774077        The following seems really weird, but it *is* what Maple does::
    40784078       
    40794079            sage: f.subs_expr(x^2 + y^2 == t)
    4080             (x, y, t) |--> x^2 + y^2 + t + sin(y) + cos(x)
     4080            (x, y, t) |--> x^2 + y^2 + t + cos(x) + sin(y)
    40814081            sage: maple.eval('subs(x^2 + y^2 = t, cos(x) + sin(y) + x^2 + y^2 + t)')          # optional requires maple
    40824082            'cos(x)+sin(y)+x^2+y^2+t'
    40834083            sage: maxima.quit()
     
    41264126            sage: var('x,y,z')
    41274127            (x, y, z)
    41284128            sage: (x+y)(x=z^2, y=x^y)
    4129             x^y + z^2
     4129            z^2 + x^y
    41304130        """
    41314131        return self._parent._call_element_(self, *args, **kwds)
    41324132
     
    42644264            sage: var('a,b,c,x,y')
    42654265            (a, b, c, x, y)
    42664266            sage: (a^2 + b^2 + (x+y)^2).operands()
    4267             [(x + y)^2, a^2, b^2]
     4267            [a^2, b^2, (x + y)^2]
    42684268            sage: (a^2).operands()
    42694269            [a, 2]
    42704270            sage: (a*b^2*c).operands()
     
    46974697            sage: x.add(x, hold=True)
    46984698            x + x
    46994699            sage: x.add(x, (2+x), hold=True)
    4700             x + x + (x + 2)
     4700            (x + 2) + x + x
    47014701            sage: x.add(x, (2+x), x, hold=True)
    4702             x + x + (x + 2) + x
     4702            (x + 2) + x + x + x
    47034703            sage: x.add(x, (2+x), x, 2*x, hold=True)
    4704             x + x + (x + 2) + x + 2*x
     4704            (x + 2) + 2*x + x + x + x
    47054705
    47064706        To then evaluate again, we currently must use Maxima via
    47074707        :meth:`simplify`::
     
    47304730            sage: x.mul(x, hold=True)
    47314731            x*x
    47324732            sage: x.mul(x, (2+x), hold=True)
    4733             x*x*(x + 2)
     4733            (x + 2)*x*x
    47344734            sage: x.mul(x, (2+x), x, hold=True)
    4735             x*x*(x + 2)*x
     4735            (x + 2)*x*x*x
    47364736            sage: x.mul(x, (2+x), x, 2*x, hold=True)
    4737             x*x*(x + 2)*x*(2*x)
     4737            (2*x)*(x + 2)*x*x*x
    47384738
    47394739        To then evaluate again, we currently must use Maxima via
    47404740        :meth:`simplify`::
     
    47944794            sage: f.coefficient(sin(x*y))
    47954795            x^3 + 2/x
    47964796            sage: f.collect(sin(x*y))
    4797             (x^3 + 2/x)*sin(x*y) + a*x + x*y + x/y + 100
     4797            a*x + x*y + (x^3 + 2/x)*sin(x*y) + x/y + 100
    47984798
    47994799            sage: var('a, x, y, z')
    48004800            (a, x, y, z)
     
    50035003            sage: bool(p.poly(a) == (x-a*sqrt(2))^2 + x + 1)
    50045004            True           
    50055005            sage: p.poly(x)
    5006             -(2*sqrt(2)*a - 1)*x + 2*a^2 + x^2 + 1
     5006            2*a^2 + x^2 - (-2*sqrt(2)*a - 1)*x + 1
    50075007        """
    50085008        from sage.symbolic.ring import SR
    50095009        f = self._maxima_()
     
    51495149            sage: R = SR[x]
    51505150            sage: a = R(sqrt(2) + x^3 + y)
    51515151            sage: a
    5152             y + sqrt(2) + x^3
     5152            x^3 + y + sqrt(2)
    51535153            sage: type(a)
    51545154            <class 'sage.rings.polynomial.polynomial_element_generic.Polynomial_generic_dense_field'>
    51555155            sage: a.degree()
     
    53615361            (x, y, z)
    53625362            sage: f = 4*x*y + x*z + 20*y^2 + 21*y*z + 4*z^2 + x^2*y^2*z^2
    53635363            sage: f.collect(x)
    5364             x^2*y^2*z^2 + (4*y + z)*x + 20*y^2 + 21*y*z + 4*z^2
     5364            x^2*y^2*z^2 + 20*y^2 + x*(4*y + z) + 4*z^2 + 21*y*z
    53655365            sage: f.collect(y)
    5366             (x^2*z^2 + 20)*y^2 + (4*x + 21*z)*y + x*z + 4*z^2
     5366            (x^2*z^2 + 20)*y^2 + (4*x + 21*z)*y + 4*z^2 + x*z
    53675367            sage: f.collect(z)
    5368             (x^2*y^2 + 4)*z^2 + (x + 21*y)*z + 4*x*y + 20*y^2
     5368            (x^2*y^2 + 4)*z^2 + 20*y^2 + 4*x*y + (x + 21*y)*z
    53695369
    53705370        TESTS:
    53715371
     
    57265726            (a, b)
    57275727            sage: f = log(a + b*I)
    57285728            sage: f.imag_part()
    5729             arctan2(real_part(b) + imag_part(a), real_part(a) - imag_part(b))
     5729            arctan2(imag_part(a) + real_part(b), -imag_part(b) + real_part(a))
    57305730
    57315731        Using the ``hold`` parameter it is possible to prevent automatic
    57325732        evaluation::
     
    67516751            sage: x.factorial()
    67526752            factorial(x)
    67536753            sage: (x^2+y^3).factorial()
    6754             factorial(x^2 + y^3)
     6754            factorial(y^3 + x^2)
    67556755
    67566756        To prevent automatic evaluation use the ``hold`` argument::
    67576757
     
    75737573        EXAMPLES::
    75747574       
    75757575            sage: f = sin(x)^2 + cos(x)^2; f
    7576             sin(x)^2 + cos(x)^2
     7576            cos(x)^2 + sin(x)^2
    75777577            sage: f.simplify()
    7578             sin(x)^2 + cos(x)^2
     7578            cos(x)^2 + sin(x)^2
    75797579            sage: f.simplify_trig()
    75807580            1
    75817581            sage: h = sin(x)*csc(x)
     
    75897589
    75907590            sage: f=tan(3*x)
    75917591            sage: f.simplify_trig()
    7592             (4*cos(x)^2 - 1)*sin(x)/(4*cos(x)^3 - 3*cos(x))
     7592            -(4*cos(x)^2 - 1)*sin(x)/(-4*cos(x)^3 + 3*cos(x))
    75937593            sage: f.simplify_trig(False)           
    75947594            sin(3*x)/cos(3*x)
    75957595       
     
    76707670            sage: y = var('y')
    76717671            sage: g = (x^(y/2) + 1)^2*(x^(y/2) - 1)^2/(x^y - 1)
    76727672            sage: g.simplify_rational(algorithm='simple')
    7673             -(2*x^y - x^(2*y) - 1)/(x^y - 1)
     7673            (x^(2*y) - 2*x^y + 1)/(x^y - 1)
    76747674            sage: g.simplify_rational()
    76757675            x^y - 1
    76767676
     
    76817681            sage: f.simplify_rational()
    76827682            (2*x^2 + 5*x + 4)/(x^3 + 5*x^2 + 8*x + 4)
    76837683            sage: f.simplify_rational(algorithm='noexpand')
    7684             ((x + 1)*x + (x + 2)^2)/((x + 1)*(x + 2)^2)
    7685 
     7684            ((x + 2)^2 + (x + 1)*x)/((x + 1)*(x + 2)^2)
    76867685        """
    76877686        self_m = self._maxima_()
    76887687        if algorithm == 'full':
     
    77347733        ::
    77357734
    77367735            sage: f = binomial(n, k)*factorial(k)*factorial(n-k); f
    7737             factorial(-k + n)*factorial(k)*binomial(n, k)
     7736            binomial(n, k)*factorial(-k + n)*factorial(k)
    77387737            sage: f.simplify_factorial()
    77397738            factorial(n)
    77407739       
     
    79297928
    79307929            sage: f = log(x)+log(y)-1/3*log((x+1))
    79317930            sage: f.simplify_log()
    7932             -1/3*log(x + 1) + log(x*y)
     7931            log(x*y) - 1/3*log(x + 1)
    79337932
    79347933            sage: f.simplify_log('ratios')
    79357934            log(x*y/(x + 1)^(1/3))
     
    81118110       
    81128111            sage: x,y,z = var('x, y, z')
    81138112            sage: (x^3-y^3).factor()
    8114             (x - y)*(x^2 + x*y + y^2)
     8113            (x^2 + y^2 + x*y)*(x - y)
    81158114            sage: factor(-8*y - 4*x + z^2*(2*y + x))
    8116             (z - 2)*(z + 2)*(x + 2*y)
     8115            (x + 2*y)*(z - 2)*(z + 2)
    81178116            sage: f = -1 - 2*x - x^2 + y^2 + 2*x*y^2 + x^2*y^2
    81188117            sage: F = factor(f/(36*(1 + 2*y + y^2)), dontfactor=[x]); F
    8119             1/36*(y - 1)*(x^2 + 2*x + 1)/(y + 1)
     8118            1/36*(x^2 + 2*x + 1)*(y - 1)/(y + 1)
    81208119
    81218120        If you are factoring a polynomial with rational coefficients (and
    81228121        dontfactor is empty) the factorization is done using Singular
     
    81268125            sage: var('x,y')
    81278126            (x, y)
    81288127            sage: (x^99 + y^99).factor()
    8129             (x + y)*(x^2 - x*y + y^2)*(x^6 - x^3*y^3 + y^6)*...
     8128            (x^60 + y^60 + x^3*y^57 - x^9*y^51 - x^12*y^48 + x^18*y^42
     8129            + x^21*y^39 - x^27*y^33 - x^30*y^30 - x^33*y^27 + x^39*y^21
     8130            + x^42*y^18 - x^48*y^12 - x^51*y^9 + x^57*y^3)*(x^20 + y^20
     8131            + x*y^19 - x^3*y^17 - x^4*y^16 + x^6*y^14 + x^7*y^13 - x^9*y^11
     8132            - x^10*y^10 - x^11*y^9 + x^13*y^7 + x^14*y^6 - x^16*y^4
     8133            - x^17*y^3 + x^19*y)*(x^10 + y^10 - x*y^9 + x^2*y^8 - x^3*y^7
     8134            + 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
     8135            + y^6 - x^3*y^3)*(x^2 + y^2 - x*y)*(x + y)
    81308136        """
    81318137        from sage.calculus.calculus import symbolic_expression_from_maxima_string, symbolic_expression_from_string
    81328138        if len(dontfactor) > 0:
     
    81678173            (x, y, z)
    81688174            sage: f = x^3-y^3
    81698175            sage: f.factor()
    8170             (x - y)*(x^2 + x*y + y^2)
     8176            (x^2 + y^2 + x*y)*(x - y)
    81718177       
    81728178        Notice that the -1 factor is separated out::
    81738179       
    81748180            sage: f.factor_list()
    8175             [(x - y, 1), (x^2 + x*y + y^2, 1)]
     8181            [(x^2 + y^2 + x*y, 1), (x - y, 1)]
    81768182       
    81778183        We factor a fairly straightforward expression::
    81788184       
    81798185            sage: factor(-8*y - 4*x + z^2*(2*y + x)).factor_list()
    8180             [(z - 2, 1), (z + 2, 1), (x + 2*y, 1)]
     8186            [(x + 2*y, 1), (z - 2, 1), (z + 2, 1)]
    81818187
    81828188        A more complicated example::
    81838189       
     
    81858191            (x, u, v)
    81868192            sage: f = expand((2*u*v^2-v^2-4*u^3)^2 * (-u)^3 * (x-sin(x))^3)
    81878193            sage: f.factor()
    8188             -(x - sin(x))^3*(4*u^3 - 2*u*v^2 + v^2)^2*u^3
     8194            (-4*u^3 + 2*u*v^2 - v^2)^2*u^3*(-x + sin(x))^3
    81898195            sage: g = f.factor_list(); g                     
    8190             [(x - sin(x), 3), (4*u^3 - 2*u*v^2 + v^2, 2), (u, 3), (-1, 1)]
     8196            [(4*u^3 - 2*u*v^2 + v^2, 2), (u, 3), (x - sin(x), 3), (-1, 1)]
    81918197
    81928198        This function also works for quotients::
    81938199       
     
    81958201            sage: g = f/(36*(1 + 2*y + y^2)); g
    81968202            1/36*(x^2*y^2 + 2*x*y^2 - x^2 + y^2 - 2*x - 1)/(y^2 + 2*y + 1)
    81978203            sage: g.factor(dontfactor=[x])
    8198             1/36*(y - 1)*(x^2 + 2*x + 1)/(y + 1)
     8204            1/36*(x^2 + 2*x + 1)*(y - 1)/(y + 1)
    81998205            sage: g.factor_list(dontfactor=[x])
    8200             [(y - 1, 1), (y + 1, -1), (x^2 + 2*x + 1, 1), (1/36, 1)]
     8206            [(x^2 + 2*x + 1, 1), (y - 1, 1), (y + 1, -1), (1/36, 1)]
    82018207                   
    82028208        This example also illustrates that the exponents do not have to be
    82038209        integers::
     
    82208226        EXAMPLES::
    82218227       
    82228228            sage: g = factor(x^3 - 1); g
    8223             (x - 1)*(x^2 + x + 1)
     8229            (x^2 + x + 1)*(x - 1)
    82248230            sage: v = g._factor_list(); v
    8225             [(x - 1, 1), (x^2 + x + 1, 1)]
     8231            [(x^2 + x + 1, 1), (x - 1, 1)]
    82268232            sage: type(v)
    82278233            <type 'list'>
    82288234        """
     
    83668372        A complicated example::
    83678373       
    83688374            sage: f = expand((x^2 - 1)^3*(x^2 + 1)*(x-a)); f
    8369             -a*x^8 + x^9 + 2*a*x^6 - 2*x^7 - 2*a*x^2 + 2*x^3 + a - x
     8375            x^9 - a*x^8 - 2*x^7 + 2*a*x^6 + 2*x^3 - 2*a*x^2 + a - x
    83708376       
    83718377        The default variable is `a`, since it is the first in
    83728378        alphabetical order::
     
    84058411            sage: var('a,b,c,x')
    84068412            (a, b, c, x)
    84078413            sage: (a*x^2 + b*x + c).roots(x)
    8408             [(-1/2*(b + sqrt(-4*a*c + b^2))/a, 1), (-1/2*(b - sqrt(-4*a*c + b^2))/a, 1)]
     8414            [(-1/2*(b + sqrt(b^2 - 4*a*c))/a, 1), (-1/2*(b - sqrt(b^2 - 4*a*c))/a, 1)]
    84098415
    84108416        By default, all the roots are required to be explicit rather than
    84118417        implicit. To get implicit roots, pass ``explicit_solutions=False``
     
    84198425            ...
    84208426            RuntimeError: no explicit roots found
    84218427            sage: f.roots(explicit_solutions=False)
    8422             [((2^(8/9) - 2^(1/9) + x^(8/9) - x^(1/9))/(2^(8/9) - 2^(1/9)), 1)]
     8428            [((2^(8/9) + x^(8/9) - 2^(1/9) - x^(1/9))/(2^(8/9) - 2^(1/9)), 1)]
    84238429
    84248430        Another example, but involving a degree 5 poly whose roots don't
    84258431        get computed explicitly::
     
    92939299        ::
    92949300
    92959301            sage: (k * binomial(n, k)).sum(k, 1, n)
    9296             n*2^(n - 1)
     9302            2^(n - 1)*n
    92979303
    92989304        ::
    92999305
     
    95629568            sage: f*(-2/3)
    95639569            -2/3*x - 2 < -2/3*y + 4/3
    95649570            sage: f*(-pi)
    9565             -(x + 3)*pi < -(y - 2)*pi
     9571            -pi*(x + 3) < -pi*(y - 2)
    95669572
    95679573        Since the direction of the inequality never changes when doing
    95689574        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