Menu

#3283 trigsimp fails for some order of the variables

closed
nobody
None
5
2026-08-21
2017-01-29
No

Hi,
trigsimp may fail depending on the (alphabetical?) order of the variables; please see this SageMath bug report:
https://groups.google.com/forum/#!topic/sage-devel/bJB-gJhvRX4

Discussion

  • Dima Pasechnik

    Dima Pasechnik - 2017-01-29

    Here is how to get this with Maxima only (5.39.0 with SBCL or ECL):

    s1: 2*(cos(1/2*x)*cos(y) + sin(1/2*x)^2 - 1)*(cos(z)*sin(y) + cos(y)*sin(z))*((cos(1/2*x)*cos(z) - cos(y)*cos(z) + sin(y)*sin(z))*sin(1/2*x)/(cos(1/2*x)^2*cos(y)^2 - 2*cos(1/2*x)*cos(y) + 1) + (cos(y)*cos(z)*sin(y) + cos(y)^2*sin(z) - (cos(z)*sin(y) + cos(y)*sin(z))*cos(1/2*x))*(cos(1/2*x)*cos(y) + sin(1/2*x)^2 - 1)/((cos(1/2*x)^2*cos(y)^2 - 2*cos(1/2*x)*cos(y) + 1)*sin(1/2*x)*sin(y)))/((cos(1/2*x)*cos(y) - 1)*((cos(y)*cos(z) - sin(y)*sin(z))*sin(1/2*x)/(cos(1/2*x)*cos(y) - 1) + (cos(z)*sin(y) + cos(y)*sin(z))*((cos(1/2*x)*cos(z) - cos(y)*cos(z) + sin(y)*sin(z))*sin(1/2*x)/(cos(1/2*x)^2*cos(y)^2 - 2*cos(1/2*x)*cos(y) + 1) + (cos(y)*cos(z)*sin(y) + cos(y)^2*sin(z) - (cos(z)*sin(y) + cos(y)*sin(z))*cos(1/2*x))*(cos(1/2*x)*cos(y) + sin(1/2*x)^2 - 1)/((cos(1/2*x)^2*cos(y)^2 - 2*cos(1/2*x)*cos(y) + 1)*sin(1/2*x)*sin(y)))*sin(1/2*x)/((cos(1/2*x)*cos(y) - 1)*((cos(z)*sin(y) - cos(1/2*x)*sin(z) + cos(y)*sin(z))*sin(1/2*x)/(cos(1/2*x)^2*cos(y)^2 - 2*cos(1/2*x)*cos(y) + 1) + (cos(y)^2*cos(z) - cos(y)*sin(y)*sin(z) - (cos(y)*cos(z) - sin(y)*sin(z))*cos(1/2*x))*(cos(1/2*x)*cos(y) + sin(1/2*x)^2 - 1)/((cos(1/2*x)^2*cos(y)^2 - 2*cos(1/2*x)*cos(y) + 1)*sin(1/2*x)*sin(y)))))*((cos(z)*sin(y) - cos(1/2*x)*sin(z) + cos(y)*sin(z))*sin(1/2*x)/(cos(1/2*x)^2*cos(y)^2 - 2*cos(1/2*x)*cos(y) + 1) + (cos(y)^2*cos(z) - cos(y)*sin(y)*sin(z) - (cos(y)*cos(z) - sin(y)*sin(z))*cos(1/2*x))*(cos(1/2*x)*cos(y) + sin(1/2*x)^2 - 1)/((cos(1/2*x)^2*cos(y)^2 - 2*cos(1/2*x)*cos(y) + 1)*sin(1/2*x)*sin(y)))^2*sin(y)) - 2*(cos(1/2*x)*cos(y) + sin(1/2*x)^2 - 1)/(((cos(z)*sin(y) - cos(1/2*x)*sin(z) + cos(y)*sin(z))*sin(1/2*x)/(cos(1/2*x)^2*cos(y)^2 - 2*cos(1/2*x)*cos(y) + 1) + (cos(y)^2*cos(z) - cos(y)*sin(y)*sin(z) - (cos(y)*cos(z) - sin(y)*sin(z))*cos(1/2*x))*(cos(1/2*x)*cos(y) + sin(1/2*x)^2 - 1)/((cos(1/2*x)^2*cos(y)^2 - 2*cos(1/2*x)*cos(y) + 1)*sin(1/2*x)*sin(y)))*sin(1/2*x)*sin(y))$
    
    trigsimp(s1);
    
    s2: 2*(cos(1/2*x)*cos(a) + sin(1/2*x)^2 - 1)*(cos(b)*sin(a) + cos(a)*sin(b))*((cos(1/2*x)*cos(b) - cos(a)*cos(b) + sin(a)*sin(b))*sin(1/2*x)/(cos(1/2*x)^2*cos(a)^2 - 2*cos(1/2*x)*cos(a) + 1) + (cos(a)*cos(b)*sin(a) + cos(a)^2*sin(b) - (cos(b)*sin(a) + cos(a)*sin(b))*cos(1/2*x))*(cos(1/2*x)*cos(a) + sin(1/2*x)^2 - 1)/((cos(1/2*x)^2*cos(a)^2 - 2*cos(1/2*x)*cos(a) + 1)*sin(1/2*x)*sin(a)))/((cos(1/2*x)*cos(a) - 1)*((cos(a)*cos(b) - sin(a)*sin(b))*sin(1/2*x)/(cos(1/2*x)*cos(a) - 1) + (cos(b)*sin(a) + cos(a)*sin(b))*((cos(1/2*x)*cos(b) - cos(a)*cos(b) + sin(a)*sin(b))*sin(1/2*x)/(cos(1/2*x)^2*cos(a)^2 - 2*cos(1/2*x)*cos(a) + 1) + (cos(a)*cos(b)*sin(a) + cos(a)^2*sin(b) - (cos(b)*sin(a) + cos(a)*sin(b))*cos(1/2*x))*(cos(1/2*x)*cos(a) + sin(1/2*x)^2 - 1)/((cos(1/2*x)^2*cos(a)^2 - 2*cos(1/2*x)*cos(a) + 1)*sin(1/2*x)*sin(a)))*sin(1/2*x)/((cos(1/2*x)*cos(a) - 1)*((cos(b)*sin(a) - cos(1/2*x)*sin(b) + cos(a)*sin(b))*sin(1/2*x)/(cos(1/2*x)^2*cos(a)^2 - 2*cos(1/2*x)*cos(a) + 1) + (cos(a)^2*cos(b) - cos(a)*sin(a)*sin(b) - (cos(a)*cos(b) - sin(a)*sin(b))*cos(1/2*x))*(cos(1/2*x)*cos(a) + sin(1/2*x)^2 - 1)/((cos(1/2*x)^2*cos(a)^2 - 2*cos(1/2*x)*cos(a) + 1)*sin(1/2*x)*sin(a)))))*((cos(b)*sin(a) - cos(1/2*x)*sin(b) + cos(a)*sin(b))*sin(1/2*x)/(cos(1/2*x)^2*cos(a)^2 - 2*cos(1/2*x)*cos(a) + 1) + (cos(a)^2*cos(b) - cos(a)*sin(a)*sin(b) - (cos(a)*cos(b) - sin(a)*sin(b))*cos(1/2*x))*(cos(1/2*x)*cos(a) + sin(1/2*x)^2 - 1)/((cos(1/2*x)^2*cos(a)^2 - 2*cos(1/2*x)*cos(a) + 1)*sin(1/2*x)*sin(a)))^2*sin(a)) - 2*(cos(1/2*x)*cos(a) + sin(1/2*x)^2 - 1)/(((cos(b)*sin(a) - cos(1/2*x)*sin(b) + cos(a)*sin(b))*sin(1/2*x)/(cos(1/2*x)^2*cos(a)^2 - 2*cos(1/2*x)*cos(a) + 1) + (cos(a)^2*cos(b) - cos(a)*sin(a)*sin(b) - (cos(a)*cos(b) - sin(a)*sin(b))*cos(1/2*x))*(cos(1/2*x)*cos(a) + sin(1/2*x)^2 - 1)/((cos(1/2*x)^2*cos(a)^2 - 2*cos(1/2*x)*cos(a) + 1)*sin(1/2*x)*sin(a)))*sin(1/2*x)*sin(a))$
    
    trigsimp(s2);
    

    gives

    Maxima 5.39.0 http://maxima.sourceforge.net
    using Lisp SBCL 1.3.12
    Distributed under the GNU Public License. See the file COPYING.
    Dedicated to the memory of William Schelter.
    The function bug_report() provides bug reporting information.
    (%i1) 
    (%i2) 
                            x
    (%o2) (2 cos(y) - 2 cos(-)) sin(y) sin(z)
                            2
                                                      x                2
    
                                             + (2 cos(-) cos(y) - 2 cos (y)) cos(z)
                                                      2
    (%i3) 
    (%i4) 
    Quotient by a polynomial of higher degree
     -- an error. To debug this try: debugmode(true);
    

    Expression s2 is obtained from s1 by renaming y->a, z->b.

     
  • David Scherfgen

    David Scherfgen - 2026-08-21

    In Maxima 5.50post (SBCL 2.6.7) both of dimpase's expressions simplify: trigsimp(s2) no longer signals "Quotient by a polynomial of higher degree", and neither call produces any error. The two results are the same expression modulo the renaming — ratsimp(subst([y=a,z=b],trigsimp(s1)) - trigsimp(s2)) is 0 — and each agrees with its own input numerically, e.g. 0.06872495342570636 vs 0.06872495342570595 at x=0.7, a=1.1, b=0.4.

    (%i4) r1: trigsimp(s1);
    (%o4) (2*cos(y)-2*cos(x/2))*sin(y)*sin(z)+(2*cos(x/2)*cos(y)-2*cos(y)^2)*cos(z)
    (%i6) r2: trigsimp(s2);
    (%o6) (2*cos(a)*cos(b)-2*sin(a)*sin(b))*cos(x/2)+2*cos(a)*sin(a)*sin(b)-2*cos(a)^2*cos(b)
    

    Verified by Claude.

     

Log in to post a comment.